I still have a Spectrum 128 getting piles of dust...
It used the following paging system:
The first 16k of memory could be paged by different ROM banks. It used a
scheme where the interrupt service routines were dupplicated in
different ROM banks, so that an interrupt could be received no matter
what bank was paged in.
One of the software interrupts (RST 36h? don't remember) was used to do
intra-bank calls: it was followed by one byte with the bank number and
one word with the target address - it switched the banks, called the
routine, switched back and returned.
The 128k of RAM were paged in the last 16k of memory, and were used
mostly as a ram-disk.
If anyone is interested, I think I can dig out more detailed
information.
David Given wrote:
>
> [...]
> You *can* get around this by paging; I can imagine a system which uses 32kB
> for the data segment, 31kB for the text segment (or some other combination)
> plus a little bit for a syscall interface. When you call the kernel you page
> out the process and page in the kernel. This isn't hard. I believe that a lot
> of CP/M machines do exactly this.
>
> Unfortunately, this requires custom hardware, and most 8-bit computers either
> don't have this hardware (Spectrum 48kB) or have mutually incompatible paging
> hardware (Amstrad PCW vs. Spectrum 128, anyone?).