6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Thu May 09, 2024 7:25 pm

All times are UTC




Post new topic Reply to topic  [ 5 posts ] 
Author Message
PostPosted: Wed Jun 08, 2022 8:35 am 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10800
Location: England
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.)


Attachments:
nasa-6502-banking-patent-diagram.png
nasa-6502-banking-patent-diagram.png [ 82.71 KiB | Viewed 876 times ]
nasa-6502-banking-patent-timing.png
nasa-6502-banking-patent-timing.png [ 50.26 KiB | Viewed 876 times ]
nasa-6502-banking-patent-action.png
nasa-6502-banking-patent-action.png [ 76.69 KiB | Viewed 876 times ]


Last edited by BigEd on Fri Jun 10, 2022 9:02 am, edited 1 time in total.
Top
 Profile  
Reply with quote  
PostPosted: Thu Jun 09, 2022 1:12 am 
Offline

Joined: Mon Feb 15, 2021 2:11 am
Posts: 100
The 6509 used the lda (zp),y and sta (zp),y instructions for extended data access, and zero page locations $00 and $01 to set execution and data banks. The method in this patent seems similar, but using external circuitry, and limited to data bank only. The main similarity to the KimKlone scheme looked to be the opcode recognition and the involvement of external, as opposed to the 6509 which does it within the CPU.


Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 21, 2022 3:19 pm 
Offline

Joined: Sun Feb 22, 2004 9:01 pm
Posts: 78
Similarly, Acorns's "6502 Turbo" uses a similar method.

When enabled, any (zp),Y addressing mode fetches a byte from &0300+zp to use as b16-b23 of the base address.
Eg, if
&00FD=&00
&00FE=&80
&03FD=&04
then LDA (&FD),Y fetches from &048000+Y

_________________
--
JGH - http://mdfs.net


Top
 Profile  
Reply with quote  
PostPosted: Thu Jun 23, 2022 2:12 am 
Offline

Joined: Wed Aug 21, 2019 6:10 pm
Posts: 217
What I would like along those lines would be a zero page memory location (say, $0000 or $0001) where you write a byte which has two nybbles, one for the extended memory zone for (zp),Y addressing and another for the extended memory zone for (zp,X) addressing. So if it contains $34, then $30-$3F accesses by a (zp,X) instruction go to the alternative memory, and $40-$4F accesses by a (zp),Y instruction go to the alternative memory.

The implementation might be easiest if the system is based on a 128K SRAM, so all that the "external memory" implementation must focus on is whether to pull A16 high or low.


Top
 Profile  
Reply with quote  
PostPosted: Sat Jul 09, 2022 4:25 pm 
Offline
User avatar

Joined: Tue Aug 11, 2020 3:45 am
Posts: 311
Location: A magnetic field
Out of 6509, Acorn Turbo and Dr Jefyll's most famous curiosity, US Patent 4481570 appears to be most similar to Acorn Turbo. The major difference is that US Patent 4481570 appears to be restricted to a subset of possible (zp),Y accesses. I presume the patent was granted after Acorn implemented a similar system. However, was the patent filed before Acorn's implementation?

_________________
Modules | Processors | Boards | Boxes | Beep, Beep! I'm a sheep!


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 9 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: