C64P v3.0


The C64P a USB keyboard adapter running a QMK based firmware for the Raspberry Pi Pico, which allows an original C64 keyboard to be connected via USB. I originally created it to connect an original C64 keyboard to a Raspberry Pi 3B+ via USB running BMC64. This worked great!

New challenges

I was working on further developing my BMC64 PCB. From that original post you can see I'm using the C64P directly on the BMC64 PCB to make it easy to directly connect an original C64 keyboard.

First I wanted to make the PCB work with a newer Raspberry Pi 4B or Pi 5 so I could run the latest version of VICE. It turned out that the microSD card extension I had on the board didn't work (see similar issue) with the Pi 4B or Pi 5, so I redesigned the PCB to move the microSD slot to be under the Pi, this fixed the problem.

I then though it would be possible to redesign the board to be smaller, but to do that I needed to replace the Raspberry Pi Pico with something smaller. Enter the Waveshare RP2040-Zero.

V2.0

Version 2.0 was created to support my 8-bit PC Pi Compile project. It uses a Raspberry Pi 4B or 5 and runs VICE inside of Pi OS Lite. As it is using the latest version of VICE, instead of the older BMC64 version, I created a new layout for the standard version of VICE.

The new Vice Layout, activated by RUN/STOP + F5 is based on the BMC64 Layout with the following enhancements:

  • Holding Shift + down or right arrow keys will activate the up or left arrow keys
  • Holding Shift + F1,F3,F5,F7 will activate F2,F4,F6,F8 respectively
  • Pressing F1+F7 will trigger a F12 keypress

Adding the shift layer for up/left arrow keys and the even F function keys, was to make those basic keys work outside of the VICE emulator.

The F1+F7 combo for F12 was added as F12 is the default key to display the VICE menu, making it simple to display the menu without VICE configuration changes.

This layout is designed to be used with VICE set to English US layout in positional mode. The operating system VICE is running on, will also have to have the keyboard set to English US.

V3.0

Version 3.0 was all about adding support for the smaller Waveshare RP2040-Zero.

RP2040-Zero

The RP2040-Zero has fewer GPIO pins on the edges of it's board than the standard Pi Pico. All of the versions of C64P up to version 2.0 used GPIO pins that were not available on the edges of the RP2040-Zero so there would have to be changes.

The mapping between the GPIO pins on the microcontroller to the pins on the C64 keyboard connector were updated to the available GPIO pins of the RP2040-Zero. This change also meant updated PCBs (v2.0 onwards) needed to be created to support the updated mappings.

To retain backwards compatibility with the original PCBs the firmware can be build with a -e LEGACY_PINOUT=1 option which will build a firmware with the original GPIO pin mapping. (Details here) You can also find the legacy builds along side the regular build with all releases from v3.0 onwards. They include legacy in their name.

Summary

Full details of the C64P are on the repository. You will also find links to the latest gerber files if you want to make the PCBs yourself.

You can also grab the latest firmware release here

Check out the BMC64 PCB project if you want a full drop in solution for an original C64 case and keyboard!