As a child, Kevin Vance, a computer programmer from Pennsylvania, did his first gaming, design work and BASIC programming on a Commodore 64, before moving on to making games on a PC in the ‘90s. Now, he’s returned to his roots with a Raspberry Pi Pico project that sees one of the tiny Raspberry Pi Pico microcontroller boards wrapped in a C64 ROM cartridge - and it’s a huge success.
I've taken another crack at putting a raspberry pi pico into a C64 cartridge, and it's exceeded my expectations pic.twitter.com/uBggBJqSo0March 10, 2022
The cartridge, which sees the Pico sit on a custom PCB, has an edge connector to slot into the cartridge slot on the rear of the C64. Cartridges weren’t as widely used, as distributing software on disk or tape was much cheaper, but there was a healthy amount of software shipped using cartridges. The C64 boots in seconds using a cartridge, and their 16 address lines give access to the entire address space on offer. They were limited to 16KB of storage, though later in the machine’s lifetime some manufacturers offered bank-switched cartridges that could overcome this limitation.
Vance’s project started back in 2020, when he got his old Commodore 64 working again. He tried coding some word games for it, but discovered you need a lot of floppy disks to hold the entire English dictionary. The cartridge slot, however, was tempting, and his first attempt at designing a PCB was as a ROM cartridge spell checker with a Cypress PSOC 5LP as a coprocessor. It worked well enough, but he’d made it slightly too thin for the slot.
“When I found out about the Pico, I dropped that project on the floor,” Vance tells us. “It had enough flash memory, and the voltage regulator built in, all for much cheaper than the PSOC 5. I was originally going to do the same thing, use a ROM with the Pico as a coprocessor. But the more I read about the Pico's capabilities, I started to think maybe I didn't even need the ROM!”
Voltage is a slight problem, as the C64 cartridge slot operates at 5V and the Pico at 3.3v, so there are buffers on the PCB to lower it to a safe voltage for the Pico. When the C64 boots, it reads a 16KB window of the Pico’s 164KB of RAM as if it were a ROM. Code is transferred into the C64’s RAM in 1KB chunks - at the moment just an image viewer program that displays a raspberry logo.
“It was a lot of fun figuring out how to get that working,” says Vance. “This was one of those projects where every step was an "I can't believe that worked! I guess I have to keep going now..."
For those who were doing something else in the ‘80s, the Commodore 64 was an 8-bit home computer with 64kb of RAM based on the MOS Technology 6510 CPU running at around 1MHz depending on region. It launched in 1982 for $595 ($1,600 today), and would go on to sell around 17 million units, outselling Atari machines, early Apple computers, and PC compatibles. Vance intends to put all his code, along with PCB design and firmware details, on his GitHub.
It seems that this is the week for the Raspberry Pi to bring life to retro tech. Earlier this week we saw a Raspberry Pi 4 directly interfacing with an 8086 CPU and running DOS.