So if I understand correctly, on Laser 2001, PortA is still the output, but with a more traditional keyboard matrix and PB is still 8 wires with diodes as input. The sound chip still shares PB with CB2 as it's chip select? I noticed loading the laser 2001 bios cause the noise channel to activate making a static sound, and it made me wonder if portb was set up differently for the audio. Porta 0 through 3 I guess selects joystick related things in the same way as the creativison, but is also shared with the keyboard matrix?
I guess this also means that the tape interface for Laser is somewhere else, since it appears to be using porta 6 and 7 on the creativision.
For the ram it's just simple strong-pull-up hardware jumpers for the chip selects it seems. RAM0, ROM1, and ROM2 will all select the internal ram by default with an address mask of 0x3FFF. The 4k overlap is just a consequence of the address space for the RAM0 CS. Pulling up the other two pins will limit the CS for internal ram to only ROM1 & RAM0 or just RAM0 depending on which are shorted.
This makes things pretty simple. I will just by default make the 32kb of RAM I use to store ROMs on the fpga read/write, and change them to read only when a rom is loaded. For page 0 ram, I will have it just 1k mirrored for creativision, and ram_cs select the (writeable) rom space when using laser with no rom loaded, and just have a separate 4k space for when a rom is loaded. It will be functionally the same. This will effectively make the creativision memory map identical to the CSL cart if no rom is loaded, and the Laser memory map the same as the real system with a 16k expansion attached.
Lastly, where does the disk drive interface live in terms of address space? I haven't seen any mentioned of it anywhere other than the fact that there is an 8kb bios for it and a very small software library.
ROM0 space is adaptive and masks itself based on the size of the bios you choose to use, so it can be whatever.
I guess now to get down to turning that keyboard map into masks
