From: Alan Cox Date: Sun, 15 Feb 2015 22:30:57 +0000 (+0000) Subject: zx128: update README X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=c80a741ada8c1c2a4d14795486ee2a64e28c4cfd;p=FUZIX.git zx128: update README --- diff --git a/Kernel/platform-zx128/README b/Kernel/platform-zx128/README index c1f546f5..101325a5 100644 --- a/Kernel/platform-zx128/README +++ b/Kernel/platform-zx128/README @@ -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