<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.retrotechcollection.com/index.php?action=history&amp;feed=atom&amp;title=Tapuino_%2F_Tape_Emulation_Mods</id>
	<title>Tapuino / Tape Emulation Mods - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.retrotechcollection.com/index.php?action=history&amp;feed=atom&amp;title=Tapuino_%2F_Tape_Emulation_Mods"/>
	<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Tapuino_/_Tape_Emulation_Mods&amp;action=history"/>
	<updated>2026-04-16T23:33:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.retrotechcollection.com/index.php?title=Tapuino_/_Tape_Emulation_Mods&amp;diff=8935&amp;oldid=prev</id>
		<title>Josh at 13:42, 22 January 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Tapuino_/_Tape_Emulation_Mods&amp;diff=8935&amp;oldid=prev"/>
		<updated>2026-01-22T13:42:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:42, 22 January 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l14&quot;&gt;Line 14:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 14:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because it plugs into the cassette port rather than the serial IEC bus, Tapuino is an attractive solution for VIC-20 owners and for C64 software that was never released on disk.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Because it plugs into the cassette port rather than the serial IEC bus, Tapuino is an attractive solution for VIC-20 owners and for C64 software that was never released on disk.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;📜 &lt;/del&gt;History ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== History ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;2014-04 – Tapuino v1.0&amp;#039;&amp;#039;&amp;#039; published on GitHub; Arduino Pro Mini + 16×2 LCD shield, push-buttons and SD-module.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;2014-04 – Tapuino v1.0&amp;#039;&amp;#039;&amp;#039; published on GitHub; Arduino Pro Mini + 16×2 LCD shield, push-buttons and SD-module.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;2015-02 – Hackaday write-up&amp;#039;&amp;#039;&amp;#039; brings wider attention; hundreds of DIY units are built.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;2015-02 – Hackaday write-up&amp;#039;&amp;#039;&amp;#039; brings wider attention; hundreds of DIY units are built.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot;&gt;Line 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;2022 – Tapuino v2.x&amp;#039;&amp;#039;&amp;#039; firmware rewrites the loader to support &amp;#039;&amp;#039;&amp;#039;Turbo-TAPE&amp;#039;&amp;#039;&amp;#039; fast-loaders and arbitrary sample rates up to 100 kHz.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;2022 – Tapuino v2.x&amp;#039;&amp;#039;&amp;#039; firmware rewrites the loader to support &amp;#039;&amp;#039;&amp;#039;Turbo-TAPE&amp;#039;&amp;#039;&amp;#039; fast-loaders and arbitrary sample rates up to 100 kHz.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;🔧 &lt;/del&gt;Hardware Overview ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Hardware Overview ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Variant !! MCU / Clock !! Display !! Media !! Notable Features&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;! Variant !! MCU / Clock !! Display !! Media !! Notable Features&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l48&quot;&gt;Line 48:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 48:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Opto-isolation is optional; most PCBs use 74HC14/LM311 to shape the READ line back to digital logic levels.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Opto-isolation is optional; most PCBs use 74HC14/LM311 to shape the READ line back to digital logic levels.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;💾 &lt;/del&gt;Firmware &amp;amp; File Support ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Firmware &amp;amp; File Support ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Current stock firmware (v2.xx) recognises:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Current stock firmware (v2.xx) recognises:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l58&quot;&gt;Line 58:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 58:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Menu navigation is via four push-buttons (Next, Prev, Play, Stop) or a rotary encoder; long-press on STOP enters settings where motor-sense polarity, turbo-boost and LCD contrast can be tweaked.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Menu navigation is via four push-buttons (Next, Prev, Play, Stop) or a rotary encoder; long-press on STOP enters settings where motor-sense polarity, turbo-boost and LCD contrast can be tweaked.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;🛠️ &lt;/del&gt;Building Your Own ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Building Your Own ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A DIY Tapuino can be completed for &amp;#039;&amp;#039;&amp;#039;US$15–20&amp;#039;&amp;#039;&amp;#039; in parts:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A DIY Tapuino can be completed for &amp;#039;&amp;#039;&amp;#039;US$15–20&amp;#039;&amp;#039;&amp;#039; in parts:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l75&quot;&gt;Line 75:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 75:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Gerbers for multiple boards (Reloaded, Mini, Slim) are on GitHub under CERN-OHL-S or GPL-2.0 licences.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Gerbers for multiple boards (Reloaded, Mini, Slim) are on GitHub under CERN-OHL-S or GPL-2.0 licences.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;🚀 &lt;/del&gt;Usage Tips ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Usage Tips ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hold &amp;#039;&amp;#039;&amp;#039;Play&amp;#039;&amp;#039;&amp;#039; at power-on to enter fast-loader patch mode – needed for some turbo loaders that poll the keyboard.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Hold &amp;#039;&amp;#039;&amp;#039;Play&amp;#039;&amp;#039;&amp;#039; at power-on to enter fast-loader patch mode – needed for some turbo loaders that poll the keyboard.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Keep SD cards formatted as FAT32 with 8.3 filenames; deep directory trees slow the directory parser.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Keep SD cards formatted as FAT32 with 8.3 filenames; deep directory trees slow the directory parser.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l81&quot;&gt;Line 81:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 81:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* For VIC-20, set *AUTO-PRG offset* to $1201 so PRG files auto-run after load.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* For VIC-20, set *AUTO-PRG offset* to $1201 so PRG files auto-run after load.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⚖️ &lt;/del&gt;Alternatives &amp;amp; Related Projects ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Alternatives &amp;amp; Related Projects ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Tapecart Micro-SD&amp;#039;&amp;#039;&amp;#039; – cartridge-sized STM32 design streaming PRGs at 38 kBaud.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Tapecart Micro-SD&amp;#039;&amp;#039;&amp;#039; – cartridge-sized STM32 design streaming PRGs at 38 kBaud.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Casduino / ArduiTape&amp;#039;&amp;#039;&amp;#039; – WAV player on Arduino Nano feeding READ line with pure analogue audio.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Casduino / ArduiTape&amp;#039;&amp;#039;&amp;#039; – WAV player on Arduino Nano feeding READ line with pure analogue audio.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l87&quot;&gt;Line 87:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 87:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Pi1541 “Tape Mode”&amp;#039;&amp;#039;&amp;#039; – Raspberry Pi emulates both IEC disk and cassette via GPIO add-on.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;Pi1541 “Tape Mode”&amp;#039;&amp;#039;&amp;#039; – Raspberry Pi emulates both IEC disk and cassette via GPIO add-on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;⚠️ &lt;/del&gt;Limitations ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Limitations ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Will not power a &amp;#039;&amp;#039;&amp;#039;real&amp;#039;&amp;#039;&amp;#039; Datasette motor; cannot be daisy-chained.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Will not power a &amp;#039;&amp;#039;&amp;#039;real&amp;#039;&amp;#039;&amp;#039; Datasette motor; cannot be daisy-chained.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* SAVE speed is limited to original 300 baud even in v2 firmware.   &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* SAVE speed is limited to original 300 baud even in v2 firmware.   &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key retrotec_mw14890-mwqp_:diff:1.41:old-2828:rev-8935:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.retrotechcollection.com/index.php?title=Tapuino_/_Tape_Emulation_Mods&amp;diff=2828&amp;oldid=prev</id>
		<title>Josh: /* 🔧 Hardware Overview */</title>
		<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Tapuino_/_Tape_Emulation_Mods&amp;diff=2828&amp;oldid=prev"/>
		<updated>2025-04-25T10:37:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;🔧 Hardware Overview&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:37, 25 April 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot;&gt;Line 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Tapuino OLED&amp;#039;&amp;#039;&amp;#039; || Atmega328P || 128×32 OLED || micro-SD || Smaller 5 × 7 cm PCB, rotary encoder option&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Tapuino OLED&amp;#039;&amp;#039;&amp;#039; || Atmega328P || 128×32 OLED || micro-SD || Smaller 5 × 7 cm PCB, rotary encoder option&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &#039;&#039;&#039;Tapuino Reloaded&#039;&#039;&#039; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:contentReference[oaicite:7]{index=7} &lt;/del&gt;|| Atmega328P (Nano) || 128×32 OLED || micro-SD || All-SMD, USB update, protected 5 V regulator&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &#039;&#039;&#039;Tapuino Reloaded&#039;&#039;&#039; || Atmega328P (Nano) || 128×32 OLED || micro-SD || All-SMD, USB update, protected 5 V regulator&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Tapuino-W&amp;#039;&amp;#039;&amp;#039; || ESP-8266 (NodeMCU) || 128×64 OLED || micro-SD / Wi-Fi || HTTP file upload, OTA firmware&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &amp;#039;&amp;#039;&amp;#039;Tapuino-W&amp;#039;&amp;#039;&amp;#039; || ESP-8266 (NodeMCU) || 128×64 OLED || micro-SD / Wi-Fi || HTTP file upload, OTA firmware&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
	<entry>
		<id>https://wiki.retrotechcollection.com/index.php?title=Tapuino_/_Tape_Emulation_Mods&amp;diff=2827&amp;oldid=prev</id>
		<title>Josh: Created page with &quot;{{Infobox hardware | name           = Tapuino / Tape-Port Emulation Mods | image          = 260px | caption        = &#039;&#039;&#039;Tapuino OLED v1.5&#039;&#039;&#039; assembled on a single 5 × 7 cm PCB | type           = External solid-state replacement for Commodore &#039;&#039;&#039;Datasette&#039;&#039;&#039; | developer      = Andrew Beer (“Sweetlilmre”) – original Tapuino design&lt;br /&gt;Community forks: Arananet Reloaded, OpenC64 Tapuino, Tapuino OLED, Tapuino W, etc. | first_released...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.retrotechcollection.com/index.php?title=Tapuino_/_Tape_Emulation_Mods&amp;diff=2827&amp;oldid=prev"/>
		<updated>2025-04-25T10:37:00Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Infobox hardware | name           = Tapuino / Tape-Port Emulation Mods | image          = &lt;a href=&quot;/File:Tapuino_oled_v1_top.jpg&quot; title=&quot;File:Tapuino oled v1 top.jpg&quot;&gt;260px&lt;/a&gt; | caption        = &amp;#039;&amp;#039;&amp;#039;Tapuino OLED v1.5&amp;#039;&amp;#039;&amp;#039; assembled on a single 5 × 7 cm PCB | type           = External solid-state replacement for Commodore &amp;#039;&amp;#039;&amp;#039;Datasette&amp;#039;&amp;#039;&amp;#039; | developer      = Andrew Beer (“Sweetlilmre”) – original Tapuino design&amp;lt;br /&amp;gt;Community forks: Arananet Reloaded, OpenC64 Tapuino, Tapuino OLED, Tapuino W, etc. | first_released...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox hardware&lt;br /&gt;
| name           = Tapuino / Tape-Port Emulation Mods&lt;br /&gt;
| image          = [[File:Tapuino_oled_v1_top.jpg|260px]]&lt;br /&gt;
| caption        = &amp;#039;&amp;#039;&amp;#039;Tapuino OLED v1.5&amp;#039;&amp;#039;&amp;#039; assembled on a single 5 × 7 cm PCB&lt;br /&gt;
| type           = External solid-state replacement for Commodore &amp;#039;&amp;#039;&amp;#039;Datasette&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
| developer      = Andrew Beer (“Sweetlilmre”) – original Tapuino design&amp;lt;br /&amp;gt;Community forks: Arananet Reloaded, OpenC64 Tapuino, Tapuino OLED, Tapuino W, etc.&lt;br /&gt;
| first_released = April 2014 – public GitHub release of Tapuino v1.0 firmware&lt;br /&gt;
| latest_release = Tapuino firmware v2.01 (Feb 2023)&lt;br /&gt;
| operating_voltage = 5 V DC (drawn from cassette port pin 2)&lt;br /&gt;
| application    = Commodore 64, 64C, SX-64, VIC-20, C16/+4, PET* (with adaptor) – any IEC-less CBM 8-bit that uses the &amp;#039;&amp;#039;&amp;#039;1530/1531 Datasette&amp;#039;&amp;#039;&amp;#039; interface&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Tapuino&amp;#039;&amp;#039;&amp;#039; is an open-hardware, Arduino-based device that emulates Commodore’s 1530 &amp;#039;&amp;#039;&amp;#039;Datasette&amp;#039;&amp;#039;&amp;#039; mechanism, allowing cassette images (‎*.TAP*, ‎*.PRG*, ‎*.TCRT*) stored on a micro-SD card to be loaded, saved, and fast-forwarded with perfect digital fidelity.  &lt;br /&gt;
Because it plugs into the cassette port rather than the serial IEC bus, Tapuino is an attractive solution for VIC-20 owners and for C64 software that was never released on disk.&lt;br /&gt;
&lt;br /&gt;
== 📜 History ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2014-04 – Tapuino v1.0&amp;#039;&amp;#039;&amp;#039; published on GitHub; Arduino Pro Mini + 16×2 LCD shield, push-buttons and SD-module.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2015-02 – Hackaday write-up&amp;#039;&amp;#039;&amp;#039; brings wider attention; hundreds of DIY units are built.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2016-17 – “Reloaded” &amp;amp; OLED forks&amp;#039;&amp;#039;&amp;#039; replace the LCD with a 128×32 I²C OLED and move to an Arduino Nano for native USB flashing.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2019 – Tapuino-W&amp;#039;&amp;#039;&amp;#039; adds ESP-8266 Wi-Fi so images can be pushed over the network.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;2022 – Tapuino v2.x&amp;#039;&amp;#039;&amp;#039; firmware rewrites the loader to support &amp;#039;&amp;#039;&amp;#039;Turbo-TAPE&amp;#039;&amp;#039;&amp;#039; fast-loaders and arbitrary sample rates up to 100 kHz.&lt;br /&gt;
&lt;br /&gt;
== 🔧 Hardware Overview ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Variant !! MCU / Clock !! Display !! Media !! Notable Features&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Tapuino v1.0&amp;#039;&amp;#039;&amp;#039; || Atmega328P @ 16 MHz || 16×2 HD44780 LCD || micro-SD || Through-hole shield stack&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Tapuino OLED&amp;#039;&amp;#039;&amp;#039; || Atmega328P || 128×32 OLED || micro-SD || Smaller 5 × 7 cm PCB, rotary encoder option&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Tapuino Reloaded&amp;#039;&amp;#039;&amp;#039; :contentReference[oaicite:7]{index=7} || Atmega328P (Nano) || 128×32 OLED || micro-SD || All-SMD, USB update, protected 5 V regulator&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Tapuino-W&amp;#039;&amp;#039;&amp;#039; || ESP-8266 (NodeMCU) || 128×64 OLED || micro-SD / Wi-Fi || HTTP file upload, OTA firmware&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;OpenC64 Datasette Saver&amp;#039;&amp;#039;&amp;#039; || STM32F103 || 0.96&amp;quot; IPS || micro-SD || Adds over-current &amp;amp; brown-out protection&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Electrical Interface ===&lt;br /&gt;
The Tapuino connects to the six-pin &amp;#039;&amp;#039;&amp;#039;cassette port&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;+5 V&amp;#039;&amp;#039;&amp;#039; (pin 2) – powers the MCU (≈70 mA peak with OLED).  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;GND&amp;#039;&amp;#039;&amp;#039; (pin 1)  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MOTOR&amp;#039;&amp;#039;&amp;#039; output (pin 5) – emulated by polling; Tapuino ignores the line or gates file play.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;READ&amp;#039;&amp;#039;&amp;#039; (pin 4) – 0/+5 V pulse stream generated by DAC/bit-bang at original 300 baud or turbo rates.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;WRITE&amp;#039;&amp;#039;&amp;#039; (pin 3) – edge-captured and stored as WAV-like data when user presses “Record”.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SENSE&amp;#039;&amp;#039;&amp;#039; (pin 6) – always pulled low (tape present).&lt;br /&gt;
&lt;br /&gt;
Opto-isolation is optional; most PCBs use 74HC14/LM311 to shape the READ line back to digital logic levels.&lt;br /&gt;
&lt;br /&gt;
== 💾 Firmware &amp;amp; File Support ==&lt;br /&gt;
Current stock firmware (v2.xx) recognises:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.TAP v0/v1&amp;#039;&amp;#039;&amp;#039; images up to 64 MB.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.PRG&amp;#039;&amp;#039;&amp;#039; files auto-wrapped in a minimal TAP header.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;.TCRT&amp;#039;&amp;#039;&amp;#039; (Tapecart) container – load *instantaneously* via turbo @ 38 kBaud.  &lt;br /&gt;
* Partial experimental support for &amp;#039;&amp;#039;&amp;#039;TurboTape&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;SpeedDOS&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Vorpal&amp;#039;&amp;#039;&amp;#039; timing.&lt;br /&gt;
&lt;br /&gt;
Menu navigation is via four push-buttons (Next, Prev, Play, Stop) or a rotary encoder; long-press on STOP enters settings where motor-sense polarity, turbo-boost and LCD contrast can be tweaked.&lt;br /&gt;
&lt;br /&gt;
== 🛠️ Building Your Own ==&lt;br /&gt;
A DIY Tapuino can be completed for &amp;#039;&amp;#039;&amp;#039;US$15–20&amp;#039;&amp;#039;&amp;#039; in parts:&lt;br /&gt;
&lt;br /&gt;
; Mandatory&lt;br /&gt;
: * Arduino Nano (ATmega328P)  &lt;br /&gt;
: * micro-SD module (5 V tolerant)  &lt;br /&gt;
: * 0.96″ monochrome OLED (I²C)  &lt;br /&gt;
: * 74HC14 Schmitt trigger + 2N3904 for READ shaping  &lt;br /&gt;
: * 6-pin edge connector or sacrificial Datasette cable&lt;br /&gt;
&lt;br /&gt;
; Optional&lt;br /&gt;
: * Level-shifting buffer for WRITE  &lt;br /&gt;
: * Protective polyfuse on +5 V line  &lt;br /&gt;
: * 3D-printed enclosure&lt;br /&gt;
&lt;br /&gt;
Gerbers for multiple boards (Reloaded, Mini, Slim) are on GitHub under CERN-OHL-S or GPL-2.0 licences.&lt;br /&gt;
&lt;br /&gt;
== 🚀 Usage Tips ==&lt;br /&gt;
* Hold &amp;#039;&amp;#039;&amp;#039;Play&amp;#039;&amp;#039;&amp;#039; at power-on to enter fast-loader patch mode – needed for some turbo loaders that poll the keyboard.  &lt;br /&gt;
* Keep SD cards formatted as FAT32 with 8.3 filenames; deep directory trees slow the directory parser.  &lt;br /&gt;
* You can &amp;#039;&amp;#039;&amp;#039;record&amp;#039;&amp;#039;&amp;#039; real tapes: insert blank SD, press ➤⏺ combo and start the physical tape in the Datasette.  &lt;br /&gt;
* For VIC-20, set *AUTO-PRG offset* to $1201 so PRG files auto-run after load.  &lt;br /&gt;
&lt;br /&gt;
== ⚖️ Alternatives &amp;amp; Related Projects ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tapecart Micro-SD&amp;#039;&amp;#039;&amp;#039; – cartridge-sized STM32 design streaming PRGs at 38 kBaud.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Casduino / ArduiTape&amp;#039;&amp;#039;&amp;#039; – WAV player on Arduino Nano feeding READ line with pure analogue audio.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Super‐SCP TapeCart Deluxe&amp;#039;&amp;#039;&amp;#039; – CPLD-based loader with 2 MB internal flash.  &lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Pi1541 “Tape Mode”&amp;#039;&amp;#039;&amp;#039; – Raspberry Pi emulates both IEC disk and cassette via GPIO add-on.&lt;br /&gt;
&lt;br /&gt;
== ⚠️ Limitations ==&lt;br /&gt;
* Will not power a &amp;#039;&amp;#039;&amp;#039;real&amp;#039;&amp;#039;&amp;#039; Datasette motor; cannot be daisy-chained.  &lt;br /&gt;
* SAVE speed is limited to original 300 baud even in v2 firmware.  &lt;br /&gt;
* Very long turbo loaders (&amp;gt;100 kB/s) may exceed the 16 MHz timer resolution.  &lt;br /&gt;
* C16/+4 require a €3 1531-to-1530 passive adaptor due to different pin-out.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Commodore 1530 Datasette]]&lt;br /&gt;
* [[SD2IEC &amp;amp; IEC-2-SD Adapters]]&lt;br /&gt;
* [[PLA Replacement Options]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Commodore 64 Modifications and Enhancements]]&lt;br /&gt;
[[Category:Commodore Systems]]&lt;/div&gt;</summary>
		<author><name>Josh</name></author>
	</entry>
</feed>