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 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.
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.
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 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.
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.
For a fully equipped NeoRAM Remix however, the following components are required.
|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||Q1||transistor 2N3904||eBay (China)|
|4||U1-U4||512K x8 CMOS static RAM, e.g. K6X4008C1F or HM628512||eBay (China) | AliExpress|
|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:
- Neotunes by TheRyk
- Maniac Mansion adapted by Onslaught
- NeoRAM Drive by enthusi
- MagicFlash64 progammer by Zschunky
- A Bunch of other Games adapted by Stephan Scheuer
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.
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.