[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