Tapuino / Tape Emulation Mods: Difference between revisions
Created page with "{{Infobox hardware | name = Tapuino / Tape-Port Emulation Mods | image = 260px | caption = '''Tapuino OLED v1.5''' assembled on a single 5 × 7 cm PCB | type = External solid-state replacement for Commodore '''Datasette''' | developer = Andrew Beer (“Sweetlilmre”) – original Tapuino design<br />Community forks: Arananet Reloaded, OpenC64 Tapuino, Tapuino OLED, Tapuino W, etc. | first_released..." |
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 |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
{{Infobox hardware | {{Infobox hardware | ||
| name = Tapuino | | name = Tapuino | ||
| image = [[File:Tapuino_oled_v1_top.jpg|260px]] | | image = [[File:Tapuino_oled_v1_top.jpg|260px]] | ||
| caption = | | caption = A Tapuino tape emulator | ||
| type = | | developer = Peter Edwards ("sweetlilmre") | ||
| type = Solid-state replacement for the Commodore Datasette | |||
| first_released = | | first_released = 2014 | ||
| latest_release = | | latest_release = Firmware v2.10.0, February 2022 | ||
| application = Commodore machines with the 1530/1531 cassette interface | |||
| application = Commodore | |||
}} | }} | ||
<templatestyles src="Template:StyledTable/styles.css" /> | |||
The '''Tapuino''' is an open- | 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". | ||
'''Everything below is cited to the project's own repository and wiki, or to Commodore's own service manual.'''<ref name="repo">Peter Edwards ("sweetlilmre"), ''Tapuino'', https://github.com/sweetlilmre/tapuino . Repository, README, <code>config.h</code> and <code>version.h</code>. 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.</ref><ref name="faq">''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.</ref><ref name="csm">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.</ref> | |||
== | == Status == | ||
{| class="wikitable" | |||
! | 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'''.<ref name="repo" /> | ||
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 == | |||
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:<ref name="csm" /> | |||
{| class="wikitable styled-table" style="width:75%; text-align:left;" | |||
|+'''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. | ||
The Tapuino | |||
== Two things the project tells you that matter for the machine's safety == | |||
=== Never power it from USB and the C64 at the same time === | |||
The first entry in the project's own FAQ, and the answer is one line: '''"Don't do this, ever."'''<ref name="faq" /> | |||
=== The SENSE line must be driven open-collector === | |||
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.<ref name="repo" /> | |||
== Motor sense == | |||
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:<ref name="faq" /> | |||
* ''' | * 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 == | |||
= | The project documents three cases and they need different settings:<ref name="faq" /> | ||
{| class="wikitable styled-table" style="width:90%; text-align:left;" | |||
|+'''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.<ref name="faq" /> | |||
== | == Displays == | ||
Three I²C display types are supported, selected in <code>config-user.h</code> at compile time, with the I²C address set by <code>LCD_I2C_ADDR</code>:<ref name="repo" /> | |||
: | |||
* 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.<ref name="repo" /> | |||
== | == Boards and forks == | ||
The README points at one third-party board design — '''arananet/tapuinomini1.03''' — and includes its schematics in the repository's <code>layout</code> folder. A 3D-printable enclosure by fabriziofiorucci is in the <code>CAD</code> folder.<ref name="repo" /> | |||
'''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. | |||
== | == Related pages == | ||
* [[SD2IEC & IEC-2-SD Adapters]] | * [[SD2IEC & IEC-2-SD Adapters]] | ||
* [[ | * [[Commodore 64]] | ||
* [[Commodore VIC-20]] | |||
* [[JiffyDOS Kernal Upgrade]] | |||
== References == | |||
<references /> | |||
[[Category:Commodore 64 Modifications and Enhancements]] | [[Category:Commodore 64 Modifications and Enhancements]] | ||
[[Category:Commodore Systems]] | [[Category:Commodore Systems]] | ||