Monday, July 28, 2014

Tapuino Part 3: Write support and some circuit changes

Well the Tapuino is out in the wild and has been successfully built by another user!

(please note, most recent build instructions are now here:

Whilst that has been going down I've been hacking away on the code base extending the firmware to handle:

  • Long filename support: I've moved over to the FatFs library to enable this
  • Write support! This was a killer but finally works... if you have a FAST SD Card.
  • Many bug fixes (I2C display now works across more backpacks)
  • Restructuring and code cleanup
There has been a minor HW change to facilitate write support:

The C64 Datasette write line now must be connected to pin D8 of the Nano. If you built the Tapuino as per my previous post all that should be involved is moving it across to the correct pin, possibly soldering up a new header. The breadboard diagram and Fritzing file in GitHub have been updated accordingly:

New wiring
Also, I put in the 5V and GND lines that were missing before.

Write support has been tested with some simple BASIC save files and also via the Elite save game mechanism and all appears well. Files are written to TAP format in a folder on the root of the SD Card called "Recorded" (this folder will be auto-created for you) and have the filename "rec-XXXX.tap" where XXXX is a 4 digit decimal number.

At this point the Tapuino is functionally complete. I'd like to get a few more folk to build and use this to help track down the inevitable bugs and also work on a few more features. Features I have been thinking about include:

  • Button repeat functionality for scrolling through long lists of files.
  • A name input mechanism for naming recorded files.
Go forth and build!


  1. This is really confusing.. in this "fritzing" you have active high buttond with resistors, but if you klick the link at the top to tapuino r2, there the "fritzing" indicates active low without the resistors.. which one is correct?? i built the r2, but the buttons does not work at all. Now i suspect this one with active high with resistors is the correct. PLEASE make real schematics, and DELETE all posts that are not relevant not to confuse.

  2. Hi,

    Apologies for the late reply, Google has eaten comments for the blog for ages.

    Initially I used the configuration on this page but then changed it to reduce the part count by using this internal pullups on the GPIO lines connected to the buttons.

    The R2 version is the correct version. If you look at the code ( you can see that in config.h ( there is a define:

    // comment this line if you are using HW1.0

    which enables support for either configuration.

    This post has been kept for historic purposes as it details the journey I went though to build the Tapuino, and that is why I implicitly link to the latest build instructions at the top of the post.

    If the buttons are not working for you then I'd suggest that you carefully examine your wiring and make sure that you are using the latest and properly configured code.