Posted May 02, 2025 by jordi
Improved DSK version by @ZXJogV https://zxjogv.itch.io/ taking his description.
This game uses banking as it takes a bit more than 48k, but +3DOS conversion started to cause issues, as:
- Bank data cannot be loaded directly into address 0xC000, even if you have correctly selected the bank previously. The reason is that when executing a +3DOS call, it immediately pages in bank #7, which is it uses for disk buffers
- The solution to this to load banks to 0x8000 first, and then move the data from 0x8000 to 0xC000 with a small assembler routine which is included in the BASIC loader
- For this to work, the banks need to be loaded first, and finally load the code with the regular mapping (bank #0 at 0xC000)
- The assembler routine is the following trivial code:
````
ld bc,16384 ; num. bytes to copy
ld de,49152 ; destination address = 0xC000
ld hl,32768 ; source address = 0x8000
ldir
ret
```