Hi all...
In the last weeks I've been messing around with some MSX experiments on my own. Somewhat unexpectedly I've come across a path I've always wanted to avoid: I reached (and passed) the 32 KB's limit of a "normal" MSX (non mapped) rom. Suddenly my static code/payload inside the .rom file (data that most probably will be eventually transferred onto RAM to use it) is bigger than 32 KB and I'm forced to create an additional page inside the ROM space, that is: my .rom file will be now 48 KB's.
As of now I don't want to feel I need to use/create a megarom file, I want my experiments to fit inside a 64 KB's real EEPROM IC, so I can actually burn my .rom file into a specially designed physical cartridge I have around...
So, after some careful research mainly inside MSX RC (there are some threads speaking about it) I've come across the following conclusion:
1.- I have no idea about the degree of standardness of dealing with "raw/flat" rom files/eeproms bigger than 32 KB's, and up to 64 KB's, without using a rom mapper.
I've seen people participating in MSX DEV's in the past delivering their creations inside a 48 KB's rom file. Are these .rom files intended then to be burnt into a real EEPROM/cartridge afterwards? Or were they just .rom files expected to be loaded inside a real MSX via some random "loadrom" utility?
More importantly: How does this >32KB phyisical rom content get laid out onto the MSX/Z80 slot/pages space? is there an standard to do it? Does OpenMSX do a proper job with it, in case there's a standard (apparently it assumes many proper things on its own, that's fine)?
My main fear is basicly "how to deal with pages 0 and 3" of the MSX/Z80 typical memory visibility space, specially in the SLOT/ROM area.
Is it a valid assumption to expect that parts of my ROM file will appear on page 0? How can I easily use the data living inside this page 0 of slot 1 data, specially if I want the typical BIOS support at the same time?
Same thing with page 3: Should we expect a 48 KB rom last 16 KB's to appear mapped onto the 0xC000..0xFFFF space? What should we do to access this data "easily" without losing the typical RAM page 3 in the process?
Obviously as I'm in charge of the .asm file and/or of the EEPROM programmer I have all the power to "setup" the ORG to whatever address I want (in the .asm file) and/or to fill the 64KB's free space of my EEPROM.For my 48 KB's I'll probably write onto pages 0, 1,2 and fill page 3 with 0xFF, or I also can fill page 0 with 0xFF's and then pages 1, 2 and 3 with my actutal rom data...
So my main doubt arising from this is: How should I use/manage the additional page(s) appearing outside the typical 0x4000..0xBFFF slot memory zone, for roms bigger than 32KB's?
Again: I'm trying not to mess (as far as I can) with megarom way of dealing with big rom files.
BTW, I'm using Grauw's assembler and apparently I'm somewhat managing to create >32 KB's .rom files... Padding is a bit wonky (can't see how to align to 48 KB's, not a priority right now), but otherwise I've just created a 40 KB's rom file without problem.
I will test this rom with OpenMSX afterwards to see how it does assume things when loading it onto its own ROM slot area.
Greetings.