[Coco] CoCo3 MMU Register question...
RETRO Innovations
go4retro at go4retro.com
Tue Mar 31 01:24:00 EDT 2015
On 3/30/2015 10:00 PM, Bill Nobel wrote:
> Hey Zipster, Just to let you know if you have not come across it yet,Ruud’s c64 website contains a 16 meg MMU for the c64. I have been looking at it to implement on a 6809. Not compatible, but gives more memory. Here is the link:
>
> http://www.baltissen.org/newhtm/mmu.htm <http://www.baltissen.org/newhtm/mmu.htm>
I think you could do the same thing with a smaller CPLD and a small
RAM. Digikey shows 12ns 32kB SRAM, which seems like it would work
fine. hang it off a 100 pin CPLD, and just do the mapping like Ruud
does inside the CPLD
* Use $ff80-$8f for some new registers, and $ff96/97
* when user writes to specific MMU reg, store that value into MMU
address reg at falling edge of Q
* When user requests data from regular address range, pull the top 3
bits of the address, map those into the SRAM when Q goes high, put
data from SRAM onto high bits of extended address, turning those 3
bits into 8 (256 pages of 8kB = 2MB)
* When E goes low, disconnect SRAM and plan for next cycle
* You could even one up the Coco3 (I think) by create extended tasks.
Create a task group register, and use that register to bounce into
sets of 16 addresses: SRAM_Address = (task_group << 4) | (task_bit
<< 3) | lower 3 bits of address. That gives 12 bits of tasks = 4096
tasks, probably more than needed :-)
All of that can probably be done in a xc95144, and an SRAM, and lots of
options for alternatives (smaller page sizes, etc.)
jim
More information about the Coco
mailing list