The Entire Commodore 64 Library In Your Pocket

[sweetlilmre] is just beginning his adventures in retrocomputing, and after realizing there were places besides eBay to buy old computers, quickly snagged a few of the Amigas he lusted after in his youth. One of the machines that didn’t make it into his collection until recently was a Commodore 64 with Datasette and 1541 drive. With no tapes and a 1541 disk drive that required significant restoration, he looked at other devices to load programs onto his C64.

These devices, clever cartridge implementations of SD cards and Flash memory, cost more than anyone should spend on a C64. Realizing there’s still a cassette port on the C64, [sweetlilmre] created Tapuino, the $20 Commodore tape emulator

The hardware used to load games through the Datasette connector included an Arduino Nano, a microSD breakout board, a 16×2 LCD, some resistors, buttons, and a little bit of wire. The firmware part of the build – available here on the Git – reads the .TAP files off the SD card and loads them into the C64.

[sweetlilmre] posted a very complete build post of the entire device constructed on a piece of protoboard, Pop that thing in a 3D printed case, and he can have the entire C64 library in his pocket.

15 thoughts on “The Entire Commodore 64 Library In Your Pocket

  1. Nice work. I am surprised this tactic hasn’t been featured before.

    OT I realize a Color Computer and a C64 aren’t one in the same, however, I recall some programs that ran from cassette using the actual audio playback capability of the cassette as part of the program. Was that not done on the C64?

    1. It was certainly done on the Atari 8-bit machines. There was a states and capitals edu-game I used to play that had narration on the audio track of the tape. Might still have the tape, in fact :)

      1. The Atari cassette deck had a stereo head, one channel was for the digital and the other was sent up a wire on the 13 pin SIO cable and mixed with the computer audio to the TV. It also had programmable motor control. There was a cassette bundled with many Atari’s that had an introduction to BASIC programming that, once the main program loaded, synced audio narration to on screen animations using pulses on the digital track, the overall effect was quite impressive at the time (from 1979)…

        https://www.youtube.com/watch?v=jy40ztVXahc

        Jump to about 8 minutes to skip all the loading and see something sync’d up.

        It was a very underused feature; at the time I especially could not understood why games didn’t have music playing while loading up the game code (10 to 20 minutes!) but then I’d never have thought of the cost of licensing it back then!

        The C64 interface has the motor control, but no audio input, only digital read, write and sense signals.

  2. Great work!!! I was thinking of doing the same thing with my TI Launchpad but had too many other diversions. One thing to do with the tape port is write a custom loader and compress the bitstream so that games load faster than 5 minutes. :-) Since you can work with the datasette port in the digital domain with hi-fidelity you can go much faster once analog is taken out of the mix. Egan Ford did this with Apple single-load games: http://asciiexpress.net/gameserver/

  3. I think he have done a great job, but I do wonder why he did not choose to emulate a disc drive instead. He could might even make it work with some sort of turbo loader, and even include a menu in the turbo loader and then drop the LCD.
    Or if he had chosen and LCD without I2C he could have saved ~$3, there are plenty of pins left on the arduino.
    And when do people learn about the internal pull-up resistors ? Almost every project I see includes external pull-up/pull-down resistors, witch is not really necessary.

    1. Just saw this as I didn’t get any notification from Hackaday that this was up?
      Anyway, disc drive emulation is an order of magnitude more complex as a real 6502 needs to be emulated in order to load most fastloaders (games would actually upload code to the drive and then use a custom serial protocol to negotiate data transfer).
      Certainly nothing that could be accomplished with an Arduino Nano :)

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.