What is the C64FC?
The C64FC, "Commodore 64 Flash Cartridge", is a reprogrammable cartridge built for the Commodore 64 with a maximum emulation capacity of 16 kilobytes.
C64FC in a custom made cartridge shell
What is its purpose?
The C64FC is able to emulate 8 and 16 kilobyte cartridges in the address range $8000-$bfff. There is also experimental support for transfer of .prg files. The cartridge was made with software development in mind; it allows the user to compile software on modern workstations and testing it on a real Commodore 64 in a matter of seconds. The data transfer is via a USB type B cable.
How does it work?
There's an ATmega16 microcontroller on the cartridge which deals with the USB communication as well as the reprogramming of a 16 kilobyte dual-port RAM chip. The C64 is limited to read-only access to this memory and will therefore see it as a ROM IC. The microcontroller takes instructions from the USB host, and is able to reprogram the RAM on demand, as well as change the state of the cartridge (by toggling the /GAME and /EXROM lines) and reset the C64. With all these capabilities, you can run software on the C64 without even laying a hand on it. Everything runs automatically, with the exception of events that require user interaction (such as keyboard, joystick)
Keep in mind that that since we're using RAM, the contents of the cartridge memory will be erased after a power loss or cycle.
Where can I find the software for it?
The entire project, hardware and software files, are available on Github: https://github.com/jmp-no/c64fc. Everything is open source, released under the GNU General Public License version 3.
Please note that the current software only runs on Mac OS X and Linux.
How many exist today, and how do I get one?
At the time of writing there are 25 cartridges out in the wild. New batches are produced when there's enough interest. If you need one right now, it's probably faster to make it yourself.
The making of board #21
Are there any future plans for it?
Yes. I have plans to support more cartridge types. I want the C64 to be able to write to the cartridge memory. I'm also planning increasing the memory to 64 kilobytes. Faster and more efficient USB support. But don't hold your breath, as this is just on the drawing board yet.