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
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 available for download on Thingiverse as well as on PrusaPrinters.


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.


UPDATE 2021-07-18

I recently created a slightly modified version of the 3D printable case and a label to go with it. The new files are again available on Thingiverse as well as on PrusaPrinters.

Updated case and label for the NeoRAM remix.

52 thoughts on “The NeoRAM Remix

  1. According to the datasheet, the BS62LV1024 only has 128kB of memory. So it will not work on the NeoRAM cartridge.

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.