Close
0%
0%

C64 Flash Cart

A real-time programmable cartridge for the Commodore 64

Similar projects worth following
The Commodore 64 Flash Cart (C64FC) allows you program the 16K cartridge memory in real-time from any PC with USB. 100% automation is the primary goal of this device.

This is a "hands free" cartridge for the C64, meaning it will let you reprogram and reboot the C64 without even laying a hand on the computer. From a developer perspective, it's the perfect device for rapid coding and testing, without worrying about the accuracy of your favourite emulator.

The current version, RC3, has reached the project goal and a batch of boards will be shipped out to a handful of beta testers.

The project will be tagged as "completed" once the beta testers have received their boards.

The C64FC is a real-time reprogrammable cartridge for the Commodore 64, allowing you to upload programs to the C64. Software can be uploaded as a complete image, or gradually patched on demand, all while the C64 is running and executing the code.

The file transfer is done via USB 1.0 to an ATmega16 micro controller, which does USB communication using V-USB.

The uploaded program is stored on an IDT7006 16K dual-port RAM, which the C64 will see as read-only memory. 8K and 16K carts are supported, as well as PRG loading.

The current version is C64FC 1.0 RC3, and a few of these boards will be shipped out to a selected handful of beta testers.

  • 1 × ATmega16 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × idt7006s55pf Memory ICs / Static RAM (SRAM)

  • Beta testers, go!

    Stian Soreng04/27/2015 at 06:55 2 comments

    The cart (both software and hardware) is now so stable that the beta testers and developers can go crazy. A couple of carts are already out there, and a few more are in the mail this very moment.

    The software is being developed, patched, commented and uploaded to Github these days. I will publish the links once we're satisfied enough to go live.

  • Let's go 16K

    Stian Soreng02/02/2015 at 14:56 0 comments

    The design has been changed and the cart is now using an IDT7006 16K DPRAM to give better compability with the existing carts out there, now working in the memory space $8000-$bfff. The micro controller auto-switches the cart between 8K and 16K mode, and can even be virtually disabled.

    A new batch of boards (1.0-RC3) have been manufactured and will be sent out to the testers out there.

    I'm working on the software side these days, with support for various CRT files, as well as chunk-loaded PRG files. Even SID Jukebox support is in the works.

    Awesome times ahead.

  • Ready for the final version!

    Stian Soreng12/24/2014 at 23:18 0 comments

    I can't believe we're finally here, but the C64FC is ready for the FINAL VERSION. After locating a couple of minor hardware bugs and implementing V-USB, the device works as expected and runs flawlessly! Words can not describe how thrilled I am right now.

    I'm using V-USB on the ATmega16 to deal with the PC communication, and this was surprisingly easy to work with. File transfers are bundled in usbSetReport packages, and it takes around 1-1,5 seconds to transfer a complete cartridge image over the USB 1.0 connection. The cartridge image is stored on an IDT7005 8K Dual Port RAM, meaning that the ATmega16 and the C64 can speak to it simultaneously. The reset is optional, and the cartridge memory contents may be reprogrammed while the C64 is executing it!

    The client software is currently Linux command line only, but I will start working on a Qt GUI frontend for Linux, Mac and Windows. Command line versions will of course be an option, as they may be nice to include in Makefiles for software testing.

    For a little background story, see here http://jmp.no/blog/c64fc-is-done

  • USB HID support!

    Stian Soreng12/11/2014 at 11:40 0 comments

    Last night I started implementing V-USB, and as it turns out, it was much easier than expected. I soldered the remaining components required to get the USB connectivity running, and the device now enumerates as as USB HID device!

    I have run into a couple of issues that require a RC3, but so far there's no reason why RC3 shouldn't end up being the final.

    The DPRAM will be soldered as soon as I get some decent flux.

  • Hello world from RC2

    Stian Soreng12/09/2014 at 22:59 0 comments

    After missing X14, and having a horrible experience with conductive flux from China, I set the project aside for a while and focused on other things.

    Tonight I soldered up another board and got it working! Lots of pins have changed, and V-USB will be introduced, so I have days if not weeks ahead of me coding the firmware for this little guy.

    Anyway, here it is, with its blinking LED saying "Hello world! I am alive!"

  • C64FC RC2 arrived

    Stian Soreng10/28/2014 at 17:50 0 comments

    The RC2 of the C64FC finally arrived, although a little late for the X2014 party, but that's okay. The important thing is to tow this project to the finish line, no matter what.

    Let's warm up the soldering iron and see what happens tims time.

  • C64FC at TRH Maker Faire

    Stian Soreng08/25/2014 at 20:15 0 comments

    The C64FC will most likely hit the Trondheim Maker Faire 29th-30th of August 2014. It can be seen in the Hackheim stand, so feel free to stop by and have a closer look at the prototypes and the final revision.

  • Whoopsie..

    Stian Soreng08/20/2014 at 08:26 0 comments

    It took me a while, but I realized something that was a bit "off"...

    The edge connector seemed a bit narrow, so I had to compare.

    Turns out the pitch has changed for some reason. Here I'm comparing the edge connector with the one from the MMC64 (left).

    Thankfully, the most expensive part, the DPRAM, was not yet soldered.

    Oh well, time to order a new set of boards. Good thing OSHPark delivered so quickly.

  • Solder time!

    Stian Soreng08/20/2014 at 06:28 0 comments

    Boards arrived yesterday, it's solder time!

  • New look, new color, new everything.

    Stian Soreng07/31/2014 at 08:33 0 comments

    I have received some much appreciated design help from Runar Borge, and thanks to him the board is now fully redesigned to fit inside a standard cartridge housing. We've also discarded the atrocious bluetooth module and focused on USB instead, using V-USB.

    3 new boards (rev 1.0 RC1) were ordered today at OSHPark, and a new post will be added once the first board is soldered up and ready for action!

View all 10 project logs

Enjoy this project?

Share

Discussions

Dean wrote 07/28/2016 at 18:13 point

Great project. Used to do C64 6502 programming back in the day. Do you have an idea of when you will be releasing the schematics etc? Looking for something to squirt cross assembled files to the C64.

  Are you sure? yes | no

John Christian Lonningdal wrote 04/26/2016 at 05:39 point

This is very interesting! Just a quick question though, can you change the contents of the memory on the flash in realtime while the C64 accesses it? This can open up a whole new set of interesting C64 projects! I have been dabbling a bit with Arduino and made myself a transfer cable that does around 5 KB/sec on one data wire to the user port, going to expand that to use several more lines and transfers will be way faster. But what I really wanted to do was some way of using it as a "modem" - transferring network packet data at much higher speed than a traditional modem where the PC acts as the gateway to some server or other machines. I basically wonder if this cartridge could work in a similar fashion or if its only based upon flashing memory and then restarting the C64 for booting a fresh image?

  Are you sure? yes | no

Stian Soreng wrote 04/26/2016 at 06:24 point

Yes, the contents can be changed while the C64 is running and is accessing it. So, with a little work you can have the PC host feed the C64 data continuously.

Using it as a "modem" is  not possible in the current version, since the C64 cannot write data back to the PC host. This will be implemented in the next revision through ULTIMAX support.

The current revision can transfer data from the PC to the C64 at any time, regardless of the state of the C64. The data transferred does not have to be a cartridge image, any data will do. Restarting the C64 is optional.

  Are you sure? yes | no

John Christian Lonningdal wrote 04/26/2016 at 06:41 point

So you are modifying the "rom" in realtime, that is very cool. I was searching for a memory chip that enabled this, a dual port one, but I figured I'd probably get in trouble with regards to timings and such (read: dont know enough about how the C64 access the bus to attempt this). But it certainly seems you have done just that with this build. And yes you are right, you'd need some kind of writing back to have a real modem kind of functionality. Atm I was going to do this using the user port as building a cable with an atmega32 is very cheap now and could work for my purposes although there was a nice similar build cable that used the tape port which enables easy deploy of the loader (shift/runstop). Ofc a cartridge image is even better in this regard so if your ultimax support enables this it would open a lot of interesting projects.

  Are you sure? yes | no

Pyrofer wrote 08/21/2015 at 11:20 point

Hi, I was just thinking of making something similar to emulate the ROMs in the C64. The idea being you could dump the rums into this and edit them realtime as either a customisation or fix for faulty rom chips. Do you think this feature could be added to your cart so that it could replace a ROM instead of (or as well as) the cart space?

  Are you sure? yes | no

roy wrote 07/10/2015 at 19:13 point

Hello, I was wondering.... what do i need to do to get one?

  Are you sure? yes | no

haydn jones wrote 04/21/2015 at 13:08 point

Great project, is it open hardware?

  Are you sure? yes | no

Stian Soreng wrote 04/22/2015 at 12:17 point

Absolutely! Everything is committed to GitHub these days; sources, firmware, Eagle schematics + board, etc. The URL will be available soon.

  Are you sure? yes | no

Benchoff wrote 10/11/2014 at 03:12 point
Oooohhh, nice. Two weeks to finish the project? Have fun.

When you get it working, be sure to send it in on the tips line.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates