MSX DOS memory manager, fasters way ?

Page 1/3
| 2 | 3

By WORP3

Paladin (864)

WORP3's picture

09-12-2012, 21:58

Hi,

I would like to reserve some memory banks (for data storage) while being inside the MSX DOS environment and I wonder if doing this by using the DOS2 memory routines through the EXTBIO call is the best way to do this ?
Is there a way to reserve some memory banks while running under dos 1, has using memman maybe some advantages ?

Cheers,
Tjeerd.

Login or register to post comments

By WORP3

Paladin (864)

WORP3's picture

10-12-2012, 16:11

After some more investigation, it seems that the memory mapper can be called directly at the following addresses:

Mapper Support Routines
F200 Allocate a 16k segment
F203 Free a 16k segment
F206 Read byte from address A:HL to A
F209 Write byte from E to address A:HL
F20C Inter-segment call. Address in IYh:IX
F20F Inter-segment call. Address in line after the call instruction
F212 Put segment into page (HL)
F215 Get current segment for page (HL)
F218 Put segment into page 0
F21B Get current segment for page 0
F21E Put segment into page 1
F221 Get current segment for page 1
F224 Put segment into page 2
F227 Get current segment for page 2
F22A Not supported since page-3 must never be changed
F22D Get current segment for page 3

By MsxKun

Paragon (1115)

MsxKun's picture

10-12-2012, 18:57

Using MSX-DOS2 should be the best way. Under DOS1 it would be a bit like Do It Yourself. I don't know how MEMMAN works.

Keep in mind that DOS2 can support several memory mappers, So your software can use more than 1 memory mapper at once. To see where's the info about each of them , here is some info about dos2 and memory mapper: http://map.grauw.nl/resources/dos2_environment.php

I guess you could also use NextorMAN :D But it needs DOS2 anyways...

By msd

Paragon (1510)

msd's picture

10-12-2012, 19:04

Unless you use some extension like memman there is no mapper support in dos1. Easy way is to not support dos1 Tongue

By sd_snatcher

Prophet (3642)

sd_snatcher's picture

10-12-2012, 20:13

@WORP3

I agree with the other DOS2 suggestions here:

If the software requires the Memory-Mapper to run, why not require the MSX-DOS2 too? Both will require the Mapper.

It only does make sense to support the MSX-DOS1 when the requirement is to be able to run with only 64KB of memory. And the price to pay for that is to be restricted to floppies without subdirectories.

By WORP3

Paladin (864)

WORP3's picture

10-12-2012, 20:25

I will give it a first try using the mapper of msxdos2, at least I can program the most of the program and see if it all works good enough. The program doesn't have to be a TSR type, so memman isn't really necessary.

Thanks for the input.

By sd_snatcher

Prophet (3642)

sd_snatcher's picture

10-12-2012, 21:15

@WORP3:

According to the MSX-DOS2 programming manual, to get the address of the Memory-Mapper routines you must use the following functions:

The functions available in the mapper support extended BIOS are:

* Get mapper variable table

Parameter: A = 0
D = 4 (device number of mapper support)
E = 1
Result: A = slot address of primary mapper
DE = reserved
HL = start address of mapper variable table

* Get mapper support routine address

Parameter: A = 0
D = 4
E = 2
Result: A = total number of memory mapper segments
B = slot number of primary mapper
C = number of free segments of primary mapper
DE = reserved
HL = start address of jump table

You can find the MSX-DOS2 programming manual at the MSX archive.

By WORP3

Paladin (864)

WORP3's picture

10-12-2012, 22:46

Wow it's getting better and better, it seems that they really thinks thing over when they created the msxdos software !
Possibly a lot of programs will not run when they are ever going to change that address, so now I know, it's best to retrieve the address before call some pre-defined one Wink
I've tried to un-pma (with lha-pma.exe)the user manual but there seem's to be a checksum error Sad
Is their an other location of the manual ?

By RetroTechie

Paragon (1563)

RetroTechie's picture

11-12-2012, 01:49

"dos2user.pma" seems to be corrupted, anyone got a link to an OK version, and/or knows what's supposed to be in that archive? (I'd expect user documentation in the sense of what you can type at the MSX-DOS2 prompt, wildcards and so on).

Description of DOS2 mapper support is in "dos2prog.pma". Oh wait, much easier: *click*

By Huey

Prophet (2694)

Huey's picture

11-12-2012, 09:03

Or use the online manual at http://map.grauw.nl/resources/

MSX-DOS2 works great. Always remember that some parts of memory (page0 for example) are sometimes swaped in/out with DOS code (eg during ISR). And during disk access I always disable my custum ISR code by resetting and setting the hook jump+address.

By WORP3

Paladin (864)

WORP3's picture

11-12-2012, 13:33

Thanks.
I already programmed all of the MIDI-PAC software for msxdos and indeed that is working perfect. For the midi player that i'm working on now, I will need a lot more memory then the default 45KB. So that's why I like to use the msxdos2 memory manager Wink

Page 1/3
| 2 | 3