Hi all...
I'm trying to create a rock solid 100% universal rom loader for some games that were only publised in .dsk .tap format. What have I achieved as of now? Being able to create a 99% universal one. That is I properly load some test.rom I have into different ram slot layout machines: Toshiba HX-10, Toshiba HX-20E, TurboR, Philips NMS 8250, Philips VG 8020... My .rom loads perfectly on these.
I'm very happy being after having reached sucess on whatever real life model I've come accross (using openmsx emulated modes).
My problem arises when I push the limit and want to use the wicked OpenMSX ACID test machine, which has one of the most bizarre (but legal) slots layout. What happens with my loader routines? They choke in a somewhat unexpected way:
Trying to read a byte from HL=0xC010 using "slot byte" 0x80 (that is expanded slot 0, subslot 0), makes this machine reset with a misconfiguration of slots...
When performing the call, RAM page 3 is in slot 0, subslot 2. The code doing the call is living in Z80 page 1, which in this case it means slot 1 (rom), subslot 3.
Is this behaviour normal? Or rewording it: does RDSLT BIOS call have limitations asking for data when you select a PAGE 3 address as the one I'm using, HL = 0xC010 ?
Does RDSLT work for page 3, when ram and SP are both pointing there just when you do the RDSLT call?
Are RDSLT routines aware of switching the SP/stack RAM page?
Greetings
NOTE: If something is unclear, please ask. I'm not sure my explanation is super sharp
OTOH, it's the first time I'm trying to get the most of BIOS routines, and maybe I'm not aware of some "BIOS/SLOT calling routine" basic foundation.
