zx128: update README
authorAlan Cox <alan@linux.intel.com>
Sun, 15 Feb 2015 22:30:57 +0000 (22:30 +0000)
committerAlan Cox <alan@linux.intel.com>
Sun, 15 Feb 2015 22:30:57 +0000 (22:30 +0000)
Kernel/platform-zx128/README

index c1f546f..101325a 100644 (file)
@@ -17,8 +17,7 @@ C000-FFFF
        4:      User process
        5:      Mapped at 0x4000-0x7FFF (Kernel data/common)
        6:      User process
-       7:      CODE3, Display + Video, Font (fairly full - font not needed
-               however)
+       7:      CODE3, Display + Video (plenty of room)
 
 Which gives us the ability to run 16K and 32K processes although we'd need
 to do bank exchanges to keep 2 x 32K in memory at once (one in 2/3 one in
@@ -33,26 +32,16 @@ processes but leaves us with common at 0x4000 so its tight below 0x8000
 
 The other half of the problem on the ZX Spectrum128 is the fact binaries
 must be linked with a different base (0xC000 for 16K, 0x8000 for 32K) so
-we need to sort out relocatables
+we need to sort out relocatables. Not only that but our RST based syscall
+vector is of course buried in ZX Spectrum ROM.
 
 Big part of the code was taken from z80pack and msx1 ports.
 
-ZX Spectrum has a memory layout like follows:
-
-0000-3FFF      ROM
-4000-57FF      Screen pixel data (movable into bank 7 on the 128K)
-5800-5AFF      Screen attributes data
-5B00-FFFF      RAM
-
-1 memory bank exists at 0xC000, one of 6 16384-byte pages can be mapped there
-on the 128.
-
 TODO:
 
 Hook swap
 Swap over IDE
 
-
 Set vectors for syscalls somewhere safe and common (can't use the normal RST
 ones). Need a reloc hack to pick syscall method ??
 
@@ -77,8 +66,7 @@ Kernel maps are then
 7 = banked with screen (at 0x4000)
 
 although 7 does not appear to be part of the banks we cannot map 2 and 7
-together so it's effectively banked, but we can hack the linker to do smart
-optimisations for calls between banks 6 and 7.
+together so it's effectively banked.
 
 Alternatively we could go with a single 64K swapping user space with
 kernel mapped normally at 4-7  (with screen hole at C000) and user at 0-3