Shredzone
https://shred.zone/cilla/list/index.html
Shred's Blog2024-03-20T12:23:34ZSidecar Restauration, Part 3
https://shred.zone/cilla/page/498/sidecar-restauration-part-3.html
<p>In the third and final part, I am going to futureproof the Sidecar and finally test it. Will it work after all the hours and patience I put into the repair?</p>
<h2 id="gotek-drive">Gotek Drive</h2>
<p>I probably only own a single 5¼" floppy disk, back from my time at school. However the Sidecar won't do much without floppies, so I decided to add a Gotek drive.</p>
<p>The modification must be fully reversible, and I also wanted to keep the original look of the Sidecar with its floppy drive. I designed a <a href="https://www.printables.com/model/661532-slot-bracket-for-gotek-board" class="exts">Gotek bracket</a> for the expansion slot and a <a href="https://www.printables.com/model/730581-commodore-a1060-sidecar-gotek-controller" class="exts">control panel</a> with OLED display and encoder. The panel is screwed to the front air grille, so no holes need to be drilled into the case.</p>
<p><span class="ci-image"><a href="/cilla/page/498/gotek.jpg" data-fancybox="ipg-b2c952ec" data-caption="The Gotek bracket on the expansion slot."><img src="/cilla/page/498/thumb/gotek.jpg" srcset="/cilla/page/498/thumb-2x/gotek.jpg 2x,/cilla/page/498/thumb-3x/gotek.jpg 3x,/cilla/page/498/thumb-4x/gotek.jpg 4x" class="rounded img-fluid" alt="The Gotek bracket on the expansion slot." /></a></span> <span class="ci-image"><a href="/cilla/page/498/0default.jpg" data-fancybox="ipg-b2c952ec" data-caption="The control panel, ready for mounting."><img src="/cilla/page/498/thumb/0default.jpg" srcset="/cilla/page/498/thumb-2x/0default.jpg 2x,/cilla/page/498/thumb-3x/0default.jpg 3x,/cilla/page/498/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="The control panel, ready for mounting." /></a></span> <span class="ci-image"><a href="/cilla/page/498/frontpanel.jpg" data-fancybox="ipg-b2c952ec" data-caption="The control panel, mounted to the front of the case."><img src="/cilla/page/498/thumb/frontpanel.jpg" srcset="/cilla/page/498/thumb-2x/frontpanel.jpg 2x,/cilla/page/498/thumb-3x/frontpanel.jpg 3x,/cilla/page/498/thumb-4x/frontpanel.jpg 4x" class="rounded img-fluid" alt="The control panel, mounted to the front of the case." /></a></span></p>
<p>I made a new flat cable to connect the Gotek drive and the floppy drive to the mainboard. The Gotek drive is supposed to be drive <code>A:</code>, while the floppy drive should be <code>B:</code>. Both drives can be configured with jumpers, so there is no need to make a twisted floppy cable.</p>
<h2 id="first-test-run">First Test Run</h2>
<p>For the first test run I did not connect the Sidecar to the Amiga yet. If something on the Sidecar was badly broken, it wouldn't damage the Amiga that way.</p>
<p>So I turned on the power. The fan spun up, the power LED lit up, but nothing else happened. Well, since the Sidecar is not meant to work as a standalone PC, this is probably normal. At least there was no magic smoke and no smell of smoldering electronics. I took the opportunity to check the voltages, and they were all correct and stable.</p>
<p>Things looked pretty good.</p>
<h2 id="making-a-janus-workbench">Making a Janus Workbench</h2>
<p>The Sidecar is controlled by the Amiga. It has no connectors for a monitor or keyboard. Fortunately, the driver disk <a href="http://amiga.resource.cx/exp/a1060" class="ext">can still be found on the internet</a>. For installation, I first had to make a copy of the original Workbench 1.2 disk, and then run the installer from the install disk.</p>
<p>On my Amiga 1000 however, the installation failed because the RAM disk ran out of memory. My Amiga is equipped with the maximum 512KB of Chip RAM, so it was supposed to work. I tried it multiple times, but always got this strange error.</p>
<p>I gave up and set up a UAE instance of an Amiga 500 with Kickstart 1.2 and 2 MB of Fast RAM. On this machine I was finally able to complete the installation.</p>
<p>The installer is a bit strange and not based on the Amiga installer tool that came later. It is best to use the default options and wait patiently for each step to complete.</p>
<h2 id="test-runs-and-fixes">Test Runs and Fixes</h2>
<p><span class="ci-image float-right"><a href="/cilla/page/498/testbed.jpg" data-fancybox="ipg-b2c952ec" data-caption="My test configuration, with the Amiga 1000 and the Sidecar. It takes a lot of space."><img src="/cilla/page/498/thumb/testbed.jpg" srcset="/cilla/page/498/thumb-2x/testbed.jpg 2x,/cilla/page/498/thumb-3x/testbed.jpg 3x,/cilla/page/498/thumb-4x/testbed.jpg 4x" class="rounded img-fluid" alt="My test configuration, with the Amiga 1000 and the Sidecar. It takes a lot of space." /></a></span> It's finally time for a real test run.</p>
<p>Connecting the two devices isn't easy and can damage the hardware if done wrong. First I unplugged the power cords from the Sidecar and the Amiga. Then I connected the Sidecar to the expansion port of the Amiga. It's a bit tricky to find the correct position, but the joystick and mouse connectors are a good orientation guide. There is no need to use force.</p>
<p>The Sidecar also has a power cord extender. I plugged it into the Amiga's power connector and made sure that the Amiga's power switch was <strong>turned on</strong>. Both devices can now be controlled with the power switch of the Sidecar.</p>
<blockquote>
<p><strong>CAUTION:</strong> You must never turn on power to the Sidecar unless the Amiga is already powered up. Otherwise you will damage your Amiga! You can avoid this problem by using the power cord extender and making sure that the Amiga's power switch is always on.</p>
</blockquote>
<p>Now it was time for the truth. I booted the Janus Workbench I prepared above, but got a Guru Meditation during startup. I tried other driver versions and other floppy disk images I could find, but it always ended with the flashing red square.</p>
<p>Fortunately, the hardware registers are well described in the <a href="https://archive.org/details/CommodoreAmigaA500A2000TechnicalReferenceManual/page/n107/mode/2up" class="exts">A500/A2000
Technical Reference Manual, Section 4.1</a>. The description is for the A2088XT bridge board, but it is very similar to the Sidecar.</p>
<p>I quickly hacked some small <a href="http://aminet.net/package/util/misc/A1060Diag" class="ext">diagnostic tools</a>. They confirmed that the 128KB bridge RAM and the six replaced bus drivers were working fine.</p>
<p>I also found that the PC reset did not work. I only managed to actually reset the PC once. It played a chime and then actually accessed the MS-DOS disk I had in the Gotek drive. This means that the PC side was basically working, but the bridge board was having problems.</p>
<p>There are four PALs and three FPLAs on the upper board. The PALs have a specified memory retention time of about 20 years, which is long past. I remembered that the PALs on my <a href="/cilla/page/473/maestropro-internal.html">MaestroPro</a> were already having memory problems due to old age.</p>
<p>The fusemaps of the PALs can be found on the <a href="https://www.amigawiki.org/doku.php?id=de:parts:pld_download#a1060_sidecar" class="exts">Amiga Wiki</a>. I replaced the four PALs with modern ATF16V8C-7PU GALs.</p>
<p>After that I was able to reset the machine reliably. The Guru Meditation was also gone when I booted the Janus Workbench. But the Sidecar still refused to come back out of retirement. What I got now was a garbled PC screen.</p>
<p><span class="ci-image"><a href="/cilla/page/498/garbled.jpg" data-fancybox="ipg-b2c952ec" data-caption="No Guru Meditation, but the screen content isn't good yet."><img src="/cilla/page/498/thumb/garbled.jpg" srcset="/cilla/page/498/thumb-2x/garbled.jpg 2x,/cilla/page/498/thumb-3x/garbled.jpg 3x,/cilla/page/498/thumb-4x/garbled.jpg 4x" class="rounded img-fluid" alt="No Guru Meditation, but the screen content isn't good yet." /></a></span></p>
<p>But I was on the right track! There is also a single PAL (and two FPLAs) on the lower board. I replaced this PAL as well, and also replaced the ribbon cables that are connecting both boards. The original cables still looked good, but the wires may have been damaged or corroded, and replacement is cheap.</p>
<p><span class="ci-image"><a href="/cilla/page/498/fixed.jpg" data-fancybox="ipg-b2c952ec" data-caption="The Sidecar with the replaced PALs and new cables."><img src="/cilla/page/498/thumb/fixed.jpg" srcset="/cilla/page/498/thumb-2x/fixed.jpg 2x,/cilla/page/498/thumb-3x/fixed.jpg 3x,/cilla/page/498/thumb-4x/fixed.jpg 4x" class="rounded img-fluid" alt="The Sidecar with the replaced PALs and new cables." /></a></span></p>
<p>Next attempt. And finally, this time I was successful! I tested the machine for about an hour, formatted some floppy disks I bought somewhere, started Turbo Pascal. Everything worked reliably, and it was impressive to see MS-DOS running in one Amiga window and still have the full power of Amiga's multitasking to run Amiga software.</p>
<p><span class="ci-image"><a href="/cilla/page/498/screenshot.jpg" data-fancybox="ipg-b2c952ec" data-caption="MS-DOS in one window, Amiga Workbench and Clock in other windows."><img src="/cilla/page/498/thumb/screenshot.jpg" srcset="/cilla/page/498/thumb-2x/screenshot.jpg 2x,/cilla/page/498/thumb-3x/screenshot.jpg 3x,/cilla/page/498/thumb-4x/screenshot.jpg 4x" class="rounded img-fluid" alt="MS-DOS in one window, Amiga Workbench and Clock in other windows." /></a></span></p>
<p>I was lucky. The PALs were easy to replace, as compatible GALs are still being produced today. The FPLAs can also potentially lose their programming, but there are no modern replacements. Mattis Lind designed <a href="https://github.com/MattisLind/82S100replacement" class="exts">a replacement board</a> that uses a modern CPLD, but there are no corresponding JED files for programming them.</p>
<p>And there it is, my fully restored and futureproofed Commmodore A1060 Sidecar!</p>
<p><span class="ci-image"><a href="/cilla/page/498/case.jpg" data-fancybox="ipg-b2c952ec" data-caption="The Sidecar, fully restored, and with Gotek controller."><img src="/cilla/page/498/maxi/case.jpg" srcset="/cilla/page/498/maxi-2x/case.jpg 2x,/cilla/page/498/maxi-3x/case.jpg 3x,/cilla/page/498/maxi-4x/case.jpg 4x" class="rounded img-fluid" alt="The Sidecar, fully restored, and with Gotek controller." /></a></span></p>
<p>The restoration was much more difficult than I expected. There were many bad surprises waiting for me, and more than once I was close to giving up the project and storing the Sidecar away for later.</p>
<p>This beast is difficult to repair. First of all because of its size. The Amiga 1000 plus Sidecar was too big for the table in my tiny workshop, so I could not use my scope. Also there is not much use in running the Sidecar alone, so you always need a running Amiga 1000 for troubleshooting. Third, it's hard to find a place to put the Sidecar's PSU while probing the boards. The open nature of the PSU also poses a risk of electrocution if accidentally touched. All in all it was an interesting experience and I have learned a lot about Commodore bridgeboards in general and the Sidecar in special, but I probably wouldn't do it again.</p>
<h2 id="useful-links">Useful Links</h2>
<ul>
<li><a href="http://amiga.resource.cx/exp/a1060" class="ext">Manual and Driver Software</a></li>
<li><a href="https://www.amigawiki.org/doku.php?id=de:parts:pld_download#a1060_sidecar" class="exts">PAL and FPLA fusemaps</a></li>
<li><a href="http://aminet.net/package/util/misc/A1060Diag" class="ext">Diagnostics tool</a> (<a href="https://codeberg.org/shred/a1060-diag" class="exts">source code</a>)</li>
<li>3D printed <a href="https://www.printables.com/model/730581-commodore-a1060-sidecar-gotek-controller" class="exts">Sidecar control panel</a> and <a href="https://www.printables.com/model/661532-slot-bracket-for-gotek-board" class="exts">Gotek mounting frame</a>.</li>
<li><a href="http://bridgeboard.u-93.de/" class="ext">Gonzo's Bridgeboard pages</a></li>
</ul>2024-02-25T11:28:11ZSidecar Restauration, Part 2
https://shred.zone/cilla/page/497/sidecar-restauration-part-2.html
<p>In the first part, I disassembled the Sidecar. In this second part, I will fix all the broken things and put the Sidecar back together in its original state.</p>
<p>Let's start with the mechanics. The floppy/PSU frame had some rust spots. I used a sanding machine to remove them all. Then I used zinc spray to protect the metal and restore the original look. The result was much better than expected. The frame now looks almost links new.</p>
<p><span class="ci-image"><a href="/cilla/page/497/frame1.jpg" data-fancybox="ipg-be41a0b5" data-caption="The PSU/floppy frame, coated with fresh zinc."><img src="/cilla/page/497/thumb/frame1.jpg" srcset="/cilla/page/497/thumb-2x/frame1.jpg 2x,/cilla/page/497/thumb-3x/frame1.jpg 3x,/cilla/page/497/thumb-4x/frame1.jpg 4x" class="rounded img-fluid" alt="The PSU/floppy frame, coated with fresh zinc." /></a></span></p>
<p>I got the overhauled PSU back. @DingensCGN, who already <a href="/cilla/page/477/amiga-1000-restauration-part-1.html#the-psu">overhauled my Amiga 1000 PSU</a>, did an excellent job again. He replaced all electrolytic capacitors and the power filter, removed the luster terminals and inserted a new pull relief. I also asked him to add a connector for a 12V fan. The original fan was a 230V model and was said to be awfully noisy. I never liked noisy computers, so I will replace it with a modern 80mm Noctua fan.</p>
<p><span class="ci-image"><a href="/cilla/page/497/frame2.jpg" data-fancybox="ipg-be41a0b5" data-caption="The overhauled PSU without the metal cage."><img src="/cilla/page/497/thumb/frame2.jpg" srcset="/cilla/page/497/thumb-2x/frame2.jpg 2x,/cilla/page/497/thumb-3x/frame2.jpg 3x,/cilla/page/497/thumb-4x/frame2.jpg 4x" class="rounded img-fluid" alt="The overhauled PSU without the metal cage." /></a></span></p>
<p>I'm always relieved to know that a power supply is safe to use, properly grounded, and won't damage the machine or electrocute me. 🙂</p>
<p>I was also lucky enough to find a Chinon FZ-502 at an online auction. This type of floppy drive type was commonly used in a Sidecar and would restore the original look of the front.</p>
<p><span class="ci-image"><a href="/cilla/page/497/frame3.jpg" data-fancybox="ipg-be41a0b5" data-caption="The PSU in its cage, and the new old floppy drive."><img src="/cilla/page/497/thumb/frame3.jpg" srcset="/cilla/page/497/thumb-2x/frame3.jpg 2x,/cilla/page/497/thumb-3x/frame3.jpg 3x,/cilla/page/497/thumb-4x/frame3.jpg 4x" class="rounded img-fluid" alt="The PSU in its cage, and the new old floppy drive." /></a></span></p>
<p>There is a metal shield supposed to be around the floppy drive, but unfortunately it was lost. It's not a required part though, and no one would notice it was missing once the case is closed.</p>
<p>Next problem: The legs of the power LED were broken off and the LED is stuck. I had no choice but to use brute force. I drilled out the LED and the plug that held it in place. I had to be very careful. If I drilled too deep, I would ruin the look of the front.</p>
<p>I then used a new standard rectangular red LED and 3D printed a plug to hold it in place without glue. The new LED is held firmly in place, but could still be removed by gently pushing it out from the front side with a screwdriver.</p>
<p><span class="ci-image"><a href="/cilla/page/497/led1.jpg" data-fancybox="ipg-be41a0b5" data-caption="The LED is drilled out, fortunately without damaging the front."><img src="/cilla/page/497/thumb/led1.jpg" srcset="/cilla/page/497/thumb-2x/led1.jpg 2x,/cilla/page/497/thumb-3x/led1.jpg 3x,/cilla/page/497/thumb-4x/led1.jpg 4x" class="rounded img-fluid" alt="The LED is drilled out, fortunately without damaging the front." /></a></span> <span class="ci-image"><a href="/cilla/page/497/led2.jpg" data-fancybox="ipg-be41a0b5" data-caption="The new LED and the 3D printed plug."><img src="/cilla/page/497/thumb/led2.jpg" srcset="/cilla/page/497/thumb-2x/led2.jpg 2x,/cilla/page/497/thumb-3x/led2.jpg 3x,/cilla/page/497/thumb-4x/led2.jpg 4x" class="rounded img-fluid" alt="The new LED and the 3D printed plug." /></a></span> <span class="ci-image"><a href="/cilla/page/497/led3.jpg" data-fancybox="ipg-be41a0b5" data-caption="The replacement LED is ready to use."><img src="/cilla/page/497/thumb/led3.jpg" srcset="/cilla/page/497/thumb-2x/led3.jpg 2x,/cilla/page/497/thumb-3x/led3.jpg 3x,/cilla/page/497/thumb-4x/led3.jpg 4x" class="rounded img-fluid" alt="The replacement LED is ready to use." /></a></span></p>
<p>The mechanical part is done. Time for the electronics.</p>
<p>On the upper board only a single electrolytic cap had to be replaced. But it took a lot of unsoldering work to remove the broken Zorro connector and the six bus driver chips. The original Zorro connector was held in place by two rivets, and I had no choice but to drill them out, slightly damaging the board in the process. I then washed the board thoroughly with IPA.</p>
<p><span class="ci-image"><a href="/cilla/page/497/top.jpg" data-fancybox="ipg-be41a0b5" data-caption="The upper board: cleaned, recapped, new Zorro connector, and the six driver chips seated in sockets."><img src="/cilla/page/497/thumb/top.jpg" srcset="/cilla/page/497/thumb-2x/top.jpg 2x,/cilla/page/497/thumb-3x/top.jpg 3x,/cilla/page/497/thumb-4x/top.jpg 4x" class="rounded img-fluid" alt="The upper board: cleaned, recapped, new Zorro connector, and the six driver chips seated in sockets." /></a></span></p>
<p>There was also a tantalum capacitor, which I replaced with a new electrolytic one. This is not really necessary, but I don't trust old tantalums. They cannot leak like electrolytic ones, but they can catch fire or explode, causing even more damage to the board than electrolyte.</p>
<p>On the bottom board, there were ten electrolytic caps due for replacement. I also replaced the rusted piezo buzzer, which was a bit difficult because the new one turned out to be surprisingly sensitive to heat.</p>
<p>I don't like empty sockets, so I organized an 8087 FPU. Eight 41256 DRAM cells will upgrade the machine to the maximum possible 512 KB RAM. (The <a href="https://en.wikiquote.org/wiki/Talk:Bill_Gates#640_k/1_MB" class="wp">famous 640 KB</a> can only be reached with a RAM expansion card.)</p>
<p>The installed Sidecar V2.06 firmware was the latest version I could find, so I just gave the original EPROM a new label, as the old one came off because the glue had dried out.</p>
<p><span class="ci-image"><a href="/cilla/page/497/bottom.jpg" data-fancybox="ipg-be41a0b5" data-caption="Lower board: Recapped, new piezo, new FPU, DRAM fully extended."><img src="/cilla/page/497/thumb/bottom.jpg" srcset="/cilla/page/497/thumb-2x/bottom.jpg 2x,/cilla/page/497/thumb-3x/bottom.jpg 3x,/cilla/page/497/thumb-4x/bottom.jpg 4x" class="rounded img-fluid" alt="Lower board: Recapped, new piezo, new FPU, DRAM fully extended." /></a></span></p>
<p>The board needs a new configuration after the change. Fortunately the original manual <a href="http://amiga.resource.cx/manual/A1060.pdf" class="pdf">can still be found</a>.</p>
<p>I also replaced all screws with new ones.</p>
<p>And finally, it's time for reassembly. Probably for the first time in decades, the Sidecar's case was closed again.</p>
<p><span class="ci-image"><a href="/cilla/page/497/assembly.jpg" data-fancybox="ipg-be41a0b5" data-caption="Lower board, back in the case. The reset line is reconnected."><img src="/cilla/page/497/thumb/assembly.jpg" srcset="/cilla/page/497/thumb-2x/assembly.jpg 2x,/cilla/page/497/thumb-3x/assembly.jpg 3x,/cilla/page/497/thumb-4x/assembly.jpg 4x" class="rounded img-fluid" alt="Lower board, back in the case. The reset line is reconnected." /></a></span> <span class="ci-image"><a href="/cilla/page/497/0default.jpg" data-fancybox="ipg-be41a0b5" data-caption="Floppy/PSU frame and upper board (below, not visible). The screws of the new fan are still missing."><img src="/cilla/page/497/thumb/0default.jpg" srcset="/cilla/page/497/thumb-2x/0default.jpg 2x,/cilla/page/497/thumb-3x/0default.jpg 3x,/cilla/page/497/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="Floppy/PSU frame and upper board (below, not visible). The screws of the new fan are still missing." /></a></span> <span class="ci-image"><a href="/cilla/page/497/complete.jpg" data-fancybox="ipg-be41a0b5" data-caption="The restored Amiga 1060 &quot;Sidecar&quot;."><img src="/cilla/page/497/thumb/complete.jpg" srcset="/cilla/page/497/thumb-2x/complete.jpg 2x,/cilla/page/497/thumb-3x/complete.jpg 3x,/cilla/page/497/thumb-4x/complete.jpg 4x" class="rounded img-fluid" alt="The restored Amiga 1060 "Sidecar"." /></a></span></p>
<p>Isn't she a beauty? 😍</p>
<p>That's all for the second part. If you've been following my article closely, you'll have noticed that I haven't turned on the machine yet. That's right. I avoid powering up old computers without at least having the PSU inspected, because there is a risk that (after decades of storage) the PSU is defective and could damage the machine or go up in smoke.</p>
<p>In the third and last part I will connect the Sidecar to my Amiga and finally find out if it works.</p>
<h2 id="list-of-capacitors">List of Capacitors</h2>
<p>Lower board:</p>
<ul>
<li>2x 100µF 16V radial</li>
<li>8x 47µF 25V radial</li>
</ul>
<p>Upper board:</p>
<ul>
<li>1x 100µF 16V radial</li>
<li>1x 47µF 25V radial (as replacement for the tantalum at C57)</li>
</ul>2024-02-18T11:07:41ZSidecar Restauration, Part 1
https://shred.zone/cilla/page/496/sidecar-restauration-part-1.html
<p><span class="ci-image float-right"><a href="/cilla/page/496/0default.jpg" data-fancybox="ipg-50930212" data-caption="Front view of the A1060 Sidecar, but with a gaping hole where the floppy drive is supposed to be."><img src="/cilla/page/496/thumb/0default.jpg" srcset="/cilla/page/496/thumb-2x/0default.jpg 2x,/cilla/page/496/thumb-3x/0default.jpg 3x,/cilla/page/496/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="Front view of the A1060 Sidecar, but with a gaping hole where the floppy drive is supposed to be." /></a></span> I was lucky and got hand on a Commodore A1060 "Sidecar". This first part is about the teardown of the Sidecar, and the damage assessment.</p>
<p>But what is a Sidecar? When Commodore released the Amiga 1000, its graphics and sound capabilities were unmatched in that price range. However, because the machine was based on the Motorola 68000 processor, users were unable to run existing MS-DOS software on the machine.</p>
<p>The German Commodore factory in Braunschweig tried to solve this problem with the Amiga 1060. The machine was connected to the Amiga 1000 and provided a full <a href="https://en.wikipedia.org/wiki/IBM_Personal_Computer" class="wp">IBM compatible PC</a>. Although it was a standalone computer, it had no video and keyboard ports, but was fully controlled by the Amiga. Because it was connected to the right side of the Amiga, it looked like the sidecar of a motorcycle, which gave it its nickname.</p>
<p>The Sidecar came relatively late to the market, could only be used with the Amiga 1000, and was quite expensive. For this reason, only a small number were produced. I could not find any official figures, but according to Dr. Peter Kittel (an engineer at Commodore Braunschweig) only between 3,000 and 5,000 units were sold in Germany, and certainly even less worldwide.</p>
<p>My A1060 came with an open case top. The reason was that the 5¼" floppy drive had been removed, and a full-height hard disk drive had taken its place. It was so tall that it didn't fit in the case, and it was also surprisingly heavy.</p>
<p><span class="ci-image"><a href="/cilla/page/496/case2.jpg" data-fancybox="ipg-50930212" data-caption="The case cannot be closed for a reason."><img src="/cilla/page/496/thumb/case2.jpg" srcset="/cilla/page/496/thumb-2x/case2.jpg 2x,/cilla/page/496/thumb-3x/case2.jpg 3x,/cilla/page/496/thumb-4x/case2.jpg 4x" class="rounded img-fluid" alt="The case cannot be closed for a reason." /></a></span> <span class="ci-image"><a href="/cilla/page/496/case3.jpg" data-fancybox="ipg-50930212" data-caption="With the case top removed, there is a huge harddisk where the floppy drive is supposed to be."><img src="/cilla/page/496/thumb/case3.jpg" srcset="/cilla/page/496/thumb-2x/case3.jpg 2x,/cilla/page/496/thumb-3x/case3.jpg 3x,/cilla/page/496/thumb-4x/case3.jpg 4x" class="rounded img-fluid" alt="With the case top removed, there is a huge harddisk where the floppy drive is supposed to be." /></a></span></p>
<p>Many screws were missing or oxidized, but otherwise the machine was in used but acceptable optical condition. The previous owner had added a reset button on the front, and a second D-Sub connector on the back (which later turned out to be a second floppy drive connector, for whatever reason).</p>
<p>I decided to take the entire machine apart for cleaning and damage assessment. My plans are to restore it to its original state, which also means removing the oversize hard drive and its controller board.</p>
<p>There is a frame that holds the floppy drive and PSU. I found a lot of strange rust on it, which looks a bit like moisture damage, but that wouldn't explain the shape of the stains.</p>
<p><span class="ci-image"><a href="/cilla/page/496/frame.jpg" data-fancybox="ipg-50930212" data-caption="A lot of rust stains on the floppy/PSU frame."><img src="/cilla/page/496/thumb/frame.jpg" srcset="/cilla/page/496/thumb-2x/frame.jpg 2x,/cilla/page/496/thumb-3x/frame.jpg 3x,/cilla/page/496/thumb-4x/frame.jpg 4x" class="rounded img-fluid" alt="A lot of rust stains on the floppy/PSU frame." /></a></span></p>
<p>The PSU looked okay-ish. Luster terminals were used for the floppy power connector. Also the pull relief for the Amiga power cord was missing, instead I found a knot in the cord.</p>
<p><span class="ci-image"><a href="/cilla/page/496/psu.jpg" data-fancybox="ipg-50930212" data-caption="The PSU looks good, but the caps certainly need to be replaced."><img src="/cilla/page/496/thumb/psu.jpg" srcset="/cilla/page/496/thumb-2x/psu.jpg 2x,/cilla/page/496/thumb-3x/psu.jpg 3x,/cilla/page/496/thumb-4x/psu.jpg 4x" class="rounded img-fluid" alt="The PSU looks good, but the caps certainly need to be replaced." /></a></span> <span class="ci-image"><a href="/cilla/page/496/case4.jpg" data-fancybox="ipg-50930212" data-caption="A knot as pull relief. Please don't try that at home!"><img src="/cilla/page/496/thumb/case4.jpg" srcset="/cilla/page/496/thumb-2x/case4.jpg 2x,/cilla/page/496/thumb-3x/case4.jpg 3x,/cilla/page/496/thumb-4x/case4.jpg 4x" class="rounded img-fluid" alt="A knot as pull relief. Please don't try that at home!" /></a></span></p>
<p>I gave the PSU to an experienced technician at the <a href="https://www.a1k.org/forum/index.php" class="exts">a1k.org Amiga board</a> for overhaul.</p>
<p>I also found that the pins of the power LED were broken off. The LED was held in place by a superglued plastic plug. It was impossible to remove without force. The replacement power LED was just hanging loosely in the case.</p>
<p><span class="ci-image"><a href="/cilla/page/496/led1.jpg" data-fancybox="ipg-50930212" data-caption="The power LED, with the legs broken off. I couldn't pull it out."><img src="/cilla/page/496/thumb/led1.jpg" srcset="/cilla/page/496/thumb-2x/led1.jpg 2x,/cilla/page/496/thumb-3x/led1.jpg 3x,/cilla/page/496/thumb-4x/led1.jpg 4x" class="rounded img-fluid" alt="The power LED, with the legs broken off. I couldn't pull it out." /></a></span> <span class="ci-image"><a href="/cilla/page/496/led2.jpg" data-fancybox="ipg-50930212" data-caption="The replacement LED."><img src="/cilla/page/496/thumb/led2.jpg" srcset="/cilla/page/496/thumb-2x/led2.jpg 2x,/cilla/page/496/thumb-3x/led2.jpg 3x,/cilla/page/496/thumb-4x/led2.jpg 4x" class="rounded img-fluid" alt="The replacement LED." /></a></span></p>
<p>Let's dig deeper. The computer consists of two boards. The lower board is the PC compatible, with three <a href="https://en.wikipedia.org/wiki/XT_bus_architecture" class="wp">XT bus</a> slots, a socket for the FPU, and eight sockets for another 256 KB of RAM. The upper board serves as a bridge between the Amiga and PC side. Both boards are connected by two flat ribbon cables.</p>
<p>At the first glance, the upper board looked dirty, but otherwise okay. On the bottom side there are a lot of bodge wires, additional resistors, and cut traces. At first I thought that this modification had been done by the previous owner, but then I found similar photos on the internet, so it seems to be a standard post-production factory fix.</p>
<p><span class="ci-image"><a href="/cilla/page/496/upper1.jpg" data-fancybox="ipg-50930212" data-caption="The upper &quot;bridge&quot; board."><img src="/cilla/page/496/thumb/upper1.jpg" srcset="/cilla/page/496/thumb-2x/upper1.jpg 2x,/cilla/page/496/thumb-3x/upper1.jpg 3x,/cilla/page/496/thumb-4x/upper1.jpg 4x" class="rounded img-fluid" alt="The upper "bridge" board." /></a></span> <span class="ci-image"><a href="/cilla/page/496/upper3.jpg" data-fancybox="ipg-50930212" data-caption="The bottom side shows many hardware modifications."><img src="/cilla/page/496/thumb/upper3.jpg" srcset="/cilla/page/496/thumb-2x/upper3.jpg 2x,/cilla/page/496/thumb-3x/upper3.jpg 3x,/cilla/page/496/thumb-4x/upper3.jpg 4x" class="rounded img-fluid" alt="The bottom side shows many hardware modifications." /></a></span></p>
<p>Then I found that six 74HC245 bus drivers had been replaced with 74LS245 ones. The replacement was a little "creative". The old chips were cut off the board leg by leg, and the new chips were then soldered to the remains of the old legs. This was certainly not factory-made.</p>
<p>On the one hand, I was glad that the previous owner did not try to unsolder the chips, as he could have damaged the board. On the other hand, it looked very DIY, so I decided to clean up the mess later.</p>
<p><span class="ci-image"><a href="/cilla/page/496/upper2.jpg" data-fancybox="ipg-50930212" data-caption="The driver chips, just soldered onto the board."><img src="/cilla/page/496/thumb/upper2.jpg" srcset="/cilla/page/496/thumb-2x/upper2.jpg 2x,/cilla/page/496/thumb-3x/upper2.jpg 3x,/cilla/page/496/thumb-4x/upper2.jpg 4x" class="rounded img-fluid" alt="The driver chips, just soldered onto the board." /></a></span></p>
<p>Replacing the 74HC245 with 74LS245 turned out to be a common fix to make the Sidecar more compatible with Amiga memory expansions. I decided to keep the 74LS245, but to use sockets so that it would be easy to undo this modification.</p>
<p>I also found that the Zorro connector was unfortunately damaged beyond repair. Two pins were broken off and another one was bent so it could cause a short.</p>
<p><span class="ci-image"><a href="/cilla/page/496/upper4.jpg" data-fancybox="ipg-50930212" data-caption="Closeup of the damaged Zorro connector."><img src="/cilla/page/496/thumb/upper4.jpg" srcset="/cilla/page/496/thumb-2x/upper4.jpg 2x,/cilla/page/496/thumb-3x/upper4.jpg 3x,/cilla/page/496/thumb-4x/upper4.jpg 4x" class="rounded img-fluid" alt="Closeup of the damaged Zorro connector." /></a></span></p>
<p>It was impossible to find a replacement 88-pin edge connector that could also be riveted to the board, but I did find a new connector of the correct size but without the rivet holes.</p>
<p>The lower board was even dirtier, but otherwise seemed to be unmodified and undamaged. The buzzer, however, was rusted, so I would have to replace it.</p>
<p><span class="ci-image"><a href="/cilla/page/496/lower1.jpg" data-fancybox="ipg-50930212" data-caption="The lower &quot;PC&quot; board, dirty but otherwise okay."><img src="/cilla/page/496/thumb/lower1.jpg" srcset="/cilla/page/496/thumb-2x/lower1.jpg 2x,/cilla/page/496/thumb-3x/lower1.jpg 3x,/cilla/page/496/thumb-4x/lower1.jpg 4x" class="rounded img-fluid" alt="The lower "PC" board, dirty but otherwise okay." /></a></span></p>
<p>In the end, there is a lot of work to be done:</p>
<ul>
<li>Clean the case, remove the rust, replace all screws</li>
<li>Fix the power LED</li>
<li>PSU overhaul</li>
<li>Replacing all electrolytic caps, the buzzer, and the Zorro connector</li>
<li>Clean up the six bus drivers at the upper PCB</li>
<li>Find a new floppy drive</li>
</ul>
<p>More of this in the second part of this article!</p>2024-02-11T14:37:23ZAn Arabic Toast Rack
https://shred.zone/cilla/page/495/an-arabic-toast-rack.html
<p><span class="ci-image float-right"><a href="/cilla/page/495/0default.jpg" data-fancybox="ipg-a528d355" data-caption="The Sinclair ZX Spectrum+ 128K &quot;Toast Rack&quot;"><img src="/cilla/page/495/maxi/0default.jpg" srcset="/cilla/page/495/maxi-2x/0default.jpg 2x,/cilla/page/495/maxi-3x/0default.jpg 3x,/cilla/page/495/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="The Sinclair ZX Spectrum+ 128K "Toast Rack"" /></a></span> This time, I have a true curiosity for you. 🙂</p>
<p>It's a ZX Spectrum 128K. It was designed by Sinclair and their Spanish distributor Investrónica, and was a major upgrade of the ZX Spectrum 48K. At that time, the 48K model was rather outdated with its limited RAM and the simple sound beeper, and Sinclair had nothing in its hand to compete with the Commodore 64 which was gaining ground in more and more households.</p>
<p>The 128K model has 128K of RAM (which also allowed <a href="https://en.wikipedia.org/wiki/Double_buffering#Page_flipping" class="wp">double buffering</a>), an AY-3-8912 sound chip, an RGB monitor port, a serial port and an optional external numerical keypad. Hardware sprites are still missing though. On software side, it provides a heavily improved BASIC.</p>
<p>The shape of the prominent heat sink on the right side of the case gave the machine its nickname: "Toast Rack".</p>
<p>The model was first sold in Spain, as Sinclair UK still had a large number of unsold 48K models. In the end it could not save Sinclair from bankruptcy, but the 128K model was certainly very attractive for the new owner Amstrad. Today, the <em>Toast Rack</em> is a sought-after item for any serious Sinclair collector.</p>
<p>What makes this special model so curious is that it is an Arabic modification. 😀 There are stickers with Arabic letters on the keyboard, and at the front side there is a switch to select between the original 128K ROM and an Arabic version of the 48K ROM.</p>
<p><span class="ci-image"><a href="/cilla/page/495/keyboard.jpg" data-fancybox="ipg-a528d355" data-caption="The stickers with Arabic letters on the keyboard."><img src="/cilla/page/495/thumb/keyboard.jpg" srcset="/cilla/page/495/thumb-2x/keyboard.jpg 2x,/cilla/page/495/thumb-3x/keyboard.jpg 3x,/cilla/page/495/thumb-4x/keyboard.jpg 4x" class="rounded img-fluid" alt="The stickers with Arabic letters on the keyboard." /></a></span> <span class="ci-image"><a href="/cilla/page/495/side.jpg" data-fancybox="ipg-a528d355" data-caption="The front side with the switch, and a hand-written inscript &quot;A gift of the Alumni Association&quot;."><img src="/cilla/page/495/thumb/side.jpg" srcset="/cilla/page/495/thumb-2x/side.jpg 2x,/cilla/page/495/thumb-3x/side.jpg 3x,/cilla/page/495/thumb-4x/side.jpg 4x" class="rounded img-fluid" alt="The front side with the switch, and a hand-written inscript "A gift of the Alumni Association"." /></a></span></p>
<p>My first thought was that this was an elaborate DIY modification. But then I found <a href="https://www.sinclairzxworld.com/viewtopic.php?p=50708#p50708" class="exts">a thread in a Sinclair forum</a>. It says that Matsico, a Sinclair/Amstrad agency in Egypt, has produced these models. I could not find more information about it though, so I don't know if they were actually sold, or just made as a proof-of-concept or promotional gift.</p>
<p>What they all have in common, is the switch at the front, and an EPROM soldered on top of the ROM. The only known exception I found in <a href="https://youtu.be/s3HxJPz6T-s" class="yt">a video by ByteDelight</a> about a ZX Spectrum +3, where the ROM could be selected via a separate boot menu.</p>
<p><span class="ci-image"><a href="/cilla/page/495/board.jpg" data-fancybox="ipg-a528d355" data-caption="Inside is an Issue 6U board."><img src="/cilla/page/495/thumb/board.jpg" srcset="/cilla/page/495/thumb-2x/board.jpg 2x,/cilla/page/495/thumb-3x/board.jpg 3x,/cilla/page/495/thumb-4x/board.jpg 4x" class="rounded img-fluid" alt="Inside is an Issue 6U board." /></a></span> <span class="ci-image"><a href="/cilla/page/495/eprom.jpg" data-fancybox="ipg-a528d355" data-caption="The EPROM with the Arabic version is soldered on top of the original ROM, presumably for license reasons."><img src="/cilla/page/495/thumb/eprom.jpg" srcset="/cilla/page/495/thumb-2x/eprom.jpg 2x,/cilla/page/495/thumb-3x/eprom.jpg 3x,/cilla/page/495/thumb-4x/eprom.jpg 4x" class="rounded img-fluid" alt="The EPROM with the Arabic version is soldered on top of the original ROM, presumably for license reasons." /></a></span></p>
<h2 id="restoration">Restoration</h2>
<p>A first diagnostics run showed that the board was working fine. The only issues were massive picture interferences, and an almost inaudible sound from the AY chip.</p>
<p><span class="ci-image"><a href="/cilla/page/495/128k-diag.png" data-fancybox="ipg-a528d355" data-caption=""><img src="/cilla/page/495/thumb/128k-diag.png" srcset="/cilla/page/495/thumb-2x/128k-diag.png 2x,/cilla/page/495/thumb-3x/128k-diag.png 3x,/cilla/page/495/thumb-4x/128k-diag.png 4x" class="rounded img-fluid" alt="" /></a></span></p>
<p>Both issues are known problems with that model. A blog article by <a href="https://retrorepairsandrefurbs.com/2021/06/16/sinclair-zx-spectrum-128k-toastrack-restoration/" class="exts">Adam's Vintage Computer Restorations</a> addresses them.</p>
<p>First of all, I replaced all electrolytic capacitors with premium ones. I'm doing that with all retro machines, irregarding their age and rareness. However I try my best to maintain the "retro optics", for example by using axial caps in that classic blue color.</p>
<p>To enhance the image quality, I used a 47µF electrolytic cap for C28 (original was 22µF), and replaced C7 and C8 with 1µF MLCCs. I could also rewire C126 as mentioned in the blog article, to enhance image quality even further, but I decided to postpone that.</p>
<p><span class="ci-image"><a href="/cilla/page/495/mod1.jpg" data-fancybox="ipg-a528d355" data-caption="C7 and C8 replaced with 1µF MLCCs. Unfortunately I could not source axial ones."><img src="/cilla/page/495/thumb/mod1.jpg" srcset="/cilla/page/495/thumb-2x/mod1.jpg 2x,/cilla/page/495/thumb-3x/mod1.jpg 3x,/cilla/page/495/thumb-4x/mod1.jpg 4x" class="rounded img-fluid" alt="C7 and C8 replaced with 1µF MLCCs. Unfortunately I could not source axial ones." /></a></span> <span class="ci-image"><a href="/cilla/page/495/mod3.jpg" data-fancybox="ipg-a528d355" data-caption="C28 replaced with 47µF."><img src="/cilla/page/495/thumb/mod3.jpg" srcset="/cilla/page/495/thumb-2x/mod3.jpg 2x,/cilla/page/495/thumb-3x/mod3.jpg 3x,/cilla/page/495/thumb-4x/mod3.jpg 4x" class="rounded img-fluid" alt="C28 replaced with 47µF." /></a></span></p>
<p>To raise the volume of the AY sound chip (so it has a similar level as the beeper), I replaced R115 with a 1.65kΩ resistor.</p>
<p><span class="ci-image"><a href="/cilla/page/495/mod2.jpg" data-fancybox="ipg-a528d355" data-caption="R115 replaced with 1.65kΩ."><img src="/cilla/page/495/thumb/mod2.jpg" srcset="/cilla/page/495/thumb-2x/mod2.jpg 2x,/cilla/page/495/thumb-3x/mod2.jpg 3x,/cilla/page/495/thumb-4x/mod2.jpg 4x" class="rounded img-fluid" alt="R115 replaced with 1.65kΩ." /></a></span></p>
<p>The 7805 voltage regulator is rated at 1A, and is working at its load limit on the 128K. This is the reason for the big heat sink on the right side. I replaced it with an 78S05, which is a drop-in replacement that is rated at 2A and stays considerably cooler.</p>
<p>I was lucky here, because in the past, someone had already replaced the 7805 with a LM1085. It is rated at 3A, but has a different pin configuration. If I had replaced it blindly, it would have killed the machine. You should always be prepared for nasty surprises when restoring old machines the previous owner already tinkered with!</p>
<p><span class="ci-image"><a href="/cilla/page/495/regulator.jpg" data-fancybox="ipg-a528d355" data-caption="The new 78S05 and a silicone heat conductor. Attention: The order of the wires has been arranged for the LM1085, the connector cannot be used like that for the 78S05!"><img src="/cilla/page/495/thumb/regulator.jpg" srcset="/cilla/page/495/thumb-2x/regulator.jpg 2x,/cilla/page/495/thumb-3x/regulator.jpg 3x,/cilla/page/495/thumb-4x/regulator.jpg 4x" class="rounded img-fluid" alt="The new 78S05 and a silicone heat conductor. Attention: The order of the wires has been arranged for the LM1085, the connector cannot be used like that for the 78S05!" /></a></span></p>
<p>I also cleaned the case (although it was already in a very clean state). The previous owner had already replaced the keyboard membrane, but the extra keys were not working there, so I replaced it with a new membrane of a known-good brand.</p>
<p><span class="ci-image"><a href="/cilla/page/495/restored.jpg" data-fancybox="ipg-a528d355" data-caption="The machine, recapped and modified."><img src="/cilla/page/495/thumb/restored.jpg" srcset="/cilla/page/495/thumb-2x/restored.jpg 2x,/cilla/page/495/thumb-3x/restored.jpg 3x,/cilla/page/495/thumb-4x/restored.jpg 4x" class="rounded img-fluid" alt="The machine, recapped and modified." /></a></span></p>
<p>The next diagnostics run showed that all tests were still green. Also the picture interferences were mostly gone (except of some minimal jailbars that I can live with), and the AY sound is much louder.</p>
<p><span class="ci-image"><a href="/cilla/page/495/128k-diag-fixed.png" data-fancybox="ipg-a528d355" data-caption=""><img src="/cilla/page/495/thumb/128k-diag-fixed.png" srcset="/cilla/page/495/thumb-2x/128k-diag-fixed.png 2x,/cilla/page/495/thumb-3x/128k-diag-fixed.png 3x,/cilla/page/495/thumb-4x/128k-diag-fixed.png 4x" class="rounded img-fluid" alt="" /></a></span></p>
<p>Depending on the position of the switch, the system either boots into the original ZX Spectrum 128K startup menu, or shows an Arabic boot prompt. In the Arabic version, the entire BASIC has been modified, with all texts in Arabic and written from right to left. Unfortunately I cannot read it.</p>
<p><span class="ci-image"><a href="/cilla/page/495/boot-128k.png" data-fancybox="ipg-a528d355" data-caption="The original ZX Spectrum 128K boot menu."><img src="/cilla/page/495/thumb/boot-128k.png" srcset="/cilla/page/495/thumb-2x/boot-128k.png 2x,/cilla/page/495/thumb-3x/boot-128k.png 3x,/cilla/page/495/thumb-4x/boot-128k.png 4x" class="rounded img-fluid" alt="The original ZX Spectrum 128K boot menu." /></a></span>
<span class="ci-image"><a href="/cilla/page/495/boot-arabic.png" data-fancybox="ipg-a528d355" data-caption="The boot prompt of the Arabic version: &quot;Presented by Matsico Company, Sinclair/Amstrad agency of Egypt. Prepared by Nabil Nazmi.&quot;"><img src="/cilla/page/495/thumb/boot-arabic.png" srcset="/cilla/page/495/thumb-2x/boot-arabic.png 2x,/cilla/page/495/thumb-3x/boot-arabic.png 3x,/cilla/page/495/thumb-4x/boot-arabic.png 4x" class="rounded img-fluid" alt="The boot prompt of the Arabic version: "Presented by Matsico Company, Sinclair/Amstrad agency of Egypt. Prepared by Nabil Nazmi."" /></a></span></p>
<p>A short test with the Dandanator module also showed that games are working fine. The mandatory part of the restoration is completed!</p>
<p><span class="ci-image"><a href="/cilla/page/495/ingame.png" data-fancybox="ipg-a528d355" data-caption="Screenshot of Cybernoid II."><img src="/cilla/page/495/thumb/ingame.png" srcset="/cilla/page/495/thumb-2x/ingame.png 2x,/cilla/page/495/thumb-3x/ingame.png 3x,/cilla/page/495/thumb-4x/ingame.png 4x" class="rounded img-fluid" alt="Screenshot of Cybernoid II." /></a></span></p>
<h2 id="freestyle-restoration">Freestyle Restoration</h2>
<p>There were two more things I didn't like.</p>
<p>First was the ROM stack. The original solution switched the Vcc pins of the ROMs, so one of the chips was always powerless, but still connected to the address and data bus. To be honest, I wonder why this was working at all.</p>
<p>Anyway, I replaced it with a single 27C512 EPROM. On the bottom half of the memory, I burned the Arabic ROM (twice), and on the upper half, I burned the original 128K ROM. After that, I modified the switch to pull the A15 address line (pin 1) either to GND or Vcc. This way, the EPROM is always powered and the desired operating system is selected by an address line. I also upgraded the original Arabic ROM version 1 to the latest version 3.1 I could find on the web.</p>
<p>Of course I will keep the ROM stack. Mainly for licensing reasons, but also so that the original solution can be restored if desired.</p>
<p><span class="ci-image"><a href="/cilla/page/495/new-eprom.jpg" data-fancybox="ipg-a528d355" data-caption="New single-EPROM solution."><img src="/cilla/page/495/thumb/new-eprom.jpg" srcset="/cilla/page/495/thumb-2x/new-eprom.jpg 2x,/cilla/page/495/thumb-3x/new-eprom.jpg 3x,/cilla/page/495/thumb-4x/new-eprom.jpg 4x" class="rounded img-fluid" alt="New single-EPROM solution." /></a></span></p>
<p>I also didn't like the optics of the naked switch at the front, so I 3D-printed a small switch cap that also covers the screws.</p>
<p><span class="ci-image"><a href="/cilla/page/495/switch-before.jpg" data-fancybox="ipg-a528d355" data-caption=""><img src="/cilla/page/495/thumb/switch-before.jpg" srcset="/cilla/page/495/thumb-2x/switch-before.jpg 2x,/cilla/page/495/thumb-3x/switch-before.jpg 3x,/cilla/page/495/thumb-4x/switch-before.jpg 4x" class="rounded img-fluid" alt="" /></a></span> <span class="ci-image"><a href="/cilla/page/495/switch-after.jpg" data-fancybox="ipg-a528d355" data-caption=""><img src="/cilla/page/495/thumb/switch-after.jpg" srcset="/cilla/page/495/thumb-2x/switch-after.jpg 2x,/cilla/page/495/thumb-3x/switch-after.jpg 3x,/cilla/page/495/thumb-4x/switch-after.jpg 4x" class="rounded img-fluid" alt="" /></a></span></p>
<p>There are a few more things that could be done:</p>
<ul>
<li>I could also rewire C126 (as mentioned in Adam's blog article above), to remove the sound signal from the RGB output.</li>
<li>Due to a bug in the original PAL10H8, the system crashes just by reading the $7FFD port address. <a href="https://velesoft.speccy.cz/zx/umbrella/umbrella.htm" class="exts">There is a fix</a> that also removes a "rain" effect caused by refresh data on the bus.</li>
<li>The original ULA can be replaced with a <a href="https://www.vretrodesign.com/products/vla128-sinclair-128k-2grey-ula-replacement" class="exts">vLA128</a>, as a replacement if broken, or if the precious original part should be conserved.</li>
<li>Dave Curran <a href="http://blog.tynemouthsoftware.co.uk/2016/11/spanish-spectrum-128k-keypad.html" class="ext">reverse engineered the numeric keypad</a>. An ambitious tinkerer could make a DIY keypad replica.</li>
</ul>2024-01-12T13:42:45ZCompetition Pro Mini refurbishment
https://shred.zone/cilla/page/494/competition-pro-mini-refurbishment.html
<p>I recently got two Competition Pro Mini joysticks. The full-size Competition Pro was probably one of the most famous joysticks back in the 1980s and early 1990s. This model was said to be unbreakable, and was able to withstand even long and intensive gaming sessions. If one of the microswitches eventually failed, it was easy to get a new one from an electronics store and replace it just by using a screwdriver, no soldering required.</p>
<p>The Mini models came to the market in 1992, and were by far not that robust. My two examples had broken microswitches at the left direction. The microswitches are soldered to the PCB, and they are also out of production.</p>
<p>The closest available replacement is the Saia-Burgess F4T7UL and F4T7GPUL (the latter one with gold-plated contacts). Unfortunately it has different solder tails, so it cannot be used as a drop-in replacment.</p>
<p><span class="ci-image"><a href="/cilla/page/494/problem.jpg" data-fancybox="ipg-9b476407" data-caption="Left: The original microswitch. Right: The Saia-Burgess F4T7GPUL, with shorter solder tails."><img src="/cilla/page/494/thumb/problem.jpg" srcset="/cilla/page/494/thumb-2x/problem.jpg 2x,/cilla/page/494/thumb-3x/problem.jpg 3x,/cilla/page/494/thumb-4x/problem.jpg 4x" class="rounded img-fluid" alt="Left: The original microswitch. Right: The Saia-Burgess F4T7GPUL, with shorter solder tails." /></a></span></p>
<p>I decided to build up a <a href="https://github.com/InsaneDruid/CompetitionProStarMini" class="exts">completely new PCB</a> by <em>InsaneDruid</em> instead. It is a replica board with exactly the same size and fuctionality, but it is prepared to use the Saia-Burgess switches.</p>
<h2 id="auto-fire-model">Auto-fire Model</h2>
<p>The first thing I did was to completely disassemble the joystick. All plastic parts were cleaned in an ultrasonic bath. Meanwhile I noted the color order of the wires before cutting the cable from the old board.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy1-start.jpg" data-fancybox="ipg-9b476407" data-caption="The individual parts of the joystick."><img src="/cilla/page/494/thumb/joy1-start.jpg" srcset="/cilla/page/494/thumb-2x/joy1-start.jpg 2x,/cilla/page/494/thumb-3x/joy1-start.jpg 3x,/cilla/page/494/thumb-4x/joy1-start.jpg 4x" class="rounded img-fluid" alt="The individual parts of the joystick." /></a></span></p>
<p>The new board only needs very few components. Except of the switches, all of them are standard ones that can be found in any electronic store. The switches can be found at distributors like Mouser.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy1-parts.jpg" data-fancybox="ipg-9b476407" data-caption="The replica PCB and all required components."><img src="/cilla/page/494/thumb/joy1-parts.jpg" srcset="/cilla/page/494/thumb-2x/joy1-parts.jpg 2x,/cilla/page/494/thumb-3x/joy1-parts.jpg 3x,/cilla/page/494/thumb-4x/joy1-parts.jpg 4x" class="rounded img-fluid" alt="The replica PCB and all required components." /></a></span></p>
<p>For the four directions, I first mounted the microswitches to the holder frame. This way it will be easier to perfectly align the switches to the PCB.</p>
<p>For the fire buttons, the middle solder tail needs to be cut off. Otherwise it will collide with a peg of the bottom case shell later.</p>
<p><span class="ci-image"><a href="/cilla/page/494/prep1.jpg" data-fancybox="ipg-9b476407" data-caption="The four directional switches are mounted to the frame using the four shorter original screws. Check the correct position of the plungers, and make sure the switches are lying flush to the frame."><img src="/cilla/page/494/thumb/prep1.jpg" srcset="/cilla/page/494/thumb-2x/prep1.jpg 2x,/cilla/page/494/thumb-3x/prep1.jpg 3x,/cilla/page/494/thumb-4x/prep1.jpg 4x" class="rounded img-fluid" alt="The four directional switches are mounted to the frame using the four shorter original screws. Check the correct position of the plungers, and make sure the switches are lying flush to the frame." /></a></span>
<span class="ci-image"><a href="/cilla/page/494/prep2.jpg" data-fancybox="ipg-9b476407" data-caption="For the two fire buttons, the middle solder tails need to be cut off."><img src="/cilla/page/494/thumb/prep2.jpg" srcset="/cilla/page/494/thumb-2x/prep2.jpg 2x,/cilla/page/494/thumb-3x/prep2.jpg 3x,/cilla/page/494/thumb-4x/prep2.jpg 4x" class="rounded img-fluid" alt="For the two fire buttons, the middle solder tails need to be cut off." /></a></span>
<span class="ci-image"><a href="/cilla/page/494/prep3.jpg" data-fancybox="ipg-9b476407" data-caption="It would collide with a peg of the bottom shell."><img src="/cilla/page/494/thumb/prep3.jpg" srcset="/cilla/page/494/thumb-2x/prep3.jpg 2x,/cilla/page/494/thumb-3x/prep3.jpg 3x,/cilla/page/494/thumb-4x/prep3.jpg 4x" class="rounded img-fluid" alt="It would collide with a peg of the bottom shell." /></a></span></p>
<p>Usually we would start with the flattest component, but in this case, I recommend to start with the four direction switches. Position them to the frame so the four screws are perfectly aligned with the corresponding PCB holes. Make sure that the two LED holes are aligned to the "up" direction. Then start soldering the switches to the PCB, using a generous amount of solder.</p>
<p>Additionally you can use wire brackets to secure the switches using the provided mounting holes. I was too lazy to do that though.</p>
<p><span class="ci-image"><a href="/cilla/page/494/prep4.jpg" data-fancybox="ipg-9b476407" data-caption="The four switches are soldered to the upper side of the PCB. You can use wire brackets for additional securing."><img src="/cilla/page/494/thumb/prep4.jpg" srcset="/cilla/page/494/thumb-2x/prep4.jpg 2x,/cilla/page/494/thumb-3x/prep4.jpg 3x,/cilla/page/494/thumb-4x/prep4.jpg 4x" class="rounded img-fluid" alt="The four switches are soldered to the upper side of the PCB. You can use wire brackets for additional securing." /></a></span>
<span class="ci-image"><a href="/cilla/page/494/prep5.jpg" data-fancybox="ipg-9b476407" data-caption="The bottom side, with the four screw heads centered in their PCB holes."><img src="/cilla/page/494/thumb/prep5.jpg" srcset="/cilla/page/494/thumb-2x/prep5.jpg 2x,/cilla/page/494/thumb-3x/prep5.jpg 3x,/cilla/page/494/thumb-4x/prep5.jpg 4x" class="rounded img-fluid" alt="The bottom side, with the four screw heads centered in their PCB holes." /></a></span></p>
<p>The remaining components are just soldered to the board. Finally the original cable is wired to the board, with the original order of wire colors.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy1-complete.jpg" data-fancybox="ipg-9b476407" data-caption="The completed joystick board."><img src="/cilla/page/494/thumb/joy1-complete.jpg" srcset="/cilla/page/494/thumb-2x/joy1-complete.jpg 2x,/cilla/page/494/thumb-3x/joy1-complete.jpg 3x,/cilla/page/494/thumb-4x/joy1-complete.jpg 4x" class="rounded img-fluid" alt="The completed joystick board." /></a></span></p>
<p>After that, the joystick is ready for reassembly.</p>
<h2 id="standard-model">Standard Model</h2>
<p>My other joystick is a standard model without auto-fire function. Again, I disassembled it. All plastic parts were cleaned, while I noted down the color order of the wires.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy2-start.jpg" data-fancybox="ipg-9b476407" data-caption="The standard model, disassembled (before cleaning)."><img src="/cilla/page/494/thumb/joy2-start.jpg" srcset="/cilla/page/494/thumb-2x/joy2-start.jpg 2x,/cilla/page/494/thumb-3x/joy2-start.jpg 3x,/cilla/page/494/thumb-4x/joy2-start.jpg 4x" class="rounded img-fluid" alt="The standard model, disassembled (before cleaning)." /></a></span></p>
<p>The cable of this model does not provide a +5V supply. For this reason, there is no need to populate the components for the auto-fire. We can also save the LEDs, as they won't light up.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy2-parts.jpg" data-fancybox="ipg-9b476407" data-caption="The standard model needs considerably less components: Just six switches, and a short piece of wire."><img src="/cilla/page/494/thumb/joy2-parts.jpg" srcset="/cilla/page/494/thumb-2x/joy2-parts.jpg 2x,/cilla/page/494/thumb-3x/joy2-parts.jpg 3x,/cilla/page/494/thumb-4x/joy2-parts.jpg 4x" class="rounded img-fluid" alt="The standard model needs considerably less components: Just six switches, and a short piece of wire." /></a></span></p>
<p>The preparation is the same as for the other joystick. The four direction switches are mounted to the frame, and the two fire switches lose their middle solder tail. After that, the frame with the switches is aligned and soldered to the board, followed by the fire switches.</p>
<p>We do not need to populate the mode switch. However, we need to solder in a wire bridge to pins 5 and 7 (see photo), otherwise the fire buttons won't work at all.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy2-bridge.jpg" data-fancybox="ipg-9b476407" data-caption="Bridge pins 5 and 7 with the wire."><img src="/cilla/page/494/thumb/joy2-bridge.jpg" srcset="/cilla/page/494/thumb-2x/joy2-bridge.jpg 2x,/cilla/page/494/thumb-3x/joy2-bridge.jpg 3x,/cilla/page/494/thumb-4x/joy2-bridge.jpg 4x" class="rounded img-fluid" alt="Bridge pins 5 and 7 with the wire." /></a></span></p>
<p>The wires need a different order. On the original board, the "fire" signal is at the third position from the right (the orange wire on my joystick). On the new board, that signal is on the very right pad. The one left from it stays empty. For the remaining wires, the original order can be kept.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy2-wire-original.jpg" data-fancybox="ipg-9b476407" data-caption="The original wiring. Your colors may be different."><img src="/cilla/page/494/thumb/joy2-wire-original.jpg" srcset="/cilla/page/494/thumb-2x/joy2-wire-original.jpg 2x,/cilla/page/494/thumb-3x/joy2-wire-original.jpg 3x,/cilla/page/494/thumb-4x/joy2-wire-original.jpg 4x" class="rounded img-fluid" alt="The original wiring. Your colors may be different." /></a></span>
<span class="ci-image"><a href="/cilla/page/494/joy2-wire-new.jpg" data-fancybox="ipg-9b476407" data-caption="The wiring of the new board, with the orange wire to the right."><img src="/cilla/page/494/thumb/joy2-wire-new.jpg" srcset="/cilla/page/494/thumb-2x/joy2-wire-new.jpg 2x,/cilla/page/494/thumb-3x/joy2-wire-new.jpg 3x,/cilla/page/494/thumb-4x/joy2-wire-new.jpg 4x" class="rounded img-fluid" alt="The wiring of the new board, with the orange wire to the right." /></a></span></p>
<p>After that, this board is completed as well, and the joystick can be reassembled.</p>
<p><span class="ci-image"><a href="/cilla/page/494/joy2-complete.jpg" data-fancybox="ipg-9b476407" data-caption="The completed standard joystick board."><img src="/cilla/page/494/thumb/joy2-complete.jpg" srcset="/cilla/page/494/thumb-2x/joy2-complete.jpg 2x,/cilla/page/494/thumb-3x/joy2-complete.jpg 3x,/cilla/page/494/thumb-4x/joy2-complete.jpg 4x" class="rounded img-fluid" alt="The completed standard joystick board." /></a></span></p>
<p>The joysticks look as good as new now, with their clean case and their brand new boards.</p>
<p><span class="ci-image"><a href="/cilla/page/494/0default.jpg" data-fancybox="ipg-9b476407" data-caption="The refurbished transparent green and transparent white Competition Pro Minis."><img src="/cilla/page/494/maxi/0default.jpg" srcset="/cilla/page/494/maxi-2x/0default.jpg 2x,/cilla/page/494/maxi-3x/0default.jpg 3x,/cilla/page/494/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="The refurbished transparent green and transparent white Competition Pro Minis." /></a></span></p>
<p>The ENIG plated PCBs are a true eye-catcher in their transparent cases.</p>2023-12-14T16:15:01ZGoodbye Blue Bird
https://shred.zone/cilla/page/493/goodbye-blue-bird.html
<p><span class="ci-image float-right"><img src="/cilla/page/493/thumb/0default.jpg" srcset="/cilla/page/493/thumb-2x/0default.jpg 2x,/cilla/page/493/thumb-3x/0default.jpg 3x,/cilla/page/493/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="" /></span> After being on Twitter for 13 years, I decided that it is time to leave the platform for good. They say you should always leave on a high note. Maybe I have missed that moment already.</p>
<p>Today I have closed my account there. My handle was <code>shred_</code> (with a trailing underscore).</p>
<p>You can follow me in the Fediverse: <a href="https://oldbytes.space/@shred" class="exts">@shred@oldbytes.space</a></p>
<p>Thank you, blue bird! I have learned a lot from you and met a lot of great and interesting people. It was fun while it lasted.</p>
<p>PS: I have no plans to join other social media platforms. No need to send me invite codes. 😉</p>2023-10-11T16:00:00ZCD32 Refurbishment, Part 2
https://shred.zone/cilla/page/492/cd32-refurbishment-part-2.html
<p>In the <a href="/cilla/page/491/cd32-refurbishment-part-1.html">first part</a> I successfully repaired an Amiga CD32 that got broken due to leaking capacitors and a botched restauration attempt. In this part I replace the laser pickup and calibrate the CD drive.</p>
<p>The old laser pickup of the CD32 might be worn out due to age and use. A common symptom is that the CD32 is unable to play CD-R media, or it is only capable of playing music CDs. There is no way to make the CD32 accept CD-RW media though, since they use a dye instead of pits that reflect too little light.</p>
<p>But before we start, read this:</p>
<blockquote>
<p><strong>CAUTION:</strong> The laser pickup is very sensitive to <abbr title="Electro-Static Discharge">ESD</abbr>. Use protective measures (such as an antistatic wrist band).</p>
<p>Make sure that the laser is always covered when the machine is turned on. <strong>Do not look into the laser beam.</strong></p>
</blockquote>
<p>I should also mention that I am not a trained technician. I have read manuals about how to calibrate CD drives, and it has worked for me. However, I don't claim that this is the best or most professional way to do a calibration.</p>
<p>You will need a soldering iron for the pickup replacement, and you will definitely need a scope for calibration. The drive might work without calibration after replacing the pickup, but the result will not be optimal.</p>
<h2 id="pickup-replacement">Pickup Replacement</h2>
<p>I started with disassembling the CD drive. I removed it from the case. Then I carefully disconnected the pickup and the motor unit, and removed the four screws that hold the pickup frame. There is a metal shield covering the pickup that needs to be removed as well.</p>
<p><span class="ci-image"><a href="/cilla/page/492/0default.jpg" data-fancybox="ipg-7d5dd4e0" data-caption="The frame with the laser pickup, spindle motor, and tracking mechanics."><img src="/cilla/page/492/thumb/0default.jpg" srcset="/cilla/page/492/thumb-2x/0default.jpg 2x,/cilla/page/492/thumb-3x/0default.jpg 3x,/cilla/page/492/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="The frame with the laser pickup, spindle motor, and tracking mechanics." /></a></span></p>
<p>The laser pickup unit is a Sony KSS210A. It is long out of production, but replicas are sold at online marketplaces for a few bucks. To remove the old pickup, I first removed the white cog wheel, then I pulled out the metal rod (it is secured by a plastic clip that can be pushed to the side). Since I was on it, I cleaned the old grease from rod and the cog wheels, and applied a bit of fresh silicone grease. After that, I mounted the new pickup and reassembled the CD drive just in the opposite order of disassembly.</p>
<p>After the new pickup unit has been connected to the controller, <strong>a solder blob on the pickup unit must be removed!</strong> It protects the laser from ESD, but will damage the drive controller if it is still there when powering on the drive.</p>
<p><span class="ci-image"><a href="/cilla/page/492/cd2.jpg" data-fancybox="ipg-7d5dd4e0" data-caption="Closeup of the pickup module, with the solder blob on the top right."><img src="/cilla/page/492/thumb/cd2.jpg" srcset="/cilla/page/492/thumb-2x/cd2.jpg 2x,/cilla/page/492/thumb-3x/cd2.jpg 3x,/cilla/page/492/thumb-4x/cd2.jpg 4x" class="rounded img-fluid" alt="Closeup of the pickup module, with the solder blob on the top right." /></a></span></p>
<p>If you want to keep the old pickup module as a backup, you can also apply a solder blob there before disconnecting it.</p>
<h2 id="preparation">Preparation</h2>
<p>For calibration, I opened the metal shield of the drive controller, and found a surprise underneath. There was a tiny board glued to the main PCB, and connected to some points with seven wires:</p>
<p><span class="ci-image"><a href="/cilla/page/492/cd1.jpg" data-fancybox="ipg-7d5dd4e0" data-caption="A tiny modification board is glued and connected to the PCB."><img src="/cilla/page/492/thumb/cd1.jpg" srcset="/cilla/page/492/thumb-2x/cd1.jpg 2x,/cilla/page/492/thumb-3x/cd1.jpg 3x,/cilla/page/492/thumb-4x/cd1.jpg 4x" class="rounded img-fluid" alt="A tiny modification board is glued and connected to the PCB." /></a></span></p>
<p>I first thought this could be some kind of mod to circumvent copy protection measures, but then again, the CD32 does not have a sophisticated copy protection scheme. Later I found the answer <a href="https://youtu.be/RbKNtb0xhYo" class="yt">in a YouTube video</a>: This modification immediately cuts the power from the laser and the spindle motor when the lid of the CD drive is opened. I could find many photos of the controller board without the modification, so I guess that it was a product safety requirement for selling the CD32 on the German or European market.</p>
<p>Okay, let's get back to the calibration. As a preparation, I first soldered wires to the <code>VF</code>, <code>RFO</code>, <code>TEO-1</code>, and <code>FEO-1</code> test points. I recommend to use wires of different colors, it makes the calibration much easier. Unfortunately I only had red wire at hand, so I had to check each time which wire went where.</p>
<p><span class="ci-image"><a href="/cilla/page/492/cd3.jpg" data-fancybox="ipg-7d5dd4e0" data-caption="Wires are soldered to the VF, RFO, TEO-1, and FEO-1 test points."><img src="/cilla/page/492/thumb/cd3.jpg" srcset="/cilla/page/492/thumb-2x/cd3.jpg 2x,/cilla/page/492/thumb-3x/cd3.jpg 3x,/cilla/page/492/thumb-4x/cd3.jpg 4x" class="rounded img-fluid" alt="Wires are soldered to the VF, RFO, TEO-1, and FEO-1 test points." /></a></span></p>
<p>After that, I noted down the current settings of the four pots on the controller board, and of the pot on the laser module, using an ohmmeter. If I should mess up the calibration for some reason, I could always go back to these settings. (A photo of the pot positions is not sufficient, as very tiny changes can already make a huge difference.)</p>
<p><span class="ci-image"><a href="/cilla/page/492/cd4.jpg" data-fancybox="ipg-7d5dd4e0" data-caption="The four pots for calibration are on the side of the controller. See the silkscreen for which pot does what."><img src="/cilla/page/492/thumb/cd4.jpg" srcset="/cilla/page/492/thumb-2x/cd4.jpg 2x,/cilla/page/492/thumb-3x/cd4.jpg 3x,/cilla/page/492/thumb-4x/cd4.jpg 4x" class="rounded img-fluid" alt="The four pots for calibration are on the side of the controller. See the silkscreen for which pot does what." /></a></span></p>
<p>For the calibration, the drive needs to be connected to the mainboard again. The case top (with the LEDs, reset button etc) needs to be connected as well, since the CD32 won't attempt to read the CD unless the drive lid is closed. The laser pickup is moving during operation, and should have sufficient room for that.</p>
<p>To fix the CD to the spindle, I removed the spindle clamp from the inside of the lid, and used a bit of tape to keep the loose part fixed in the center of it. It is held to the spindle with a magnet, and ensures that the CD won't slip on the spindle.</p>
<h2 id="calibration">Calibration</h2>
<p>The calibration process is explained <a href="https://www.tsb.space/knowledge-base/amiga-cd32-laser-calibration-replace-laser-pickup-procedure/" class="exts">in this blog article</a> by TSB. My attempts to explain it would be far worse. 😉</p>
<p>However, it turned out that on my drive, the process didn't work like that. After doing the first steps of the calibration, my drive was suddenly unable to spin up the CD for reading. I was lucky that I noted the pot positions (like recommended above), so I could revert to the original settings and start anew.</p>
<p>Then I first calibrated the <code>TEB</code> pot until there was approximately 0 mV between <code>TEO-1</code> and <code>VF</code>. The drive was still working after that. However, after I calibrated <code>FEB</code> like documented, the drive stopped working, so I reverted that change again and moved on with calibrating the laser power.</p>
<blockquote>
<p><strong>CAUTION:</strong> Be <strong>very</strong> careful with the pot on the laser module and <strong>only turn it in very small increments</strong>. Otherwise the laser may be permanently damaged.</p>
<p>There is a drop of varnish on the pot from production that may require some force to break, so it might be a good idea to first turn the pot while the device is powered off, and then use an ohmmeter to return it to the factory setting that you previously noted.</p>
</blockquote>
<p>To calibrate the laser power, I connected my scope to <code>RFO</code> and ground. Then I put a music CD on the spindle and started playing track 1. The scope should now show a so-called "eye pattern":</p>
<p><span class="ci-image"><img src="/cilla/page/492/scope.png" class="rounded img-fluid" alt="" /></span></p>
<p>The tricky part is to turn the pot on the pickup module carefully while the CD is playing. I turned it very carefully until I reached a peak-to-peak voltage of about 900 mV. Take care never to exceed 1200 mV!</p>
<p>After that, I adjusted the <code>FEB</code> pot on the controller board until I reached a maximum amplitude on the eye pattern.</p>
<p>The last two pots, <code>FEG</code> and <code>TEG</code>, are calibrated by scoping the <code>FEO-1</code> and <code>TEO-1</code> test points against ground, respectively. The drive should play track 1 of an audio CD and should be in pause mode while calibrating.</p>
<p>I tried to find the sweet spot where the signal on the scope was as smooth as possible, and the correction noise from the optics was as silent as possible. There is a trade-off between these goals, and I found that the best results came from listening to the pickup noise and using my intuition.</p>
<p>The calibration is complete after that, and the CD32 can be assembled again.</p>
<p>One final tip: burn CD-Rs for your CD32 at the lowest speed supported by your recorder. This will increase the contrast of the data on the CD. Also, prefer CD-Rs that are not transparent when held up to the light.</p>2023-08-17T17:10:01ZCD32 Refurbishment, Part 1
https://shred.zone/cilla/page/491/cd32-refurbishment-part-1.html
<p><span class="ci-image float-right"><a href="/cilla/page/491/0default.jpg" data-fancybox="ipg-70d5790e" data-caption="An Amiga CD³² Game Console in good condition."><img src="/cilla/page/491/maxi/0default.jpg" srcset="/cilla/page/491/maxi-2x/0default.jpg 2x,/cilla/page/491/maxi-3x/0default.jpg 3x,/cilla/page/491/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="An Amiga CD³² Game Console in good condition." /></a></span> I found this CD32 for a fair price, and bought it. The optical condition of the case is quite okay. It has some visible scratchmarks. The previous owner tried to fix them, but made it even worse. At that time, I wasn't aware yet that this would be the main theme of the whole restauration.</p>
<p>Together with the console, I got a PSU and an edutainment CD for learning math. The PSU wasn't the original one, but a simple power brick with a CD32 connector soldered on. The gamepad was missing, unfortunately, but I found a Honey Bee joypad as replacement a bit later.</p>
<p>Let's have a look inside the machine.</p>
<h2 id="the-state">The State</h2>
<p>The seller sold it as broken because it showed no picture. When I opened the case, the machine told me a completely different story. There was an attempt to recap the machine. It was abandoned after replacing the TH and the 100µF SMD caps, probably because the picture was gone after that.</p>
<p>I also found blotches of green varnish, presumably simple nail varnish. It was under the replaced SMD caps, but also on solder joints and some vias. The varnish made no sense at all, except of maybe cosmetical reasons.</p>
<p>And I found this:</p>
<p><span class="ci-image"><a href="/cilla/page/491/encoder.jpg" data-fancybox="ipg-70d5790e" data-caption="Closeup of a Sony CXA1145 Video Encoder chip. The first pin is cut off, and the PCB underneath is damaged."><img src="/cilla/page/491/maxi/encoder.jpg" srcset="/cilla/page/491/maxi-2x/encoder.jpg 2x,/cilla/page/491/maxi-3x/encoder.jpg 3x,/cilla/page/491/maxi-4x/encoder.jpg 4x" class="rounded img-fluid" alt="Closeup of a Sony CXA1145 Video Encoder chip. The first pin is cut off, and the PCB underneath is damaged." /></a></span></p>
<p>I assume that when the picture was gone, the guy who tried the refurbishment assumed that the video encoder chip got damaged, but had no equipment at hand to unsolder an SMD chip, and attempted to cut it from the board pin by pin instead.</p>
<p>I found no further traces of mistreatment of the poor board. It's going to be enough of work to fix the current mess already.</p>
<p>To be honest, I am pretty upset about that. There is a difference between if the machine shows no picture after decades of storage, or because of a botched refurbishment attempt. The seller should have pointed out that fact.</p>
<h2 id="fixing-the-mainboard">Fixing the Mainboard</h2>
<p>First I attempted to restore the picture by replacing the obviously broken video encoder chip. I also replaced an electrolyic cap next to it that looked suspicious. Unfortunately that did not bring back the video signal.</p>
<p>The question was now whether I was getting no picture because of further errors in the video area, or because the machine is not starting at all. To find out, I inserted a DiagROM and <a href="/cilla/page/483/amiga-debugging-with-linux.html#amiga-cd32">connected the CD32 to my PC</a>. The DiagROM started and logged no errors to the console. So the good news was that the machine is basically working.</p>
<p>I then decided to remove everything from the previous restauration attempt, so I could start anew with a known state of the mainboard. I removed all the electrolytic caps, even those that had already been replaced, and cleaned off the green varnish with acetone and IPA.</p>
<p>There was a strange solder blob on the bottom side, covered with a layer of varnish. When I tried to clean it up, I smelled that revealing fishy smell of old electrolyte. I generously removed the SMD parts on both sides in that area, cleaned the board and checked the tracks and vias.</p>
<p><span class="ci-image"><a href="/cilla/page/491/bottom1.jpg" data-fancybox="ipg-70d5790e" data-caption="The bottom side of the audio area, as I found it. There is a strange solder blob covered in varnish."><img src="/cilla/page/491/thumb/bottom1.jpg" srcset="/cilla/page/491/thumb-2x/bottom1.jpg 2x,/cilla/page/491/thumb-3x/bottom1.jpg 3x,/cilla/page/491/thumb-4x/bottom1.jpg 4x" class="rounded img-fluid" alt="The bottom side of the audio area, as I found it. There is a strange solder blob covered in varnish." /></a></span> <span class="ci-image"><a href="/cilla/page/491/bottom2.jpg" data-fancybox="ipg-70d5790e" data-caption="I generously removed all components around the affected area, and cleaned it."><img src="/cilla/page/491/thumb/bottom2.jpg" srcset="/cilla/page/491/thumb-2x/bottom2.jpg 2x,/cilla/page/491/thumb-3x/bottom2.jpg 3x,/cilla/page/491/thumb-4x/bottom2.jpg 4x" class="rounded img-fluid" alt="I generously removed all components around the affected area, and cleaned it." /></a></span> <span class="ci-image"><a href="/cilla/page/491/bottom3.jpg" data-fancybox="ipg-70d5790e" data-caption="Fresh components soldered in. A track was damaged and needed to be fixed with a wire."><img src="/cilla/page/491/thumb/bottom3.jpg" srcset="/cilla/page/491/thumb-2x/bottom3.jpg 2x,/cilla/page/491/thumb-3x/bottom3.jpg 3x,/cilla/page/491/thumb-4x/bottom3.jpg 4x" class="rounded img-fluid" alt="Fresh components soldered in. A track was damaged and needed to be fixed with a wire." /></a></span></p>
<p>Unfortunately, I ripped off a few pads on the 100µF capacitors while doing so. I guess the leaked electrolyte and the thermal stress of two recappings was just too much for them.</p>
<p>Then I soldered in new components in that area, and fixed the broken pads with bodge wire. For two SMD capacitors, the board offered an alternative use of TH caps, which I thankfully accepted. The area is now looking quite ugly, but at least it should work again.</p>
<p><span class="ci-image"><a href="/cilla/page/491/top1.jpg" data-fancybox="ipg-70d5790e" data-caption="The top side of the audio area after removing the SMD caps. Two 100µF caps lost a pad due to thermal and mechanical stress."><img src="/cilla/page/491/thumb/top1.jpg" srcset="/cilla/page/491/thumb-2x/top1.jpg 2x,/cilla/page/491/thumb-3x/top1.jpg 3x,/cilla/page/491/thumb-4x/top1.jpg 4x" class="rounded img-fluid" alt="The top side of the audio area after removing the SMD caps. Two 100µF caps lost a pad due to thermal and mechanical stress." /></a></span> <span class="ci-image"><a href="/cilla/page/491/top2.jpg" data-fancybox="ipg-70d5790e" data-caption="The same area, with fresh SMD components. Two of the SMD caps are replaced with TH ones. A broken track is fixed with a wire."><img src="/cilla/page/491/thumb/top2.jpg" srcset="/cilla/page/491/thumb-2x/top2.jpg 2x,/cilla/page/491/thumb-3x/top2.jpg 3x,/cilla/page/491/thumb-4x/top2.jpg 4x" class="rounded img-fluid" alt="The same area, with fresh SMD components. Two of the SMD caps are replaced with TH ones. A broken track is fixed with a wire." /></a></span></p>
<p>When I checked the tracks and vias at the other 100µF SMD caps, I found broken connections at C236 and C237. They are used for the luma or composite video signal, so the broken connections caused a black image.</p>
<p><span class="ci-image"><a href="/cilla/page/491/fix1.jpg" data-fancybox="ipg-70d5790e" data-caption="The connection between the left pad and the via was broken, presumably while scraping off the solder mask."><img src="/cilla/page/491/thumb/fix1.jpg" srcset="/cilla/page/491/thumb-2x/fix1.jpg 2x,/cilla/page/491/thumb-3x/fix1.jpg 3x,/cilla/page/491/thumb-4x/fix1.jpg 4x" class="rounded img-fluid" alt="The connection between the left pad and the via was broken, presumably while scraping off the solder mask." /></a></span> <span class="ci-image"><a href="/cilla/page/491/fix2.jpg" data-fancybox="ipg-70d5790e" data-caption="The only way was to fix it with a piece of wire."><img src="/cilla/page/491/thumb/fix2.jpg" srcset="/cilla/page/491/thumb-2x/fix2.jpg 2x,/cilla/page/491/thumb-3x/fix2.jpg 3x,/cilla/page/491/thumb-4x/fix2.jpg 4x" class="rounded img-fluid" alt="The only way was to fix it with a piece of wire." /></a></span> <span class="ci-image"><a href="/cilla/page/491/fix3.jpg" data-fancybox="ipg-70d5790e" data-caption="The connection between pin 20 and the right pad of C237 was broken as well, and disconnected the composite signal from the outputs."><img src="/cilla/page/491/thumb/fix3.jpg" srcset="/cilla/page/491/thumb-2x/fix3.jpg 2x,/cilla/page/491/thumb-3x/fix3.jpg 3x,/cilla/page/491/thumb-4x/fix3.jpg 4x" class="rounded img-fluid" alt="The connection between pin 20 and the right pad of C237 was broken as well, and disconnected the composite signal from the outputs." /></a></span></p>
<p>I also found a broken via near C409, which carries the <code style="text-decoration:overline">CSYNC</code> signal. The missing connection causes a missing video sync signal at the outputs. I fixed it by opening the via and exposing the connected tracks on both sides, then soldering a thin wire to the tracks.</p>
<p><span class="ci-image"><a href="/cilla/page/491/fix4.jpg" data-fancybox="ipg-70d5790e" data-caption="The broken via, before I fixed it with wire."><img src="/cilla/page/491/thumb/fix4.jpg" srcset="/cilla/page/491/thumb-2x/fix4.jpg 2x,/cilla/page/491/thumb-3x/fix4.jpg 3x,/cilla/page/491/thumb-4x/fix4.jpg 4x" class="rounded img-fluid" alt="The broken via, before I fixed it with wire." /></a></span></p>
<p>So there were more than enough reasons for this board to show no video picture.</p>
<p>The TH capacitors on the board are a bit special. For C408 and C811, the silk screen shows the positive end at the wrong side. Even Commodore soldered in the capacitors in the wrong orientation, and you will find many CD32 out there with bloated caps at that position. I decided to solder in SMD caps there instead, which can be soldered in like shown on the silkscreen.</p>
<p>After that, I checked the machine, and to my amazement, it was working again:</p>
<p><span class="ci-image"><img src="/cilla/page/491/maxi/cd32-shot.jpg" srcset="/cilla/page/491/maxi-2x/cd32-shot.jpg 2x,/cilla/page/491/maxi-3x/cd32-shot.jpg 3x,/cilla/page/491/maxi-4x/cd32-shot.jpg 4x" class="rounded img-fluid" alt="" /></span></p>
<p>So the mainboard was repaired and refurbished. I checked all the video and audio connectors, and found a signal everywhere. The machine was also running stable.</p>
<p><span class="ci-image"><a href="/cilla/page/491/mainboard.jpg" data-fancybox="ipg-70d5790e" data-caption="The refurbished mainboard."><img src="/cilla/page/491/maxi/mainboard.jpg" srcset="/cilla/page/491/maxi-2x/mainboard.jpg 2x,/cilla/page/491/maxi-3x/mainboard.jpg 3x,/cilla/page/491/maxi-4x/mainboard.jpg 4x" class="rounded img-fluid" alt="The refurbished mainboard." /></a></span></p>
<p>I'm glad that the machine turned out to be repairable.</p>
<p>In the next part, I will replace the laser module and calibrate the CD drive.</p>2023-08-09T16:38:33ZBuilding a ZX Dandanator Mini
https://shred.zone/cilla/page/490/building-a-zx-dandanator-mini.html
<p><span class="ci-image float-right"><a href="/cilla/page/490/0default.jpg" data-fancybox="ipg-0224f6cc" data-caption="The ZX Dandanator Mini in its printed case."><img src="/cilla/page/490/thumb/0default.jpg" srcset="/cilla/page/490/thumb-2x/0default.jpg 2x,/cilla/page/490/thumb-3x/0default.jpg 3x,/cilla/page/490/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="The ZX Dandanator Mini in its printed case." /></a></span> The main way to load software into the ZX Spectrum was via audio tapes. There have been floppy drive extensions and Sinclair's proprietary <a href="https://en.wikipedia.org/wiki/ZX_Microdrive" class="wp">Microdrive</a> solution, but audio tapes were cheap and ubiquitous, and cassette recorders could be found in virtually every household.</p>
<p>The downside was that it was uncomfortable. Tapes are slow. It took several minutes to load a game into the machine. If you had a "collection" of multiple games on one tape, you first had to wind it to the correct position. When I got my first Amiga with floppy drive, I never really looked back to those times when I had to use audio tapes.</p>
<p>Today I own a couple of ZX Spectrums, but I don't have a tape recorder anymore. To load software into the machine, I usually use my PC's headphone jack and <a href="https://shredzone.org/docs/tzxtools/tzxplay/" class="exts">tzxplay</a>. But there is a more elegant way. The <a href="http://www.dandare.es/Proyectos_Dandare/ZX_Dandanator%21_Mini_EN.html" class="ext">ZX Dandanator Mini</a> by Dandare is an extension with 512KB of Flash memory where you can store your most favorite games. A boot menu permits to select one of these games, which is instantly loaded into memory. It also provides a Kempston compatible joystick port.</p>
<p>When I started to build my ZX Dandanator Mini, I found that the documentation of the project left a few questions open. I hope my comprehensive blog article will help others to build their own one.</p>
<h2 id="parts">Parts</h2>
<p><span class="ci-image float-right"><a href="/cilla/page/490/assembly1.jpg" data-fancybox="ipg-0224f6cc" data-caption="It only needs a few components."><img src="/cilla/page/490/thumb/assembly1.jpg" srcset="/cilla/page/490/thumb-2x/assembly1.jpg 2x,/cilla/page/490/thumb-3x/assembly1.jpg 3x,/cilla/page/490/thumb-4x/assembly1.jpg 4x" class="rounded img-fluid" alt="It only needs a few components." /></a></span> Fortunately, the Dandanator's bill of materials is quite short, and all the components are easy to find, maybe except of the edge connector.</p>
<ul>
<li>1x GAL 22V10 (+ DIP20 socket)</li>
<li>1x PIC 16F1826-I/P (+ DIP18 socket)</li>
<li>1x SST 39SF040 Flash ROM (+ PLCC32 socket)</li>
<li>1x 1N4148 (TH)</li>
<li>2x 10kΩ resistors (TH)</li>
<li>5x 100nF ceramic capacitors (TH)</li>
<li>1x D-Sub connector, 9-pin male, right angle, Europe style (e.g. <a href="https://www.reichelt.de/d-sub-stecker-9-polig-gewinkelt-rm-9-4-d-sub-st-09eu-p6986.html?&nbc=1" class="exts">this one</a>)</li>
<li>2x pin headers, 2-pin</li>
<li>1x jumper</li>
<li>2x 6 mm tactile switches (17 mm tall if you use the 3D printed case)</li>
<li>1x PCB (Gerber files are <a href="http://www.dandare.es/Descargas/Gerber%20ZX%20Dandanator%20Mini%202.1b.zip" class="ext">here</a>)</li>
<li>1x ZX Spectrum edge connector (can be found in retro shops, online marketplaces, or just DIY)</li>
<li>1x <a href="https://www.thingiverse.com/thing:1912198" class="exts">3D printed case</a> (optional)</li>
</ul>
<p>You will need a programmer that is able to flash the PIC, GAL, and Flash ROM (e.g. XGecu TL-866II Plus with PLCC32 adapter). I also recommend a good PLCC chip puller.</p>
<p>Classic GALs are out of production, but can still be found as <acronym title="New Old Stock">NOS</acronym> parts in online marketplaces. A replacement that is still produced is the Atmel ATF22V10C-10PU. If you use that one, you will also need a 3.3kΩ 6-pin bussed resistor array. More about that below.</p>
<h2 id="assembly">Assembly</h2>
<p>The assembly is straightforward. You start with the flattest components and work your way up to the tallest. There are no SMD components, so even a soldering novice should have no problem.</p>
<p>Make sure the sockets are oriented correctly. Unfortunately there are no marks for pin 1 of both DIP sockets on the silkscreen. They should be oriented with the notches near the buttons, like seen on my photo. The PLCC socket should match the outline on the silkscreen.</p>
<p><span class="ci-image"><a href="/cilla/page/490/assembly2.jpg" data-fancybox="ipg-0224f6cc" data-caption="There is no pin 1 marker for the orientation of the DIP sockets on the silkscreen. The notches are on the side of the switches."><img src="/cilla/page/490/thumb/assembly2.jpg" srcset="/cilla/page/490/thumb-2x/assembly2.jpg 2x,/cilla/page/490/thumb-3x/assembly2.jpg 3x,/cilla/page/490/thumb-4x/assembly2.jpg 4x" class="rounded img-fluid" alt="There is no pin 1 marker for the orientation of the DIP sockets on the silkscreen. The notches are on the side of the switches." /></a></span></p>
<p>The edge connector is usually meant to be soldered upright, not to the edge of the PCB, so you first need to bend the pins to the inside. If done correctly, the edge connector should sit centered, and all pins should touch the pads of the PCB. Also make sure to solder the connector to the correct side of the PCB, which is the one with the <em>short</em> pads. The connector on the other side is meant for further expansions, like a joystick interface, but you can even stack multiple Dandanators together.</p>
<p>If you intend to use the 3D printed case, leave a gap of about 2 mm between the PCB edge and the connector.</p>
<p><span class="ci-image"><a href="/cilla/page/490/assembly3.jpg" data-fancybox="ipg-0224f6cc" data-caption="Make sure to solder the edge connector to the right edge. 😉"><img src="/cilla/page/490/thumb/assembly3.jpg" srcset="/cilla/page/490/thumb-2x/assembly3.jpg 2x,/cilla/page/490/thumb-3x/assembly3.jpg 3x,/cilla/page/490/thumb-4x/assembly3.jpg 4x" class="rounded img-fluid" alt="Make sure to solder the edge connector to the right edge. 😉" /></a></span></p>
<p>Some of the pads are close to the edge connector on the back. It's easy to spill some drops of solder on the pads while soldering. A bit of Kapton tape is a good way to protect them.</p>
<p><span class="ci-image"><a href="/cilla/page/490/assembly4.jpg" data-fancybox="ipg-0224f6cc" data-caption="There is not much space between the vias and the pads of the edge connector."><img src="/cilla/page/490/thumb/assembly4.jpg" srcset="/cilla/page/490/thumb-2x/assembly4.jpg 2x,/cilla/page/490/thumb-3x/assembly4.jpg 3x,/cilla/page/490/thumb-4x/assembly4.jpg 4x" class="rounded img-fluid" alt="There is not much space between the vias and the pads of the edge connector." /></a></span></p>
<p>A problem with the ATF22V10C is that it does not provide internal pull-ups at the inputs. This means that if no joystick is connected, the inputs are floating, which could lead to problems. On my system, if no joystick was connected, the first game on the list was always started immediately. A possible solution is to solder a bussed resistor array to the bottom side. The resistors are connected to pin 8, 9, 10, 11, and 13 of the ATF22V10C. The common bus is connected to pin 24. Take care not to connect or short circuit adjacent pins.</p>
<p>This problem should not arise with the ATF22V10B, but at the time of writing, this variant was either out of stock or ridiculously expensive.</p>
<p><span class="ci-image"><a href="/cilla/page/490/mod.jpg" data-fancybox="ipg-0224f6cc" data-caption="I soldered a resistor array to the ATF22V10C. It's a 10 pin one with the unused pins cut off because I had no smaller one at hand."><img src="/cilla/page/490/thumb/mod.jpg" srcset="/cilla/page/490/thumb-2x/mod.jpg 2x,/cilla/page/490/thumb-3x/mod.jpg 3x,/cilla/page/490/thumb-4x/mod.jpg 4x" class="rounded img-fluid" alt="I soldered a resistor array to the ATF22V10C. It's a 10 pin one with the unused pins cut off because I had no smaller one at hand." /></a></span></p>
<p>While this issue likely won't occur with older GALs, the manufacturers still recommend not to let input pins open. In my oppinion, the pull-up resistors should have been a part of the Dandanator design.</p>
<p><span class="ci-image"><a href="/cilla/page/490/assembly5.jpg" data-fancybox="ipg-0224f6cc" data-caption="The Dandanator, fully assembled. Do not bridge the &quot;Serial Pins&quot; (as opposed to what can be seen here)."><img src="/cilla/page/490/thumb/assembly5.jpg" srcset="/cilla/page/490/thumb-2x/assembly5.jpg 2x,/cilla/page/490/thumb-3x/assembly5.jpg 3x,/cilla/page/490/thumb-4x/assembly5.jpg 4x" class="rounded img-fluid" alt="The Dandanator, fully assembled. Do not bridge the "Serial Pins" (as opposed to what can be seen here)." /></a></span></p>
<p>In a final step, clean the board and inspect it for solder bridges and other errors. A short circuit can damage the power converter inside the ZX Spectrum, which is a bit <a href="/cilla/page/458/zx-spectrum-recoiled.html">difficult to repair</a>.</p>
<p>The "Joystick" header is for enabling the joystick port, and should be bridged unless you plan to use another joystick interface. The "Serial Pins" header seems to be there for in-circuit programming, and should not be bridged. (It won't cause any damage if you accidentally bridge it, but it will be like permanently pushing the joystick to the right.)</p>
<p>When the assembly is done, the next step is to program the chips. They all are programmed differently.</p>
<h2 id="flashing-the-chips">Flashing the Chips</h2>
<ul>
<li><strong>GAL</strong>: The fusemap can be <a href="http://www.dandare.es/Descargas/GAL22v10%20PLD&JED%20ZX%20Dandanator%20Mini%20v2.x.zip" class="ext">downloaded here</a>. If you use an ATF22V10 and the XGecu programmer, make sure to select the <code>(UES)</code> variant as chip type.</li>
<li><strong>PIC</strong>: An initial firmware can be <a href="http://www.dandare.es/Descargas/Dandanator-Multiply.hex" class="ext">downloaded here</a>. I have tried to flash it with the <a href="https://gitlab.com/DavidGriffith/minipro" class="exts">minipro</a> software, but could not get a working PIC from it. Eventually I used the original software from XGecu, which worked fine.</li>
<li><strong>Flash ROM</strong>: The Flash ROM contains the games and also pokes. The image file is generated by a <a href="https://github.com/teiram/dandanator-mini" class="exts">ROM assembler</a> tool.</li>
</ul>
<p>The ROM assembler is written in Java, so it runs on any modern OS. If you know about Java, you can easily build the latest version from source yourself. You can also download a jar file <a href="http://www.dandare.es/Proyectos_Dandare/Downloads_EN.html" class="ext">from the Dandanator download page</a> and run it with the command <code>java -jar dandanator-mini-*.jar</code>.</p>
<p>The ROM assembler GUI is quite self-explanatory. You can just drag&drop <code>TAP</code>, <code>SNA</code>, <code>Z80</code>, and <code>POK</code> files of your favorite games into it until the Flash memory is full. In the settings, you can change the font, language, and also use an individual background picture.</p>
<p>A lot of games can be found at <a href="https://worldofspectrum.org/archive" class="exts">World of Spectrum</a>. An extensive collection of POK files <a href="https://github.com/ladyeklipse/all-tipshop-pokes" class="exts">can be found here</a>.</p>
<p>When you're done collecting your own favorite games, create a ROM image and write it to the Flash ROM.</p>
<h2 id="lets-play">Let's Play</h2>
<p>The Dandanator is connected to the expansion port of the ZX Spectrum. Remember to disconnect it from power first.</p>
<p><span class="ci-image"><a href="/cilla/page/490/dandanator.jpg" data-fancybox="ipg-0224f6cc" data-caption="The Dandanator is connected to my <a href="/cilla/page/485/new-zx-spectrum-48k.html">renewed ZX Spectrum</a>."><img src="/cilla/page/490/thumb/dandanator.jpg" srcset="/cilla/page/490/thumb-2x/dandanator.jpg 2x,/cilla/page/490/thumb-3x/dandanator.jpg 3x,/cilla/page/490/thumb-4x/dandanator.jpg 4x" class="rounded img-fluid" alt="The Dandanator is connected to my renewed ZX Spectrum." /></a></span></p>
<p>Now power on your Speccy, and press the right button on the Dandanator to reach the main menu.</p>
<p><span class="ci-image"><a href="/cilla/page/490/snap1.png" data-fancybox="ipg-0224f6cc" data-caption="The main menu of the Dandanator, with a collection of my favorite games."><img src="/cilla/page/490/thumb/snap1.png" srcset="/cilla/page/490/thumb-2x/snap1.png 2x,/cilla/page/490/thumb-3x/snap1.png 3x,/cilla/page/490/thumb-4x/snap1.png 4x" class="rounded img-fluid" alt="The main menu of the Dandanator, with a collection of my favorite games." /></a></span></p>
<p>You can pick a game, either by using the joystick or pressing the corresponding key, then change the pokes to be applied, and then start the game.</p>
<p><span class="ci-image"><a href="/cilla/page/490/snap2.png" data-fancybox="ipg-0224f6cc" data-caption="The games (here: Atic Atac) start instantly. No loading from tape required."><img src="/cilla/page/490/thumb/snap2.png" srcset="/cilla/page/490/thumb-2x/snap2.png 2x,/cilla/page/490/thumb-3x/snap2.png 3x,/cilla/page/490/thumb-4x/snap2.png 4x" class="rounded img-fluid" alt="The games (here: Atic Atac) start instantly. No loading from tape required." /></a></span></p>
<p>If it's the first time you run the Dandanator, it's recommended to power off the Speccy, then keep both buttons depressed and power on again. The Dandanator will then flash the latest firmware version to the PIC.</p>
<p>The right button will always bring you back to the main menu. No need to reset the machine anymore.</p>2023-06-30T16:45:37ZLoRa Washing Machine
https://shred.zone/cilla/page/489/lora-washing-machine.html
<p><span class="ci-image float-right"><img src="/cilla/page/489/thumb/0default.jpg" srcset="/cilla/page/489/thumb-2x/0default.jpg 2x,/cilla/page/489/thumb-3x/0default.jpg 3x,/cilla/page/489/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="" /></span> Sometimes you cannot choose your project, but the project chooses you. This one is about sending the status of a Home Connect clothes washer to MQTT using LoRa radio communication.</p>
<p><a href="https://github.com/shred/lora-connect" class="exts">The project can be found at GitHub.</a></p>
<h2 id="the-problem">The Problem</h2>
<p>It all started when my clothes washer broke down. I replaced it with a new one, one that is also IoT capable by using the Home Connect network. I liked the idea because the machine is located in a shared laundry room at the basement of the building. If I knew about the progress and the remaining time, I could go to the basement and swap the laundry right on time, not too soon and not too late.</p>
<p>However, my WLAN does not reach the basement, so I couldn't connect the washer to the Home Connect cloud. I tried <a href="https://en.wikipedia.org/wiki/Power-line_communication" class="wp">PLC</a>, but that made my DSL connection instable, so it wasn't a solution either. I pondered about buying an LTE router, but the data tariff would cause monthly costs that I wasn't really willing to pay.</p>
<p>Then I discovered <a href="https://en.wikipedia.org/wiki/LoRa" class="wp">LoRa</a>, which is a radio communication technique that is specially designed for Long Range (hence its name) communication, with a range of up to several kilometers (on optimal conditions). It should be easy for LoRa to send data from the basement to my flat, and indeed, a first test was successful.</p>
<p>LoRa solves the problem of transporting the data. However, it comes with a price: The individual data packages are very small (about 50 bytes worst case), and in Europe there is also a 1% duty cycle restriction that needs to be respected. So it wasn't possible to just connect the washer to the Home Connect cloud using LoRa as some kind of WLAN repeater.</p>
<p>Instead of that, I would have to connect to the washer directly, read its state and compress the information to what I actually need, before sending it. The problem is now that the connection between the appliance and the Home Connect cloud is proprietary and encrypted.</p>
<p>I found the solution to that problem in a blog post <a href="https://trmm.net/homeconnect/" class="exts">"hacking your dishwasher"</a> by Trammell Hudson. By smart reverse engineering, Trammell was able to find a way to directly connect to his home appliances, without having to go through the Home Connect cloud. This was the last part of the puzzle that I needed.</p>
<h2 id="concept">Concept</h2>
<p><span class="ci-image float-right"><a href="/cilla/page/489/lora1.jpg" data-fancybox="ipg-33edfe33" data-caption="The LoRa32 sender and receiver in their case."><img src="/cilla/page/489/thumb/lora1.jpg" srcset="/cilla/page/489/thumb-2x/lora1.jpg 2x,/cilla/page/489/thumb-3x/lora1.jpg 3x,/cilla/page/489/thumb-4x/lora1.jpg 4x" class="rounded img-fluid" alt="The LoRa32 sender and receiver in their case." /></a></span> With Trammell's work, I was able to connect to my washer and read its current state. Basically, the washer is sending key-value pairs via JSON, where the key seems to be a 16 bit integer, and the value is mostly also an integer, but could also be a boolean or a string. This information can be easily compressed into small LoRa packages, as I mostly need to transport numeric key-value pairs.</p>
<p>So there is a LoRa "sender" at the basement. It spawns a WLAN access point that the washer connects to. It then communicates with the washer, retrieves its state change events, compresses them, and sends them out via LoRa.</p>
<p>In my flat, a LoRa "receiver" uncompresses the information. From it, JSON bodies are generated and sent to my home automation's MQTT queue. The generated JSON bodies resemble those sent by Home Connect. A display that is connected to MQTT shows the current progress and the remaining time of the washer. I will also get a message on my phone when the washer is completed, or if an error has occured.</p>
<h2 id="implementation">Implementation</h2>
<p><span class="ci-image float-right"><a href="/cilla/page/489/lora2.jpg" data-fancybox="ipg-33edfe33" data-caption="The LoRa32 sender in the basement."><img src="/cilla/page/489/thumb/lora2.jpg" srcset="/cilla/page/489/thumb-2x/lora2.jpg 2x,/cilla/page/489/thumb-3x/lora2.jpg 3x,/cilla/page/489/thumb-4x/lora2.jpg 4x" class="rounded img-fluid" alt="The LoRa32 sender in the basement." /></a></span> For the implementation, I bought two <em>Heltec LoRa32 V2</em> modules. They are based on an ESP32, with a LoRa module and an OLED on board. With a few modifications to the source, any other Semtech SX1276 based LoRa module can be used. For a proper housing, I created a 3D printed <a href="https://www.printables.com/model/425740-heltec-lora32-minimal-case" class="exts">minimal Heltec LoRa32 V2 case</a>.</p>
<p>Thanks to Trammell's <a href="https://github.com/osresearch/hcpy" class="exts">hcpy</a> source code, it was surprisingly simple to write a C++ class for the ESP32 that opens a web socket connection to the washer and starts communicating with it.</p>
<p>As mentioned above, the washer is sending JSON messages that contain mostly integer based key-value pairs. To stuff as much information as possible into a single LoRa packet, I came up with a simple compression. The first byte is stating the type of information, followed by a 16-bit integer key, optionally follwed by the value. These are the possible types:</p>
<ul>
<li>0: Represents the constant <code>0</code> (so no value needs to be transported)</li>
<li>1: Represents an unsigned 8-bit integer (so the value consumes 1 byte)</li>
<li>2: Represents a <em>negative</em> unsigned 8-bit integer (the positive value is transported, and then negated on the receiver side)</li>
<li>3,4: The same, but for 16-bit integers (the value consumes 2 bytes)</li>
<li>5,6: The same, but for 32-bit integers (the value consumes 4 bytes)</li>
<li>7: A boolean constant <code>false</code> (so no value needs to be transported)</li>
<li>8: A boolean constant <code>true</code> (so no value needs to be transported)</li>
<li>9: A string (followed by the null-terminated string as value)</li>
</ul>
<p>These key-value pairs are collected until the LoRa package is full or the sender is flushed. A length byte is added that contains the total length of the pairs, so the receiver is able to unpack all of them again.</p>
<p>To secure the communication, a SHA256 based HMAC is generated. A random 16 bit package number is added as well, which is used by the receiver for acknowledgement. Finally, the package is encrypted using AES256.</p>
<p>The receiver side will unencrypt the package and generate an HMAC, using a shared secret. If the HMAC matches, an acknowledge package with the package number is sent back to the sender. After that, the payload is uncompressed and converted to JSON strings that are sent to MQTT.</p>
<p>It is important to know that the transport encryption is not state-of-the-art. There are several sacrifices that had to be made to keep the LoRa transport small and simple:</p>
<ul>
<li>Only the first 4 bytes of the MAC are used, for space reasons.</li>
<li>The RSA256 encryption does not use a mode of operation, mainly because it would be hard to re-synchronize the LoRa connection if a package was lost. On the other hand, we are only sending the washer state. If someone would want to find out whether the washer is running or not, they could just check if a package has been sent within the past minute.</li>
<li>The transport is not secured against replay attacks. The receiver should provide a random nonce, which is then used by the sender for the next package. This is something that should definitely be addressed.</li>
</ul>
<p>So the LoRa connection provides an <em>acceptable</em> encryption, and is also protected against lost packages, since the sender will reattempt to send the package if there was no acknowledgement from the receiver.</p>
<h2 id="configuration">Configuration</h2>
<p><span class="ci-image float-right"><a href="/cilla/page/489/display.jpg" data-fancybox="ipg-33edfe33" data-caption="My MQTT display is showing the current progress (80%) and the remaining time (0:40) of the washer."><img src="/cilla/page/489/thumb/display.jpg" srcset="/cilla/page/489/thumb-2x/display.jpg 2x,/cilla/page/489/thumb-3x/display.jpg 3x,/cilla/page/489/thumb-4x/display.jpg 4x" class="rounded img-fluid" alt="My MQTT display is showing the current progress (80%) and the remaining time (0:40) of the washer." /></a></span> The trickiest part of the project is probably the configuration.</p>
<p>To directly connect to the Home Connect appliance, an encryption key and (depending on the protocol) an initialization vector is required. Both parts cannot be retrieved by the public Home Connect API, but you need to trick the API into thinking that you are connecting from the Home Connect app. This is where Trammell's <a href="https://github.com/osresearch/hcpy" class="exts">hcpy</a> project comes into play. It will let you log into your Home Connect account, and then extract a profile of your appliance and writes it into a <code>config.json</code> file. This file is required for setting up my project.</p>
<p>The <code>config-converter.py</code> in my project will take this <code>config.json</code> file and extract all the necessary parts from it. It will print the appliance's <code>key</code> and <code>iv</code> values for your <code>sender/config.h</code>. It will also create a new random shared secret for the LoRa encryption. And last but not least, it will create a <code>receiver/mapping.cpp</code> file, which is used to convert the integer keys and values to strings similar to the Home Connect API.</p>
<p>If you came this far, you made the hardest part. After that, the LoRa transceivers need to be configured. Unfortunately the parameters depend on the country where the sender is used, so there are no general default settings.</p>
<blockquote>
<p>The following values are proposals and are <strong>only valid for countries of the EU</strong>. <strong>You</strong> are responsible to find the correct settings for <strong>your</strong> country. Failure to do so may result in legal problems, claims for damages, and even imprisonment.</p>
</blockquote>
<ul>
<li><code>LORA_BAND</code>: This is the frequency used for LoRa transmissions. For EU countries this is usually <code>867E6</code>.</li>
<li><code>LORA_POWER</code>: The power of the LoRa sender, in dB. For EU countries this must be 14 or less.</li>
<li><code>LORA_PABOOST</code>: <code>true</code> for EU countries.</li>
<li><code>LORA_SPREADING</code>: The spreading factor. For EU countries, values between 7 and 12 are allowed. Higher values span longer distances, but also exhaust the permitted 1% duty cycle sooner. You should use the lowest possible value that gives a stable LoRa connection, and rather try to enhance reception by finding a better place for the LoRa devices or by using better antennas. The value should be 9 or less, as the duty cycle limit is likely to be exceeded with higher spreading factors.</li>
<li><code>LORA_BANDWIDTH</code>: The bandwidth, must be <code>125E3</code> in EU countries.</li>
<li><code>LORA_SYNCWORD</code>: A sync word. You can choose basically any values, or just use the default <code>0x12</code>.</li>
</ul>
<p>Make sure that the sender and the receiver are using the same settings, otherwise the transmission will fail.</p>
<p>The other settings are mainly about the WLAN access point for your appliance, the WLAN settings of your home network, and the credentials to access your MQTT server.</p>
<p>And that's it! Actually it was quite a fun project, and I learned a lot about ESP32 programming and LoRa networks. I also spent way too much time with it, but maybe it will pay off because I get the laundry done sooner now.</p>2023-04-18T20:20:11ZZX Spectrum Plus Repair
https://shred.zone/cilla/page/487/zx-spectrum-plus-repair.html
<p>Let's have a look inside a ZX Spectrum Plus this time. It's basically the same as a ZX Spectrum, but with a (somewhat) better keyboard and a reset button. However, this machine caused a few surprises.</p>
<p>The first surprise was that instead of a serial number, the words "Upgraded" were printed on the case. Next to it there was a (broken) warranty seal from Sinclair Germany. It was completely new to me that Sinclair had actually sold upgrade packages for the ZX Spectrum.</p>
<p><span class="ci-image"><a href="/cilla/page/487/upgraded.jpg" data-fancybox="ipg-b9f15e00" data-caption="Instead of a serial number, &quot;upgraded&quot; is printed on the case."><img src="/cilla/page/487/thumb/upgraded.jpg" srcset="/cilla/page/487/thumb-2x/upgraded.jpg 2x,/cilla/page/487/thumb-3x/upgraded.jpg 3x,/cilla/page/487/thumb-4x/upgraded.jpg 4x" class="rounded img-fluid" alt="Instead of a serial number, "upgraded" is printed on the case." /></a></span></p>
<p>Inside the case, I found an Issue Two board, which is a rare sight in a ZX Spectrum Plus. For an obvious reason: The Issue Two heatsink is too big for the Plus case, so the board was somewhat crammed into the case.</p>
<p><span class="ci-image"><a href="/cilla/page/487/inside1.jpg" data-fancybox="ipg-b9f15e00" data-caption="An Issue Two board is crammed into the case. The heatsink is twisted to its maximum angle."><img src="/cilla/page/487/thumb/inside1.jpg" srcset="/cilla/page/487/thumb-2x/inside1.jpg 2x,/cilla/page/487/thumb-3x/inside1.jpg 3x,/cilla/page/487/thumb-4x/inside1.jpg 4x" class="rounded img-fluid" alt="An Issue Two board is crammed into the case. The heatsink is twisted to its maximum angle." /></a></span></p>
<p>As I was going to replace the 7805 with a DC/DC converter anyway, this ugly sight of the twisted heatsink would be solved soon though.</p>
<p>I also found that the keyboard membrane got brittle over the years, and needed replacement with a modern replica.</p>
<p><span class="ci-image"><a href="/cilla/page/487/keyboard1.jpg" data-fancybox="ipg-b9f15e00" data-caption="The keyboard connectors are brittle and broke off."><img src="/cilla/page/487/thumb/keyboard1.jpg" srcset="/cilla/page/487/thumb-2x/keyboard1.jpg 2x,/cilla/page/487/thumb-3x/keyboard1.jpg 3x,/cilla/page/487/thumb-4x/keyboard1.jpg 4x" class="rounded img-fluid" alt="The keyboard connectors are brittle and broke off." /></a></span></p>
<h2 id="technical-check">Technical Check</h2>
<p>The very first thing I do is the <a href="/cilla/page/459/zx-spectrum-chrome.html#composite-mod">composite mod</a>. It just takes a bit of wire and a few minutes of soldering, so it's worth to invest the time even if the Speccy should turn out to be irrepairably broken. A first check showed the start screen, so everything seemed to be allright first.</p>
<p><span class="ci-image"><a href="/cilla/page/487/diag0.jpg" data-fancybox="ipg-b9f15e00" data-caption="The machine seems to be working."><img src="/cilla/page/487/thumb/diag0.jpg" srcset="/cilla/page/487/thumb-2x/diag0.jpg 2x,/cilla/page/487/thumb-3x/diag0.jpg 3x,/cilla/page/487/thumb-4x/diag0.jpg 4x" class="rounded img-fluid" alt="The machine seems to be working." /></a></span></p>
<p>But then I connected the diagnostics cart, and the trouble started.</p>
<p><span class="ci-image"><a href="/cilla/page/487/diag1.jpg" data-fancybox="ipg-b9f15e00" data-caption="This does not look good at all. All RAMs are reported as broken, and there are strange horizontal lines."><img src="/cilla/page/487/thumb/diag1.jpg" srcset="/cilla/page/487/thumb-2x/diag1.jpg 2x,/cilla/page/487/thumb-3x/diag1.jpg 3x,/cilla/page/487/thumb-4x/diag1.jpg 4x" class="rounded img-fluid" alt="This does not look good at all. All RAMs are reported as broken, and there are strange horizontal lines." /></a></span></p>
<p>The diagnostics reported that all eight lower RAM chips were broken, and the LEDs on the cart showed that the -5V and 12V power lines were missing. A voltmeter confirmed that -5V was gone, and there were only 7V on the 12V line, so the onboard power converter was broken. Strange enough: When I disconnected the diagnostics cart, the system started again, although both voltages were still bad.</p>
<p>I checked the coil, but it showed no short circuit between the windings. So I replaced the usual suspects of a broken power converter: TR4, D15 and D16. I also replaced the 7805 with a DC/DC converter as planned, and recapped all the electrolytic caps. The -5V and 12V were good after that, and all diagnostic tests passed.</p>
<p><span class="ci-image"><a href="/cilla/page/487/diag2.jpg" data-fancybox="ipg-b9f15e00" data-caption="Green tint, pale colors, horizontal disturbances. What has happened here?"><img src="/cilla/page/487/thumb/diag2.jpg" srcset="/cilla/page/487/thumb-2x/diag2.jpg 2x,/cilla/page/487/thumb-3x/diag2.jpg 3x,/cilla/page/487/thumb-4x/diag2.jpg 4x" class="rounded img-fluid" alt="Green tint, pale colors, horizontal disturbances. What has happened here?" /></a></span></p>
<p>But now the screen had a strong green tint, the colors were pale, and there were visible horizontal lines.</p>
<p>On Issue Two boards, there are two pots for calibrating the white balance. One just needs to connect a scope to the composite line, and then adjust both pots until the signal noise is reduced to a minimum. However, I only managed to get the green tint a bit better, but it didn't disappear. Also the disturbing horizontal lines stayed. This was the best I could get out of the signal.</p>
<p><span class="ci-image"><img src="/cilla/page/487/spec-lm-bad.png" class="rounded img-fluid" alt="" /></span></p>
<p>But why was the white balance perfect before I fixed the power converter? I later found out that the 12V are necessary for generating the color signal. While the power converter was broken, the 12V were missing, and so the display was presented in a perfect black and white. Since the start screen does not use colors, it just looked good on the first sight. When I restored the 12V line, the color signal was generated again, and the screen got tinted.</p>
<p>I first suspected the ULA, but the problem stayed when I swapped it with a known-good one. Then I swapped the LM1889N. The strange horizontal lines disappeared after that, and overall the colors got better, but were still not perfect.</p>
<p>The pots still couldn't restore a clean white. But then I found that VR1 wasn't really working well, and the signal was crackling when I was turning it. So I replaced it with a Piher one, which almost didn't fit because it is encapsulated. After that, I could finally calibrate the signal to have a minimum noise.</p>
<p><span class="ci-image"><img src="/cilla/page/487/spec-lm-good.png" class="rounded img-fluid" alt="" /></span></p>
<p>The result was a perfectly white-balanced picture, with the only green things being the passed diagnostics tests.</p>
<p><span class="ci-image"><a href="/cilla/page/487/diag3.jpg" data-fancybox="ipg-b9f15e00" data-caption="Much better: Nice colors, perfect white balance, overall good image quality."><img src="/cilla/page/487/thumb/diag3.jpg" srcset="/cilla/page/487/thumb-2x/diag3.jpg 2x,/cilla/page/487/thumb-3x/diag3.jpg 3x,/cilla/page/487/thumb-4x/diag3.jpg 4x" class="rounded img-fluid" alt="Much better: Nice colors, perfect white balance, overall good image quality." /></a></span></p>
<p>For a test, I reinstalled the previous LM1889N, and the color issues and the horizontal lines came back. So the problem with the green screen was a combination of a broken LM1889N and a broken pot.</p>
<p><span class="ci-image"><a href="/cilla/page/487/inside2.jpg" data-fancybox="ipg-b9f15e00" data-caption="The repaired board: New capacitors, repaired power converter, U?? and VR? replaced."><img src="/cilla/page/487/thumb/inside2.jpg" srcset="/cilla/page/487/thumb-2x/inside2.jpg 2x,/cilla/page/487/thumb-3x/inside2.jpg 3x,/cilla/page/487/thumb-4x/inside2.jpg 4x" class="rounded img-fluid" alt="The repaired board: New capacitors, repaired power converter, U?? and VR? replaced." /></a></span></p>
<p>The hardware part is done. Let's have a look at the keyboard next.</p>
<h2 id="the-keyboard">The Keyboard</h2>
<p>The keyboard of the ZX Spectrum Plus is a bit special. On the connector side, there is no difference to the ZX Spectrum keyboard. However, the ZX Spectrum Plus has some more special keys, like cursor keys or a dedicated delete key. These keys need to do two simultaneous keypresses in the correct order. This is done by two membrane layers that are connected to each other. A keypress then closes the contacts on both layers.</p>
<p>These layers are interconnected at the top of the membrane connectors. So it is crucial to do a clean work there, and to make sure that the layers are properly aligned and securely fastened under the brackets. Do not overtighten the screws though. Remember that the plastic is almost 40 years old. 😉</p>
<p><span class="ci-image"><a href="/cilla/page/487/keyboard2.jpg" data-fancybox="ipg-b9f15e00" data-caption="The different layers are interconnected at the top end of the connector."><img src="/cilla/page/487/thumb/keyboard2.jpg" srcset="/cilla/page/487/thumb-2x/keyboard2.jpg 2x,/cilla/page/487/thumb-3x/keyboard2.jpg 3x,/cilla/page/487/thumb-4x/keyboard2.jpg 4x" class="rounded img-fluid" alt="The different layers are interconnected at the top end of the connector." /></a></span> <span class="ci-image"><a href="/cilla/page/487/keyboard3.jpg" data-fancybox="ipg-b9f15e00" data-caption="It is crucial to properly align the layers and secure them firmly."><img src="/cilla/page/487/thumb/keyboard3.jpg" srcset="/cilla/page/487/thumb-2x/keyboard3.jpg 2x,/cilla/page/487/thumb-3x/keyboard3.jpg 3x,/cilla/page/487/thumb-4x/keyboard3.jpg 4x" class="rounded img-fluid" alt="It is crucial to properly align the layers and secure them firmly." /></a></span></p>
<p>After a bit of cleaning, I could then reassemble the machine.</p>
<p>And that's it. Now I finally also have a ZX Spectrum Plus in my collection.</p>
<p><span class="ci-image"><a href="/cilla/page/487/0default.jpg" data-fancybox="ipg-b9f15e00" data-caption="A ZX Spectrum Plus"><img src="/cilla/page/487/maxi/0default.jpg" srcset="/cilla/page/487/maxi-2x/0default.jpg 2x,/cilla/page/487/maxi-3x/0default.jpg 3x,/cilla/page/487/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="A ZX Spectrum Plus" /></a></span></p>2023-03-03T10:09:26ZNew ZX Spectrum 48K
https://shred.zone/cilla/page/485/new-zx-spectrum-48k.html
<p><span class="ci-image float-right"><a href="/cilla/page/485/board1.jpg" data-fancybox="ipg-7de12ed9" data-caption="The original Issue 3 board, with some labels explaining the functions of the components."><img src="/cilla/page/485/thumb/board1.jpg" srcset="/cilla/page/485/thumb-2x/board1.jpg 2x,/cilla/page/485/thumb-3x/board1.jpg 3x,/cilla/page/485/thumb-4x/board1.jpg 4x" class="rounded img-fluid" alt="The original Issue 3 board, with some labels explaining the functions of the components." /></a></span> I got this board of a Sinclair ZX Spectrum. It must have been a ZX Spectrum Plus model before, because there was this reset wire attached to it. There were also a few labels that were explaining the functionality of the components in German language, maybe for educational purposes.</p>
<p>I tried to run the diagnostics, but the module didn't even start, and the <code>D0</code> LED was permanently dark. There must have been a short circuit somewhere on the data bus. But instead of repairing it, my plan was to make a completely new ZX Spectrum from as many new components as possible, with reusing only the ULA, CPU, LM1889N, the coil, and the RAM chips.</p>
<p>So I first removed the valuable components. The stripped original board was a sad sight, but the prospect of making a new Speccy from it made it less painful.</p>
<p><span class="ci-image"><a href="/cilla/page/485/board2.jpg" data-fancybox="ipg-7de12ed9" data-caption="The board, with all valuable components stripped."><img src="/cilla/page/485/thumb/board2.jpg" srcset="/cilla/page/485/thumb-2x/board2.jpg 2x,/cilla/page/485/thumb-3x/board2.jpg 3x,/cilla/page/485/thumb-4x/board2.jpg 4x" class="rounded img-fluid" alt="The board, with all valuable components stripped." /></a></span></p>
<p>I checked the ULA in another Speccy, and it turned out to be fine. From the 16 RAM chips however, only 9 were still functional. This was much less than I expected. I'm having some of those old RAM chips in my stock, but they are precious and hard to find.</p>
<h2 id="a-new-board">A New Board</h2>
<p><span class="ci-image float-right"><a href="/cilla/page/485/board3.jpg" data-fancybox="ipg-7de12ed9" data-caption="The new board and some of the components."><img src="/cilla/page/485/thumb/board3.jpg" srcset="/cilla/page/485/thumb-2x/board3.jpg 2x,/cilla/page/485/thumb-3x/board3.jpg 3x,/cilla/page/485/thumb-4x/board3.jpg 4x" class="rounded img-fluid" alt="The new board and some of the components." /></a></span> The new <a href="https://www.pcbway.com/project/shareproject/ZX_Spectrum_48_Issue_3B_Redrawn.html" class="exts">replica board</a> is made by PABB and can be ordered from PCBWay.</p>
<p>For the required components, I assembled a <a href="https://shred.github.io/zxspectrum-bom/" class="exts">bill of materials</a>. It contains as many new components as I could find, but some rare parts are long out of production. They can still be found as NOS parts at online marketplaces, or they can be replaced with replacement types or replicas (like the Retroleum Nebula or vRetro vLA82).</p>
<p>There are four wire bridges that configure the type of the upper RAM chips, and the brand of the ROM chip manufacturer. The correct configuration can be found in my <a href="https://shred.github.io/zxspectrum-bom/" class="exts">bill of materials</a> as well.</p>
<p>Instead of the modulator, I decided to use an <a href="https://github.com/redhawk668/ZX-Spectrum-S-Video" class="exts">S-Video mod</a> and a 3D printed <a href="https://www.printables.com/model/351591-zx-spectrum-s-video-base-plate" class="exts">base plate</a>. A simple alternative is to just solder an RCA connector to <code>COMP</code> and <code>GND</code>, and use it as a composite output.</p>
<p>After a lot of soldering, the assembly was almost completed. But before seating the valuable chips, I first checked that all three voltages (+5V, +12V, -5V) were present and within their acceptable tolerance.</p>
<p><span class="ci-image"><a href="/cilla/page/485/board4.jpg" data-fancybox="ipg-7de12ed9" data-caption="The replica board, with all components soldered in, but the chips are not seated into their sockets yet."><img src="/cilla/page/485/thumb/board4.jpg" srcset="/cilla/page/485/thumb-2x/board4.jpg 2x,/cilla/page/485/thumb-3x/board4.jpg 3x,/cilla/page/485/thumb-4x/board4.jpg 4x" class="rounded img-fluid" alt="The replica board, with all components soldered in, but the chips are not seated into their sockets yet." /></a></span></p>
<p>The S-Video mod takes the place of the original modulator, but is not soldered in, but held by two screws. The screws also provide ground, so they must not be isolating. Three wires then connect the board with +5V, and the composite signal as luma. The chroma signal is connected to the positive end of C65, which must be removed first so the luma and chroma signals won't mix.</p>
<p><span class="ci-image"><a href="/cilla/page/485/svideo.jpg" data-fancybox="ipg-7de12ed9" data-caption="The S-Video mod mounted in place."><img src="/cilla/page/485/thumb/svideo.jpg" srcset="/cilla/page/485/thumb-2x/svideo.jpg 2x,/cilla/page/485/thumb-3x/svideo.jpg 3x,/cilla/page/485/thumb-4x/svideo.jpg 4x" class="rounded img-fluid" alt="The S-Video mod mounted in place." /></a></span></p>
<p>After that, the new board was finally completed and ready for a first test.</p>
<p><span class="ci-image"><a href="/cilla/page/485/board5.jpg" data-fancybox="ipg-7de12ed9" data-caption="The completed ZX Spectrum replica board with S-Video mod."><img src="/cilla/page/485/thumb/board5.jpg" srcset="/cilla/page/485/thumb-2x/board5.jpg 2x,/cilla/page/485/thumb-3x/board5.jpg 3x,/cilla/page/485/thumb-4x/board5.jpg 4x" class="rounded img-fluid" alt="The completed ZX Spectrum replica board with S-Video mod." /></a></span></p>
<h2 id="bugfixing">Bugfixing</h2>
<p>But alas, this is what I was seeing when I powered it up for the first time.</p>
<p><span class="ci-image"><a href="/cilla/page/485/broken.jpg" data-fancybox="ipg-7de12ed9" data-caption="This is what we don't want to see: black and white columns."><img src="/cilla/page/485/thumb/broken.jpg" srcset="/cilla/page/485/thumb-2x/broken.jpg 2x,/cilla/page/485/thumb-3x/broken.jpg 3x,/cilla/page/485/thumb-4x/broken.jpg 4x" class="rounded img-fluid" alt="This is what we don't want to see: black and white columns." /></a></span></p>
<p>The diagnostics showed no action on the CPU bus controls. My suspicion was confirmed when I checked the clock input of the CPU with a scope. It was just a flat line:</p>
<p><span class="ci-image"><img src="/cilla/page/485/clock-cpu.png" class="rounded img-fluid" alt="" /></span></p>
<p>The CPU clock is generated by the ULA, but the clock signal was present there.</p>
<p><span class="ci-image"><img src="/cilla/page/485/clock-ula.png" class="rounded img-fluid" alt="" /></span></p>
<p>A look into the schematics shows that between the ULA clock output and the CPU clock input there is the transistor TR3, probably for amplifying the signal. Strange enough, the signal was still present at the right of R24, which is directly connected to the clock output, but at the left of R24 (which is connected to the base of the transistor) the signal was missing already. When I removed TR3, the clock signal appeared there too, so TR3 must have been the cause.</p>
<p><span class="ci-image"><img src="/cilla/page/485/extract.png" class="rounded img-fluid" alt="" /></span></p>
<p>After a longer search, I found out that the Spectrum is very picky about the type used for TR3. The original ZTX313 is not in production anymore, so I used a BC548 first, which is said to be a replacement type, however not at this position. For TR3, the only recommended replacement type is the MPS2369, which is also a bit hard to find now. With that type, the clock signal was finally good (cyan: ULA clock output, yellow: CPU clock input).</p>
<p><span class="ci-image"><img src="/cilla/page/485/clock-good.png" class="rounded img-fluid" alt="" /></span></p>
<p>And to my joy, the new Spectrum finally started up and showed the famous start screen.</p>
<p><span class="ci-image"><a href="/cilla/page/485/sinclair.jpg" data-fancybox="ipg-7de12ed9" data-caption="Hello there, Speccy!"><img src="/cilla/page/485/thumb/sinclair.jpg" srcset="/cilla/page/485/thumb-2x/sinclair.jpg 2x,/cilla/page/485/thumb-3x/sinclair.jpg 3x,/cilla/page/485/thumb-4x/sinclair.jpg 4x" class="rounded img-fluid" alt="Hello there, Speccy!" /></a></span></p>
<p>The next step was to run a full diagnostics check. Now I got an error that the <code style="text-decoration:overline">M1</code> signal was missing.</p>
<p><span class="ci-image"><a href="/cilla/page/485/diag1.jpg" data-fancybox="ipg-7de12ed9" data-caption="Diagnostics complains that the hardware was not found."><img src="/cilla/page/485/thumb/diag1.jpg" srcset="/cilla/page/485/thumb-2x/diag1.jpg 2x,/cilla/page/485/thumb-3x/diag1.jpg 3x,/cilla/page/485/thumb-4x/diag1.jpg 4x" class="rounded img-fluid" alt="Diagnostics complains that the hardware was not found." /></a></span></p>
<p>The <code style="text-decoration:overline">M1</code> signal is generated by the CPU, and indicates the first of four machine cycles, which is the cycle where the next instruction is read from memory. The Spectrum itself does not use the <code style="text-decoration:overline">M1</code> signal, but a few expansions like the <em>ZX Interface 1</em> need it.</p>
<p>After replacing the CPU, all diagnostics checks finally passed.</p>
<p><span class="ci-image"><a href="/cilla/page/485/diag2.jpg" data-fancybox="ipg-7de12ed9" data-caption="We are green!"><img src="/cilla/page/485/thumb/diag2.jpg" srcset="/cilla/page/485/thumb-2x/diag2.jpg 2x,/cilla/page/485/thumb-3x/diag2.jpg 3x,/cilla/page/485/thumb-4x/diag2.jpg 4x" class="rounded img-fluid" alt="We are green!" /></a></span></p>
<p>So at the bottom line, all I could reuse from the old ZX Spectrum was the ULA, the ROM, the LM1888N and the coil. I was hoping for the RAM chips and the CPU, but I haven't been really lucky with them.</p>
<h2 id="test-run">Test Run</h2>
<p>Anyway, it was finally time for a test run. I connected the new Speccy to my computer, and used <a href="...tzxtools...">tzxplay</a> to play the tape file of my favorite game, Starquake. It was loading and running fine. Also, the image quality of the S-Video output is excellent, and probably the best one can get from this old design. Only the ZX Spectrum Next has a better quality with its native, pixel perfect HDMI output.</p>
<p><span class="ci-image"><a href="/cilla/page/485/starquake1.jpg" data-fancybox="ipg-7de12ed9" data-caption=""><img src="/cilla/page/485/thumb/starquake1.jpg" srcset="/cilla/page/485/thumb-2x/starquake1.jpg 2x,/cilla/page/485/thumb-3x/starquake1.jpg 3x,/cilla/page/485/thumb-4x/starquake1.jpg 4x" class="rounded img-fluid" alt="" /></a></span> <span class="ci-image"><a href="/cilla/page/485/starquake2.jpg" data-fancybox="ipg-7de12ed9" data-caption=""><img src="/cilla/page/485/thumb/starquake2.jpg" srcset="/cilla/page/485/thumb-2x/starquake2.jpg 2x,/cilla/page/485/thumb-3x/starquake2.jpg 3x,/cilla/page/485/thumb-4x/starquake2.jpg 4x" class="rounded img-fluid" alt="" /></a></span></p>
<p>I bought the original board without any case. But luckily, there are replica cases, keymats, membranes, and faceplates on the market, so I could assemble a brand new outerior. Of course, I chose a transparent case, so the nice black mainboard could be seen from the outside. Well, at least a bit.</p>
<p>And there it is, an (almost) new ZX Spectrum in mint condition.</p>
<p><span class="ci-image"><a href="/cilla/page/485/0default.jpg" data-fancybox="ipg-7de12ed9" data-caption=""><img src="/cilla/page/485/maxi/0default.jpg" srcset="/cilla/page/485/maxi-2x/0default.jpg 2x,/cilla/page/485/maxi-3x/0default.jpg 3x,/cilla/page/485/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="" /></a></span></p>2023-02-07T16:43:37ZChristmas Garden
https://shred.zone/cilla/page/486/christmas-garden.html
<p>Some impressions of the <a href="https://www.christmas-garden.de/en/dresden/" class="exts">Christmas Garden 2022</a> at <a href="https://en.wikipedia.org/wiki/Pillnitz_Castle" class="wp">Pillnitz Castle</a> in Dresden. I was lucky on my visit there, because the snow that was falling the day before nicely contributed to the mystical atmosphere of the place.</p>2023-01-17T16:00:00ZAmiga Debugging with Linux
https://shred.zone/cilla/page/483/amiga-debugging-with-linux.html
<p><span class="ci-image float-right"><a href="/cilla/page/483/nullmodem.jpg" data-fancybox="ipg-45a38e0a" data-caption="A &quot;zero modem&quot; adapter between the serial-to-USB and DB9-to-DB25 adapters"><img src="/cilla/page/483/thumb/nullmodem.jpg" srcset="/cilla/page/483/thumb-2x/nullmodem.jpg 2x,/cilla/page/483/thumb-3x/nullmodem.jpg 3x,/cilla/page/483/thumb-4x/nullmodem.jpg 4x" class="rounded img-fluid" alt="A "zero modem" adapter between the serial-to-USB and DB9-to-DB25 adapters" /></a></span> The AmigaOS offers a debug console as a simple way for debugging. Log data can be written via the linkable <code>Debug.lib</code>, which is also used by all kind of tools like <a href="https://aminet.net/package/dev/debug/MuForce" class="exts">MuForce</a>, Mungwall, or <a href="https://aminet.net/package/dev/debug/PatchWork" class="exts">PatchWork</a>. AmigaOS provides a simple internal debugger called <em>ROMWack</em> (which has been replaced by the even simpler <em>SAD</em> in later versions). But also <a href="https://www.diagrom.com/" class="exts">DiagROM</a> is writing diagnostics data via the serial port, which comes in handy when a RAM chip or something in the video area is broken.</p>
<p>The log output is sent to the serial port and can be read by a terminal connected to it. Back in the good old days, not so many hobbyists could afford an actual terminal or a second computer for that, so we used tools like Sushi or <a href="https://aminet.net/package/dev/debug/Sashimi" class="exts">Sashimi</a> to redirect the debug output into a Shell window, which worked fine unless the system has crashed too hard.</p>
<p>Today, I assume that almost all of the Amiga owners also have a second computer at home, and if it's just a second Amiga. 😉 This blog article is about how to connect your Amiga to your Linux PC, and get the debug output.</p>
<p>On the hardware side, you will need a construction with a DB25 female port on the one end, and an USB connector on the other end. I use one of those USB-to-Serial converters that can be found on hardware shops for little money. They are often equipped with a DB9 male connector, and are supposed to be connected to peripheral devices (like modems). To connect them to a computer, a so-called <em>zero modem</em> (or <em>null modem</em>) is required, which is just a small adapter that enables to connect two computers directly together by crossing the transmit and receive lines. Finally, we need a DB9-to-DB25 connector with the correct genders, to connect the other end of the zero modem to the Amiga.</p>
<p>This hardware stack is connected to the Amiga's serial port on the one end, and to a USB port of the PC on the other end. Remember to turn off the Amiga before connecting something to the serial port. Unlike USB, the ports of old computers are not designed for connecting or disconnecting devices while the system is powered. It could actually damage the system to do so!</p>
<p>On the software side, we don't need to install drivers on the Amiga. The debug or diagnostics output is just sent to the serial port. On Linux, we can use any terminal emulator. The most prominent is certainly <a href="https://salsa.debian.org/minicom-team/minicom/" class="exts">minicom</a>.</p>
<p>The default serial port settings are 9600-8N1 (9,600 bps, 8 bits per character, no parity, 1 stop bit). However, the debug output is just directly sent to the serial port. If you changed the serial parameters on Amiga side, and used the <code>serial.device</code> for something else, the debug output will use the current settings. Handshake must be turned off in any case, though.</p>
<p>Maybe the easiest way is to create a file called <code>~/.minirc.amiga</code> with the following content (change the <code>pu port</code> value to your actual TTY USB device):</p>
<pre class="prettyprint"><code>pu port /dev/ttyUSB0
pu baudrate 9600
pu bits 8
pu parity N
pu stopbits 1
pu rtscts No
pu xonxoff No
</code></pre>
<p>On many Linux distributions, the user also needs to be added to the <code>dialout</code> group in order to access a serial device:</p>
<pre class="prettyprint"><code class="language-sh">sudo usermod -aG dialout $(whoami)
</code></pre>
<p>After that, just start minicom with the <code>amiga</code> profile:</p>
<pre class="prettyprint"><code class="language-sh">minicom amiga
</code></pre>
<p>Now you should see all the debug output generated by AmigaOS on your minicom screen. For interactive debuggers like ROMWack, you can also type commands into the console.</p>
<p>To leave minicom, press <code>CTRL-A</code> and then <code>Q</code>. 😉</p>
<h2 id="amiga-cd32">Amiga CD32</h2>
<p><span class="ci-image float-right"><a href="/cilla/page/483/rs232converter.jpg" data-fancybox="ipg-45a38e0a" data-caption="A TTL-to-DB9 converter board and a PS/2 cable connected to it"><img src="/cilla/page/483/thumb/rs232converter.jpg" srcset="/cilla/page/483/thumb-2x/rs232converter.jpg 2x,/cilla/page/483/thumb-3x/rs232converter.jpg 3x,/cilla/page/483/thumb-4x/rs232converter.jpg 4x" class="rounded img-fluid" alt="A TTL-to-DB9 converter board and a PS/2 cable connected to it" /></a></span> Unlike other Amiga models, the CD32 has no dedicated RS-232 port. Instead of that, it provides a simple serial interface at the Aux port that is connected to Paula's UART pins internally.</p>
<p>To build an adapter, you need a PS/2 cable (e.g. from an extension cord or an old PS/2 input device) and a MAX3232 based TTL-to-DB9 level converter. These converters can be found at online marketplaces for a few Euro.</p>
<p>Cut one end of the cable and connect the wires to the converter like that:</p>
<ul>
<li>Pin 2: TXD</li>
<li>Pin 3 (and the shield): GND</li>
<li>Pin 4: VCC</li>
<li>Pin 6: RXD</li>
</ul>
<p>Leave the remaining two wires unconnected, and check for correct polarity before connecting the wires to the converter!</p>
<p>The CD32 does not provide any control and handshake signals, but fortunately they are not needed for debugging and diagnostics purposes.</p>2023-01-14T13:36:10ZAmiga 1200 Black Edition
https://shred.zone/cilla/page/484/amiga-1200-black-edition.html
<p>When I found this Amiga 1200, I felt pity for it. The case and keyboard was very yellowed, but what was even worse was the screwed up attempt to fit a Gotek drive into the case. The previous owner obviously tried to open the floppy disk area with some kind of cutter pincers, essentially ruining the case.</p>
<p><span class="ci-image"><a href="/cilla/page/484/before1.jpg" data-fancybox="ipg-e8d26df1" data-caption="The Amiga 1200 was very yellowed."><img src="/cilla/page/484/thumb/before1.jpg" srcset="/cilla/page/484/thumb-2x/before1.jpg 2x,/cilla/page/484/thumb-3x/before1.jpg 3x,/cilla/page/484/thumb-4x/before1.jpg 4x" class="rounded img-fluid" alt="The Amiga 1200 was very yellowed." /></a></span> <span class="ci-image"><a href="/cilla/page/484/before2.jpg" data-fancybox="ipg-e8d26df1" data-caption="The floppy drive was coarsely cut out, to make room for a Gotek drive."><img src="/cilla/page/484/thumb/before2.jpg" srcset="/cilla/page/484/thumb-2x/before2.jpg 2x,/cilla/page/484/thumb-3x/before2.jpg 3x,/cilla/page/484/thumb-4x/before2.jpg 4x" class="rounded img-fluid" alt="The floppy drive was coarsely cut out, to make room for a Gotek drive." /></a></span></p>
<p>My initial plan was to whiten the case and keyboard, clean the botched cut at the floppy drive with a rotary tool, and nicely close it again with a 3D-printed part. But then I got a better idea. 😁</p>
<h2 id="the-mainboard">The Mainboard</h2>
<p>Let's have a look inside first. There is a Rev 1D.4 board in good optical condition. I replaced the electrolytic capacitors, and upgraded the ROMs to AmigaOS 3.2.1.</p>
<p><span class="ci-image"><a href="/cilla/page/484/pcb.jpg" data-fancybox="ipg-e8d26df1" data-caption=" The recapped mainboard."><img src="/cilla/page/484/thumb/pcb.jpg" srcset="/cilla/page/484/thumb-2x/pcb.jpg 2x,/cilla/page/484/thumb-3x/pcb.jpg 3x,/cilla/page/484/thumb-4x/pcb.jpg 4x" class="rounded img-fluid" alt=" The recapped mainboard." /></a></span></p>
<p>On the bottom of the PCB, I found a copper wire for a so-called "floppy fix". When Escom was producing the final batch of Amiga 1200 systems, Amiga floppy drives were not available any more, and Escom had to find a way to use regular PC floppy drives instead. However, many games and demos with own trackloaders fail to load on machines with this modification.</p>
<p>The original floppy drive of this machine was not existing anymore, and Gotek drives can perfectly emulate Amiga floppy drives, so I decided to undo the floppy fix by removing the botch wire. To restore the original <code style="text-decoration:overline">RDY</code> signal, I instead put a wire from pin 34 of the internal floppy connector to pin 1 of the external connector.</p>
<p><span class="ci-image"><a href="/cilla/page/484/drivemod1.jpg" data-fancybox="ipg-e8d26df1" data-caption="The &quot;floppy fix&quot; cuts pin 34 from the original <span style="text-decoration:overline">RDY</span> line (not visible here), and instead connects it to the <span style="text-decoration:overline">CHNG</span> signal at pin 2."><img src="/cilla/page/484/thumb/drivemod1.jpg" srcset="/cilla/page/484/thumb-2x/drivemod1.jpg 2x,/cilla/page/484/thumb-3x/drivemod1.jpg 3x,/cilla/page/484/thumb-4x/drivemod1.jpg 4x" class="rounded img-fluid" alt="The "floppy fix" cuts pin 34 from the original RDY line (not visible here), and instead connects it to the CHNG signal at pin 2." /></a></span> <span class="ci-image"><a href="/cilla/page/484/drivemod2.jpg" data-fancybox="ipg-e8d26df1" data-caption="To undo the fix, remove the wire, and then connect pin 34 of the internal port with pin 1 of the external port, to restore the original <span style="text-decoration:overline">RDY</span> signal."><img src="/cilla/page/484/thumb/drivemod2.jpg" srcset="/cilla/page/484/thumb-2x/drivemod2.jpg 2x,/cilla/page/484/thumb-3x/drivemod2.jpg 3x,/cilla/page/484/thumb-4x/drivemod2.jpg 4x" class="rounded img-fluid" alt="To undo the fix, remove the wire, and then connect pin 34 of the internal port with pin 1 of the external port, to restore the original RDY signal." /></a></span></p>
<p>Since I was working on the bottom side of the PCB, I should also remove E123C and E125C, to enhance the stability of accelerator boards. However, on this machine these capacitors were not populated, so there was nothing to do.</p>
<p>It was finally time for a first thorough test run. Everything went fine, but then I noticed that the right mouse button was not working on both ports. I wrote <a href="/cilla/page/482/amiga-1200-mouse-button-fix.html">a separate blog article</a> about the cause and the fix, but to make a long story short, all I had to do was to replace four resistors with ferrites.</p>
<p>My work on the board was completed after that, and it passed all tests.</p>
<h2 id="the-extras">The Extras</h2>
<p>As with <a href="/cilla/tag/Restauration.html">my other refurbishments</a>, I'm not only cleaning the machine, but I also futureproof it with some extras.</p>
<p>First of all: The yellowed case with the ugly cut. I was sure that even with a skillful repair attempt, the case would never look really beautiful again. Also I always wanted to have a black Amiga, so I decided to rehouse the machine into a brand new, <a href="https://www.a1200.net/amiga-1200-case/" class="exts">black a1200.net replica case</a> instead.</p>
<p>The floppy drive was missing, but instead of the Gotek drive that was there as replacement, I decided to use a <a href="https://centuriontech.eu/product/goex_sd/" class="exts">Centuriontech GoEX</a> drive. It uses an SD card instead of an USB stick, and comes with a dial encoder, which makes selection of a floppy image much easier. There is also a matching OLED display for it, but for my new Amiga I preferred to use a tiny display that is not that noticeable.</p>
<p>The display itself is one of those 0.91" OLEDs one can find in virtually every maker shop. However it is important to swap pin 1 and 2 when soldering wires to it, as the power pins are swapped on this display type compared to the <a href="https://centuriontech.eu/product/oled_module/" class="exts">original GoEX display module</a>.</p>
<p>I then printed an <a href="https://www.thingiverse.com/thing:2745095" class="exts">A600 display module case</a>, which luckily also fits on an A1200. I used hot glue to assemble the module, but in retrospect I should have used standard glue instead, since the hot glue softened the PLA of the print. The module is then just clipped into the cooling vents of the Amiga, no need for gluing.</p>
<p><span class="ci-image"><a href="/cilla/page/484/oled1.jpg" data-fancybox="ipg-e8d26df1" data-caption="The OLED display with new wiring. Pin 1 and 2 need to be swapped."><img src="/cilla/page/484/thumb/oled1.jpg" srcset="/cilla/page/484/thumb-2x/oled1.jpg 2x,/cilla/page/484/thumb-3x/oled1.jpg 3x,/cilla/page/484/thumb-4x/oled1.jpg 4x" class="rounded img-fluid" alt="The OLED display with new wiring. Pin 1 and 2 need to be swapped." /></a></span> <span class="ci-image"><a href="/cilla/page/484/oled2.jpg" data-fancybox="ipg-e8d26df1" data-caption="The backside of the display module, before closing it."><img src="/cilla/page/484/thumb/oled2.jpg" srcset="/cilla/page/484/thumb-2x/oled2.jpg 2x,/cilla/page/484/thumb-3x/oled2.jpg 3x,/cilla/page/484/thumb-4x/oled2.jpg 4x" class="rounded img-fluid" alt="The backside of the display module, before closing it." /></a></span> <span class="ci-image"><a href="/cilla/page/484/oled3.jpg" data-fancybox="ipg-e8d26df1" data-caption="The display module put on the Amiga case."><img src="/cilla/page/484/thumb/oled3.jpg" srcset="/cilla/page/484/thumb-2x/oled3.jpg 2x,/cilla/page/484/thumb-3x/oled3.jpg 3x,/cilla/page/484/thumb-4x/oled3.jpg 4x" class="rounded img-fluid" alt="The display module put on the Amiga case." /></a></span></p>
<p>To use this kind of OLED, a file called <code>FF/FF.CFG</code> needs to be created on the SD card, which contains this line:</p>
<pre class="prettyprint"><code>display-type = oled-128x32
</code></pre>
<p>I also added an Indivision AGA MK3 for a pixel-perfect picture on modern TVs via HDMI. While doing so, I found out that the a1200.net replica case seems to have different measures than the original case, so I created a <a href="https://www.printables.com/model/263793-a1200net-rear-trapdoor-for-indivision-aga-mk3" class="exts">modified trapdoor and holder</a> for this kind of case.</p>
<p><span class="ci-image"><a href="/cilla/page/484/hdmi1.jpg" data-fancybox="ipg-e8d26df1" data-caption="A black trapdoor for the HDMI connector."><img src="/cilla/page/484/thumb/hdmi1.jpg" srcset="/cilla/page/484/thumb-2x/hdmi1.jpg 2x,/cilla/page/484/thumb-3x/hdmi1.jpg 3x,/cilla/page/484/thumb-4x/hdmi1.jpg 4x" class="rounded img-fluid" alt="A black trapdoor for the HDMI connector." /></a></span> <span class="ci-image"><a href="/cilla/page/484/hdmi2.jpg" data-fancybox="ipg-e8d26df1" data-caption="A holder keeps the HDMI board in place and prohibits that it pivots around the screw."><img src="/cilla/page/484/thumb/hdmi2.jpg" srcset="/cilla/page/484/thumb-2x/hdmi2.jpg 2x,/cilla/page/484/thumb-3x/hdmi2.jpg 3x,/cilla/page/484/thumb-4x/hdmi2.jpg 4x" class="rounded img-fluid" alt="A holder keeps the HDMI board in place and prohibits that it pivots around the screw." /></a></span></p>
<p>The computer came with a <a href="http://amiga.resource.cx/exp/marpet1208" class="ext">Marpet Developments M1207</a> RAM expansion in the expansion port. It got a fresh button cell, and now provides the machine with 4MB of additional Fast RAM, a 68882 FPU, and a RTC.</p>
<h2 id="assembling">Assembling</h2>
<p>What's missing? The <a href="https://www.a1200.net/new-amiga-keycaps/" class="exts">black keycaps</a> that are matching the black case! After many years of waiting they were finally available, and I got a set delivered right in time before Christmas.</p>
<p><span class="ci-image"><a href="/cilla/page/484/keycaps1.jpg" data-fancybox="ipg-e8d26df1" data-caption="The black replica keycaps look awesome!"><img src="/cilla/page/484/thumb/keycaps1.jpg" srcset="/cilla/page/484/thumb-2x/keycaps1.jpg 2x,/cilla/page/484/thumb-3x/keycaps1.jpg 3x,/cilla/page/484/thumb-4x/keycaps1.jpg 4x" class="rounded img-fluid" alt="The black replica keycaps look awesome!" /></a></span> <span class="ci-image"><a href="/cilla/page/484/keycaps2.jpg" data-fancybox="ipg-e8d26df1" data-caption="It took a while to replace the original caps with the new ones."><img src="/cilla/page/484/thumb/keycaps2.jpg" srcset="/cilla/page/484/thumb-2x/keycaps2.jpg 2x,/cilla/page/484/thumb-3x/keycaps2.jpg 3x,/cilla/page/484/thumb-4x/keycaps2.jpg 4x" class="rounded img-fluid" alt="It took a while to replace the original caps with the new ones." /></a></span></p>
<p>The black case does not include badges, but I found a nice black one <a href="https://retro8bitshop.com/product/amiga-1200-special-badges-0-5mm-thick/" class="exts">from Badgeman</a>.</p>
<p>After that, the Amiga was finally ready for the final assembly.</p>
<p><span class="ci-image"><a href="/cilla/page/484/complete.jpg" data-fancybox="ipg-e8d26df1" data-caption="Everything is in place."><img src="/cilla/page/484/thumb/complete.jpg" srcset="/cilla/page/484/thumb-2x/complete.jpg 2x,/cilla/page/484/thumb-3x/complete.jpg 3x,/cilla/page/484/thumb-4x/complete.jpg 4x" class="rounded img-fluid" alt="Everything is in place." /></a></span></p>
<p>If Commodore had given the choice of the case color back in the 1990's, I would have chosen a black Amiga. And now here it is, an all black Amiga 1200 with a completely new outerior, and modernized interior.</p>
<p><span class="ci-image"><a href="/cilla/page/484/0default.jpg" data-fancybox="ipg-e8d26df1" data-caption="The completed Amiga 1200 Black Edition."><img src="/cilla/page/484/maxi/0default.jpg" srcset="/cilla/page/484/maxi-2x/0default.jpg 2x,/cilla/page/484/maxi-3x/0default.jpg 3x,/cilla/page/484/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="The completed Amiga 1200 Black Edition." /></a></span> <span class="ci-image"><a href="/cilla/page/484/leds.jpg" data-fancybox="ipg-e8d26df1" data-caption="Power, floppy, and harddrive LEDs in custom colors."><img src="/cilla/page/484/thumb/leds.jpg" srcset="/cilla/page/484/thumb-2x/leds.jpg 2x,/cilla/page/484/thumb-3x/leds.jpg 3x,/cilla/page/484/thumb-4x/leds.jpg 4x" class="rounded img-fluid" alt="Power, floppy, and harddrive LEDs in custom colors." /></a></span> <span class="ci-image"><a href="/cilla/page/484/badge.jpg" data-fancybox="ipg-e8d26df1" data-caption="Of course the Amiga 1200 badge is black, too."><img src="/cilla/page/484/thumb/badge.jpg" srcset="/cilla/page/484/thumb-2x/badge.jpg 2x,/cilla/page/484/thumb-3x/badge.jpg 3x,/cilla/page/484/thumb-4x/badge.jpg 4x" class="rounded img-fluid" alt="Of course the Amiga 1200 badge is black, too." /></a></span></p>2023-01-06T09:54:02ZAmiga 1000 Restauration, Part 3
https://shred.zone/cilla/page/479/amiga-1000-restauration-part-3.html
<p>In the <a href="/cilla/page/478/amiga-1000-restauration-part-2.html">previous part</a>, I refurbished the keyboard of the Amiga 1000. It was in a bad state, and truly deserved to get its own part. Now I will replace the floppy drive with a <a href="https://centuriontech.eu/product/goex-on-pills-drive/" class="exts">Centuriontech GOEX on pills</a> floppy simulator, and then put everything back together.</p>
<h2 id="floppy-led">Floppy LED</h2>
<p>The floppy LED of the Amiga 1000 is not connected to the mainboard, but to the floppy drive. The GOEX drive does not provide a similar connector, so I had to come up with a solution. Fortunately, the Amiga made it faily easy.</p>
<p>On all Amiga models, the floppy LED represents the state of the drive motor. It lights up as long as the motor is powered. On the Amiga 1000, the motor of the internal drive is controlled by a <code>/MTR0</code> signal on pin 16 of the floppy connector. If it is <code>LOW</code>, the motor is powered, and the floppy LED is supposed to light up. The 7438 buffer inside the Amiga has a maximum output current of 48mA, while the LED has a forward current of 30mA, so in theory the LED (and a 120Ω series resistor) could be connected directly to the <code>/MTR0</code> line and +5V. But I wanted to be on the safe side, so I added an inverting switch using a standard PNP transistor and two resistors.</p>
<p><div class="text-center"><span class="ci-svg-image"><svg width="304.12" height="283.08" version="1.1" viewBox="0 0 15206 14154" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><title>SVG Picture created as drive-led.svg date 2022/10/31 09:06:35</title><desc>Picture generated by Eeschema-SVG</desc><g fill-opacity="0" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"><g transform="translate(-37931 -27696)"><g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"><path d="m48200 29500 300-500"/><path d="m48500 3e4v-1e3"/><path d="m48500 29000 300 500"/></g><text x="48500" y="28249.961" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1586.3386">+5V</text><g class="stroked-text"><desc>+5V</desc><path d="m47857 28035h381"/><path d="m48047 28226v-381"/><path d="m48714 27726h-238l-24 238 24-24 47-24h119l48 24 24 24 24 47v119l-24 48-24 24-48 24h-119l-47-24-24-24"/><path d="m48880 27726 167 500 167-500"/></g></g><g transform="translate(-37931 -27696)"><g fill-opacity="0"><g stroke-width="100"><rect x="43000" y="32600" width="2e3" height="800" rx="0"/></g><g stroke-width="60"><path d="m43000 33000h-500"/><path d="m45000 33000h500"/><text x="44000" y="32250" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1512.3622">10K</text><g class="stroked-text"><desc>10K</desc><path d="m43654 32226h-285"/><path d="m43511 32226v-500l-47 71-48 48-47 24"/><path d="m43964 31726h47l48 24 24 23 24 48 23 95v119l-23 95-24 48-24 24-48 24h-47l-48-24-24-24-23-48-24-95v-119l24-95 23-48 24-23 48-24"/><path d="m44345 32226v-500"/><path d="m44630 32226-214-286"/><path d="m44630 31726-285 285"/></g></g><g stroke-width="100"><rect x="43000" y="30100" width="2e3" height="800" rx="0"/></g><g stroke-width="60"><path d="m43000 30500h-500"/><path d="m45000 30500h500"/><text x="44000" y="29750" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1107.6378">1M</text><g class="stroked-text"><desc>1M</desc><path d="m43857 29726h-286"/><path d="m43714 29726v-500l-48 71-47 48-48 24"/><path d="m44071 29726v-500l167 357 166-357v500"/></g></g></g><g fill="none" stroke-width="60"><path d="m47750 33250 750 750"/><path d="m47750 32750 750-750"/></g><g fill-opacity="0" stroke-width="200"><path d="m47750 33750v-1500" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="200"/></g><g><g fill-opacity="1" stroke-width="60"><path d="m48400 32300-200-200-200 400z" fill-opacity="1" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/></g><g fill-opacity="0" stroke-width="100"><circle cx="48000" cy="33000" r="1110"/></g><g fill-opacity="0" stroke-width="60"><path d="m47750 33000h-2250"/><path d="m48500 34000v1e3"/><path d="m48500 32000v-1e3"/><text x="50745.551" y="33250" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="2488.5828">BC557</text><g class="stroked-text"><desc>BC557</desc><path d="m49816 32964 72 24 24 23 24 48v71l-24 48-24 24-48 24h-190v-500h166l48 24 24 23 24 48v48l-24 47-24 24-48 24h-166"/><path d="m50436 33178-24 24-72 24h-47l-72-24-47-48-24-47-24-96v-71l24-95 24-48 47-47 72-24h47l72 24 24 23"/><path d="m50888 32726h-238l-24 238 24-24 47-24h119l48 24 24 24 24 47v119l-24 48-24 24-48 24h-119l-47-24-24-24"/><path d="m51364 32726h-238l-24 238 24-24 48-24h119l47 24 24 24 24 47v119l-24 48-24 24-47 24h-119l-48-24-24-24"/><path d="m51555 32726h333l-214 500"/></g></g><g fill-opacity="1" stroke-width="100"><rect x="48000" y="41600" width="1e3" height="200" rx="0"/></g></g><g fill-opacity="0"><g stroke-width="60"><path d="m48500 41000v600" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/></g><g stroke-width="100"><path d="m49000 4e4h-1e3" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="100"/></g><g stroke-width="60"><path d="m48500 4e4v-1e3" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/></g><g stroke-width="100"><path d="m49000 39000h-1e3l500 1e3z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="100"/></g></g><g fill-opacity="0"><g stroke-width="60"><path d="m48800 40700 600 600v-300 300h-300" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/><path d="m48800 40200 600 600v-300 300h-300" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/><path d="m48500 4e4v1e3"/><path d="m48500 39000v-1e3"/><text x="51328.859" y="39750" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="3655.2363">Drive LED</text><g class="stroked-text"><desc>Drive LED</desc><path d="m49650 39726v-500h119l71 24 48 47 24 48 23 95v71l-23 96-24 47-48 48-71 24h-119"/><path d="m50150 39726v-334"/><path d="m50150 39488 24-48 23-24 48-24h48"/><path d="m50459 39726v-334"/><path d="m50459 39226-24 24 24 23 24-23-24-24v47"/><path d="m50650 39392 119 334 119-334"/><path d="m51269 39702-48 24h-95l-48-24-23-48v-190l23-48 48-24h95l48 24 24 48v47l-238 48"/><path d="m52126 39726h-238v-500"/><path d="m52293 39464h166"/><path d="m52531 39726h-238v-500h238"/><path d="m52745 39726v-500h119l71 24 48 47 24 48 24 95v71l-24 96-24 47-48 48-71 24h-119"/></g></g><g stroke-width="100"><rect x="48100" y="35500" width="800" height="2e3" rx="0"/></g><g stroke-width="60"><path d="m48500 37500v500"/><path d="m48500 35500v-500"/><text x="50495.551" y="36750" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1988.5826">120R</text><g class="stroked-text"><desc>120R</desc><path d="m49912 36726h-286"/><path d="m49769 36726v-500l-48 71-47 48-48 24"/><path d="m50102 36273 24-23 48-24h119l47 24 24 23 24 48v48l-24 71-286 286h310"/><path d="m50697 36226h48l48 24 23 23 24 48 24 95v119l-24 95-24 48-23 24-48 24h-48l-47-24-24-24-24-48-24-95v-119l24-95 24-48 24-23 47-24"/><path d="m51364 36726-167-238"/><path d="m51078 36726v-500h191l47 24 24 23 24 48v71l-24 48-24 24-47 24h-191"/></g></g></g></g><g transform="translate(-37931 -27696)"><text x="39925" y="33250" font-size="666.65px" opacity="0" text-anchor="end" lengthAdjust="spacingAndGlyphs" textLength="1988.5826">~{MTR0}</text><g class="stroked-text"><desc>~{MTR0}</desc><path d="m37966 32585h571"/><path d="m38085 33226v-500l167 357 166-357v500"/><path d="m38537 32585h381"/><path d="m38585 32726h286"/><path d="m38728 33226v-500"/><path d="m38918 32585h500"/><path d="m39323 33226-167-238"/><path d="m39037 33226v-500h191l47 24 24 23 24 48v71l-24 48-24 24-47 24h-191"/><path d="m39418 32585h477"/><path d="m39633 32726h47l48 24 24 23 23 48 24 95v119l-24 95-23 48-24 24-48 24h-47l-48-24-24-24-24-48-23-95v-119l23-95 24-48 24-23 48-24"/></g><path d="m40500 33000-250-250h-250v500h250z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/><text x="40500" y="32862.48" font-size="666.65px" opacity="0" lengthAdjust="spacingAndGlyphs" textLength="1012.3622">16</text><g class="stroked-text"><desc>16</desc><path d="m40910 32838h-285"/><path d="m40768 32838v-500l-48 72-48 47-47 24"/><path d="m41339 32338h-95l-48 24-24 24-47 71-24 95v191l24 48 24 23 47 24h95l48-24 24-23 24-48v-119l-24-48-24-24-48-23h-95l-47 23-24 24-24 48"/></g><path d="m45500 30500h3e3"/><path d="m48500 3e4v500"/><path d="m42000 33000h500"/><path d="m40500 33000h1500"/><path d="m42000 30500v2500"/><path d="m42500 30500h-500"/><path d="m48500 30500v500"/><text x="44000" y="32250" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1512.3622">10K</text><g class="stroked-text"><desc>10K</desc><path d="m43654 32226h-285"/><path d="m43511 32226v-500l-47 71-48 48-47 24"/><path d="m43964 31726h47l48 24 24 23 24 48 23 95v119l-23 95-24 48-24 24-48 24h-47l-48-24-24-24-23-48-24-95v-119l24-95 23-48 24-23 48-24"/><path d="m44345 32226v-500"/><path d="m44630 32226-214-286"/><path d="m44630 31726-285 285"/></g><path d="m43000 33000h-500"/><path d="m45000 33000h500"/><text x="50745.551" y="33250" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="2488.5828">BC557</text><g class="stroked-text"><desc>BC557</desc><path d="m49816 32964 72 24 24 23 24 48v71l-24 48-24 24-48 24h-190v-500h166l48 24 24 23 24 48v48l-24 47-24 24-48 24h-166"/><path d="m50436 33178-24 24-72 24h-47l-72-24-47-48-24-47-24-96v-71l24-95 24-48 47-47 72-24h47l72 24 24 23"/><path d="m50888 32726h-238l-24 238 24-24 47-24h119l48 24 24 24 24 47v119l-24 48-24 24-48 24h-119l-47-24-24-24"/><path d="m51364 32726h-238l-24 238 24-24 48-24h119l47 24 24 24 24 47v119l-24 48-24 24-47 24h-119l-48-24-24-24"/><path d="m51555 32726h333l-214 500"/></g><path d="m47750 33000h-2250"/><path d="m48500 34000v1e3"/><path d="m48500 32000v-1e3"/><text x="51328.859" y="39750" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="3655.2363">Drive LED</text><g class="stroked-text"><desc>Drive LED</desc><path d="m49650 39726v-500h119l71 24 48 47 24 48 23 95v71l-23 96-24 47-48 48-71 24h-119"/><path d="m50150 39726v-334"/><path d="m50150 39488 24-48 23-24 48-24h48"/><path d="m50459 39726v-334"/><path d="m50459 39226-24 24 24 23 24-23-24-24v47"/><path d="m50650 39392 119 334 119-334"/><path d="m51269 39702-48 24h-95l-48-24-23-48v-190l23-48 48-24h95l48 24 24 48v47l-238 48"/><path d="m52126 39726h-238v-500"/><path d="m52293 39464h166"/><path d="m52531 39726h-238v-500h238"/><path d="m52745 39726v-500h119l71 24 48 47 24 48 24 95v71l-24 96-24 47-48 48-71 24h-119"/></g><path d="m48500 4e4v1e3"/><path d="m48500 39000v-1e3"/><text x="50495.551" y="36750" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1988.5826">120R</text><g class="stroked-text"><desc>120R</desc><path d="m49912 36726h-286"/><path d="m49769 36726v-500l-48 71-47 48-48 24"/><path d="m50102 36273 24-23 48-24h119l47 24 24 23 24 48v48l-24 71-286 286h310"/><path d="m50697 36226h48l48 24 23 23 24 48 24 95v119l-24 95-24 48-23 24-48 24h-48l-47-24-24-24-24-48-24-95v-119l24-95 24-48 24-23 47-24"/><path d="m51364 36726-167-238"/><path d="m51078 36726v-500h191l47 24 24 23 24 48v71l-24 48-24 24-47 24h-191"/></g><path d="m48500 37500v500"/><path d="m48500 35500v-500"/></g></g><g transform="translate(-37931 -27696)" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"><circle cx="42000" cy="33000" r="180"/><circle cx="48500" cy="30500" r="180"/></g><metadata><rdf:RDF><cc:Work rdf:about=""><dc:title>SVG Picture created as drive-led.svg date 2022/10/31 09:06:35</dc:title></cc:Work></rdf:RDF></metadata></svg></span></div></p>
<p>I used a BC557, but any other standard switching PNP transistor will do as well. For the LED, I preferred to have a green floppy LED instead of the original red one. I used a Dialight 521-9266, which has the same dimensions as the original LED. There should be a pullup resistor on the <code>/MTR0</code> line, but it's also working without, so on my system I left it out for space reasons.</p>
<p>On the GOEX board, +5V can be found on an unused pad next to the voltage regulator. GND can be found at an unused header for an optional encoder.</p>
<p><span class="ci-image"><a href="/cilla/page/479/driveled1.jpg" data-fancybox="ipg-4774e445" data-caption="The base resistor is connected straight to pin 16 of the header. +5V can be taken from a pad next to the voltage regulator. GND is available at the unused encoder header. A bit of hot glue fixes the wires to the board."><img src="/cilla/page/479/thumb/driveled1.jpg" srcset="/cilla/page/479/thumb-2x/driveled1.jpg 2x,/cilla/page/479/thumb-3x/driveled1.jpg 3x,/cilla/page/479/thumb-4x/driveled1.jpg 4x" class="rounded img-fluid" alt="The base resistor is connected straight to pin 16 of the header. +5V can be taken from a pad next to the voltage regulator. GND is available at the unused encoder header. A bit of hot glue fixes the wires to the board." /></a></span>
<span class="ci-image"><a href="/cilla/page/479/driveled2.jpg" data-fancybox="ipg-4774e445" data-caption="I replaced the original red floppy LED with a green one, just because I like it better. 😉"><img src="/cilla/page/479/thumb/driveled2.jpg" srcset="/cilla/page/479/thumb-2x/driveled2.jpg 2x,/cilla/page/479/thumb-3x/driveled2.jpg 3x,/cilla/page/479/thumb-4x/driveled2.jpg 4x" class="rounded img-fluid" alt="I replaced the original red floppy LED with a green one, just because I like it better. 😉" /></a></span></p>
<h2 id="on-screen-display">On Screen Display</h2>
<p>The GOEX drive needs some kind of display, to show the floppy disk file that is currently selected, and other options. My first plan was to glue a tiny OLED display to the front of the case.</p>
<p>However, the "GOEX on pills" model comes with an <acronym title="On Screen Display">OSD</acronym> connector. It reads the <code>CSYNC</code> signal from the Amiga, and generates a pixel signal that is overlaid to the Amiga RGB signal. Depending on the color component the pixel signal is connected to, the OSD text is either red, green, or blue (with the corresponding complementary color as background).</p>
<p>The <code>CSYNC</code> signal can be taken from pin 12 of U6A. The pixel signal is connected to one of the 75Ω resistors: R25 (red), R24 (green), or R23 (blue). The wire must be soldered to that end of the resistor that is closer to the monitor connector, otherwise the OSD overlay will not be visible on white screens.</p>
<p><span class="ci-image"><a href="/cilla/page/479/osd1.jpg" data-fancybox="ipg-4774e445" data-caption="The CSYNC signal is taken from U6A pin 12."><img src="/cilla/page/479/thumb/osd1.jpg" srcset="/cilla/page/479/thumb-2x/osd1.jpg 2x,/cilla/page/479/thumb-3x/osd1.jpg 3x,/cilla/page/479/thumb-4x/osd1.jpg 4x" class="rounded img-fluid" alt="The CSYNC signal is taken from U6A pin 12." /></a></span>
<span class="ci-image"><a href="/cilla/page/479/osd2.jpg" data-fancybox="ipg-4774e445" data-caption="The RGB signal is connected to R24 for a green OSD color."><img src="/cilla/page/479/thumb/osd2.jpg" srcset="/cilla/page/479/thumb-2x/osd2.jpg 2x,/cilla/page/479/thumb-3x/osd2.jpg 3x,/cilla/page/479/thumb-4x/osd2.jpg 4x" class="rounded img-fluid" alt="The RGB signal is connected to R24 for a green OSD color." /></a></span></p>
<p>The other end of the two wires are connected to the respective <code>CSYNC</code> and <code>RGB</code> pins of the OSD header of the GOEX drive. It is also possible to control the GOEX drive with the Amiga keyboard, but I didn't want to do more hardware modifications, especially if it involves soldering wires directly to one of the CIAs. I prefer that I still have to touch the floppy slot for changing floppy disks, even if it's just virtually.</p>
<h2 id="reassembly">Reassembly</h2>
<p>A trained technician should definitely overhaul the PSU, <a href="/cilla/page/477/amiga-1000-restauration-part-1.html#the-psu">to avoid damage to the hardware or spectacular explosions of safety capacitors</a>. @DingensCGN of the a1k.org forum did an excellent job there. He replaced all electrolytic capacitors, and did a full load test including checking the temperatures of the components with a thermographic camera. A big shout-out to him!</p>
<p><span class="ci-image"><a href="/cilla/page/479/psu.jpg" data-fancybox="ipg-4774e445" data-caption="The PSU was overhauled by @DingensCGN at a1k.org."><img src="/cilla/page/479/thumb/psu.jpg" srcset="/cilla/page/479/thumb-2x/psu.jpg 2x,/cilla/page/479/thumb-3x/psu.jpg 3x,/cilla/page/479/thumb-4x/psu.jpg 4x" class="rounded img-fluid" alt="The PSU was overhauled by @DingensCGN at a1k.org." /></a></span>
<span class="ci-image"><a href="/cilla/page/479/psu-temp.jpg" data-fancybox="ipg-4774e445" data-caption="Result of the thermographic camera check: The load resistors are getting rather hot, but that's normal. The other components stay cool."><img src="/cilla/page/479/thumb/psu-temp.jpg" srcset="/cilla/page/479/thumb-2x/psu-temp.jpg 2x,/cilla/page/479/thumb-3x/psu-temp.jpg 3x,/cilla/page/479/thumb-4x/psu-temp.jpg 4x" class="rounded img-fluid" alt="Result of the thermographic camera check: The load resistors are getting rather hot, but that's normal. The other components stay cool." /></a></span></p>
<p>This Amiga has a separate piggyback board, which I had removed for cleaning and re-capping. It is connected to the mainboard by some headers at different places, which makes reseating it a bit tricky. It is crucial that all headers are properly connected.</p>
<p><span class="ci-image"><a href="/cilla/page/479/daughter.jpg" data-fancybox="ipg-4774e445" data-caption="The piggyback board must be carefully reconnected."><img src="/cilla/page/479/thumb/daughter.jpg" srcset="/cilla/page/479/thumb-2x/daughter.jpg 2x,/cilla/page/479/thumb-3x/daughter.jpg 3x,/cilla/page/479/thumb-4x/daughter.jpg 4x" class="rounded img-fluid" alt="The piggyback board must be carefully reconnected." /></a></span></p>
<p>For the GOEX drive, I designed a <a href="https://www.printables.com/de/model/265808-amiga-1000-goex-drive-mod" class="exts">3D printed frame</a> for the Amiga 1000. It holds the drive in its correct position, and also holds the original eject button so the hole in the front is closed. My intention is that the GOEX drive should be as invisible as possible, so the original look of the Amiga 1000 is maintained. I guess I managed that.</p>
<p><span class="ci-image"><a href="/cilla/page/479/drive1.jpg" data-fancybox="ipg-4774e445" data-caption="GOEX drive on the Amiga 1000 mounting frame."><img src="/cilla/page/479/thumb/drive1.jpg" srcset="/cilla/page/479/thumb-2x/drive1.jpg 2x,/cilla/page/479/thumb-3x/drive1.jpg 3x,/cilla/page/479/thumb-4x/drive1.jpg 4x" class="rounded img-fluid" alt="GOEX drive on the Amiga 1000 mounting frame." /></a></span>
<span class="ci-image"><a href="/cilla/page/479/drive2.jpg" data-fancybox="ipg-4774e445" data-caption="The best place I could find for the grounding."><img src="/cilla/page/479/thumb/drive2.jpg" srcset="/cilla/page/479/thumb-2x/drive2.jpg 2x,/cilla/page/479/thumb-3x/drive2.jpg 3x,/cilla/page/479/thumb-4x/drive2.jpg 4x" class="rounded img-fluid" alt="The best place I could find for the grounding." /></a></span>
<span class="ci-image"><a href="/cilla/page/479/drive3.jpg" data-fancybox="ipg-4774e445" data-caption="The GOEX drive inside the Amiga floppy frame."><img src="/cilla/page/479/thumb/drive3.jpg" srcset="/cilla/page/479/thumb-2x/drive3.jpg 2x,/cilla/page/479/thumb-3x/drive3.jpg 3x,/cilla/page/479/thumb-4x/drive3.jpg 4x" class="rounded img-fluid" alt="The GOEX drive inside the Amiga floppy frame." /></a></span></p>
<p>And that's it. The system is fully assembled now.</p>
<p><span class="ci-image"><a href="/cilla/page/479/board.jpg" data-fancybox="ipg-4774e445" data-caption="The fully reassembled system."><img src="/cilla/page/479/thumb/board.jpg" srcset="/cilla/page/479/thumb-2x/board.jpg 2x,/cilla/page/479/thumb-3x/board.jpg 3x,/cilla/page/479/thumb-4x/board.jpg 4x" class="rounded img-fluid" alt="The fully reassembled system." /></a></span></p>
<p>I mounted the top shield, attached the front plate, closed the case, and connected the 256KB memory expansion to the front slot.</p>
<p>And then came the moment of truth. I flipped the power switch. The system started up. I expected the 230V PSU fan to be rather noisy, and was very surprised that it is almost inaudible, and could easily compete with modern ultra-silent 12V fans of the same size.</p>
<p>Then the famous Kickstart screen appeared, together with the FlashFloppy OSD.</p>
<p><span class="ci-image"><a href="/cilla/page/479/kickstart.jpg" data-fancybox="ipg-4774e445" data-caption="The famous Kickstart screen, with the magenta OSD from the GOEX drive."><img src="/cilla/page/479/thumb/kickstart.jpg" srcset="/cilla/page/479/thumb-2x/kickstart.jpg 2x,/cilla/page/479/thumb-3x/kickstart.jpg 3x,/cilla/page/479/thumb-4x/kickstart.jpg 4x" class="rounded img-fluid" alt="The famous Kickstart screen, with the magenta OSD from the GOEX drive." /></a></span></p>
<p>I loaded the Kickstart ADB file from the GOEX drive, and after that I changed to the first disk of the famous Red Sector Megademo. The Amiga just dutifully loaded it.</p>
<p><span class="ci-image"><a href="/cilla/page/479/megademo.jpg" data-fancybox="ipg-4774e445" data-caption="Red Sector Megademo is loading, here with green OSD because of the dark background."><img src="/cilla/page/479/thumb/megademo.jpg" srcset="/cilla/page/479/thumb-2x/megademo.jpg 2x,/cilla/page/479/thumb-3x/megademo.jpg 3x,/cilla/page/479/thumb-4x/megademo.jpg 4x" class="rounded img-fluid" alt="Red Sector Megademo is loading, here with green OSD because of the dark background." /></a></span></p>
<p>Everything ran smoothly! The green color of the OSD certainly adds a lot to the 1980s retro feeling of that machine. It looks quite like those OSDs on old TVs or VCRs. 😆</p>
<h2 id="configuring-flashfloppy">Configuring FlashFloppy</h2>
<p>There were two things that were bugging me. The first was that I'd like to run a cold start of the machine as simple as possible, so the GOEX drive should always select the Kickstart ADF first when the system is powered up. The second was that the OSD was shown on the screen for much too long. It should disappear a few seconds after disk inactivity.</p>
<p>Both is easily configured. First, a directory called <code>FF</code> needs to be created on the SD card. Then a <code>FF/FF.CFG</code> file needs to be created, having this content:</p>
<pre class="prettyprint"><code>image-on-startup = static
display-off-secs = 5
</code></pre>
<p>A second file called <code>FF/IMAGE_A.CFG</code> contains the file name of the Kickstart ADF file on the SD card.</p>
<h2 id="welcome">Welcome!</h2>
<p>And that's it! I am, and have always been, a big fan of the Amiga. I learned a lot on my Amigas, and they were the foundation of my career as professional software developer.</p>
<p><span class="ci-image"><a href="/cilla/page/479/0default.jpg" data-fancybox="ipg-4774e445" data-caption="The fully restaured Amiga 1000."><img src="/cilla/page/479/maxi/0default.jpg" srcset="/cilla/page/479/maxi-2x/0default.jpg 2x,/cilla/page/479/maxi-3x/0default.jpg 3x,/cilla/page/479/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="The fully restaured Amiga 1000." /></a></span></p>
<p>I always considered the Amiga 1000 to be the pearl of my Amiga collection, and I am happy and proud that I got the chance to own such a beautiful machine now.</p>2022-10-31T16:41:06ZAmiga 1200 Mouse Button Fix
https://shred.zone/cilla/page/482/amiga-1200-mouse-button-fix.html
<p>While I was restauring an Amiga 1200, I noticed that on that machine, the right and middle mouse buttons did not react on both ports. Checking it further, it turned out that it was working with an original Amiga mouse, but failed with my <a href="https://github.com/shred/yami" class="exts">YAMI mouse interface</a>. The mouse interface could not be the cause though, as it is actually working reliably for decades on all kind of Amigas, including an Amiga 1200.</p>
<p>The problem is <a href="https://github.com/simoninns/SmallyMouse2/issues/6" class="exts">already known to the community</a>, and also seems to affect other mouse interfaces. The mitigation options I could find so far were:</p>
<ul>
<li>Just use the original Amiga mouse. 😉</li>
<li>Modify the mouse interface. There is a "fixed" version available for some of them.</li>
<li>Use a "FixRMB" tool. This tool needs to be started first though, so it won't work for reaching the boot menu or in games. It also requires a mouse interface with internal pull-up resistors. (YAMI does not have those, for example.)</li>
<li>Some said they were lucky with replacing the Paula chip, but it requires experience in soldering.</li>
</ul>
<p>None of these options is really appealing to me. I want this Amiga to work like all the others. So I tried to figure out what is the actual problem here, and how to fix it properly.</p>
<p>The middle and right mouse buttons are connected to the <code>POT</code> pins of Paula. These inputs are actually made for analog joysticks, and provide a very simple <acronym title="Analog Digital Converter">ADC</acronym>. The analog joystick charges a capacitor, while a counter inside Paula is taking the time. As soon as the voltage of the capacitor reaches a certain level, the timer is stopped. The position of the joystick can be evaluated by the time it needed to charge the capacitor.</p>
<p>But there is also a digital mode, which is used for mouse buttons. If enabled, a resistor inside Paula pulls up the <code>POT</code> line. If the mouse button is pressed, the mouse switch pulls the line to <code>LOW</code>, which can then be read from the Paula registers.</p>
<p>When an original mouse was connected, the <code>POT</code> line was pulled to 0.9V while the button was depressed. However, when the mouse interface was connected, the line was only pulled to 1.1V. It seems like a tiny difference, but for this Paula chip, it already makes the difference between "button pressed" and "button released".</p>
<p><span class="ci-image float-right"><a href="/cilla/page/482/paula.jpg" data-fancybox="ipg-54be7b41" data-caption="The affected Paula with &quot;4193&quot; date code."><img src="/cilla/page/482/thumb/paula.jpg" srcset="/cilla/page/482/thumb-2x/paula.jpg 2x,/cilla/page/482/thumb-3x/paula.jpg 3x,/cilla/page/482/thumb-4x/paula.jpg 4x" class="rounded img-fluid" alt="The affected Paula with "4193" date code." /></a></span> Only a certain batch of Paula chips seems to be affected. This is the reason why this problem does not occur on all Amiga 1200, but presumably only on some 1D.4 boards. This is also the reason why replacing the Paula chip is fixing that issue. On my board, a "CSG 8364R7PL" with date code <acronym title="week 41, 1993">4193</acronym> is used. I also heard of one more case with a Paula chip of the same production week.</p>
<p>Next question: Why only Amiga 1200 models seem to be affected by this issue, although it is likely that the affected Paula batch was also used in Amiga 4000 production? When comparing the schematics of both machines, there is a notable difference. This is a simplified extract of the joystick or mouse port:</p>
<p><div class="text-center"><span class="ci-svg-image"><svg width="246.48" height="201.87" version="1.1" viewBox="0 0 19719 16150" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><title>SVG Picture created as paula-pot.svg date 2022/10/10 11:01:53</title><desc>Picture generated by Eeschema-SVG</desc><g transform="translate(-27290 -27040)" fill-opacity="0" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"><g fill="none" stroke-width="60"><path d="m32750 42750h500"/><path d="m32950 43000h100"/><path d="m33000 42500v-500"/><path d="m33500 42500h-1e3"/></g><g fill-opacity="1" stroke-width="60"><circle cx="29700" cy="28500" r="300"/><circle cx="29700" cy="30500" r="300"/><circle cx="29700" cy="32500" r="300"/><circle cx="29700" cy="34500" r="300"/><circle cx="29700" cy="36500" r="300"/></g><g fill="none" fill-opacity="0" stroke-width="60"><path d="m30500 28500h-500"/><path d="m30500 29500h-1700"/><path d="m30500 30500h-500"/><path d="m30500 31500h-1700"/><path d="m30500 32500h-500"/><path d="m30500 33500h-1700"/><path d="m30500 34500h-500"/><path d="m30500 35500h-1700"/><path d="m30500 36500h-500"/></g><g fill-opacity="0" stroke-width="100"><path d="m30500 27250v10500l-3e3 -1500v-7500z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="100"/></g><g fill-opacity="1" stroke-width="60"><circle cx="28500" cy="29500" r="300"/><circle cx="28500" cy="31500" r="300"/><circle cx="28500" cy="33500" r="300"/><circle cx="28500" cy="35500" r="300"/></g><g fill-opacity="0" stroke-width="60"><path d="m30500 28500h1500"/><text x="31250" y="28400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="538.70081">1</text><g class="stroked-text"><desc>1</desc><path d="m31392 28376h-285"/><path d="m31250 28376v-500l-48 71-48 48-47 24"/></g><path d="m30500 30500h1500"/><text x="31250" y="30400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">2</text><g class="stroked-text"><desc>2</desc><path d="m31107 29923 23-23 48-24h119l48 24 24 23 23 48v48l-23 71-286 286h309"/></g><path d="m30500 32500h1500"/><text x="31250" y="32400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">3</text><g class="stroked-text"><desc>3</desc><path d="m31083 31876h309l-166 190h71l48 24 24 24 23 47v119l-23 48-24 24-48 24h-143l-47-24-24-24"/></g><path d="m30500 34500h1500"/><text x="31250" y="34400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">4</text><g class="stroked-text"><desc>4</desc><path d="m31345 34042v334"/><path d="m31226 33852-119 357h309"/></g><path d="m30500 36500h1500"/><text x="31250" y="36400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">5</text><g class="stroked-text"><desc>5</desc><path d="m31369 35876h-239l-23 238 23-24 48-24h119l48 24 24 24 23 47v119l-23 48-24 24-48 24h-119l-48-24-23-24"/></g><path d="m30500 29500h1500"/><text x="31250" y="29400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">6</text><g class="stroked-text"><desc>6</desc><path d="m31345 28876h-95l-48 24-24 23-48 72-23 95v190l23 48 24 24 48 24h95l48-24 24-24 23-48v-119l-23-47-24-24-48-24h-95l-48 24-24 24-23 47"/></g><path d="m30500 31500h1500"/><text x="31250" y="31400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">7</text><g class="stroked-text"><desc>7</desc><path d="m31083 30876h333l-214 500"/></g><path d="m30500 33500h1500"/><text x="31250" y="33400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">8</text><g class="stroked-text"><desc>8</desc><path d="m31202 33090-48-24-24-24-23-47v-24l23-48 24-23 48-24h95l48 24 24 23 23 48v24l-23 47-24 24-48 24h-95l-48 24-24 24-23 47v95l23 48 24 24 48 24h95l48-24 24-24 23-48v-95l-23-47-24-24-48-24"/></g><path d="m30500 35500h1500"/><text x="31250" y="35400" font-size="666.65px" opacity="0" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="536.18109">9</text><g class="stroked-text"><desc>9</desc><path d="m31154 35376h96l47-24 24-24 48-71 23-96v-190l-23-48-24-23-48-24h-95l-48 24-24 23-23 48v119l23 48 24 23 48 24h95l48-24 24-23 23-48"/></g></g></g><g transform="translate(-27290 -27040)" fill-opacity="0" stroke="#000" stroke-linecap="round" stroke-linejoin="round"><g stroke-width="100"><rect x="4e4" y="36100" width="2e3" height="800" rx="0"/></g><g stroke-width="60"><path d="m4e4 36500h-500"/><path d="m42000 36500h500"/></g><g stroke-width="100"><rect x="4e4" y="34600" width="2e3" height="800" rx="0"/></g><g stroke-width="60"><path d="m4e4 35000h-500"/><path d="m42000 35000h500"/></g></g><g stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"><g transform="translate(-27290 -27040)" fill-opacity="0"><g fill="none" stroke-width="200"><path d="m37200 39800h1600"/><path d="m37200 39200h1600"/></g><g stroke-width="60"><path d="m38000 39100v-1100"/><path d="m38000 39900v1100"/></g><g fill="none" stroke-width="200"><path d="m34700 39800h1600"/><path d="m34700 39200h1600"/></g><g stroke-width="60"><path d="m35500 39100v-1100"/><path d="m35500 39900v1100"/></g></g><g transform="translate(-27290 -27040)" fill-opacity="0"><text x="44187.52" y="35285.746" font-size="666.65px" opacity="0" lengthAdjust="spacingAndGlyphs" textLength="1893.3464">POTY</text><g class="stroked-text"><desc>POTY</desc><path d="m44336 35261v-500h191l47 24 24 24 24 48v71l-24 48-24 24-47 23h-191"/><path d="m44931 34761h96l47 24 48 48 24 95v167l-24 95-48 48-47 23h-96l-47-23-48-48-24-95v-167l24-95 48-48 47-24"/><path d="m45288 34761h286"/><path d="m45431 35261v-500"/><path d="m45836 35023v238"/><path d="m45669 34761 167 262 167-262"/></g><path d="m44000 35000v500.16h2333.5l437.52-500.16-437.52-500.16h-2333.5z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/><text x="44187.52" y="36785.746" font-size="666.65px" opacity="0" lengthAdjust="spacingAndGlyphs" textLength="1943.4646">POTX</text><g class="stroked-text"><desc>POTX</desc><path d="m44336 36761v-500h191l47 24 24 24 24 48v71l-24 48-24 24-47 23h-191"/><path d="m44931 36261h96l47 24 48 48 24 95v167l-24 95-48 48-47 23h-96l-47-23-48-48-24-95v-167l24-95 48-48 47-24"/><path d="m45288 36261h286"/><path d="m45431 36761v-500"/><path d="m45693 36261 334 500"/><path d="m46027 36261-334 500"/></g><path d="m44000 36500v500.16h2381.1l437.52-500.16-437.52-500.16h-2381.1z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="60"/><path d="m33000 41000v1e3"/><path d="m38000 35000h1500"/><path d="m33000 41000h2500"/><path d="m32000 36500h3500"/><path d="m32000 33500h1e3"/><path d="m32000 35500h6e3"/><path d="m33000 33500v7500"/><path d="m35500 41000h2500"/><path d="m42500 35000h1500"/><path d="m42500 36500h1500"/><path d="m38000 35500v-500"/><path d="m35500 36500h4e3"/><path d="m35500 36500v1500"/><path d="m38000 35500v2500"/></g><g transform="translate(-27290 -27040)"><circle cx="38000" cy="35500" r="180"/><circle cx="35500" cy="36500" r="180"/><circle cx="35500" cy="41000" r="180"/><circle cx="33000" cy="41000" r="180"/></g></g><metadata><rdf:RDF><cc:Work rdf:about=""><dc:title>SVG Picture created as paula-pot.svg date 2022/10/10 11:01:53</dc:title></cc:Work></rdf:RDF></metadata><ellipse cx="13710" cy="8710" rx="2484.8" ry="1875.2" fill="none" stroke="#f00" stroke-linecap="round" stroke-width="150.24"/></svg></span></div></p>
<p>The difference is in the parts marked with a red circle. They are used as <acronym title="Electro-Magnetic Interference">EMI</acronym> filter. For the Amiga 4000, Commodore has used ferrites there. It is basically just a wire inside a ferrite bead, giving a resistance of 0Ω at low frequencies. In the Amiga 1200 (and Amiga 600) though, Commodore used standard 68Ω resistors, presumably to cut costs.</p>
<p>Together with the pull-up resistor inside Paula, this resistor works as a voltage divider. The switch inside a classic Amiga mouse pulls this divider to ground, giving 0.9V at the <code>POT</code> input, just enough to get detected as <code>LOW</code>.</p>
<p><div class="text-center"><span class="ci-svg-image"><svg width="161" height="156.77" version="1.1" viewBox="0 0 12880 12542" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><title>SVG Picture created as paula-pot.svg date 2022/10/10 19:43:20</title><desc>Picture generated by Eeschema-SVG</desc><g transform="translate(-53810,-28648)" stroke-linecap="round" stroke-linejoin="round"><g stroke="#000" stroke-width="60"><circle cx="55700" cy="39500" r="200" fill-opacity="0"/><path d="m56500 39000v-700" fill="none"/><path d="m57500 39000h-2e3" fill="none"/></g><g fill-opacity="0"><g stroke="#000" stroke-width="60"><circle cx="57300" cy="39500" r="200"/><path d="m55500 39500h-1e3"/><path d="m57500 39500h1e3"/></g><text x="58000" y="40749.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="5179.0552">Mouse Button</text><g stroke="#000"><g stroke-width="60"><path d="m55559 40726v-500l167 357 166-357v500"/><path d="m56202 40726-48-24-24-24-23-48v-142l23-48 24-24 48-24h71l48 24 24 24 24 48v142l-24 48-24 24-48 24h-71"/><path d="m56797 40392v334"/><path d="m56583 40392v262l24 48 47 24h72l47-24 24-24"/><path d="m57011 40702 48 24h95l48-24 24-48v-24l-24-47-48-24h-71l-48-24-24-47v-24l24-48 48-24h71l48 24"/><path d="m57630 40702-47 24h-95l-48-24-24-48v-190l24-48 48-24h95l47 24 24 48v47l-238 48"/><path d="m58416 40464 72 24 23 23 24 48v71l-24 48-23 24-48 24h-190v-500h166l48 23 24 24 23 48v47l-23 48-24 24-48 24h-166"/><path d="m58964 40392v334"/><path d="m58750 40392v262l23 48 48 24h71l48-24 24-24"/><path d="m59130 40392h191"/><path d="m59202 40226v428l24 48 47 24h48"/><path d="m59416 40392h191"/><path d="m59488 40226v428l23 48 48 24h48"/><path d="m59845 40726-48-24-24-24-23-48v-142l23-48 24-24 48-24h71l48 24 24 24 23 48v142l-23 48-24 24-48 24h-71"/><path d="m60226 40392v334"/><path d="m60226 40440 24-24 47-24h72l47 24 24 48v262"/></g><rect x="58100" y="36000" width="800" height="2e3" rx="0" stroke-width="100"/><path d="m58500 36000v-500" stroke-width="60"/><path d="m58500 38000v500" stroke-width="60"/></g><text x="59793.148" y="37249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1583.8188">68Ω</text><g stroke="#000" stroke-width="60"><path d="m59364 36726h-95l-48 23-24 24-47 72-24 95v190l24 48 24 24 47 24h95l48-24 24-24 24-48v-119l-24-47-24-24-48-24h-95l-47 24-24 24-24 47"/><path d="m59697 36940-47-24-24-24-24-47v-24l24-48 24-24 47-23h96l47 23 24 24 24 48v24l-24 47-24 24-47 24h-96l-47 24-24 24-24 47v95l24 48 24 24 47 24h96l47-24 24-24 24-48v-95l-24-47-24-24-47-24"/><path d="m60078 37226h119v-96l-47-23-48-48-24-71v-120l24-71 48-48 71-23h95l72 23 47 48 24 71v120l-24 71-47 48-48 23v96h119"/></g></g><g fill="none" stroke="#000" stroke-width="60"><path d="m54250 40750h500"/><path d="m54450 41000h100"/><path d="m54500 40500v-500"/><path d="m55000 40500h-1e3"/><path d="m58500 30500v-1e3"/></g><path d="m58800 3e4h-600l300-500z" fill-rule="evenodd" stroke="#000" stroke-width="60"/><path d="m62000 33000v3e3l3e3 -1500z" fill="none" stroke="#000" stroke-width="100"/><g fill-opacity="0"><g stroke-width="60"><path d="m62000 34500h-1500" stroke="#000"/><path d="m65000 34500h1500" stroke="#000"/><text x="61000" y="34249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1464.7638">POT</text></g><g stroke="#000"><g stroke-width="60"><path d="m60416 34226v-500h191l47 23 24 24 24 48v71l-24 48-24 24-47 24h-191"/><path d="m61011 33726h96l47 23 48 48 24 95v167l-24 95-48 48-47 24h-96l-47-24-48-48-24-95v-167l24-95 48-48 47-23"/><path d="m61369 33726h285"/><path d="m61511 34226v-500"/></g><rect x="58100" y="31000" width="800" height="2e3" rx="0" stroke-width="100"/><path d="m58500 31000v-500" stroke-width="60"/><path d="m58500 33000v500" stroke-width="60"/></g><text x="61471.73" y="32249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="4940.9448">Paula Pullup</text><g stroke="#000" stroke-width="60"><path d="m59150 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m59864 32226v-262l-24-48-47-24h-96l-47 24"/><path d="m59864 32202-48 24h-119l-47-24-24-48v-47l24-48 47-24h119l48-24"/><path d="m60316 31892v334"/><path d="m60102 31892v262l24 48 48 24h71l48-24 23-24"/><path d="m60626 32226-48-24-23-48v-428"/><path d="m61031 32226v-262l-24-48-48-24h-95l-48 24"/><path d="m61031 32202-48 24h-119l-48-24-23-48v-47l23-48 48-24h119l48-24"/><path d="m61650 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m62364 31892v334"/><path d="m62150 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m62674 32226-48-24-24-48v-428"/><path d="m62935 32226-47-24-24-48v-428"/><path d="m63340 31892v334"/><path d="m63126 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m63578 31892v500"/><path d="m63578 31916 48-24h95l48 24 24 24 23 48v142l-23 48-24 24-48 24h-95l-48-24"/></g><text x="58500" y="34362.48" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="end" lengthAdjust="spacingAndGlyphs" textLength="1681.5748">0.9V</text><g stroke="#000" stroke-width="60"><path d="m57065 33838h47l48 24 24 24 24 47 23 96v119l-23 95-24 48-24 23-48 24h-47l-48-24-24-23-23-48-24-95v-119l24-96 23-47 24-24 48-24"/><path d="m57446 34291 24 23-24 24-24-24 24-23v47"/><path d="m57708 34338h95l47-24 24-23 48-72 24-95v-191l-24-47-24-24-48-24h-95l-47 24-24 24-24 47v119l24 48 24 24 47 24h95l48-24 24-24 24-48"/><path d="m58089 33838 166 500 167-500"/></g><g stroke-width="60"><text x="58500" y="29362.48" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" text-anchor="end" lengthAdjust="spacingAndGlyphs" textLength="964.76379">5V</text><path d="m57922 28838h-238l-24 238 24-24 47-23h119l48 23 24 24 24 48v119l-24 48-24 23-48 24h-119l-47-24-24-23" stroke="#000"/><path d="m58089 28838 166 500 167-500" stroke="#000"/><text x="58500" y="39362.48" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" lengthAdjust="spacingAndGlyphs" textLength="964.76379">0V</text></g><g stroke="#000" stroke-width="60"><path d="m58744 38838h47l48 24 24 24 24 47 23 96v119l-23 95-24 48-24 23-48 24h-47l-48-24-24-23-23-48-24-95v-119l24-96 23-47 24-24 48-24"/><path d="m59053 38838 167 500 167-500"/><path d="m58500 34500h2e3"/><path d="m58500 33500v1e3"/><path d="m54500 39500v500"/><path d="m58500 38500v1e3"/><path d="m58500 34500v1e3"/></g><text x="59793.148" y="37249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1583.8188">68Ω</text><g stroke="#000" stroke-width="60"><path d="m59364 36726h-95l-48 23-24 24-47 72-24 95v190l24 48 24 24 47 24h95l48-24 24-24 24-48v-119l-24-47-24-24-48-24h-95l-47 24-24 24-24 47"/><path d="m59697 36940-47-24-24-24-24-47v-24l24-48 24-24 47-23h96l47 23 24 24 24 48v24l-24 47-24 24-47 24h-96l-47 24-24 24-24 47v95l24 48 24 24 47 24h96l47-24 24-24 24-48v-95l-24-47-24-24-47-24"/><path d="m60078 37226h119v-96l-47-23-48-48-24-71v-120l24-71 48-48 71-23h95l72 23 47 48 24 71v120l-24 71-47 48-48 23v96h119"/><path d="m58500 36000v-500"/><path d="m58500 38000v500"/></g><text x="58000" y="40749.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="5179.0552">Mouse Button</text><g stroke="#000" stroke-width="60"><path d="m55559 40726v-500l167 357 166-357v500"/><path d="m56202 40726-48-24-24-24-23-48v-142l23-48 24-24 48-24h71l48 24 24 24 24 48v142l-24 48-24 24-48 24h-71"/><path d="m56797 40392v334"/><path d="m56583 40392v262l24 48 47 24h72l47-24 24-24"/><path d="m57011 40702 48 24h95l48-24 24-48v-24l-24-47-48-24h-71l-48-24-24-47v-24l24-48 48-24h71l48 24"/><path d="m57630 40702-47 24h-95l-48-24-24-48v-190l24-48 48-24h95l47 24 24 48v47l-238 48"/><path d="m58416 40464 72 24 23 23 24 48v71l-24 48-23 24-48 24h-190v-500h166l48 23 24 24 23 48v47l-23 48-24 24-48 24h-166"/><path d="m58964 40392v334"/><path d="m58750 40392v262l23 48 48 24h71l48-24 24-24"/><path d="m59130 40392h191"/><path d="m59202 40226v428l24 48 47 24h48"/><path d="m59416 40392h191"/><path d="m59488 40226v428l23 48 48 24h48"/><path d="m59845 40726-48-24-24-24-23-48v-142l23-48 24-24 48-24h71l48 24 24 24 23 48v142l-23 48-24 24-48 24h-71"/><path d="m60226 40392v334"/><path d="m60226 40440 24-24 47-24h72l47 24 24 48v262"/><path d="m55500 39500h-1e3"/><path d="m57500 39500h1e3"/></g><text x="61000" y="34249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1464.7638">POT</text><g stroke="#000" stroke-width="60"><path d="m60416 34226v-500h191l47 23 24 24 24 48v71l-24 48-24 24-47 24h-191"/><path d="m61011 33726h96l47 23 48 48 24 95v167l-24 95-48 48-47 24h-96l-47-24-48-48-24-95v-167l24-95 48-48 47-23"/><path d="m61369 33726h285"/><path d="m61511 34226v-500"/><path d="m62000 34500h-1500"/><path d="m65000 34500h1500"/></g><text x="61471.73" y="32249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="4940.9448">Paula Pullup</text><g stroke="#000" stroke-width="60"><path d="m59150 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m59864 32226v-262l-24-48-47-24h-96l-47 24"/><path d="m59864 32202-48 24h-119l-47-24-24-48v-47l24-48 47-24h119l48-24"/><path d="m60316 31892v334"/><path d="m60102 31892v262l24 48 48 24h71l48-24 23-24"/><path d="m60626 32226-48-24-23-48v-428"/><path d="m61031 32226v-262l-24-48-48-24h-95l-48 24"/><path d="m61031 32202-48 24h-119l-48-24-23-48v-47l23-48 48-24h119l48-24"/><path d="m61650 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m62364 31892v334"/><path d="m62150 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m62674 32226-48-24-24-48v-428"/><path d="m62935 32226-47-24-24-48v-428"/><path d="m63340 31892v334"/><path d="m63126 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m63578 31892v500"/><path d="m63578 31916 48-24h95l48 24 24 24 23 48v142l-23 48-24 24-48 24h-95l-48-24"/><path d="m58500 31000v-500"/><path d="m58500 33000v500"/></g></g><circle cx="58500" cy="34500" r="180" stroke="#000" stroke-width="60"/></g><metadata><rdf:RDF><cc:Work rdf:about=""><dc:title>SVG Picture created as paula-pot.svg date 2022/10/10 19:43:20</dc:title></cc:Work></rdf:RDF></metadata></svg></span></div></p>
<p>The mouse interface does not have a real switch though, but a logical output. For example, the PIC16F84 that is used in the YAMI interface provides a <code>LOW</code> voltage of 0.6V. Now the voltage divider gives 1.1V at the <code>POT</code> input, which is interpreted as <code>HIGH</code> by Paula.</p>
<p><div class="text-center"><span class="ci-svg-image"><svg width="179.75" height="157.02" version="1.1" viewBox="0 0 14380 12562" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><title>SVG Picture created as paula-pot.svg date 2022/10/10 19:43:20</title><desc>Picture generated by Eeschema-SVG</desc><g transform="translate(-67310,-28648)" stroke-linecap="round" stroke-linejoin="round"><path d="m69000 38000v3e3l3e3 -1500z" fill="none" stroke="#000" stroke-width="100"/><g fill-opacity="0" stroke-width="60"><g stroke="#000"><path d="m69000 39500h-1500"/><path d="m72000 39500h1500"/><path d="m71750 39750 500-500"/><path d="m71750 39250 500 500"/></g><text x="74000" y="40749.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="6062.5195">Mouse Interface</text><g stroke="#000"><path d="m71119 40726v-500l166 357 167-357v500"/><path d="m71761 40726-47-24-24-24-24-48v-142l24-48 24-24 47-24h72l47 24 24 24 24 48v142l-24 48-24 24-47 24h-72"/><path d="m72357 40392v334"/><path d="m72142 40392v262l24 48 48 24h71l48-24 24-24"/><path d="m72571 40702 48 24h95l47-24 24-48v-24l-24-47-47-24h-72l-47-24-24-47v-24l24-48 47-24h72l47 24"/><path d="m73190 40702-48 24h-95l-47-24-24-48v-190l24-48 47-24h95l48 24 24 48v47l-238 48"/><path d="m73809 40726v-500"/><path d="m74047 40392v334"/><path d="m74047 40440 24-24 48-24h71l48 24 23 48v262"/><path d="m74428 40392h191"/><path d="m74500 40226v428l23 48 48 24h48"/><path d="m74976 40702-48 24h-95l-48-24-24-48v-190l24-48 48-24h95l48 24 24 48v47l-239 48"/><path d="m75214 40726v-334"/><path d="m75214 40488 24-48 23-24 48-24h48"/><path d="m75452 40392h190"/><path d="m75523 40726v-429l24-48 48-23h47"/><path d="m76023 40726v-262l-23-48-48-24h-95l-48 24"/><path d="m76023 40702-47 24h-119l-48-24-24-48v-47l24-48 48-24h119l47-24"/><path d="m76476 40702-48 24h-95l-48-24-24-24-23-48v-142l23-48 24-24 48-24h95l48 24"/><path d="m76880 40702-47 24h-95l-48-24-24-48v-190l24-48 48-24h95l47 24 24 48v47l-238 48"/></g></g><path d="m73500 30500v-1e3" fill="none" stroke="#000" stroke-width="60"/><path d="m73800 3e4h-600l300-500z" fill-rule="evenodd" stroke="#000" stroke-width="60"/><g fill-opacity="0"><g stroke="#000"><rect x="73100" y="31000" width="800" height="2e3" rx="0" stroke-width="100"/><path d="m73500 31000v-500" stroke-width="60"/><path d="m73500 33000v500" stroke-width="60"/></g><text x="76471.734" y="32249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="4940.9448">Paula Pullup</text><g stroke="#000" stroke-width="60"><path d="m74150 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m74864 32226v-262l-24-48-47-24h-96l-47 24"/><path d="m74864 32202-48 24h-119l-47-24-24-48v-47l24-48 47-24h119l48-24"/><path d="m75316 31892v334"/><path d="m75102 31892v262l24 48 48 24h71l48-24 23-24"/><path d="m75626 32226-48-24-23-48v-428"/><path d="m76031 32226v-262l-24-48-48-24h-95l-48 24"/><path d="m76031 32202-48 24h-119l-48-24-23-48v-47l23-48 48-24h119l48-24"/><path d="m76650 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m77364 31892v334"/><path d="m77150 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m77674 32226-48-24-24-48v-428"/><path d="m77935 32226-47-24-24-48v-428"/><path d="m78340 31892v334"/><path d="m78126 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m78578 31892v500"/><path d="m78578 31916 48-24h95l48 24 24 24 23 48v142l-23 48-24 24-48 24h-95l-48-24"/></g></g><path d="m77000 33000v3e3l3e3 -1500z" fill="none" stroke="#000" stroke-width="100"/><g fill-opacity="0"><g stroke-width="60"><path d="m77000 34500h-1500" stroke="#000"/><path d="m8e4 34500h1500" stroke="#000"/><text x="76000" y="34249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1464.7638">POT</text></g><g stroke="#000"><g stroke-width="60"><path d="m75416 34226v-500h191l47 23 24 24 24 48v71l-24 48-24 24-47 24h-191"/><path d="m76011 33726h96l47 23 48 48 24 95v167l-24 95-48 48-47 24h-96l-47-24-48-48-24-95v-167l24-95 48-48 47-23"/><path d="m76369 33726h285"/><path d="m76511 34226v-500"/></g><rect x="73100" y="36000" width="800" height="2e3" rx="0" stroke-width="100"/><path d="m73500 36000v-500" stroke-width="60"/><path d="m73500 38000v500" stroke-width="60"/></g><text x="74793.148" y="37249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1583.8188">68Ω</text><g stroke="#000" stroke-width="60"><path d="m74364 36726h-95l-48 23-24 24-47 72-24 95v190l24 48 24 24 47 24h95l48-24 24-24 24-48v-119l-24-47-24-24-48-24h-95l-47 24-24 24-24 47"/><path d="m74697 36940-47-24-24-24-24-47v-24l24-48 24-24 47-23h96l47 23 24 24 24 48v24l-24 47-24 24-47 24h-96l-47 24-24 24-24 47v95l24 48 24 24 47 24h96l47-24 24-24 24-48v-95l-24-47-24-24-47-24"/><path d="m75078 37226h119v-96l-47-23-48-48-24-71v-120l24-71 48-48 71-23h95l72 23 47 48 24 71v120l-24 71-47 48-48 23v96h119"/></g><g stroke-width="60"><text x="73500" y="29362.48" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" text-anchor="end" lengthAdjust="spacingAndGlyphs" textLength="964.76379">5V</text><path d="m72922 28838h-238l-24 238 24-24 47-23h119l48 23 24 24 24 48v119l-24 48-24 23-48 24h-119l-47-24-24-23" stroke="#000"/><path d="m73089 28838 166 500 167-500" stroke="#000"/><text x="73500" y="39362.48" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" lengthAdjust="spacingAndGlyphs" textLength="1679.0552">0.6V</text></g><g stroke="#000" stroke-width="60"><path d="m73744 38838h47l48 24 24 24 24 47 23 96v119l-23 95-24 48-24 23-48 24h-47l-48-24-24-23-23-48-24-95v-119l24-96 23-47 24-24 48-24"/><path d="m74125 39291 24 23-24 24-24-24 24-23v47"/><path d="m74577 38838h-95l-48 24-24 24-47 71-24 95v191l24 48 24 23 47 24h96l47-24 24-23 24-48v-119l-24-48-24-24-47-23h-96l-47 23-24 24-24 48"/><path d="m74768 38838 166 500 167-500"/></g><text x="73500" y="34362.48" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="end" lengthAdjust="spacingAndGlyphs" textLength="1679.0552">1.1V</text><g stroke="#000" stroke-width="60"><path d="m72231 34338h-285"/><path d="m72089 34338v-500l-48 72-48 47-47 24"/><path d="m72446 34291 24 23-24 24-24-24 24-23v47"/><path d="m72946 34338h-286"/><path d="m72803 34338v-500l-48 72-47 47-48 24"/><path d="m73089 33838 166 500 167-500"/><path d="m73500 34500v1e3"/><path d="m73500 38500v1e3"/><path d="m73500 34500h2e3"/><path d="m73500 33500v1e3"/></g><text x="76471.734" y="32249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="4940.9448">Paula Pullup</text><g stroke="#000" stroke-width="60"><path d="m74150 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m74864 32226v-262l-24-48-47-24h-96l-47 24"/><path d="m74864 32202-48 24h-119l-47-24-24-48v-47l24-48 47-24h119l48-24"/><path d="m75316 31892v334"/><path d="m75102 31892v262l24 48 48 24h71l48-24 23-24"/><path d="m75626 32226-48-24-23-48v-428"/><path d="m76031 32226v-262l-24-48-48-24h-95l-48 24"/><path d="m76031 32202-48 24h-119l-48-24-23-48v-47l23-48 48-24h119l48-24"/><path d="m76650 32226v-500h190l48 23 24 24 23 48v71l-23 48-24 24-48 24h-190"/><path d="m77364 31892v334"/><path d="m77150 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m77674 32226-48-24-24-48v-428"/><path d="m77935 32226-47-24-24-48v-428"/><path d="m78340 31892v334"/><path d="m78126 31892v262l24 48 47 24h72l47-24 24-24"/><path d="m78578 31892v500"/><path d="m78578 31916 48-24h95l48 24 24 24 23 48v142l-23 48-24 24-48 24h-95l-48-24"/><path d="m73500 31000v-500"/><path d="m73500 33000v500"/></g><text x="76000" y="34249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1464.7638">POT</text><g stroke="#000" stroke-width="60"><path d="m75416 34226v-500h191l47 23 24 24 24 48v71l-24 48-24 24-47 24h-191"/><path d="m76011 33726h96l47 23 48 48 24 95v167l-24 95-48 48-47 24h-96l-47-24-48-48-24-95v-167l24-95 48-48 47-23"/><path d="m76369 33726h285"/><path d="m76511 34226v-500"/><path d="m77000 34500h-1500"/><path d="m8e4 34500h1500"/></g><text x="74793.148" y="37249.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="1583.8188">68Ω</text><g stroke="#000" stroke-width="60"><path d="m74364 36726h-95l-48 23-24 24-47 72-24 95v190l24 48 24 24 47 24h95l48-24 24-24 24-48v-119l-24-47-24-24-48-24h-95l-47 24-24 24-24 47"/><path d="m74697 36940-47-24-24-24-24-47v-24l24-48 24-24 47-23h96l47 23 24 24 24 48v24l-24 47-24 24-47 24h-96l-47 24-24 24-24 47v95l24 48 24 24 47 24h96l47-24 24-24 24-48v-95l-24-47-24-24-47-24"/><path d="m75078 37226h119v-96l-47-23-48-48-24-71v-120l24-71 48-48 71-23h95l72 23 47 48 24 71v120l-24 71-47 48-48 23v96h119"/><path d="m73500 36000v-500"/><path d="m73500 38000v500"/></g><text x="74000" y="40749.961" fill="#000000" font-size="666.65px" opacity="0" stroke="#000000" stroke-width="60" text-anchor="middle" lengthAdjust="spacingAndGlyphs" textLength="6060">Mouse Interface</text><g stroke="#000" stroke-width="60"><path d="m71119 40726v-500l166 357 167-357v500"/><path d="m71761 40726-47-24-24-24-24-48v-142l24-48 24-24 47-24h72l47 24 24 24 24 48v142l-24 48-24 24-47 24h-72"/><path d="m72357 40392v334"/><path d="m72142 40392v262l24 48 48 24h71l48-24 24-24"/><path d="m72571 40702 48 24h95l47-24 24-48v-24l-24-47-47-24h-72l-47-24-24-47v-24l24-48 47-24h72l47 24"/><path d="m73190 40702-48 24h-95l-47-24-24-48v-190l24-48 47-24h95l48 24 24 48v47l-238 48"/><path d="m73809 40726v-500"/><path d="m74047 40392v334"/><path d="m74047 40440 24-24 48-24h71l48 24 23 48v262"/><path d="m74428 40392h191"/><path d="m74500 40226v428l23 48 48 24h48"/><path d="m74976 40702-48 24h-95l-48-24-24-48v-190l24-48 48-24h95l48 24 24 48v47l-239 48"/><path d="m75214 40726v-334"/><path d="m75214 40488 24-48 23-24 48-24h48"/><path d="m75452 40392h190"/><path d="m75523 40726v-429l24-48 48-23h47"/><path d="m76023 40726v-262l-23-48-48-24h-95l-48 24"/><path d="m76023 40702-47 24h-119l-48-24-24-48v-47l24-48 48-24h119l47-24"/><path d="m76476 40702-48 24h-95l-48-24-24-24-23-48v-142l23-48 24-24 48-24h95l48 24"/><path d="m76880 40702-47 24h-95l-48-24-24-48v-190l24-48 48-24h95l47 24 24 48v47l-238 48"/><path d="m69000 39500h-1500"/><path d="m72000 39500h1500"/><path d="m71750 39750 500-500"/><path d="m71750 39250 500 500"/></g></g><circle cx="73500" cy="34500" r="180" stroke="#000" stroke-width="60"/></g><metadata><rdf:RDF><cc:Work rdf:about=""><dc:title>SVG Picture created as paula-pot.svg date 2022/10/10 19:43:20</dc:title></cc:Work></rdf:RDF></metadata></svg></span></div></p>
<p>I could not find out if the pull-up resistor inside Paula has a lower resistance in that batch, or if there is a different threshold for detecting <code>LOW</code> levels. Both would be possible.</p>
<p>To fix the problem on my Amiga 1200, I replaced the 68Ω resistors E353R, E354R, E363R, and E364R with the SMD 1206 ferrites that are used in the Amiga 4000. They are a bit bigger than the 0804 resistors, but can still be soldered straight to the pads.</p>
<p><span class="ci-image"><a href="/cilla/page/482/0default.jpg" data-fancybox="ipg-54be7b41" data-caption="The position of the replacement ferrites at the bottom side of an Amiga 1200 board."><img src="/cilla/page/482/maxi/0default.jpg" srcset="/cilla/page/482/maxi-2x/0default.jpg 2x,/cilla/page/482/maxi-3x/0default.jpg 3x,/cilla/page/482/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="The position of the replacement ferrites at the bottom side of an Amiga 1200 board." /></a></span></p>
<p>This is just a minor change to the hardware that could be done even by soldering novices (at least rather than unsoldering a PLCC chip). After that change, the mouse interface was working too.</p>
<p>Make sure to replace the resistors with ferrites, <em>not</em> the capacitors next to them!</p>
<p>PS: If you found this article because your Amiga is also having the problem, please send me the date code of your Paula chip. Maybe we can find a pattern of "bad" date codes. Thank you!</p>
<p>PPS: Commodore did the same trick on Amiga 600 machines, so if you have trouble with the right mousebutton on your A600, it's worth a try to replace E353R, E354R, E363R, and E364R.</p>2022-10-13T16:16:40ZAmiga 1000 Restauration, Part 2
https://shred.zone/cilla/page/478/amiga-1000-restauration-part-2.html
<p>In this second part, I will take care about the keyboard. I expected that it would be the usual procedure: Cleaning the key caps and case, whitening the yellowed parts, dusting off the keyboard frame.</p>
<p><span class="ci-image"><a href="/cilla/page/478/0default.jpg" data-fancybox="ipg-fa5987c7" data-caption="The Amiga 1000 keyboard, before cleaning and whitening."><img src="/cilla/page/478/thumb/0default.jpg" srcset="/cilla/page/478/thumb-2x/0default.jpg 2x,/cilla/page/478/thumb-3x/0default.jpg 3x,/cilla/page/478/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="The Amiga 1000 keyboard, before cleaning and whitening." /></a></span></p>
<p>However, this time it wasn't that easy.</p>
<p>The trouble started when I pulled off the key caps, but also pulled out the plungers of three keys. Fortunately this can be repaired, as the switches are easy to maintain. More about that below.</p>
<h2 id="keyboard-cleaning">Keyboard Cleaning</h2>
<p>The key caps were cleaned in an ultrasonic bath with a drop of rinse aid, and then brushed with a soft toothbrush.</p>
<p>Below the key caps, there is the keyboard frame where the switches are mounted. I found the usual filth that you would expect there after almost 40 years, but there was also flash rust, a crusty dirt layer, and… dead insects. I went outside and brushed off the insects and all the other loose dirt. Then I went back inside, and sprayed the frame with IPA, in an attempt to clean off the crust. The room immediately filled with an unhealthy stench of dust, dirt, and insect excrements. 🤢 Also, my attempts to remove the flash rust with a fiberglass pen wasn't really successful. There was too much of it.</p>
<p><span class="ci-image"><a href="/cilla/page/478/keyboard1.jpg" data-fancybox="ipg-fa5987c7" data-caption="Yuck! Rust, crusty filth, and dead insects."><img src="/cilla/page/478/thumb/keyboard1.jpg" srcset="/cilla/page/478/thumb-2x/keyboard1.jpg 2x,/cilla/page/478/thumb-3x/keyboard1.jpg 3x,/cilla/page/478/thumb-4x/keyboard1.jpg 4x" class="rounded img-fluid" alt="Yuck! Rust, crusty filth, and dead insects." /></a></span>
<span class="ci-image"><a href="/cilla/page/478/keyboard2.jpg" data-fancybox="ipg-fa5987c7" data-caption="My attempts to clean the frame in place were futile."><img src="/cilla/page/478/thumb/keyboard2.jpg" srcset="/cilla/page/478/thumb-2x/keyboard2.jpg 2x,/cilla/page/478/thumb-3x/keyboard2.jpg 3x,/cilla/page/478/thumb-4x/keyboard2.jpg 4x" class="rounded img-fluid" alt="My attempts to clean the frame in place were futile." /></a></span></p>
<p>I wanted to avoid that I had to refurbish the frame, because it can only be removed after unsoldering all 91 switches (and one LED). But there was no other way to do it. So I unsoldered everything and removed the frame. On the PCB, I found dried stains from a liquid (maybe from a soft drink that had been spilled over the keyboard), and more dead insects. It confirmed that it was the right choice to go all the way.</p>
<p><span class="ci-image"><a href="/cilla/page/478/keyboard3.jpg" data-fancybox="ipg-fa5987c7" data-caption="Under the frame I found liquid stains, and more insects."><img src="/cilla/page/478/thumb/keyboard3.jpg" srcset="/cilla/page/478/thumb-2x/keyboard3.jpg 2x,/cilla/page/478/thumb-3x/keyboard3.jpg 3x,/cilla/page/478/thumb-4x/keyboard3.jpg 4x" class="rounded img-fluid" alt="Under the frame I found liquid stains, and more insects." /></a></span></p>
<p>I sanded down the old paint and the dirt crust from the frame (outside, and wearing a good filter mask). Then I spray-painted it in a matte black. It's looking so much better now.</p>
<p><span class="ci-image"><a href="/cilla/page/478/paint1.jpg" data-fancybox="ipg-fa5987c7" data-caption="The frame, after sanding it."><img src="/cilla/page/478/thumb/paint1.jpg" srcset="/cilla/page/478/thumb-2x/paint1.jpg 2x,/cilla/page/478/thumb-3x/paint1.jpg 3x,/cilla/page/478/thumb-4x/paint1.jpg 4x" class="rounded img-fluid" alt="The frame, after sanding it." /></a></span>
<span class="ci-image"><a href="/cilla/page/478/paint2.jpg" data-fancybox="ipg-fa5987c7" data-caption="Freshly painted with matte black spray paint."><img src="/cilla/page/478/thumb/paint2.jpg" srcset="/cilla/page/478/thumb-2x/paint2.jpg 2x,/cilla/page/478/thumb-3x/paint2.jpg 3x,/cilla/page/478/thumb-4x/paint2.jpg 4x" class="rounded img-fluid" alt="Freshly painted with matte black spray paint." /></a></span></p>
<h2 id="refurbishing-the-switches">Refurbishing the Switches</h2>
<p>The next bad surprise came when I was about to reassemble the keyboard. I tested all 91 switches for continuity when closed, but found only about 40 of them actually working. When I depressed the other keys, they either did not close the contact, or the plunger got stuck, or both.</p>
<p>The switches that are used in the Amiga 1000 keyboard are <em>Mitsumi Type 2 tactile switches</em>. They are out of production by today, but they are easy to maintain. After trying the best approach with a couple of switches, I found the following procedure to be most successful.</p>
<p>The switch can be opened by putting a kind of blade (like the head of a flat screwdriver, or flat pincers) into the latch on both sides, and then carefully removing the cap with a blade or another screwdriver. The switch consists of four parts: The cap, the plunger, the switch plate, and the base.</p>
<p><span class="ci-image"><a href="/cilla/page/478/switch1.jpg" data-fancybox="ipg-fa5987c7" data-caption="Insert a screwdriver or pincers, then carefully pull the cap from the base."><img src="/cilla/page/478/thumb/switch1.jpg" srcset="/cilla/page/478/thumb-2x/switch1.jpg 2x,/cilla/page/478/thumb-3x/switch1.jpg 3x,/cilla/page/478/thumb-4x/switch1.jpg 4x" class="rounded img-fluid" alt="Insert a screwdriver or pincers, then carefully pull the cap from the base." /></a></span>
<span class="ci-image"><a href="/cilla/page/478/switch2.jpg" data-fancybox="ipg-fa5987c7" data-caption="From left to right: Cap, plunger (with spring), switch plate (with metal lever), base."><img src="/cilla/page/478/thumb/switch2.jpg" srcset="/cilla/page/478/thumb-2x/switch2.jpg 2x,/cilla/page/478/thumb-3x/switch2.jpg 3x,/cilla/page/478/thumb-4x/switch2.jpg 4x" class="rounded img-fluid" alt="From left to right: Cap, plunger (with spring), switch plate (with metal lever), base." /></a></span></p>
<p>I cleaned the switch plate with contact cleaner spray. I also bent up the legs of the lever a tiny bit, so it will give a bit more pressure on the switch when the key is depressed.</p>
<p><span class="ci-image"><a href="/cilla/page/478/switch3.jpg" data-fancybox="ipg-fa5987c7" data-caption="Spray a bit of contact cleaner on the copper part in the center."><img src="/cilla/page/478/thumb/switch3.jpg" srcset="/cilla/page/478/thumb-2x/switch3.jpg 2x,/cilla/page/478/thumb-3x/switch3.jpg 3x,/cilla/page/478/thumb-4x/switch3.jpg 4x" class="rounded img-fluid" alt="Spray a bit of contact cleaner on the copper part in the center." /></a></span>
<span class="ci-image"><a href="/cilla/page/478/switch4.jpg" data-fancybox="ipg-fa5987c7" data-caption="If the contact does not close properly after cleaning, bend up the legs of the lever a tiny bit."><img src="/cilla/page/478/thumb/switch4.jpg" srcset="/cilla/page/478/thumb-2x/switch4.jpg 2x,/cilla/page/478/thumb-3x/switch4.jpg 3x,/cilla/page/478/thumb-4x/switch4.jpg 4x" class="rounded img-fluid" alt="If the contact does not close properly after cleaning, bend up the legs of the lever a tiny bit." /></a></span></p>
<p>Finally, I applied a bit of silicone grease on both small sides of the plunger. It is important to use a very very tiny amount! If too much is used, the key will feel sluggish or might even get stuck. If in doubt, better skip this step.</p>
<p><span class="ci-image"><a href="/cilla/page/478/switch5.jpg" data-fancybox="ipg-fa5987c7" data-caption="Apply a very tiny amount of silicone grease on the bottom half of the small plunger sides."><img src="/cilla/page/478/thumb/switch5.jpg" srcset="/cilla/page/478/thumb-2x/switch5.jpg 2x,/cilla/page/478/thumb-3x/switch5.jpg 3x,/cilla/page/478/thumb-4x/switch5.jpg 4x" class="rounded img-fluid" alt="Apply a very tiny amount of silicone grease on the bottom half of the small plunger sides." /></a></span></p>
<p>After that, the switch was reassembled and <strong>tested again</strong>. If it was still getting stuck or didn't close the contact properly, the process was repeated.</p>
<p>It was a lot of work and a monotonous task, but at the end I could make all the switches work again.</p>
<p><span class="ci-image"><a href="/cilla/page/478/keyboard4.jpg" data-fancybox="ipg-fa5987c7" data-caption="Cleaned and refurbished keyboard, before putting on the keycaps."><img src="/cilla/page/478/thumb/keyboard4.jpg" srcset="/cilla/page/478/thumb-2x/keyboard4.jpg 2x,/cilla/page/478/thumb-3x/keyboard4.jpg 3x,/cilla/page/478/thumb-4x/keyboard4.jpg 4x" class="rounded img-fluid" alt="Cleaned and refurbished keyboard, before putting on the keycaps." /></a></span></p>
<h2 id="whitening">Whitening</h2>
<p>The keyboard case was cleaned in soap water. After that, the case (and the yellowed space bar) were exposed to the July sun for whitening.</p>
<p>The result is quite good, but on some parts a bit of yellow is still visible. I guess there would be an even better result if I would use peroxide, but I have no experience with that, and am not too keen to gain it with this rare keyboard.</p>
<p>The labels on some of the keys are still yellow, and wouldn't get any whiter in the sun. I guess that I will have to replace them with new labels some day.</p>
<h2 id="reassembling">Reassembling</h2>
<p>With every parts cleaned and whitened, the keyboard was ready for reassembly. I pressed the key caps back on the keys, mounted the shielding, and then put the keyboard frame back into the case.</p>
<p>Take care when closing the case: One of the four screws is a bit shorter, and maybe also has a different color. This single screw must be used for the <strong>upper right hole</strong>.</p>
<p><span class="ci-image"><a href="/cilla/page/478/screws.jpg" data-fancybox="ipg-fa5987c7" data-caption="One case screw is shorter, and has a different color."><img src="/cilla/page/478/thumb/screws.jpg" srcset="/cilla/page/478/thumb-2x/screws.jpg 2x,/cilla/page/478/thumb-3x/screws.jpg 3x,/cilla/page/478/thumb-4x/screws.jpg 4x" class="rounded img-fluid" alt="One case screw is shorter, and has a different color." /></a></span>
<span class="ci-image"><a href="/cilla/page/478/back.jpg" data-fancybox="ipg-fa5987c7" data-caption="Use the shorter screw for the hole at the top right."><img src="/cilla/page/478/thumb/back.jpg" srcset="/cilla/page/478/thumb-2x/back.jpg 2x,/cilla/page/478/thumb-3x/back.jpg 3x,/cilla/page/478/thumb-4x/back.jpg 4x" class="rounded img-fluid" alt="Use the shorter screw for the hole at the top right." /></a></span></p>
<p>The keyboard restauration is completed now!</p>
<p><span class="ci-image"><a href="/cilla/page/478/completed.jpg" data-fancybox="ipg-fa5987c7" data-caption="The Amiga 1000 keyboard is completed."><img src="/cilla/page/478/maxi/completed.jpg" srcset="/cilla/page/478/maxi-2x/completed.jpg 2x,/cilla/page/478/maxi-3x/completed.jpg 3x,/cilla/page/478/maxi-4x/completed.jpg 4x" class="rounded img-fluid" alt="The Amiga 1000 keyboard is completed." /></a></span></p>
<p>In the next part, I will reassemble the main unit, and have a first test. Is the Amiga still working?</p>2022-08-14T11:42:51ZAmiga 1000 Restauration, Part 1
https://shred.zone/cilla/page/477/amiga-1000-restauration-part-1.html
<p>When the Amiga 1000 was launched in 1985, it was too expensive as a home computer, but rather targeted the professional graphics workstation market. The sales figures were correspondingly low. Only <a href="https://www.amigawiki.org/doku.php?id=de:history:sales_volume" class="exts">27,500 units</a> have been sold in Germany. Nevertheless, and without a doubt, the Amiga 1000 is the jewel of every Amiga collection. Now I finally had the lucky chance to get my own one.</p>
<p><span class="ci-image"><a href="/cilla/page/477/before1.jpg" data-fancybox="ipg-968959db" data-caption="The Amiga 1000, as I got it."><img src="/cilla/page/477/thumb/before1.jpg" srcset="/cilla/page/477/thumb-2x/before1.jpg 2x,/cilla/page/477/thumb-3x/before1.jpg 3x,/cilla/page/477/thumb-4x/before1.jpg 4x" class="rounded img-fluid" alt="The Amiga 1000, as I got it." /></a></span>
<span class="ci-image"><a href="/cilla/page/477/before2.jpg" data-fancybox="ipg-968959db" data-caption="The keyboard is a French/Belgian AZERTY type, with labels for the German keyboard layout."><img src="/cilla/page/477/thumb/before2.jpg" srcset="/cilla/page/477/thumb-2x/before2.jpg 2x,/cilla/page/477/thumb-3x/before2.jpg 3x,/cilla/page/477/thumb-4x/before2.jpg 4x" class="rounded img-fluid" alt="The keyboard is a French/Belgian AZERTY type, with labels for the German keyboard layout." /></a></span></p>
<p>The overall state is fine, considering that the machine is almost 40 years old. The Amiga itself is only a bit yellowed, but has some heavy scratchmarks at one edge. The keyboard has a French/Belgian AZERTY layout that was changed to German layout using stickers, like it was usual for the first machines that were sold in the EU. Its case and the space bar are much more yellowed. The stickers are also yellowed, and one is missing.</p>
<p>The expansion slot at the front contains a 256KB RAM module. The original mouse and the disks have been lost, but I can use any other Amiga mouse and make new disks myself.</p>
<h2 id="whats-inside">What's Inside</h2>
<p>Inside I found a Rev A mainboard and a piggyback board. That extra board stores the Kickstart that is loaded from disk when the machine is powered up. Later revisions used Kickstart ROMs, and didn't need this piggyback board any more.</p>
<p><span class="ci-image"><a href="/cilla/page/477/mainboard1.jpg" data-fancybox="ipg-968959db" data-caption="The mainboard, and the piggyback board on top."><img src="/cilla/page/477/thumb/mainboard1.jpg" srcset="/cilla/page/477/thumb-2x/mainboard1.jpg 2x,/cilla/page/477/thumb-3x/mainboard1.jpg 3x,/cilla/page/477/thumb-4x/mainboard1.jpg 4x" class="rounded img-fluid" alt="The mainboard, and the piggyback board on top." /></a></span></p>
<p>Usually all piggyback Amiga 1000 were produced for the US market. They could not run in Europe without modifications, due to different power frequencies and TV standards. My machine was produced in early 1986, presumably for the US market. One year later, it was modified for the European market. The original Agnus chip was replaced by a 8367R0 that is able to generate PAL video signals. The crystal is still the original 28.6363 MHz NTSC one though, so the video signal is not truly PAL.</p>
<p>The system has a Denise 8362R6, which is the first revision that is also capable of displaying the <a href="https://en.wikipedia.org/wiki/Amiga_Halfbrite_mode" class="wp">EHB</a> mode.</p>
<p>Altogether, it is an early Amiga model, and very likely one of the first that have been sold in Germany.</p>
<h2 id="the-psu">The PSU</h2>
<p>Generally I don't recommend to power up an old computer straight away after many years of storage. Without a visual inspection and the necessary refurbishment, the power supply could damage the computer, or components inside could blow up.</p>
<p>A first visual check of the PSU seemed to be allright, with no obvious damages, and no bulged or leaked capacitors. But then I found tiny cracks in one safety capacitor.</p>
<p><span class="ci-image"><a href="/cilla/page/477/psu1.jpg" data-fancybox="ipg-968959db" data-caption="A look into the PSU."><img src="/cilla/page/477/thumb/psu1.jpg" srcset="/cilla/page/477/thumb-2x/psu1.jpg 2x,/cilla/page/477/thumb-3x/psu1.jpg 3x,/cilla/page/477/thumb-4x/psu1.jpg 4x" class="rounded img-fluid" alt="A look into the PSU." /></a></span>
<span class="ci-image"><a href="/cilla/page/477/psu2.jpg" data-fancybox="ipg-968959db" data-caption="This RIFA capacitor shows signs of fatigue."><img src="/cilla/page/477/thumb/psu2.jpg" srcset="/cilla/page/477/thumb-2x/psu2.jpg 2x,/cilla/page/477/thumb-3x/psu2.jpg 3x,/cilla/page/477/thumb-4x/psu2.jpg 4x" class="rounded img-fluid" alt="This RIFA capacitor shows signs of fatigue." /></a></span></p>
<p>These RIFA X class capacitors are actually infamous for blowing up after many years. Their insulators are made from paper. The material gets brittle from age and thermal stress, letting in moisture, which amplifies the problem. Eventually the capacitor can <a href="https://youtu.be/njbwdbcfXjc?t=240" class="yt">crack open and go up in fumes</a>.</p>
<p>It was good that I kept the PSU disconnected from mains. It is now being refurbished by @DingensCGN, a member of the <a href="https://www.a1k.org/forum/index.php" class="exts">A1K.org forum</a> who has a lot of experience with Amiga PSU restauration.</p>
<h2 id="the-mainboard">The Mainboard</h2>
<p>I recapped the mainboard and piggyback board. For the seven 22µF capacitors, I used a bipolar type instead. Those capacitors are used for filtering the audio and RGB signals. Using bipolar caps here might improve the signal quality, and won't hurt otherwise.</p>
<p>To be honest, this time I had doubt if I should replace the old capacitors. This Amiga 1000 will not become a workstation, I have other Amigas for that. It is rather a collectible. Still I want it to be in a good technical condition. When I started to collect retro computers, I promised myself not to keep machines that are broken or otherwise not fit for use.</p>
<p>After that I removed all the dust, and gave the boards a thorough wash with IPA.</p>
<p><span class="ci-image"><a href="/cilla/page/477/mainboard2.jpg" data-fancybox="ipg-968959db" data-caption="The mainboard, with fresh electrolytic capacitors."><img src="/cilla/page/477/thumb/mainboard2.jpg" srcset="/cilla/page/477/thumb-2x/mainboard2.jpg 2x,/cilla/page/477/thumb-3x/mainboard2.jpg 3x,/cilla/page/477/thumb-4x/mainboard2.jpg 4x" class="rounded img-fluid" alt="The mainboard, with fresh electrolytic capacitors." /></a></span></p>
<p>The mainboard is now ready to get remarried with the piggyback board, and then move back into the case.</p>
<h2 id="whitening">Whitening</h2>
<p>The first thing I actually did was to disassemble the entire machine. The plastic parts of the case were cleaned in soap water and carefully scrubbed with a dishwashing brush. After that, I used the sunny July weather, and whitened all parts in the sunshine. I did not use any chemicals, just the sun. After two days, the Amiga was almost white again.</p>
<p><span class="ci-image"><a href="/cilla/page/477/0default.jpg" data-fancybox="ipg-968959db" data-caption="All case parts are whitened and ready for reassembly."><img src="/cilla/page/477/thumb/0default.jpg" srcset="/cilla/page/477/thumb-2x/0default.jpg 2x,/cilla/page/477/thumb-3x/0default.jpg 3x,/cilla/page/477/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="All case parts are whitened and ready for reassembly." /></a></span></p>
<p>That's it for the first part of the Amiga 1000 story. The next part will be about the restauration of the keyboard. There is a lot to do there.</p>2022-08-08T18:10:30ZAtari ST
https://shred.zone/cilla/page/476/atari-st.html
<p>At the end of the 1980s, I wavered between the Atari ST and the Amiga 500 to become the successor of my ZX Spectrum. Eventually I decided to get an Amiga. In retrospective it was the right choice. The AmigaOS laid the foundation to my later career as a professional software developer. Still I stayed curious about the Atari ST. Well, now is the time to get one. 😀</p>
<p>I found an Atari 1040STF for a fair price. The outside is in a very good condition. No modifications, no yellowing, even the warranty seal was still intact. Also on the inside, there was just a bit of dust around the case vents.</p>
<p><span class="ci-image"><a href="/cilla/page/476/start.jpg" data-fancybox="ipg-4b3ac228" data-caption="My new Atari ST. Outside it's in a good condition. Even the protective film is still on the Atari badge."><img src="/cilla/page/476/thumb/start.jpg" srcset="/cilla/page/476/thumb-2x/start.jpg 2x,/cilla/page/476/thumb-3x/start.jpg 3x,/cilla/page/476/thumb-4x/start.jpg 4x" class="rounded img-fluid" alt="My new Atari ST. Outside it's in a good condition. Even the protective film is still on the Atari badge." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/opened.jpg" data-fancybox="ipg-4b3ac228" data-caption="Just a bit of dust inside."><img src="/cilla/page/476/thumb/opened.jpg" srcset="/cilla/page/476/thumb-2x/opened.jpg 2x,/cilla/page/476/thumb-3x/opened.jpg 3x,/cilla/page/476/thumb-4x/opened.jpg 4x" class="rounded img-fluid" alt="Just a bit of dust inside." /></a></span></p>
<p>Even the keyboard wasn't really filthy, considering that the machine was in use for many years. It was still in for a thorough cleaning though.</p>
<p><span class="ci-image"><a href="/cilla/page/476/keyboard1.jpg" data-fancybox="ipg-4b3ac228" data-caption="The keyboard needs a cleaning."><img src="/cilla/page/476/thumb/keyboard1.jpg" srcset="/cilla/page/476/thumb-2x/keyboard1.jpg 2x,/cilla/page/476/thumb-3x/keyboard1.jpg 3x,/cilla/page/476/thumb-4x/keyboard1.jpg 4x" class="rounded img-fluid" alt="The keyboard needs a cleaning." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/keyboard2.jpg" data-fancybox="ipg-4b3ac228" data-caption="The keyboard's PCB, with the rubber domes."><img src="/cilla/page/476/thumb/keyboard2.jpg" srcset="/cilla/page/476/thumb-2x/keyboard2.jpg 2x,/cilla/page/476/thumb-3x/keyboard2.jpg 3x,/cilla/page/476/thumb-4x/keyboard2.jpg 4x" class="rounded img-fluid" alt="The keyboard's PCB, with the rubber domes." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/keyboard3.jpg" data-fancybox="ipg-4b3ac228" data-caption="Cleaned keyboard. It looks much better."><img src="/cilla/page/476/thumb/keyboard3.jpg" srcset="/cilla/page/476/thumb-2x/keyboard3.jpg 2x,/cilla/page/476/thumb-3x/keyboard3.jpg 3x,/cilla/page/476/thumb-4x/keyboard3.jpg 4x" class="rounded img-fluid" alt="Cleaned keyboard. It looks much better." /></a></span></p>
<p>The Atari ST has an integrated power supply, unlike the Amiga 500 with its separate PSU on the floor. On the one hand, it permits to plug the unit directly to the mains. On the other hand, it makes the machine heavier, and makes modding more risky due to the presence of hazardous voltages inside the case.</p>
<blockquote>
<p><strong>WARNING:</strong> Switched power supplies may still contain high voltages hours after they have been disconnected from mains. I strongly advise against attempting repairs or modifications yourself. Please ask a trained technician for assistance!</p>
</blockquote>
<p>Inside my ST, I found a Mitsumi SR98 PSU. It looked okay, except of a bulged capacitor. However this type is said to be of poor quality, so I decided to replace it with a modern MeanWell RD-35A.</p>
<p><span class="ci-image"><a href="/cilla/page/476/psu1.jpg" data-fancybox="ipg-4b3ac228" data-caption="The original Mitsumi SR98 PSU."><img src="/cilla/page/476/thumb/psu1.jpg" srcset="/cilla/page/476/thumb-2x/psu1.jpg 2x,/cilla/page/476/thumb-3x/psu1.jpg 3x,/cilla/page/476/thumb-4x/psu1.jpg 4x" class="rounded img-fluid" alt="The original Mitsumi SR98 PSU." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/psu2.jpg" data-fancybox="ipg-4b3ac228" data-caption="The filter capacitor is bulged."><img src="/cilla/page/476/thumb/psu2.jpg" srcset="/cilla/page/476/thumb-2x/psu2.jpg 2x,/cilla/page/476/thumb-3x/psu2.jpg 3x,/cilla/page/476/thumb-4x/psu2.jpg 4x" class="rounded img-fluid" alt="The filter capacitor is bulged." /></a></span></p>
<p>The MeanWell sits very nicely on the original frame of the Atari ST, almost as if it was made for that purpose. In order to mount it, I removed the original PSU and the insulator sheet below, and drilled two screw holes into the frame.</p>
<p>The terminals of the PSU can be either on the left or the right side. I decided for the left side, so the mains and mainboard power lines are cleanly separated and won't cross each other. I had to extend the wires to the mainboard for that, though.</p>
<p>I also took care that the PSU, the frame, and the shielding of the Atari ST are properly grounded. For that I had to add a ground wire from the metal frame to the ground terminal of the RD-35A.</p>
<p><span class="ci-image"><a href="/cilla/page/476/psu3.jpg" data-fancybox="ipg-4b3ac228" data-caption="A MeanWell RD-35A as replacement. Mains and output wiring is cleanly separated."><img src="/cilla/page/476/thumb/psu3.jpg" srcset="/cilla/page/476/thumb-2x/psu3.jpg 2x,/cilla/page/476/thumb-3x/psu3.jpg 3x,/cilla/page/476/thumb-4x/psu3.jpg 4x" class="rounded img-fluid" alt="A MeanWell RD-35A as replacement. Mains and output wiring is cleanly separated." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/psu4.jpg" data-fancybox="ipg-4b3ac228" data-caption="It sits perfectly on the original frame."><img src="/cilla/page/476/thumb/psu4.jpg" srcset="/cilla/page/476/thumb-2x/psu4.jpg 2x,/cilla/page/476/thumb-3x/psu4.jpg 3x,/cilla/page/476/thumb-4x/psu4.jpg 4x" class="rounded img-fluid" alt="It sits perfectly on the original frame." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/psu5.jpg" data-fancybox="ipg-4b3ac228" data-caption="Wired properly. A terminal cover prevents touching the mains terminals."><img src="/cilla/page/476/thumb/psu5.jpg" srcset="/cilla/page/476/thumb-2x/psu5.jpg 2x,/cilla/page/476/thumb-3x/psu5.jpg 3x,/cilla/page/476/thumb-4x/psu5.jpg 4x" class="rounded img-fluid" alt="Wired properly. A terminal cover prevents touching the mains terminals." /></a></span></p>
<p>To be honest, I like this modification much better than the original open frame design. With a <a href="https://www.printables.com/de/model/250438-atari-st-psu-replacement-parts" class="exts">3D printed terminal cover</a>, all hazardous parts are now sufficiently protected against accidental touching.</p>
<p>The machine was sold as "LED lights up, but otherwise untested". I usually refrain from using old and unrefurbished PSUs for testing, as they might damage the computer or might even explode in worst case. With the new PSU, it was now time for a first check if there are other damages. But I was lucky. The machine just booted up without problems. The only minor issue was that the Atari logo was black, which showed that the machine still had the original TOS 1.02 ROMs.</p>
<p><span class="ci-image"><a href="/cilla/page/476/about1.jpg" data-fancybox="ipg-4b3ac228" data-caption="The about dialog, with a monochrome Atari logo."><img src="/cilla/page/476/thumb/about1.jpg" srcset="/cilla/page/476/thumb-2x/about1.jpg 2x,/cilla/page/476/thumb-3x/about1.jpg 3x,/cilla/page/476/thumb-4x/about1.jpg 4x" class="rounded img-fluid" alt="The about dialog, with a monochrome Atari logo." /></a></span></p>
<p>The TOS came in two strange 96KB ROMs. In order to do a TOS upgrade, I had to replace them with six (!) 27C256 EPROMs. This requires soldering in four more sockets, and changing three solder pads. But I was going to change the electrolytic capacitors anyway.</p>
<p><span class="ci-image"><a href="/cilla/page/476/board1.jpg" data-fancybox="ipg-4b3ac228" data-caption="Time for recapping."><img src="/cilla/page/476/thumb/board1.jpg" srcset="/cilla/page/476/thumb-2x/board1.jpg 2x,/cilla/page/476/thumb-3x/board1.jpg 3x,/cilla/page/476/thumb-4x/board1.jpg 4x" class="rounded img-fluid" alt="Time for recapping." /></a></span></p>
<p>Recapping is a routine procedure for me when refurbishing home computers. Some people think it's not necessary unless one of the capacitors is actually bulged or leaking. However electrolytic capacitors also dry out over the years, and are losing their capacity. The result is that the system is still working, but might be unstable, or the audio and video quality might be degraded. The used components have usually been of a simple quality, since home computers were designed to be used for a few couple of years only, and production had to be cheap.</p>
<p>For soldering in the sockets, I first had to open the pads. Since I was on it, I also opened the pads for a Blitter socket as preparation for adding a Blitter chip. I no longer pursued this plan though after I found the prices of NOS Blitters. 🤑 According to the feedback of Atari enthusiasts, the Blitter isn't really necessary anyway thanks to optimized CPU based routines. This is possible because, unlike on the Amiga, the Blitter is blocking the CPU during operation.</p>
<p>The Rainbow TOS 1.04 image was first split into an upper and lower half, and then each half was split again into three sections. I used my <a href="https://pypi.org/project/pynaroma/" class="exts">pynaroma</a> tool for that, and then burned each section to an 27C256 EPROM, giving six EPROMs. When changing from two ROMs to six EPROMs, it's also necessary to set three solder pads from the "1M" to the "256K" configuration.</p>
<p><span class="ci-image"><a href="/cilla/page/476/board2.jpg" data-fancybox="ipg-4b3ac228" data-caption="Recapping is done, and there are new sockets for the TOS EPROMs."><img src="/cilla/page/476/thumb/board2.jpg" srcset="/cilla/page/476/thumb-2x/board2.jpg 2x,/cilla/page/476/thumb-3x/board2.jpg 3x,/cilla/page/476/thumb-4x/board2.jpg 4x" class="rounded img-fluid" alt="Recapping is done, and there are new sockets for the TOS EPROMs." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/board3.jpg" data-fancybox="ipg-4b3ac228" data-caption="Six 27C256 EPROMs. The three solder pads need to be changed as shown."><img src="/cilla/page/476/thumb/board3.jpg" srcset="/cilla/page/476/thumb-2x/board3.jpg 2x,/cilla/page/476/thumb-3x/board3.jpg 3x,/cilla/page/476/thumb-4x/board3.jpg 4x" class="rounded img-fluid" alt="Six 27C256 EPROMs. The three solder pads need to be changed as shown." /></a></span></p>
<p>And that's it. The machine booted up again, and finally showed the Atari logo in rainbow colors.</p>
<p><span class="ci-image"><a href="/cilla/page/476/about2.jpg" data-fancybox="ipg-4b3ac228" data-caption="Rainbow TOS 1.04"><img src="/cilla/page/476/thumb/about2.jpg" srcset="/cilla/page/476/thumb-2x/about2.jpg 2x,/cilla/page/476/thumb-3x/about2.jpg 3x,/cilla/page/476/thumb-4x/about2.jpg 4x" class="rounded img-fluid" alt="Rainbow TOS 1.04" /></a></span></p>
<p>Since I never had an Atari ST before, I don't have any diskettes, and I'm also not too keen in making some. Fortunately <a href="https://centuriontech.eu/product/goex4st/" class="exts">Centuriontech GOEX</a> drives are also available for Atari ST computers. It is a drop-in replacement for the original drive, but uses <code>.st</code> files on SD cards instead. The diskette file can be selected via an encoder and a tiny OLED display. The ST itself won't notice that there is no real floppy drive connected to it.</p>
<p>The floppy power cable turned out to be a bit too short on my machine, so I had to replace it with a longer one.</p>
<p>The OLED display is fixed to the case top with double-sided tape. The ribbon cable is then hot-glued inside, so it will sit nice and tight.</p>
<p><span class="ci-image"><a href="/cilla/page/476/floppy1.jpg" data-fancybox="ipg-4b3ac228" data-caption="The Centuriontech GOEX drive."><img src="/cilla/page/476/thumb/floppy1.jpg" srcset="/cilla/page/476/thumb-2x/floppy1.jpg 2x,/cilla/page/476/thumb-3x/floppy1.jpg 3x,/cilla/page/476/thumb-4x/floppy1.jpg 4x" class="rounded img-fluid" alt="The Centuriontech GOEX drive." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/floppy2.jpg" data-fancybox="ipg-4b3ac228" data-caption="The OLED display cable is hot-glued on the inside."><img src="/cilla/page/476/thumb/floppy2.jpg" srcset="/cilla/page/476/thumb-2x/floppy2.jpg 2x,/cilla/page/476/thumb-3x/floppy2.jpg 3x,/cilla/page/476/thumb-4x/floppy2.jpg 4x" class="rounded img-fluid" alt="The OLED display cable is hot-glued on the inside." /></a></span>
<span class="ci-image"><a href="/cilla/page/476/floppy3.jpg" data-fancybox="ipg-4b3ac228" data-caption="The cable will then sit nicely tight on the outside."><img src="/cilla/page/476/thumb/floppy3.jpg" srcset="/cilla/page/476/thumb-2x/floppy3.jpg 2x,/cilla/page/476/thumb-3x/floppy3.jpg 3x,/cilla/page/476/thumb-4x/floppy3.jpg 4x" class="rounded img-fluid" alt="The cable will then sit nicely tight on the outside." /></a></span></p>
<p>And that concludes the refurbishment of my new Atari ST. I'm happy to have it in my retro collection.</p>
<p><span class="ci-image"><a href="/cilla/page/476/0default.jpg" data-fancybox="ipg-4b3ac228" data-caption="This is my refurbished Atari 1040STF."><img src="/cilla/page/476/maxi/0default.jpg" srcset="/cilla/page/476/maxi-2x/0default.jpg 2x,/cilla/page/476/maxi-3x/0default.jpg 3x,/cilla/page/476/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="This is my refurbished Atari 1040STF." /></a></span></p>2022-07-30T13:51:00ZRehousing of a PSP
https://shred.zone/cilla/page/475/rehousing-of-a-psp.html
<p>I was one of the fools who had backed the <a href="https://en.wikipedia.org/wiki/ZX_Spectrum_Vega%2B" class="wp">ZX Spectrum Vega+</a>, in the hope to get a Speccy handheld console. The campaign was one of the biggest at Indiegogo, and ended in a disaster. The Vega+ has never been produced, and the funding money was gone after a year-long legal battle between the project initiators.</p>
<p>Later I learned that there has been a ZX Spectrum handheld console all the time: A Sony PlayStation Portable running a Fuse emulator. By a lucky chance, I was able to get a PSP now. It's a PSP-2000 in Ice Silver color, probably a self-import straight from Japan.</p>
<p><span class="ci-image"><a href="/cilla/page/475/start.jpg" data-fancybox="ipg-40c38d21" data-caption="A PSP-2000 in Ice Silver."><img src="/cilla/page/475/thumb/start.jpg" srcset="/cilla/page/475/thumb-2x/start.jpg 2x,/cilla/page/475/thumb-3x/start.jpg 3x,/cilla/page/475/thumb-4x/start.jpg 4x" class="rounded img-fluid" alt="A PSP-2000 in Ice Silver." /></a></span></p>
<p>Overall, it was in an excellent condition, except of some minor scratches on the display and the UMD drive door. The previous owner told me that the volume buttons were unresponsive, which was fine for me since replacement parts are still available. What he "forgot" to tell me though was that two case screws had been overturned in a repair attempt.</p>
<p><span class="ci-image"><a href="/cilla/page/475/screwed1.jpg" data-fancybox="ipg-40c38d21" data-caption="One of the two screws that have been overturned."><img src="/cilla/page/475/thumb/screwed1.jpg" srcset="/cilla/page/475/thumb-2x/screwed1.jpg 2x,/cilla/page/475/thumb-3x/screwed1.jpg 3x,/cilla/page/475/thumb-4x/screwed1.jpg 4x" class="rounded img-fluid" alt="One of the two screws that have been overturned." /></a></span></p>
<p>I tried a screw remover on them, but the screws were too tight and the screw heads were too tiny. After that, I tried to cut a slit into the screw heads, but they were too hard for that. Eventually I gave up, and (with a heavy heart) I just cut the case open.</p>
<p><span class="ci-image"><a href="/cilla/page/475/screwed2.jpg" data-fancybox="ipg-40c38d21" data-caption="No chance to remove them. I had to cut the case open. 😢"><img src="/cilla/page/475/thumb/screwed2.jpg" srcset="/cilla/page/475/thumb-2x/screwed2.jpg 2x,/cilla/page/475/thumb-3x/screwed2.jpg 3x,/cilla/page/475/thumb-4x/screwed2.jpg 4x" class="rounded img-fluid" alt="No chance to remove them. I had to cut the case open. 😢" /></a></span></p>
<h2 id="rehousing">Rehousing</h2>
<p>There are replica cases available from China, so I ordered a replacement in transparent blue. It came in a full set, with plastic clips, all the screws, springs, and even with fake labels for the serial number. The only parts needed for the transplantation are the hardware and everything related to it (like metal shieldings, or the LCD frame).</p>
<blockquote>
<p><strong>WARNING:</strong> Although the transplantation isn't really difficult, it still takes a bit of experience with this kind of hardware. There is a risk that parts might break, or that the PSP might not work any more after reassembly. If you plan to move your PSP to a new case, you are doing it at your own risk. Also, please take ESD precautions!</p>
</blockquote>
<p>The first step is to tear down the old PSP. It's certainly a good idea to make detailed notes and photos that will help to find the correct place for each part later. Especially the UMD drive has a few small parts that turned out to be a bit tricky at the reassembly. The flat wires can be removed by either gently lifting or moving the black lever of the connector. Do not just yank them out. Never use force!</p>
<p><span class="ci-image"><a href="/cilla/page/475/disassembly1.jpg" data-fancybox="ipg-40c38d21" data-caption="Display folded forward. Now I can start with the disassembly."><img src="/cilla/page/475/thumb/disassembly1.jpg" srcset="/cilla/page/475/thumb-2x/disassembly1.jpg 2x,/cilla/page/475/thumb-3x/disassembly1.jpg 3x,/cilla/page/475/thumb-4x/disassembly1.jpg 4x" class="rounded img-fluid" alt="Display folded forward. Now I can start with the disassembly." /></a></span>
<span class="ci-image"><a href="/cilla/page/475/disassembly2.jpg" data-fancybox="ipg-40c38d21" data-caption="Top half is emptied. Now for the bottom half with the UMD drive."><img src="/cilla/page/475/thumb/disassembly2.jpg" srcset="/cilla/page/475/thumb-2x/disassembly2.jpg 2x,/cilla/page/475/thumb-3x/disassembly2.jpg 3x,/cilla/page/475/thumb-4x/disassembly2.jpg 4x" class="rounded img-fluid" alt="Top half is emptied. Now for the bottom half with the UMD drive." /></a></span></p>
<p>Disassembling the UMD drive was surprisingly easy. At some point the drive door needs to be taken out though, which requires a bit of force that made me feel uneasy. I was worried that the door or one of the hinges might snap.</p>
<p>In order to remove the WiFi antenna, the sticker in the battery compartment needs to be removed. I tried it with dissolving the glue with IPA, but it also dissolved the sticker. In retrospect, I better should have used a hairdryer or a heat gun.</p>
<p>And then it was done. The old PSP was disassembled, and all parts were scattered on my desk.</p>
<p><span class="ci-image"><a href="/cilla/page/475/disassembly3.jpg" data-fancybox="ipg-40c38d21" data-caption="The PSP is completely torn down. Let's put the pieces of the puzzle back together."><img src="/cilla/page/475/thumb/disassembly3.jpg" srcset="/cilla/page/475/thumb-2x/disassembly3.jpg 2x,/cilla/page/475/thumb-3x/disassembly3.jpg 3x,/cilla/page/475/thumb-4x/disassembly3.jpg 4x" class="rounded img-fluid" alt="The PSP is completely torn down. Let's put the pieces of the puzzle back together." /></a></span></p>
<p>The reassembly is done in reverse order. If you have made meticulous notes on the disassembly, it should be easy.</p>
<p>Although the replica set already contained many new case parts, I decided to reuse some of the original ones. The symbols of the direction and control buttons of the replica were printed on the top of the keycap, which looks considerably cheaper than the original parts which are printed on the inside. I also reused the shoulder buttons, the cover of the memory stick port, and the power slider.</p>
<p><span class="ci-image"><a href="/cilla/page/475/assembly1.jpg" data-fancybox="ipg-40c38d21" data-caption="The bottom side, with the UMD drive and WiFi antenna. The UMD drive door is still removed."><img src="/cilla/page/475/thumb/assembly1.jpg" srcset="/cilla/page/475/thumb-2x/assembly1.jpg 2x,/cilla/page/475/thumb-3x/assembly1.jpg 3x,/cilla/page/475/thumb-4x/assembly1.jpg 4x" class="rounded img-fluid" alt="The bottom side, with the UMD drive and WiFi antenna. The UMD drive door is still removed." /></a></span>
<span class="ci-image"><a href="/cilla/page/475/assembly2.jpg" data-fancybox="ipg-40c38d21" data-caption="Top side almost completely assembled again."><img src="/cilla/page/475/thumb/assembly2.jpg" srcset="/cilla/page/475/thumb-2x/assembly2.jpg 2x,/cilla/page/475/thumb-3x/assembly2.jpg 3x,/cilla/page/475/thumb-4x/assembly2.jpg 4x" class="rounded img-fluid" alt="Top side almost completely assembled again." /></a></span></p>
<p>As one of the last steps, I could finally do what I originally intended to do only. I peeled off the old membrane of the control panel, and carefully put the replacement part on it. There are tiny holes in the holder and the membrane that helps to do a proper alignment.</p>
<p><span class="ci-image"><a href="/cilla/page/475/membrane.jpg" data-fancybox="ipg-40c38d21" data-caption="This was what I initially planned: Changing the membrane of the control panel."><img src="/cilla/page/475/thumb/membrane.jpg" srcset="/cilla/page/475/thumb-2x/membrane.jpg 2x,/cilla/page/475/thumb-3x/membrane.jpg 3x,/cilla/page/475/thumb-4x/membrane.jpg 4x" class="rounded img-fluid" alt="This was what I initially planned: Changing the membrane of the control panel." /></a></span></p>
<p>The rehousing was completed. In a last step, I cleaned the fingerprints off the LCD glass. I recommend to use a non-alcoholic LCD cleaner that does not leave streaks. I had used IPA first, but it dissolved the foam around the display and smeared it all over the panel.</p>
<p>The glass of the top cover was protected by two films (one inside, one outside) that needed to be removed. Then I used a camera lens brush to carefully brush off remaining dust particles and hairs from the glass and the LCD panel. Finally I closed the new case.</p>
<p>To my amazement, the PSP was still working! The new case doesn't look and feel as premium as the original case, but overall, the PSP looks very pretty in the clear blue case.</p>
<p><span class="ci-image"><a href="/cilla/page/475/0default.jpg" data-fancybox="ipg-40c38d21" data-caption="Transplantation was successful, and the patient is still alive."><img src="/cilla/page/475/maxi/0default.jpg" srcset="/cilla/page/475/maxi-2x/0default.jpg 2x,/cilla/page/475/maxi-3x/0default.jpg 3x,/cilla/page/475/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="Transplantation was successful, and the patient is still alive." /></a></span></p>
<h2 id="custom-firmware">Custom Firmware</h2>
<p>My goal is to run emulators on the PSP. There is a lot of so-called "homebrew" software available, like emulators, tools, and even self-made games. But in order to run them, there must be a custom firmware installed first.</p>
<p>It's very easy to install it. First you need to make sure that the latest firmware 6.61 is installed on your PSP. If not, make an upgrade first. After that, a so called Infinity patch is installed. It takes care that the custom firmware is always active, even after a reboot. Finally, the custom firmware is installed, and then connected to the Infinity patch.</p>
<p>There is an excellent <a href="https://youtu.be/h-pZeWV5Q8E" class="yt">video by MrMario2011</a> that is explaning each step.</p>
<p>Homebrew software can be found just by searching for it. Of course, the first thing I installed was the <a href="http://psp.akop.org/fuse.htm" class="ext">ZX Spectrum emulator</a>. It is based on the open source <a href="http://fuse-emulator.sourceforge.net/" class="ext">Fuse</a> emulator. Games can be (legally) downloaded at <a href="https://worldofspectrum.org" class="exts">World of Spectrum</a>.</p>
<p><span class="ci-image"><a href="/cilla/page/475/screen1.jpg" data-fancybox="ipg-40c38d21" data-caption="ZX Spectrum Emulator running the game &quot;IK+&quot;."><img src="/cilla/page/475/thumb/screen1.jpg" srcset="/cilla/page/475/thumb-2x/screen1.jpg 2x,/cilla/page/475/thumb-3x/screen1.jpg 3x,/cilla/page/475/thumb-4x/screen1.jpg 4x" class="rounded img-fluid" alt="ZX Spectrum Emulator running the game "IK+"." /></a></span></p>
<p>There are many other emulators, e.g. for C64, Atari, Amiga, and many old game consoles. The Amiga emulator brought the PSP to its limit though. I tried to run the <a href="https://www.pouet.net/prod.php?which=3119" class="exts">Red Sector Megademo</a> on it, but it was quite sluggish and not really fun to watch.</p>
<p>Talking about demos: There are even <a href="https://www.pouet.net/prodlist.php?platform%5B%5D=Playstation+Portable&page=1" class="exts">a few demos</a> for the PSP! One of the best voted is made by The Black Lotus (Amiga fans certainly remember the name of that group) and is <a href="https://github.com/theblacklotus/suicide-barbie" class="exts">open source</a>. I recommend to run the version at GitHub, as the one at pouet.net might not run on the latest kernel versions. There is a <a href="https://youtu.be/Q1J7EBzwN3Q" class="yt">video of the demo</a> on YouTube (<acronym title="Not Safe For Work">NSFW</acronym>).</p>
<p><span class="ci-image"><a href="/cilla/page/475/screen2.jpg" data-fancybox="ipg-40c38d21" data-caption="There are even demos for the PSP!"><img src="/cilla/page/475/thumb/screen2.jpg" srcset="/cilla/page/475/thumb-2x/screen2.jpg 2x,/cilla/page/475/thumb-3x/screen2.jpg 3x,/cilla/page/475/thumb-4x/screen2.jpg 4x" class="rounded img-fluid" alt="There are even demos for the PSP!" /></a></span></p>
<p>To wrap it up: While looking for software I felt like am too late for the party, as the PSP retro scene seems to have moved on already. Still, the PSP-2000 is a nice handheld console. And with the homebrew emulators, there is an almost unlimited pool of old retro games available.</p>2022-07-12T17:16:15ZMaestroPro Internal
https://shred.zone/cilla/page/473/maestropro-internal.html
<p><span class="ci-image float-right"><a href="/cilla/page/473/0default.jpg" data-fancybox="ipg-df7b9f36" data-caption="MacroSystem Maestro Professional"><img src="/cilla/page/473/thumb/0default.jpg" srcset="/cilla/page/473/thumb-2x/0default.jpg 2x,/cilla/page/473/thumb-3x/0default.jpg 3x,/cilla/page/473/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="MacroSystem Maestro Professional" /></a></span> In the mid 1990s, MacroSystem Germany released the Maestro Professional sound card for the Amiga. It was a special sound card because it was fully digital, having only optical and coaxial digital connectors. It was suited for lossless recording from CD and <a href="https://en.wikipedia.org/wiki/Digital_Audio_Tape" class="wp">DAT</a>, as well as generating lossless audio output for DAT recordings. With tools like <em>Samplitude</em>, the Amiga became a studio quality digital audio workstation. There was also a tool for doing backups on DAT. At that time, these tapes were the cheapest way to backup entire harddisks (a 90 minutes DAT tape could backup almost 1 GB of data, which was a lot in the 1990s).</p>
<p>Unfortunately MacroSystem had never released a driver for the sound card, so it could only be used by a few (and mostly commerical) tools. I pestered their developers at every Amiga fair I could attend, but to no avail. Then, at the end of 1994, I decided to find the datasheets of the Yamaha chips, reverse engineer the board design, and write a driver myself. It took some time of trial and error, but eventually I was successful. In the coming years, my driver, the <a href="http://aminet.net/package/driver/audio/Maestix" class="ext">maestix.library</a> (<a href="https://github.com/shred/maestix" class="exts">source code</a>), became the inofficial standard driver. <a href="https://en.wikipedia.org/wiki/OctaMED" class="wp">OctaMed Professional</a> is maybe the most prominent software using it. Some professional music artists used Amiga and OctaMED for their production, so maybe my driver was even used for recording the masters of some famous CDs? 😁</p>
<h2 id="digital-audio-in-a-nutshell">Digital Audio in a Nutshell</h2>
<p>The MaestroPro is able to receive and transmit digital audio data, either in the S/P-DIF or AES-EBU standard. The former one is still widely used in home equipment today, while the latter one was rather common in studio equipment. Today's standards permit different encodings and high sampling rates, but the MaestroPro could only read 2-channel 16-bit raw audio with sampling rates of either 48kHz (DAT), 44.1kHz (CD), or 32kHz (DAB).</p>
<p>Besides the raw audio data, the standard also transports Channel Status Bits (CSB) and User Data Bits (UDB). The CSB contain information like the used sampling rate and the copy prohibition state. The UDB are not standardized, and usually transport proprietary data between studio equipment.</p>
<h2 id="inside-the-maestro">Inside the Maestro</h2>
<p>The board's design is straightforward. It mainly contains a transmitter, a receiver, and FIFO memory for transporting the samples between the board and AmigaOS.</p>
<p><div class="text-center"><span class="ci-svg-image"><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="676px" height="387px" viewBox="-0.5 -0.5 676 387"><defs/><g><path d="M 610 170 L 610 218.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 610 223.88 L 606.5 216.88 L 610 218.63 L 613.5 216.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 550 140 L 516.37 140" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 511.12 140 L 518.12 136.5 L 516.37 140 L 518.12 143.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="550" y="110" width="120" height="60" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 140px; margin-left: 551px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Receiver<br />YM3623B DIR</div></div></div></foreignObject><text x="610" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Receiver...</text></switch></g><path d="M 60 110 L 60 41.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 60 36.12 L 63.5 43.12 L 60 41.37 L 56.5 43.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="110" width="120" height="60" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 140px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Transmitter<br />YM3437C DIT2</div></div></div></foreignObject><text x="60" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Transmitter...</text></switch></g><rect x="390" y="125" width="120" height="30" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 140px; margin-left: 391px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Serial to Parallel</div></div></div></foreignObject><text x="450" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Serial to Parallel</text></switch></g><rect x="230" y="125" width="120" height="30" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 140px; margin-left: 231px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Parallel to Serial</div></div></div></foreignObject><text x="290" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Parallel to Serial</text></switch></g><rect x="390" y="225" width="120" height="60" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 255px; margin-left: 391px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">R-FIFO 1Kx16</div></div></div></foreignObject><text x="450" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">R-FIFO 1Kx16</text></switch></g><rect x="230" y="225" width="120" height="60" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 255px; margin-left: 231px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">T-FIFO 1Kx16</div></div></div></foreignObject><text x="290" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">T-FIFO 1Kx16</text></switch></g><rect x="0" y="355" width="670" height="30" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 668px; height: 1px; padding-top: 370px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">DATA BUS</div></div></div></foreignObject><text x="335" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">DATA BUS</text></switch></g><rect x="0" y="225" width="190" height="60" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 188px; height: 1px; padding-top: 255px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Board<br />Controller</div></div></div></foreignObject><text x="95" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Board...</text></switch></g><rect x="550" y="225" width="120" height="60" fill="#e1d5e7" stroke="#9673a6" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 255px; margin-left: 551px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">UDB Shift Register</div></div></div></foreignObject><text x="610" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">UDB Shift Register</text></switch></g><path d="M 429.5 295.5 L 469.5 295.5 L 469.5 318.51 L 490 318.51 L 449.5 344.5 L 409 318.51 L 429.5 318.51 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="all"/><path d="M 309.5 214.5 L 269.5 214.5 L 269.5 191.49 L 249 191.49 L 289.5 165.5 L 330 191.49 L 309.5 191.49 Z" fill="#ffe6cc" stroke="#d79b00" stroke-miterlimit="10" pointer-events="all"/><path d="M 429.5 165.5 L 469.5 165.5 L 469.5 188.51 L 490 188.51 L 449.5 214.5 L 409 188.51 L 429.5 188.51 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="all"/><path d="M 309.5 344.5 L 269.5 344.5 L 269.5 321.49 L 249 321.49 L 289.5 295.5 L 330 321.49 L 309.5 321.49 Z" fill="#ffe6cc" stroke="#d79b00" stroke-miterlimit="10" pointer-events="all"/><path d="M 589.71 295.5 L 629.71 295.5 L 629.71 318.51 L 650.21 318.51 L 609.71 344.5 L 569.21 318.51 L 589.71 318.51 Z" fill="#e1d5e7" stroke="#9673a6" stroke-miterlimit="10" pointer-events="all"/><path d="M 112.59 325.15 L 132.56 325.15 L 94.66 344.5 L 56.76 325.15 L 76.73 325.15 L 76.73 314.85 L 56.76 314.85 L 94.66 295.5 L 132.56 314.85 L 112.59 314.85 Z" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="589.5" cy="27.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><ellipse cx="610" cy="27.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><ellipse cx="60" cy="27.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 580 110 L 580 75 L 90 75 L 90 103.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 90 108.88 L 86.5 101.88 L 90 103.63 L 93.5 101.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="265" y="55" width="80" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 65px; margin-left: 305px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 10px">Sampling Clock</font></div></div></div></foreignObject><text x="305" y="69" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Sampling Clock</text></switch></g><path d="M 572.5 72.5 L 587.5 72.5 M 623.5 52.26 L 647.5 52.26 M 628.75 72.5 L 647.5 72.5 M 623.5 92.74 L 647.5 92.74" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" transform="rotate(270,610,72.5)" pointer-events="all"/><ellipse cx="590.5" cy="72.5" rx="3" ry="2.99" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" transform="rotate(270,610,72.5)" pointer-events="all"/><ellipse cx="620.5" cy="52.49" rx="3" ry="2.99" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" transform="rotate(270,610,72.5)" pointer-events="all"/><ellipse cx="625.75" cy="72.5" rx="3" ry="2.99" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" transform="rotate(270,610,72.5)" pointer-events="all"/><ellipse cx="620.5" cy="92.51" rx="3" ry="2.99" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" transform="rotate(270,610,72.5)" pointer-events="all"/><path d="M 592.75 71.12 L 616.75 55.02" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" transform="rotate(270,610,72.5)" pointer-events="all"/><path d="M 611.5 55.02 L 618.25 53.87 L 614.88 59.62 Z" fill="rgb(0, 0, 0)" stroke="none" transform="rotate(270,610,72.5)" pointer-events="all"/><ellipse cx="650" cy="35" rx="10" ry="10" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 646 35 L 646 32 L 650 32 L 650 38 L 654 38 L 654 35" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="630" y="42.5" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 53px; margin-left: 650px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 10px">48kHz</font></div></div></div></foreignObject><text x="650" y="56" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">48kHz</text></switch></g><rect x="552.5" y="0" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 578px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Optical</div></div></div></foreignObject><text x="578" y="13" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px" text-anchor="middle">Optical</text></switch></g><rect x="590" y="0" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 610px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Coax</div></div></div></foreignObject><text x="610" y="13" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px" text-anchor="middle">Coax</text></switch></g><rect x="25" y="0" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 60px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Optical Out</div></div></div></foreignObject><text x="60" y="13" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px" text-anchor="middle">Optical Out</text></switch></g><path d="M 120 125 L 135.75 125 M 170.25 110 L 195 110 M 170.25 140 L 195 140 M 141 126.2 L 170.25 140" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="138" cy="125" rx="3" ry="3" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 530 140 L 530 110 L 220 110 L 201.37 110" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196.12 110 L 203.12 106.5 L 201.37 110 L 203.12 113.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 230 140 L 201.37 140" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196.12 140 L 203.12 136.5 L 201.37 140 L 203.12 143.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="270" y="90" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 305px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 10px">Input Signal</font></div></div></div></foreignObject><text x="305" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Input Signal</text></switch></g><rect x="170" y="140" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 190px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 10px">FIFO</font></div></div></div></foreignObject><text x="190" y="154" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">FIFO</text></switch></g><rect x="165" y="90" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 190px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 10px">Bypass</font></div></div></div></foreignObject><text x="190" y="104" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Bypass</text></switch></g><rect x="620" y="0" width="20" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 630px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 10px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">In</div></div></div></foreignObject><text x="630" y="13" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="10px" text-anchor="middle">In</text></switch></g><rect x="597" y="62.5" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 72px; margin-left: 622px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 10px">Source<br /></font></div></div></div></foreignObject><text x="622" y="76" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Source
</text></switch></g><rect x="615" y="185" width="60" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 195px; margin-left: 645px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><font style="font-size: 10px">UDB Data<br /></font></div></div></div></foreignObject><text x="645" y="199" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">UDB Data
</text></switch></g><path d="M 630 35 L 640 35" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg></span></div></p>
<p>The optical and coaxial inputs go to a Yamaha YM3623B Digital Audio Interface Receiver (DIR). This chip decodes the audio data stream, extracts the CSB and UDB, and generates a raw bit stream of the audio samples. Shift registers convert it to a 16 bit parallel stream, which is stored in a 1K x 16 bit receiver FIFO. As soon as the FIFO is half filled, an interrupt is raised, and the Amiga driver reads the received data from the FIFO. This happens up to 190 times per second.</p>
<p>The most important CSB are readable via a status register of the board controller. The UDB are copied to a separate 8 bit shift register, which could be polled by the driver. However, UDB are usually 32 bit wide, so reading them was never really used in practice (at least not to my knowledge). The Maestix driver only provided a very rudimentary API for the UDB.</p>
<p>On the transmitter side, the 16 bit samples are pushed to a transmitter FIFO, and then converted to a serial bit stream by shift registers. A Yamaha YM3437C Digital Audio Interface Transmitter (DIT2) converts it to a digital audio stream and sends it via an optical output. The Maestro Pro does not have a coaxial output, presumably because there was not enough space on the board for a fourth connector.</p>
<p>The DIT2 is unable to generate the sampling rate clock by itself. It needs an external clock source instead. On the Maestro Pro, this clock is generated by the DIR. It is either derived from the bit stream of the selected input, or generated by an internal fixed 48kHz clock source. For this reason, the Maestro Pro needs to rely on external signal sources for 32kHz and 44.1kHz output sampling rates.</p>
<p>The transmitter can choose from two data sources. One source is the transmitter FIFO. The other source is the bit stream from the DIR, bypassing the FIFOs. This enables the board to modify the UDB and CSB of the incoming signal directly, without involving the CPU. But since the transmitter and reciver paths are fully separate, the MaestroPro is even capable of providing full-duplex audio streaming. The <code>maestix.library</code> takes advantage of that with the "realtime FX" feature, where the signal is read from the receiver FIFO, modified by the CPU, and then immediately sent back to the transmitter FIFO.</p>
<p>The entire board is controlled by three <a href="https://en.wikipedia.org/wiki/Programmable_Array_Logic" class="wp">GAL</a>s and a small handful of 74LS logic chips. They take care of the Zorro bus protocol, provide mode and state registers, and orchestrate the transmitter and receiver paths.</p>
<h2 id="broken-maestropro">Broken MaestroPro</h2>
<p>All of the components of a MaestroPro can still be found on the market, although both Yamaha chips are not produced any more and can only be found on some Chinese online markets as <acronym title="New Old Stock">NOS</acronym> parts. But basically, it is still possible to repair a broken MaestroPro.</p>
<p>The major weakness are the three custom programmed GALs. The GAL manufacturer states a memory retention time of about 20 years. It sounds like pretty much, but remember that these boards are almost 30 years old now. We already exceeded that life span by 50%!</p>
<p>When I reactivated my Amiga in 2021, my MaestroPro was working fine for a couple of minutes, but then it started to lose synchronization with the audio source. The only way to fix that problem was to turn off the Amiga and let it cool down for several minutes. A deeper diagnostics showed that the card seemed to detach itself from the Zorro bus. It seemed that one of the GAL chips had thermal problems, or was maybe starting to "forget" its programming. Fortunately I was able to recover the programming scheme. I replaced the original GALs with brand new Atmel ATF16V8C-7PU ones, and to my relief, my MaestroPro is now working stable again.</p>
<p>The fusemaps are copyrighted by MacroSystem, so I am not permitted to share them to the public. However, if you happen to have a broken Maestro Pro, please get in contact with me. Maybe I can help you to repair it.</p>
<h2 id="the-maestro-without-pro">The Maestro (without Pro)</h2>
<p>There was a predecessor of this board. It was just called <a href="http://amiga.resource.cx/exp/maestro" class="ext">"Maestro"</a>, and had some major drawbacks. First of all, it had no transmitter and could only receive audio data. Secondly, it did not have a FIFO, so the sample words had to be read by the CPU as soon as they became available, which is up to 96,000 times per second. This was only possible by turning off multitasking and interrupts during recording, which also meant that recordings could not be written to harddisk, but had to be stored in RAM first.</p>
<p>Compared to its successor, the Maestro hasn't been a great success. I haven't seen one since the end of the 1990s, and I also don't know a single software that is actually using it. Due to the technical limitations, the Maestix driver won't support it.</p>2022-07-04T14:58:49ZThe Red C64
https://shred.zone/cilla/page/474/the-red-c64.html
<p>My first home computers were made by Sinclair, and I liked them. Then one day, my brother brought a Commodore 64 that he had borrowed from a classmate. He showed me a <a href="https://youtu.be/2FCwnJ6ki9U" class="yt">demo called "Trap"</a>, and I was flabbergasted about the sound abilities of the SID chip. My ZX Spectrum just had a plain beeper, and since then I wished Sinclair had added a decent sound chip. Or that I had a C64 instead of the Speccy.</p>
<p>35 years later, this wish came true as I bought my first C64. It came in a case that is painted in a bright red color. It was sold as broken. The PLA chip was missing, and there was no way to test if that was the only problem.</p>
<p>The machine arrived here in a pretty good state. The paint job was actually quite well done, and everything was nice and clean. It certainly wasn't much used after the previous owner did the modification. I also found traces of further planned modificiations, like numbers painted on the PCB. Maybe the machine broke during their modification attempt, ending their endeavor.</p>
<p>Let's have a look inside. There is a 250425 mainboard, and the PLA chip was missing as announced. I also found that all other chips were made in 1984, except of the VIC which was made end of 1985. This might be a bad sign, maybe they swapped the good VIC with a broken one before selling the machine.</p>
<p><span class="ci-image"><a href="/cilla/page/474/inside.jpg" data-fancybox="ipg-abdeae8c" data-caption="Inside there is a 250425 mainboard. The PLA chip is missing."><img src="/cilla/page/474/thumb/inside.jpg" srcset="/cilla/page/474/thumb-2x/inside.jpg 2x,/cilla/page/474/thumb-3x/inside.jpg 3x,/cilla/page/474/thumb-4x/inside.jpg 4x" class="rounded img-fluid" alt="Inside there is a 250425 mainboard. The PLA chip is missing." /></a></span></p>
<p>I first powered up the board and checked the voltages. The +5V and +12V were fine, so I could be sure that I wouldn't damage the replacement parts I was going to put in.</p>
<p>For the missing PLA, there is a choice of modern FPGA based replacements. I chose a <em>PLAnkton</em>, which just fits into the socket and even has about the same color as the main board. After that, I connected a monitor and powered up the machine again. I got a video sync, but the picture was black. Uh oh… Is it the VIC?</p>
<p>A C64 Dead Test cartridge quickly gave a hint. It flashed the screen four times, saying that the U23 DRAM chip was broken. Fortunately these are 4164 type 64Kx1 DRAM chips, like they are also used for repairing ZX Spectrums. I have a few of them in stock, so I could just replace it.</p>
<p><span class="ci-image"><a href="/cilla/page/474/ram.jpg" data-fancybox="ipg-abdeae8c" data-caption="One RAM is replaced. It's the same type that is used for ZX Spectrum repairs."><img src="/cilla/page/474/thumb/ram.jpg" srcset="/cilla/page/474/thumb-2x/ram.jpg 2x,/cilla/page/474/thumb-3x/ram.jpg 3x,/cilla/page/474/thumb-4x/ram.jpg 4x" class="rounded img-fluid" alt="One RAM is replaced. It's the same type that is used for ZX Spectrum repairs." /></a></span></p>
<p>Next test, and this time I finally got the famous blue <code class="c64">READY</code> prompt. A full diagnostics run confirmed that the missing PLA and one DRAM chip was all that was broken.</p>
<p><span class="ci-image"><a href="/cilla/page/474/diagnostics.jpg" data-fancybox="ipg-abdeae8c" data-caption="Everything is fine now! 😀"><img src="/cilla/page/474/thumb/diagnostics.jpg" srcset="/cilla/page/474/thumb-2x/diagnostics.jpg 2x,/cilla/page/474/thumb-3x/diagnostics.jpg 3x,/cilla/page/474/thumb-4x/diagnostics.jpg 4x" class="rounded img-fluid" alt="Everything is fine now! 😀" /></a></span></p>
<p>The board is now working again, and ready to be futureproofed. First I replaced the electrolytic capacitors. For C13, I used a bipolar capacitor, which (in my opinion) gave an audible enhancement to the SID audio quality. The old 78xx voltage regulators were replaced by Traco Power DC/DC converters that won't need heatsinks. What got heatsinks instead were the CPU, SID, and VIC. The PLA should get a heatsink as well, but the PLAnkton replacement only consumes a fraction of the original PLA power and stays cold.</p>
<p>I also found four MOS-77xx chips on the board. These are standard 74LS chips, but they are notorious for their high failure rate. I preemptively replaced them with their standard counterparts. The mainboard should now be fine for the next twenty years.</p>
<p><span class="ci-image"><a href="/cilla/page/474/refurbished.jpg" data-fancybox="ipg-abdeae8c" data-caption="The refurbished board, with PLAnkton, heat sinks, new caps, and DC/DC converters."><img src="/cilla/page/474/thumb/refurbished.jpg" srcset="/cilla/page/474/thumb-2x/refurbished.jpg 2x,/cilla/page/474/thumb-3x/refurbished.jpg 3x,/cilla/page/474/thumb-4x/refurbished.jpg 4x" class="rounded img-fluid" alt="The refurbished board, with PLAnkton, heat sinks, new caps, and DC/DC converters." /></a></span></p>
<p>The keyboard was in a very clean state, but anyway I decided to disassemble and wash it. I pulled off all keycaps and cleaned them in an ultrasonic bath. I also removed the back PCB, and cleaned the plungers and contacts with a bit of IPA. After that, I reassembled the keyboard. For the space key, I put a bit of silicone grease on the lever mechanics, which gave a much more quiet and satisfying sound when the space key is pressed.</p>
<p><span class="ci-image"><a href="/cilla/page/474/keyboard1.jpg" data-fancybox="ipg-abdeae8c" data-caption="Keycaps put back to their place after washing."><img src="/cilla/page/474/thumb/keyboard1.jpg" srcset="/cilla/page/474/thumb-2x/keyboard1.jpg 2x,/cilla/page/474/thumb-3x/keyboard1.jpg 3x,/cilla/page/474/thumb-4x/keyboard1.jpg 4x" class="rounded img-fluid" alt="Keycaps put back to their place after washing." /></a></span>
<span class="ci-image"><a href="/cilla/page/474/keyboard2.jpg" data-fancybox="ipg-abdeae8c" data-caption="The cleaned keyboard."><img src="/cilla/page/474/thumb/keyboard2.jpg" srcset="/cilla/page/474/thumb-2x/keyboard2.jpg 2x,/cilla/page/474/thumb-3x/keyboard2.jpg 3x,/cilla/page/474/thumb-4x/keyboard2.jpg 4x" class="rounded img-fluid" alt="The cleaned keyboard." /></a></span></p>
<p>The previous owner added two extra buttons to the right side of the case. One button is a reset button, a standard modification on a C64. The other one was connected to the "bus available" pin of the expansion port. It essentially freezes the system as long as the button is kept depressed. I have no use for a freeze button, so I decided to put the reset button back, but leave the freeze button out.</p>
<p>I connected the reset button to C34 instead of the expansion port. When pressed, it will retrigger the reset monoflop by discharging the capacitor. This way the button is debounced, and the reset signal is kept for an appropriate minimal time. (C34 applies to 250425 boards only, for other versions see their schematics! Also make sure you're not accidentally shorting one of the decoupling capacitors.) I used Dupont connectors to make the reset button detachable from the mainboard, in case I want to remove the top shell again.</p>
<p><span class="ci-image"><a href="/cilla/page/474/reset2.jpg" data-fancybox="ipg-abdeae8c" data-caption="The reset button can stay, but got a Dupont connector so the upper shell of the case can easily be removed."><img src="/cilla/page/474/thumb/reset2.jpg" srcset="/cilla/page/474/thumb-2x/reset2.jpg 2x,/cilla/page/474/thumb-3x/reset2.jpg 3x,/cilla/page/474/thumb-4x/reset2.jpg 4x" class="rounded img-fluid" alt="The reset button can stay, but got a Dupont connector so the upper shell of the case can easily be removed." /></a></span>
<span class="ci-image"><a href="/cilla/page/474/reset1.jpg" data-fancybox="ipg-abdeae8c" data-caption="The reset button is connected to C34."><img src="/cilla/page/474/thumb/reset1.jpg" srcset="/cilla/page/474/thumb-2x/reset1.jpg 2x,/cilla/page/474/thumb-3x/reset1.jpg 3x,/cilla/page/474/thumb-4x/reset1.jpg 4x" class="rounded img-fluid" alt="The reset button is connected to C34." /></a></span></p>
<p>To close the hole of the former freeze button, I was quite lucky that the case was painted in RAL 3020 "traffic red". I found that I have filament in the same color, and 3D-printed a small plug that was then hot-glued to the case. The hole is still visible, but it looks acceptable now.</p>
<p><span class="ci-image"><a href="/cilla/page/474/holes1.jpg" data-fancybox="ipg-abdeae8c" data-caption="The holes made for the reset and the freeze button. I don't need the latter one anymore."><img src="/cilla/page/474/thumb/holes1.jpg" srcset="/cilla/page/474/thumb-2x/holes1.jpg 2x,/cilla/page/474/thumb-3x/holes1.jpg 3x,/cilla/page/474/thumb-4x/holes1.jpg 4x" class="rounded img-fluid" alt="The holes made for the reset and the freeze button. I don't need the latter one anymore." /></a></span>
<span class="ci-image"><a href="/cilla/page/474/holes2.jpg" data-fancybox="ipg-abdeae8c" data-caption="The reset button is back in its place. The freeze button hole is now closed with a 3D printed plug."><img src="/cilla/page/474/thumb/holes2.jpg" srcset="/cilla/page/474/thumb-2x/holes2.jpg 2x,/cilla/page/474/thumb-3x/holes2.jpg 3x,/cilla/page/474/thumb-4x/holes2.jpg 4x" class="rounded img-fluid" alt="The reset button is back in its place. The freeze button hole is now closed with a 3D printed plug." /></a></span></p>
<p>And that's it! I finally have my own, red C64!</p>
<p><span class="ci-image"><a href="/cilla/page/474/0default.jpg" data-fancybox="ipg-abdeae8c" data-caption="Welcome, my shiny new Red C64! 😍"><img src="/cilla/page/474/thumb/0default.jpg" srcset="/cilla/page/474/thumb-2x/0default.jpg 2x,/cilla/page/474/thumb-3x/0default.jpg 3x,/cilla/page/474/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="Welcome, my shiny new Red C64! 😍" /></a></span></p>2022-06-16T15:41:02ZZX Spectrum "Portugal"
https://shred.zone/cilla/page/471/zx-spectrum-portugal.html
<p>And yet another <em>Speccy</em> that I could buy for a good price. The seller said it was "untested", but I allege that he knew very well it was broken. It's fine for me as I mainly buy those things for the repair fun. 😁</p>
<p>The computer was in a sad condition when I got it. What's remarkable is that the machine was "assembled in Portugal". It's the first time I see this, and to be honest, it was one of the reasons why I wanted to have it. According to the very few information I found on the internet, those machines were intended for the Portugese and South American market, but some of them also made it to the UK and other European countries.</p>
<p>The faceplate was heavily bent, and a connector of the keyboard membrane was broken off. It seems that the previous owner tried to replace the membrane, but wasn't able to remove the faceplate.</p>
<p><span class="ci-image"><a href="/cilla/page/471/0default.jpg" data-fancybox="ipg-c420e11c" data-caption="The new Speccy is in a poor condition."><img src="/cilla/page/471/thumb/0default.jpg" srcset="/cilla/page/471/thumb-2x/0default.jpg 2x,/cilla/page/471/thumb-3x/0default.jpg 3x,/cilla/page/471/thumb-4x/0default.jpg 4x" class="rounded img-fluid" alt="The new Speccy is in a poor condition." /></a></span> <span class="ci-image"><a href="/cilla/page/471/untested.jpg" data-fancybox="ipg-c420e11c" data-caption="One of the membrane connectors was broken off and missing."><img src="/cilla/page/471/thumb/untested.jpg" srcset="/cilla/page/471/thumb-2x/untested.jpg 2x,/cilla/page/471/thumb-3x/untested.jpg 3x,/cilla/page/471/thumb-4x/untested.jpg 4x" class="rounded img-fluid" alt="One of the membrane connectors was broken off and missing." /></a></span> <span class="ci-image"><a href="/cilla/page/471/portugal.jpg" data-fancybox="ipg-c420e11c" data-caption=" It was assembled in Portugal."><img src="/cilla/page/471/thumb/portugal.jpg" srcset="/cilla/page/471/thumb-2x/portugal.jpg 2x,/cilla/page/471/thumb-3x/portugal.jpg 3x,/cilla/page/471/thumb-4x/portugal.jpg 4x" class="rounded img-fluid" alt=" It was assembled in Portugal." /></a></span></p>
<p>That's the first hint that the machine wasn't "untested", but underwent a botched repair attempt.</p>
<p>I got the second hint when I tried to power up the machine, but found that it was completely dead, with all the voltages missing. The 5V is generated by an 7805 voltage regulator. It could just have died of old age. But considering the other hint, I rather guess that the previous owner has tried to power this machine with a standard 9V power supply. It has a reversed polarity, which kills the 7805 instantly, and usually damages the lower RAM chips and other components.</p>
<p>Let's have a look inside. There's an Issue 6A board inside, which is the final revision of the board. But besides that, there were no surprises. Anyway it's the first Issue 6A board I own, so I'm happy to have it.</p>
<p><span class="ci-image"><a href="/cilla/page/471/issue6a.jpg" data-fancybox="ipg-c420e11c" data-caption="An Issue 6A board, probably built around end of 1984."><img src="/cilla/page/471/thumb/issue6a.jpg" srcset="/cilla/page/471/thumb-2x/issue6a.jpg 2x,/cilla/page/471/thumb-3x/issue6a.jpg 3x,/cilla/page/471/thumb-4x/issue6a.jpg 4x" class="rounded img-fluid" alt="An Issue 6A board, probably built around end of 1984." /></a></span></p>
<p>The 7805 regulator is definitely broken, but I would have replaced it with a Traco Power DC/DC converter anyway. After I replaced it, the 5V line was back. To my surprise, the 12V and -5V lines were also back, so at least there was no further damage to the power supply.</p>
<p>I did my usual <a href="/cilla/page/459/zx-spectrum-chrome.html#composite-mod">composite mod</a>. Then I connected the computer to my monitor and powered it up to find out what else is broken. To my surprise the start screen appeared, and the Diag ROM also found that all RAM chips are working.</p>
<p><span class="ci-image"><a href="/cilla/page/471/boot.jpg" data-fancybox="ipg-c420e11c" data-caption="The Speccy just booted up."><img src="/cilla/page/471/thumb/boot.jpg" srcset="/cilla/page/471/thumb-2x/boot.jpg 2x,/cilla/page/471/thumb-3x/boot.jpg 3x,/cilla/page/471/thumb-4x/boot.jpg 4x" class="rounded img-fluid" alt="The Speccy just booted up." /></a></span> <span class="ci-image"><a href="/cilla/page/471/diag.jpg" data-fancybox="ipg-c420e11c" data-caption="The Diag ROM found no further defects."><img src="/cilla/page/471/thumb/diag.jpg" srcset="/cilla/page/471/thumb-2x/diag.jpg 2x,/cilla/page/471/thumb-3x/diag.jpg 3x,/cilla/page/471/thumb-4x/diag.jpg 4x" class="rounded img-fluid" alt="The Diag ROM found no further defects." /></a></span></p>
<p>Okay, so much for the "repair fun" I was hoping to get. On the other hand, this board has a second custom chip, the ZX8401, also known as <em>ZXMUX</em> chip. If it would have been damaged, repair would have been a lot more difficult. Not impossible though, since the ZXMUX can be <a href="https://8bit.yarek.pl/upgrade/zx.zxmux/index.html" class="exts">simulated by a few standard SMD chips</a>.</p>
<p>Now that the Speccy was repaired, I continued with replacing the electrolytic capacitors. I also found and fixed a lot of cold joints at the lower RAM chips. The refurbishment of the board was completed after that.</p>
<p><span class="ci-image"><a href="/cilla/page/471/recap.jpg" data-fancybox="ipg-c420e11c" data-caption="The board after repairing and recapping."><img src="/cilla/page/471/thumb/recap.jpg" srcset="/cilla/page/471/thumb-2x/recap.jpg 2x,/cilla/page/471/thumb-3x/recap.jpg 3x,/cilla/page/471/thumb-4x/recap.jpg 4x" class="rounded img-fluid" alt="The board after repairing and recapping." /></a></span> <span class="ci-image"><a href="/cilla/page/471/coldjoints.jpg" data-fancybox="ipg-c420e11c" data-caption="A lot of cold solder joints."><img src="/cilla/page/471/thumb/coldjoints.jpg" srcset="/cilla/page/471/thumb-2x/coldjoints.jpg 2x,/cilla/page/471/thumb-3x/coldjoints.jpg 3x,/cilla/page/471/thumb-4x/coldjoints.jpg 4x" class="rounded img-fluid" alt="A lot of cold solder joints." /></a></span></p>
<p>Let's have a look at the case. The membrane connector was broken, but luckily there are new membranes available at retro shops. The previous owner tried to remove the faceplate, which is most often glued to the case. Most often, but not here. On this computer, the faceplate was just held in place by four brackets. All that would have needed to be done was to open these brackets and then easily pull of the faceplate.</p>
<p><span class="ci-image"><a href="/cilla/page/471/bracket1.jpg" data-fancybox="ipg-c420e11c" data-caption="The faceplate is held by four brackets that can be easily seen on the inside."><img src="/cilla/page/471/thumb/bracket1.jpg" srcset="/cilla/page/471/thumb-2x/bracket1.jpg 2x,/cilla/page/471/thumb-3x/bracket1.jpg 3x,/cilla/page/471/thumb-4x/bracket1.jpg 4x" class="rounded img-fluid" alt="The faceplate is held by four brackets that can be easily seen on the inside." /></a></span>
<span class="ci-image"><a href="/cilla/page/471/bracket2.jpg" data-fancybox="ipg-c420e11c" data-caption="All that needs to be done is to open them. The faceplate itself is not glued to the case."><img src="/cilla/page/471/thumb/bracket2.jpg" srcset="/cilla/page/471/thumb-2x/bracket2.jpg 2x,/cilla/page/471/thumb-3x/bracket2.jpg 3x,/cilla/page/471/thumb-4x/bracket2.jpg 4x" class="rounded img-fluid" alt="All that needs to be done is to open them. The faceplate itself is not glued to the case." /></a></span></p>
<p>Sadly, thanks to the botched repair attempt, the original faceplate was bent too much to be recoverable. It also had some visible scratches. I wished I could have salvaged it, but I decided to replace it with a new one instead. This time I took a metallic red faceplate, which looks as hot as a sunset in Portugal. 😉</p>
<p><span class="ci-image"><a href="/cilla/page/471/complete.jpg" data-fancybox="ipg-c420e11c" data-caption="My new ZX Spectrum &quot;Assembled in Portugal&quot;."><img src="/cilla/page/471/maxi/complete.jpg" srcset="/cilla/page/471/maxi-2x/complete.jpg 2x,/cilla/page/471/maxi-3x/complete.jpg 3x,/cilla/page/471/maxi-4x/complete.jpg 4x" class="rounded img-fluid" alt="My new ZX Spectrum "Assembled in Portugal"." /></a></span></p>
<p>And there it is, another ZX Spectrum for my collection.</p>2022-04-01T05:18:16ZA new Harlequin
https://shred.zone/cilla/page/470/a-new-harlequin.html
<p>The <a href="https://trastero.speccy.org/cosas/JL/Superfo-Harlequin-128K/128K-i.html" class="exts">Superfo Harlequin</a> is a ZX Spectrum 128K clone. It is special because even though it's a 128K Spectrum, it still fits into an 48K Spectrum case. It's also special because the ULA custom chip is replicated by discrete 74HC-type standard chips that can be replaced easily if one of them should get broken. It's just a small advantage though, because the RAM chips, sound chip, and Z80 CPU are rare by now.</p>
<p>I have ordered the <a href="https://www.bytedelight.com/?product=harlequin-128k-rev-2d-black-large-diy-kit" class="exts">Harlequin 128K Black Large DIY Kit</a> at ByteDelight. It comes with all components that are required to build the main board, even those that are difficult to find elsewhere. There is also a Flash ROM chip enclosed in the kit, but it does not contain a Sinclair ROM image for license reasons. What's still required to build a complete Speccy is a ZX Spectrum case with keyboard, and a Flash ROM programmer for the Sinclair ROM.</p>
<h2 id="assembling">Assembling</h2>
<p>The Harlequin has only a single SMD component, and that one was even presoldered. All the other components are through-hole, so this DIY kit is even suitable for soldering novices.</p>
<p><span class="ci-image"><a href="/cilla/page/470/kit.jpg" data-fancybox="ipg-bb9cdfe4" data-caption="The ByteDelight Harlequin kit. Also on the photo: The Diag Cart kit, en heerlijke Stroopwafels. 😋"><img src="/cilla/page/470/thumb/kit.jpg" srcset="/cilla/page/470/thumb-2x/kit.jpg 2x,/cilla/page/470/thumb-3x/kit.jpg 3x,/cilla/page/470/thumb-4x/kit.jpg 4x" class="rounded img-fluid" alt="The ByteDelight Harlequin kit. Also on the photo: The Diag Cart kit, en heerlijke Stroopwafels. 😋" /></a></span> <span class="ci-image"><a href="/cilla/page/470/board-start.jpg" data-fancybox="ipg-bb9cdfe4" data-caption="How it started. The board, with the only SMD part already presoldered."><img src="/cilla/page/470/thumb/board-start.jpg" srcset="/cilla/page/470/thumb-2x/board-start.jpg 2x,/cilla/page/470/thumb-3x/board-start.jpg 3x,/cilla/page/470/thumb-4x/board-start.jpg 4x" class="rounded img-fluid" alt="How it started. The board, with the only SMD part already presoldered." /></a></span></p>
<p>I spent the rest of the day with getting the components out of their bags, locating their correct location and then soldering them in. The ByteDelight kit was carefully assembled. Every component comes in separate bags per value, and are enumerated in their optimal order for assembling. It's literally just <em>soldering by numbers</em>. 😄</p>
<p>The most boring part was to solder in all the 51 sockets. The DIY kit came with standard sockets, but I generally prefer turned pin sockets, so I used that ones instead.</p>
<p><span class="ci-image"><a href="/cilla/page/470/board-completed.jpg" data-fancybox="ipg-bb9cdfe4" data-caption="Completely assembled."><img src="/cilla/page/470/thumb/board-completed.jpg" srcset="/cilla/page/470/thumb-2x/board-completed.jpg 2x,/cilla/page/470/thumb-3x/board-completed.jpg 3x,/cilla/page/470/thumb-4x/board-completed.jpg 4x" class="rounded img-fluid" alt="Completely assembled." /></a></span></p>
<p>The kit also contains the crystal that is needed for an NTSC setup, so you can choose between a PAL and NTSC machine. The board itself is pre-configured for PAL though. For an NTSC machine, a few traces at the bottom side of the PCB need to be cut.</p>
<h2 id="flashing-the-rom">Flashing the ROM</h2>
<p>The DIY kit comes with an AMD AM29F040B Flash ROM. It is large enough to contain up to 8 ROM images. A DIP switch selects the image to be used. The pre-flashed image contains a Diag ROM, some other software, but no ZX Spectrum ROM for license reasons. The board itself also supports original Spectrum 48K and 128K ROMs, as well as 27C256 and 27C512 EPROMs.</p>
<p>ROM files can be found <a href="https://mdfs.net/Software/Spectrum/ROMImages/" class="exts">on the internet</a>. I decided to keep the first six Flash ROM banks, and use bank 7 for a Spectrum 48K ROM, and bank 8 for a Spectrum 128K+2 ROM.</p>
<p>For flashing, I use the XGecu TL866II+ programmer and the <a href="https://gitlab.com/DavidGriffith/minipro" class="exts">minipro</a> open source software. First I read the original content of the Flash ROM:</p>
<pre class="prettyprint"><code class="language-sh">minipro --device 'am29f040b@DIP32' --read harlequin.bin
</code></pre>
<p>Then I made a copy of the first six banks. It's easy with the <code>dd</code> command. With a block size of 65536 bytes, the banks can be selected with the <code>skip</code> and <code>count</code> options. To keep the first six banks:</p>
<pre class="prettyprint"><code class="language-sh">dd if=harlequin.bin of=harlequin-6banks.bin bs=65536 count=6
</code></pre>
<p>After that, I use <code>cat</code> to compile a new binary. Note that each bank must be 65536 bytes large, so if a ROM image is smaller, it must be duplicated (or quadruplicated):</p>
<pre class="prettyprint"><code class="language-sh">cat harlequin-6banks.bin \
48k.rom 48k.rom 48k.rom 48k.rom \
128k+2.rom 128k+2.rom \
> harlequin-new.bin
</code></pre>
<p>The new image can then be burned to the Flash ROM:</p>
<pre class="prettyprint"><code class="language-sh">minipro --device 'am29f040b@DIP32' --write harlequin-new.bin
</code></pre>
<p>With the Flash ROM inserted into the Harlequin board, it was finally completed and ready for a first start. Unfortunately the maker of the Harlequin board saved a rectifier bridge, so it's still important to take care for the correct polarity of the power plug. Like the ZX Spectrum, the Harlequin needs a power supply with a 5.5/2.1 mm barrel plug with center <em>negative</em>. Most power supplys on the market are center positive.</p>
<p><span class="ci-image"><a href="/cilla/page/470/startscreen.jpg" data-fancybox="ipg-bb9cdfe4" data-caption="The Harlequin is alive!"><img src="/cilla/page/470/thumb/startscreen.jpg" srcset="/cilla/page/470/thumb-2x/startscreen.jpg 2x,/cilla/page/470/thumb-3x/startscreen.jpg 3x,/cilla/page/470/thumb-4x/startscreen.jpg 4x" class="rounded img-fluid" alt="The Harlequin is alive!" /></a></span></p>
<p>Even though the Harlequin has a lot more chips than an original ZX Spectrum, it is very frugal. It only consumes 1.7W at 9V, while the original Speccy consumes 4.8W. On the other hand, the Harlequin does not need 12V and -5V to run, so these voltages are not generated. This might be a problem for a few very exotic expansions.</p>
<h2 id="the-case">The Case</h2>
<p>The DIY kit only comprises everything that is needed to assemble the main board. What's missing is a case with keyboard, and a power supply. The board has the same dimension as an original ZX Spectrum 48K board, so you can use original cases (e.g. the standard "rubber key" case or the ZX Spectrum Plus case), or buy a new replica case with new membranes, keymat and faceplate. The latter case is more expensive, but you get a brand new case in return, and you can pick from a large variety of colors.</p>
<p>I decided for a white keyboard, and a transparent case so one can still admire the beautiful Harlequin board even inside a closed case.</p>
<p><span class="ci-image"><a href="/cilla/page/470/0default.jpg" data-fancybox="ipg-bb9cdfe4" data-caption="A brand new ZX Spectrum 128K &quot;Harlequin&quot;!"><img src="/cilla/page/470/maxi/0default.jpg" srcset="/cilla/page/470/maxi-2x/0default.jpg 2x,/cilla/page/470/maxi-3x/0default.jpg 3x,/cilla/page/470/maxi-4x/0default.jpg 4x" class="rounded img-fluid" alt="A brand new ZX Spectrum 128K "Harlequin"!" /></a></span></p>
<p>The Harlequin has a separate RGB mini DIN connector. It is made in a manner so it won't interfere with a classic case. However you might want to use the RGB connector as it offers a much better image quality. Shops like <a href="https://zxrenew.co.uk/ZX-Spectrum-Replacement-Cases-only-c22752627" class="exts">ZX Renew</a> offer special Harlequin cases with a cutout for the RGB connector. If you want to use a classic case, you might need to cut out a bit of the beautiful old case to access the connector.</p>
<p><span class="ci-image"><a href="/cilla/page/470/connectors.jpg" data-fancybox="ipg-bb9cdfe4" data-caption="From left to right: stereo audio, tape (mic/ear), RGB, composite"><img src="/cilla/page/470/thumb/connectors.jpg" srcset="/cilla/page/470/thumb-2x/connectors.jpg 2x,/cilla/page/470/thumb-3x/connectors.jpg 3x,/cilla/page/470/thumb-4x/connectors.jpg 4x" class="rounded img-fluid" alt="From left to right: stereo audio, tape (mic/ear), RGB, composite" /></a></span></p>
<p>Since we are talking about making holes into old cases: The Harlequin has a built-in joystick interface. If you want to, you can cut out a space for a 9 pin Sub-D male connector, and wire it to the board. I refrained from making a cut into my beautiful Harlequin case, and use a classic Kempston joystick interface instead.</p>
<h2 id="lets-play">Let's Play</h2>
<p>The simplest way to load software into the Harlequin is by the Mic/Ear port. There are smartphone apps and also a lot of tools that can generate the sounds to load TAP or TZX files, so there is no need to dig out the old tape recorder and audio cassettes.</p>
<p>I am using my <a href="https://github.com/shred/tzxtools" class="exts">tzxtools</a>. The <code>tzxplay</code> command plays back TZX and TAP files to the standard audio output. I connect the sound card output to the mic/ear connector using a classic phone jack cable.</p>
<p>Since the Harlequin is a full-featured 128K clone, it also comes with an AY-3-8912 sound chip and even a stereo output. So the first thing I did was loading a game that makes use of that soundchip for in-game music.</p>
<p><span class="ci-image"><a href="/cilla/page/470/loading.jpg" data-fancybox="ipg-bb9cdfe4" data-caption="The 128K version of Cybernoid uses the AY-3-8912 sound chip."><img src="/cilla/page/470/thumb/loading.jpg" srcset="/cilla/page/470/thumb-2x/loading.jpg 2x,/cilla/page/470/thumb-3x/loading.jpg 3x,/cilla/page/470/thumb-4x/loading.jpg 4x" class="rounded img-fluid" alt="The 128K version of Cybernoid uses the AY-3-8912 sound chip." /></a></span></p>2022-03-24T18:32:07Z