6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Nov 16, 2024 8:16 am

All times are UTC




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: Two Memory Mapper ideas
PostPosted: Sun Jun 09, 2013 5:56 pm 
Offline
User avatar

Joined: Sat Jun 08, 2013 4:02 pm
Posts: 46
Hello,

I've lurked here for quite some time, and I must say, some (most,) of you discuss things 'way beyond my understanding. However, I recently registered specifically to share my thoughts about Memory Mapping for the 6502. Rather than bump the old Mapper thread I've started this new one.

Many, many years ago I expanded my VIC20 memory internally. http://www.sdiy.org/richardc64/vic20/vic01.html (Yeah, I know there's too much diode-logic, but at 1MHz it works.) Lately I've been thinking about upgrading it with more memory, using a 74HCT612. I think I've come up with a pretty good plan: The '612's pass mode, and Map Outputs MO8-11 would be ignored, but I wouldn't use all 8 remaining outputs for banking of seven 8K segments (BLocKs). (Banking BLK4 would be too complicated, because that's where VIC's I/O lives.) That would potentially expand memory to nearly 16M, which would be silly for the VIC. I'd use some bits for banking, while others could select internal or external memory, or to select RAM "under" the system's ROMs, like the C64, or to selectively Write Protect 8K BLKs. Here's the memory map for anyone who's interested:
http://www.sdiy.org/richardc64/vx2/map_02b.gif
Although it might seem like a lot of work for so little memory, some circuits already exist and I'd just have to change them a bit and add a few more chips.

Then I got to thinking, how would I do it if I didn't have any 74HCT612? One idea I had was to use the 74LS170 or -670, a 4x4 Register File. From the datasheet:

"The 'LS170 contains 16 high speed, low power, transparent
D-type latches arranged as four words of four bits each, to
function as a 4 x 4 register file. Separate read and write
inputs, both address and enable, allow simultaneous read
and write operation."

The simplest scheme I came up with uses two '170s or '670s. One has its Read and Write sides both on the CPU busses, so that whatever is written can be read back. The Write side of the 2nd '170 would be at the same I/O addresses as the 1st, but its Read side provides the Map Outputs.

http://www.sdiy.org/richardc64/vx2/74670_mapper.gif

If all 4 bits are used for mapping/banking, address space would be increased to almost 1M -- still ridiculous for a VIC20, IMO, but the scheme might be practical for a simpler 65xx system having a more straightforward memory layout than the VIC.

There are two short-comings, for my purposes, with the 74LS170 solution: First, because it has only 4 sets of registers, I'd have to treat the VIC's eight 8K BLocKs as four 16K "segments." That in itself isn't so bad, except I'm not sure there wouldn't be complications regarding BLK0, parts of which are shared with the Video Controller. Second, because the '170/'670 contains only 4 registers, I'd have only one Map. Having 16 registers, the 74LS612 would give me two sets of maps, selectable by simply changing one bit on the Mapping side.

So the '612 seems to be the best solution for my purposes, even if somewhat overkill. My second alternative to the '612 is perhaps more applicable to the kinds of systems many of you guys are into.


Attachments:
File comment: 74LS670 as Memory Mapper
74670_mapper.gif
74670_mapper.gif [ 12.29 KiB | Viewed 1249 times ]

_________________
"I am endeavoring, ma'am, to create a mnemonic memory circuit... using stone knives and bearskins." -- Spock to Edith Keeler
Top
 Profile  
Reply with quote  
PostPosted: Sun Jun 09, 2013 6:04 pm 
Offline
User avatar

Joined: Sat Jun 08, 2013 4:02 pm
Posts: 46
Part 2

In my search for something not as hard to find as the 74HCT612 the Cypress CY7C130 Dual-Port RAM seemed to me as something that might be applicable.

If used as a Mapper, one side would be Read/Write and the other side held at Read-only.

http://www.sdiy.org/richardc64/vx2/7c130mmu2.gif

Ten Address bits are more than enough to divide memory into segments smaller than 8K and still provide many sets of maps. The built-in Arbitration (/Busy and /Int,) would be of no use to me in a VIC20 but might be useful in more sophisticated systems in which there might be conflicts while WRiting to the 7C130 in I/O space. You guys would know better than I.

The 7c130 is a bit pricey ($10.90 from http://www.futurlec.com/Memory/CY7C130-30PC.shtml ,) but I think its capacity and ease of interfacing might be worth it.


Attachments:
7c130mmu2.gif
7c130mmu2.gif [ 12.03 KiB | Viewed 1246 times ]

_________________
"I am endeavoring, ma'am, to create a mnemonic memory circuit... using stone knives and bearskins." -- Spock to Edith Keeler
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 8 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: