There is a block of memory normally used by basic. My question: is this also used by MSX-DOS2 or is this left unused? It looks like 3Kb at least that (if unused) can be used for storing user data.
Login or register to post comments
There is a block of memory normally used by basic. My question: is this also used by MSX-DOS2 or is this left unused? It looks like 3Kb at least that (if unused) can be used for storing user data.
The problem is that the memory area reserved by the system is used by both BIOS and BASIC routines.
Under MSX-DOS, the part used by BASIC is supposed to be free but it is difficult to be 100% sure that BIOS will not use it.
Anyway, if there are areas of the system RAM that are safe to use, I don't know them but I think they might not be contiguous.
Plenty of RAM under DOS2, because you can use a mapper, right?
I guess he's talking about the BIOS work area in RAM's page 3.
I guess he's talking about the BIOS work area in RAM's page 3.
correct!
The table on MSX.org is not logically contiguous. ERRFLG is 1 Byte, the next named variable VLZADR is further than one byte, 5. Seems there are 4 bytes not allocated. And there are many more. I suppose, trail and error.
Plenty of RAM under DOS2, because you can use a mapper, right?
Plenty memory? Yes. Easy to use? No. In the MSX-DOS2 you can send/receive 1 Byte to/from an allocated segment, using system call RD_SEG and WR_SEG, but efficient? Imagine the fun you have when you want to store 4Kb and the amount of syscalls you would have to make.
Then there is PUT_P? and GET_P?. I don't really understand their value over working with OUT to set parameters. It would be usefull if I could first allocate a random segment and put this is in a page. The document @Grauws site insinuates that these are just here to abstract the hardware layer from the user.
RD_SEG and WR_SEG are for the one-off cross-segment operations.
If you wanna do serious memory access, just use GET_Px and PUT_Px to swap in the correct memory page and go all out with direct memory access. The reasons you don't want to use OUTs directly are 1) you might unintently use one of the DOS2 'system memory pages' and/or 2) you'll have to handle all the mapper and subslot and RAM-page probing logic yourself; a huge pitfall.
Don't you have an account yet? Become an MSX-friend and register an account!