Tapuino / Tape Emulation Mods

Revision as of 22:25, 23 September 2026 by Josh (talk | contribs) (Rewrite from the project's own repo and FAQ: author is Peter Edwards not 'Andrew Beer'; latest firmware is v2.10.0 (Feb 2022) under MIT; cassette READ is pin 4 and WRITE is pin 5 per Commodore's service manual (the page had them swapped); SENSE is open-collector, not held low, because the plus/4 shares it with user port data pin 2; add the 'never power from USB and the C64 together' warning)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The Tapuino is an open-source, ATmega-based device that plays .TAP images from a micro-SD card into a Commodore's cassette port, standing in for a 1530 Datasette. It was published as "the $20 C64 tape emulator".

Tapuino
Caption A Tapuino tape emulator
Type Solid-state replacement for the Commodore Datasette
Designer Peter Edwards ("sweetlilmre")
Manufacturer Unknown
First released 2014
Latest revision Firmware v2.10.0, February 2022
Operating voltage —
Layers / PCB —
Compatibility Commodore machines with the 1530/1531 cassette interface
Features —
Model No. —

Everything below is cited to the project's own repository and wiki, or to Commodore's own service manual.[1][2][3]

Status

edit

The original Tapuino is in maintenance mode. Its author has superseded it with TapuinoNext. The last tagged firmware for the original is v2.10.0, committed on 10 February 2022. The firmware is MIT licensed.[1]

If you are reading a description that gives the current version as 2.0x or the licence as CERN-OHL or GPL, it is not describing this project.

The cassette port

edit

Getting this wrong is the most common way to damage something, so take it from Commodore's own service manual rather than from a pinout table copied between sites:[3]

Commodore cassette connector (CN3 on the C64)
Pin Signal Driven by
A / 1 Ground
B / 2 +5 V
C / 3 Cassette motor 6510 port line P5, via Q1/Q2/Q3
D / 4 Cassette read Into the FLAG input of CIA U1 (pin 24)
E / 5 Cassette write 6510 port line P3, U7 pin 26
F / 6 Cassette sense 6510 port line P4 — senses the play switch

Read is pin 4 and write is pin 5. Commodore's manual names both explicitly. Motor is pin 3, not pin 5.

Two things the project tells you that matter for the machine's safety

edit

Never power it from USB and the C64 at the same time

edit

The first entry in the project's own FAQ, and the answer is one line: "Don't do this, ever."[2]

The SENSE line must be driven open-collector

edit

On a real Datasette, SENSE is a physical switch that grounds the line when a key is pressed and leaves it floating otherwise. The Tapuino reproduces that by switching its pin between output-low and input/high-impedance rather than driving it high.

The reason is spelled out in the source: on the plus/4 the SENSE line is shared with data pin 2 of the user port, so a Tapuino that held SENSE permanently low would fight whatever else is on that line. Any description that says SENSE is "always pulled low (tape present)" is describing a device that will misbehave on a plus/4.[1]

Motor sense

edit

The Tapuino uses the MOTOR line to decide whether the TAP data should play or pause — which is what makes multi-load games work and what pauses playback while the filename is shown.

The documented failure symptom is precise and worth memorising: the display stuck at 0 per cent with a small "m" showing means motor sense is not working. The project's checks are:[2]

  • The MOTOR line should be HIGH from the C64 to the opto-coupler and LOW from the opto-coupler to the Nano.
  • The Datasette edge connector should be fully seated on the C64.

Recording

edit

The project documents three cases and they need different settings:[2]

Recording settings
Direction Invert Procedure
Datasette → Tapuino (archiving a real tape) 1 Tapuino record (auto or manual), then Datasette play. Stop the Tapuino manually at the end.
Tapuino → Datasette 1 Datasette record, then Tapuino play. Stop the Datasette manually at the end. The Commodore is only switched on — no play, no record.
Commodore SAVE → Tapuino 0 Commodore save, then Tapuino record. Recording stops automatically at the end.

Archiving needs as fast an SD card as you can get — the project calls this essential.[2]

Displays

edit

Three I²C display types are supported, selected in config-user.h at compile time, with the I²C address set by LCD_I2C_ADDR:[1]

  • 1602 LCD modules based on the Hitachi HD44780
  • OLEDs based on the SSD1306
  • OLEDs based on the SSD131X

Exactly one display type and exactly one language must be defined, or the build fails with an explicit error.[1]

Boards and forks

edit

The README points at one third-party board design — arananet/tapuinomini1.03 — and includes its schematics in the repository's layout folder. A 3D-printable enclosure by fabriziofiorucci is in the CAD folder.[1]

This wiki has not verified any other Tapuino variant. Named variants with their own microcontrollers, Wi-Fi modules or displays circulate in summaries of this project; none of them is described in the project's own documentation and none is listed here.

edit

References

edit
  1. ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Peter Edwards ("sweetlilmre"), Tapuino, https://github.com/sweetlilmre/tapuino . Repository, README, config.h and version.h. Source for the author, the MIT licence, the repository's creation in June 2014, the current firmware version v2.10.0 (tagged 10 February 2022), the statement that the project is in maintenance mode and superseded by TapuinoNext, the supported displays, and the open-collector handling of the SENSE line together with its rationale on the plus/4.
  2. ↑ 2.0 2.1 2.2 2.3 2.4 Tapuino FAQ, project wiki, https://github.com/sweetlilmre/tapuino/wiki/FAQ . Source for the instruction never to power the Tapuino from USB and the C64 at the same time; for the motor-sense fault symptom and its checks; and for the recording procedure and the invert settings.
  3. ↑ 3.0 3.1 Commodore Business Machines, Commodore 64 / 64C Service Manual, hosted at Commodore 64 / 64C Service Manual. "The Cassette Interface Circuits": the 6510's parallel port lines P3 to P5 drive the cassette interface, with write data from P3 (U7 pin 26) reaching connector CN3 on pins E and 5, read data entering on pins D and 4 into the FLAG input of CIA U1, P4 sensing the play switch and P5 controlling the motor through Q1/Q2/Q3 with CR2 holding the base of Q1 at 7.5 V.