Review of C64 OS

Post Archive Icon

RAD Review

May 17, 2024#126 Hardware


I haven’t done a hardware review in a while, but I have acquired a few new pieces of hardware to test with C64 OS for compatibility. Today we’re going to talk about the “RAD” RaspberryPi-based REU cartridge for the C64.

Before we get into that, a couple of very brief updates about C64 OS and c64os.com. I have been hard at work on the next major update to C64 OS, v1.07. For context, Version 1.06 was released in March 2024 and brought fast app switching via REU. This has been huge, it totally changes how C64 OS can be used and makes it significantly more powerful.

In version 1.07 C64 OS is gaining networking abilities. I won’t go into details yet on how the networking in C64 OS works, but, I think it’s going to be pretty great. I am quite far along in its development, and am now in the phase of testing and debugging and implementing the first few Utilities and Applications that make use of the internet.

Lots more to come soon. And when I’m a bit further along I’ll write up a technical blog post explaining how the networking support is designed.

I’ve added a new page to the C64 OS sub-site of c64os.com, called “The C64 OS Video Guide.” It is a kind of gallery of videos that I’ve previously posted either to Twitter, Youtube or both, and which are now available on the OpCoders Inc Youtube channel.


The C64 OS Video Guide

My short REU history

I heard about the RAD when it first became a thing, though I can’t remember exactly when that was. It promised to be a very inexpensive 17xx-compatible REU option for your Commodore 64, which is built around a Raspberry Pi 3A+ (or some other models). That sounds pretty good.

I watched some videos out of curiosity, but I already have a couple of real REUs; one from CMD, 2MB 1750XL and a Super 1750 clone 512KB from Chip Level Designs. The CMD 1750XL I acquired new in the 90s and I picked up the 512KB clone at a tradeshow in the early 2000s for a good price. Additionally, I have an Ultimate64 which has REU functionality built-in, plus I have a 1541 Ultimate II+ which I have installed in my C64 Luggable. I’m pretty set for REUs I think; I don’t really need another.

CMD 1750XL 2MB (left), CLD Super 1750 Clone 512KB (right)

A couple of guys on the C64 OS Community Support Discord server started talking about the RAD and wanted to know if it was compatible with C64 OS. Now, that actually is a reason to buy more hardware; testing it for compatibility with C64 OS. And if any incompatibilities are discovered, having the hardware on hand is useful for rapid testing of changes to C64 OS to fix the issues.

I went to World of Commodore 2023, and fancy that, someone was at the show with a table on the showroom floor for demoing the RAD, the Sidekick64, and a couple of other things. Both of those use a Raspberry Pi. The Sidekick64 can do more stuff, but I’m not that interested in how much it can do, I wanted the RAD specifically so that I could test it. If it works, I could check it off the list as being C64 OS compatible. He had a bunch of boards there for sale. So I bought the RAD, for $65 CAD, and he gave me his email address and we talked about the easiest way for me to procure the appropriate Raspberry Pi.

What is the RAD

Well first, what is an REU? Commodore released the first 17xx REU in 1985 alongside the C128. Then a few different models with different memory capacities were released, including some marketed specifically for the C64, even though all of them are compatible with the C64, on the condition that you update your power supply to one that can handle the extra load.

The REU (RAM Expansion Unit) is a clever little device. It is a cartridge that plugs into the C64/C128’s expansion port. It has external RAM (128KB, 256KB, 512KB, 1MB, 2MB, 4MB, 8MB, or 16MB, in its modern implementations) and a custom controller chip known as the REC or RAM Expansion Controller.

The REC chip is like a special purpose processor. It has a number of registers mapped into a small region of I/O space, and it has access to the data bus and the full address bus, as well as having control over the /DMA line. It also gets input from the /BA line that comes from the VIC-II. Your program sets into the REC’s registers an address in the C64’s main memory (16-bit, 2 address bytes, maximum range 64KB), and it sets an address into the REU’s own memory (24-bit, 3 address bytes, maximum range 16MB.) You also set a 16-bit size to transfer, and a data direction: C64 to REU, REU to C64, or full swap. There are two ways to trigger the start of the action, but I won’t get into that here. When the action is triggered the REC asserts the /DMA line which halts the 6510 CPU and puts the CPU’s address and data lines into HighZ. In other words, it’s like the 6510 temporarily doesn’t even exist. The REC then proceeds to directly read and write main memory and does the transfer with maximum theoretical speed.

The fastest that memory can be accessed (read or written) is 1 byte per cycle. And the C64 runs at ~1 million cycles per second, so the REC can read or write main memory at around 1MB/s. Since the C64 only has 64KB total memory, it can replace the entire contents of main memory with whatever is in external memory in around 1/16th of a second, or it can do a full swap in 1/8th of a second. By C64 standards this is very fast. In practice it gets slowed down by a few things. The VIC-II still needs to access main memory every 8th raster line, during which it asserts the /BA (Bus Access) line, which temporarily pauses the REC the same way it temporarily pauses the CPU. Even with this, the REU is still very fast.

The REC has been used to great effect by games and demos (and by C64 OS) to accelerate moving blocks of memory around. The REC chip, by its design, is much more efficient at moving a block of memory than the CPU is. The only problem is that the REC chip is a custom controller, and when those chips became scarce in the early 2000s the REU quickly became unobtainable. A little bit like the SuperCPU is now.

As the years passed, there became a few options to overcome this shortage. The TurboChameleon64 has the functionality of an REU built-in, the aforementioned Ultimate64 and Ultimate II+ have the REU functionality built-in. And of course, VICE also has REU emulation support, which means TheC64 mini and Maxi also have access to an REU. But what about adding an REU to the good ol’ breadbin or a C64c that you have and want to use? The only real options are the TC64 or the UltimateII+, both of which do a lot more than just an REU, but they also cost a fair bit of money.

Another thing that developed over the last so many years is the Raspberry Pi, a small, easily programmable, low-cost computer with a standardized GPIO port that is ideally suited for being embedded into hardware projects that need some brains.

Top side on the left, and bottom side on the right.

The RAD is, therefore, the love child of necessity and opportunity. The RAD is, at its core a very simple board, with very few parts, that can be plugged into the C64’s expansion port and has a female header perfectly sized for a Raspberry Pi’s GPIO male pin header. You plug the Raspberry Pi into the RAD, you plug the Raspberry Pi into the wall (for power), and you plug the RAD into the C64’s Expansion port. Then you install the bare-metal RAD software onto a microSD card which you insert into the Raspberry Pi. Power up the Pi, then power up the C64, and bingo bango, your C64 has an REU for the very low cost of just that simple RAD PCB and its very few and off the shelf parts.

That’s the theory anyway.

My journey with RAD

First of all, I was pretty excited to try the RAD. It’s primarily an REU, 17xx compatible, but it has some other features too. It has a menu button that lets you enter into its menu screen. When in its menu screen it streams a .WAV file (installed on the microSD card) at the SID chip so you hear (yeah, I’m gonna say it) totally rad digitally sampled music with a pretty cool bitmap waveform animating on the screen too.

From the menu, you can adjust the size of the REU (though to be honest, I’m not quite sure why you’d ever set it to less than 16MB, I guess it’s for compatibility with some older software.) You can also, alternatively, configure the RAD as a GEORAM. GEORAM is a different type of RAM Expansion, it’s a simpler technology and has numerous other commercial options today, but nonetheless it’s nice that the RAD can double as a GEORAM too. And it’s configurable in increments up to 4MB (the GEORAM’s maximum.) Another rad feature of RAD is its ability to dump .PRG files directly into memory using DMA. This is something the UltimateII+ can do too. It’s not a solution for multi-load disk games, but for a great many games, demos, and other utility software that consists of just one file, you can put those files on the SD Card, and **wham** they can be loaded into memory and run with lightning speed. I could see all these things from the demo videos, so I was excited to try this stuff out with the actual hardware.

Acquire the RAD

I was selling C64 OS at the show. So, I sold some C64 OS bundles, and then turned around and bought a RAD, for $65 CAD. What you get though is just the board, the naked board. No power supply, no Pi, no case, etc. Technically you can make the boards yourself by sending the files to PCBWay, and you can buy the parts and solder them on, but like I did with the Versa64Cart, it only makes sense if you want to make at least 10 of them, because you can’t really buy the parts you need in the exact quantities you need them in. Plus, the chips are surface mount, and my soldering skills are poor, so it was worth it to buy one from someone who’d already preassembled it.

Oops. I just noticed this message on the RAD GitHub readme.

I’m frustrated to see that some people try making money from open source projects of others although they have been released under a non-commercial license (such as the RAD Expansion Unit).

The production cost for a complete RAD is below 10 Euros/Dollars per piece. There are a few commercial sellers with a permit to sell RADs. They have to not only cover production cost, but also pay taxes, bear additional expenses and comply with various regulations which justifies a higher price tag.

However, if someone who is NOT on the list below charges you more than 15€/$15 US/$20 CAD this is not only a violation of the license (commercial intent), but YOU have been ripped off. I don’t blame you as the buyer, but perhaps you should ask the seller how he/she justifies this. Feel free to let me know about these sellers.

https://github.com/frntc/RAD

I honestly do not want to get into the weeds of whether the person selling the RAD for $65 CAD at World of Commodore is in violation of the license. I should just say, I didn’t feel like I was being ripped off. Although it seems that at that price a profit was being made. I have redacted the name of the seller from this blog post.

Acquire the Raspberry Pi

During COVID there was a sudden dearth of Raspberry Pi availability. This is a major consideration. I was reluctant to buy a RAD at the show because I didn’t have a Pi and I had heard they were really hard to come by. He assured me that they are available, and recommended a site, rpilocator.com. It essentiallytracks the availability of different Raspberry Pi models from all over the world and lists the prices and the sites at which they are currently in stock. I was convinced, but that had to happen before I bought the RAD.

At home, I used rpilocator.com to find and order a Raspberry Pi 3A+ from a Canadian source, pishop.ca for a reasonable price (in my opinion) of $52 CAD. There are other Pi options that might work, however, the shape of the RAD board itself is designed ideally to fit a 3A+, and there is a 3D printable case that is also designed around the RAD with Raspberry Pi 3A+ combined.

Acquire a power supply

There is a pair of pins on the RAD which you can close with a jumper to power the Raspberry Pi from the C64. However, the official site itself warns against using this (strangely). Powering the Pi externally via its micro USB port relieves strain on the C64 and its power supply and can give you better and more reliable results. Externally powering it also means you can power on the RAD before you power on the C64, and later you can power cycle the RAD without needing to power cycle the C64.


USB comes in a myriad formats

USB comes in a bewildering number of form factors. The rPi 3A+ has a USB micro B port on the end that faces away from the back of the C64 when its all hooked up. So you need to get an appropriate USB cable and connect it to an appropriately powerful USB port. The Raspberry Pi 3A+ requires a minimum of 2.5Amps



Original article by www.c64os.com

Main Menu