Over in the Space Shuttle thread (aka 6502 in Spaaace!) tokafondo
shared some findings among NASA documents, and in particular found a patent for a memory extension scheme, by Gordon Wiker.
It's an interesting scheme, and I'm not sure we've seen quite the same thing here before. Edit: I
think it's different from Jeff's scheme as seen in KimKlone...
Here it is:
- a handful of zero page locations are decoded and implemented by additional hardware registers
- when an indexed instruction is detected (by SYNC, as usual) which uses a zero page location in this range, things happen
- optionally, the fetch of two bytes of pointer is redirected to the additional memory bank specific to this zero page pair
- after the index addition, the memory access is redirected to the additional memory bank specific to this zero page pair
The bones of it, then, are that specific zero page pointers will point to specific memory banks. This isn't a means of running code in a larger space, but a means of accessing larger data sets.
The patent notes that it will be convenient to the programmer to keep the pointers in the main memory - that is, not use the option to fetch the pointer from the appropriate auxiliary memory. It's easier to modify the pointer in this case. On the other hand, if the pointer is in the extended memory, it doesn't take up zero page space.
The patent notes that their choice of decoding (zp),Y is just one of many possibilities. (I notice there are no RMW opcodes to worry about in this case: there's exactly one indirect access to be redirected.)
Edit: it might be worth noting that there's no MMU, or place to store the chosen additional memory - the particular additional memory is tied to the particular zero page pointer.
The patent is 4,481,570, and NASA's page on it is
here.
Edit: they use LAB and HAB to denote the low address byte and the high address byte.
(It's a 1984 patent so the whole point is that this documented technique is now free for anyone to use.)