zxdiv: workaround for what appears to be a bug in Fuse
authorAlan Cox <alan@linux.intel.com>
Sun, 25 Nov 2018 15:24:30 +0000 (15:24 +0000)
committerAlan Cox <alan@linux.intel.com>
Sun, 25 Nov 2018 15:24:30 +0000 (15:24 +0000)
The fuse emulator unpages the DivIDE ROM if you execute an instruction at
0x700. That appears to be wrong. The Interface 1 does this but there is no
evidence that any variant of the DivIDE does.

Anyway we can work around it easily enough - we just stuff data and constants
over that address range.

Kernel/platform-zxdiv/crt0.s
Kernel/platform-zxdiv/fuzix.lnk

index 0b9d036..4920a32 100644 (file)
@@ -2,10 +2,9 @@
        ;
        ;       Our common lives low
        ;
-       .area _CODE
+        .area _CONST
         .area _COMMONMEM
        .area _STUBS
-        .area _CONST
         .area _INITIALIZER
        ;
        ;       The writeables cannot start until 0x2000 but for simplicity
index 26efb81..b94babc 100644 (file)
@@ -1,8 +1,7 @@
 -mwxuy
 -r
 -i fuzix.ihx
--b _CODE=0x0200
--b _COMMONMEM=0x400
+-b _CONST=0x400
 -b _COMMONDATA=0x2200
 -b _CODE1=0xC000
 -b _CODE2=0xC000