The NeoRAM Remix

A quick market survey on RAM expansions for the C64

The Commodore 64 features a whopping 64kB of RAM, hence its name. Most of this is actually usable at least when programming in assembler. While this used to be quite a lot when compared to competitors in the market, even back in the day there were different external RAM extensions. Some of the popular “freezer” cartridges like later versions of the Action Replay or the Super Snapshot feature some additional RAM of their own.

Commodore 1764 REU. (photo by T. Conté)

Commodore started selling their RAM Expansion Units (REU) in 1985 when the C128 came out. The REU was actually quite sophisticated, with its own controller — the MOS8726, REC — that provides fast memory-transfer by DMA.

The GeoRAM cartridge. (photo by T. Conté)

When Commodore cancelled the REU the company behind the GEOS operating system developed their own memory expansion cartridge for use with their system, called the GeoRAM. The GeoRAM lacks a real memory controller, it simply allows pages of 256 bytes each to be mapped into the I/O area of the C64.

Let’s build one

Today, there are different replicas of the GeoRAM available. Since I don’t own any of the RAM extensions mentions so far I decided to build one of those “modern” versions for myself. I settled for the NeoRAM developed by Nicolas Welte aka. x1541 in 2006, introduced on Forum64. The NeoRAM is very compatible to the GeoRAM but it allows for a maximum of 2MB of RAM and it is battery buffered with a single CR2032 cell preserving the contents of the memory for months.

The original NeoRAM carridge.

Building myself a NeoRAM cartridge turned out to be more complicated than I thought. I had already placed orders for the components when I realized that it wouldn’t be quite as easy to get hold of the PCB. The layout files for the final version are not publicly available and when I asked around, nobody had a PCB for sale. So, based on earlier versions of the NeoRAM schematics that I found on Forum64 and other places I began to replicate the project using KiCAD. But then I got lucky after all: Bobbel — who is also running the Restore-Store for us — agreed to sell one of the PCBs he had left over and I was able to assemble an original NeoRAM when all components had finally arrived!

The NeoRAM Remix 2019 Edition

Since I usually order more components than I actually require I had some of them left over now. Also, the half finished KiCAD project nagged at me. So I decided to complete it after all and build my own version of the cartridge that I named the “NeoRAM Remix”.

The NeoRAM Remix fully assembled.

The NeoRAM Remix is fully compatible to the original with only a few modifications:

  • The mounting hole at the center is slightly larger and moved by a few mm to fit standard cases more easily available.
  • I used a different battery holder that seems to be cheaper and easier to source today.
  • The PCB provides for an optional reset button because that’s always a good idea.

As with the original NeoRAM, there are a few options when assembling the board. It can be fitted with 512kB of RAM like the GeoRAM or extended to either 1MB or 2MB of memory. The solder jumpers SJ3 and SJ4 are configured to decode 2MB of RAM by default and should be reconfigured if the cartridge will permanently be equipped with less.

Memory Configuration Options
RAM SJ3 SJ4
512kB 2-3 2-3
1MB 1-2 2-3
2MB 1-2 1-2

Minimal NeoRAM with 512kB of RAM and the battery circuit bridged.

If battery buffering is not required the battery holder can be omitted of course, as can some of the circuitry. In this case the /CS signal for the RAM chips must be bridged to ground. I might actually add another solder jumper for this in the next revision. Such a minimal version of the NeoRAM should then be very much equivalent to the original GeoRAM only much smaller and cheaper.

Minimal and full version of the NeoRAM Remix.

For a fully equipped NeoRAM Remix however, the following components are required.

NeoRAM Remix BOM
Amount Ref Description Source
1 C1 tantalum capacitor 10uF eBay (China)
4 C2-C5 ceramic capacitor 100nF eBay (China)
2 D1,D2 1N5817 Schottky diode eBay (China)
1 BT1 CR2032 battery holder eBay (China)
1 R1 resistor 4.7kΩ eBay (China)
1 R2 resistor 1kΩ
1 R3 resistor 20kΩ
1 Q1 transistor 2N3904 eBay (China)
4 U1-U4 512K x8 CMOS static RAM, e.g. K6X4008C1F or HM628512 eBay (China) | AliExpress
2 V1-V2 74HCT138 decoder  
1 V3 74HCT174 flip-flop  
1 V4 74HCT273 flip-flop  
3 V1-V3 DIP socket 16pin eBay (China)
1 V4 DIP socket 20pin eBay (China)
1 Reset tactile push button 6x6x9mm, right angle eBay (China)

Programming the GeoRAM/NeoRAM is actually not complicated and I might do another post about it some other day. There are some excellent resources already online if you are interested. Besides GEOS, there are a few other programs that know how to use the RAM extension or that have been adapted to do so. Here’s a short list of exambles:

Currently I’m working on some minor fixes and improvements to the NeoRAM Remix. When those are done they will be released as rev.2 of the PCB and the entire KiCAD project will be available under a Creative Commons BY-NC-SA license. I’ve also created a variant of my 3D printable NeoRAM case that fits the Remix. This is already available on Thingiverse for download.

UPDATE 2019-05-25

The new board revision has been assembled and tested successfully. So, the project files are now available on Github as promised. Also, I put the latest version up on PCBWay for anyone who just wants a PCB.

 

16 thoughts on “The NeoRAM Remix

  1. Will this be available for purchase as a whole assembled unit?
    What would the price be?

    Self assembly is possible, but where do you purchase the PCB?

    Or is there a design to be had to be sent off to be manufactured?

  2. No, I won’t be selling assembled units, not even kits. Even if I wanted to, the original license of the NeoRAM actually forbids commercial use. As for the PCB, its already in the post: I’m currently working on a new revision of the layout. Then I’ll order another prototype batch and test it. When all is well, I’ll release the KiCAD project files under a Creative Commons BY-NC-SA license. I might also share it on PCBWay for easy ordering but that’s not decided yet.

  3. Hello,

    I think this project is fantastic!

    I was wondering would it be possible to substitute 256kb ram chips instead of 512kb into your board?

    I realize this would result in overall lower memory capacity.

    Or alternatively would it be possible to stack 2 x 256kb RAMTRON chips piggy back fashion to create a 512kb RAM chip that would solder in place of the conventional 512kb DRAM chip?

    I found these chips on Aliexpress. I would say without a doubt that they are knockoffs (fake). They are cheap, even the genuine ones are as well. I believe they are a type of nvRAM.

    These are a type of Ferromagnetic RAM chip with a similar pinout to regular 256kb DRAM chips. They hold memory after power is lost for a long time without the need of external power.

    RAMTRON datasheet
    http://www.cpcares.com/pdf/194.pdf

    https://www.aliexpress.com/item/33054249162.html

    https://www.aliexpress.com/item/33023168831.html

    https://www.aliexpress.com/item/32831038887.html

    Unfortunately a 512kb RAM chip is not manufactured. A 256kb and 1mb and above are manufactured. Not sure why a 512kb is not manufactured in 28pin parallel package.

    Thanks for sharing your project. 🙂

  4. Hello ,

    Oops, my apologies for the confusion on my part. I got the memory sizes wrong.

    I should have said 128K x 8 1MBit density 32 pin not 256mb ram chips.

    So again, I was wondering would it be possible to substitute 128K x 8 1MBit density ram chips instead of SRAM 4M 512Kx8 into your board?

  5. That is an interesting idea but there are a few problems with simply swapping in those memory chips. First, the chip needs to operate on 5V. The PDF you linked to lists such chips with a max capacity of 32k x8 if I’m not mistaken. But it might work to put those on the NeoRAM board if you properly wire Vcc by hand. If this works, it would then not only result in a lower capacity but the memory would be non-contiguous. There would be 32kB on RAM followed by a “gap” of 480kB followed by the next 32kB etc.

  6. I appreciate your valued feed back.

    I am very new to all this.

    Quite by accident, while I was looking at Cypress’ product pdf.

    https://www.cypress.com/file/151456/download

    I noticed a SOIC 32 pin memory chip which is CMOS static RAM organized as 512K x 8-bits.

    CY62148ELL-55SXI.

    https://www.cypress.com/file/43851/download

    This device features advanced circuit design to provide ultra low standby current.
    If I am reading the data sheet correctly. It has a standby current of 1uA and an operating voltage of 4.5V to 5.5V.

    There is also this one.

    I think it’s a SOIC 32 pin memory chip which is CMOS static RAM organized as 512K x 8-bits…

    CY62148GN-45SXI.

    If I am reading this data sheet correctly (skip down to the page 11 of the document for the 5v version number).

    It has a standby current of 3.5uA and an operating voltage of 4.5V to 5.5V.

    https://www.cypress.com/file/220611/download

    Would either of these be beneficial regarding memory retention in your NeoRAM Remix circuit?

    Just a thought.. 🙂

  7. Hi, I have ordered some PCBs and will assemble them, but I was interested to know if you had issue with me selling the assembled units on my webshop?

    I see somebody here already asked about buying assembled units so I think there is a small demand.

    Please let me know if its ok, thanks.

  8. Thanks for asking, but I’m afraid the short answer would be: no, that would not be okay for me.

    As discussed above, I’m not the original creator of the NeoRAM and my work on the Remix is heavily based on that of others. The license of the original schematics prohibit commercial use and I have honored that decision by explicitly choosing the Creative Commons BY-NC-SA license for my own project. So, I would need to kindly ask you to check with the original author for permission, first.

  9. That’s cool. Exactly why I asked! It’s a shame as it makes it hard for the less techical people to get them.
    I will see if I can find the original creator and ask him about maybe a small run etc.
    I am completely on board with the open hardware thing though and will honour the non-commercial licence.

  10. Could you write some description about the v3 gerber package also?
    Ordered 15 pcbs, 13 already have their owner! Thanks for your effort!

  11. The only difference between revisions 2 and 3 is the updated footprint for the battery holder. With revision 3, some SMD battery holders should fit, too.

    Also, please note that commercial use of the project and Gerber files is not permitted by the license, as discussed above.

  12. Thanks for your reply.
    I ordered the 15 pcs and all of them were sold (bare PCB) on the price of the production to around 12 different guys. I have not earned a penny on it and I believe this is in align with the original license.
    I wouldn’t call this ‘commercial use’ at all…

  13. No, I wouldn’t call that “commercial” either. That’s totally cool then, no offense. It was just meant as a general reminder as I’ve seen assembled units being sold here and there.

  14. Ok, I thought it will be ok. Just letting you know that in Hungary there will be at least 15 pcs of it. Small country, small batch.. 🙂
    On the other hand I was wondering why on earth does it work the way that only 256 bytes are mapped in at a time. Then I realized that if it would map into either $8000, $A000 or $E000, then the writes would have gone to the underlying built-in RAM. I need to look up how did the REU overcome this issue…

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.