tag:blogger.com,1999:blog-66057556009544894052024-03-17T12:55:41.228+00:00Tynemouth SoftwareTynemouth Software - Making new things for old computers - <a href="https://www.sellmyretro.com/store/tynemouth-software">sellmyretro.com/store/tynemouth-software</a>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comBlogger481125tag:blogger.com,1999:blog-6605755600954489405.post-55374780770458082292024-03-17T10:58:00.004+00:002024-03-17T10:58:33.622+00:00Mini PET Kit Build Troubleshooting<p>Hopefully, when you build your Minstrel or Mini PET kit, it will work first time. Most of them do based on the feedback I get.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEinFXuMbWIv03vaTUBRsA0t6NKB3hEu7DUr0JIz211xxX4h7UD52zHuTrIZASWHUgiZ1Sn5B063_IXvA9RdJ7kaoYPcidtUKJzXmrGeNwCOKqDsK4Z27XnZSR_zE6PKlUtK0PT0MjXxllQQDOuaeV7MqZXMW-MaFLe_oFHs5iiAf8T-gN6yzg8cxlyiO1z7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3375" data-original-width="4500" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEinFXuMbWIv03vaTUBRsA0t6NKB3hEu7DUr0JIz211xxX4h7UD52zHuTrIZASWHUgiZ1Sn5B063_IXvA9RdJ7kaoYPcidtUKJzXmrGeNwCOKqDsK4Z27XnZSR_zE6PKlUtK0PT0MjXxllQQDOuaeV7MqZXMW-MaFLe_oFHs5iiAf8T-gN6yzg8cxlyiO1z7=w600-h450" width="600" />
</a>
</div>
<p>Occasionally, there can be problems, so I present a bit of a guide to the process of troubleshooting if it doesn't work first time. </p><p>This can also serve as a guide to follow before you power on for the first time, if you want to take things slowly and carefully.</p><h2 style="text-align: left;">Test Procedure</h2>
<p>First thing to do before putting any of the ICs in is to give the board a thorough visual inspection.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjhk3xGyHgLR9dvBIJWnYD1x2WhopfBsv748oO6RRbW02MV8EOcCWf6R3bl4XhrmZF1QaYQJIoWWLIICqDkx9F-B9bjTFFWuJDYYLUaGHa3vmnlRn_b8hANSIgx6EMufr1BgMYCUoVmVBrfI3OwE5i01Kj7v4RHoVbnvZXgYVayi4NBDQSwUyUrpTUTxC2n" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjhk3xGyHgLR9dvBIJWnYD1x2WhopfBsv748oO6RRbW02MV8EOcCWf6R3bl4XhrmZF1QaYQJIoWWLIICqDkx9F-B9bjTFFWuJDYYLUaGHa3vmnlRn_b8hANSIgx6EMufr1BgMYCUoVmVBrfI3OwE5i01Kj7v4RHoVbnvZXgYVayi4NBDQSwUyUrpTUTxC2n=w600-h450" width="600" />
</a>
</div>
<p>You are looking for missed solder joints, there are over 800 pads on a Mini PET, so it's easily done. You are looking for components that are missing or in the wrong place, solder bridges, any loose bits of solder or any scratches or other damage to the PCB.</p>
<p>Once you are happy, it is time to double check the polarity jumpers and plug in the power. </p>
<p>The LED will not light at this stage, so don't worry about that.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjleb_aTwRBZ1pMqxIZjubmsuR0PpOioCTXF_GuNlMXUTTjGTY2h-ION6rUCD32VYCbGQ-l7EpUgZI-xQaipqdU9wMZGfMdSOdPdXTqGXs2zyb3pFTBdwQyRgnRES5hDnwN8G7o1N66GU0TGrnp2n5HjxrAqJJw9cxDVxLPlL6bUeenGiBBcDnQFJzU1Rpf" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1680" height="285" src="https://blogger.googleusercontent.com/img/a/AVvXsEjleb_aTwRBZ1pMqxIZjubmsuR0PpOioCTXF_GuNlMXUTTjGTY2h-ION6rUCD32VYCbGQ-l7EpUgZI-xQaipqdU9wMZGfMdSOdPdXTqGXs2zyb3pFTBdwQyRgnRES5hDnwN8G7o1N66GU0TGrnp2n5HjxrAqJJw9cxDVxLPlL6bUeenGiBBcDnQFJzU1Rpf=w600-h285" width="600" />
</a>
</div>
<p>I have indicated all the places you should be able to measure 5V. I normally check on the top left 74LS07. There should be 5V between pin 7 (black) and pin 14 (red). You can check a few of the other places if you like, but that chip is the furthest away, so if it is OK, it should all be OK.</p>
<p>The same procedure can be followed on any of the other kits. Most of the ROM, RAM and logic chips have 0V and 5V on those opposite corners (apart for the 74LS93 on the Minstrel 2 for some reason). However, the 40 pin IO chips and microcontrollers are anyone's guess, check the included schematics..</p>
<p>If you don't see 5V, check around the power input (you did fit the jumpers? and you did set them correctly for your power supply? and you did plug it in to the wall? and you did switch it on). Look for 9V on the left most pin on the 7805.</p>
<p>If you have 5V, you can turn off and start to fit some chips. </p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEglTYIc-qFs50ri2E96lhWtbifBe8W3UQn9S27-Px1d0Ph8pHUM8AEkJYUlm86pFGPrHviYz6nD2xY4kVSoqUpvQvyYdGXOTwwjD-8O9sfYY3zEoCi2hA0C0N-NFqNd-cYEzxSG2VzoNMtdT5K-FmfR8XwFYfpVSrIdDDHSq58sSRlEZwO90t9BFgTCuW3O" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1680" height="285" src="https://blogger.googleusercontent.com/img/a/AVvXsEglTYIc-qFs50ri2E96lhWtbifBe8W3UQn9S27-Px1d0Ph8pHUM8AEkJYUlm86pFGPrHviYz6nD2xY4kVSoqUpvQvyYdGXOTwwjD-8O9sfYY3zEoCi2hA0C0N-NFqNd-cYEzxSG2VzoNMtdT5K-FmfR8XwFYfpVSrIdDDHSq58sSRlEZwO90t9BFgTCuW3O=w600-h285" width="600" />
</a>
</div>
<p>With the CRTC microcontroller and the four logic chips next to it, you should get a video display. Set the DIP switches appropriately for your display. </p>
<p>The Ready LED should light a few seconds after powering on.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgFVdU8xVCYUrzXaVmTbbSd1hEe9SIXyGz6m_GobwQAbTk5R7MqrBP9OuIzoyjlcuQ5WGFwF7pnW_Nodxnh296oRk-NKO_hewKsB8iuIejxHLb58vante1ew56uwtFTat03rx_ONCPhAf4hH0lfLsfNYA1-KYBsnTRFVsKvSdTLVGt6q2S2PERZR9s9hnza" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgFVdU8xVCYUrzXaVmTbbSd1hEe9SIXyGz6m_GobwQAbTk5R7MqrBP9OuIzoyjlcuQ5WGFwF7pnW_Nodxnh296oRk-NKO_hewKsB8iuIejxHLb58vante1ew56uwtFTat03rx_ONCPhAf4hH0lfLsfNYA1-KYBsnTRFVsKvSdTLVGt6q2S2PERZR9s9hnza=w600-h450" width="600" />
</a>
</div>
<p>At this stage, it should have video sync, but just a blank screen (note the important difference between no video output and a black screen with sync).</p>
<p style="text-align: center;"><i>(do you really need me to take a picture of a black screen? OK, like this <span style="color: black;">■</span> but larger)</i></p>
<p>If you install the character ROM and the video RAM you should see random characters.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg9PlGQMmZtRutE4iO9Q6CEFz1_8JKde-d_uouf1tC-05hIuj-FYYXoA5k8-IDpp91MZBjQVHHgZrxhb9IXZxOL8YjheQiD5hEz4xIDSvth3KSJDUAjrV8Pl1cQAeOX-cAXDy45sKyJwyg1iVQ04fZY4oge9AW2gCjzBWQO0nKlaGA6Nw2r7_uA1AcRemLu" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1680" height="285" src="https://blogger.googleusercontent.com/img/a/AVvXsEg9PlGQMmZtRutE4iO9Q6CEFz1_8JKde-d_uouf1tC-05hIuj-FYYXoA5k8-IDpp91MZBjQVHHgZrxhb9IXZxOL8YjheQiD5hEz4xIDSvth3KSJDUAjrV8Pl1cQAeOX-cAXDy45sKyJwyg1iVQ04fZY4oge9AW2gCjzBWQO0nKlaGA6Nw2r7_uA1AcRemLu=w600-h285" width="600" />
</a>
</div>
<p>That is the same thing you will see on a real PET just before the display appears. This is the contents of the uninitialised static RAM.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjBv_tAiBZhPWAlEn60qx2HX1Ju0a-S351pm2ntx4lpRt7hgNVIV5p8tM4XaVc9IqMh4PZZrwWmVVc-0inbRYjVbr-rS347ANyRiecac7E-fGYTsT7RoSxtPfm51hzKwli3D2KFtMkBrbfOczpVCt1QJUcdAiEz8TBzTGTafgkYIiry6Y1FRuOZP-1r4tRr" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjBv_tAiBZhPWAlEn60qx2HX1Ju0a-S351pm2ntx4lpRt7hgNVIV5p8tM4XaVc9IqMh4PZZrwWmVVc-0inbRYjVbr-rS347ANyRiecac7E-fGYTsT7RoSxtPfm51hzKwli3D2KFtMkBrbfOczpVCt1QJUcdAiEz8TBzTGTafgkYIiry6Y1FRuOZP-1r4tRr=w600-h450" width="600" />
</a>
</div>
<p>At this point you have a working display, showing the contents of the video RAM. Now we need something to write to the video RAM.</p>
<p>The minimal configuration to get some code running is as follows: the 6502 CPU, the ROM, reset buffer, read/write signal control and address decoding.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgQqrhNmEaxL_9jwDB8cHMvM5JiHY7ZGMqdtjBk_Ln3yPtQOjRcPvjuvU_Ac3Hgi5qAeHWKGoqOQdcn6xapRldd4wRZ3mWuWMjWMKh8DVRWnEuBrMTFPR3N5TtPEFg6BAj19jUtTZyOHtV3ppAWMOE1cACKoSB1C7MlPP0F8piGfsy5LV4Td3VHU0qL-Cjc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1680" height="285" src="https://blogger.googleusercontent.com/img/a/AVvXsEgQqrhNmEaxL_9jwDB8cHMvM5JiHY7ZGMqdtjBk_Ln3yPtQOjRcPvjuvU_Ac3Hgi5qAeHWKGoqOQdcn6xapRldd4wRZ3mWuWMjWMKh8DVRWnEuBrMTFPR3N5TtPEFg6BAj19jUtTZyOHtV3ppAWMOE1cACKoSB1C7MlPP0F8piGfsy5LV4Td3VHU0qL-Cjc=w600-h285" width="600" />
</a>
</div>
<p>Set DIP switches 1, 2 and 3 on to enable the PET Tester ROM.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi0uP6-eakT7lfOV4zFxOHMUi6denHUtjIb4tDkEkwkFS6V0LikpOZOQslo8Eix9_aA_gR9G1RV66XcfyyifSk_LTxwQBy99Ynm028_9UN2TvLSYsMge4frU729H10WxC936rMvmz01ymeBSwZbb2StDPRSMBS0dHlXF6hhLd_VyEfr2gL9-eFPAUc1naSa" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi0uP6-eakT7lfOV4zFxOHMUi6denHUtjIb4tDkEkwkFS6V0LikpOZOQslo8Eix9_aA_gR9G1RV66XcfyyifSk_LTxwQBy99Ynm028_9UN2TvLSYsMge4frU729H10WxC936rMvmz01ymeBSwZbb2StDPRSMBS0dHlXF6hhLd_VyEfr2gL9-eFPAUc1naSa=w600-h450" width="600" />
</a>
</div>
<p>It should cycle between a character set and a page of letters. There is no RAM, so it should all report "B" (for bad).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgemxSFzVqlf8k89eq5aUCLp6uzIrNGgbQSYgJeNYOKxhhHOC3fXlqVLli3drQMS1CPGs7xuSUmFphf0fFlsFcy-QjSzfiPbftgmI_ZMwsAp2tVjd2LCX6VqrfgHavnHr2PEaSQ3Uc3RoUYQWlcntRqkpDNfSncKQG3jxB1pRSop8T3nUJwI0p55LRCz8iw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgemxSFzVqlf8k89eq5aUCLp6uzIrNGgbQSYgJeNYOKxhhHOC3fXlqVLli3drQMS1CPGs7xuSUmFphf0fFlsFcy-QjSzfiPbftgmI_ZMwsAp2tVjd2LCX6VqrfgHavnHr2PEaSQ3Uc3RoUYQWlcntRqkpDNfSncKQG3jxB1pRSop8T3nUJwI0p55LRCz8iw=w600-h450" width="600" />
</a>
</div>
<p>Next, install the RAM, and you should now see a page of "G".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi52EkdzrVhFV8YuY4V5b3YJg7W9XkbXkoqsVPC5yPhxxHNSmZPGDj5V3tkJVOPiiPhMLlEMC6wJYfxyxMB3BVXq-hUZgRUXT0V8v-cmiAYH6sUz9Ec-Pk5a7MSrlpZRRSPc9ApBz_h5f7HKU5AABTbQdkITu4UdIMtVfdNv_w8o_Q2znpvwhB0KQNlmiWd" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1680" height="285" src="https://blogger.googleusercontent.com/img/a/AVvXsEi52EkdzrVhFV8YuY4V5b3YJg7W9XkbXkoqsVPC5yPhxxHNSmZPGDj5V3tkJVOPiiPhMLlEMC6wJYfxyxMB3BVXq-hUZgRUXT0V8v-cmiAYH6sUz9Ec-Pk5a7MSrlpZRRSPc9ApBz_h5f7HKU5AABTbQdkITu4UdIMtVfdNv_w8o_Q2znpvwhB0KQNlmiWd=w600-h285" width="600" />
</a>
</div>
<p>That's better, all good (well, at least the first 1000 bytes anyway)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgJvIeMZ-upFTDdw7-d045SvWQlSFzXcw9GySQ88COk_BB3WWu1c_XPLL59ufWOntU-emGSV7AdG-Nyi_G8eh0cCjIIwr_9FN4HMKkUdQu21_qQk4MVYR2R3b1agehnPDmOA7lx0PdfTPVD5rH82PZ5V7oAz-m8ib00Gnv-W7D0h44RFTowNOTue4xYqi1y" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgJvIeMZ-upFTDdw7-d045SvWQlSFzXcw9GySQ88COk_BB3WWu1c_XPLL59ufWOntU-emGSV7AdG-Nyi_G8eh0cCjIIwr_9FN4HMKkUdQu21_qQk4MVYR2R3b1agehnPDmOA7lx0PdfTPVD5rH82PZ5V7oAz-m8ib00Gnv-W7D0h44RFTowNOTue4xYqi1y=w600-h450" width="600" />
</a>
</div>
<p>In order to run BASIC, add the 6522 and the lower 6521 and the 74LS145. That should be everything to get the PET running and reading the keyboard. Set the ROM selection to 1, 2 and 3 off to boot to BASIC.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjqpEO-6bIs5Ip80dATelzJuXgn6u7m41tOLS0JtK4iqS-uzLGlLiQVs7bqANchd_CFM2L1xMeZtLcHJOHrM3QcBA6W4fUcTkwADMBM5DQZgc8eNVaY4_A1FhXgbWpCO5i8Pzb56UT1BoaIejVZvCe2ouoHYsMqJbh_nAvaiOzfgr_dxLwJSAWIiEq8S3UH" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1680" height="285" src="https://blogger.googleusercontent.com/img/a/AVvXsEjqpEO-6bIs5Ip80dATelzJuXgn6u7m41tOLS0JtK4iqS-uzLGlLiQVs7bqANchd_CFM2L1xMeZtLcHJOHrM3QcBA6W4fUcTkwADMBM5DQZgc8eNVaY4_A1FhXgbWpCO5i8Pzb56UT1BoaIejVZvCe2ouoHYsMqJbh_nAvaiOzfgr_dxLwJSAWIiEq8S3UH=w600-h285" width="600" />
</a>
</div>
<p>You can attach the keyboard and test things out. The datasette should be working, as should the sound and everything apart from the IEEE-488 port.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsoHD7-guo7fGJDERZ2xRgClWLKulKLEuT_mUpMSkKoE1Qbnlf_yJzxk0ur81oEmqaHjXd89hfaBVDdnK5O7AH_FEVCzts-77z0bAjIddzGd1Fli8QLKrCQfVoFdgisiiFf4mRyibRjYvShXX7fsESu7xf_GT3MCR4LHRWcA3UVvW7NOLj7e5xhQ_feD2M" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsoHD7-guo7fGJDERZ2xRgClWLKulKLEuT_mUpMSkKoE1Qbnlf_yJzxk0ur81oEmqaHjXd89hfaBVDdnK5O7AH_FEVCzts-77z0bAjIddzGd1Fli8QLKrCQfVoFdgisiiFf4mRyibRjYvShXX7fsESu7xf_GT3MCR4LHRWcA3UVvW7NOLj7e5xhQ_feD2M=w600-h450" width="600" />
</a>
</div>
<p>All being well, the final step is to install the remaining things that are only needed for the IEEE-488 port, and then you can plug in your SD2PET (you did order an SD2PET, didn't you?) and test that.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3xCeFrtSj7Fxt-p6qBi3pE81-7DJfwY-o9yCqERlr_fRk9OvqIYEam6q4QruUEMvKEYsvCDefMvj_5mvk5brKVuDvQKlbr90YmoRai-SuJEie9qeJmd8anfI0h_2soD7Vrf9hryrxTLlunCNuH_GZYVWw-LiXea5n8PhaS3iRQoSanfT0vGf3KikFJkJB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1680" height="285" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3xCeFrtSj7Fxt-p6qBi3pE81-7DJfwY-o9yCqERlr_fRk9OvqIYEam6q4QruUEMvKEYsvCDefMvj_5mvk5brKVuDvQKlbr90YmoRai-SuJEie9qeJmd8anfI0h_2soD7Vrf9hryrxTLlunCNuH_GZYVWw-LiXea5n8PhaS3iRQoSanfT0vGf3KikFJkJB=w600-h285" width="600" />
</a>
</div>
<h2 style="text-align: left;">What if it doesn't work?</h2><p>If any of these stages fail, you should be able to narrow it down to the bits added since the last stage. Check around the IC sockets and related components.</p>
<p>The standard process I follow in this sort of situation is to go through the following list, checking each in turn, looking for anything which isn't there, or where the signal is not right.</p>
<ul style="text-align: left;">
<li>Power</li>
<li>Clock</li>
<li>Reset</li>
<li>Data lines</li>
<li>Address lines</li>
<li>Chip enables</li>
<li>Read / Write</li>
<li>Interrupts</li>
</ul>
<p>In a circuit like this with CMOS logic, all the signals should be nice and sharp 0V or 5V, nothing in between.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhanCHGQB_E4a_h7617ecmzNoy0yF_tcZzbQUcS1Z4Of6r35q8TGsNsGCUiPK7RM0ypEuqh-pZY2R1kE3gii3RuM-58ep8g6y71EV1YuO3SO-WKE-HkU5-tBIk4ryvs2Ly9Oy5Wk3V4K_UQep2GkvVs5mzmru8-oGlR-1nijKLSN1NoNaoZgzrYWaml-iNi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="370" src="https://blogger.googleusercontent.com/img/a/AVvXsEhanCHGQB_E4a_h7617ecmzNoy0yF_tcZzbQUcS1Z4Of6r35q8TGsNsGCUiPK7RM0ypEuqh-pZY2R1kE3gii3RuM-58ep8g6y71EV1YuO3SO-WKE-HkU5-tBIk4ryvs2Ly9Oy5Wk3V4K_UQep2GkvVs5mzmru8-oGlR-1nijKLSN1NoNaoZgzrYWaml-iNi=w600-h370" width="600" />
</a>
</div>
<p>The power has already been checked, so first on the list is the clock.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhdlaBQF13naE7isiTun9qz5xM0raYc6GMM_g3TKQjH7uqO5rmXNZEvyGdpPgzSS2F2ee2w1_iD-Q1fw52dFKfQzB2Kqe9rvm_xbeqr1SlIj5MnuJtr2fqHRdktNp7tkYFwlFDr1Oflbxx0MmMBUIbHDz-d7K3OBXtkk2ZUM1BO1gwJ7PDDDusJDp2eUhz_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="370" src="https://blogger.googleusercontent.com/img/a/AVvXsEhdlaBQF13naE7isiTun9qz5xM0raYc6GMM_g3TKQjH7uqO5rmXNZEvyGdpPgzSS2F2ee2w1_iD-Q1fw52dFKfQzB2Kqe9rvm_xbeqr1SlIj5MnuJtr2fqHRdktNp7tkYFwlFDr1Oflbxx0MmMBUIbHDz-d7K3OBXtkk2ZUM1BO1gwJ7PDDDusJDp2eUhz_=w600-h370" width="600" />
</a>
</div>
<p>There we are, nice and clean, 1.000MHz. A bit of ringing, but that is due to non-ideal measurements conditions (I am clipped onto the ground on the other side of the board).</p>
<p>Keep going through those signals, checking the operate as expected. E.g. Reset, this should be low for a second or so (at the same time as the LED is off) and then stay high.</p><h2 style="text-align: left;">Extended Testing</h2>
<p>Once you have BASIC running, you can go on to test the rest of the features.</p>
<p>Starting with the datasette ports.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEikguTM6bDeGqBBNNbEqn4nuljZjX1EoiAwdtjUI9fzfJeQp-2QmrRvTfUQXlxRj1nEg20kbI6FGE76KkqrOfS-liS_tGWfY5eGA0K8pFfZA5UcoreGtgH9djx45UIsgy9AMAaaxQdnJiox77ZQHiSKd5VaJlFpBjH00gAQ7tyDPmMBPnOKHD3_jApEOuBn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3024" data-original-width="4032" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEikguTM6bDeGqBBNNbEqn4nuljZjX1EoiAwdtjUI9fzfJeQp-2QmrRvTfUQXlxRj1nEg20kbI6FGE76KkqrOfS-liS_tGWfY5eGA0K8pFfZA5UcoreGtgH9djx45UIsgy9AMAaaxQdnJiox77ZQHiSKd5VaJlFpBjH00gAQ7tyDPmMBPnOKHD3_jApEOuBn=w600-h450" width="600" />
</a>
</div>
<p>No spikes, just checking.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiG9262el4dAKboHFG2wG6JDDyCXREK3M6LggG1uegZItQOkuSgVAMvKf4x_xK4geXg_gcPt_R2-dxN6u04wAkhmzr1W3AeQmoASRwB6oJKC1MEBLYsG6Jh9JF9__yKjujQb65rk-kS_Y27aA9F5FtkGuYsOycyiE34hFQPscoPIAitymgKavW_k68cS2ej" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiG9262el4dAKboHFG2wG6JDDyCXREK3M6LggG1uegZItQOkuSgVAMvKf4x_xK4geXg_gcPt_R2-dxN6u04wAkhmzr1W3AeQmoASRwB6oJKC1MEBLYsG6Jh9JF9__yKjujQb65rk-kS_Y27aA9F5FtkGuYsOycyiE34hFQPscoPIAitymgKavW_k68cS2ej=w600-h450" width="600" />
</a>
</div>
<p>Although it isn't used much, I did check out the second datasette port. Changing the jumpers so that the rear edge connector becomes device 2.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhmPDEZ1HPxr6X4AUWqNrcLUj2fK2m_GfNq1vEk8zSmEPBlT_XpRoJQgbQNStrYjqNL-EKi5M9zoPPBDm-Gcns9TOVSOwKzpddTaGGdzkzTq7GiWPzpBsudBFHCa_NUSjcjRwQ3_2qKr6LFwwBoO5FtJhcdzG1CwaHlmrAijRwJmAkVZik_x_NsEPa2B9dX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhmPDEZ1HPxr6X4AUWqNrcLUj2fK2m_GfNq1vEk8zSmEPBlT_XpRoJQgbQNStrYjqNL-EKi5M9zoPPBDm-Gcns9TOVSOwKzpddTaGGdzkzTq7GiWPzpBsudBFHCa_NUSjcjRwQ3_2qKr6LFwwBoO5FtJhcdzG1CwaHlmrAijRwJmAkVZik_x_NsEPa2B9dX=w600-h450" width="600" />
</a>
</div>
<p>I start with the tape stopped, so I can see it detects that correctly, and starts when you press play.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgUugSjjGi5rr_YAsU1uff587YwXuUyj5o2Snsd4DRSJKJCdxEZmSPdxybJcu4275T-c8VAycfx80_qaBACqnSD74qI8QTccBxK57xUpg7L9U8dWUv8_QUjp2Vw6hZzh7JoxSB_B5ebRMdMwwHHDWIIwIB6pqwEbl_bivkRGcv2CXkW3bb4ZK4eUQxYkg_d" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3107" data-original-width="4142" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgUugSjjGi5rr_YAsU1uff587YwXuUyj5o2Snsd4DRSJKJCdxEZmSPdxybJcu4275T-c8VAycfx80_qaBACqnSD74qI8QTccBxK57xUpg7L9U8dWUv8_QUjp2Vw6hZzh7JoxSB_B5ebRMdMwwHHDWIIwIB6pqwEbl_bivkRGcv2CXkW3bb4ZK4eUQxYkg_d=w600-h450" width="600" />
</a>
</div>
<p>And there is Tut-Tut as well.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjUOXWy3beF_AGWwEGbwvS_MSj7f5xF2HDQu2EGpSI0B7rcRoqUzRvwIArrXHbN9lXQH5kb-2o35GtZOfyAftLaMxj-mOKB_vfPgMYGmd_CkwN9GS7gXvW52DaUSHIgWW-YAl8S0yTixeyTPqsyl4pUvIH5X0pdkl3E8dpfzaluFPmNccZTpTTmGpqSG3R2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjUOXWy3beF_AGWwEGbwvS_MSj7f5xF2HDQu2EGpSI0B7rcRoqUzRvwIArrXHbN9lXQH5kb-2o35GtZOfyAftLaMxj-mOKB_vfPgMYGmd_CkwN9GS7gXvW52DaUSHIgWW-YAl8S0yTixeyTPqsyl4pUvIH5X0pdkl3E8dpfzaluFPmNccZTpTTmGpqSG3R2=w600-h450" width="600" />
</a>
</div>
<p>To test the userport, I used a dual joystick module.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHKGbLO16nK6cyGzHnKPtbSkmxUUZqdVOSD1O8qlccta0HYFAG9F5a1_zuOhQQPYiAZOfIA26jCF0P1B-DIAUaTEVpULUb_YMnME0M9woVMSAhcLDbqGR5AGuFMniTJcQGNq2T8C9oG9bqj56pWNCRoMO6OEtphmqu0UEPQmef5MVMJpllhJd57mO1f0gm" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHKGbLO16nK6cyGzHnKPtbSkmxUUZqdVOSD1O8qlccta0HYFAG9F5a1_zuOhQQPYiAZOfIA26jCF0P1B-DIAUaTEVpULUb_YMnME0M9woVMSAhcLDbqGR5AGuFMniTJcQGNq2T8C9oG9bqj56pWNCRoMO6OEtphmqu0UEPQmef5MVMJpllhJd57mO1f0gm=w600-h450" width="600" />
</a>
</div>
<p>Testing that with my TFW8b special black and white joystick <i>(which I thought was top secret, but Chinny has done a video on them now, so maybe it isn't)</i>.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiM5Nox821EQUg8fLSZycuiTCjxtB0CVLWjrrLziA1McpQRNmMmxGdicmoMFUvr-lJ2MxqRYHIut4i2v2GtjZmXWFovJcLEnekWv8KNEbRSpz5H4QGNjkuN26QWm1k0kfOZfY5vyEOA6B8ieiVT7XSCxZ056XRNvVKHeSK09A1W6ZYt30-9uhnxAmTwibfD" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiM5Nox821EQUg8fLSZycuiTCjxtB0CVLWjrrLziA1McpQRNmMmxGdicmoMFUvr-lJ2MxqRYHIut4i2v2GtjZmXWFovJcLEnekWv8KNEbRSpz5H4QGNjkuN26QWm1k0kfOZfY5vyEOA6B8ieiVT7XSCxZ056XRNvVKHeSK09A1W6ZYt30-9uhnxAmTwibfD=w600-h450" width="600" />
</a>
</div>
<p>I suppose if you want the fully loaded Mini PET, I should add the SD2PET power tap and a datasette drive.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi4JKK5vot5-HPrYYUNctRUQXlE9lqrGr7Ou43m6TfXjmh5vPw-73wOEWkWRi1C6EXQWsFB5Uxm6iKS81NDWXai890XphNONfnQqC3UnScle4v3WyTON3QGuM4wqSlKLqZchUOsnRskG11oVLN0x4i7DtJOi9rw3JDCqkGfJp0BqjfFJqfLZjuNdr8GGz9j" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi4JKK5vot5-HPrYYUNctRUQXlE9lqrGr7Ou43m6TfXjmh5vPw-73wOEWkWRi1C6EXQWsFB5Uxm6iKS81NDWXai890XphNONfnQqC3UnScle4v3WyTON3QGuM4wqSlKLqZchUOsnRskG11oVLN0x4i7DtJOi9rw3JDCqkGfJp0BqjfFJqfLZjuNdr8GGz9j=w600-h450" width="600" />
</a>
</div>
<p>As a side note, I wouldn't normally use the PET Diagnostics with a Mini PET. It works, but it shouldn't really, so is not listed as supported. The clock arrangement is different; on the Mini PET it is generated by the CRTC and fed to the CPU, the output clock from the CPU is ignored. The PET Diagnostics uses the output clock to drive the system during testing, so the read and write timing is not going to be right.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjV55mgV-bDJiXMGHNVQ9aV23ESvN3wNCQh4ZmNm4W_YZNji7vqXCbItOxaWi4fNxE_5xRCdRPN3G2OJwWHgPJz83Hvix5Akv9qKJWdReTE7rsWYXpldPA0FNJYwUaf9LxI6efz6Ltfymr4c-n1w6S9pxzjNa3AbStwPjUjRSbhFMk0pB-Zit-a2aj9S8Fq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjV55mgV-bDJiXMGHNVQ9aV23ESvN3wNCQh4ZmNm4W_YZNji7vqXCbItOxaWi4fNxE_5xRCdRPN3G2OJwWHgPJz83Hvix5Akv9qKJWdReTE7rsWYXpldPA0FNJYwUaf9LxI6efz6Ltfymr4c-n1w6S9pxzjNa3AbStwPjUjRSbhFMk0pB-Zit-a2aj9S8Fq=w600-h450" width="600" />
</a>
</div>
<p>It will detect things such as lines stuck low though.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjVC9QCKGYveyk85MeKyFEeJV9-TCB7JDz6-6dmevAY74wRmNfPU2T4KLlSX0IFMehp8Qugg8bIEzsbs5Pq0Kl6XgJZCkRRXfL4L8sSoU7ALBU9IxS8YmAwXXn6c4FJlJ8cuYFnjffciyA50nKxWatN1Eo6RgLfUzSBcczZglARt4k7cBAbVXm46SnESw6I" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjVC9QCKGYveyk85MeKyFEeJV9-TCB7JDz6-6dmevAY74wRmNfPU2T4KLlSX0IFMehp8Qugg8bIEzsbs5Pq0Kl6XgJZCkRRXfL4L8sSoU7ALBU9IxS8YmAwXXn6c4FJlJ8cuYFnjffciyA50nKxWatN1Eo6RgLfUzSBcczZglARt4k7cBAbVXm46SnESw6I=w600-h450" width="600" />
</a>
</div>
<p>All the ROM and RAM tests pass.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgOWMUtdoOafYpSBtiL_AfJdFDXzzHxnq2_0pKPnca4clctU4wjWDMI5zkAPwG5kHopmR-S_AD5CJuc8GM08cjHYk1SS1r8qFpjQ4I34qQkeNGwXoItV2ERD4IoCuKpP60edBGrnuumO1GtYY0SxwoB6KtpsAzTD3hOgz5IAAJzZogYOasNORNANXrJZzU2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgOWMUtdoOafYpSBtiL_AfJdFDXzzHxnq2_0pKPnca4clctU4wjWDMI5zkAPwG5kHopmR-S_AD5CJuc8GM08cjHYk1SS1r8qFpjQ4I34qQkeNGwXoItV2ERD4IoCuKpP60edBGrnuumO1GtYY0SxwoB6KtpsAzTD3hOgz5IAAJzZogYOasNORNANXrJZzU2=w600-h450" width="600" />
</a>
</div>
<p>It doesn't have checksums to compare for the self test ROM or Mini PET BASIC 4.0, but then I never planned to use it with the Mini PET boards.</p>
<h2 style="text-align: left;">Advertisements</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiKaVfj9yYA-J-8mxFI4qAfgDpw60LK4iLgwlUmVCRDVEKgsi2DcS0aho_RpLWQLc2sA-ezHbIJLw1m8-QWZm4uFVwXi6i-LTTTrIbalIxIUVFUMEVle-jiaBTF1BEX8Qwqe9XuAVE_GTa13c1zZ4JwY1exT6ckVL1MDlzUTRcVudFEg24Z0kpP2ObWMjKg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiKaVfj9yYA-J-8mxFI4qAfgDpw60LK4iLgwlUmVCRDVEKgsi2DcS0aho_RpLWQLc2sA-ezHbIJLw1m8-QWZm4uFVwXi6i-LTTTrIbalIxIUVFUMEVle-jiaBTF1BEX8Qwqe9XuAVE_GTa13c1zZ4JwY1exT6ckVL1MDlzUTRcVudFEg24Z0kpP2ObWMjKg=w600-h450" width="600" />
</a>
</div>
<p>The through hole kit versions of the PET Dual Joystick have now been listed on SellMyRetro:</p>
<ul style="text-align: left;">
<li>Assembled - <a href="https://www.sellmyretro.com/offer/details/64260" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64260</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/64257" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64257</a></li>
<li>PCB Only - <a href="https://www.sellmyretro.com/offer/details/64256" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64256</a></li>
</ul>
<p><i>(this replaces an assembled surface mount version that I had designed for TFW8b, which they are not selling anymore)</i></p>
<p>The full range of Minstrel and Mini PET kits and accessories are available form my SellMyRetro store.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhNRDVADJOkOWmB96LiUngtwy5Yit-cXUJOFSVCm-DP_mwwKh-sOX3C0VDLdJV_zTdFTxp7siS4TD2M_LzOn4ZCCV_iZrh-POCtr2UHj5o7xivJsNvNRArkuEx7_wOfXBJ1jWIMKnE0lbsip1O-uxYBlYr-Qk-kWVqbLLR4EdsqQKFFEizIjGi_HEnS6KZp" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3222" data-original-width="4296" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhNRDVADJOkOWmB96LiUngtwy5Yit-cXUJOFSVCm-DP_mwwKh-sOX3C0VDLdJV_zTdFTxp7siS4TD2M_LzOn4ZCCV_iZrh-POCtr2UHj5o7xivJsNvNRArkuEx7_wOfXBJ1jWIMKnE0lbsip1O-uxYBlYr-Qk-kWVqbLLR4EdsqQKFFEizIjGi_HEnS6KZp=w600-h450" width="600" />
</a>
</div>
<p>This post was written last month, and was put live for my Patreon supporters. Since then, I have run out of the original Mini PET V1.48 boards as shown here. I am now shipping the slightly updated V1.49 boards. More on those in a future post.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg--V_iKOV-8eqGID7sLgp5v4YXzyEXfHUnIBrD819BVZnwedyaY7KMpk_OqUUam-vfJSImNsm9fCnGDkJL407VQNnLvHMTmNNRIqaxmVo7li0KVk78urWwZ0LilVXQ8oJqMNiuevel0cxlzNuAyT_ApvtKZMIIqW2qFejPfqXfiBggEUF63IJ3C8jma8rB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg--V_iKOV-8eqGID7sLgp5v4YXzyEXfHUnIBrD819BVZnwedyaY7KMpk_OqUUam-vfJSImNsm9fCnGDkJL407VQNnLvHMTmNNRIqaxmVo7li0KVk78urWwZ0LilVXQ8oJqMNiuevel0cxlzNuAyT_ApvtKZMIIqW2qFejPfqXfiBggEUF63IJ3C8jma8rB=w600-h450" width="600" />
</a>
</div>
<p>All the links can be found here:</p>
<ul style="text-align: left;">
<li>
<a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a>
</li>
</ul>
<h2 style="text-align: left;">Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<ul>
<li>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-64430760295597355092024-03-10T12:34:00.005+00:002024-03-10T12:44:12.744+00:00Why don't you use a bridge rectifier?<p>This question has come up again, so I thought I would finish off a blog post I started quite a while ago.</p>
<p>The humble bridge rectifier.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgnMZmOoVsHFGxEMPLvrA5rL2xUo0eqAbMAwXvp1TAavb-P4IvMKwMDDyJzNqynU9yIbGVlCrV_ymEMPGAzWFCwk0goJSjTcQJ3D1skyT3nP51PpZnDQicZElJlKR5gfBpa0tntvLrYuxLdH8cWQsZ6RK84-riIAHbZD1_MiKmjJbVFpW5yS6GF5PQpTnY_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="548" data-original-width="731" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgnMZmOoVsHFGxEMPLvrA5rL2xUo0eqAbMAwXvp1TAavb-P4IvMKwMDDyJzNqynU9yIbGVlCrV_ymEMPGAzWFCwk0goJSjTcQJ3D1skyT3nP51PpZnDQicZElJlKR5gfBpa0tntvLrYuxLdH8cWQsZ6RK84-riIAHbZD1_MiKmjJbVFpW5yS6GF5PQpTnY_=w600-h450" width="600" />
</a>
</div>
<p>Four diodes arranged to take an AC signal and convert it to DC.</p>
<p>A simpler circuit with only a single diode gives half wave rectification. The negative half of the waveform is cut off. It does give DC, but only half the power.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiBKBj3jpUv_hD2oSKwus3VzTHD4fec8-DHP0Png76ayD8BYyQA61zFr-jS54T0y5ofyMzkwCMfUGG4mc24jVcaGfJVYebfUh31W4-Ir1LUcIZ_uOARHSI0H52mzCil0ajju_Q5OMxyxhTmAXg99-8gSuSxpR1jauVBpB976Qn0u-E8SY6w8ulaL-zXHr0T" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEiBKBj3jpUv_hD2oSKwus3VzTHD4fec8-DHP0Png76ayD8BYyQA61zFr-jS54T0y5ofyMzkwCMfUGG4mc24jVcaGfJVYebfUh31W4-Ir1LUcIZ_uOARHSI0H52mzCil0ajju_Q5OMxyxhTmAXg99-8gSuSxpR1jauVBpB976Qn0u-E8SY6w8ulaL-zXHr0T=w600-h360" width="600" />
</a>
</div>
<p>The bridge rectifier solves this problem by reversing the polarity of the <strike>neutron flow</strike> negative half wave and flipping it to be positive, giving a DC waveform with two positive peaks for every AC cycle.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjwMbkuL7UxpdQsNj_NrJ6SHk4VtdsnSKz6tjxmWl5qNIOPAYDyaQNEpQr9ExaiS469Ia6VrnRPH3QBGii9XmqELQr0wIDb2GQZosXsFYvl2t_BGYCMmGWdPsbL6F2IaQybdAozipVqaMMhZv2XnVR4vlMIH_6fcwxV1Ln048qXW_kRJOVXXmH7aiU9HiWd" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjwMbkuL7UxpdQsNj_NrJ6SHk4VtdsnSKz6tjxmWl5qNIOPAYDyaQNEpQr9ExaiS469Ia6VrnRPH3QBGii9XmqELQr0wIDb2GQZosXsFYvl2t_BGYCMmGWdPsbL6F2IaQybdAozipVqaMMhZv2XnVR4vlMIH_6fcwxV1Ln048qXW_kRJOVXXmH7aiU9HiWd=w600-h360" width="600" />
</a>
</div>
<p>That is not the application here.</p>
<p>The power input to the Minstrel and Mini PET kits use a 2.1mm DC jack. This then goes to a jumper block allowing the user to select centre negative or centre positive supplies.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgdUTnvdAov9MKa3KnO-ogVIfzF7mbTMJIoLkvPpAeLI5MbF1EVdaljWfHT2UBxY4LdBun7U43XGYWf2bf2t2lRRQ6k8dU7H-el8wvMFl_iks0zfvfyR36O0oYHAVtIQSdP-QzxNEJBsJv5VAt59i1lWLmgs5HWx9yFFyrbGIWVs5op56AdpbOfHhmEjslr" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2838" data-original-width="3785" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgdUTnvdAov9MKa3KnO-ogVIfzF7mbTMJIoLkvPpAeLI5MbF1EVdaljWfHT2UBxY4LdBun7U43XGYWf2bf2t2lRRQ6k8dU7H-el8wvMFl_iks0zfvfyR36O0oYHAVtIQSdP-QzxNEJBsJv5VAt59i1lWLmgs5HWx9yFFyrbGIWVs5op56AdpbOfHhmEjslr=w600-h450" width="600" />
</a>
</div>
<p>In theory, the jumper blocks could be replaced by a bridge rectifier. No matter what the input polarity, the bridge rectifier would flip it to be positive.</p>
<p>Sounds great, but why then do I not do it?</p>
<h2 style="text-align: left;">"Why don't you just fit a bridge rectifier?"</h2>
<p>Well, I have put together an example of why this is a bad idea.</p>
<p>Let's start off with the simple solution, you have a 9V DC power supply, and a Minstrel 3.</p>
<p>Power comes in, goes through the jumpers and to the circuit.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEihCjDE7PtNuDiMhXFlaTl-FQTbRqNBP7NYoKKT_uBWBp-TG0DroO62nRsebyqs8tWjaX5ZolnFmPG-jpnxq8L6XRGJechyNf5xtZjFnTAcj03yU5TCrRGNyvnqOvoLcSBfNWienn4Bt62aQ4XnYGRupi7bNquMX-3cp-a9xPna-rp1-GolyMMegD8IUnye" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="442" data-original-width="884" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEihCjDE7PtNuDiMhXFlaTl-FQTbRqNBP7NYoKKT_uBWBp-TG0DroO62nRsebyqs8tWjaX5ZolnFmPG-jpnxq8L6XRGJechyNf5xtZjFnTAcj03yU5TCrRGNyvnqOvoLcSBfNWienn4Bt62aQ4XnYGRupi7bNquMX-3cp-a9xPna-rp1-GolyMMegD8IUnye=w600-h295" width="600" />
</a>
</div>
<p>With the jumpers set for centre negative (the preferable option), that looks like this.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgyeAs-QuNxT2QP7hqoj1hcGCGhOroyfUeJAFr-UyJ2l6fu_tIWMXy_wwpETPx9btocaNgiOPTFdhn58YazWZ2juhzMc8g-H7QbltN3gPtPDrk-_UwNagwofuuUCtOliBpEu8zfB_HtImXqMWE0NaeuVo5RbXZkkOOVvophluvjl6tzgGy9usq59hBX1LCy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="442" data-original-width="884" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEgyeAs-QuNxT2QP7hqoj1hcGCGhOroyfUeJAFr-UyJ2l6fu_tIWMXy_wwpETPx9btocaNgiOPTFdhn58YazWZ2juhzMc8g-H7QbltN3gPtPDrk-_UwNagwofuuUCtOliBpEu8zfB_HtImXqMWE0NaeuVo5RbXZkkOOVvophluvjl6tzgGy9usq59hBX1LCy=w600-h295" width="600" />
</a>
</div>
<p>The alternate configuration is with the jumpers vertically, for a center positive supply.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhfb8f3_L9oaExI6fVX3I-v6GSTAeA-wv-LsfknMnOhtZYgDO4b0nC0V61MBHwAVZvtlThU7wLBJk7TwqK1jtvFOn27oSO4eENSjWhJhlmQJZgScV02enQZjCOAGzhyvzeCFk6cSCG53dc3upuw90SeyG-XyXw8-GZWIzh6S30WSzuQ56OJiNAafn-2bx2g" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="442" data-original-width="884" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEhfb8f3_L9oaExI6fVX3I-v6GSTAeA-wv-LsfknMnOhtZYgDO4b0nC0V61MBHwAVZvtlThU7wLBJk7TwqK1jtvFOn27oSO4eENSjWhJhlmQJZgScV02enQZjCOAGzhyvzeCFk6cSCG53dc3upuw90SeyG-XyXw8-GZWIzh6S30WSzuQ56OJiNAafn-2bx2g=w600-h295" width="600" />
</a>
</div>
<p>Several people have suggested that fitting a bridge rectifier in place of the jumper block would be a better solution.</p>
<p>Two of the diodes in the bridge will be always conducting, and two will always be reverse biased and not conduction. But it would allow DC of either polarity to be used. (or in theory AC if a much larger reservoir capacitor was fitted)</p>
<p>A bridge rectifier is traditionally drawn as four diodes in a diamond shape as above, but I have rearranged that into four parallel diodes, the circuit is just the same.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjaDG_A6HiWMTjAofZkVvQF_XZoPww6myEaivfVo2NRkwob0dLPi5Qr9wUuzUGhjoaYPRi9fRnclke9ghGqSaV90HzNM9JiRI7rkFwnwhGVQvwAhMXXo5lfzp2FZIOcPSSYPBKEdXZrUD9uVjrE6ZJ7mmYmaPqhQc7ihbuowRixe2X1WMj1WSRRmv-dUi1A" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="456" data-original-width="1368" height="195" src="https://blogger.googleusercontent.com/img/a/AVvXsEjaDG_A6HiWMTjAofZkVvQF_XZoPww6myEaivfVo2NRkwob0dLPi5Qr9wUuzUGhjoaYPRi9fRnclke9ghGqSaV90HzNM9JiRI7rkFwnwhGVQvwAhMXXo5lfzp2FZIOcPSSYPBKEdXZrUD9uVjrE6ZJ7mmYmaPqhQc7ihbuowRixe2X1WMj1WSRRmv-dUi1A=w600-h195" width="600" />
</a>
</div>
<p>If the centre negative 9V DC supply is attached, two of the diodes conduct and power flows into the circuit. No current flows in the other two diodes, so they can be ignored. Redrawing the circuit shows the two active diodes.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjG4jCIpF65FH44fIJiPmkX1eymTZHrtBAyDr_m7Xt99li9-H6MwCFN0C211jyFtogs7obOwqhQ0lDGdEaaS1XXJpSEo0lY6915kRdyZiOeNTiZNzqOtD4wAdIz3e6J5WjiEV30YjPpSngMe7LHGZvu5yoRNtpVxxJ5ze6kQtGMW5E91QFaeOPeGNbAiNNy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="1441" height="195" src="https://blogger.googleusercontent.com/img/a/AVvXsEjG4jCIpF65FH44fIJiPmkX1eymTZHrtBAyDr_m7Xt99li9-H6MwCFN0C211jyFtogs7obOwqhQ0lDGdEaaS1XXJpSEo0lY6915kRdyZiOeNTiZNzqOtD4wAdIz3e6J5WjiEV30YjPpSngMe7LHGZvu5yoRNtpVxxJ5ze6kQtGMW5E91QFaeOPeGNbAiNNy=w600-h195" width="600" />
</a>
</div>
<p>Again for simplicity, I am showing the voltage drop as 1V, in practice it depends on the diodes and the current flow. I normally use 1N4001 diodes. The voltage drop across those varies from 0.6V off load, up to 1.1V at 1A.</p>
<p>From a 9V input, the circuit gets around 7V. This is enough for the 5V regulator, but only gives a 2V dropout voltage. On the positive side, some of the heat is dissipated in the diodes, reducing the heat generated by the regulator.</p>
<p>On the Mini PET 40/80 and Minstrel 4D, I got rid of the jumpers and just added a protection diode in case someone plugged in the wrong polarity of supply. That adds a single diode voltage drop, around 1V.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg7bu7VUN2g75Ejk1SL2h76Gzdyz2DOgOZ1MoWkBTbCp2bDTwNS2z6L_8NicUVT4hEVfKDUG1TJyf9kxH4Rwjo0rvjYYOukSI01wpW-jVoavzVtgpG6Q1o3mTN-93zgfujF4mjbDDUz0J4S_Gt49w1kjPepdWsf_SFDEj_x0yxMn4SwGG6mc62hItZDKqNb" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="509" data-original-width="1526" height="195" src="https://blogger.googleusercontent.com/img/a/AVvXsEg7bu7VUN2g75Ejk1SL2h76Gzdyz2DOgOZ1MoWkBTbCp2bDTwNS2z6L_8NicUVT4hEVfKDUG1TJyf9kxH4Rwjo0rvjYYOukSI01wpW-jVoavzVtgpG6Q1o3mTN-93zgfujF4mjbDDUz0J4S_Gt49w1kjPepdWsf_SFDEj_x0yxMn4SwGG6mc62hItZDKqNb=w600-h195" width="600" />
</a>
</div>
<p>That all seem fine, so why don't I just use a full bridge rectifier?</p>
<p>Well, the problem comes when you have two or more things connected to the same supply. You get the same issues with two mains referenced (or actively earthed) power supplies. For simplicity, I will consider the more obvious problem of a Y cable being used to power both the Minstrel 3 and a monitor.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj8yuRxHtebUrmg3a6tiM8EoOlzEfFyAB3Q_-BtXBiXKLUjMeJvVveYSMv0IIULSdw2eW3maxfPcNmWFNjpQmoxDm2n3SZ5kArqxrwqEpKTcsS4-kQGAtDFbeY7E5iXnv5CIMqAoQPLVSBBFz_9wFWCUuiJgxk9L4S8dmw4u0yP9SRfVaF-jPvMNvjUUfAA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj8yuRxHtebUrmg3a6tiM8EoOlzEfFyAB3Q_-BtXBiXKLUjMeJvVveYSMv0IIULSdw2eW3maxfPcNmWFNjpQmoxDm2n3SZ5kArqxrwqEpKTcsS4-kQGAtDFbeY7E5iXnv5CIMqAoQPLVSBBFz_9wFWCUuiJgxk9L4S8dmw4u0yP9SRfVaF-jPvMNvjUUfAA=w600-h450" width="600" />
</a>
</div>
<p>That should be fine, they both get 9V DC in and do what they want with it. <i>(OK, so I have drawn centre negative on all the diagrams, but the monitor is centre positive, so I swapped the jumpers on the Minstrel 3 to centre positive to make it work, but I am not going to redo all the drawings)</i></p>
<p>There is no problem with the polarity jumpers, but if there was a bridge rectifier, there is an issue.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiV7w-O5vDWFLJ6dEWONI1gpDIEM6WzJaI0Pi4HVymW9CjjGQQ9ebWPHDpbFA5agiWRLla5bTXiR13e8ODnLzi1G-4Dq8QfphLVtzzBFH05ftjt9PrFyxNoNr-A3wcFkW5Di9_s1aNntigocwgCanZRMGlsaIpVWKxsVccN7iyMjX7R1TfpFj8TlkrtgtY0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="921" data-original-width="1842" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEiV7w-O5vDWFLJ6dEWONI1gpDIEM6WzJaI0Pi4HVymW9CjjGQQ9ebWPHDpbFA5agiWRLla5bTXiR13e8ODnLzi1G-4Dq8QfphLVtzzBFH05ftjt9PrFyxNoNr-A3wcFkW5Di9_s1aNntigocwgCanZRMGlsaIpVWKxsVccN7iyMjX7R1TfpFj8TlkrtgtY0=w600-h295" width="600" />
</a>
</div>
<p>I have added the video jacks to the drawing. In both cases connected to the internal ground rail.</p>
<p>If the Minstrel 3 has a bridge rectifier, it's ground rail is actually at 1V relative to the power input.</p>
<p>If the monitor is wired directly (as most things are), it's ground rail is at 0V.</p>
<p>Not a problem if they are running in isolation, but if you then connect a video cable between them, you tie those two ground rails together you effectively short out the diode drop.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjduGp44VUaOQX-Wb_-Z--zYUHLIDSaERoTWljgcZB8KpUOVcQKlM1qd0uBLi01_wGjHeXj2PoeeD_bLZ4veNvvVYf4Xcv8wHLbgOnKAzOrw3s43kpEn9NlNZODJJQQfZsGr4Lx3rm9iNVL5xZ38TBhd-vDyxig0xjvywYmUN6xpUpCNxP4dvSywQdmdWQO" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="921" data-original-width="1842" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEjduGp44VUaOQX-Wb_-Z--zYUHLIDSaERoTWljgcZB8KpUOVcQKlM1qd0uBLi01_wGjHeXj2PoeeD_bLZ4veNvvVYf4Xcv8wHLbgOnKAzOrw3s43kpEn9NlNZODJJQQfZsGr4Lx3rm9iNVL5xZ38TBhd-vDyxig0xjvywYmUN6xpUpCNxP4dvSywQdmdWQO=w600-h295" width="600" />
</a>
</div>
<p>"That's fine", you say, "all the more voltage for the circuit".</p>
<p>Well, no, because the video cable is providing the short circuit path.</p>
<p>The Minstrel has two paths to back to the power supply ground to chose from. One is via the diode, but there is a 1V drop that way. The other is through the video cable to the ground rail of the monitor and then on to the power supply. OK, there is a bit of resistance in the video cable, but not as much as 1V, so it goes that way.</p>
<p>Here I am just showing the ground rail, you can see the two options.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjcrG5i91RK3Au_4gOro-KyxnoAK5G2i7lyvsmdEKaaagGRmAC17Onr_qch_Juy8diyZGFTKxSSThg9rIwRcQKSdNE8HT-N1ylZRpe0fgUKEr6IzgwNfuPmilsrpp7dNztO1t3hvWHcekVbhyMhHi4iTbOWxXBRuICL-_BzcZX7xVEMmN7Duhv2Blb3Z4gs" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="720" data-original-width="1800" height="230" src="https://blogger.googleusercontent.com/img/a/AVvXsEjcrG5i91RK3Au_4gOro-KyxnoAK5G2i7lyvsmdEKaaagGRmAC17Onr_qch_Juy8diyZGFTKxSSThg9rIwRcQKSdNE8HT-N1ylZRpe0fgUKEr6IzgwNfuPmilsrpp7dNztO1t3hvWHcekVbhyMhHi4iTbOWxXBRuICL-_BzcZX7xVEMmN7Duhv2Blb3Z4gs=w600-h230" width="600" />
</a>
</div>
<p>That diode is doing nothing, so what you actually have is this.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhr8ZJI-OItjTr-rGzlG3ILCWUc_DI62aHlAE6xGeUs9JjyrCYWGg3-gBe7m2dI7uz8G9tSJciMY679Hs-mCUx2fjhFdeDn07PWquYzNrbPapfhFm_hQ5637CzGOAwo44R7jEfNiW5BsVfbax637xxWlg_JPuFRIU1R6tj55Q6NVMAqvT1fPYtUMC0GsANa" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="921" data-original-width="1842" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEhr8ZJI-OItjTr-rGzlG3ILCWUc_DI62aHlAE6xGeUs9JjyrCYWGg3-gBe7m2dI7uz8G9tSJciMY679Hs-mCUx2fjhFdeDn07PWquYzNrbPapfhFm_hQ5637CzGOAwo44R7jEfNiW5BsVfbax637xxWlg_JPuFRIU1R6tj55Q6NVMAqvT1fPYtUMC0GsANa=w600-h295" width="600" />
</a>
</div>
<p>You didn't like my drawings of ammeters? Or you don't trust my workings?</p>
<p>OK, I have tried to model that, this is the Minstrel only powered via a bridge rectifier, with a small resistance added for it's power leads.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEin74CR0Af3cDTW6oH6VkV5mVW6NK93PO8ueqVxRz91qWNzxDvtlZ0-JIDwcOOGtqU3RMPP7M9ZGQbc5WxXw6Ss9QrjApqI_MwiiF_tXrkZ2uoSjrkH8CWl_n46X2WH5yFAD9iaCQeUXlI_fxiS-74xM_70fOHLXbUs1mLUGYTRv2tPY7uCbvz5iqwSOg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1600" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEin74CR0Af3cDTW6oH6VkV5mVW6NK93PO8ueqVxRz91qWNzxDvtlZ0-JIDwcOOGtqU3RMPP7M9ZGQbc5WxXw6Ss9QrjApqI_MwiiF_tXrkZ2uoSjrkH8CWl_n46X2WH5yFAD9iaCQeUXlI_fxiS-74xM_70fOHLXbUs1mLUGYTRv2tPY7uCbvz5iqwSOg=w600-h295" width="600" />
</a>
</div>
<p>Now when there are two paths, the current is split. In most cases, most of the current with flow through the power cable from the Minstrel. In the worse case with a bad power cable (say 0.1Ω) and a really good video cable and power lead on the monitor is (say a total of 0.2Ω), you may still get some of the current flowing down the video lead (the amount depends on the relative resistances of the video cable shield and the power cable negative wire)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZ-Pf0fO-xhdznmcqBcBmPrpX2w3e44repZMj46UOwAZXuh-QUofZ7C4qh3J97qafDsegEuSLnuYkHAJOOgoJtjlHyejKhykojoEIue5uPiVBOAzaYG0GbmfscACyVO8PKEzrloLECH-OxppxliR3DMazIrlygAP46yx5ylp_IMzdYnSFEvuDyZpyjrw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1600" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZ-Pf0fO-xhdznmcqBcBmPrpX2w3e44repZMj46UOwAZXuh-QUofZ7C4qh3J97qafDsegEuSLnuYkHAJOOgoJtjlHyejKhykojoEIue5uPiVBOAzaYG0GbmfscACyVO8PKEzrloLECH-OxppxliR3DMazIrlygAP46yx5ylp_IMzdYnSFEvuDyZpyjrw=w600-h295" width="600" />
</a>
</div>
<p>However, the big problem is when a bridge rectifier is used and this adds a diode drop in the negative side via the normal power cable. Then suddenly the video cable is a more attractive path for the ground return, and it all flows down the video cable and not the power cable. 0mA down the power cable, and 82mA through the video lead.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjKXJxkkGUQP-VaMZaLGqMSRwIDs8cNXct25p4-vBWWarIlVgObs2dmaudWVu4crASnYZ4DnVHUdphl38F7SO-cXRyK7Z6r3Df0k5TTCvIDk-T7ZW9OGvNHia-2WQvRVOSyGAieyBAlQeFp_wuiIaR_x9u7ISMeD_0RA2tdK5KXyQZFdDi_2vpLRkHLG_eJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="800" data-original-width="1600" height="295" src="https://blogger.googleusercontent.com/img/a/AVvXsEjKXJxkkGUQP-VaMZaLGqMSRwIDs8cNXct25p4-vBWWarIlVgObs2dmaudWVu4crASnYZ4DnVHUdphl38F7SO-cXRyK7Z6r3Df0k5TTCvIDk-T7ZW9OGvNHia-2WQvRVOSyGAieyBAlQeFp_wuiIaR_x9u7ISMeD_0RA2tdK5KXyQZFdDi_2vpLRkHLG_eJ=w600-h295" width="600" />
</a>
</div>
<p>So, in conclusion, in this situation, if you have a bridge rectifier, then there is a significant current flow through the video cable to the monitor, and back to the power supply via it's power cable. This is not a desirable situation, and should be avoided.</p>
<p style="text-align: center;"><i>"Yes, there are two paths you can go by,</i></p>
<p style="text-align: center;"><i>but in the long run,</i></p>
<p style="text-align: center;"><i>there's still time to change the road you're on</i>"</p>
<p>This is the same issue you sometimes get when you plug in cables to live AV equipment and you get a tingle as you touch the plug and socket at the same time, just before connecting them. Sometimes you may see a tiny spark. If you put a meter there, you will often find half mains voltage between the two devices. This is why sometimes when you have lots of AV equipment connected between devices you can unexpectedly fry video leads or power supplies etc.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhpTvSe4tf5TxNUYZfacQKDuLlbhD9f9Pi5REvfmnInLOPrWHsVVeRDbRFybSNochPcS8_AM0yWofAOih1hSpKLYOTVNTuOODfUM_RQFU_2XeII8EiAeYS7_uYel2oPA2BfgNVzrqhWwpM1A7ih5-3uLciQqhD-pUj8tYMH2TIdvRA4hxKaSbH9Qoz-tm31" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhpTvSe4tf5TxNUYZfacQKDuLlbhD9f9Pi5REvfmnInLOPrWHsVVeRDbRFybSNochPcS8_AM0yWofAOih1hSpKLYOTVNTuOODfUM_RQFU_2XeII8EiAeYS7_uYel2oPA2BfgNVzrqhWwpM1A7ih5-3uLciQqhD-pUj8tYMH2TIdvRA4hxKaSbH9Qoz-tm31=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">Addendum</h2>
<p>Remember the Mini PET 40/80 input that has a single diode and capacitor at the input?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg7bu7VUN2g75Ejk1SL2h76Gzdyz2DOgOZ1MoWkBTbCp2bDTwNS2z6L_8NicUVT4hEVfKDUG1TJyf9kxH4Rwjo0rvjYYOukSI01wpW-jVoavzVtgpG6Q1o3mTN-93zgfujF4mjbDDUz0J4S_Gt49w1kjPepdWsf_SFDEj_x0yxMn4SwGG6mc62hItZDKqNb" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="509" data-original-width="1526" height="195" src="https://blogger.googleusercontent.com/img/a/AVvXsEg7bu7VUN2g75Ejk1SL2h76Gzdyz2DOgOZ1MoWkBTbCp2bDTwNS2z6L_8NicUVT4hEVfKDUG1TJyf9kxH4Rwjo0rvjYYOukSI01wpW-jVoavzVtgpG6Q1o3mTN-93zgfujF4mjbDDUz0J4S_Gt49w1kjPepdWsf_SFDEj_x0yxMn4SwGG6mc62hItZDKqNb=w600-h195" width="600" />
</a>
</div>
<p>Would that work with an AC input? In theory, the diode will block the negative half of the AC waveform and charge up the capacitor to give a DC rail. The capacitor is only 100uF, so that may not be enough.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEipwv7RI8DAJyUMk_TctHfKwCe4U0udP7ywqLQ_PdSbc1arIZMwqXY4SYHjc-iSi_7OzTtG5v_nf9Nx8cRVCBX6JPVMVSOIKrlY8NHmSbB7VlbXMFUJnP449o-impTs-nZVIayGeej_cFf1Dj8znGlMqcXLWdGkoQg6YaNlVCC-QETE1bO6ZZibGDCY7rU0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEipwv7RI8DAJyUMk_TctHfKwCe4U0udP7ywqLQ_PdSbc1arIZMwqXY4SYHjc-iSi_7OzTtG5v_nf9Nx8cRVCBX6JPVMVSOIKrlY8NHmSbB7VlbXMFUJnP449o-impTs-nZVIayGeej_cFf1Dj8znGlMqcXLWdGkoQg6YaNlVCC-QETE1bO6ZZibGDCY7rU0=w600-h450" width="600" />
</a>
</div>
<p>I got a 9V AC supply and tried it out.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgD8qJg6emoUFtLEDgSJyoMDAERRq7IzmokjyKDmc4ENNgmBXP1Wu1mgCdB16Ou4jxby5H2KnYe7KxWcedrel2WUkfq9xw4VopcxxMGUzoNMOcZJboyuAvnUmbNwiL3KhHadrAWGIIGOZDWFfTy1utIVYs1t06Q-bcashBpS_8HEQIyX39PhBaNkTtby91h" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEgD8qJg6emoUFtLEDgSJyoMDAERRq7IzmokjyKDmc4ENNgmBXP1Wu1mgCdB16Ou4jxby5H2KnYe7KxWcedrel2WUkfq9xw4VopcxxMGUzoNMOcZJboyuAvnUmbNwiL3KhHadrAWGIIGOZDWFfTy1utIVYs1t06Q-bcashBpS_8HEQIyX39PhBaNkTtby91h=w600-h360" width="600" />
</a>
</div>
<p>The yellow line shows the input, currently around 14-15V, so that looks promising. The green line shows the 5V rail, currently inactive because the soft power switch is off. Both are relative to the bottom line on the scope.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhhzRM9KkfeKSfcAmotyxY_-glOVNuwkK-p7CO9ow2OjPMg-wDYU9vbjzQKLw71tfLpgqPtBaAlXelJGb9a98B5oXbH3TbwMuBKI8c4amrngTmVEx-psapLQPtehUkpi5U7qP4C6bKj2v12sdchfK6VP19f2keuOZtmxD6_UIbfYdRrW5nWXuqKvJhxE9-z" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEhhzRM9KkfeKSfcAmotyxY_-glOVNuwkK-p7CO9ow2OjPMg-wDYU9vbjzQKLw71tfLpgqPtBaAlXelJGb9a98B5oXbH3TbwMuBKI8c4amrngTmVEx-psapLQPtehUkpi5U7qP4C6bKj2v12sdchfK6VP19f2keuOZtmxD6_UIbfYdRrW5nWXuqKvJhxE9-z=w600-h360" width="600" />
</a>
</div>
<p>When powered on, you can see the 5V rail comes up and looks good for a bit, but eventually the voltage across the capacitor drops too low, and the 5V starts to drop out. The decrease continues for a few more cycles, until it drops too low to hold the soft power on, and switches off. It then goes back to looking OK.</p>
<p>I have separated the waveforms, so you can see that the yellow one does indeed take bites out of the green one.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh191ikSOhlnh26ImVEmWfby0LrQK6_4gA1uDD6w21-U21PEvUGR7dgRrsleyP-6XWXXQBDKb4bzZOLX64FUgHdqhbaVgmLwZW7NqhIJHMb9eZu2hk6KHs7ahtCYm8HGF0-pnnAbWBugRE8vdqM_iGqPqs-80ohUch1XAP4wFyGficWtj-FvgqJgt50fnUV" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEh191ikSOhlnh26ImVEmWfby0LrQK6_4gA1uDD6w21-U21PEvUGR7dgRrsleyP-6XWXXQBDKb4bzZOLX64FUgHdqhbaVgmLwZW7NqhIJHMb9eZu2hk6KHs7ahtCYm8HGF0-pnnAbWBugRE8vdqM_iGqPqs-80ohUch1XAP4wFyGficWtj-FvgqJgt50fnUV=w600-h360" width="600" />
</a>
</div>
<p>So, as expected, 100uF is too low. Let's try 470uF.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi8ynTOJ4g2ldjtOap0lKuoJ7UuhbT8ImoQ06MfcT_yvgkHRJseUdSZI-Z4TWCGq3obsg2lmsX6_UmBNMAEcFAhkK3hSTZu5MfAVobtF5V3X48nXaoys9CQp-6_49D0aHjDDWNjo0VgGdrZZa_TK15SHZfOYlEWqnPRgF4JqAOlvZ27j3LpCIUQaCBLOfh8" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEi8ynTOJ4g2ldjtOap0lKuoJ7UuhbT8ImoQ06MfcT_yvgkHRJseUdSZI-Z4TWCGq3obsg2lmsX6_UmBNMAEcFAhkK3hSTZu5MfAVobtF5V3X48nXaoys9CQp-6_49D0aHjDDWNjo0VgGdrZZa_TK15SHZfOYlEWqnPRgF4JqAOlvZ27j3LpCIUQaCBLOfh8=w600-h360" width="600" />
</a>
</div>
<p>It starts OK. And looks like it would be a good option, as there is now less overhead, less excess voltage to convert to heat.</p>
<p>However, add a heavy load, such as rewinding a tape that is already at the start, and it can't cope.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEheIlM3KGaub3Wh7rrXyI4lXsh3dyStrWl0OQkEgSlEh5TJ2cDZMTKipPxJhaYCeNQZkNfszSa4k4nqoA1iRXyqpAUayF-_0Sm1fpHoPPjSq36W6qRIbvffRfpizmA1yX5ZsqbLc-InHf5VvoUewumcdsdBXVpdy0QRQrT0Moj8KUH_oir7oqjO-7H9YZbf" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEheIlM3KGaub3Wh7rrXyI4lXsh3dyStrWl0OQkEgSlEh5TJ2cDZMTKipPxJhaYCeNQZkNfszSa4k4nqoA1iRXyqpAUayF-_0Sm1fpHoPPjSq36W6qRIbvffRfpizmA1yX5ZsqbLc-InHf5VvoUewumcdsdBXVpdy0QRQrT0Moj8KUH_oir7oqjO-7H9YZbf=w600-h360" width="600" />
</a>
</div>
<p>I increased this to 1000uF and tried again. That reduced the ripple quite a lot.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg8t34dFYzd0Cb1yEAVC4fEcbebSFAdEao10Oc6cJ6fpD8yUv9dNmpFaFvhGqyTZn24NOkSESTFDagdAnZqBXJOwHPOCz9SDSehbziP_d27iHGsoBtJmIdji9OB1DqQk6GAIqZm9BiWZY9N_AEcV_GTyOKPIkui7e4Ci18SYf3vRABFfkQyFJmVeSKPz9yr" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEg8t34dFYzd0Cb1yEAVC4fEcbebSFAdEao10Oc6cJ6fpD8yUv9dNmpFaFvhGqyTZn24NOkSESTFDagdAnZqBXJOwHPOCz9SDSehbziP_d27iHGsoBtJmIdji9OB1DqQk6GAIqZm9BiWZY9N_AEcV_GTyOKPIkui7e4Ci18SYf3vRABFfkQyFJmVeSKPz9yr=w600-h360" width="600" />
</a>
</div>
<p>That does drop a little, but there is now a lot of headroom over the 5V rail, and even the 6V rail with the heavy loads.</p>
<p>If anything it is a little too high, might be a little too high, the 9V DC supply normally only has 4 V dropout to convert to heat, now closer to 8V.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjoy3paIJDgv8uh58vT-fbMjV1U-jurB1fTa17ujlSwmQMMc8sT8BdtQXQ3RfoAU1JhIra9_Om-wlYLKGLSaJFvUUhf9bK5VTCAn17r4bGIJWfB4z0_qlTWQMrscXkfiCY0Gsq56AVIlsWHloAeeZZicuCggbSnI1XzE5grcHtTjiDdMnfZpT38ZMTi9QSY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjoy3paIJDgv8uh58vT-fbMjV1U-jurB1fTa17ujlSwmQMMc8sT8BdtQXQ3RfoAU1JhIra9_Om-wlYLKGLSaJFvUUhf9bK5VTCAn17r4bGIJWfB4z0_qlTWQMrscXkfiCY0Gsq56AVIlsWHloAeeZZicuCggbSnI1XzE5grcHtTjiDdMnfZpT38ZMTi9QSY=w600-h360" width="600" />
</a>
</div>
<p>If you can find a suitable 1000uF 25V, or larger capacitor that will fit under the perspex (max 13mm diameter), you can run the Mini PET 40/80 on AC.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiD40jfKa8SLLYUQhneuzywyjkZQhTko4Alv9L-aUfaT5wz1O_Slo0XmV0gzJfippacvlMEiXXmt9I2q8O5s1ZBo8IqyUy5aUpw0LV1qKgC7VuHhP2sa0FIyLUttgOBFrw8mFAq-03ZylK4P_7Gaxjze6R2V38fR1z6U75hkFmTu18I7upQINV-uB-4FwH0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiD40jfKa8SLLYUQhneuzywyjkZQhTko4Alv9L-aUfaT5wz1O_Slo0XmV0gzJfippacvlMEiXXmt9I2q8O5s1ZBo8IqyUy5aUpw0LV1qKgC7VuHhP2sa0FIyLUttgOBFrw8mFAq-03ZylK4P_7Gaxjze6R2V38fR1z6U75hkFmTu18I7upQINV-uB-4FwH0=w600-h450" width="600" />
</a>
</div>
<p>That does indeed work. A bridge rectifier would halve the ripple, so would help, but then what if someone plugged in a DC supply.........</p>
<h2>Adverts</h2>
<p>The full range of Minstrel and Mini PET kits (none of which have bridge rectifiers) are available form my SellMyRetro store.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhNRDVADJOkOWmB96LiUngtwy5Yit-cXUJOFSVCm-DP_mwwKh-sOX3C0VDLdJV_zTdFTxp7siS4TD2M_LzOn4ZCCV_iZrh-POCtr2UHj5o7xivJsNvNRArkuEx7_wOfXBJ1jWIMKnE0lbsip1O-uxYBlYr-Qk-kWVqbLLR4EdsqQKFFEizIjGi_HEnS6KZp" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3222" data-original-width="4296" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhNRDVADJOkOWmB96LiUngtwy5Yit-cXUJOFSVCm-DP_mwwKh-sOX3C0VDLdJV_zTdFTxp7siS4TD2M_LzOn4ZCCV_iZrh-POCtr2UHj5o7xivJsNvNRArkuEx7_wOfXBJ1jWIMKnE0lbsip1O-uxYBlYr-Qk-kWVqbLLR4EdsqQKFFEizIjGi_HEnS6KZp=w600-h450" width="600" />
</a>
</div>
<p>All the links can be found here:</p>
<ul style="text-align: left;">
<li>
<a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a>
</li>
</ul>
<h2 style="text-align: left;">Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<ul>
<li>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-35618691070953541952024-03-03T13:15:00.001+00:002024-03-07T10:01:21.519+00:00Commodore PET 2001 Repair Part 3 - Video Glitch<p>Welcome to the unexpected part 3 of this Commodore PET 2001 Repair.</p>
<p>In the previous posts, the board had been fixed and had reached the stage where I could load things from an SD2PET disk drive to test it properly.</p><p>All appeared to be OK until I tried out 3D Monster Maze.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgQ5LX5zHU_9KrDk6WLELmiR6QlKNRUd4YgfibuFU6WT3VIf5KR-LQM3-xu0-MZM65dUkftrOHMLAlOjBeCzYAOuiMivP5NKCWQp57QMeSVy9Oym_k0zTmZ4z8gEn5MWtsYbio5cOKh9tBhwuHGWREnCAqD4peCXCAFSu7q_BtPY_S7nBLRqqOqbmm5JmAQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgQ5LX5zHU_9KrDk6WLELmiR6QlKNRUd4YgfibuFU6WT3VIf5KR-LQM3-xu0-MZM65dUkftrOHMLAlOjBeCzYAOuiMivP5NKCWQp57QMeSVy9Oym_k0zTmZ4z8gEn5MWtsYbio5cOKh9tBhwuHGWREnCAqD4peCXCAFSu7q_BtPY_S7nBLRqqOqbmm5JmAQ=w600-h450" width="600" />
</a>
</div>
<p>Those spikes on the right hand walls should not be there. They are a glitch in the video circuit. I had seen a similar issues previously on the Minstrel 2. I think this is a similar problem, and is inherent in the design. Several chips need to change state at exactly the same time, but depending on tolerances of the timing of the chips involved, this can slip and result in a glitch.</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2022/09/minstrel-2-pixel-synchronisation-part-1.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2022/09/minstrel-2-pixel-synchronisation-part-1.html</a></p>
<p>Consider two characters next to each other. I will take the example of the right hand wall above.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhHqHa9b5JXvFq-vLyQmWf3S9-zsCRvnyuGkpcMoETZh2VlrPEno0_z6UHMDDDTDJB7bHqgb-mi-GbeZsFHqcEpykHkIIkfRmyP6YmKANyD9JrfrDtRErZo13iePKramQ8_HZbca8Qw5L5lxnaWiRd7uPLtnMS4Hwd9-hyu-EtLzCQEStmnm3oBjUPlb3LP" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1560" data-original-width="2080" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhHqHa9b5JXvFq-vLyQmWf3S9-zsCRvnyuGkpcMoETZh2VlrPEno0_z6UHMDDDTDJB7bHqgb-mi-GbeZsFHqcEpykHkIIkfRmyP6YmKANyD9JrfrDtRErZo13iePKramQ8_HZbca8Qw5L5lxnaWiRd7uPLtnMS4Hwd9-hyu-EtLzCQEStmnm3oBjUPlb3LP=w600-h450" width="600" />
</a>
</div>
<p>The first character is a white square. The glitch appears between that and the next character which is a white and black diagonal.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjIPks8R4dtHJnEdPwOEqnVI48wKHTgQF9DNw1lS7dcV2Vhw3eCVd6knl7Zwv-N_RwQTWPekGQZSdzaz4_hyXlb_3oTUMCqnKZJpd8_0yiVdkq8F-M1CXvtZVfNCtxpht_vvhWqah8IA2JPVp-WRVfJGogAMyNYZyQvFwLWJSSrtXocUHFr8dgLVvDLiUc5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2358" data-original-width="3144" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjIPks8R4dtHJnEdPwOEqnVI48wKHTgQF9DNw1lS7dcV2Vhw3eCVd6knl7Zwv-N_RwQTWPekGQZSdzaz4_hyXlb_3oTUMCqnKZJpd8_0yiVdkq8F-M1CXvtZVfNCtxpht_vvhWqah8IA2JPVp-WRVfJGogAMyNYZyQvFwLWJSSrtXocUHFr8dgLVvDLiUc5=w600-h450" width="600" />
</a>
</div>
<p>I tried to take pictures of the screen, but I an not very good at that, so I have redrawn them. Separately first, and then together as they should appear on the screen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEji_W79rhBQTnBwbpDQ5dSPtm6Z_mhmvjRlmhL4TrtK65292dyokcJn6op-6iw3mrEkfhmFiP1jbLkNjCBRn6b2ieD55qNcKDblzsa5cS9EpM1DmQqOPdfJOtyfaDJv_ajXe5rYGaYXl1HGc-rHAi7hzwPFiaprD_S1uXQ89raxH6aP1kBFnj5yXTVNhKX6" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="1200" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEji_W79rhBQTnBwbpDQ5dSPtm6Z_mhmvjRlmhL4TrtK65292dyokcJn6op-6iw3mrEkfhmFiP1jbLkNjCBRn6b2ieD55qNcKDblzsa5cS9EpM1DmQqOPdfJOtyfaDJv_ajXe5rYGaYXl1HGc-rHAi7hzwPFiaprD_S1uXQ89raxH6aP1kBFnj5yXTVNhKX6=w600-h450" width="600" />
</a>
</div>
<p>The PET has 256 possible characters, 128 character normal characters, and a second 128 that are the same as the first 128, but inverted. To save ROM space, the inverted versions are not stored in ROM, but are generated electronically from the first 128. <i>(on the Mini PET 40/80, since ROM space is cheap and components are not, the ROM now stores all 256 character patterns)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiutTZt06caBSR4SkTnGUpijruanyuOsQN_eyPhcPoF3H8GK2nLwX3y5RfsJmyZiEoTrx83q5Np460X7HteLG3qLt5MMzO9Pw0zfwd0YrsDGZ27jnT7xBoEEfHX7nHumLW1FqhFcuLYMZqHkMc2JTDQqJfuusEG8DHJTojW40C7Xycv2rB74fzMKOjR1XxH" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiutTZt06caBSR4SkTnGUpijruanyuOsQN_eyPhcPoF3H8GK2nLwX3y5RfsJmyZiEoTrx83q5Np460X7HteLG3qLt5MMzO9Pw0zfwd0YrsDGZ27jnT7xBoEEfHX7nHumLW1FqhFcuLYMZqHkMc2JTDQqJfuusEG8DHJTojW40C7Xycv2rB74fzMKOjR1XxH=w600-h450" width="600" />
</a>
</div>
<p>To generate the character output, two separate elements are required. Bit 0-6 of the character code are used to look up the character bitmap, and bit 7 controls if the character should be inverted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiwmF634rR4Kx5qUEj99dJdPztlaQvsaDeuuZhdcvhBBnqyP-VSalVvVmzp8Hn5OFnBVAx0rovF2Lt6asVtaEO2ghmu8LWLUGtdg_CI4uKGC_CxkikOnWRLJGmOIrN5AJowHsrdG1d4jdzgwznANnOaHulZ3CO1xyj0IppHBw2dmAgzcEA2auy5jNjqM0iT" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="1200" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiwmF634rR4Kx5qUEj99dJdPztlaQvsaDeuuZhdcvhBBnqyP-VSalVvVmzp8Hn5OFnBVAx0rovF2Lt6asVtaEO2ghmu8LWLUGtdg_CI4uKGC_CxkikOnWRLJGmOIrN5AJowHsrdG1d4jdzgwznANnOaHulZ3CO1xyj0IppHBw2dmAgzcEA2auy5jNjqM0iT=w600-h450" width="600" />
</a>
</div>
<p>In the example above, the first character is actually a black square, but the invert signal is high, so it is inverted to become the white square. The invert signal is then low for the second character which does not need to be inverted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhyFNl7glLHtFB0PfeND5As1SJ5MLriuk8ustc0zWFPpFUjXG8gRc41eaP_34aeLDOJkoRXyLt6XHPTJclUSD9hgCQ6t22CdQ1rQrx1bnJ2r2KvOEwDEwpC7tEmnx7sRC-lc4XMCsCfg4Sberpn0yuRb0H0L92SL4UUA5fogcwhiUt-oCLKCfU3T2A7e3MY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="898" data-original-width="1197" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhyFNl7glLHtFB0PfeND5As1SJ5MLriuk8ustc0zWFPpFUjXG8gRc41eaP_34aeLDOJkoRXyLt6XHPTJclUSD9hgCQ6t22CdQ1rQrx1bnJ2r2KvOEwDEwpC7tEmnx7sRC-lc4XMCsCfg4Sberpn0yuRb0H0L92SL4UUA5fogcwhiUt-oCLKCfU3T2A7e3MY=w600-h450" width="600" />
</a>
</div>
<p>In an ideal world, that is what you get, however, when the logic gates involved are getting on for 45 years old, the timing can slip a little, and the invert signal might change before the character data, or vice versa. If that happens, then you can get a glitch appearing between the two characters.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjonugQHUE6XDWiCi5kB_9bD4Zf2OM86JYK-1-MtiPtXi_l9geNpLhpyhRPd8M3JZvmkwoJXF_akjm2gRWcO8xqykO529YE0Wc4-hHPOISra8PwhSAgSYz5b7nXIInpHQFOGN1yNaW9MhjzCH6OYkSyYPhVN_kSefjL2HNp6ZYIe2xZ0nayCBRJU47P0XyF" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="1200" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjonugQHUE6XDWiCi5kB_9bD4Zf2OM86JYK-1-MtiPtXi_l9geNpLhpyhRPd8M3JZvmkwoJXF_akjm2gRWcO8xqykO529YE0Wc4-hHPOISra8PwhSAgSYz5b7nXIInpHQFOGN1yNaW9MhjzCH6OYkSyYPhVN_kSefjL2HNp6ZYIe2xZ0nayCBRJU47P0XyF=w600-h450" width="600" />
</a>
</div>
<p>The end of the black square is still being displayed, but for a fraction of a pixel, it is no longer being inverted, so you get to see a thin black line before the diagonal character starts.</p>
<p>This only happens in one particular circumstance, when an inverted character is next to a non-inverted one, and their edge pixels are different. If that triangle had been a circle, then you would not have noticed the black line as the circles has black columns either side of the white pixels in the middle.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEixMVfWmiRoI2OUGL-jDT6Hyh7TQG6cQ1i1fL1gJlEgZphnut-aPAdUN_Bh3_TgcmcFPaOlUZNVmO7-YtaUPBdIKBeLVnWFacap0jreMq9WyoklJ4l6UsxpnFqbtqRPu5Hrosi2uPFKFKPdjCpY6XT2ZY2eAVrjxFu0BnsbcV-S7sWMmf1aV3Qwq8lalhVw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="1200" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEixMVfWmiRoI2OUGL-jDT6Hyh7TQG6cQ1i1fL1gJlEgZphnut-aPAdUN_Bh3_TgcmcFPaOlUZNVmO7-YtaUPBdIKBeLVnWFacap0jreMq9WyoklJ4l6UsxpnFqbtqRPu5Hrosi2uPFKFKPdjCpY6XT2ZY2eAVrjxFu0BnsbcV-S7sWMmf1aV3Qwq8lalhVw=w600-h450" width="600" />
</a>
</div>
<p>The walls in 3D Monster Maze are always a good test, but you see it in other places, such as some of the space invaders ships and Rex's teeth.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhL3qcbd-OGQ95-S2hhYdYUt80bneawYRZtZh0JrCAgV2vrklIZqao2Av7ywMpcR-AycsEjis0qpFhOwhqBhW8qZYo7-FsRyZ3nTWPsr2WIW9uCHaOaoOP-F45-66u6iZM_Q7bhXySMwlmsxnTQzGEsKSj5mkZLlDr_xm3MM8srD2eA1GlG5N5VdptYZJTB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhL3qcbd-OGQ95-S2hhYdYUt80bneawYRZtZh0JrCAgV2vrklIZqao2Av7ywMpcR-AycsEjis0qpFhOwhqBhW8qZYo7-FsRyZ3nTWPsr2WIW9uCHaOaoOP-F45-66u6iZM_Q7bhXySMwlmsxnTQzGEsKSj5mkZLlDr_xm3MM8srD2eA1GlG5N5VdptYZJTB=w600-h450" width="600" />
</a>
</div>
<p>I tried to capture this on the logic analyser, but it is quite tricky as the glitch was only 5nS wide, the sampling width at the 200 MHz limit of my logic analyser (<i>let's not mention the time I wasted with another analyser that should have been able to do 450 MHz but decided to stop working</i>)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgg4CFa60Nad6d-h-E0hUD1ztKx3UaMPQS2rd9pMspDTkWmiBRpMj7RA8E7qvfnNr_MoLHDcZNyazJdtLV5u5UrvvwerejQz6FXIPSi2zLQnpF8NUWe6IoUNKAv7InNfcNjTPV0puFsUAelpbY2ptlqpVq7v9csbjqk77AkiKhIH_MzGm8-iEbkMw-E2l5f" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1057" data-original-width="1409" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgg4CFa60Nad6d-h-E0hUD1ztKx3UaMPQS2rd9pMspDTkWmiBRpMj7RA8E7qvfnNr_MoLHDcZNyazJdtLV5u5UrvvwerejQz6FXIPSi2zLQnpF8NUWe6IoUNKAv7InNfcNjTPV0puFsUAelpbY2ptlqpVq7v9csbjqk77AkiKhIH_MzGm8-iEbkMw-E2l5f=w600-h450" width="600" />
</a>
</div>
<p>You can just see the /Q output of the 74LS74 changes 5nS before the Q output, and the two outputs of the 74LS165. (<i>the glitch is a few nS later as it goes through some extra gates to combine all the signals</i>)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjeQ36gk74absN4iNQWCY_KSUwbhoS8jCJ-hx_WceFDXNciS2kgwhdiTrqMwd7fBvNB0qd4RY37VCWNRWziqUxLpbMYJRRboXj8tD_7ezb6xuP9QSf_reIKvRJjtpnKPk0m0eJuOSGTDpz86sOd24nA6R0R-zPlvU80vxI4Bpcj946YvJMV1l-wqvfWvlOj" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="651" data-original-width="868" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjeQ36gk74absN4iNQWCY_KSUwbhoS8jCJ-hx_WceFDXNciS2kgwhdiTrqMwd7fBvNB0qd4RY37VCWNRWziqUxLpbMYJRRboXj8tD_7ezb6xuP9QSf_reIKvRJjtpnKPk0m0eJuOSGTDpz86sOd24nA6R0R-zPlvU80vxI4Bpcj946YvJMV1l-wqvfWvlOj=w600-h450" width="600" />
</a>
</div>
<p>However, it is not consistently that, once glitch I captured had a staircase of changes over a 15nS period.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEipzs5rpWJ-sBkuVq0gCjgKVTTq39KN30cV_tGCDqUeHVA1uC2y8-eo0CXnBTzgaazdRnGxUhhkuwJAL5CX9VT8lQ4_5raRfXV5KUqRnTsQF0FkGvWZcAcl5NevuTFrajTeYt0gKSWVP5A4rcgVECvfHQ6oLuRpWBUAEjN_WgjXK9MrxeEXnLqkOJwOZyXv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="732" data-original-width="976" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEipzs5rpWJ-sBkuVq0gCjgKVTTq39KN30cV_tGCDqUeHVA1uC2y8-eo0CXnBTzgaazdRnGxUhhkuwJAL5CX9VT8lQ4_5raRfXV5KUqRnTsQF0FkGvWZcAcl5NevuTFrajTeYt0gKSWVP5A4rcgVECvfHQ6oLuRpWBUAEjN_WgjXK9MrxeEXnLqkOJwOZyXv=w600-h450" width="600" />
</a>
</div>
<p>In the the previous part of the repair, I had noticed a 74LS107 chip had been replaced by a 74HC107, which was not correct for the circuit, so I had replaced it with the originally specified part.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhKf0Hxoj45O65bfSmZ3RHRYqg4x21zm6jzfG_x-LKmyrShUxPpPkcD_3lzY9O2bNJ2c_UcNhl44FzN5IybhnrszQ0lLKt-q3DNnE30544scUnaxM82nRaL-gWLxCu-JRNV6t7cTZWaoDHkOxDChYb7BY2YtENRDj2Fsv7jLWE6JSqjMoIK3W08tnTlFO3t" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2904" data-original-width="3872" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhKf0Hxoj45O65bfSmZ3RHRYqg4x21zm6jzfG_x-LKmyrShUxPpPkcD_3lzY9O2bNJ2c_UcNhl44FzN5IybhnrszQ0lLKt-q3DNnE30544scUnaxM82nRaL-gWLxCu-JRNV6t7cTZWaoDHkOxDChYb7BY2YtENRDj2Fsv7jLWE6JSqjMoIK3W08tnTlFO3t=w600-h450" width="600" />
</a>
</div>
<p>I wondered if maybe this being a new part, might have tighter timing, and could be causing the issue, so I reinstated the old 74HC107 to see if that made a difference.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjzyaBMaUeou00Wk07PcrN3YfpuA9fkMJo5gqRQHxA6Snq5nafxrRwnLJPPrLPIuHc1Jg6fqVtIJIIJFRYIzU8n6mrxOJDnaAuycKjZJ4f1Pthfwlw1IQQSuLGWuT8nbvfi5Y5D0mGhqp5MpcpdbrqaooUbnRN9046lT6lyjcR3qH57vsjqZmdJEHZLyq8l" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjzyaBMaUeou00Wk07PcrN3YfpuA9fkMJo5gqRQHxA6Snq5nafxrRwnLJPPrLPIuHc1Jg6fqVtIJIIJFRYIzU8n6mrxOJDnaAuycKjZJ4f1Pthfwlw1IQQSuLGWuT8nbvfi5Y5D0mGhqp5MpcpdbrqaooUbnRN9046lT6lyjcR3qH57vsjqZmdJEHZLyq8l=w600-h450" width="600" />
</a>
</div>
<p>Ah, OK, yes, it does make a difference. The spikes are now on both the left hand and right hand wall. I went back to the 74LS107 and the left hand spikes disappeared, but as before the ones on the right are still there.</p>
<p>There are many parts involved in the video signal generation. A 74LS74 flipflop controls the invert signal, and a 74LS165 generates the video data. It is possible that replacing one or other of those would fix the problem. It could also be down to the latch signals those chips receive, so that is several different 74LS107 chips. Or it could be the 74LS00 and 74LS08 that merge all the signals together. Most likely it will be a combination of all these.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEidkT_jJqbjIswAAne2sldOSDRHC88o-mWIBECc-x70DZpqZ-4zSqCHCkplfEjDJNvPEMb37bBpHGV5uQBmdGC57SeshjM0jiomhwCEZRlk9TgkVQEs9k6pWpfCb-D9FoceytWWmYeyNlLtq69BlCR8WlNsByTTvQC3h8zjmh5tg3SPIoijiFLe2ZGYJpFy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1119" data-original-width="1492" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEidkT_jJqbjIswAAne2sldOSDRHC88o-mWIBECc-x70DZpqZ-4zSqCHCkplfEjDJNvPEMb37bBpHGV5uQBmdGC57SeshjM0jiomhwCEZRlk9TgkVQEs9k6pWpfCb-D9FoceytWWmYeyNlLtq69BlCR8WlNsByTTvQC3h8zjmh5tg3SPIoijiFLe2ZGYJpFy=w600-h450" width="600" />
</a>
</div>
<p>With the Minstrel 2, I concluded that the spikes would not have been visible on a 1980s TV, so I decided I should fix them.</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2022/09/minstrel-2-pixel-synchronisation-part-2.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2022/09/minstrel-2-pixel-synchronisation-part-2.html</a></p>
<p>In this case, the reverse was true. This board was going back into a PET 2001 case, so if the glitches were not visible on the 9" CRT, then I didn't need to fix them. But, it turns out there were visible. I spoke to the owner and they said they had seen the spikes on the walls, and thought they were meant to be there.</p>
<p>I didn't want to start replacing all of those parts, to try to chase the problem all over the board. So I decided to look at another option.</p>
<p>On the 12" PETs, they had added an extra circuit to the video output, a pixel synchronisation flip flop.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgPlaKb9-3OAPba6e2XJzWZXuKdTspk7cgO8oYTfxCTlg75LHu-D7a6ekk6cWPmyqRb2-sAgVmueACQOhammK6a89gSmYC6MEDTSLY7YBVutP620hOmcxtvfwRe2hGAXJGEtlI9KG8AN7_g14WXWwJpLokcJvHYjaJQynHGw0j9_-EwwgLW4cMzZ58U51L7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="1200" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgPlaKb9-3OAPba6e2XJzWZXuKdTspk7cgO8oYTfxCTlg75LHu-D7a6ekk6cWPmyqRb2-sAgVmueACQOhammK6a89gSmYC6MEDTSLY7YBVutP620hOmcxtvfwRe2hGAXJGEtlI9KG8AN7_g14WXWwJpLokcJvHYjaJQynHGw0j9_-EwwgLW4cMzZ58U51L7=w600-h450" width="600" />
</a>
</div>
<p>I used similar circuits on the Minstrel and Mini PET kits. The video output of the Mini PET is shown here, is it is a bit clearer what is going on.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhBh3FhjQHREj_x4rRFJgLo0uqXYHEifEltvlIYwtjPKhfwSKhHKnM4s00tt_Y9Rw3PZDdKmnlSeLcdmlP2Z_d5J5HkKniGSNEp2eCn90GAC3oJCCTdOpaNIB0Ic1tglCnIrAnPcpvkVNhrK59YOURL2hEwazH8MSL1fVNU8ih4r1Ov0wD6AmGPXVTVwjc6" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1057" data-original-width="1409" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhBh3FhjQHREj_x4rRFJgLo0uqXYHEifEltvlIYwtjPKhfwSKhHKnM4s00tt_Y9Rw3PZDdKmnlSeLcdmlP2Z_d5J5HkKniGSNEp2eCn90GAC3oJCCTdOpaNIB0Ic1tglCnIrAnPcpvkVNhrK59YOURL2hEwazH8MSL1fVNU8ih4r1Ov0wD6AmGPXVTVwjc6=w600-h450" style="cursor: move;" width="600" />
</a>
</div>
<p>This samples the video signal once every clock cycle and outputs that version. The output of this circuit cannot have any glitches*, and will only ever by perfectly square pixels, and any glitches will be removed. (<i>* well, unless the flip flop is faulty</i>)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgFTtTIK44otLBcudnfxh1XCG1GjM0Jg3ehNAxiQIoZ_ZthKqQ5ytyuy7E62kLnrK0fnS6KHziHVhgcyldnZcpcg7ILrklr2dbD3iPFGXZ0LfO9TwyMqDHLWDCB8Px5KSBUn7TSbdaBRdkXSSobtH_O5rGWCJYSUdrzSoa4rxwlWllND2Gg3u_GxdURUabZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="1200" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgFTtTIK44otLBcudnfxh1XCG1GjM0Jg3ehNAxiQIoZ_ZthKqQ5ytyuy7E62kLnrK0fnS6KHziHVhgcyldnZcpcg7ILrklr2dbD3iPFGXZ0LfO9TwyMqDHLWDCB8Px5KSBUn7TSbdaBRdkXSSobtH_O5rGWCJYSUdrzSoa4rxwlWllND2Gg3u_GxdURUabZ=w600-h450" width="600" />
</a>
</div>
<p>All I would need to do is interrupt the video signal after it had been merged, and insert a flip flop. I would also need to tap the 8 MHz dot clock to clock the flip flop.</p>
<p>Rather serendipitously, both signals are on the same chip and that chip has already been socketed and replaced. Well, I have to give this a go, haven't I.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi8-tcVLgFQCCbuAVi7yIomy4gcIudcx-9GLw4iBuiKDmNwobNlAOD4cWm503k6c2u46sROcdfC6QuQpP8rof08H-5rYnu7gZ7Nkd9hJYIkwEgyzHXHbvvk-sRfLkg4ozLPHRJvKO4PhGITEOVu9LN_t6XHqtmMXAnQLaG1WCnr0WM4VhDaTV_lW4mZjkex" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi8-tcVLgFQCCbuAVi7yIomy4gcIudcx-9GLw4iBuiKDmNwobNlAOD4cWm503k6c2u46sROcdfC6QuQpP8rof08H-5rYnu7gZ7Nkd9hJYIkwEgyzHXHbvvk-sRfLkg4ozLPHRJvKO4PhGITEOVu9LN_t6XHqtmMXAnQLaG1WCnr0WM4VhDaTV_lW4mZjkex=w600-h450" width="600" />
</a>
</div>
<p>The person who drew the PET 2001 schematics seems to have had a bit of a problem with this 74LS08 AND gate at position E2. The four gates are all drawn differently.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhMWT__BrDVUI6ZZwconmvcm7REhzq7L54tCQB2EqFlHlHwfhHsjJ3lknppFunpUrtwZaW85WhuYQdWY4ut8r1NWeij6QR3zuvXp5y6Ei5UqIweRMGa40VJ0gPF2zGHlvJAI-6ZV3TOv1jsRj065ENgJn5tkQIJlPk2Y3UuDPOe5Ag6j5gribKx_S7njILB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1050" data-original-width="1400" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhMWT__BrDVUI6ZZwconmvcm7REhzq7L54tCQB2EqFlHlHwfhHsjJ3lknppFunpUrtwZaW85WhuYQdWY4ut8r1NWeij6QR3zuvXp5y6Ei5UqIweRMGa40VJ0gPF2zGHlvJAI-6ZV3TOv1jsRj065ENgJn5tkQIJlPk2Y3UuDPOe5Ag6j5gribKx_S7njILB=w600-h450" width="600" />
</a>
</div>
<p>The first one is almost the logical equivalent, an OR gate with inverted inputs, but the output should also be inverted. The second is drawn as a NAND gate. The third and forth are correct, although to me it looks like the forth one has been tippexed out and redrawn correctly.</p>
<p>Anyway, I had found the two signals I was interested in. The 8MHz clock was on E2 pin 6.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgaKmB0u_Pee7CfQwOdxZbL_tHjQX0KJ4gf6GxVp8lP0hH6esngK-6dPkY6Y_DCS_G4m8MrQ4jc4GWZG_mvRYQ9qFlmP--OuiSxNBNeLQtLIX7Kim3xP6OAt7ZOcV5pjBmKPowV-MEYLllIGtNcsZgfhWFTIXzSiOy33m352LRwVuGCJQpXzUfAK4sBQih8" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="1200" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgaKmB0u_Pee7CfQwOdxZbL_tHjQX0KJ4gf6GxVp8lP0hH6esngK-6dPkY6Y_DCS_G4m8MrQ4jc4GWZG_mvRYQ9qFlmP--OuiSxNBNeLQtLIX7Kim3xP6OAt7ZOcV5pjBmKPowV-MEYLllIGtNcsZgfhWFTIXzSiOy33m352LRwVuGCJQpXzUfAK4sBQih8=w600-h450" width="600" />
</a>
</div>
<p>And the video output was E2 pin 3.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgxMY3SCl5Vw_9vrZGfuPgeEx9aiDsn0f9Ij41RG168nER4543U5hNMcs42OT-exp49s20b-AYKJZZz-mckc97bxjs3ALTKHCVG-b6Kl0w0IVXgpzNzu9ZlWhsbTUHT9mEkHl6xxTRth6WDmmBGk5DyMN_fHk-jef5mctXtSnALpuHxr6_lPbCkq3ES4Fk1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="745" data-original-width="993" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgxMY3SCl5Vw_9vrZGfuPgeEx9aiDsn0f9Ij41RG168nER4543U5hNMcs42OT-exp49s20b-AYKJZZz-mckc97bxjs3ALTKHCVG-b6Kl0w0IVXgpzNzu9ZlWhsbTUHT9mEkHl6xxTRth6WDmmBGk5DyMN_fHk-jef5mctXtSnALpuHxr6_lPbCkq3ES4Fk1=w600-h450" width="600" />
</a>
</div>
<p>I needed to insert the flip flop between pin 3 of the AND gate and pin 3 on the socket. (<i>may as well keep with the hand drawn style of schematic</i>)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgjwFEhkEZHLwfLoGS8GfOcjWoUIYf_P2jXq7I4gQ4SIlhz9bFWiNvzg73DoHAqCYEu5gR0l0CEprQbV-BaEgDPObBppvnPOpmBgqSpiphhGiODRSEly1bSkcj-h-idZkg8lfPGgb4J8FB5zRsHJ_aP0-iCRbAjT0OMPkAZziZkNzvnAHXv0Ko76qyKjM_D" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="745" data-original-width="993" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgjwFEhkEZHLwfLoGS8GfOcjWoUIYf_P2jXq7I4gQ4SIlhz9bFWiNvzg73DoHAqCYEu5gR0l0CEprQbV-BaEgDPObBppvnPOpmBgqSpiphhGiODRSEly1bSkcj-h-idZkg8lfPGgb4J8FB5zRsHJ_aP0-iCRbAjT0OMPkAZziZkNzvnAHXv0Ko76qyKjM_D=w600-h450" width="600" />
</a>
</div>
<p>To do this, I employed the "bodge another chip on top of an existing one" approach I normally reserve for my development boards.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgdJ1QyRcUMBVGUx5Ky5JgqdFvvb8isIozJCsqe2LLMmnl6v-eY-q_9717MvxKDKG3uAv7xYxWfBIXlco1GfQrdUnEsHLSw5uE44uksQTYcfAjCyaXE4v7u0WkwbCQ6LHdcxUNi4S5U1RXfEzHmFjlmZiOcd8OrM8oy8-6qwLnMFlU3Els-1NkCw3ZGuG2p" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2514" data-original-width="3352" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgdJ1QyRcUMBVGUx5Ky5JgqdFvvb8isIozJCsqe2LLMmnl6v-eY-q_9717MvxKDKG3uAv7xYxWfBIXlco1GfQrdUnEsHLSw5uE44uksQTYcfAjCyaXE4v7u0WkwbCQ6LHdcxUNi4S5U1RXfEzHmFjlmZiOcd8OrM8oy8-6qwLnMFlU3Els-1NkCw3ZGuG2p=w600-h450" width="600" />
</a>
</div>
<p>The original pin 3 was folded upwards and connected to the flip flop input. The flip flop output is wired to a loose pin protected by a bit of shrink wrap. Ugly, but it should do the job.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjkTEus78CNVHPftcM4-cwPshJRbh8GpXEGULmnnh5RLF4uA7O-qcpqyUssckXbL86a-75RgPh-L0KrVQkVu9BJuzadmomH74WJ2STpYLwYIrRgegbJn0ci2mxWxPpnoEdXOwGqyEDX8ujfsgWbK3hdJGx7kQZlwr5l1PbUv_BC8WKXjCO6WDF-uG5Ke9TS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3174" data-original-width="4232" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjkTEus78CNVHPftcM4-cwPshJRbh8GpXEGULmnnh5RLF4uA7O-qcpqyUssckXbL86a-75RgPh-L0KrVQkVu9BJuzadmomH74WJ2STpYLwYIrRgegbJn0ci2mxWxPpnoEdXOwGqyEDX8ujfsgWbK3hdJGx7kQZlwr5l1PbUv_BC8WKXjCO6WDF-uG5Ke9TS=w600-h450" width="600" />
</a>
</div>
<p>It is sort of hidden by the PET ROM/RAM board. I added an extra socket to the stack to raise it up to clear the bodge chip.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5ljiettlKO8Q3kCkwuCf6JmGws0KNUY3yh6u5dXqbQzCgj0gCMnrWVQI0Oi1AVKslAwo3jP1MvwW5csLEyD29ZOkZKL9kMIdGzbNdVC_XSK9TYgIYx89wRkYo_JqU7kc5li9ukqKzjTOuml_cumCe7-rsiYR40hcPiVv6b-oEEUoFvyc18sI824s809yE" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2928" data-original-width="3904" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5ljiettlKO8Q3kCkwuCf6JmGws0KNUY3yh6u5dXqbQzCgj0gCMnrWVQI0Oi1AVKslAwo3jP1MvwW5csLEyD29ZOkZKL9kMIdGzbNdVC_XSK9TYgIYx89wRkYo_JqU7kc5li9ukqKzjTOuml_cumCe7-rsiYR40hcPiVv6b-oEEUoFvyc18sI824s809yE=w600-h450" width="600" />
</a>
</div>
<p>All looked OK, it worked. (<i>I didn't notice until I came to edit these pictures, but there is a shadow to the left of the first row of characters. Seems to be an echo of the last column of pixels of the next character?</i>)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh9scYnlwi5KAR42tiN5YL4omwlMCEvPmhO_gUz1PCx0oAjpUK2ERi0i9Wn_9639K0WQFvPt0a6IOQIV5lDfQUYRHp8lSJ7OkmAl1wRwJRuImxxJBXf6N3BwZOyNNMQmasRhkIb-8u1TOU-zXTCfXPx2HhpLCd7DZWkQ1TTV8bK-XIIRWRcGLiHTwVmMDOf" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1338" data-original-width="1784" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh9scYnlwi5KAR42tiN5YL4omwlMCEvPmhO_gUz1PCx0oAjpUK2ERi0i9Wn_9639K0WQFvPt0a6IOQIV5lDfQUYRHp8lSJ7OkmAl1wRwJRuImxxJBXf6N3BwZOyNNMQmasRhkIb-8u1TOU-zXTCfXPx2HhpLCd7DZWkQ1TTV8bK-XIIRWRcGLiHTwVmMDOf=w600-h450" width="600" />
</a>
</div>
<p>Had I fixed the problem with the spikes?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhEq_YL1adq6ENvmwV1DoSbgU_OBllFj8UqXadbJi86BqtN_MuvsLbUYWc5-UHd3tOb3EAs9bpBKTt3nWr9RGvEuCJo0V9SBFQZkEOELK91m7new7p_roJzuS6FI0Ax1xeG8Zqp90WG3Unrz9BQOAjOFzXle18MKaRSqhKktYuIuG65OE11fXtVezXi9M8M" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhEq_YL1adq6ENvmwV1DoSbgU_OBllFj8UqXadbJi86BqtN_MuvsLbUYWc5-UHd3tOb3EAs9bpBKTt3nWr9RGvEuCJo0V9SBFQZkEOELK91m7new7p_roJzuS6FI0Ax1xeG8Zqp90WG3Unrz9BQOAjOFzXle18MKaRSqhKktYuIuG65OE11fXtVezXi9M8M=w600-h450" width="600" />
</a>
</div>
<p>No.</p>
<p>It appears I had made things worse. The glitches had been amplified and were now an entire pixel wide.</p><p>Also notice the glitch on the bottom left wall is now amplified to the point of being visible.</p>
<p>It seems the point at which I was sampling the video signal was right on the character change, just where the glitch occurs. </p><p></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiefkcSSyRfAqnl5cBQUk85KjN2UDx30jXXyAQriWYGx3HO30UvlB437T2elc1d57zW8E8TdqTZRABfalCjggs84UT_mdvyRRRnkKOj5DbzfQTml_oSkbonjQGnR2dl_S-e1GTWUUomAi9zTSP0L2mFfOJovXKEhU2RljgbH3k4SLi4-3KVnUQKPiH7_6Yy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="630" data-original-width="840" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiefkcSSyRfAqnl5cBQUk85KjN2UDx30jXXyAQriWYGx3HO30UvlB437T2elc1d57zW8E8TdqTZRABfalCjggs84UT_mdvyRRRnkKOj5DbzfQTml_oSkbonjQGnR2dl_S-e1GTWUUomAi9zTSP0L2mFfOJovXKEhU2RljgbH3k4SLi4-3KVnUQKPiH7_6Yy=w600-h450" width="600" />
</a>
</div>
<p>OK, how can I delay that?</p>
<p>Well, sampling on the 74LS74 occurs on the rising edge of the clock pulse. If I could sample on the falling edge of the clock, that would be in the middle of the pixel, and should miss any glitches.</p>
<p>Ideally, I would change to a negative edge triggered flip flop, but I have not been able to find anything suitable.</p>
<p>Plan B was to invert the clock signal, so it would sample in the middle of the pixel, when it should be stable.</p>
<p>If it had been a slower signal, I would probably have used a transistor to make an inverter, but since this was the 8MHz clock, I decided to use a proper inverter. I didn't want to extend the bodge tower any further by adding a full size 74LS04. Nor did I want to redo all the work I had already done, so I went for plan C and use a single gate surface mount inverter, something like a 74HCT1G04.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiiJpeC5NCt_JUIKv4ME8KbPei12Q1Fh5jxjWHAiTBFrkw_WMS-3dEHavALPvsp7FWaZx5S-i5Yf6sKWPRiW64cQ93TXe7xo80hsRPHvHncwI2nwWs5vWhKVhR6YnqUrCj7pzOrTult292HFBzYVtRFphgsNfr8SOZ1wML-Ozv_jTW2zokrzUXAKSBFhWAp" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="745" data-original-width="993" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiiJpeC5NCt_JUIKv4ME8KbPei12Q1Fh5jxjWHAiTBFrkw_WMS-3dEHavALPvsp7FWaZx5S-i5Yf6sKWPRiW64cQ93TXe7xo80hsRPHvHncwI2nwWs5vWhKVhR6YnqUrCj7pzOrTult292HFBzYVtRFphgsNfr8SOZ1wML-Ozv_jTW2zokrzUXAKSBFhWAp=w600-h450" width="600" />
</a>
</div>
<p>Well, turns out I didn't have any 74HCT1G04, so plan D was a 74HCT1G02, a single NOR gate.</p><p>Those of a nervous disposition, look away now.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjW_IiwS6kMLtLRHe2JgffodpasV9bSD6WfPtSct0wOpE1SHzTXEweF-Q0CN5ipycXym4EyVsUPJcf9nLQ0MQHkD0jb3HmQR8msSFJManVrrQN9kRKrd5vpVhuv5vecA1ff3yZ_hJfRIFi9Hyng-JxUi-bP5SE8iRb9aCPkt-ITsvNAUyqOqpf2BzQyHt6k" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2544" data-original-width="3392" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjW_IiwS6kMLtLRHe2JgffodpasV9bSD6WfPtSct0wOpE1SHzTXEweF-Q0CN5ipycXym4EyVsUPJcf9nLQ0MQHkD0jb3HmQR8msSFJManVrrQN9kRKrd5vpVhuv5vecA1ff3yZ_hJfRIFi9Hyng-JxUi-bP5SE8iRb9aCPkt-ITsvNAUyqOqpf2BzQyHt6k=w600-h450" width="600" />
</a>
</div>
<p>Some days I walk the fine line between insanity and genius, and I am never quite sure which side of the line I fall.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7SgQAcawzX94wuXu6I-zglTWSPWT8w1Aw2aBOIoo6WKUpsuX7SwF0XqXGfAhxXuIIrMoyfMD-e6LwN3JWgnQqFwNN5U5h1BXS6lWbi2_oNS8r5N2N1N3CWGLqAWI8xTXIRfHafQ4BZg_Z3uj3aJwEbMj0IUtWrINynXGVo0FBoh1Ayb9OB_R8KrIGU1Pi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2120" data-original-width="2827" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7SgQAcawzX94wuXu6I-zglTWSPWT8w1Aw2aBOIoo6WKUpsuX7SwF0XqXGfAhxXuIIrMoyfMD-e6LwN3JWgnQqFwNN5U5h1BXS6lWbi2_oNS8r5N2N1N3CWGLqAWI8xTXIRfHafQ4BZg_Z3uj3aJwEbMj0IUtWrINynXGVo0FBoh1Ayb9OB_R8KrIGU1Pi=w600-h450" width="600" />
</a>
</div>
<p>Factory.</p>
<p>Has that fixed it this time?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi8hIiu6XUjRUM5yNaVLCKv3H162wlMX5LXESXtaEmQBebDKHR6KpIkGpBlMa9z7qJ6pevAcLIGquN1rhOcR7ru_SXfpCbHe3jlVwsXGOSxyGIMbjQJpM5BxVE-eDY52vNnkYsi6ndU7rpzVMQSRi3CZXhmQwfUmjFARn7WLy3ndwTSkVwMBLTsJTCeN4TF" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi8hIiu6XUjRUM5yNaVLCKv3H162wlMX5LXESXtaEmQBebDKHR6KpIkGpBlMa9z7qJ6pevAcLIGquN1rhOcR7ru_SXfpCbHe3jlVwsXGOSxyGIMbjQJpM5BxVE-eDY52vNnkYsi6ndU7rpzVMQSRi3CZXhmQwfUmjFARn7WLy3ndwTSkVwMBLTsJTCeN4TF=w600-h450" width="600" />
</a>
</div>
<p>Yes, indeed it has.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjP77TJTgZUEvzPjsZMMEfCpUXa1dkvrvY1Uc_kshCUsaPTEbm_azaa7pHIbYa6AgxQWCUEIPxEnQ8s75n9LObfhfaBxLiXQjW20yqAW5qUerZJnaKstXfmvK5Dc6Cv2XQYaxtStdUu_EkZzI3TOeVQxAd8gJ2HPqTCXa3nPtIH3ym1QQkiQXjuQsJOtA64" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjP77TJTgZUEvzPjsZMMEfCpUXa1dkvrvY1Uc_kshCUsaPTEbm_azaa7pHIbYa6AgxQWCUEIPxEnQ8s75n9LObfhfaBxLiXQjW20yqAW5qUerZJnaKstXfmvK5Dc6Cv2XQYaxtStdUu_EkZzI3TOeVQxAd8gJ2HPqTCXa3nPtIH3ym1QQkiQXjuQsJOtA64=w600-h450" width="600" />
</a>
</div>
<p>That's better, Bang! and the glitch is gone.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgP2rnE79miwhUw1OxFWJAjdSimeDs9uofGnnPHR_AYuAZ-JCe1AZBfN0ftYwc2n7vKgcVbfGoHUWXB6BOEcB-YBHKOzWw3-UDPuX3Q0rFvrpFV5MpQAwMY2HNXJEpe_paw1vD7FS1gTsStQ4QBnJ-hKqhm1jZbCrKsdIhABuYdtCVm1eIFOmcoiH54kalD" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="768" data-original-width="1024" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgP2rnE79miwhUw1OxFWJAjdSimeDs9uofGnnPHR_AYuAZ-JCe1AZBfN0ftYwc2n7vKgcVbfGoHUWXB6BOEcB-YBHKOzWw3-UDPuX3Q0rFvrpFV5MpQAwMY2HNXJEpe_paw1vD7FS1gTsStQ4QBnJ-hKqhm1jZbCrKsdIhABuYdtCVm1eIFOmcoiH54kalD=w600-h450" width="600" />
</a>
</div>
<p>I have tested various places I had seen the problem before, and everything is fine now (<i>and I have checked and the shadow to the left has gone, that only appeared with the non-inverted flip flop version</i>)</p><p></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgkE9uwhm30x_ujHZDJ0NvfQbNvVtPfALR0BK3gFp8dLOFjA_7IHHg3vTSUl9B1PtvI2lHAkBIOlhfx8DDSqrlO_7Zhx4RpBRNp5aXcSwmWtRBGWm976VwL509AR4YaTTHBIMQOBiw9oK9vMSVNVvrr6B6vSCt3H5uZUC5tev3OpCEeSE4iBlIeMN3TbZwO" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgkE9uwhm30x_ujHZDJ0NvfQbNvVtPfALR0BK3gFp8dLOFjA_7IHHg3vTSUl9B1PtvI2lHAkBIOlhfx8DDSqrlO_7Zhx4RpBRNp5aXcSwmWtRBGWm976VwL509AR4YaTTHBIMQOBiw9oK9vMSVNVvrr6B6vSCt3H5uZUC5tev3OpCEeSE4iBlIeMN3TbZwO=w600-h450" width="600" />
</a>
</div>
<p>Now I know that works, I think I will make a neater PCB version. I was going to use a surface mount 74LS08, but I couldn't make it fit, so I just used a full size one.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhZxUFPJkVlVzMg6_-Q6vManMcVeZ2FsAggL3SvUQ-1Lx7HeIOwKVLs4p8FtyrGsALkRDDjmDO3VbsRaMI_6HmoczcJ99V830zuN1L_ZgOrGJ7XcH02mD8mWe-mjCSpiHiNOMsL3nMyg3WYIJPpPew2KloeQbXSlTBo6LzLTmPqtuSPy2hjHRqk-vHddNdI" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2219" data-original-width="2958" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhZxUFPJkVlVzMg6_-Q6vManMcVeZ2FsAggL3SvUQ-1Lx7HeIOwKVLs4p8FtyrGsALkRDDjmDO3VbsRaMI_6HmoczcJ99V830zuN1L_ZgOrGJ7XcH02mD8mWe-mjCSpiHiNOMsL3nMyg3WYIJPpPew2KloeQbXSlTBo6LzLTmPqtuSPy2hjHRqk-vHddNdI=w600-h450" width="600" />
</a>
</div>
<p>The 74LS08 is there as before, now with surface mount inverter and flip flop. The pins underneath will fit either a turned pin or a standard dual wipe IC socket.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgKSvg0ULhXibynF5YDXF1KlHkjLGjfggRh5dbtgG1D_risBwmkEsfF8D53LLJJqc0w7r9VF8qQ3Efw7Qh1nvUumy6Un9rpJme-FwotLbLK_wkdQG6m_Qmr7QHmCvwmLA3YJbfvK5EvJI2k351eS_XB1H3A_sQtTnslz4zCPfSRxPJYPbtoPIqd1X82fhpv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2194" data-original-width="2926" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgKSvg0ULhXibynF5YDXF1KlHkjLGjfggRh5dbtgG1D_risBwmkEsfF8D53LLJJqc0w7r9VF8qQ3Efw7Qh1nvUumy6Un9rpJme-FwotLbLK_wkdQG6m_Qmr7QHmCvwmLA3YJbfvK5EvJI2k351eS_XB1H3A_sQtTnslz4zCPfSRxPJYPbtoPIqd1X82fhpv=w600-h450" width="600" />
</a>
</div>
<p>There should be no conflicts as the chip part overhangs some resistors on the board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEijf_NiaCn_OGAGElHeCqdmu9SaKvzlJF0CcyiuLvjIt6JCIh0pXxy6hjqmut3CRBvTj-VIE3bWG6iCIYAIIL-clNmr0sTx4sZv_aHS-pY-IKOmvdypDRt1hh6p9uqZej3tvNYJ51aRkqVjGgZP2TuKW0mtybpQyqP1PjhtyOX4XcfIe7hTjKGTkqmF_NBP" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2763" data-original-width="3684" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEijf_NiaCn_OGAGElHeCqdmu9SaKvzlJF0CcyiuLvjIt6JCIh0pXxy6hjqmut3CRBvTj-VIE3bWG6iCIYAIIL-clNmr0sTx4sZv_aHS-pY-IKOmvdypDRt1hh6p9uqZej3tvNYJ51aRkqVjGgZP2TuKW0mtybpQyqP1PjhtyOX4XcfIe7hTjKGTkqmF_NBP=w600-h450" width="600" />
</a>
</div>
<p>If you still have working ROM and RAM, it doesn't stand out much next to the 6502.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgWC22mI-v1vtXBR4iVYNh-E88scicQQUcd09IiANWvA_WucDsFDWKD8xRWH23hrdkrggi8vyl-3uWEXB_i14Xa4Vz1mu-ta-fYz4_FzgRj9dW8VLoLlkS4dgbuDxLbokDIC4DFN7I_GTdhg8w2fyk7O3MPC92qGOJEVAWXEbJV3GJQ43tMqTT2fzF5plqo" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgWC22mI-v1vtXBR4iVYNh-E88scicQQUcd09IiANWvA_WucDsFDWKD8xRWH23hrdkrggi8vyl-3uWEXB_i14Xa4Vz1mu-ta-fYz4_FzgRj9dW8VLoLlkS4dgbuDxLbokDIC4DFN7I_GTdhg8w2fyk7O3MPC92qGOJEVAWXEbJV3GJQ43tMqTT2fzF5plqo=w600-h450" width="600" />
</a>
</div>
<p>But most likely you will be using a PET ROM/RAM board, which just about hides the board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAdfnxaek0Mu72WhVkcGeQmjvlea_48v4ALDdZqohtKDyO2LUe0v1NboSNsVmMiKGuZLgNikNtlGdTOiD720NX7dItLf5cyPny--myVeVCu0QF3JT8O7sWlb3YzVZzfBfoe9POFPk8b9o-1uohLIHtLRRVnlm34B5nw1wTTY4KIgtrUICRQAX0xU_V1lOn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAdfnxaek0Mu72WhVkcGeQmjvlea_48v4ALDdZqohtKDyO2LUe0v1NboSNsVmMiKGuZLgNikNtlGdTOiD720NX7dItLf5cyPny--myVeVCu0QF3JT8O7sWlb3YzVZzfBfoe9POFPk8b9o-1uohLIHtLRRVnlm34B5nw1wTTY4KIgtrUICRQAX0xU_V1lOn=w600-h450" width="600" />
</a>
</div>
<p>As before, there is an extra 40 pin socket added below the PET ROM/RAM board to allow it to clear the new board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgSpA3URV9lR2DmuwrtCdl_xcx2-kQe840ryPoZNicEIlftJBcms0G9ocYwnc6A-hsEgrCqOhg62qOCH3-gOZrYbBsYx-yy6C0a_2FvnItrerELQQmE_Pl1_jZ98U-NzZYKfmm7FnxB653wuCUEVf4RRsCSE7y1a8J3RTns2JYq5Es6mOSYA-IDRFOuSUBn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgSpA3URV9lR2DmuwrtCdl_xcx2-kQe840ryPoZNicEIlftJBcms0G9ocYwnc6A-hsEgrCqOhg62qOCH3-gOZrYbBsYx-yy6C0a_2FvnItrerELQQmE_Pl1_jZ98U-NzZYKfmm7FnxB653wuCUEVf4RRsCSE7y1a8J3RTns2JYq5Es6mOSYA-IDRFOuSUBn=w600-h450" width="600" />
</a>
</div>
<p>I initially designed a smaller version.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfoMGtJ6KJmb7cIs5cD-5v4p3OtSAluP3UMRMdOhzL9CqdMvKkPjdvBE_3mH_PNmPkJZH24bswEhGj7JmS9yhi7HqkzSJrJvKUXbHE6WyMxWlKcR8u1EKG0aR_JxVijSojPDzOyl_lZC1HlFMk54e-RqmsGx4NUHzrwaot2LF-IqihEwDN-RdamVkeE67A" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2778" data-original-width="3703" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfoMGtJ6KJmb7cIs5cD-5v4p3OtSAluP3UMRMdOhzL9CqdMvKkPjdvBE_3mH_PNmPkJZH24bswEhGj7JmS9yhi7HqkzSJrJvKUXbHE6WyMxWlKcR8u1EKG0aR_JxVijSojPDzOyl_lZC1HlFMk54e-RqmsGx4NUHzrwaot2LF-IqihEwDN-RdamVkeE67A=w600-h450" width="600" />
</a>
</div>
<p>One where the socket pins were soldered direct to the IC, with only the video output on pin 3 being separated. This one had the chips underneath.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiLQb9DZF0KWGK1bDGcoHMd4b9s-V12LTOezndXPmMZz9oahZAyjdk0aDzn_Fqd07TY7VGwgajdGowq898q2DNxr9jrilQ0FbzLKGwsDMQZ-ffx0jDiFTeAkyryDB_yVx_yKCico09zPWxfBJrTEof0xfEAnbNNt6omNFdS-9HeuGi0lc0wZ_imQON51gO_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2431" data-original-width="3241" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiLQb9DZF0KWGK1bDGcoHMd4b9s-V12LTOezndXPmMZz9oahZAyjdk0aDzn_Fqd07TY7VGwgajdGowq898q2DNxr9jrilQ0FbzLKGwsDMQZ-ffx0jDiFTeAkyryDB_yVx_yKCico09zPWxfBJrTEof0xfEAnbNNt6omNFdS-9HeuGi0lc0wZ_imQON51gO_=w600-h450" width="600" />
</a>
</div>
<p>But I didn't like that design, so I will go with the larger board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiycAsL5JkThNwCTBZxanIPz2Pcx2N9t-PNqUgEK_tRFrzL-zIqDDGRxarKLbKZ_oMpyUUPoiuTkHW1k6KegGP9hZldCcxQAy0TLfE5-01c7Rrbh8qacYoKONZHm4eHR4ukzQLGPtycSGyc4uqfq53QxCzFHY4oZ5lIOaMSXQBMQyyVUU5ROdju7r2bLb7K" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2776" data-original-width="3702" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiycAsL5JkThNwCTBZxanIPz2Pcx2N9t-PNqUgEK_tRFrzL-zIqDDGRxarKLbKZ_oMpyUUPoiuTkHW1k6KegGP9hZldCcxQAy0TLfE5-01c7Rrbh8qacYoKONZHm4eHR4ukzQLGPtycSGyc4uqfq53QxCzFHY4oZ5lIOaMSXQBMQyyVUU5ROdju7r2bLb7K=w600-h450" width="600" />
</a>
</div>
<p>Reminds me of an old sketch....</p>
<div class="separator" style="clear: both; text-align: center;">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none; text-align: right; width: 600px;">
<tbody>
<tr>
<td><img data-original-height="957" data-original-width="1276" height="150" src="https://blogger.googleusercontent.com/img/a/AVvXsEgApZUvd3fqRtf8OiLA4lR_7wDGfiFDgoNA5k5rSrWiNYiE_D1WV70H6SGcrx91mlgBjd_K7E1ui8lKiCsUF2BnNGi_MFtjgXx2IwdorNTPBHSIQ4-GRvWD6x0-BQvYVI_Gsl1CSfxkbEgveDgvhaO1aEC0GO5UBKvRIc8owZU2r6W-uh47onqVYePGw9pz=w200-h150" width="200" /></td>
<td><div align="center"><i>"I look up to them because they have proper circuit boards."</i></div></td>
</tr>
<tr>
<td><img data-original-height="1843" data-original-width="2457" height="150" src="https://blogger.googleusercontent.com/img/a/AVvXsEh34SN66g5NYGMfC2OqZ27Too43Jb612lGTJGuQwIQ3p0ML2XynVm0W9jud_wNW1Au1k9PZcSD2yggTQpBIOYJA4A43NJKAzr00q7rOQDyzaSQlKq5UBQVmQAnrqXiSlLRrCVsImE_kuKW5gq8EURBdReLa7ePG-Vac6Q2Oe9U5cNuJjuq9GO6-MAjDbtTS=w200-h150" width="200" /></td>
<td><div align="center"><i>"I look down on him, because he is a temporary bodge, but I look up to him because he doesn't hide his SOT23's away."</i></div></td>
</tr>
<tr>
<td><img data-original-height="2219" data-original-width="2958" height="150" src="https://blogger.googleusercontent.com/img/a/AVvXsEhgLOWAdBRB51ID693zFzXUkpvz1CvGZmb_KovCQfE_1ELwBQ8JGheEhrt2EieVMxY570ZpsidhS4y_Z7VhgjVO_KfBy28o0-JgESHXQGog-9hQGpsvPdp35IQwGBYRmclxD5vKVSOs9h1gsCDwwn8GVfX_7D0p_YmOlGL_Hc-ByC1ixphtqN4MA27KNWII=w200-h150" width="200" /></td>
<td><div align="center"><i>"I look down on them because I am going into production."</i></div></td>
</tr>
<tr>
<td><img data-original-height="957" data-original-width="1276" height="150" src="https://blogger.googleusercontent.com/img/a/AVvXsEgApZUvd3fqRtf8OiLA4lR_7wDGfiFDgoNA5k5rSrWiNYiE_D1WV70H6SGcrx91mlgBjd_K7E1ui8lKiCsUF2BnNGi_MFtjgXx2IwdorNTPBHSIQ4-GRvWD6x0-BQvYVI_Gsl1CSfxkbEgveDgvhaO1aEC0GO5UBKvRIc8owZU2r6W-uh47onqVYePGw9pz=w200-h150" width="200" /></td>
<td><div align="center"><i>"I know my place."</i></div></td>
</tr>
</tbody>
</table>
</div>
<p>Yes, as the board played by John Cleese said, it is going into production. I have listed the PET 2001 glitch fix board on SellMyRetro. Desoldering and IC sockets required. Not suitable for 2001N or later.</p>
<ul style="text-align: left;">
<li><a href="https://www.sellmyretro.com/offer/details/64262" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64262</a></li>
</ul>
<p>The same problem exists on the 2001N, but I have looked and unfortunately the two signals are not on the same chip, so I don't think there is a similarly elegant solution for the 2001N, it is going to involve two boards, or one board and a clip onto another chip.</p><p>With the new glitch fix board fitted, I repeated all the testing, including testing the userport with a PET userport joystick.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiUqy22M8vF4PAzgaEectD-wS1o4xoNJEfz8JtwmlrBNWyp17T1eVZEux1IM-36kQyd2XhD5QqeVyVxWK3AafJJzmQisBgq3-EYsY7V8UpiDXdqP5p1nCWuX-jz5ghWxyMLpb1EBKsxJUBG_L1CkEsYn3y6GrZ8u9whE7xOGEpeAt1X4LD3lkZINk6lkX_3" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiUqy22M8vF4PAzgaEectD-wS1o4xoNJEfz8JtwmlrBNWyp17T1eVZEux1IM-36kQyd2XhD5QqeVyVxWK3AafJJzmQisBgq3-EYsY7V8UpiDXdqP5p1nCWuX-jz5ghWxyMLpb1EBKsxJUBG_L1CkEsYn3y6GrZ8u9whE7xOGEpeAt1X4LD3lkZINk6lkX_3=w600-h450" width="600" />
</a>
</div>
<p>3D Monster Maze is one of the games that support that, so time for more testing.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEge9qmrt4dQBGp_SoauPVe7TIlCn6Yro9QJBh_k2ijrnTzeP3dkJoulVXCqKUJlnuS6-JkdEv3ILMLRpHELrX2jrDNT8bN-615eotrRBLVFxJa5auMVAnLkVsfBIQGGlAdbMPNAwHwnnd3U0YlOpvQSyNe0V6jwV5cPx0JbHhEzFdkD7iQgsZ2wu_23JiGy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEge9qmrt4dQBGp_SoauPVe7TIlCn6Yro9QJBh_k2ijrnTzeP3dkJoulVXCqKUJlnuS6-JkdEv3ILMLRpHELrX2jrDNT8bN-615eotrRBLVFxJa5auMVAnLkVsfBIQGGlAdbMPNAwHwnnd3U0YlOpvQSyNe0V6jwV5cPx0JbHhEzFdkD7iQgsZ2wu_23JiGy=w600-h450" width="600" />
</a>
</div>
<p>The spikes are gone, but I can't do anything about Rex, I'm afraid he's not going away.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjlQKpRL-Z_AUV8JAhdzDrmr58PszFWRPC4qF2LKIpFQHQPNbtBI6P19CAgxxgzQtzdNpBmAlWYyniIUmna78J3TysG59H9wJETvPV9nPdPTX6YYtldLF3I0ONjHXMb9TJqmJ8BkZ7dFK7nBzvLBnJ4_ls33lbCM5l6rmVhhIMFtbELPpJkxmZMAOMcR3tX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjlQKpRL-Z_AUV8JAhdzDrmr58PszFWRPC4qF2LKIpFQHQPNbtBI6P19CAgxxgzQtzdNpBmAlWYyniIUmna78J3TysG59H9wJETvPV9nPdPTX6YYtldLF3I0ONjHXMb9TJqmJ8BkZ7dFK7nBzvLBnJ4_ls33lbCM5l6rmVhhIMFtbELPpJkxmZMAOMcR3tX=w600-h450" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>PET 2001 Video Glitch Fix</h2>
<p>If you have this same problem on a PET 2001 (not 2001N or later), then I have listed the boards on SellMyRetro:</p>
<ul style="text-align: left;">
<li><a href="https://www.sellmyretro.com/offer/details/64262" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64262</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjDbU-a5MEmxKhyIOBEU1RHWkBMhrLTHv8bKB0_tElK5cxGRDj74Eo0G1oEhpvt2Dw-H7uPBs7WWGzrMMcZwbwk7IU2Tq7UY1eX7xIU_-42GWYDxX8Cv5H8NotIR0OyWzPkXVPuySIR6MMtb86M_nPmzhte25-_Yr_-1b-_qiICTjOqKBV9EgTe1ykKcr4c" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2480" data-original-width="3307" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjDbU-a5MEmxKhyIOBEU1RHWkBMhrLTHv8bKB0_tElK5cxGRDj74Eo0G1oEhpvt2Dw-H7uPBs7WWGzrMMcZwbwk7IU2Tq7UY1eX7xIU_-42GWYDxX8Cv5H8NotIR0OyWzPkXVPuySIR6MMtb86M_nPmzhte25-_Yr_-1b-_qiICTjOqKBV9EgTe1ykKcr4c=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">PET Dual Userport Joystick</h2>
<p>I have recently revived the PET dual userport joystick, as a through hole version, available from my SellMyRetro store:</p>
<ul style="text-align: left;">
<li>Assembled - <a href="https://www.sellmyretro.com/offer/details/64260" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64260</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/64257" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64257</a></li>
<li>PCB Only - <a href="https://www.sellmyretro.com/offer/details/64256" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64256</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHKGbLO16nK6cyGzHnKPtbSkmxUUZqdVOSD1O8qlccta0HYFAG9F5a1_zuOhQQPYiAZOfIA26jCF0P1B-DIAUaTEVpULUb_YMnME0M9woVMSAhcLDbqGR5AGuFMniTJcQGNq2T8C9oG9bqj56pWNCRoMO6OEtphmqu0UEPQmef5MVMJpllhJd57mO1f0gm" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHKGbLO16nK6cyGzHnKPtbSkmxUUZqdVOSD1O8qlccta0HYFAG9F5a1_zuOhQQPYiAZOfIA26jCF0P1B-DIAUaTEVpULUb_YMnME0M9woVMSAhcLDbqGR5AGuFMniTJcQGNq2T8C9oG9bqj56pWNCRoMO6OEtphmqu0UEPQmef5MVMJpllhJd57mO1f0gm=w600-h450" width="600" />
</a>
</div>
<h2>Minstrels and Mini PETs</h2>
<p>Minstrel and Mini PET kits and ready built units are available from my SellMyRetro store.</p>
<ul style="text-align: left;">
<li><a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX=w600-h450" width="600" />
</a>
</div>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<ul style="text-align: left;">
<li><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-56285409920610698652024-02-25T11:25:00.003+00:002024-02-25T11:37:34.509+00:00Commodore PET 2001 Repair Part 2 - IEEE-488 Bus<p>In the previous post, I got the PET 2001 to the stage it was running, and could load from cassette. However, the IEEE-488 port was not working, the usual "?Device not present error".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiem9QP6WMeHqmPLT9xibt2zhapxurN-_bEsNlD08i0JAso1s0UTayBMNyg1ise6z6WOtLzk5FElB-kNdnb-C8WePIPEOMm5RPnJU6h_WNRg-d1peVrpUrUlqo40sYnTIUjBEnhFZzHbxS58TwLpAadNd7xFk_ZZU_-J5enr_oqezd9UNmC_FN5_mLzzjxc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3280" data-original-width="4373" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiem9QP6WMeHqmPLT9xibt2zhapxurN-_bEsNlD08i0JAso1s0UTayBMNyg1ise6z6WOtLzk5FElB-kNdnb-C8WePIPEOMm5RPnJU6h_WNRg-d1peVrpUrUlqo40sYnTIUjBEnhFZzHbxS58TwLpAadNd7xFk_ZZU_-J5enr_oqezd9UNmC_FN5_mLzzjxc=w600-h450" width="600" />
</a>
</div>
<p>As part of some of the other testing, I had already swapped out the easy to replace socketed chips, the 6502, 6520s and 6522 for known working chips, but the problem was still present.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhEZ529GNEaPM-80yIOSx6tIyChc2VQe8UtCTCRiZ9pVv9X9kGKQpqml24OJI84tHtufifed4EEGbAMrdvTMZH_lPKRxQnlPCyGjiKz0LsfdqWOzVWhBEqXwPCrfGA4jir3mEUkRIOJuH7nO0k82gu-x99YKmHSbTOINuEhcFly_SGEYawrL7ceCgnCtlpL" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2754" data-original-width="3672" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhEZ529GNEaPM-80yIOSx6tIyChc2VQe8UtCTCRiZ9pVv9X9kGKQpqml24OJI84tHtufifed4EEGbAMrdvTMZH_lPKRxQnlPCyGjiKz0LsfdqWOzVWhBEqXwPCrfGA4jir3mEUkRIOJuH7nO0k82gu-x99YKmHSbTOINuEhcFly_SGEYawrL7ceCgnCtlpL=w600-h450" width="600" />
</a>
</div>
<p>I was concerned about some rather dubious work that had been done in the past on some of the chips related to the keyboard 6520 and the 6522.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhRAFGWZM6WoqFX5td0oL0ADiMO6lgC1xZsiM_obYVpcmGUu7cWJktibjMX4SWJ5dJEcHOaTg36llc3YcgWLhTvqRXquSuDRgWUygSwERqvj_3f1oFAv5MGAtFnARrB6LYcA5MRewjsvdTWZCAk79BnPh8SXPKg7MO9jnOV9nEdTvjY1PgaE-q2kgR5CW7c" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3144" data-original-width="4192" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhRAFGWZM6WoqFX5td0oL0ADiMO6lgC1xZsiM_obYVpcmGUu7cWJktibjMX4SWJ5dJEcHOaTg36llc3YcgWLhTvqRXquSuDRgWUygSwERqvj_3f1oFAv5MGAtFnARrB6LYcA5MRewjsvdTWZCAk79BnPh8SXPKg7MO9jnOV9nEdTvjY1PgaE-q2kgR5CW7c=w600-h450" width="600" />
</a>
</div>
<p>I was starting to think I was going to have to undo a lot of that work, clean up, repair traces and through hole plating and refit. However, before I tackle any of that, I'd like to check with the IEEE-488 diagnostics board in case it is something else.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjP2wFXt0aE4A0JqpD-cgOFUdHrdFmf-uvxRlNmUIs4cShODtCLJueQP1jXwnFgBt0wEgmZUet3QAyrxdE1ZhFcGYIlP6G5MfYAmtuoDQhcoy-_xVsjGRmzUkNQ8m11pvYxup9Sp132jDyIJc2Arpg_MlA_lZQ0rQdXhpeTghMDoPbF4sSoYR4z3QMJm2aF" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjP2wFXt0aE4A0JqpD-cgOFUdHrdFmf-uvxRlNmUIs4cShODtCLJueQP1jXwnFgBt0wEgmZUet3QAyrxdE1ZhFcGYIlP6G5MfYAmtuoDQhcoy-_xVsjGRmzUkNQ8m11pvYxup9Sp132jDyIJc2Arpg_MlA_lZQ0rQdXhpeTghMDoPbF4sSoYR4z3QMJm2aF=w600-h450" width="600" />
</a>
</div>
<p>This has sixteen LEDs which light to indicate which of the sixteen signals on the bus are currently active (active = asserted = driven low; inactive = not asserted = floats high)</p><p>The first test is to reset the PET, and see the IFC LED lights briefly and then goes out, which it did.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgIYGPAQ1PGC7a0uDLibfVr0Qc8cHA-7tCqz3go2EuanFW3Ms0u7RvgYSTtohPQWw4QJgUPJyLzcnrrBPU6wfYnipGqsFwKPKH5v2C4V08kmzIC9SxvuhHydEAXQ7YoFJzs7UkMc-NPAarSnbED1pvcCkRaIKxpbWLV8vo7EXhkBms77tGNNdzbyLSCrLur" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgIYGPAQ1PGC7a0uDLibfVr0Qc8cHA-7tCqz3go2EuanFW3Ms0u7RvgYSTtohPQWw4QJgUPJyLzcnrrBPU6wfYnipGqsFwKPKH5v2C4V08kmzIC9SxvuhHydEAXQ7YoFJzs7UkMc-NPAarSnbED1pvcCkRaIKxpbWLV8vo7EXhkBms77tGNNdzbyLSCrLur=w600-h450" width="600" />
</a>
</div>
<p>REN is always lit as the PET has this hard wired to ground, so it acts as a sort of power LED. SRQ is not driven, so floats low, and registers as active.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiuDdI6AE6ZmqpMDmSPpLqOJ7JIobJIU5FdSDb7w_pP3Vl_fqbGRXnZNC6PfjcFIIYeQoufiJpaK2ozkDgAw4jzABVIfsFc-YvD0UZYSOysKHAPk0biLjM5a0eOOLyj3LgMxEsfKKN6Bwv7RHUX-aWOCMBfVqW30cjRhny_4kVwBu-efNDdEaWJRZgtlLGx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiuDdI6AE6ZmqpMDmSPpLqOJ7JIobJIU5FdSDb7w_pP3Vl_fqbGRXnZNC6PfjcFIIYeQoufiJpaK2ozkDgAw4jzABVIfsFc-YvD0UZYSOysKHAPk0biLjM5a0eOOLyj3LgMxEsfKKN6Bwv7RHUX-aWOCMBfVqW30cjRhny_4kVwBu-efNDdEaWJRZgtlLGx=w600-h450" width="600" />
</a>
</div>
<p>The IEEE-488 bus is implemented on the PET using two pins for most of the signals, one to write, and one to read. These two signals go to the MC3446 buffer chips, and out to a single pin on the IEEE-488 bus connector.</p><p>The result of this is you can sort of get it to test itself, by writing to the output pins and reading back on the inputs to see if they change. A single bus signal is shown as an example. PB0 writes to the bus via one of the MC3446 drivers, and this is read back though another MC3446 buffer to PA0.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEinn8X7744-PstM9qg6j9xH2dseR6E3ZHtoZ11uYZRs559q0CNWf9Dy9cnYKYfX22NnPo34zeDSqc4Hi4zJP77eMAJ4AOsoDLh6IzAiHZKWOY34dTP5dO9DETZ7H8TQxKzAkF_dg1sN3kii_5A3Ax5EcQDy-bRnFo1AO7OrEIP4w0dYbYSOnnUOKsoVHiIi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="945" data-original-width="1260" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEinn8X7744-PstM9qg6j9xH2dseR6E3ZHtoZ11uYZRs559q0CNWf9Dy9cnYKYfX22NnPo34zeDSqc4Hi4zJP77eMAJ4AOsoDLh6IzAiHZKWOY34dTP5dO9DETZ7H8TQxKzAkF_dg1sN3kii_5A3Ax5EcQDy-bRnFo1AO7OrEIP4w0dYbYSOnnUOKsoVHiIi=w600-h450" width="600" />
</a>
</div>
<p>For more information, see this previous post - <a href="http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html</a></p><p>I got lucky first time.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjKys_9BLcO1Tmt8EWdfoA7--IE2P8Ue23SjfJYAO6RW75JfEQIELFbiXScIshjkJSucg2iEkwJmjteqF5htCQMR89_H5EwcKS34C85dVeNQalwNbslel3PpsXGT9aH8jYxF_MhP-6j5jBirr_rRYPeTuLk3nbNr01LC-n5_ftT0GqaWsAht2YlPKQ1QMrL" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2520" data-original-width="3361" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjKys_9BLcO1Tmt8EWdfoA7--IE2P8Ue23SjfJYAO6RW75JfEQIELFbiXScIshjkJSucg2iEkwJmjteqF5htCQMR89_H5EwcKS34C85dVeNQalwNbslel3PpsXGT9aH8jYxF_MhP-6j5jBirr_rRYPeTuLk3nbNr01LC-n5_ftT0GqaWsAht2YlPKQ1QMrL=w600-h450" width="600" />
</a>
</div>
<p>I wrote all zeroes to the data port, which should have asserted all 8 data signals and lit all 8 green LEDs.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi1drA0yCwWNKfQgcViCeObPn2dg2U8UO1yo3Hqb6O_hT3NhCUFUxdo2eqrqx9a-1MtUyzp1DB7krhPegPCKs3OKP1klo_BOcUEwF7PhU-xfIRPZBC0kGy_N_osiptb8vDyZDHdDtuBjS3blsLVW77YLfmw0lyzzsuedKsViru7QegNNffGD1AwscnbOyGv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3152" data-original-width="4203" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi1drA0yCwWNKfQgcViCeObPn2dg2U8UO1yo3Hqb6O_hT3NhCUFUxdo2eqrqx9a-1MtUyzp1DB7krhPegPCKs3OKP1klo_BOcUEwF7PhU-xfIRPZBC0kGy_N_osiptb8vDyZDHdDtuBjS3blsLVW77YLfmw0lyzzsuedKsViru7QegNNffGD1AwscnbOyGv=w600-h450" width="600" />
</a>
</div>
<p>Four of the LEDs have changed correctly, but the other 4 have not changed.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFXVVSm-UvHkhTTkAKRh8TVYpl-MtaYV3Ezhf4rkBkMAXXVAuHlQm38lnqWDefbOFSI-ISkEmCPkDs6Fhmsftmm4cLxij8w53ccQiJomyVBALCvOAzGXRtUa6v5dlkKWqLFRPRK_fOuMMsOsNRTrsF0ZZIluH6qbCeO3VmCtyVQzdylOCNj71N-rOMCQzG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2734" data-original-width="3647" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFXVVSm-UvHkhTTkAKRh8TVYpl-MtaYV3Ezhf4rkBkMAXXVAuHlQm38lnqWDefbOFSI-ISkEmCPkDs6Fhmsftmm4cLxij8w53ccQiJomyVBALCvOAzGXRtUa6v5dlkKWqLFRPRK_fOuMMsOsNRTrsF0ZZIluH6qbCeO3VmCtyVQzdylOCNj71N-rOMCQzG=w600-h450" width="600" />
</a>
</div>
<p>Completing the cycle confirms the problem, When it should be 0 ($00), it is 32 ($20), and when it should be 255 ($FF), it is 47 ($2F). It is easier to think of these in hex, as that more easily translates to binary. So again, this is showing the lower 4 bits are working correctly, and the upper 4 are stuck with 1111 on the bus and reading back as 0010.</p>
<p>The 2001 has a lovely hand drawn schematic where they clearly ran out of room and had to squash up the last of the signals on the bus.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4f8q9oOgj-WFg0kyNctg0dDEr5j3PUG13ygy2bwK25dXMFhS0Tq5mP9DBtFvLQw-hw1TJTuPtuzrIP90xX4qBL-IqIDERNofSbU-c_eizmZvSt4iawYcztbaL7KwyA2bclYM3A_2vCklV22Gg1kf4QmJBb0hxk99B0SyI0flTsJ3xMdXO8RMaOhU6CRce" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1711" data-original-width="2281" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4f8q9oOgj-WFg0kyNctg0dDEr5j3PUG13ygy2bwK25dXMFhS0Tq5mP9DBtFvLQw-hw1TJTuPtuzrIP90xX4qBL-IqIDERNofSbU-c_eizmZvSt4iawYcztbaL7KwyA2bclYM3A_2vCklV22Gg1kf4QmJBb0hxk99B0SyI0flTsJ3xMdXO8RMaOhU6CRce=w600-h450" width="600" />
</a>
</div>
<p>Looking at the schematic, the four bits that are not working are controlled by the MC3446 at A8, the middle of these three chips. At least two of which appear to have been changed already as none of them match. Based on the soldering, I guess this was long before the other "repair" work that had been done on this board. The four working data lines and control lines use other chips, so it points to that one chip being bad.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiQe10r_TV961owt_K6H1ZrItH0vUbVuomsHTZ58wnSZLUhpG7b1BX4-HMwmvHv5ocsNbV3FB0WsP1BDvQt51CwcCo-692ynlpYvraM_Tsd3UAU73tXts5EcgrNWnpT2jWRmpLNKk_j5xZMBq7OotnlV3Gbl62KooNNZXhd5Kq9sNNHCm62VKyRtBS7CQSq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiQe10r_TV961owt_K6H1ZrItH0vUbVuomsHTZ58wnSZLUhpG7b1BX4-HMwmvHv5ocsNbV3FB0WsP1BDvQt51CwcCo-692ynlpYvraM_Tsd3UAU73tXts5EcgrNWnpT2jWRmpLNKk_j5xZMBq7OotnlV3Gbl62KooNNZXhd5Kq9sNNHCm62VKyRtBS7CQSq=w600-h450" width="600" />
</a>
</div>
<p>I double checked with the 'scope. The signals on all 8 bits were changing on the output of the 6520, and the other MC3446s, just nothing on the middle MC3446.</p>
<p>I went through the other signals, and all the other signals were responding correctly.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEguGY_qqmXxjp1ULc9dLjuksu_8bUy174ak1mDSmhiViv68mD3GGKZ6JfNkalQvwiVSRAUNlm0dOg6MeqtkHIqxIFaEwdT_iTwU2VEeFV4tjQWAceuvxFLz4D56odEe4vNPN6RIgI082uPHNVJVGaQx-bM-uuW6sbY6quF9VLjOx3gMTiGy0Q6I9TLZx57w" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3193" data-original-width="4258" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEguGY_qqmXxjp1ULc9dLjuksu_8bUy174ak1mDSmhiViv68mD3GGKZ6JfNkalQvwiVSRAUNlm0dOg6MeqtkHIqxIFaEwdT_iTwU2VEeFV4tjQWAceuvxFLz4D56odEe4vNPN6RIgI082uPHNVJVGaQx-bM-uuW6sbY6quF9VLjOx3gMTiGy0Q6I9TLZx57w=w600-h450" width="600" />
</a>
</div>
<p>IFC couldn't be lit with the rest as that is driven from the reset line (and has been previously verified).</p>
<p>(note EOI out is used on the 2001 to also control video blanking, so when it is active like this, it disables the video until you deactivate EOI or reset the PET)</p>
<p>Time for a new MC3446. I don't have many of these left. Hope I don't have too many more faulty PETs to deal with.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgGsPOcYvfgUYKqEe1pVsClkr0gy5nNG3xKheis1BimUoGH5Xe6Kg5IMbH9J0zhCQFjNCCZCzOmOFqBEjPXzNf0DLZiciJHgCAh8jcv8HpcQCKV0NkhOQcE0mI92MJqaOulqFrBr5MsOm5JrmrBRRmuLEPgTHRAh4N1kB_iJ7RiKfTLXGu549Ihg694y5wy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2057" data-original-width="2742" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgGsPOcYvfgUYKqEe1pVsClkr0gy5nNG3xKheis1BimUoGH5Xe6Kg5IMbH9J0zhCQFjNCCZCzOmOFqBEjPXzNf0DLZiciJHgCAh8jcv8HpcQCKV0NkhOQcE0mI92MJqaOulqFrBr5MsOm5JrmrBRRmuLEPgTHRAh4N1kB_iJ7RiKfTLXGu549Ihg694y5wy=w600-h450" width="600" />
</a>
</div>
<p>And it is possible to replace it without damaging traces or wrecking the board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiuayN9KCVoDIEvezQeyGyWxCGRzbvu-jMmS1aLQv0lWhRQG3VHeWDeU7XxFJa5OLMrjQZ6i3DIgGakDOXa4k_O2BColGo9qwwJyEztD60DBqtrBc0wKoUN_QOFNTtbvfrozdlkQaNURePlCnj35X79AM3oIGj7cYZwwaY1Sub9vYXEliJwSJJfGG56vRtm" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiuayN9KCVoDIEvezQeyGyWxCGRzbvu-jMmS1aLQv0lWhRQG3VHeWDeU7XxFJa5OLMrjQZ6i3DIgGakDOXa4k_O2BColGo9qwwJyEztD60DBqtrBc0wKoUN_QOFNTtbvfrozdlkQaNURePlCnj35X79AM3oIGj7cYZwwaY1Sub9vYXEliJwSJJfGG56vRtm=w600-h450" width="600" />
</a>
</div>
<p>Everything seems to be still intact.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhi9YuKtsQkd3BFomBaqzwL-z2n6jp3DyYZTQwZsCi8N4uKEWASWsVBDI1M6alHHGW60x5fPTJlObLkYjSZyPPSiVtFv0Tl0txKy058-QS-U3VwlnM8iPGOVYZ-L0eMtklVUtv5aVPzjMlTY8Pv220FOzUzgOZayb8VCKMkKgiLyWbzutMYmB7j3pzGAvRg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2761" data-original-width="3681" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhi9YuKtsQkd3BFomBaqzwL-z2n6jp3DyYZTQwZsCi8N4uKEWASWsVBDI1M6alHHGW60x5fPTJlObLkYjSZyPPSiVtFv0Tl0txKy058-QS-U3VwlnM8iPGOVYZ-L0eMtklVUtv5aVPzjMlTY8Pv220FOzUzgOZayb8VCKMkKgiLyWbzutMYmB7j3pzGAvRg=w600-h450" width="600" />
</a>
</div>
<p>Time to repeat the tests.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhMTNr66OChe26l1D7FlKnM4JOdJBwLidzIfNbhZModYnvG1CSxQNLE21NSr0AB_rvwV53oFqGCQDIjDZC2XFD6CHWkkOGkwdNti2rDVPqWq-VV2ozfAx47PFP02Wj2BGFI83AOtQM9fB8lINxEIoYdBzzSX6qI5SG4k9jmi22sVI7CkbpgjBrUQj7AG8KA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2112" data-original-width="2816" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhMTNr66OChe26l1D7FlKnM4JOdJBwLidzIfNbhZModYnvG1CSxQNLE21NSr0AB_rvwV53oFqGCQDIjDZC2XFD6CHWkkOGkwdNti2rDVPqWq-VV2ozfAx47PFP02Wj2BGFI83AOtQM9fB8lINxEIoYdBzzSX6qI5SG4k9jmi22sVI7CkbpgjBrUQj7AG8KA=w600-h450" width="600" />
</a>
</div>
<p>And there we go, all data bits responding correctly.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjDO6BumNiLJ-jUIXVop-YnXRwCRwL8vgYblzZhlkrH0GCOE5iS1axCjJa5BQhfO8_odTDO7gKPyPtW02Egp9R4eG4bUjma2oWwF6nkQigva6vttYD9NNPpC-AV5r-z-isqqvuUyOtXs_MKz1AgOThnB-VH2G4WF5cOKVAsa3rhdqqMjtsvA3BlFktGzhzc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjDO6BumNiLJ-jUIXVop-YnXRwCRwL8vgYblzZhlkrH0GCOE5iS1axCjJa5BQhfO8_odTDO7gKPyPtW02Egp9R4eG4bUjma2oWwF6nkQigva6vttYD9NNPpC-AV5r-z-isqqvuUyOtXs_MKz1AgOThnB-VH2G4WF5cOKVAsa3rhdqqMjtsvA3BlFktGzhzc=w600-h450" width="600" />
</a>
</div>
<p>Time to try an SD2PET.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgoxvfjcljprtQEIHoNBHvr0y13W04qpdNj1CJMuc1UChP1kaudiwQFpB_GP3jWlFl1mIDMMraQw1B8a9awqNmjwALVlV1wEAKkZC0utuPNnwBHehKTGtPjhMdWJMqp83O0a7bnc8qWbHfcirZN0wKtoD4z2FDeMbcXJk-9RU942Vu6ADSa4ONZTaIH-3Pc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3578" data-original-width="4771" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgoxvfjcljprtQEIHoNBHvr0y13W04qpdNj1CJMuc1UChP1kaudiwQFpB_GP3jWlFl1mIDMMraQw1B8a9awqNmjwALVlV1wEAKkZC0utuPNnwBHehKTGtPjhMdWJMqp83O0a7bnc8qWbHfcirZN0wKtoD4z2FDeMbcXJk-9RU942Vu6ADSa4ONZTaIH-3Pc=w600-h450" width="600" />
</a>
</div>
<p>Always fun to see all the LEDs flashing away when things load.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgv7ugTYQCn8BWV80st8Fqm25Z6m20LR4vVkQnL4hcwnRq51BlgOUh7Cy8MxA2vkiyjSK2DQIebPZSMouy9hB8i8f5OZvTi5ayXJkawOl397IMXH9oO4A3BOOKwhisK03gbVulHdlhBMeSpp4T_ZfyVNzXuwQnDpX0TyJyiJTj8xU4-45eFpSnt1GBVHjBG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3192" data-original-width="4256" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgv7ugTYQCn8BWV80st8Fqm25Z6m20LR4vVkQnL4hcwnRq51BlgOUh7Cy8MxA2vkiyjSK2DQIebPZSMouy9hB8i8f5OZvTi5ayXJkawOl397IMXH9oO4A3BOOKwhisK03gbVulHdlhBMeSpp4T_ZfyVNzXuwQnDpX0TyJyiJTj8xU4-45eFpSnt1GBVHjBG=w600-h450" width="600" />
</a>
</div>
<p>And this time I loaded Invaders.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjKRHy3CdXAIjB82uyRkRNUtMV9nx8_0O-lnEOoJw0S_SSpYrxhJqcMKsqr-wfR8IQiRwkdnf939lvifQnpQ-Eubmo4UeVILr7yTELIf0npI7r6ad9ZmZgRrt6Ht9DFntde5xv1xbLJWW4r72YYvXffYq4kd6nz35-qXeI5nGJ-beGFGrH0QpnLDiPCKnrK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2629" data-original-width="3505" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjKRHy3CdXAIjB82uyRkRNUtMV9nx8_0O-lnEOoJw0S_SSpYrxhJqcMKsqr-wfR8IQiRwkdnf939lvifQnpQ-Eubmo4UeVILr7yTELIf0npI7r6ad9ZmZgRrt6Ht9DFntde5xv1xbLJWW4r72YYvXffYq4kd6nz35-qXeI5nGJ-beGFGrH0QpnLDiPCKnrK=w600-h450" width="600" />
</a>
</div>
<p>That all seems to be working.</p>
<p>This was with a variety of replacement parts, time to put all the originals (or nearest we have) back.</p><p>Original 6520 reinstalled. Still working.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhYd3OBE7nFIpH1BFxJB5RyZdr3WX7VDCFIN49i6RQJd7xXbQE68b7I814CXUd53SCmIQtxD8VLdX4P5LhChW6XFpJahHENRL05QHK8RbHUJBLtbqjLK789ewkxG1650hfgkDfZR0VMdRFEG3ORmHq_xk_SI3T5zwP5DHBzB_lgflJTVd7Ode5_mOoKRNWl" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhYd3OBE7nFIpH1BFxJB5RyZdr3WX7VDCFIN49i6RQJd7xXbQE68b7I814CXUd53SCmIQtxD8VLdX4P5LhChW6XFpJahHENRL05QHK8RbHUJBLtbqjLK789ewkxG1650hfgkDfZR0VMdRFEG3ORmHq_xk_SI3T5zwP5DHBzB_lgflJTVd7Ode5_mOoKRNWl=w600-h450" width="600" />
</a>
</div>
<p>Non-original Synertek 6522 reinstalled. Still working.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg1dk8o8WbACR5v31FZZfEBnsfRrnNNo7_pjbF8_oLLQ6QtYO-j_fJ_YULHJLz9XuEZqbZIO-K09k7XzwhEg4uP5jS1ujcuzxHipOJjQ7zncIjXBxPJvpM7HuR7hGjxnjS06JOavFfshXBg1fqpRrA_aY1VngXtF4OBdMs-WtMNn6fsIUGNveRIJDmguFl2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg1dk8o8WbACR5v31FZZfEBnsfRrnNNo7_pjbF8_oLLQ6QtYO-j_fJ_YULHJLz9XuEZqbZIO-K09k7XzwhEg4uP5jS1ujcuzxHipOJjQ7zncIjXBxPJvpM7HuR7hGjxnjS06JOavFfshXBg1fqpRrA_aY1VngXtF4OBdMs-WtMNn6fsIUGNveRIJDmguFl2=w600-h450" width="600" />
</a>
</div>
<p>Non-original MC6821 (or whatever it was before it was remarked) reinstalled. Still working.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjMmnMLxSmvVquTBOYJTd_Z-fTeirVKph2hykXlkXMkxWwjAaK2KTa6hpyKoJXEB6hQJ_atsAOw683NMpue1gG-kF14_jq0MDkFCQyF4iI0t58Jzy-f-3gBLiPnpXv5FGfEbbHuB0rHrAiGDyXgFGF-G_5SNybCDdIsNKkkJjtoLd4Uxw6EKoAA2hFckLup" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjMmnMLxSmvVquTBOYJTd_Z-fTeirVKph2hykXlkXMkxWwjAaK2KTa6hpyKoJXEB6hQJ_atsAOw683NMpue1gG-kF14_jq0MDkFCQyF4iI0t58Jzy-f-3gBLiPnpXv5FGfEbbHuB0rHrAiGDyXgFGF-G_5SNybCDdIsNKkkJjtoLd4Uxw6EKoAA2hFckLup=w600-h450" width="600" />
</a>
</div>
<p>Fake 6502 (or also whatever it was before it was remarked) reinstalled and still working.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjqUrQhfFbF4U-MOPK0u1xoH01m0BSopITxzYyVLREnFqPzBWr5OrKqMyim3x2fWGXpJPe3-6Sy8k4ay5rzJm-FnbsfPEPiBm9WXw_mP8itsika2Iqc4DGOcrorDG7f6qe2OZcGi7ljIX5ZuKOc6wJuEnvBExuGV3o61pF9w76Arn0w5rNHZuuLXfyqjIIF" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjqUrQhfFbF4U-MOPK0u1xoH01m0BSopITxzYyVLREnFqPzBWr5OrKqMyim3x2fWGXpJPe3-6Sy8k4ay5rzJm-FnbsfPEPiBm9WXw_mP8itsika2Iqc4DGOcrorDG7f6qe2OZcGi7ljIX5ZuKOc6wJuEnvBExuGV3o61pF9w76Arn0w5rNHZuuLXfyqjIIF=w600-h450" width="600" />
</a>
</div>
<p>I am leaving the PET ROM/RAM in place as the original ROMs had failed and there is no more than about 4K of working 6550 RAM chips.</p>
<p>Speaking of which, the last thing to be replaced were two working 6550 RAM chips for the video RAM, scavenged from the main RAM.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5xvlakKbgIgg9etxXnqLLkIA3OPTESgo0tog6BpTHpJp9s6xzInFM9ZNPp3zPra65yRk2w12zR-AYSGZLyC9F8T_B0Ooc8_-NRU0QYcSorLQ68zNNSBIjwKugyXSMQ1vhoZod8hg2d4ktHn_6uPilr2CSLr2XzCBl7-IBmsydxWYJbdzQjuEu0vvmn4FK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5xvlakKbgIgg9etxXnqLLkIA3OPTESgo0tog6BpTHpJp9s6xzInFM9ZNPp3zPra65yRk2w12zR-AYSGZLyC9F8T_B0Ooc8_-NRU0QYcSorLQ68zNNSBIjwKugyXSMQ1vhoZod8hg2d4ktHn_6uPilr2CSLr2XzCBl7-IBmsydxWYJbdzQjuEu0vvmn4FK=w600-h450" width="600" />
</a>
</div>
<p>And that is everything back in place. Time for some more testing, a quick bit of Tut-Tut.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgrP-sbAeJOv4dwhCfbbjBGUaAdHnTejzmJXMVNLBPFmQ0zZP7u6m8L5kYUBi0hwlD0NbDZGPE93RuHqcRQ21EjCdVeTR9cMZeksMIlYlAOVV2JTFkwm9nXnE-QBgeHVRCLor5eDRDaP1tPOn1th2D7xEvN60n0xChWxhvVCygafnBHhhFHESLrYNwOLjH7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3128" data-original-width="4171" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgrP-sbAeJOv4dwhCfbbjBGUaAdHnTejzmJXMVNLBPFmQ0zZP7u6m8L5kYUBi0hwlD0NbDZGPE93RuHqcRQ21EjCdVeTR9cMZeksMIlYlAOVV2JTFkwm9nXnE-QBgeHVRCLor5eDRDaP1tPOn1th2D7xEvN60n0xChWxhvVCygafnBHhhFHESLrYNwOLjH7=w600-h450" style="cursor: move;" width="600" />
</a>
</div>
<p>Everything seems to be working now, so I will give that a bit more testing and then it is ready to go back...........</p>
<p>Hmmmm, I don't remember spikes on the walls in 3D Monster Maze.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3FfS4JUihZctgrExO_e9WzeBE2WHb7Rh80ZgGBZAfVmBA2hhHjV0AcTx0vHrOvULEeJm14URDrnkZZ0dBTvBXkGQzbiouIZ6IypTfQW3662-sGNrkO0C8WQPkCUhdpkCcmTUNpBoVw_hzKBPK2ijG8a1Jbw2ziEfXDmg9VcFX6ZTI7WQe6X7mzcEfO6gK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3FfS4JUihZctgrExO_e9WzeBE2WHb7Rh80ZgGBZAfVmBA2hhHjV0AcTx0vHrOvULEeJm14URDrnkZZ0dBTvBXkGQzbiouIZ6IypTfQW3662-sGNrkO0C8WQPkCUhdpkCcmTUNpBoVw_hzKBPK2ijG8a1Jbw2ziEfXDmg9VcFX6ZTI7WQe6X7mzcEfO6gK=w600-h450" width="600" />
</a>
</div>
<p>I wired up a new logic analyser I have been testing, to try to verify this is what I think it is (a similar problem to that seen on the Minstrel 2 which is inherent in the ZX80 design).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgdduoJRj8HeqtZnAytg7yFRL-1sCKd3NmiR9jluE0KobSk7IXA5W75b_y_Oa1ib8PktBSFbNAp1q-mkT3i8RcJ89qBg_i0ZqI_fO030oUC7-TeuXRpl121G36la94pHD3CkGTuTr1uF8kqwSNRwYWhpbDsM9mK2P7Y32RKTvUXxR0lTNBoU-AORv33linM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgdduoJRj8HeqtZnAytg7yFRL-1sCKd3NmiR9jluE0KobSk7IXA5W75b_y_Oa1ib8PktBSFbNAp1q-mkT3i8RcJ89qBg_i0ZqI_fO030oUC7-TeuXRpl121G36la94pHD3CkGTuTr1uF8kqwSNRwYWhpbDsM9mK2P7Y32RKTvUXxR0lTNBoU-AORv33linM=w600-h450" width="600" />
</a>
</div>
<p>But it appears it does not want to play ball today.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi8jo4eWRw2-VWzvqFTbfSQkH1aMbX5tDsepGNAQnep_vAwU5RGnDEvdqfS_baBhy1ZAFvKQiEPgcCmRsqxniX2t7yYEmJPXPqxGGDDCjVbzOYrLcah9mdagwO89_l4URarSKCKs4iBW8Yusntyr0ythoU05f-ISA0sGxK61uGpMitFZNzvXwmna1LEzTXM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="109" data-original-width="360" height="180" src="https://blogger.googleusercontent.com/img/a/AVvXsEi8jo4eWRw2-VWzvqFTbfSQkH1aMbX5tDsepGNAQnep_vAwU5RGnDEvdqfS_baBhy1ZAFvKQiEPgcCmRsqxniX2t7yYEmJPXPqxGGDDCjVbzOYrLcah9mdagwO89_l4URarSKCKs4iBW8Yusntyr0ythoU05f-ISA0sGxK61uGpMitFZNzvXwmna1LEzTXM=w600-h180" width="600" />
</a>
</div>
<p>OK, I think there may be a part 3.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh12rX2ebicz02bMdp2Uijo6dLn9EbnQQsXm_G_e8KSrOmrQj3aPhVFkPkXW9wL9dSU1CrZ1b6UUEvxwgWtpm8dA1Y2ELQgn1pZss7pOk_1Q8Y3X1v6JalwBA1iPTdPXvHddQmlftASIDlY6lfk4zTOsFKUli5EPDTVXHalIL7eM2qIiiwDp1_x3xZmAgIN" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="109" data-original-width="407" height="165" src="https://blogger.googleusercontent.com/img/a/AVvXsEh12rX2ebicz02bMdp2Uijo6dLn9EbnQQsXm_G_e8KSrOmrQj3aPhVFkPkXW9wL9dSU1CrZ1b6UUEvxwgWtpm8dA1Y2ELQgn1pZss7pOk_1Q8Y3X1v6JalwBA1iPTdPXvHddQmlftASIDlY6lfk4zTOsFKUli5EPDTVXHalIL7eM2qIiiwDp1_x3xZmAgIN=w600-h165" width="600" />
</a>
</div>
<p>How ironic, back to where we started. "HW_no_device_found", the modern equivalent of "?device not present error".</p>
<hr />
<h2>Advertisements</h2>
<h2>SD2PET</h2>
<div><b>Special offer</b>: There is currently £25 off the SD2PET. This is on backorder, which means TFW8b has all the bits to make more, but they have not yet completed the process of being built, programmed, tested, cased and tested again. But you can order safe in the knowledge that they will be ready to ship shortly. The discount will be removed once they are in stock, so act quick if you want a bargain.</div>
<p><a href="https://www.tfw8b.com/product/sd2pet-commodore-pet/" rel="nofollow" target="_blank">https://www.tfw8b.com/product/sd2pet-commodore-pet/</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgYiIHS_V1Tt33O2OARa3b4q5KgHYy1f5Wpvm6ZZCh7asqmNrCjNVYneGBcTSRT5rRUJFETJGIXXCszAzwODhdh7LbdrZWnK_Q7l7RG5Xc24N3jnLvXqKqcApHHGgiNHRtZpq0A37qh1PEnkHo_kFTUn5P17pkm6-Qwza7bCjw8iDEz6WqxP-RXU0N_JH9C" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="3166" data-original-width="4221" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgYiIHS_V1Tt33O2OARa3b4q5KgHYy1f5Wpvm6ZZCh7asqmNrCjNVYneGBcTSRT5rRUJFETJGIXXCszAzwODhdh7LbdrZWnK_Q7l7RG5Xc24N3jnLvXqKqcApHHGgiNHRtZpq0A37qh1PEnkHo_kFTUn5P17pkm6-Qwza7bCjw8iDEz6WqxP-RXU0N_JH9C=w600-h450" width="600" />
</a>
</div>
<h2>PET ROM/RAM</h2>
<p>As mentioned above, many PET faults are down to bad ROM chips or bad RAM chips, and a PET ROM/RAM chip can often help bypass those. You can order one from The Future Was 8 bit.</p>
<p><a href="https://www.tfw8b.com/product/commodore-pet-rom-ram/" rel="nofollow" target="_blank">https://www.tfw8b.com/product/commodore-pet-rom-ram/</a></p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2022/08/testing-pet-rom-ram-boards.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2022/08/testing-pet-rom-ram-boards.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj8ELeXaYity5sUpDztvv4mBg3Gx-miFjBDXVyrZYYMay2-aA7YkyYhHGeTGhHfvwkmphBijasvuMsn_47BDFxoA9tZfxzXC7-IN7CI8RpTXmhUlEtFQPKHCrGK4yiVJN79XGTIWDgVsKzNwZ_btqt8lFISsyMmjsNIOX6xFaMXM6nQBw-2jBsV3wfy0A" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj8ELeXaYity5sUpDztvv4mBg3Gx-miFjBDXVyrZYYMay2-aA7YkyYhHGeTGhHfvwkmphBijasvuMsn_47BDFxoA9tZfxzXC7-IN7CI8RpTXmhUlEtFQPKHCrGK4yiVJN79XGTIWDgVsKzNwZ_btqt8lFISsyMmjsNIOX6xFaMXM6nQBw-2jBsV3wfy0A=w600-h450" width="600" />
</a>
</div>
<h3>Mini PET B</h3>
<p>Or if you want an easier solution, the Mini PET B is a drop in replacement for a PET / CBM 40 column 32K motherboard.</p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/building-a-mini-pet-b-kit.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/building-a-mini-pet-b-kit.html</a></p>
<p>Mini PET B at SellMyRetro:</p>
<ul>
<li>Built and tested - <a href="https://www.sellmyretro.com/offer/details/63875" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63875</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/63876" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63876</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">PET IEEE-488 Diagnostics</h2>
<p>The PET IEEE-488 Diagnostics module is available from my SellMyRetro store, in assembled or kit form.</p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html</a></p>
<p>PET IEEE-488 Diagnostics module at SellMyRetro:</p>
<ul>
<li>Built and tested - <a href="https://www.sellmyretro.com/offer/details/63989" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63989</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/63987" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63987</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXwwTL_gKT77jHu0uo1XAvPby36Hmzi2-kZypFhw3__Kx37WaPYaji918RKDs-Z2qrMh1Yf9vFmGyaBG8pvUl-FBjixXrBGsqFOOcUyv2Nl7hENRjgK3fn9xARRh8_rrvJgUemojyW8QXsQG6tkT7owEd8goGS0iwjSn2lZdBJpx4VFaUprMkTOocFTgkc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3342" data-original-width="4456" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXwwTL_gKT77jHu0uo1XAvPby36Hmzi2-kZypFhw3__Kx37WaPYaji918RKDs-Z2qrMh1Yf9vFmGyaBG8pvUl-FBjixXrBGsqFOOcUyv2Nl7hENRjgK3fn9xARRh8_rrvJgUemojyW8QXsQG6tkT7owEd8goGS0iwjSn2lZdBJpx4VFaUprMkTOocFTgkc=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">PET Diagnostics</h2>
<p>The PET Diagnostics modules are available from my SellMyRetro store:</p>
<ul style="text-align: left;">
<li><a href="https://www.sellmyretro.com/offer/details/64158" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64158</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgNlzz2fIKeScjtGkRrAGnVtYFHgSy3WELvWhvpuoUqNnotMxJCimNRaTIkV72CZ5oCI2wznQFYBYkkJQhLW8xPF904O2y_ldn6ReWmGoB18jzn5VomnsFqsTK8-6sRfGxaOHK0BzW9_38le4S06MHGP3YkAt57b6zXpgL8c7gM2Bxg7TTXKcit48oBEVe4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2580" data-original-width="3439" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgNlzz2fIKeScjtGkRrAGnVtYFHgSy3WELvWhvpuoUqNnotMxJCimNRaTIkV72CZ5oCI2wznQFYBYkkJQhLW8xPF904O2y_ldn6ReWmGoB18jzn5VomnsFqsTK8-6sRfGxaOHK0BzW9_38le4S06MHGP3YkAt57b6zXpgL8c7gM2Bxg7TTXKcit48oBEVe4=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">PET Dual Userport Joystick</h2>
<p>I have recently revived the PET dual userport joystick, as a through hole version, available from my SellMyRetro store:</p>
<ul style="text-align: left;">
<li>Assembled - <a href="https://www.sellmyretro.com/offer/details/64260" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64260</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/64257" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64257</a></li>
<li>PCB Only - <a href="https://www.sellmyretro.com/offer/details/64256" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64256</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHKGbLO16nK6cyGzHnKPtbSkmxUUZqdVOSD1O8qlccta0HYFAG9F5a1_zuOhQQPYiAZOfIA26jCF0P1B-DIAUaTEVpULUb_YMnME0M9woVMSAhcLDbqGR5AGuFMniTJcQGNq2T8C9oG9bqj56pWNCRoMO6OEtphmqu0UEPQmef5MVMJpllhJd57mO1f0gm" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHKGbLO16nK6cyGzHnKPtbSkmxUUZqdVOSD1O8qlccta0HYFAG9F5a1_zuOhQQPYiAZOfIA26jCF0P1B-DIAUaTEVpULUb_YMnME0M9woVMSAhcLDbqGR5AGuFMniTJcQGNq2T8C9oG9bqj56pWNCRoMO6OEtphmqu0UEPQmef5MVMJpllhJd57mO1f0gm=w600-h450" width="600" />
</a>
</div>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-72044140034388402232024-02-18T11:51:00.002+00:002024-02-18T11:57:14.333+00:00Commodore PET 2001 Repair - Part 1<p>Here we have a PET 2001 board in for repair.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhqXB54vamgfhKDzUJSys1jfXzG5vlVEJBbDc-ZK4fQI6iBQa__LYUYxO_DJ0M468-LPS_meh3-03C9yAN1pUue9SLOguX2C3VJz1wPnEqmCqkmAzVw7huhcB7xR1uZYh06VfntN8VjC7RriZWFHZHKobwjIvWz5ELW30PmJMyUtXZxwTA7Vk8-eAdjHygi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhqXB54vamgfhKDzUJSys1jfXzG5vlVEJBbDc-ZK4fQI6iBQa__LYUYxO_DJ0M468-LPS_meh3-03C9yAN1pUue9SLOguX2C3VJz1wPnEqmCqkmAzVw7huhcB7xR1uZYh06VfntN8VjC7RriZWFHZHKobwjIvWz5ELW30PmJMyUtXZxwTA7Vk8-eAdjHygi=w640-h480" width="640" />
</a>
</div>
<p>This one has been in use for a year or so with a PET ROM/RAM board, and all the system ROM chips removed, and I am told it had been running fine.</p>
<p>Then one day it stopped working, the symptom being nothing on the screen, no raster with brightness turned up full. It also made odd noises from a piezo attached to the userport just before it failed.</p>
<p>I talked the user through trying a few things out, like removing and finally swapping the 6520 chips, and also removing the RAM chips, which had been left in place, even though they were being replaced by the RAM on the ROM/RAM board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEixygH7mcKzf0q-dzC35LU9d3P9jnslE_IQ2U9AgmtUSnw_6DFhc4N4QVGTkdxF0_Kz1qeiVcqJ3wt83ucI-obwE1jFI8CloEgB_hOCcTT-qnT9NkYproTbsHX5ynooKxsNASJUDBRBR2R-ovMAx75cfzDiqzr5c8IzqYUQtMdwFLxpPObhUk9qhopv_zUO" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEixygH7mcKzf0q-dzC35LU9d3P9jnslE_IQ2U9AgmtUSnw_6DFhc4N4QVGTkdxF0_Kz1qeiVcqJ3wt83ucI-obwE1jFI8CloEgB_hOCcTT-qnT9NkYproTbsHX5ynooKxsNASJUDBRBR2R-ovMAx75cfzDiqzr5c8IzqYUQtMdwFLxpPObhUk9qhopv_zUO=w640-h480" width="640" />
</a>
</div>
<p>None of these simple tests seemed to help, so it was sent to me to investigate further. I asked for the RAM to be included (<i>is it foreshadowing when you guess the fault before the board is sent in?</i>), and the sender realised as soon as they posted the board that they had put the chips in upside down. Not a problem, as I was planning to remove them before powering on anyway.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgVJuZmfSSiKsxrG_51SpaOLWqo0015eLPTcK0C9LqzVWzWLDeLnGn-TQEPjqqzV4LMMPa2ws6yEsAOJychp6Y-qMB5LIt4NEWDWJRwnEbzf-If_6qtcINjiRHG_TRkUe-B0OPqNoktXLFAl6lbdMN_2dcc_WzuQBbDB71dqayBJp-PpgnnmM2fOiO9rE8h" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgVJuZmfSSiKsxrG_51SpaOLWqo0015eLPTcK0C9LqzVWzWLDeLnGn-TQEPjqqzV4LMMPa2ws6yEsAOJychp6Y-qMB5LIt4NEWDWJRwnEbzf-If_6qtcINjiRHG_TRkUe-B0OPqNoktXLFAl6lbdMN_2dcc_WzuQBbDB71dqayBJp-PpgnnmM2fOiO9rE8h=w640-h480" width="640" />
</a>
</div>
<p>Two of the same type of chips are used for video RAM, so it is useful to have spares around. With the ROM/RAM board replacing main RAM, it just needs 2 of the 18 chips present to work</p>
<p>The two chips installed are different. One is dated 1978 which matches the rest of the board, so there must have been problems in 1981 or later when the second chip was fitted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjdi61glaZNC_f4EgI72Z2oCdhF_wP5sXM4ZpF0HxTdl4x03tWOChr6Itg8Wt2cW8fGnrXNL_qhjN7wgOqouHmQeCzAu-1sf32Xup1l7mFQMMFnHsa87QULkDFhnx4WXGMhGAB8ZACy7Rd8bnrlxkRnV7_b80N7VZS3kdYSlt-2pu_XsP0L1dOHKRG9p3LH" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3133" data-original-width="4177" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjdi61glaZNC_f4EgI72Z2oCdhF_wP5sXM4ZpF0HxTdl4x03tWOChr6Itg8Wt2cW8fGnrXNL_qhjN7wgOqouHmQeCzAu-1sf32Xup1l7mFQMMFnHsa87QULkDFhnx4WXGMhGAB8ZACy7Rd8bnrlxkRnV7_b80N7VZS3kdYSlt-2pu_XsP0L1dOHKRG9p3LH=w640-h480" width="640" />
</a>
</div>
<p>Hmm, the board does seem a little banana shaped, hopefully nothing has delaminated or been damaged.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhesasu_igAyzaoyrNk1c1cWHnaHtKVrXcN59HQ4e5Yl3Q8IKG-7Mu9kwp4XdO7vCCYXlxPz1rEbnPJg3eA8c-NeRk9JsqzqgQdEu5MeQr5_h5nxeiRQDv9h8M24bhl4Bw6qYfKn8kT0wz08GaNDlcKGJPJoKNEoqNRRp-XoYBQFoNmXTHs7gW_tYxdwOPj" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhesasu_igAyzaoyrNk1c1cWHnaHtKVrXcN59HQ4e5Yl3Q8IKG-7Mu9kwp4XdO7vCCYXlxPz1rEbnPJg3eA8c-NeRk9JsqzqgQdEu5MeQr5_h5nxeiRQDv9h8M24bhl4Bw6qYfKn8kT0wz08GaNDlcKGJPJoKNEoqNRRp-XoYBQFoNmXTHs7gW_tYxdwOPj=w640-h480" width="640" />
</a>
</div>
<p>I may have to raise questions with a C. Armstrong - test and inspection or quality control?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh5vuYJFpo2GORRFkcFtHhmmp9rzPHwITN3jvGFhvmvURCAUWKEzAzBbwmgHLABfVj5utheunU-KsTtjOHAjYHwXkpOFyGcnmHIzfxhAS2NkYDcoZJ1UAyhiXLSZ-1BSZJcj2MCmR-J3WEySqmOpOqNhOx72td9Y74yaeg0uRv4zzHWZcPM3t_ryo79-odg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEh5vuYJFpo2GORRFkcFtHhmmp9rzPHwITN3jvGFhvmvURCAUWKEzAzBbwmgHLABfVj5utheunU-KsTtjOHAjYHwXkpOFyGcnmHIzfxhAS2NkYDcoZJ1UAyhiXLSZ-1BSZJcj2MCmR-J3WEySqmOpOqNhOx72td9Y74yaeg0uRv4zzHWZcPM3t_ryo79-odg=w640-h480" width="640" />
</a>
</div>
<p>And then the alarm bells begin to ring.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhSQoCMwItae865i2Pl8iNVCToUoFJZxqIkEHAAmeHko5bhNAkf4ycY6Rpmxjx8XUZGQrcBmMmGc3YMOsev0viCvFkvUdInUQcPjQalpz6VEvm9Lbm6yhEBZ-sO0sOLPVcDVbQORtplsDHLQSkLJWiCt28SG4he0PO6g4yCFVws4OBk2X1HXlIJKfFGr1pr" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2450" data-original-width="3267" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhSQoCMwItae865i2Pl8iNVCToUoFJZxqIkEHAAmeHko5bhNAkf4ycY6Rpmxjx8XUZGQrcBmMmGc3YMOsev0viCvFkvUdInUQcPjQalpz6VEvm9Lbm6yhEBZ-sO0sOLPVcDVbQORtplsDHLQSkLJWiCt28SG4he0PO6g4yCFVws4OBk2X1HXlIJKfFGr1pr=w640-h480" width="640" />
</a>
</div>
<p>So that chip has been replaced, and a new socket fitted. Odd since it would have been socketed originally. And oh dear, what has happened to the trace to the left of the chip? Seems to have been lifted and twisted around. Not a good start.</p>
<p>Also, the sticker says 6520, but what lurks beneath?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgb9PeK_SSzruhfurMnqtJGxx5mVD7gx6AoKur1DeZG8o7HIzInBK-PxKi8pnc3_F_RT0MWdlD4L3mBGhfOIZdCg1l02jyGyUFKUfYuHi4CkwIfAhbrJJj4OzSYMoVL6l1bxmfK-a2ddno3ChRJ3nVoi1ZHwGFEzDa4KtDj7_tTo3la7X1iTT1XctwJS_q5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3480" data-original-width="4640" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgb9PeK_SSzruhfurMnqtJGxx5mVD7gx6AoKur1DeZG8o7HIzInBK-PxKi8pnc3_F_RT0MWdlD4L3mBGhfOIZdCg1l02jyGyUFKUfYuHi4CkwIfAhbrJJj4OzSYMoVL6l1bxmfK-a2ddno3ChRJ3nVoi1ZHwGFEzDa4KtDj7_tTo3la7X1iTT1XctwJS_q5=w640-h480" width="640" />
</a>
</div>
<p>Ah, it's a 6821. Fair enough, this is functionally compatible with the 6520, so that is OK.</p>
<p>Ah, but is it an MC6821? It has clearly been blacktopped and laser etched with an unlikely date code of 30th week 2019, for a chip that probably went out of production in the 1990s. (<i>edit, last buy date 4th September 1999, later than I had expected, but 20 years before the fake date code</i>)</p>
<p>So it could be anything, but hopefully something vaguely compatible.</p><p>On that subject, the 6502 has also been black topped and laser etched, so again, no idea what that was, but the package doesn't look like a MOS chip. At least the date code is reasonable, although unlikely to be related to whatever that chip originally was.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgZ3MbY6CK8ljU-7nHEY57rWE0GDt6xakZD6V8b5cUPscGWvHVUh1BRFPmOpy6b4r37P70mqDePfkZn5YrkrVBCbdS5gCe-9birHlG34oB5sZCg1KMo0YETKrMMjS8KFO_1E0GJ_0n8YVAgH8ewuDGjqls3ApRaQ9qu5FLvVeeFBGQ9EeJvAno-uLQv6rrE" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3420" data-original-width="4560" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgZ3MbY6CK8ljU-7nHEY57rWE0GDt6xakZD6V8b5cUPscGWvHVUh1BRFPmOpy6b4r37P70mqDePfkZn5YrkrVBCbdS5gCe-9birHlG34oB5sZCg1KMo0YETKrMMjS8KFO_1E0GJ_0n8YVAgH8ewuDGjqls3ApRaQ9qu5FLvVeeFBGQ9EeJvAno-uLQv6rrE=w640-h480" width="640" />
</a>
</div>
<p>And then I turned the board over...............</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjSa4aPGKAdMBXWgGFR61huQBXB0kIEUY6yLy_HXC9YpyXRBgOBumlFWUSHq_5j-RhLVZOIp4YYLS1pMzeDe_PjtdSOu2NxmdeB1txvMicHZPQvcSaptqEluc0zC0L0rmgV_-Tocm4rhH5hE671riG9SUrBAJikytO-x6Or1nilvEVAhOoVgEXcCFgvV-IJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2742" data-original-width="3656" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjSa4aPGKAdMBXWgGFR61huQBXB0kIEUY6yLy_HXC9YpyXRBgOBumlFWUSHq_5j-RhLVZOIp4YYLS1pMzeDe_PjtdSOu2NxmdeB1txvMicHZPQvcSaptqEluc0zC0L0rmgV_-Tocm4rhH5hE671riG9SUrBAJikytO-x6Or1nilvEVAhOoVgEXcCFgvV-IJ=w640-h480" width="640" />
</a>
</div>
<p>Oh dear. This board has had quite a lot of work done, and some of it looks a little worrying.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEikiZr5Dp_2BH8bnJ1AqWY-yv_aXV4VpByEJ_3v90dPCJcGFtusm0qfYJ3Gaz12Q5ehexJfkUZAp9wz8GdcLZs-UiYwpf-4jJ1_AwugiQ8xXCYXuB842YmHeUKoEeHcDl6if6cbfY6B6Brxn7Yfcjj7PANBX326vrRoZVZ8xxB5kUEiUva94aBqMIsvmLlj" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2604" data-original-width="3472" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEikiZr5Dp_2BH8bnJ1AqWY-yv_aXV4VpByEJ_3v90dPCJcGFtusm0qfYJ3Gaz12Q5ehexJfkUZAp9wz8GdcLZs-UiYwpf-4jJ1_AwugiQ8xXCYXuB842YmHeUKoEeHcDl6if6cbfY6B6Brxn7Yfcjj7PANBX326vrRoZVZ8xxB5kUEiUva94aBqMIsvmLlj=w640-h480" width="640" />
</a>
</div>
<p>Well, it was working, so hope I can just leave that alone. I would like to remove the socket, repair the tracks and replace, but there are about 8 chips that have been replaced like this, so it is a lot of work. Will check with the owner if they want the full works, or replace the board and try to forget about it.</p>
<p>Until I try to sleep and those images haunt my nightmares......</p>
<p>For the first test, I removed the ROM/RAM board and left the CPU socket empty. One neat trick of the PET 2001 (and the rest of the non-CRTC PETs) is that it will display something on the screen even if there is no CPU.</p>
<p>I used a PET composite video board to get a composite signal form the monitor connector.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhLxNj5jsq8EDHh8Y6zLuD6-VUS3HrT8GtfuCxPyB1cGOQ3UllJ9w1JnjT8iMbMArLvqjy-dKn6TRwxSLsmMY-82uFeFIazfv2dNEa9l08_7imaPQxKFDqCD896CSYd3O3uxRHneRYF26-4ZkoZXBKRq_AJCnHccybJ4vF4CynDF4HhUljGQEDojQyO5N2U" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhLxNj5jsq8EDHh8Y6zLuD6-VUS3HrT8GtfuCxPyB1cGOQ3UllJ9w1JnjT8iMbMArLvqjy-dKn6TRwxSLsmMY-82uFeFIazfv2dNEa9l08_7imaPQxKFDqCD896CSYd3O3uxRHneRYF26-4ZkoZXBKRq_AJCnHccybJ4vF4CynDF4HhUljGQEDojQyO5N2U=w640-h480" width="640" />
</a>
</div>
<p>Hmm, OK, that's unusual, you normally get a screen full of random characters, not just one, but I have seen that before with 6550 video RAM.</p>
<p>I think that is character $F4? If anything, I would expect $FF.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgI5_wr63sSqSXI7tRu9ECk0vM0Z8g3PDZjWH3Nr7OH5Dzo6X8htAeoAmvjmxp1c7ijNq4Td_Oz2VzqxbtOmu82fUpYIQFcEqhQNV_ESq-ZNAwV3P8da_5e_ivQlRqmtTDhC1gvE_zzxDI7GGR3NAwkOpYLbdUQy6N16FJ7qjzIDRl68tPSOLfsWRp3ZO3u" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgI5_wr63sSqSXI7tRu9ECk0vM0Z8g3PDZjWH3Nr7OH5Dzo6X8htAeoAmvjmxp1c7ijNq4Td_Oz2VzqxbtOmu82fUpYIQFcEqhQNV_ESq-ZNAwV3P8da_5e_ivQlRqmtTDhC1gvE_zzxDI7GGR3NAwkOpYLbdUQy6N16FJ7qjzIDRl68tPSOLfsWRp3ZO3u=w640-h480" width="640" />
</a>
</div>
<p>No change when the PET ROM/RAM and CPU were reinstalled. Could be bad video RAM.</p>
<p>Next test was to remove the video RAM chips.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhmNi53wHtJ90SppyL-p-O-U_b7mnJpPqLP_HIqfBUdV-6xooMtml6vbjEudfw0SRhYOFP5MUVQDP0L97rjQxTYo1VihbmsEPaxhLA4mbPG_ra4ctRsfjGER46RnT5Ogn45M9EiNl-DSlvxJKxyWr9jfL9rDVICv1RI7groBrFV0ycupUsTo9eSM64YWCjV" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhmNi53wHtJ90SppyL-p-O-U_b7mnJpPqLP_HIqfBUdV-6xooMtml6vbjEudfw0SRhYOFP5MUVQDP0L97rjQxTYo1VihbmsEPaxhLA4mbPG_ra4ctRsfjGER46RnT5Ogn45M9EiNl-DSlvxJKxyWr9jfL9rDVICv1RI7groBrFV0ycupUsTo9eSM64YWCjV=w640-h480" width="640" />
</a>
</div>
<p>Ah, that's good, that is what it should do. Character $FF is the chequerboard / goth batterburg character.</p>
<p>I dropped in a 6550 video RAM replacement board into the video RAM sockets.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiyZpAh5S1-jVk_GkrFd2I7g79vpv9rd8UB5Bkq0HE41hT-MC4EtqrK81JylHZZApc6unQamrfX3RCiEmInTlim5r8XArXBwQ4GlDSu0Emz4YNexHDjgxJKHcmbIpPSuvrSK83Hw7dRKX53qyGWCPrJgDjiYLluQAp2yAYIRGPu9CpDHh3GKdgzgyKqywgy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3432" data-original-width="4576" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiyZpAh5S1-jVk_GkrFd2I7g79vpv9rd8UB5Bkq0HE41hT-MC4EtqrK81JylHZZApc6unQamrfX3RCiEmInTlim5r8XArXBwQ4GlDSu0Emz4YNexHDjgxJKHcmbIpPSuvrSK83Hw7dRKX53qyGWCPrJgDjiYLluQAp2yAYIRGPu9CpDHh3GKdgzgyKqywgy=w640-h480" width="640" />
</a>
</div>
<p>That's better. The random characters as expected, and as you normally see for a second or two when you turn a older PET on.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhcl67VcuuLlql3Pj_PPaydmzaexUTZ3vydM_WvLlhKmzStZsS9NyE9st9x3mT4gH64g3AAxW_Tx7qHUxCzpVzkoLESHm-L4Xdt4YsPLjGpD0rO_hsEvUPIdlFO_rRON-jd-e1rHYAZA96teCUdnpjwuV7Ey5Tek4x9f9DaJVnoZMAUkC_1D6dDx_yyOWpl" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3114" data-original-width="4153" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhcl67VcuuLlql3Pj_PPaydmzaexUTZ3vydM_WvLlhKmzStZsS9NyE9st9x3mT4gH64g3AAxW_Tx7qHUxCzpVzkoLESHm-L4Xdt4YsPLjGpD0rO_hsEvUPIdlFO_rRON-jd-e1rHYAZA96teCUdnpjwuV7Ey5Tek4x9f9DaJVnoZMAUkC_1D6dDx_yyOWpl=w640-h480" width="640" />
</a>
</div>
<p>I next installed a PET Diagnostics module, to give the board a bit of exercise.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhzAyOnE4-GSqa1gnBoFsXvwCAWRmLMfjegrRBkGJftqT6MScGb-z065utXZB8m5CXZt5X8B80AdAy1IJ4B5EqFit9zUgZx4RvLBwuXy_fqZ4OqBdX8vuZyk4gxhYQzmoC7i9ueG9JkbCX2FpdH9M0qvBpViJZNHweFlTHJqM2eiM2iPOG3QF0AgXZ1Lc6M" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3174" data-original-width="4232" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhzAyOnE4-GSqa1gnBoFsXvwCAWRmLMfjegrRBkGJftqT6MScGb-z065utXZB8m5CXZt5X8B80AdAy1IJ4B5EqFit9zUgZx4RvLBwuXy_fqZ4OqBdX8vuZyk4gxhYQzmoC7i9ueG9JkbCX2FpdH9M0qvBpViJZNHweFlTHJqM2eiM2iPOG3QF0AgXZ1Lc6M=w640-h480" width="640" />
</a>
</div>
<p>And there we go.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgmVpHbXr1P0np1VPLwRGYJ5kVLFu6A2Mx8_p1GMdUj9fXYHda2xtTozEzBxHk90_Z0OlZGSXU_TrTGk36SqXz59GDJrWiWTiTTcoymaVo7QeOpMS5jUo89cY07XZV0s8PhW8QbHjudUvLIawUxb0HiO2zoiR8eABHcoa_cAl1h0nfJt46cfMs9m8qe87Lg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgmVpHbXr1P0np1VPLwRGYJ5kVLFu6A2Mx8_p1GMdUj9fXYHda2xtTozEzBxHk90_Z0OlZGSXU_TrTGk36SqXz59GDJrWiWTiTTcoymaVo7QeOpMS5jUo89cY07XZV0s8PhW8QbHjudUvLIawUxb0HiO2zoiR8eABHcoa_cAl1h0nfJt46cfMs9m8qe87Lg=w640-h480" width="640" />
</a>
</div>
<p>Those results are to be expected with no ROM or RAM installed.</p>
<p>The video RAM test passed, and the font ROM looks good.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiYI1KbJ_SwBxQHMWtlGBBIh-yBHTk-5ZS9VG5QEx55ZC_8UxSIViEZkCw1tlg-74TBMrjWvYxfbort2EsPDtpymCoQ1peNOsy34Ht3MDoVwAg21xRFn5Y8MStLKi7cifU3WczWBoJngy3v9E4t7L-4_d-mCGzaP3Kd5AO0R2G7FEcKj0bmhqNn0hMHrKd0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiYI1KbJ_SwBxQHMWtlGBBIh-yBHTk-5ZS9VG5QEx55ZC_8UxSIViEZkCw1tlg-74TBMrjWvYxfbort2EsPDtpymCoQ1peNOsy34Ht3MDoVwAg21xRFn5Y8MStLKi7cifU3WczWBoJngy3v9E4t7L-4_d-mCGzaP3Kd5AO0R2G7FEcKj0bmhqNn0hMHrKd0=w640-h480" width="640" />
</a>
</div>
<p>Note, due to some strangeness in the way 6550 RAM chips behave, the PET diagnostics does not cooperate with them, if you want to use it on a 2001 board that has 6550 video RAM, it needs to be replaced with a RAM module, then it works fine, just like any other PET board with normal static RAM.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh1OU8kPy0EIlhV-WaUCIGUOe9hT921F3aZcQhZh2zRNjFYnc6RSKU_Py1Rf9J6cckY4F1b09v2THF3jYDV7F3uPvBy5VFpwMOCQf2ULSfSaIkiN2qSaLm8toCaUA7O6YJzmWw1Cnz5ar0jjgXKE7uCQcHsNYQIEZrktiovL6JCM47wMoRVD3kOgAHIhmSt" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3355" data-original-width="4473" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEh1OU8kPy0EIlhV-WaUCIGUOe9hT921F3aZcQhZh2zRNjFYnc6RSKU_Py1Rf9J6cckY4F1b09v2THF3jYDV7F3uPvBy5VFpwMOCQf2ULSfSaIkiN2qSaLm8toCaUA7O6YJzmWw1Cnz5ar0jjgXKE7uCQcHsNYQIEZrktiovL6JCM47wMoRVD3kOgAHIhmSt=w640-h480" width="640" />
</a>
</div>
<p>Time to reinstall the PET ROM/RAM board and see if BASIC boots.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiEW9cEHekJL9Rbv1j56UpvahRe64OVJnTaUaeid1kKXA9tc3fQvrkieNNJKMbri3h5gPmNQOPBBzfIVZTDXmQ7gnH7A7tpGgoHwi-YxUNX1BNHRfX8EInASmT7VwJ3Sb0oBt8L1Qq7bxt1AjZvf5SCt1w0ygRVG62AfX7ukWJ1EWrgvsplWsK89yE9H11j" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2528" data-original-width="3371" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiEW9cEHekJL9Rbv1j56UpvahRe64OVJnTaUaeid1kKXA9tc3fQvrkieNNJKMbri3h5gPmNQOPBBzfIVZTDXmQ7gnH7A7tpGgoHwi-YxUNX1BNHRfX8EInASmT7VwJ3Sb0oBt8L1Qq7bxt1AjZvf5SCt1w0ygRVG62AfX7ukWJ1EWrgvsplWsK89yE9H11j=w640-h480" width="640" />
</a>
</div>
<p>And there we go. A nice ready prompt.</p>
<p>And the obligatory 10 PRINT test program.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhkzXzyWZwCML1RugZg25sn_ckdMbnEyZ_rdEz_wEA7EmQYDAgHrAh4yyowkI-It6oIw5z_utFeoFH4tEgFRSJrtGiMtSjlePG1zk_OyTs3uaHP5Y3BC-wR_s5tp_Be0C4lJTJLA43Itg95oiOZoJQinQtwR9ulCTZbXyTeu5LpcZy5ckUKHtVeELzrFJbz" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhkzXzyWZwCML1RugZg25sn_ckdMbnEyZ_rdEz_wEA7EmQYDAgHrAh4yyowkI-It6oIw5z_utFeoFH4tEgFRSJrtGiMtSjlePG1zk_OyTs3uaHP5Y3BC-wR_s5tp_Be0C4lJTJLA43Itg95oiOZoJQinQtwR9ulCTZbXyTeu5LpcZy5ckUKHtVeELzrFJbz=w640-h480" width="640" />
</a>
</div>
<p>So far so good.</p>
<p>I will go back later and replace the video RAM with two good ones from the main RAM. Hopefully 2 out of the 16 spares will function. For the moment, I will leave the replacement RAM in place.</p>
<p>The question still remains why was there no picture for the owner.</p>
<p>Could be a bad monitor (or more likely a bad connection on the monitor cable?)</p>
<p>I had a bit of a look around the video circuitry, and I spotted something.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgFL9-HVnBKNSi65a4TyVry9Ixrtc7nQKBwBajjF1njOSqLHi1tqt7P8PBCtrBMKxDLF9g646kkFND5VdpQQDyhPIG9_gUnVjV-TI5fxHRO6BH4Nqrurf8OplqduB4wE7lEK8KqyApe-YZHvAU4mFPGSV4scDbBxyQAaKg_zN3DcsRtjeJgyAsinHVadJ_k" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3066" data-original-width="4088" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgFL9-HVnBKNSi65a4TyVry9Ixrtc7nQKBwBajjF1njOSqLHi1tqt7P8PBCtrBMKxDLF9g646kkFND5VdpQQDyhPIG9_gUnVjV-TI5fxHRO6BH4Nqrurf8OplqduB4wE7lEK8KqyApe-YZHvAU4mFPGSV4scDbBxyQAaKg_zN3DcsRtjeJgyAsinHVadJ_k=w640-h480" width="640" />
</a>
</div>
<p>That's a 74HC107. That's not right. 74HC logic series isn't compatible with the 74LS chips over the rest of the board. It might work some of the time, but best be safe and go for the right chip.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhitQKtXny7eeRtoWWXCfNlUemf6jyJUpbDoqG1NKesQOwkWATu88PbwVPc5moUfbAVlGsQPV9410JyKosm9UgvQaYGv9bBRORh32bWk93FhlWH3q_P08ixD_rLM0q4K8Ea1_1ljA096autI9S3yB9jsf7lI3APZQp05jYInAINlIS-fPFPr6kh2XjJe0W-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2904" data-original-width="3872" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhitQKtXny7eeRtoWWXCfNlUemf6jyJUpbDoqG1NKesQOwkWATu88PbwVPc5moUfbAVlGsQPV9410JyKosm9UgvQaYGv9bBRORh32bWk93FhlWH3q_P08ixD_rLM0q4K8Ea1_1ljA096autI9S3yB9jsf7lI3APZQp05jYInAINlIS-fPFPr6kh2XjJe0W-=w640-h480" width="640" />
</a>
</div>
<p>I replaced that with a 74LS107, as would have originally been fitted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgGh1JytKwkWMm-hdWArqh9xdduAhznbBC5Bf5S6Zq7oxmvEFZ6ALBwsk86385ku4LWrsAxMXQFXEFQOD0g2vk7cA_1jMrPHUEwgtCxyfcA_sYKluY8liJK5oXfjp1CAciPT5m4N5k5hxG2QonoSq-Fu8b5MHNEWclUkFq4yqTdN1CaoeqazN2dLrf76XFM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgGh1JytKwkWMm-hdWArqh9xdduAhznbBC5Bf5S6Zq7oxmvEFZ6ALBwsk86385ku4LWrsAxMXQFXEFQOD0g2vk7cA_1jMrPHUEwgtCxyfcA_sYKluY8liJK5oXfjp1CAciPT5m4N5k5hxG2QonoSq-Fu8b5MHNEWclUkFq4yqTdN1CaoeqazN2dLrf76XFM=w640-h480" width="640" />
</a>
</div>
<p>It may be that worked at one point, but has drifted a bit with age and is no longer coping with the TTL logic levels on it's inputs?</p>
<p>It is a dual JK flipflop, and is part of the sync generation circuit, so that could explain the lack of video sync?</p>
<p>Back to testing, next is loading from datasette.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg33DUPoNpjHi-8NZAbkeGZ_jnE8Nfs4JTkPPXUHpwqv1KA40rDHFdaFRzFmihPFxBRJltRJMvqJQ0DkzUA28p9wKZuVcqxFN_gs4u_y666dJ5ZnuWcPo_DXCGOIfUwl2BK2lzkUOhgMkXeZQ9LBLz4Qyy0Awws69kIxCH1LvD7o018FSzFn_NTdwdlH0fM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2553" data-original-width="3404" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEg33DUPoNpjHi-8NZAbkeGZ_jnE8Nfs4JTkPPXUHpwqv1KA40rDHFdaFRzFmihPFxBRJltRJMvqJQ0DkzUA28p9wKZuVcqxFN_gs4u_y666dJ5ZnuWcPo_DXCGOIfUwl2BK2lzkUOhgMkXeZQ9LBLz4Qyy0Awws69kIxCH1LvD7o018FSzFn_NTdwdlH0fM=w640-h480" width="640" />
</a>
</div>
<p>I was able to load simple programs.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhFNBueN9MtpQ4L8m23LT4zqrdWW6wNTeXGTqpVwuxpvVZXp39aKhhKKXZC8DJsKZUsGXbDoMcLC1PPXaVWREguJDwYU9UvuuW2sEBTTRuMqlYfF1jj1M_Y8ta9dUUFWou2D9hcVkL1HhHKD2wubefOSxWAyF8mhh-r43X7jz5vdICzROFgxlFRnm3x_GWG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2256" data-original-width="3008" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhFNBueN9MtpQ4L8m23LT4zqrdWW6wNTeXGTqpVwuxpvVZXp39aKhhKKXZC8DJsKZUsGXbDoMcLC1PPXaVWREguJDwYU9UvuuW2sEBTTRuMqlYfF1jj1M_Y8ta9dUUFWou2D9hcVkL1HhHKD2wubefOSxWAyF8mhh-r43X7jz5vdICzROFgxlFRnm3x_GWG=w640-h480" width="640" />
</a>
</div>
<p>And a memory test.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiNwcZLGN3U8yImBj5CqRZGCwQ7ohVfQ9Cna3QzBuRKdLUwseFA0XGB4GyPl6g2IZk9Ah0V5UnUaSVs78cCfY-esPDYbW2kn_h7HaYtFtbCbcewiNpskV-PTBV7ZrMwyLfwhEndsKud0a9fkETtg5V6c5ltbWD0GWY5oPDVWi_Cyf4NGtX6-2Yxb8mRpzI8" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3085" data-original-width="4114" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiNwcZLGN3U8yImBj5CqRZGCwQ7ohVfQ9Cna3QzBuRKdLUwseFA0XGB4GyPl6g2IZk9Ah0V5UnUaSVs78cCfY-esPDYbW2kn_h7HaYtFtbCbcewiNpskV-PTBV7ZrMwyLfwhEndsKud0a9fkETtg5V6c5ltbWD0GWY5oPDVWi_Cyf4NGtX6-2Yxb8mRpzI8=w640-h480" width="640" />
</a>
</div>
<p>I left that running for a while. All looks good.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiLQ-bleX41q24kV-f5XkYkeP_mzhGHuiQAbAB5QjgYLYkFMcEgBQ0y0X0hiVaX2r_gnG5AOezmU2aXazxVnDDKolqfaf4_Rgtt-3bcq5PefCuoH7vC7zX8yWNnytI7HLZt3z4DAkNqAZT_T0TMzNl4ZAsmp5Wik0LqH8dwVzvBOY89HCoSPvT-DVMo2TgS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3113" data-original-width="4151" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiLQ-bleX41q24kV-f5XkYkeP_mzhGHuiQAbAB5QjgYLYkFMcEgBQ0y0X0hiVaX2r_gnG5AOezmU2aXazxVnDDKolqfaf4_Rgtt-3bcq5PefCuoH7vC7zX8yWNnytI7HLZt3z4DAkNqAZT_T0TMzNl4ZAsmp5Wik0LqH8dwVzvBOY89HCoSPvT-DVMo2TgS=w640-h480" width="640" />
</a>
</div>
<p>Time to test the IEEE-488 port.</p>
<p>Looks a little manky, so I gave all the ports a bit of a clean. Looks like someone has tried to solder to the three pins on the right, or were they just trying to retin the pins?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEggglcy3JFcSFeiYz_i40Brr95POvjZhvxDi929sJthn8Rewy52TERVMQRKri88Z1IvlICnXjJ2AXtVvKGsTEe-cCVi1-i3bt3sYw6oBCw9cttVsyJfjUH59w7qYqw_GKdQtow4tFNf25SvSDQs2Cjd1LS3zJO-ZFmlcouesNgFz_aZpPpiDIqqbR7jo68f" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEggglcy3JFcSFeiYz_i40Brr95POvjZhvxDi929sJthn8Rewy52TERVMQRKri88Z1IvlICnXjJ2AXtVvKGsTEe-cCVi1-i3bt3sYw6oBCw9cttVsyJfjUH59w7qYqw_GKdQtow4tFNf25SvSDQs2Cjd1LS3zJO-ZFmlcouesNgFz_aZpPpiDIqqbR7jo68f=w640-h480" width="640" />
</a>
</div>
<p>I plugged in an SD2PET and tried to load from it.</p>
<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh8Vr1NizYsLSJd_iaDtVfaV4kZnNqrfa3CnX6KtDzLc3JbGXcGOMXRN1XsjsMoT_PCS-vsc_Kop4TjwbhdK4eQ6Fl4p3QrRvnSti4a0vNvJIDqf7Rk8_omjf0JGACnxmJgdlZbwtaN-JBMmww0H8mraHuC1sQyzdiKILkH_2GoNBsuRF5Po2cYDpBkgPzl" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="3280" data-original-width="4373" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEh8Vr1NizYsLSJd_iaDtVfaV4kZnNqrfa3CnX6KtDzLc3JbGXcGOMXRN1XsjsMoT_PCS-vsc_Kop4TjwbhdK4eQ6Fl4p3QrRvnSti4a0vNvJIDqf7Rk8_omjf0JGACnxmJgdlZbwtaN-JBMmww0H8mraHuC1sQyzdiKILkH_2GoNBsuRF5Po2cYDpBkgPzl=w640-h480" width="640" /></a></div><br />Ah, the good old "device not found".<p></p>
<p>OK, various options here, any of the three MC3446s the 6520, 6522 and whatever the other 6520 was.</p>
<p>I notice there are three different types of MC3446 chips. The soldering on these looks better and the flux has been cleaned up on the back of the board, so I guess some of these have been replaced in the past by a different person to the other chips.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjC--Ef9tEGVotdb97m2pl245C21ACQUmW-WBE8Ub0zKc6_6Y-_9CumZA9nIlyJHi-PSPgY-4TIqybwzpGDm39AwiRgUHZptw6kfAJDodr7yqAmx9hwLNdz3m4L8N0wrw1ZPNTRcujWyfCBWUTiXHXURrRBUYACUzxlCI5pFf3b0wpRyT25ja2dYSex_sey" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2574" data-original-width="3432" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjC--Ef9tEGVotdb97m2pl245C21ACQUmW-WBE8Ub0zKc6_6Y-_9CumZA9nIlyJHi-PSPgY-4TIqybwzpGDm39AwiRgUHZptw6kfAJDodr7yqAmx9hwLNdz3m4L8N0wrw1ZPNTRcujWyfCBWUTiXHXURrRBUYACUzxlCI5pFf3b0wpRyT25ja2dYSex_sey=w640-h480" width="640" />
</a>
</div>
<p>I swapped out the 652x chips one by one with known working WD65C2x chips and tested each time, but still got device not found.</p>
<p>I also swapped in a known good 6502A in case there were any incompatibilities with whatever the remarked part was.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhN5_L_r5Ma1kNeJeX41DMUEZqAAkxo-uJ4UvZow120igFt7O6mXTM3vMWq7uxqLMq4utAaDaB6Kwm1kY9MXwjaW9Nn_t_FOIKq40D0VqotXtGr5X09N-YaP1EELNSNSQ0FU8nxeou187-DbtJzwkssW6teAPXW0TvRsBM_LE4XGkKFV6HHN22aSH6G-QJ5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3540" data-original-width="4720" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhN5_L_r5Ma1kNeJeX41DMUEZqAAkxo-uJ4UvZow120igFt7O6mXTM3vMWq7uxqLMq4utAaDaB6Kwm1kY9MXwjaW9Nn_t_FOIKq40D0VqotXtGr5X09N-YaP1EELNSNSQ0FU8nxeou187-DbtJzwkssW6teAPXW0TvRsBM_LE4XGkKFV6HHN22aSH6G-QJ5=w640-h480" width="640" />
</a>
</div>
<p>It did sound like it could be an issue with the 6522, and I note an AND gate in it's enable circuitry has previously been replaced.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgbtUl8t1gPoCohXo54wX8LRGam3yL7iHPSlNX9xVVkT1YppDGWhrm3BD0QTVBtO5SLSGdM-tk2SVkvETIQ05ewkywD1R4iiDhuyOmaHPjjP6VDnCs0vMO1V50loAxVwwq5ORLeQW2EQEvIHw5o8zeHqr0r6SWNbP3Ofd0jpyS8mmGerTFB-qkEY4kB3PC4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgbtUl8t1gPoCohXo54wX8LRGam3yL7iHPSlNX9xVVkT1YppDGWhrm3BD0QTVBtO5SLSGdM-tk2SVkvETIQ05ewkywD1R4iiDhuyOmaHPjjP6VDnCs0vMO1V50loAxVwwq5ORLeQW2EQEvIHw5o8zeHqr0r6SWNbP3Ofd0jpyS8mmGerTFB-qkEY4kB3PC4=w640-h480" width="640" />
</a>
</div>
<p>Not convinced by the soldering there, but these boards are quite fragile, and it is easy to lift traces when removing chips.</p>
<p>I have a feeling I might need to undo and redo some of the previous repair work to check the tracks underneath and make (hopefully) better solder joints.</p>
<p>There I will leave it for part 1. I need to use the PET IEEE-488 diagnostics to check which signals are bad and fix those as appropriate.</p>
<hr />
<h2>Advertisements</h2>
<h2>PET ROM/RAM</h2>
<p>As mentioned above, many PET faults are down do bad ROM chips or bad RAM chips, and a PET ROM/RAM chip can often help bypass those. You can order one from The Future Was 8 bit.</p>
<p><a href="https://www.tfw8b.com/product/commodore-pet-rom-ram/" rel="nofollow" target="_blank">https://www.tfw8b.com/product/commodore-pet-rom-ram/</a></p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2022/08/testing-pet-rom-ram-boards.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2022/08/testing-pet-rom-ram-boards.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj8ELeXaYity5sUpDztvv4mBg3Gx-miFjBDXVyrZYYMay2-aA7YkyYhHGeTGhHfvwkmphBijasvuMsn_47BDFxoA9tZfxzXC7-IN7CI8RpTXmhUlEtFQPKHCrGK4yiVJN79XGTIWDgVsKzNwZ_btqt8lFISsyMmjsNIOX6xFaMXM6nQBw-2jBsV3wfy0A" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj8ELeXaYity5sUpDztvv4mBg3Gx-miFjBDXVyrZYYMay2-aA7YkyYhHGeTGhHfvwkmphBijasvuMsn_47BDFxoA9tZfxzXC7-IN7CI8RpTXmhUlEtFQPKHCrGK4yiVJN79XGTIWDgVsKzNwZ_btqt8lFISsyMmjsNIOX6xFaMXM6nQBw-2jBsV3wfy0A=w600-h450" width="600" />
</a>
</div>
<br />
<h3>Mini PET B</h3>
<p>Or if you want an easier solution, the Mini PET B is a drop in replacement for a PET / CBM 40 column 32K motherboard.</p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/building-a-mini-pet-b-kit.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/building-a-mini-pet-b-kit.html</a></p>
<p>Mini PET B at SellMyRetro:</p>
<ul>
<li>Built and tested - <a href="https://www.sellmyretro.com/offer/details/63875" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63875</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/63876" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63876</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ=w600-h450" width="600" />
</a>
</div>
<br />
<h2 style="text-align: left;">PET Diagnostics.</h2>
<p>The PET Diagnostics modules are available from my SellMyRetro store:</p>
<ul style="text-align: left;">
<li><a href="https://www.sellmyretro.com/offer/details/64158" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64158</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgNlzz2fIKeScjtGkRrAGnVtYFHgSy3WELvWhvpuoUqNnotMxJCimNRaTIkV72CZ5oCI2wznQFYBYkkJQhLW8xPF904O2y_ldn6ReWmGoB18jzn5VomnsFqsTK8-6sRfGxaOHK0BzW9_38le4S06MHGP3YkAt57b6zXpgL8c7gM2Bxg7TTXKcit48oBEVe4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2580" data-original-width="3439" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgNlzz2fIKeScjtGkRrAGnVtYFHgSy3WELvWhvpuoUqNnotMxJCimNRaTIkV72CZ5oCI2wznQFYBYkkJQhLW8xPF904O2y_ldn6ReWmGoB18jzn5VomnsFqsTK8-6sRfGxaOHK0BzW9_38le4S06MHGP3YkAt57b6zXpgL8c7gM2Bxg7TTXKcit48oBEVe4=w600-h450" width="600" />
</a>
</div>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-39140564376494624892024-02-11T10:34:00.004+00:002024-02-11T10:37:14.012+00:00$10 Monitor for Minstrel or Mini PET kits<p>How about a mini monitor for a Mini PET?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEivE_rqqGoRtpLH3X10ZHp1ahS2wNgspwnCuvtVZFnQ-v75AouB8DO_Uhr_g57NWQ5D7SdUKqCMfpFMzp1PhaZ89-liPaWS0mE4BHFP3rZKFWAoQ19qQ1PfrzjICSQTbN_FJWjDHytH7T2rEYV-KwhPqBFFUcMtq6P0FG520GC0uzC0w-B8bkSAEZVUpsfi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3285" data-original-width="4379" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEivE_rqqGoRtpLH3X10ZHp1ahS2wNgspwnCuvtVZFnQ-v75AouB8DO_Uhr_g57NWQ5D7SdUKqCMfpFMzp1PhaZ89-liPaWS0mE4BHFP3rZKFWAoQ19qQ1PfrzjICSQTbN_FJWjDHytH7T2rEYV-KwhPqBFFUcMtq6P0FG520GC0uzC0w-B8bkSAEZVUpsfi=w640-h480" width="640" />
</a>
</div>
<p>I am occasionally asked about HDMI converters for things like the Minstrel and Mini PET kits. I have not tried many of those, but in general they don't like monochrome composite video. The lack of the colour burst signal confuses them, and so they don't detect it, or try to see colour where there is no colour.</p>
<p>George Beckett has a Dell monitor which does similar things:</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEghNpQ9Rnjs4Xl_oDbdK6HKq-WhdxBnIH_NN-w5lnb4LlDQOw6G_NjgmmaW6J5MKl8v6kyy3w6spt19HceZOyl1llzF_oQIf0vN3XR2jl4XVuus9iUdFJDQvmwtCQadSOi52ukRIVZPZXp1rV-lw8bzg-bRE3IPrTQxQOjJtvICRIRJxXpctLy2l3IPKaHx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1875" data-original-width="2500" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEghNpQ9Rnjs4Xl_oDbdK6HKq-WhdxBnIH_NN-w5lnb4LlDQOw6G_NjgmmaW6J5MKl8v6kyy3w6spt19HceZOyl1llzF_oQIf0vN3XR2jl4XVuus9iUdFJDQvmwtCQadSOi52ukRIVZPZXp1rV-lw8bzg-bRE3IPrTQxQOjJtvICRIRJxXpctLy2l3IPKaHx=w640-h480" width="640" />
</a>
</div>
<p>Normally most older LCD monitors are quite happy with those signals, and it is sometimes cheaper to buy a monitor with a composite input than an HDMI converter for an existing one.</p>
<p>Case in point, a $10 LCD designed to be used as a car reversing / DVD player monitor. I had used several different versions of this type of thing, so I thought I would try the smallest and cheapest and see if it was still viable.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiNTJiX8-JbbQXj2TXPTe-I7RLjsBLliBUvHd9KONzu3qHliQ2OydG_d8og49Sv03jQVMfmpjDLAdzSClvPPmPWE1DNELRBPoidRfWq4z_3bwAtMU_ZVuQPzQ25PFh5u_jDeUEdURQE5Mjsho6wOAqqH4UsS9NtjYCSDvVK9Kuh5u1CFv5AjdUMtTiWUdmQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiNTJiX8-JbbQXj2TXPTe-I7RLjsBLliBUvHd9KONzu3qHliQ2OydG_d8og49Sv03jQVMfmpjDLAdzSClvPPmPWE1DNELRBPoidRfWq4z_3bwAtMU_ZVuQPzQ25PFh5u_jDeUEdURQE5Mjsho6wOAqqH4UsS9NtjYCSDvVK9Kuh5u1CFv5AjdUMtTiWUdmQ=w640-h480" width="640" />
</a>
</div>
<p>There seem to be many of these around with different brands and part numbers, but the same things inside.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEigWgn6lKXpDjwA_AtJqo7hi0eor3bR1uiK_bqlFq2bBfaPzFfBaB2VKNVnN3pR45EEsf6IJRTBglrjr6_iyhMOKHRVASIJtqexaBbag8BAlEKjS_n-1TvTuHlyZ5Cg1cCN-TzQyLNmKpgdLHlGeGQgO2xmomg4u57lUEYb58_kKUjDFdOHCMFE2SBKWBOO" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEigWgn6lKXpDjwA_AtJqo7hi0eor3bR1uiK_bqlFq2bBfaPzFfBaB2VKNVnN3pR45EEsf6IJRTBglrjr6_iyhMOKHRVASIJtqexaBbag8BAlEKjS_n-1TvTuHlyZ5Cg1cCN-TzQyLNmKpgdLHlGeGQgO2xmomg4u57lUEYb58_kKUjDFdOHCMFE2SBKWBOO=w640-h480" width="640" />
</a>
</div>
<p>These usually run from 12V, although in some places they say 12-24V, and in practice, they run fine from 9V.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXzCukHqAhK68sraXyIGSYU3voHIFSlz7lntRxverxNQfwU9LrkShP4a-eNwLtrT7zJ3PUXwRUjUEDuC1jHMqbnO3wQ_aGVJlSHfs_MevbJALtILuQgFO-UU6ISrpv-c5tUvZBhttCHX31HlzoNP9zADQI0IBhlvS4j9Tn6qcicILOCNX_9l8Moxn1khA4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXzCukHqAhK68sraXyIGSYU3voHIFSlz7lntRxverxNQfwU9LrkShP4a-eNwLtrT7zJ3PUXwRUjUEDuC1jHMqbnO3wQ_aGVJlSHfs_MevbJALtILuQgFO-UU6ISrpv-c5tUvZBhttCHX31HlzoNP9zADQI0IBhlvS4j9Tn6qcicILOCNX_9l8Moxn1khA4=w640-h480" width="640" />
</a>
</div>
<p>They usually have three plugs, one 2.1mm DC jack (centre positive) and two phono jacks.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFC62e18Ge7oZuGFTVG7J4TYKc0pBy3qNHGs-qrZ--LsLnalZUQhETgC_8lKYoL14Jd9aSozuNmiCyPW2HgJEEYvpn8S7fsHyEvCn4MH-45mNIpFav_ZwXBY6mlxFqkK3wQrGnSYHJK2CcmZhmlsuG__dMIiPCgm1ge-vI3APOTbdcHQsXSdU7J4wzWcRS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFC62e18Ge7oZuGFTVG7J4TYKc0pBy3qNHGs-qrZ--LsLnalZUQhETgC_8lKYoL14Jd9aSozuNmiCyPW2HgJEEYvpn8S7fsHyEvCn4MH-45mNIpFav_ZwXBY6mlxFqkK3wQrGnSYHJK2CcmZhmlsuG__dMIiPCgm1ge-vI3APOTbdcHQsXSdU7J4wzWcRS=w640-h480" width="640" />
</a>
</div>
<p>Contrary to the photo on the listing, the red one is the power jack.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjsSAdPbllwisXEgpyBX1NfHWt5YgueJfxwH9EFi_h6lkh9sORyBhkWBeXwbp13oihgLFaPah7S5OgJA8Jb_gfR_yvU__mnkbZGosOjuIFJ_IeiB_yPg6V7npFhgfE4_NLUPSPsXJa9G6ZlK1wfk7Dx7RfvbxJ7rZ7m6WNSdUd7ksFdnuQxoTDG776e0I8u" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1463" data-original-width="1500" height="624" src="https://blogger.googleusercontent.com/img/a/AVvXsEjsSAdPbllwisXEgpyBX1NfHWt5YgueJfxwH9EFi_h6lkh9sORyBhkWBeXwbp13oihgLFaPah7S5OgJA8Jb_gfR_yvU__mnkbZGosOjuIFJ_IeiB_yPg6V7npFhgfE4_NLUPSPsXJa9G6ZlK1wfk7Dx7RfvbxJ7rZ7m6WNSdUd7ksFdnuQxoTDG776e0I8u=w640-h624" width="640" />
</a>
</div>
<p>You can use either input, and if you have two devices connected, the one in the white jack takes priority. I think the idea is you connect a DVD player to yellow and the reversing camera to white, so that when reverse is engaged, the reversing camera is shown, then when you go back to drive, it switches back to your movie. If that isn't already illegal, then it really should be.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiRWrIpRfgBJygEe-Z9oTlkAnEsmL6P50n85IRU6kWtVi69aBZ4dEq7TUYrqDDm_In4erx4ncb9Mp-v9YiZfqbA_sMGoXqKql3qJ4ZC5H6nNx9vMFiEuFjd_grzQdKfgpIcTTWQFQgfHlAGTraQEZvUbY_mM0ivUMGdjsiCLtZPMy7JFkFCocuuHvhwogoC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiRWrIpRfgBJygEe-Z9oTlkAnEsmL6P50n85IRU6kWtVi69aBZ4dEq7TUYrqDDm_In4erx4ncb9Mp-v9YiZfqbA_sMGoXqKql3qJ4ZC5H6nNx9vMFiEuFjd_grzQdKfgpIcTTWQFQgfHlAGTraQEZvUbY_mM0ivUMGdjsiCLtZPMy7JFkFCocuuHvhwogoC=w640-h480" width="640" />
</a>
</div>
<p>I would recommend using the yellow jack, particularly with something like the Minstrels, as it switches between white and yellow when the sync drops, as it does on the Minstrel 2 when you press a key, and on the Minstrel 3 when you enter a line of code.</p><p>The screen is very bright, not sure the brightness control does anything, this was brightness 0, and still washed out the whole screen so you couldn't see it.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg40WYTHvDyCKZfGTpKBJk7AkGLVDvmS5DzsLxDSjQ0QG2mBOoTZw7uAyq78kGptMRfxSz6mQ8YZSyFiTEY-AG37rH-qJpYN3dWYA96CWdZfDT1TBlIFJR-MRxWkm5rdUNd-2FT7SBi7fad2GLB410Xr95g10ksRnVBZ5tRgx8AAv1_3kovUx0mo2qdxCB3" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEg40WYTHvDyCKZfGTpKBJk7AkGLVDvmS5DzsLxDSjQ0QG2mBOoTZw7uAyq78kGptMRfxSz6mQ8YZSyFiTEY-AG37rH-qJpYN3dWYA96CWdZfDT1TBlIFJR-MRxWkm5rdUNd-2FT7SBi7fad2GLB410Xr95g10ksRnVBZ5tRgx8AAv1_3kovUx0mo2qdxCB3=w640-h480" width="640" />
</a>
</div>
<p>You can just about make it out in this photo.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjSd38b_rqQtZmJJfVeBG1Wj8d8W3xUvJ8DLbJQbJJdxbcVCbL6RadMvHqcPqBmjETiViwL0GXKwJMjICOFNDWMTlqgf7wi5XY24wvKD33qJqUdtr-DKD2ib93AASOrhzorl-gzqbsY_iSRKjDeiRKVmPgPBKw4gp9oVJT-CBjKsRY0lhqfRnHrDzupXGqE" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjSd38b_rqQtZmJJfVeBG1Wj8d8W3xUvJ8DLbJQbJJdxbcVCbL6RadMvHqcPqBmjETiViwL0GXKwJMjICOFNDWMTlqgf7wi5XY24wvKD33qJqUdtr-DKD2ib93AASOrhzorl-gzqbsY_iSRKjDeiRKVmPgPBKw4gp9oVJT-CBjKsRY0lhqfRnHrDzupXGqE=w640-h480" width="640" />
</a>
</div>
<p>However, looking at the screen itself, it is quite readable.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgQXPLa2tfoJb5MgkQEimvogbWiWu5Zj24L_j_O-6m6j1tXC_XmR180OF0dJ1eSzI5XQfaxUR_qthWQsGMq3eHvNPiz3km82qeURpbxH4O0UCcNLj2HeGiAHgYZU4mpdI33gCi9ojlNlag7L6SiiB6fuZYHpBtwx0UNBLf3mX0okt5nGO6Mxn8qcjN-fMjN" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgQXPLa2tfoJb5MgkQEimvogbWiWu5Zj24L_j_O-6m6j1tXC_XmR180OF0dJ1eSzI5XQfaxUR_qthWQsGMq3eHvNPiz3km82qeURpbxH4O0UCcNLj2HeGiAHgYZU4mpdI33gCi9ojlNlag7L6SiiB6fuZYHpBtwx0UNBLf3mX0okt5nGO6Mxn8qcjN-fMjN=w640-h480" width="640" />
</a>
</div>
<p>I did better taking a picture with a "white on black" screen on the Mini PET.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEivE_rqqGoRtpLH3X10ZHp1ahS2wNgspwnCuvtVZFnQ-v75AouB8DO_Uhr_g57NWQ5D7SdUKqCMfpFMzp1PhaZ89-liPaWS0mE4BHFP3rZKFWAoQ19qQ1PfrzjICSQTbN_FJWjDHytH7T2rEYV-KwhPqBFFUcMtq6P0FG520GC0uzC0w-B8bkSAEZVUpsfi" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="3285" data-original-width="4379" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEivE_rqqGoRtpLH3X10ZHp1ahS2wNgspwnCuvtVZFnQ-v75AouB8DO_Uhr_g57NWQ5D7SdUKqCMfpFMzp1PhaZ89-liPaWS0mE4BHFP3rZKFWAoQ19qQ1PfrzjICSQTbN_FJWjDHytH7T2rEYV-KwhPqBFFUcMtq6P0FG520GC0uzC0w-B8bkSAEZVUpsfi=w640-h480" width="640" /></a></div><p>The specification (if you can believe it), shows the resolution of this 4.3" LCD as 480x272.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEigs3WtCJodkJUnu8t6dmnLVVrSVxXRTOOc-khKo3vNvXs8b49Dbl-wYep_WjLu5o5_R6GLDD6o5XqQAm4ULk-L4VzcRIVSaDWIC9QAwT06Ss5Ud68OqMi3-iUSp2ebgxv1M2YxPdepURfljoghM3O8P0uGWS9cH9AUfab3Z5EboNevUzEPBNn9-l0PH5O8" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEigs3WtCJodkJUnu8t6dmnLVVrSVxXRTOOc-khKo3vNvXs8b49Dbl-wYep_WjLu5o5_R6GLDD6o5XqQAm4ULk-L4VzcRIVSaDWIC9QAwT06Ss5Ud68OqMi3-iUSp2ebgxv1M2YxPdepURfljoghM3O8P0uGWS9cH9AUfab3Z5EboNevUzEPBNn9-l0PH5O8=w640-h480" width="640" />
</a>
</div>
<p>That should be good enough to read the 32 or 40 character displays (32x8 = 256 pixels, 40x8 = 320 pixels).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiolyXBeLBSKAFauIanfRHlbyb8Z2ln_vjOeO5pVoUDIxwxzAfTT9Qg2AT0B13s_jbjwXGdYGiUA9G0cQv1k9FQPDTWOUal7v7prSSmsI4M1PUMBhcenl-8eVOyPrQHzACgT_NmBq_ZMx-KbUbWaUQPnFTfPbtndsRaHF2U5cwUjEooszRsTiYk-6XvlYeT" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiolyXBeLBSKAFauIanfRHlbyb8Z2ln_vjOeO5pVoUDIxwxzAfTT9Qg2AT0B13s_jbjwXGdYGiUA9G0cQv1k9FQPDTWOUal7v7prSSmsI4M1PUMBhcenl-8eVOyPrQHzACgT_NmBq_ZMx-KbUbWaUQPnFTfPbtndsRaHF2U5cwUjEooszRsTiYk-6XvlYeT=w640-h480" width="640" />
</a>
</div>
<p>It is certainly good enough to see what is going on.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj2S8k06WTGENmFubGxGRfndjFGgS4z_AGvZ_j9hGxCzVBZvFe-Riw5gFOv0niEaWyAc2I0-kaUOp5-vlZpSBa4VfDEJ6nekOnf7xZlYra92Mw7jEKZrwP17Iy-KxVNkVpuUFiBooVGKDE-4sZE0kHBgauKjzTuhDbgqxCKCJkIV1j3NjqwEMpdcT1B_QFH" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEj2S8k06WTGENmFubGxGRfndjFGgS4z_AGvZ_j9hGxCzVBZvFe-Riw5gFOv0niEaWyAc2I0-kaUOp5-vlZpSBa4VfDEJ6nekOnf7xZlYra92Mw7jEKZrwP17Iy-KxVNkVpuUFiBooVGKDE-4sZE0kHBgauKjzTuhDbgqxCKCJkIV1j3NjqwEMpdcT1B_QFH=w640-h480" width="640" />
</a>
</div>
<p>Where there is the option, setting to NTSC works better as that reduces the borders and more closely matches the lines available.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhPg_j1ksvZd43_QNAz-MtP-sM427Wfg8RT8au_DJ8INsAbvgzlV2lVsvvL5s0kQNgQ01ObNkl0Q1ZCSpks3QqbT9iQuuluxqHI4Gu6yu7CtQMq0I7B9ZPedPb_whdhMEe1a9ikERc_TQ-gHKQRsIA2yItOo9gHDFhgyy5_6uL7Ai3qVA2996hEexS-DzKI" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhPg_j1ksvZd43_QNAz-MtP-sM427Wfg8RT8au_DJ8INsAbvgzlV2lVsvvL5s0kQNgQ01ObNkl0Q1ZCSpks3QqbT9iQuuluxqHI4Gu6yu7CtQMq0I7B9ZPedPb_whdhMEe1a9ikERc_TQ-gHKQRsIA2yItOo9gHDFhgyy5_6uL7Ai3qVA2996hEexS-DzKI=w640-h480" width="640" />
</a>
</div>
<p>However PAL also works.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgCGLWrfDM4wbkitpsgIqzN5DFg10HRM_hS6q7rCnISL7O9lkHhTLq0MZZjusPca5kFg7_NEUeSICn94XuS06vOyoNwmRlNsKmeUSrw1TpvPRGPVqorFSQtN3hB5xB9rO4x3ubeXQHmB0I5EGcqBI1Sp6e1-svY9RnSspmYxiqvhgBES_wfPHfwFLaRu2Kx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgCGLWrfDM4wbkitpsgIqzN5DFg10HRM_hS6q7rCnISL7O9lkHhTLq0MZZjusPca5kFg7_NEUeSICn94XuS06vOyoNwmRlNsKmeUSrw1TpvPRGPVqorFSQtN3hB5xB9rO4x3ubeXQHmB0I5EGcqBI1Sp6e1-svY9RnSspmYxiqvhgBES_wfPHfwFLaRu2Kx=w640-h480" width="640" />
</a>
</div>
<p>The display updates are also fast enough to use the machines as normal.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjL1zfrMYMMnQ95kkopxhN4gEkdZuwKD6dJlA8L5HXPPe_Y2y51LlXryjMzxCmV9nfpAClZSc5aQZzsVz-FKTSceEcgnsqc8ZHy8Zkw4l-_w9joWZyDsHX3jJqsTO-Dirv8oG4HJYodnfG2Fb6I2i_9EKuq-Dq-vHT3q8JXYEvZDGJNEyAqCTqaNQOYK4cm" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjL1zfrMYMMnQ95kkopxhN4gEkdZuwKD6dJlA8L5HXPPe_Y2y51LlXryjMzxCmV9nfpAClZSc5aQZzsVz-FKTSceEcgnsqc8ZHy8Zkw4l-_w9joWZyDsHX3jJqsTO-Dirv8oG4HJYodnfG2Fb6I2i_9EKuq-Dq-vHT3q8JXYEvZDGJNEyAqCTqaNQOYK4cm=w640-h480" width="640" />
</a>
</div>
<p>Of course I am going to have a go at Tut-Tut.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhbB4ZMJ28Rz5vIWHGHA3bvO09TU0ymnv8Ue2UnBtRakynr3XSf41f-rqnUvlCE1BCUkcrmYdoUVogQ9Ca98YCLBblxjVa49pPInvgTVNsce06uOc3fgjUApAyfImj6KllplVMupz9BoI9eXYZD_6D8fbhoMTGdCZTTzg7P68UqrhqKfeLRPz6XL5Qp7hdZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhbB4ZMJ28Rz5vIWHGHA3bvO09TU0ymnv8Ue2UnBtRakynr3XSf41f-rqnUvlCE1BCUkcrmYdoUVogQ9Ca98YCLBblxjVa49pPInvgTVNsce06uOc3fgjUApAyfImj6KllplVMupz9BoI9eXYZD_6D8fbhoMTGdCZTTzg7P68UqrhqKfeLRPz6XL5Qp7hdZ=w640-h480" width="640" />
</a>
</div>
<p>Those sort of displays are available in 3.5, 4,3, 5.0 and 7.0 inch formats, from as little as $10, so a useful thing to have around.</p>
<p>The one shown here cost me £9.99 delivered from Amazon.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ7ic3Subo9Cy-QpWEPI22KK0E46ilr7i4IWHRy68oQ766kNCJcC98kvfVYYVflbw_6xThciPcWGEzuY_JEaKaP9osurJRVNKDix8LeJd4oPZD27fqvEoTP0afXwh1TVuVfUapHCp6vBIoWjuIQ1kqZK9uiWyhevwLPMWE2v5Fp6Kbei4K4Jp0ERuBvCvx/s1229/Amazon%20listing.png" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="764" data-original-width="1229" height="398" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ7ic3Subo9Cy-QpWEPI22KK0E46ilr7i4IWHRy68oQ766kNCJcC98kvfVYYVflbw_6xThciPcWGEzuY_JEaKaP9osurJRVNKDix8LeJd4oPZD27fqvEoTP0afXwh1TVuVfUapHCp6vBIoWjuIQ1kqZK9uiWyhevwLPMWE2v5Fp6Kbei4K4Jp0ERuBvCvx/w640-h398/Amazon%20listing.png" width="640" />
</a>
</div>
<br />
<hr />
<h2>Advertisements</h2>
<h2>Minstrels and Mini PETs</h2>
<p>Minstrel and Mini PET kits and ready built units are available from my SellMyRetro store.</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX=w600-h450" width="600" />
</a>
</div>
<h2>Minstrel 4D</h2>
<p>Minstrel 4D kits and ready built units are available from thefuturewas8bit.com</p>
<p><a href="https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html" rel="nofollow" target="_blank">https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/s1600/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/w600-h450/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" width="600" />
</a>
</div>
<hr />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of blog posts and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-21448505448246623692024-02-04T13:14:00.001+00:002024-02-04T13:14:05.796+00:00Converting VIC20 Multi-Part Games - Vegas Jackpot<p><i>In one of my Patreon update posts, I mentioned that there was a 5th game in this last round of conversions, but I was not going to write it up. Ever since, I have been bombarded by constant demands by literally nobody, so I have finally relented and written it up.</i></p>
<p>The 5th game to be revisited was Vegas Jackpot, a nice little fruit machine simulator. I had the Atari 800XL version of this and remember playing this quite a lot (or maybe more loading it so my mam could play it).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiGTIONMp8mx5GOvlv821JlgW5iCPXFLEOdgUX_NeiST6tfGuyofHq8sOSdLFcW7Oi_FpRH_Gq8A3JU-YJt-gqPbU-LO2dMc-K_4JInEjjeLI8pPlmN2leNWa3yz0yb3q2peSLHmNi4B8-KAQz29nX2isuebTMvWC7Rne3MiokVvxpXxDQGJWCD3s_KlJCB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiGTIONMp8mx5GOvlv821JlgW5iCPXFLEOdgUX_NeiST6tfGuyofHq8sOSdLFcW7Oi_FpRH_Gq8A3JU-YJt-gqPbU-LO2dMc-K_4JInEjjeLI8pPlmN2leNWa3yz0yb3q2peSLHmNi4B8-KAQz29nX2isuebTMvWC7Rne3MiokVvxpXxDQGJWCD3s_KlJCB=w600-h450" width="600" />
</a>
</div>
<p>This one was held back for three reasons.</p>
<ol style="text-align: left;">
<li>It was just a little over 4K, which was annoying because it would take up an 8K slot.</li>
<li>It is bit difficult to play without the instructions that are printed int the cassette sleeve.</li>
<li>TFW8b hates it.</li>
</ol>
<p>Not put off by any of those things, I went ahead and converted it.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhSqaVpxv1xqMrlsMNvv1SdqBJjLYt0aPuvDXOLxBi4IsUD8zE26sLCYcyNSP-zIfIuhn-J1VLiU28s6W2OPUSSjZ-mGgKo3qXHMtK70d5yOVzT1wSCFv25aZUWdlg49EbUzVz6bYXODhbm_4fIXEGeDI_XdaivpUU6eqw90o_HHYXhS1IJkxIjsIa3LglT" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhSqaVpxv1xqMrlsMNvv1SdqBJjLYt0aPuvDXOLxBi4IsUD8zE26sLCYcyNSP-zIfIuhn-J1VLiU28s6W2OPUSSjZ-mGgKo3qXHMtK70d5yOVzT1wSCFv25aZUWdlg49EbUzVz6bYXODhbm_4fIXEGeDI_XdaivpUU6eqw90o_HHYXhS1IJkxIjsIa3LglT=w600-h450" width="600" />
</a>
</div>
<p>It is a fairly simple two part game, part 1 puts up the title and loads part 2, the game itself.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjiKvxVoI6N3yVtz43ccY2e6LdSC2b6gYj97--sGlrZy-Wu-IpzqNgsryUWz9PKGBpYP_e8ecPlCPLhdNuwTt-hqGpNvLD-47154lasNnB6UKEgJVBJC82CF75yEx9PEKcW9csvJ9Ii8QotpZtdADrx3jqMw2ckQ-nvCzNKEWW--M0czCVOi2nyTB-49RVS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjiKvxVoI6N3yVtz43ccY2e6LdSC2b6gYj97--sGlrZy-Wu-IpzqNgsryUWz9PKGBpYP_e8ecPlCPLhdNuwTt-hqGpNvLD-47154lasNnB6UKEgJVBJC82CF75yEx9PEKcW9csvJ9Ii8QotpZtdADrx3jqMw2ckQ-nvCzNKEWW--M0czCVOi2nyTB-49RVS=w600-h450" width="600" />
</a>
</div>
<p>Part 1 is a BASIC program, which is a bit difficult to follow on the VIC screen, and because it starts the code to draw the randomly multicoloured border around the screen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiDmqyZ7MTH9FMmmi47FGUqO8Hrsg9kDQ3KD7-NJ5rF_MlpIslvEQEgY9cmRqE4ugsPAYjg1Ld_HdN9hY7_Gd4NUH6g_7K1R9OisTo7L9s1pbT9EKfSdKLzm7meQ4T7eY3se6xAVupMeS2sA4za4YXBsyzRI0MMlAyJyUyKyhtnvK96GsxOJdhPCbTlpjuG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiDmqyZ7MTH9FMmmi47FGUqO8Hrsg9kDQ3KD7-NJ5rF_MlpIslvEQEgY9cmRqE4ugsPAYjg1Ld_HdN9hY7_Gd4NUH6g_7K1R9OisTo7L9s1pbT9EKfSdKLzm7meQ4T7eY3se6xAVupMeS2sA4za4YXBsyzRI0MMlAyJyUyKyhtnvK96GsxOJdhPCbTlpjuG=w600-h450" width="600" />
</a>
</div>
<p>At the end, it does a simple <b>LOAD</b> command to load part 2, which is a standard machine code program with a <b>10 SYS <i>xyz</i></b> line at the start.</p>
<p>For a change, let's look at that in CBM .prg Studio (<a href="https://www.ajordison.co.uk/" rel="nofollow" target="_blank">https://www.ajordison.co.uk/</a>), the tool I use to write the BASIC programs for this sort of thing.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhmFVQp_C5daasX4pFmIqgP0005qER9N1mwc32atE0keSyq-qbk3Fb3vBUxe0zEI4XKMrYMSeWN0F6voroe2arhJlL4eK43sIxw4HEH4Q20OCMzZipEayt5E-XL-GFKfZFTrIcERbgGX6LYfY9tgYmu5zC6UZfNX3IJiPi6_kHqKbBn9i_cfYMBiafVUk0F" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="933" data-original-width="1244" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhmFVQp_C5daasX4pFmIqgP0005qER9N1mwc32atE0keSyq-qbk3Fb3vBUxe0zEI4XKMrYMSeWN0F6voroe2arhJlL4eK43sIxw4HEH4Q20OCMzZipEayt5E-XL-GFKfZFTrIcERbgGX6LYfY9tgYmu5zC6UZfNX3IJiPi6_kHqKbBn9i_cfYMBiafVUk0F=w600-h450" width="600" />
</a>
</div>
<p>Line 10 sets the background and border colour black and clears the screen.</p>
<p>Line 20 defines a random colour function</p>
<p>Lines 30-60 draw the four lines of coloured blocks that make up the border.</p>
<p>Line 70 jumps over the oddly placed routine at 80</p>
<p>Line 80 is the draw routine</p>
<p>Lines 90-210 draw the title screen text</p>
<p>Line 220 waits for a keypress</p>
<p>Line 230 loads and runs part 2</p>
<p>Normally with something like this, I would change that last line to something like <b>SYS 41088</b> so it would just back into the cartridge ROM to load part 2 into RAM and run the game.</p>
<p>Part 2 starts with a "PRESS F7 TO START" screen, a hint that F7 is the key to use to spin the reels, but not really enough information to play the game.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj4pXjab9iS2CzNZ7hkGa8VeJkWw-JAFNw6d_Hmq2XyqXp8WVjHTquOABssoHNgbZ1602X83gkc0f838qDcKo1-hTxwiOFqZGiffLdP86MDdQllznq4J8PBhTxjmt0PEsFl7U32zHkte0wiPeXZXWlUPPqmfyDUFH4PNMJTWscph1UMTHHMxl0JkpFtKFNV" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj4pXjab9iS2CzNZ7hkGa8VeJkWw-JAFNw6d_Hmq2XyqXp8WVjHTquOABssoHNgbZ1602X83gkc0f838qDcKo1-hTxwiOFqZGiffLdP86MDdQllznq4J8PBhTxjmt0PEsFl7U32zHkte0wiPeXZXWlUPPqmfyDUFH4PNMJTWscph1UMTHHMxl0JkpFtKFNV=w600-h450" width="600" />
</a>
</div>
<p>Here I decided to add a page of instructions.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiI1no9v5STUGNZM43UGRAopsqMvAQcDB6M6QLhqexdqC1T6CrTuNJ3uhRlFzQ6HzR2gvTsHwn_V_l7M2KZVSHAlg72pPHMFIICDH6aGRA4EvXwVwwD3vMU6dsLYgaCuG1yH9xpoNIA8TpuxELGfaIzDYiFI73lBhwKc_JNMr_MXkaWGig1QGWJ2Sckh0C9" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiI1no9v5STUGNZM43UGRAopsqMvAQcDB6M6QLhqexdqC1T6CrTuNJ3uhRlFzQ6HzR2gvTsHwn_V_l7M2KZVSHAlg72pPHMFIICDH6aGRA4EvXwVwwD3vMU6dsLYgaCuG1yH9xpoNIA8TpuxELGfaIzDYiFI73lBhwKc_JNMr_MXkaWGig1QGWJ2Sckh0C9=w600-h450" width="600" />
</a>
</div>
<p>I tried to fit this into the style of the previous title screen, and listed the important control keys.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjifmg44SO--agtp4pY-QKniwnttk4BbH8pm-tDVtXkG-vkgzw5ckqnyxVnJ-OD2PGW1C3pZuUee52_hMs323rt8TH1jpSeQnNa3aV3yv5BEjpZLmaaO1IX7WHP65AW2_8p63XzCvjwO14aZ2p6Ymqfhgea1CoJd7-KZ1u-dZtLoA0Wv29F2YZhUHz9WaF-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="920" data-original-width="1227" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjifmg44SO--agtp4pY-QKniwnttk4BbH8pm-tDVtXkG-vkgzw5ckqnyxVnJ-OD2PGW1C3pZuUee52_hMs323rt8TH1jpSeQnNa3aV3yv5BEjpZLmaaO1IX7WHP65AW2_8p63XzCvjwO14aZ2p6Ymqfhgea1CoJd7-KZ1u-dZtLoA0Wv29F2YZhUHz9WaF-=w600-h450" width="600" />
</a>
</div>
<p>I moved the border drawing lines to the end, and turned those into a routine that I could GOSUB once at the start, and again before drawing the second page.</p>
<p>The extra instructions took the final size to about 5K, but it was always going to be over 4K anyway.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQg0Ch4hQj8_UraH2K5ZkO481Ciyu1YGLag8ehBxf043r9Vmv38wSF358CF_gY_oiiAgPoBIogy_R6irylRHY6Pfh1syUluyJD-0dr7FxnQIkGgsvh6ulWZ8-xaK9Ts_YLSuJxZe5wn97mDKQAHTyckoJ4l8HHHxVrqrW2ugbkLyic-ZlRistms-pfrygA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQg0Ch4hQj8_UraH2K5ZkO481Ciyu1YGLag8ehBxf043r9Vmv38wSF358CF_gY_oiiAgPoBIogy_R6irylRHY6Pfh1syUluyJD-0dr7FxnQIkGgsvh6ulWZ8-xaK9Ts_YLSuJxZe5wn97mDKQAHTyckoJ4l8HHHxVrqrW2ugbkLyic-ZlRistms-pfrygA=w600-h450" width="600" />
</a>
</div>
<p>Time will tell if I managed to sneak this into a future update. This week we have been presented with two nice games to add, one 36K RPG, and one progressing well and looking to be 32K. So there will be a little more trimming to do and I might finally get rid of Q*Bert.......</p>
<hr />
<h2>Advertisements</h2>
<h2>Penultimate +2 Cartridge</h2>
<p>The Penultimate +2 Cartridge is in stock at The Future Was 8 bit, note the new website is TFW8b.com.</p>
<ul>
<li>
<a href="https://tfw8b.com/product/vic20-penultimate-plus-two/" rel="nofollow" target="_blank">https://tfw8b.com/product/vic20-penultimate-plus-two/</a>
</li>
</ul>
<p>More info in a previous post:</p>
<ul style="text-align: left;">
<li>
<a href="http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html" rel="nofollow" target="_blank"> http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html</a>
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/s1280/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1022" data-original-width="1280" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/w600-h480/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" width="600" />
</a>
</div>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-57509139430482928682024-01-28T13:46:00.002+00:002024-02-03T22:29:31.640+00:00Converting VIC20 Multi-Part Games - Operation Ganymed<p><i>Another VIC20 Cartridge Conversion from the Patreon archive.</i></p>
<p>Operation Ganymed was another early request. It's a better Jupiter Lander than Jupiter Lander, but it is in many parts, with trick filenames etc. and was marked down as "too much work".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhOtKbFvSMIZy7F1mB7ujolxnq48JhEVcs3_lXC9YrfdMWb-hN743OzfmKOK5BvqsUVpuiU7hV3S8mquvRsP5F0-AjI7u1dXKl5Rk6DJXzr0FQcigk4_r7zR4zvbtVqnBU2NV-6FKOZ9TfA1D1rH7cBI80dqpCCf-Vc4LuWhyPpRcotWngeaRy07IW45LD5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhOtKbFvSMIZy7F1mB7ujolxnq48JhEVcs3_lXC9YrfdMWb-hN743OzfmKOK5BvqsUVpuiU7hV3S8mquvRsP5F0-AjI7u1dXKl5Rk6DJXzr0FQcigk4_r7zR4zvbtVqnBU2NV-6FKOZ9TfA1D1rH7cBI80dqpCCf-Vc4LuWhyPpRcotWngeaRy07IW45LD5=w600-h450" width="600" />
</a>
</div>
<p>The first part has a filename which includes a screen clear and colour change. And yes, that is the spelling, not Ganymede the moon of Jupiter.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgRcyYj5HlNrsufwuyjnfIEivnqKeGnNY5L3uuj9cjmhAAL6hrHc_Bf6BExX8mSfUrem0ic4Fm2WxDvYWmTsNgR68hbrxw0NFwXpN3jx3F3ExVbjmQzkjxbf7zJalFBGRwSFP90Lrj6yv0brw1DKl3eWxahcI6zIQNsGi_ddJGVdaLj8Dl_VAEJFSoXmHSs" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgRcyYj5HlNrsufwuyjnfIEivnqKeGnNY5L3uuj9cjmhAAL6hrHc_Bf6BExX8mSfUrem0ic4Fm2WxDvYWmTsNgR68hbrxw0NFwXpN3jx3F3ExVbjmQzkjxbf7zJalFBGRwSFP90Lrj6yv0brw1DKl3eWxahcI6zIQNsGi_ddJGVdaLj8Dl_VAEJFSoXmHSs=w600-h450" width="600" />
</a>
</div>
<p>This then goes straight to loading a second part, this time with a colour and border change, and no actual name.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEget_jPVjV4CW6TYe9QNLQLeM_QLkz1iOoUjU1T5m7oqsWS-sNBOa6LHaKDUqx42SWJkIt8bAGk4GEkzAT1hsgfaNPiRIKdbNpTS103l8dxoOlQTUqV3fTR313UdnEXAT0vsoThLSihUEFQkthCr4bFV0P5CPRjbHwHa4RS7vOOhuRz5qhMNtEYzHjryglY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEget_jPVjV4CW6TYe9QNLQLeM_QLkz1iOoUjU1T5m7oqsWS-sNBOa6LHaKDUqx42SWJkIt8bAGk4GEkzAT1hsgfaNPiRIKdbNpTS103l8dxoOlQTUqV3fTR313UdnEXAT0vsoThLSihUEFQkthCr4bFV0P5CPRjbHwHa4RS7vOOhuRz5qhMNtEYzHjryglY=w600-h450" width="600" />
</a>
</div>
<p>The result, after nearly 2 minutes of loading, is a title screen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhvTECh6qe1zbGHfeivPhIIr4Sty32ntr-uZk9NrE6oxnKWP2GhmYEerp_s4QadtxWx6bkrTpFu4sdn-_DE8hSliJ2MgyUeCUNNL0_fBd5d_irR4LFKpje_GCkYOMBMaAhnX2mBh5lc1KCLpZZrWrDTiIA432CaQtQ-CPcECOpJ1p52zVshakhDHtMjSADn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhvTECh6qe1zbGHfeivPhIIr4Sty32ntr-uZk9NrE6oxnKWP2GhmYEerp_s4QadtxWx6bkrTpFu4sdn-_DE8hSliJ2MgyUeCUNNL0_fBd5d_irR4LFKpje_GCkYOMBMaAhnX2mBh5lc1KCLpZZrWrDTiIA432CaQtQ-CPcECOpJ1p52zVshakhDHtMjSADn=w600-h450" width="600" />
</a>
</div>
<p>After pressing space, the third part starts loading, again with a clear screen filename.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiLUfTCaZAAbD7jMBtc-oVt3NmKE5qoywqqGhh9adLh8Tx6ZnbPzCnJTyYil3OlAONTV9oqre648htw9Aj5xty7vOskJ9i7YmpE1WOwRE_TRIfNeeEmbaNnOKoEPSgHOgFPY3jPTEXOTtFUz0J48z5zBwDUYtCH9FG56Vtwun419sXNCzImJ6c24dTozo0x" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiLUfTCaZAAbD7jMBtc-oVt3NmKE5qoywqqGhh9adLh8Tx6ZnbPzCnJTyYil3OlAONTV9oqre648htw9Aj5xty7vOskJ9i7YmpE1WOwRE_TRIfNeeEmbaNnOKoEPSgHOgFPY3jPTEXOTtFUz0J48z5zBwDUYtCH9FG56Vtwun419sXNCzImJ6c24dTozo0x=w600-h450" width="600" />
</a>
</div>
<p>Another minute and we are at instructions.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEghW_qe5piYRj413LrSoLso8rMJ30z8V0wK8PYQUCNNGL4JUsW_PtX6lck7T6ME5TUJYp1fJij6dxNXTtP0cCaV7y3MgodQGalZPeuz0rnD1JGBXuJDYm4XtYi1cZOLYOHs5wOn0xm4cFPuzHytkaPGHeta9agTdelYtoZ1pNy5uU027WUpotc713DQWWXK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEghW_qe5piYRj413LrSoLso8rMJ30z8V0wK8PYQUCNNGL4JUsW_PtX6lck7T6ME5TUJYp1fJij6dxNXTtP0cCaV7y3MgodQGalZPeuz0rnD1JGBXuJDYm4XtYi1cZOLYOHs5wOn0xm4cFPuzHytkaPGHeta9agTdelYtoZ1pNy5uU027WUpotc713DQWWXK=w600-h450" width="600" />
</a>
</div>
<p>These do not mention Operation Ganymed(e), but instead seem to be indicating "<b>L</b>unar <b>M</b>odule" might have been the title?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhzKRjqIJLuifdhztl1m4dgJm-48lJkTsUwF9YQRUhUYD2DWl7f1GuGfFRjEVWEleC6gaz2L_nWlCzuXKX3J86APtmJjwHvt3QItACO8T5omO1LvzAMqYCXmk27YqaMGLcObyOWqgR2IlUkc9QdTiDpVKCJJtufyv6qaAc6U-Nqo9wcz5zH8Hj744QTYKoq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhzKRjqIJLuifdhztl1m4dgJm-48lJkTsUwF9YQRUhUYD2DWl7f1GuGfFRjEVWEleC6gaz2L_nWlCzuXKX3J86APtmJjwHvt3QItACO8T5omO1LvzAMqYCXmk27YqaMGLcObyOWqgR2IlUkc9QdTiDpVKCJJtufyv6qaAc6U-Nqo9wcz5zH8Hj744QTYKoq=w600-h450" width="600" />
</a>
</div>
<p>Each screen is a different colour, and you progress through by pressing shift, which is a little unusual.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiB24lv_w92g5M1_X7UycJwEsLXkqsfMSz2MnmYQLSSxTj0JeUYH1Mu6pg0PN7trUO0fCNNkPEqd4GliLbqIchfKSR41lKZi8a9he-OJf53rb0UNNir54YkAmjn_T6Z4VYo4MtHkHdZR4tEWLXZl7L_ZmYqCU1c0S-wlA4ZXVxeWJtNsVDyG0FYYF457rgO" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiB24lv_w92g5M1_X7UycJwEsLXkqsfMSz2MnmYQLSSxTj0JeUYH1Mu6pg0PN7trUO0fCNNkPEqd4GliLbqIchfKSR41lKZi8a9he-OJf53rb0UNNir54YkAmjn_T6Z4VYo4MtHkHdZR4tEWLXZl7L_ZmYqCU1c0S-wlA4ZXVxeWJtNsVDyG0FYYF457rgO=w600-h450" width="600" />
</a>
</div>
<p>The final page ends with a "please wait..." as part four is loaded in the background.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjiwwlZgH4BcvNMwEVhk3xZiwlpeN1P5BH3vxB1-udIxid4oKOBjWeBuE0ohRxQcLU2uRjTwTAxXuAuHNGRIAT4qtHTIUy1HF1R-FB6tArvsuEro-2LzIl-KeFTbva8LkN6PPjYw8vAzaPeX7FN3WmIXTy7IjPWcI0H8t1MpNwgOgrseDD3LMRv0mAJliT0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjiwwlZgH4BcvNMwEVhk3xZiwlpeN1P5BH3vxB1-udIxid4oKOBjWeBuE0ohRxQcLU2uRjTwTAxXuAuHNGRIAT4qtHTIUy1HF1R-FB6tArvsuEro-2LzIl-KeFTbva8LkN6PPjYw8vAzaPeX7FN3WmIXTy7IjPWcI0H8t1MpNwgOgrseDD3LMRv0mAJliT0=w600-h450" width="600" />
</a>
</div>
<p>Finally the game loads, with the option of playing the game, or changing the colour.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjlww50sJeqrEEMEAJTKZclXWdV293V92Ml6F1d4kDChjeVq_cBzPQ0o0VAyfH06cZpylsl_4u7zgHYEYLFxPMSvTQ3jpX6IBk2D8G4NntZtninnXa_q6ywnCbQrxqf6Co8oQI7G_W0mVE4Qr6KR1a0X_64W5EicqhdaqFDJb6lVOJ1S-tlFCwbtLXIxpyC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjlww50sJeqrEEMEAJTKZclXWdV293V92Ml6F1d4kDChjeVq_cBzPQ0o0VAyfH06cZpylsl_4u7zgHYEYLFxPMSvTQ3jpX6IBk2D8G4NntZtninnXa_q6ywnCbQrxqf6Co8oQI7G_W0mVE4Qr6KR1a0X_64W5EicqhdaqFDJb6lVOJ1S-tlFCwbtLXIxpyC=w600-h450" width="600" />
</a>
</div>
<p>And it plays well, a nicer version of Jupiter Lander.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgd6P6ijkVkyuvTgSemULK97wOPEhFMyIZfHEUQ8LVv84vQbbuL9xHf1CAj30AhxktznvrZ7t_-X7WvryM-66tf-xCNJJYMgmD5ooBcEFhGCDv2zfq4wSMbh_gEDlqDOAkelqx8fyuA9vCLWcDj2PLmksDkvxuCDuqaLPV3EfT9oKY6Lp4SiBhUIx_s7Lqq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgd6P6ijkVkyuvTgSemULK97wOPEhFMyIZfHEUQ8LVv84vQbbuL9xHf1CAj30AhxktznvrZ7t_-X7WvryM-66tf-xCNJJYMgmD5ooBcEFhGCDv2zfq4wSMbh_gEDlqDOAkelqx8fyuA9vCLWcDj2PLmksDkvxuCDuqaLPV3EfT9oKY6Lp4SiBhUIx_s7Lqq=w600-h450" width="600" />
</a>
</div>
<p>No mention of Operation Ganymed here either, and again L.M. Lunar Module?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjTLDlmV1XzviJKhXLBCXxy7l4H4uaMCVjJHzSVjD4h3Kux-fDIbVtrQMVfdNmpIlKZ1eCz_7B6G0gTpYOvVGhFsD-0LZTHcLbx64JOCsbUiSZbxY0HBQ_O3At8I80Lgad1PNZ-u2V4sS4kcMRRGg0F8O9qF3_AsP0MQr6j2AnnkM8k8gwoV9pjGqQ99iHW" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjTLDlmV1XzviJKhXLBCXxy7l4H4uaMCVjJHzSVjD4h3Kux-fDIbVtrQMVfdNmpIlKZ1eCz_7B6G0gTpYOvVGhFsD-0LZTHcLbx64JOCsbUiSZbxY0HBQ_O3At8I80Lgad1PNZ-u2V4sS4kcMRRGg0F8O9qF3_AsP0MQr6j2AnnkM8k8gwoV9pjGqQ99iHW=w600-h450" width="600" />
</a>
</div>
<p>The alternate colour scheme is pretty much the same, just with a black background.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgJ8mteR9JhhOIAig8g3vHZdrXAyz6QZ4BqePIu5WFEmk5K6CtEH_RxDJT8JngoTK3NkoZcgyO7ETOA6RDGczw2vvF6O38jHc2OcH2JOC_J8c7dPLYXNI0NiC47QbN1jKccqN4SRsSqvgHfuYOnaKo5hSx6L0CebKG5x1cBk9ubQYrrTznV7CHIFuudJFYk" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgJ8mteR9JhhOIAig8g3vHZdrXAyz6QZ4BqePIu5WFEmk5K6CtEH_RxDJT8JngoTK3NkoZcgyO7ETOA6RDGczw2vvF6O38jHc2OcH2JOC_J8c7dPLYXNI0NiC47QbN1jKccqN4SRsSqvgHfuYOnaKo5hSx6L0CebKG5x1cBk9ubQYrrTznV7CHIFuudJFYk=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">Investigation</h2>
<p>There was a lot going on here. Lots of files with trick filenames and adding it all up, it almost fills the memory three times, the title, the instructions and then the game.</p>
<ul style="text-align: left;">
<li>Part 1 title screen 561 bytes</li>
<li>Part 2 chars data 2050 bytes</li>
<li>Part 3 instructions 2017 bytes</li>
<li>Part 4 game 3586 bytes</li>
</ul>
<p>Part 1 is BASIC, and uses a variation of the ON A GOTO type technique to do different things when the program runs for a second time.</p>
<p>I put a breakpoint in the monitor at the point the filename is written to screen and then changed the colour back to blue so that I could see what was going on.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhKJInL79H9XOk8vgOqFzyAol322-AdJF0QP0a8LqofabJGatPSFprX_C-GU52_5Mm-fAPFSFfuk_aTR2TmyovREaTrAc6SlUbBnrUxT9cvHVTXs68OlwvSMmpWMn6y4Wm2fWDnXu5lXy4b-kgkgtPr2hjgalHxXtOUoExzJWc_HmEMxj-F5bK-36X0-2ZM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhKJInL79H9XOk8vgOqFzyAol322-AdJF0QP0a8LqofabJGatPSFprX_C-GU52_5Mm-fAPFSFfuk_aTR2TmyovREaTrAc6SlUbBnrUxT9cvHVTXs68OlwvSMmpWMn6y4Wm2fWDnXu5lXy4b-kgkgtPr2hjgalHxXtOUoExzJWc_HmEMxj-F5bK-36X0-2ZM=w600-h450" width="600" />
</a>
</div>
<p>So it seems the second part didn't have a trick filename, the colours were already set to not be visible.</p>
<p>Part2 is called NEWCHRS, and is character data, loaded at $1400. I thought this was character data for the game, but this gets overwritten later on, so it only for the title screen. It's OK, but not sure it was worth the effort. Could have done something similar with PETSCII characters and shaved a few minutes off the load time?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEieusymndNB4nw1TgIGEL5ciVswQWLEMqPGgNwyLXH1TkvwyDhtj-j_PQAOLNDw_sJif4J13YHq_6YWFo7tiECKv3-PsD0tw36nMI_3wc6Rz7dk99WSVpWvqV2L-uZbA_CwBUeIhpCfkO6HbH1YTtoeyKy8LH6xz6pmbCeDQK-AVQfq0Q7OCIkAg3x6Q9Fi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEieusymndNB4nw1TgIGEL5ciVswQWLEMqPGgNwyLXH1TkvwyDhtj-j_PQAOLNDw_sJif4J13YHq_6YWFo7tiECKv3-PsD0tw36nMI_3wc6Rz7dk99WSVpWvqV2L-uZbA_CwBUeIhpCfkO6HbH1YTtoeyKy8LH6xz6pmbCeDQK-AVQfq0Q7OCIkAg3x6Q9Fi=w600-h450" width="600" />
</a>
</div>
<p>The second pass through the program prints up that title screen and waits for you to press space (or a timeout after 15 seconds which is nice), and then loads part 3 using the plan and simple LOAD command.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEikcmqJVyu0-HRghnu9DDeDWoYRE2GtP-1moQvTeGPyL8woQgm6hq4sEJh5XSHowP6MHTVx5gMUyBvDVBGixLLFy4rg35W5sXOJOVidygWa1uHUzkzAm-EUrhKsDG_Ewm9gMaYbdVaZ4GXWv8B5oP8mABuKbASXHKF7eRVUQmdcO07_k7tLeFPLlrVhMZK5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEikcmqJVyu0-HRghnu9DDeDWoYRE2GtP-1moQvTeGPyL8woQgm6hq4sEJh5XSHowP6MHTVx5gMUyBvDVBGixLLFy4rg35W5sXOJOVidygWa1uHUzkzAm-EUrhKsDG_Ewm9gMaYbdVaZ4GXWv8B5oP8mABuKbASXHKF7eRVUQmdcO07_k7tLeFPLlrVhMZK5=w600-h450" width="600" />
</a>
</div>
<p>Part 3 is again BASIC, and is the instructions.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhfQcjRfZmiEoXEOTYsz_BeAA95W4SE7LWeDJPw3FGN3AJfxsS5cVUsz3U2eUeb3wToHuZieVIwcKujWLHu9OBLv15frbjCkcHKrZl-QxIKLqZFvoVL2fFSzsncsc9kscS-Vs5XmgRT9flI68MRoRo3XdKBD6gMqLPoFQOCBgV5U9dNsEmPScMM52pbUKex" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhfQcjRfZmiEoXEOTYsz_BeAA95W4SE7LWeDJPw3FGN3AJfxsS5cVUsz3U2eUeb3wToHuZieVIwcKujWLHu9OBLv15frbjCkcHKrZl-QxIKLqZFvoVL2fFSzsncsc9kscS-Vs5XmgRT9flI68MRoRo3XdKBD6gMqLPoFQOCBgV5U9dNsEmPScMM52pbUKex=w600-h450" width="600" />
</a>
</div>
<p>At the end of the 4th page of instructions, it pokes some code into RAM and then runs it.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhu4ITv1hKyLTd_l0fvZRhiDVe7OK515uH4DT92U4gYY6c8q5t2hwy5aIdxwjp3kw3lqQY9THE_ztZ0eAL6UkvC0Db-tDFrOZrOXNNBhCJo7Bjn3wKSb3GgJPr37knA2KiG_Iv7YaL6zGWXKcCZoS3zEJwwLfEVkgQmwstdE2MLKoN5Yg2wzzcZb6FgD7_y" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="448" data-original-width="596" height="482" src="https://blogger.googleusercontent.com/img/a/AVvXsEhu4ITv1hKyLTd_l0fvZRhiDVe7OK515uH4DT92U4gYY6c8q5t2hwy5aIdxwjp3kw3lqQY9THE_ztZ0eAL6UkvC0Db-tDFrOZrOXNNBhCJo7Bjn3wKSb3GgJPr37knA2KiG_Iv7YaL6zGWXKcCZoS3zEJwwLfEVkgQmwstdE2MLKoN5Yg2wzzcZb6FgD7_y=w640-h482" width="600" />
</a>
</div>
<p>This calls the usual KERNAL routines to load the program, but then jumps to the address held in RAM at $0001.</p>
<p>Looking at the RAM, it is set to $1949, which is a reasonable entry point, but when did that get set?</p>
<p>It was only later I realised it was set in this program, in line 20.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEha9y_hXlHiVSfKO_f5fwqE_TlYDL_eFmg-2OfG4NMm1-SkVko1qmBGwXoHX0GGirsGI8gX-3AHyDs2xx4hF9JSlm0qt5N4w0F4pOIr3_0vsjkyGvbOuOhn8V0xWAx7x8K6R0xuMTCEAmyNEGRF9-cjOgdSU-vw7QuM-COfO01W9UXsM-OsY-28mknWjjkF" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEha9y_hXlHiVSfKO_f5fwqE_TlYDL_eFmg-2OfG4NMm1-SkVko1qmBGwXoHX0GGirsGI8gX-3AHyDs2xx4hF9JSlm0qt5N4w0F4pOIr3_0vsjkyGvbOuOhn8V0xWAx7x8K6R0xuMTCEAmyNEGRF9-cjOgdSU-vw7QuM-COfO01W9UXsM-OsY-28mknWjjkF=w600-h450" width="600" />
</a>
</div>
<p>See?</p>
<p>No?</p>
<p>Well, I had better look at line 20 in CBM prg Studio, see if that can shed any light on it.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhDmrekGB4qaxEZa1HJLElUEEIwQv6OJICilhiy0OwIohPVmI4lLHmLndhJnfHzItHJyXU5h570RtPpJR7F93cYVhWmEHVtm7FhyTr-lYLSr0jIK6EKvfFokWonEPwv0yIzf4jY2PqheNgOY0GAdW4qVM2_s00e38-Optj32OiPH6R01wp1Q1lfQiWT7I1T" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="91" data-original-width="451" height="130" src="https://blogger.googleusercontent.com/img/a/AVvXsEhDmrekGB4qaxEZa1HJLElUEEIwQv6OJICilhiy0OwIohPVmI4lLHmLndhJnfHzItHJyXU5h570RtPpJR7F93cYVhWmEHVtm7FhyTr-lYLSr0jIK6EKvfFokWonEPwv0yIzf4jY2PqheNgOY0GAdW4qVM2_s00e38-Optj32OiPH6R01wp1Q1lfQiWT7I1T=w640-h130" width="600" />
</a>
</div>
<p>And there we are, the delete characters will overwrite the two pokes with the REM statement. Neat.</p>
<p>Once it loads the game, it jumps to that address and starts the game.</p>
<h2 style="text-align: left;">The Conversion Process</h2>
<p>This was the first time I had to deal with 4 parts, so I had to copy and paste the copy routine a couple of times. Copy the character data for the title to RAM at $1400, then load the part 1 program to $1001 as normal. I removed the loading routines and jumped back to cartridge ROM as usual.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgSJsCHYDBmakemYjleIwzAtqo-1ppRfzmR8O2UbZPuR9HMniYxK-TBSEUk4-47jdavDJuqLbrI_WfpjhB2hhAb3gzSkuNs3yqacYqFi50Mx_ANWiqu8mSsvT7RiRoWlXm0PmgDsniTWoTJHFHHEvygeQPCXkmu3IZ5I8aylKjmDUV8Jf0usB8eQSHQB6rT" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgSJsCHYDBmakemYjleIwzAtqo-1ppRfzmR8O2UbZPuR9HMniYxK-TBSEUk4-47jdavDJuqLbrI_WfpjhB2hhAb3gzSkuNs3yqacYqFi50Mx_ANWiqu8mSsvT7RiRoWlXm0PmgDsniTWoTJHFHHEvygeQPCXkmu3IZ5I8aylKjmDUV8Jf0usB8eQSHQB6rT=w600-h450" width="600" />
</a>
</div>
<p>For the instructions, I modified the end to reuse the "press shift" routine and then jump back to the ROM, where it would copy the final forth part into RAM and jump to the secret start address.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3ig_9RE5iPl49g5YCwkDnv9LaP1hn55Zwfi31fLDCHd3jWZseKoNZEXqPPMCNp4LswVAxp2hCtdSYkW1L5FmwyyrjbhHn31HN5AI_gNNHBYOla5vfHvt6Km5Nkl0y4Gw74GpBAh-49iZ9VgXioc_xW0t_kj_RWwJDrnexdEtVXLUZWkyjVEcUs8gWQ3f_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3ig_9RE5iPl49g5YCwkDnv9LaP1hn55Zwfi31fLDCHd3jWZseKoNZEXqPPMCNp4LswVAxp2hCtdSYkW1L5FmwyyrjbhHn31HN5AI_gNNHBYOla5vfHvt6Km5Nkl0y4Gw74GpBAh-49iZ9VgXioc_xW0t_kj_RWwJDrnexdEtVXLUZWkyjVEcUs8gWQ3f_=w600-h450" width="600" />
</a>
</div>
<p>And it didn't work. It displayed the F1/F3 screen and then started the game, but the lander didn't appear and it just hung there.</p>
<p>I wasn't sure what the difference was, maybe some extra routines somewhere? I dumped the whole RAM from the working tape and my broken cartridge versions and compared them.</p>
<p>And there were some differences in the code area.</p>
<p>I did a bit more looking around trying to find out what was going on. It didn't seem like the routine in Cops'n'Robbers where the whole data was XORed before running, just a few changed here and there between what was loaded from tape, and what was currently running.</p><p><a href="http://blog.tynemouthsoftware.co.uk/2024/01/converting-vic20-multi-part-games-cops-n-robbers.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2024/01/converting-vic20-multi-part-games-cops-n-robbers.html</a></p>
<p>At this point I had two options.</p>
<ol style="text-align: left;">
<li>Investigate further to find out how the code is being modified and replicate that</li>
<li>Cheat.</li>
</ol>
<p>I couldn't see anything obvious going on, and I had already done a lot of these so I decided to cheat. I just cut out the code block from the RAM dump and loaded that instead, and it worked fine.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgUUVFFMOKPlooF6EaADv5KNdtoT_B1YHadFPOo9kec9PiHU8bopVV1smhYkuCyvs5y6sZAGadDKK4vh0kDuyVh0QE1ZiiDK6x-f3srwacJKzaktkp3sIaoW1kJMs3ezlHi7Za5ZEJgOKkIuvC77syveRJKznZeGl5TMtp5uNXm-PoNFwWNKlnFN-mnLlXR" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgUUVFFMOKPlooF6EaADv5KNdtoT_B1YHadFPOo9kec9PiHU8bopVV1smhYkuCyvs5y6sZAGadDKK4vh0kDuyVh0QE1ZiiDK6x-f3srwacJKzaktkp3sIaoW1kJMs3ezlHi7Za5ZEJgOKkIuvC77syveRJKznZeGl5TMtp5uNXm-PoNFwWNKlnFN-mnLlXR=w600-h450" width="600" />
</a>
</div>
<p>I will leave that one last mystery unsolved, since the game is working nicely now. I thought I might revisit it when I wrote this up for Patreon (I didn't). Maybe I will revisit it before I post it to the main blog (I won't). <i>(ed: I didn't)</i></p>
<hr />
<h2>Advertisements</h2>
<h2>Penultimate +2 Cartridge</h2>
<p>The Penultimate +2 Cartridge is in stock at The Future Was 8 bit, note the new website is TFW8b.com.</p>
<ul>
<li>
<a href="https://tfw8b.com/product/vic20-penultimate-plus-two/" rel="nofollow" target="_blank">https://tfw8b.com/product/vic20-penultimate-plus-two/</a>
</li>
</ul>
<p>More info in a previous post:</p>
<p></p><ul style="text-align: left;"><li><a href="http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html" rel="nofollow" target="_blank"> http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html</a></li></ul>
<p></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/s1280/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1022" data-original-width="1280" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/w600-h480/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" width="600" />
</a>
</div>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-25031034329124002882024-01-21T10:47:00.001+00:002024-01-21T10:47:06.473+00:00Converting VIC20 Multi-Part Games - Outback<p><i>Another VIC20 Cartridge Conversion from the Patreon archive.</i></p><p>Outback is a quirky little shooting game where the player can only move up and down and fire, with a bit of a hint of Lemmings, and a stronger hint of Pooyan.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh1AnYUKQkwSG6P0HYqcbtcJZp4b9hVwsXB1zYCkVXFx8ZLeyVisBU3G_Jze8-8o-11MpEqo7t5AJ28xUbMJ2yQbPmhFKkHh9OKD644W7jaUFCwQcwTAwUWJVT7Y6qkG7OZAY0_2MYPYKS7L1dfRwMVcCXksz2NIUS7IAtrqPwcpbMAwd5igLUkfi5YxwfS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh1AnYUKQkwSG6P0HYqcbtcJZp4b9hVwsXB1zYCkVXFx8ZLeyVisBU3G_Jze8-8o-11MpEqo7t5AJ28xUbMJ2yQbPmhFKkHh9OKD644W7jaUFCwQcwTAwUWJVT7Y6qkG7OZAY0_2MYPYKS7L1dfRwMVcCXksz2NIUS7IAtrqPwcpbMAwd5igLUkfi5YxwfS=w600-h450" width="600" />
</a>
</div>
<p>Outback was another of the challenging ones. First off was actually finding a working version. There were several tap files online, but none of them seemed to load fully, they would just run on after the final part was meant to have loaded.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhC9KgoHVo1ambQr72uTtQeDrXQAiGjHQfkXjptjhiix4gW7vJdicY-9PTv8zMZA0DWdWqHfxTOE1HahjEr-WHeEQMi7z4vPOoAUSRdjDIFI4VSsIQhpjRJJBYtfw2FT7REcHuVLznuAXLxOaE_954KI71-xZw80BkrOcG2wUy04Y79I5Hz0N_o9Lea7WWD" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhC9KgoHVo1ambQr72uTtQeDrXQAiGjHQfkXjptjhiix4gW7vJdicY-9PTv8zMZA0DWdWqHfxTOE1HahjEr-WHeEQMi7z4vPOoAUSRdjDIFI4VSsIQhpjRJJBYtfw2FT7REcHuVLznuAXLxOaE_954KI71-xZw80BkrOcG2wUy04Y79I5Hz0N_o9Lea7WWD=w600-h450" width="600" />
</a>
</div>
<p>There isn't anything to say there is a problem, it just sits there doing nothing. But, it has been set to black text on a black background. If I change the text colour, you can see the problem.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhYBXHgjnLps_uHdzyz-xx96ZabwIcxfuZRXhMTZ4mLdw0J0DmVlDLjt03GOk1L3iewz89bov5BKmFTKVU26dJL3uiRPBvPLsJ39dC2SgImC_-8XtMRb1sGTYinVpl8YddOqAJdjovPvr1fYSjEi9hGwD8mgF_wEnNBXIiU7ysRJNeUZSsetn6HzzDEL0FI" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhYBXHgjnLps_uHdzyz-xx96ZabwIcxfuZRXhMTZ4mLdw0J0DmVlDLjt03GOk1L3iewz89bov5BKmFTKVU26dJL3uiRPBvPLsJ39dC2SgImC_-8XtMRb1sGTYinVpl8YddOqAJdjovPvr1fYSjEi9hGwD8mgF_wEnNBXIiU7ysRJNeUZSsetn6HzzDEL0FI=w600-h450" width="600" />
</a>
</div>
<p>TFW8b had a cassette, and recorded tap files of both sides. Side A did the same thing, but finally the version from side B loaded.</p>
<p>It appears to be in many parts. The first parts goes straight to loading a second.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgEfBVDs-4-JQbxQ25ufEL4RNITdnqUfyh-DiJMWfdwqoxMt10jcUhLacK1hkmPLuVO1umSB-hc_jLLRZzpZOYWSizQqMtKPAc2efWZHkXZe3Nvs40kFc-CxPurT-pt0ttN6IcOx1MpgeXfmAfdeKRxJAYkWwMfPWoHW0UP8asmNflkOnJVzPux0sYFsZPQ" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgEfBVDs-4-JQbxQ25ufEL4RNITdnqUfyh-DiJMWfdwqoxMt10jcUhLacK1hkmPLuVO1umSB-hc_jLLRZzpZOYWSizQqMtKPAc2efWZHkXZe3Nvs40kFc-CxPurT-pt0ttN6IcOx1MpgeXfmAfdeKRxJAYkWwMfPWoHW0UP8asmNflkOnJVzPux0sYFsZPQ=w600-h450" width="600" /></a></div><br />The second puts up a title screen with the "LEAVE THE TAPE" message, and it is presumably loading things in the background.<p></p>
<p>Changing the text colour again, this time it is loading correctly.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfHgSm6hMOiD4tGkCSJTeJHQsbYCCZBtE-yHlsPRuH-OfAF-o199QJYmCC4Fd4ZARUTgxRETSUy3sdHNCEOCKAaG_YJ6MDeC-iPiPyVytdlYqxxCm12AwTOJBNsb-7oLmnSuvXLfF1zYWXqlM9aG033a4e523zf9XknCnFhIK4qX31q9cNdNVkfzB3fZue" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfHgSm6hMOiD4tGkCSJTeJHQsbYCCZBtE-yHlsPRuH-OfAF-o199QJYmCC4Fd4ZARUTgxRETSUy3sdHNCEOCKAaG_YJ6MDeC-iPiPyVytdlYqxxCm12AwTOJBNsb-7oLmnSuvXLfF1zYWXqlM9aG033a4e523zf9XknCnFhIK4qX31q9cNdNVkfzB3fZue=w600-h450" width="600" />
</a>
</div>
<p>There may be several parts being loaded at this point.</p>
<p>Finally we arrive at "PRESS BUTTON".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgLIXXRgIdJdsEJxuyOVgC9y7vw8jTPq6Z-nVRSjC48wPEMrZ24-blNP-VCfYb5fCjjrvmJu6VW95PIzw-Rlvozyw1xysSV5q34q2CsMXg5bvP0RYAKJHt2sAl_07jUaaOBRljhNjz6YsqgtL8yx0Sd8AmqJFAraHRvUXHJRcQ82h6v4wP1b_Po5T78VFHX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgLIXXRgIdJdsEJxuyOVgC9y7vw8jTPq6Z-nVRSjC48wPEMrZ24-blNP-VCfYb5fCjjrvmJu6VW95PIzw-Rlvozyw1xysSV5q34q2CsMXg5bvP0RYAKJHt2sAl_07jUaaOBRljhNjz6YsqgtL8yx0Sd8AmqJFAraHRvUXHJRcQ82h6v4wP1b_Po5T78VFHX=w600-h450" width="600" />
</a>
</div>
<p>Next you are prompted to enter a skill level.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEitCcbKO53hH3BuflK0pD63ol74wtLy4HfSatFYuEHjkZUhU30HcY62cnbTyNHi-CcYKoPiPhyHnbgOzUzXSnNRHc2SLFcgGBifnbB_mU8ERVeGQ4MmL5CThI-zes7UMS41Eto7xsTCr7Uf-EVo8NYMtWlkLtLkBvGfp6l-8AtEyl2ityUGPUoj1pYLo6g6" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEitCcbKO53hH3BuflK0pD63ol74wtLy4HfSatFYuEHjkZUhU30HcY62cnbTyNHi-CcYKoPiPhyHnbgOzUzXSnNRHc2SLFcgGBifnbB_mU8ERVeGQ4MmL5CThI-zes7UMS41Eto7xsTCr7Uf-EVo8NYMtWlkLtLkBvGfp6l-8AtEyl2ityUGPUoj1pYLo6g6=w600-h450" width="600" />
</a>
</div>
<p>And then the game begins.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiDy2KnZfv7msqLQ6Ompm0leGWNFiClvqKI2pTE_k1MF8lBpolxkXqMS9xnTz_C1B7oKJqgAUyhG7RTt0UhTZcu0m5RJ_INHWzYLEn_y4Zuv6t4-Gw2fY2ZIIJwumlvM6bbNBjBBA6kz9z8qZxBDTITgub3NQphL0Vuztj3S7OP1Nv47s3qiuM4lC4iTkj1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiDy2KnZfv7msqLQ6Ompm0leGWNFiClvqKI2pTE_k1MF8lBpolxkXqMS9xnTz_C1B7oKJqgAUyhG7RTt0UhTZcu0m5RJ_INHWzYLEn_y4Zuv6t4-Gw2fY2ZIIJwumlvM6bbNBjBBA6kz9z8qZxBDTITgub3NQphL0Vuztj3S7OP1Nv47s3qiuM4lC4iTkj1=w600-h450" width="600" />
</a>
</div>
<p>For some reason the player wonn't move up or down and just autofires. I am told it works correctly on real hardware, but it did not work on vice.</p>
<p>That was the point I gave up at last time, as I thought the file was still damaged. However, now I think I know what was happening, I thought it warranted further investigation.</p>
<h2 style="text-align: left;">Further Investigation</h2>
<p>This is a four part loader.</p>
<p>The first part does some copy protection, then loads the second part.</p>
<p>The second part loads the third and forth parts and then runs the game.</p>
<p>The first, second and forth parts are BASIC. The third is character data and assembled code.</p>
<p>Part one is mainly pokes. Let's see what is going on.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh9bOztIsBSQ6nwjlM1llfVTUbDfQGdsYpRJRHb_Esi9GRQ1eniuIxk03uH7EN1pJKXzuKdDP1ti_8dD_ld1ExasQCcnx6hek3jTFn3b_1DcEQ_04iKmcBWCcL3pNqyj7cYZx9E1xCQFfezDYwRtwyWJMavPw2_B_rJ9A6NpCW6YfO4G-XakfTNB5JoOVP0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh9bOztIsBSQ6nwjlM1llfVTUbDfQGdsYpRJRHb_Esi9GRQ1eniuIxk03uH7EN1pJKXzuKdDP1ti_8dD_ld1ExasQCcnx6hek3jTFn3b_1DcEQ_04iKmcBWCcL3pNqyj7cYZx9E1xCQFfezDYwRtwyWJMavPw2_B_rJ9A6NpCW6YfO4G-XakfTNB5JoOVP0=w600-h450" width="600" />
</a>
</div>
<p><b>POKE 198,6</b> sets the keyboard buffer count to 6</p>
<p><b>POKE 632...POKE 636</b> puts 6 characters into the keyboard buffer. These are L, shift+O, return, R, shift+U, return.</p>
<p>L + shift O is the shortcut for <b>LOAD</b> and R + shift U is <b>RUN</b>. This loads and runs the second program.</p>
<p><b>POKE 648,30</b> sets video address to $1E00 (which is where it would already be on an unexpanded VIC20)</p>
<p><b>POKE 808, PEEK(808)+2</b> disables the stop key by changing the error handler from $F770 to $F772</p>
<p><b>POKE 37150, PEEK(37150) AND 127</b> This is the interrupt register on VIA#1 and sending 0111 1111 will disable all interrupts, including the restore key.</p>
<p><b>IF PEEK(56) > 30 THEN POKE 642,32 </b></p>
<p>If 8K or more is installed, this rearranges the memory to use the screen at $1E00</p><p><b>SYS 64824</b></p>
<p>64824 is $FD38, a call into the KERNAL ROM which will process the characters in the keyboard buffer as stored above (<b>LOAD</b> and then <b>RUN</b>)</p>
<p><i>Not sure why it does that as that would happen anyway when the program ends?</i></p>
<p>Program 2 then loads, lets have a look at that.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjeHckTcN2JatoOuHuwKz-GjaV4v-u4PdiWPS-PGzL_lMzqB-1fjd3KOZHfv_soFVsOaEz8SAvclB2TkhEb5Il56Z2HHvef1AERAAW4jzPtSGurFnsHUS6h_Kp-h__5xCSX-YUlpeqI0jMYiE2jqDBvATi2XVN4RV7zJZWccyjZtPwLrn4qtdwiczHqn8k4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjeHckTcN2JatoOuHuwKz-GjaV4v-u4PdiWPS-PGzL_lMzqB-1fjd3KOZHfv_soFVsOaEz8SAvclB2TkhEb5Il56Z2HHvef1AERAAW4jzPtSGurFnsHUS6h_Kp-h__5xCSX-YUlpeqI0jMYiE2jqDBvATi2XVN4RV7zJZWccyjZtPwLrn4qtdwiczHqn8k4=w600-h450" width="600" />
</a>
</div>
<p>This uses a trick to detect when a program is run multiple times. At first run, A will equal 0, so the first statement will set A to 1, and then the O<b>N A GOTO</b> will <b>GOTO 30</b>.</p>
<p>30 prints up a title screen. <b>POKE 36879,8</b> set the border and background to black.</p>
<p>It then does <b>LOAD "",1,1</b> which will load from cassette to the address in the file. </p>
<p>After the load, whatever program is in memory will be run. The program it has loaded has a load address of $1800, so that has gone into the memory at $1800. When it comes to do the <b>RUN</b>, the original program 2 is still in memory at the default load address of $1001, so that gets run for a second time.</p>
<p>Now, A goes to 2, and the <b>ON A GOTO</b> now <b>GO</b>es <b>TO</b> line 1000. Here it does the same keyboard buffer trick with <b>LOAD</b> and <b>RUN</b> as program one, and then the forth and final program is loaded and run.</p><p>This is a BASIC program, and is finally the game itself.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjHe1euhROQEc_-vKyiAhEPaCEVkSWUtCRjke9xGnXr5W_5JSUOG7bDnOO-vEfXFiKE_nirF4bLm14I3trMi9QUY-5e0cATQiY6QmacoRSMWFJkqZ0oodN3c68YnLWmZnp9TWfSDzZWiCjpoksZu4pJmH7eA2vNhjpKh2FcYxeUf__WkN_6TVO9jeYbBXj9" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjHe1euhROQEc_-vKyiAhEPaCEVkSWUtCRjke9xGnXr5W_5JSUOG7bDnOO-vEfXFiKE_nirF4bLm14I3trMi9QUY-5e0cATQiY6QmacoRSMWFJkqZ0oodN3c68YnLWmZnp9TWfSDzZWiCjpoksZu4pJmH7eA2vNhjpKh2FcYxeUf__WkN_6TVO9jeYbBXj9=w600-h450" width="600" />
</a>
</div>
<p>It starts with RUN 510, which jumps to the line which prints "PRESS BUTTON".</p>
<h2>The Conversion Process</h2>
<p>I worked out I only needed the following lines from the first program to disable run/stop and restore. </p>
<p><b>POKE 808, PEEK(808)+2 : POKE 37150, PEEK(37150) AND 127</b></p>
<p>The rest is to do with loading part two and rearranging the memory if required. I control the memory arrangement for the game when loaded from cartridge, so it will not be needed.</p><p>I only needed the title screen from the second program, so I made a new BASIC program with the bits from program one and two combined.</p>
<p>I got rid of the <b>ON A GOTO</b> stuff and all the <b>LOAD</b> and keyboard buffer prep. We don't need that anymore.</p>
<p>I changed LEAVE THE TAPE to PRESS A KEY and added a simple wait on key press and then a <b>SYS</b> call back into the cartridge ROM.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh3Zd93euFvpbGrva9Ba-0fTu0bpNjX6nXWmZymtxJZYNCSRaYiprxWhDXSS-eXxqeRu4j_SEs2KVvpMK9B_LGUE95eRF1H6kWk82WvokhcVsHKgi2o1EisCqCz14MAv0_pakfGRD3m62YGEGFav6LLVhFlKX6UG83oYRDf9Y_qvUQJ9syVJQdkPnMYsIiw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh3Zd93euFvpbGrva9Ba-0fTu0bpNjX6nXWmZymtxJZYNCSRaYiprxWhDXSS-eXxqeRu4j_SEs2KVvpMK9B_LGUE95eRF1H6kWk82WvokhcVsHKgi2o1EisCqCz14MAv0_pakfGRD3m62YGEGFav6LLVhFlKX6UG83oYRDf9Y_qvUQJ9syVJQdkPnMYsIiw=w600-h450" width="600" />
</a>
</div>
<p>Back in the cartridge ROM, it loads the character data to $1800, and the final program to the usual address of $1001 and then runs it.</p>
<p>I made one change to the game program, I change the RUN line at the start to bypass the "press button" / high score screen and go straight to the skill level selection screen. That screen is still displayed when you lose the game, it is only skipped on the first run.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjUoHKeAvQ8bNxy6suf4D-1uMisyye73gRYSYDV--yYKQNNBMe4hIGMW_PevCOL29UiIfULGk_b8pnA9dNYGYw8WSti7NknmWJACzEEJ-DwoIMnwRo2b9RN87gqAAzDEF1HVDP01yGZpTAe9w3sIk-IIkMScWQi8vY1bP9akWP7zk9Rl0hRO904D1NBb3nK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjUoHKeAvQ8bNxy6suf4D-1uMisyye73gRYSYDV--yYKQNNBMe4hIGMW_PevCOL29UiIfULGk_b8pnA9dNYGYw8WSti7NknmWJACzEEJ-DwoIMnwRo2b9RN87gqAAzDEF1HVDP01yGZpTAe9w3sIk-IIkMScWQi8vY1bP9akWP7zk9Rl0hRO904D1NBb3nK=w600-h450" width="600" />
</a>
</div>
<p>I put it all together and tried it in the emulator and it worked, the player could move and fire.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgjFgk8ZFJvE537GQsbJREFqQpsibiLq2bwWJpDo-1y4GCxDgUIOZWt4zfXAbdRKUGA4WpiJ0LKdzZ0QpROsfikxuSk0qO7Psy-0RsJl4hAthlbU8HVGrMEWq6k3Hp8oufoN4bxtnTKQc0VHC46UsaNgfMqJSapPI87bYHOeAG_gqw8v_HDZ8RCGqNBkRZV" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgjFgk8ZFJvE537GQsbJREFqQpsibiLq2bwWJpDo-1y4GCxDgUIOZWt4zfXAbdRKUGA4WpiJ0LKdzZ0QpROsfikxuSk0qO7Psy-0RsJl4hAthlbU8HVGrMEWq6k3Hp8oufoN4bxtnTKQc0VHC46UsaNgfMqJSapPI87bYHOeAG_gqw8v_HDZ8RCGqNBkRZV=w600-h450" width="600" />
</a>
</div>
<p>I realised what it was that was stopping the player moving, the problem previously seen in Bandits (<a href="http://blog.tynemouthsoftware.co.uk/2023/08/inexplicable-autofire-explained.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/08/inexplicable-autofire-explained.html</a>) where the joystick read is done without masking the bits. If you still have play pressed on the datasette, it will read wrong. </p><p></p><p>My cartridge version didn't use the datasette, so it is not a problem. I tested the tap version again in the emulator, and verified it wasn't moving. Then I stopped the datasette and the autofire immediately stopped and I was able to move and fire at last.</p>
<br />
<hr />
<h2>Advertisements</h2>
<h2>Penultimate +2 Cartridge</h2>
<p>The Penultimate +2 Cartridge is in stock at The Future Was 8 bit, note the new website is TFW8b.com.</p>
<ul>
<li>
<a href="https://tfw8b.com/product/vic20-penultimate-plus-two/" rel="nofollow" target="_blank">https://tfw8b.com/product/vic20-penultimate-plus-two/</a>
</li>
</ul>
<p>More info in a previous post:</p>
<p></p><ul style="text-align: left;"><li><a href="http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html" rel="nofollow" target="_blank"> http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html</a></li></ul>
<p></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/s1280/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1022" data-original-width="1280" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/w600-h480/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" width="600" />
</a>
</div>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-80010074898603523962024-01-14T10:50:00.005+00:002024-01-14T18:35:43.343+00:00Converting VIC20 Multi-Part Games - Rock Man<p><i>Another VIC20 Cartridge Conversion from the Patreon archive.</i></p>
<p>Rock Man is quiet a nice Boulderdash / Repton type game.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4kofcRol7C4EdK8-4pi_2ByiGAqFKwtD18ELuWakcGvocU2GSJA63L4cqZ2Iv0ViOV5LLABjGuDzESRioPOFFjUYAzrkSuNj4HgRTIfusaFCpcdkaFZxlyhS6R7_jtFbqZAdgg2v5JMw2c4aJ8vAP79SzPPWJfgsOX667V-1XaZPn3UAVylBSldC4zjr-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4kofcRol7C4EdK8-4pi_2ByiGAqFKwtD18ELuWakcGvocU2GSJA63L4cqZ2Iv0ViOV5LLABjGuDzESRioPOFFjUYAzrkSuNj4HgRTIfusaFCpcdkaFZxlyhS6R7_jtFbqZAdgg2v5JMw2c4aJ8vAP79SzPPWJfgsOX667V-1XaZPn3UAVylBSldC4zjr-=w600-h450" width="600" />
</a>
</div>
<p>This one is available as a tape and also a disk version with slightly different code. I think I hit a problem when looking at the tap version last time, so let's have a go with the D64 version this time.</p>
<p>It is in two parts. The first program loads and brings up a title page.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiatzYC52pTPI2ekv6o4xkv_MpfBkOChzjebxzohP6-3OwguMkCcivpuHjLozKET7Ge4gm2lHiD3phCJH8H7MqDM56S7pRFaK3CdwoCL_vMLmu-Ann1zDYQ-DPYSru34M60616C1kdPBA49ZAwV7ZJlDbFwosd97D_Xjm9ER4JZFHfV8qIs-b_2ti22o9y3" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiatzYC52pTPI2ekv6o4xkv_MpfBkOChzjebxzohP6-3OwguMkCcivpuHjLozKET7Ge4gm2lHiD3phCJH8H7MqDM56S7pRFaK3CdwoCL_vMLmu-Ann1zDYQ-DPYSru34M60616C1kdPBA49ZAwV7ZJlDbFwosd97D_Xjm9ER4JZFHfV8qIs-b_2ti22o9y3=w600-h450" width="600" />
</a>
</div>
<p>It then switches to an instructions screen where you can set keys if you want to.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjPdDycaJs6vcREr8Z8kOeflp8iltljewQ68lGWQS-8xovLhKOzm5vkwW6d1LjetoIIeyc4urODFdEUPyoIeLAXpCfEGWwYsNFamWI7uLOV_2TTcudQWbt05lCA_6j3BIaZsuq826KLPirZDVYf4OYPf3hJDNw_6XfxYySjHGkrt4hCCyDIO0O1OSCMkxxv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjPdDycaJs6vcREr8Z8kOeflp8iltljewQ68lGWQS-8xovLhKOzm5vkwW6d1LjetoIIeyc4urODFdEUPyoIeLAXpCfEGWwYsNFamWI7uLOV_2TTcudQWbt05lCA_6j3BIaZsuq826KLPirZDVYf4OYPf3hJDNw_6XfxYySjHGkrt4hCCyDIO0O1OSCMkxxv=w600-h450" width="600" />
</a>
</div>
<p>And then the game loads.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFs4ppKd52pA2savFGqvnQsGCppWkbhGb9eOaYSfFfaXSG6vapfJADrGMktVZ4XrB5uGWV1xUTfp9WGKp6oz7zirnYuWIJmjJKPDtpTFxu8HPxlr-q91__xYzsWHR8P4UtSTG8ohBrSPia4B-WE1AZKjFpwxZhMyF_ENjwkV172r936jUFWJpp0HcEn_p5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFs4ppKd52pA2savFGqvnQsGCppWkbhGb9eOaYSfFfaXSG6vapfJADrGMktVZ4XrB5uGWV1xUTfp9WGKp6oz7zirnYuWIJmjJKPDtpTFxu8HPxlr-q91__xYzsWHR8P4UtSTG8ohBrSPia4B-WE1AZKjFpwxZhMyF_ENjwkV172r936jUFWJpp0HcEn_p5=w600-h450" width="600" />
</a>
</div>
<p>The first looks like a BASIC program, but it include a <b>SYS 5800</b> call, jumping to code which is immediately after the end of the BASIC program. I think that is why this one was previously passed on, it just makes it a bit more difficult to work on as that file has to be specially generated.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj_bAdLvXDiJTm7ijwt3Vgsk6i3re1dz26BI50mFxhGMC3NyQl0oc8Gf2heWlM5FrIEBxE8N8Td8mIkt7cgXhqi4fdF8OCyBlsWi7-b3TMrSSDpiI2dcyJg69Hhl_oEPlfZo6tPQarx8-iIvWVf9xUCsM_Y46KHc0243JiLkCXuZhdSz8n8S-X3oNH3srKp" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj_bAdLvXDiJTm7ijwt3Vgsk6i3re1dz26BI50mFxhGMC3NyQl0oc8Gf2heWlM5FrIEBxE8N8Td8mIkt7cgXhqi4fdF8OCyBlsWi7-b3TMrSSDpiI2dcyJg69Hhl_oEPlfZo6tPQarx8-iIvWVf9xUCsM_Y46KHc0243JiLkCXuZhdSz8n8S-X3oNH3srKp=w600-h450" width="600" />
</a>
</div>
<p>Looking at 5800 ($16A8), there is quite a lot of code which appears to be setting up the VIC chip, clearing the colour RAM etc.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh3gzt1VbucWq9W1J0CLOsjNx5REO5syW1_mbLa9NyF-4cMmIGJao03hLn3eRxj344ObR7DBIs3SAnij7vT5I57rR8aPym2fJyLzNPN_QeiE2xlqgI6cY92rxoYZFxSlbE4nY2apn1sVvI3yS96MbxrKxiOITZCTSTZQFzU_IyZV2n_uqUFkXVrB_KcfE8F" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="656" data-original-width="874" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh3gzt1VbucWq9W1J0CLOsjNx5REO5syW1_mbLa9NyF-4cMmIGJao03hLn3eRxj344ObR7DBIs3SAnij7vT5I57rR8aPym2fJyLzNPN_QeiE2xlqgI6cY92rxoYZFxSlbE4nY2apn1sVvI3yS96MbxrKxiOITZCTSTZQFzU_IyZV2n_uqUFkXVrB_KcfE8F=w600-h450" width="600" />
</a>
</div>
<p>There is a lot of code, so I didn't get too involved in reverse engineering. I was just looking for the usual calls to the KERNAL load routines.</p>
<p>Ah, there they are right at the end, with the filename of the next part immediately after.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjKXqTuN0KS1yvmCKaegqXPd2tTEcV-5uj7iGng0tsayZZx5kE79HMF4ACKzVXJAgO9Oss7eEmOL7mnYLs6X5w2Jwybonb8YCW4lzTiTXyiOSJqBpr8Q3QdbvONwt2-U2R42nVpfMx9wTjAbOCRAs01twhAIpHH8ONms1oa9tETIcnr0C2BUXI3z7ny9kJs" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="584" data-original-width="778" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjKXqTuN0KS1yvmCKaegqXPd2tTEcV-5uj7iGng0tsayZZx5kE79HMF4ACKzVXJAgO9Oss7eEmOL7mnYLs6X5w2Jwybonb8YCW4lzTiTXyiOSJqBpr8Q3QdbvONwt2-U2R42nVpfMx9wTjAbOCRAs01twhAIpHH8ONms1oa9tETIcnr0C2BUXI3z7ny9kJs=w600-h450" width="600" />
</a>
</div>
<p>So far so good, although it is not clear what is going on before the first call, but it is easy enough to replace the first KERNAL routine call <b>JSR FFBA</b> with <b>JMP <i>xxxx</i></b> to go back to the cartridge ROM to load the next part.</p>
<p>I tried that, but it didn't work.</p>
<p>I put a breakpoint on the code in the cartridge, but it didn't fire. I put a breakpoint on the code at $18E2, but it didn't fire either.</p>
<p>Odd?</p>
<p>I did a bit more stepping through and it turns out it copies this code to the cassette buffer and runs it from there. <i>(I should have realised as the code at $0349 sets the filename to be read from $0362, where it is now)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh06XRp1dkS7BIkzoBPOIc1wc42FYVspGaDGzlhuslhnI2PDpjx0-vG-LbrykV6d4wa_OtBt7kNb0hHZ7uREkvMlrBgm8yJkqEJrwUdmI2pnqjphxMJJ8pzWFv_necu2saRcUCUJkpk9ZRPKs7Pgh4AbpHau1FKD1VWllmHxF80nTkvJWo6ah2ah653ebv4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="582" data-original-width="776" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh06XRp1dkS7BIkzoBPOIc1wc42FYVspGaDGzlhuslhnI2PDpjx0-vG-LbrykV6d4wa_OtBt7kNb0hHZ7uREkvMlrBgm8yJkqEJrwUdmI2pnqjphxMJJ8pzWFv_necu2saRcUCUJkpk9ZRPKs7Pgh4AbpHau1FKD1VWllmHxF80nTkvJWo6ah2ah653ebv4=w600-h450" width="600" />
</a>
</div>
<p>But hang on, what's that <b>BRK</b> instruction at $0340? That shouldn't be there.</p>
<p>I initially thought this was copy protection, but investigating further I think it is a mistake in the code.</p>
<p>I think I need to change style....</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjqg1nTtHMdkscTae8MXmvd1N7UiRoN1eph1VFmOodQ50hCXy_gKYY9rBYr8OFI5SWzBsUfoKnrJn6eXy3v6ejul6SRYmPpIgbkO5ggzJomydaCY1ktqHSGwSCng3ol3R12kJRIJhWW9KAEPMxo9c0XIOCIYbXA2tbc3STiUCRKXSinmIUVWDo2t7gc-NqD" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjqg1nTtHMdkscTae8MXmvd1N7UiRoN1eph1VFmOodQ50hCXy_gKYY9rBYr8OFI5SWzBsUfoKnrJn6eXy3v6ejul6SRYmPpIgbkO5ggzJomydaCY1ktqHSGwSCng3ol3R12kJRIJhWW9KAEPMxo9c0XIOCIYbXA2tbc3STiUCRKXSinmIUVWDo2t7gc-NqD=w600-h450" width="600" />
</a>
</div>
<p><i>"Hey it's Robin. Today we're looking at a bug in a 40 year old game....."</i></p>
<p>This is the code which gets written to the cassette buffer.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiTfmFSjb7m_MvwZIqBCxTlm6bMkYOZ9gvYpMtYkG_CE7174Vk8NDib8I_a172pi7PqZnDR_6czxT59Uz73O-FvPJWKZn5nEoO75BV5pD-rpWry-BrfjD-xMsujuvItb5ALrjOEem1bAqO6dRD_PqfDtbYpqy-fRWk9PBUik1EDYbtwgFeFSpq6Cr83Vsiw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="542" data-original-width="724" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiTfmFSjb7m_MvwZIqBCxTlm6bMkYOZ9gvYpMtYkG_CE7174Vk8NDib8I_a172pi7PqZnDR_6czxT59Uz73O-FvPJWKZn5nEoO75BV5pD-rpWry-BrfjD-xMsujuvItb5ALrjOEem1bAqO6dRD_PqfDtbYpqy-fRWk9PBUik1EDYbtwgFeFSpq6Cr83Vsiw=w600-h450" width="600" />
</a>
</div>
<p>Note the instruction at $0340 is <b>LDX #$08</b>, load the X register with $08. Later, there is a call to $FFBA, which is SETLFS, a KERNAL routine which sets various device addresses based on the X, Y and A registers. it stores the X register at $BA, the primary address of the device being accessed. $08 is the expected value here for the disk drive. It most likely contains $08 already since it just loaded part 1 from there.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgCHN34Y2SJMjSIL28hAo_Cb5YVW9lvVuBLkbL5z_KaJmKarChpdSCViqQmJVhSH3LvQNJ997iv6RPma5wVz2JKgmdQK1qthMWhxtnAFs_-bf9ylDgAFRZSrsHdg5AWT1c6i_AuyAeEy2vkUZZtxICIQAUC9Fsp7nfGHd5ZPuD9Y3Vz4yEKZzp95SetSSye" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="441" data-original-width="588" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgCHN34Y2SJMjSIL28hAo_Cb5YVW9lvVuBLkbL5z_KaJmKarChpdSCViqQmJVhSH3LvQNJ997iv6RPma5wVz2JKgmdQK1qthMWhxtnAFs_-bf9ylDgAFRZSrsHdg5AWT1c6i_AuyAeEy2vkUZZtxICIQAUC9Fsp7nfGHd5ZPuD9Y3Vz4yEKZzp95SetSSye=w600-h450" width="600" />
</a>
</div>
<p>This is the code which calls that code block, and the last thing it does is load the current value of $00BA and stores it at $0340. Several odd things here. Why use <b>LDX $00BA</b>? it would have saved a byte and a cycle to use the faster the zero page version, <b>LDX $BA</b>. Secondly, and most importantly, it is writing to $0340, rather than $0341, which I think is what was intended. I think the code at $16D5 should have been <b>STX $0341</b>.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhNl6sIbAw4gAozKy-97ZvyMRkaML0VRQDZg_i4T8wzOjjzU8PCSIrPSGAn8U5q2y55mUHTwy4FZRucB0kHr5CCbYt67CM7gHWA9chmH4qwvazMcKK6G008Pt6bzcboa2h8VUS90rwfL5MFzA6AY9MQ6YfcMwD75AdsYncAbQPkVntF16B_3FEg_90VefJj" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="574" data-original-width="766" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhNl6sIbAw4gAozKy-97ZvyMRkaML0VRQDZg_i4T8wzOjjzU8PCSIrPSGAn8U5q2y55mUHTwy4FZRucB0kHr5CCbYt67CM7gHWA9chmH4qwvazMcKK6G008Pt6bzcboa2h8VUS90rwfL5MFzA6AY9MQ6YfcMwD75AdsYncAbQPkVntF16B_3FEg_90VefJj=w600-h450" width="600" />
</a>
</div>
<p>When loading from disk, the <b>LDX #$08</b> now gets replaced with $08 $08, which is <b>PHP</b> then another <b>PHP</b>. Which I am sure is not intentional, as it will not set the X register. By a fluke, the PHP instructions are basically harmless (pushing extra things onto the stack, which is likely to be cleared by the new game), and X just happens to already contain 08, so it does actually work.</p>
<p>When loading from cartridge, the disk routines have not been accessed, so the value of $00BA is uninitialised, $00 on the emulator. The buggy code copies the value to the wrong place it ends up as <b>BRK</b> and <b>PHP</b>, rather than <b>LDX #$00</b> (which would have been fine since the disk routine was never being called).</p>
<p>I had also changed the call to SETLFS to be the jump to the cartridge ROM to load part 2.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhwORElHesAkbDcLxtyqapjGkcXpNLxwEcQIdr-85jUqXQoV1-cpW_UY1mBgv7avryNRj5BpidjMlUTb7Ml3Mm_Sjil8cejNfxFOkjeTUWOAtIlfL5kXm3Tc-JToggKERrZuqkGJv-vhDSAw9VQOSesj7UzMEnsxt3k46-jDK3SogjXj94C_w-GdITqckBK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="580" data-original-width="772" height="482" src="https://blogger.googleusercontent.com/img/a/AVvXsEhwORElHesAkbDcLxtyqapjGkcXpNLxwEcQIdr-85jUqXQoV1-cpW_UY1mBgv7avryNRj5BpidjMlUTb7Ml3Mm_Sjil8cejNfxFOkjeTUWOAtIlfL5kXm3Tc-JToggKERrZuqkGJv-vhDSAw9VQOSesj7UzMEnsxt3k46-jDK3SogjXj94C_w-GdITqckBK=w640-h482" width="600" />
</a>
</div>
<p>To fix this, I fixed the bug and changed $16F6 to $41 so the code change the value stored at $0341 as I think was intended.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjun-OJaPn7s0hP89SPn8ol32z38DyKRL8KwL0E5SR-sJ-DRSXC-RPR4m2czJgc99NxUKX2-g6CcxT82HnPQ8UtHejKC-phWkwcE_UbiYRMbkiuOY1IC8ZXNj681PWM5z5bI4wGQSR7TN1bExS4JOpaRe5I5EIdMm1G8v-lEZvdWUtV1-u4YYMHBrLlTMKh" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="440" data-original-width="586" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjun-OJaPn7s0hP89SPn8ol32z38DyKRL8KwL0E5SR-sJ-DRSXC-RPR4m2czJgc99NxUKX2-g6CcxT82HnPQ8UtHejKC-phWkwcE_UbiYRMbkiuOY1IC8ZXNj681PWM5z5bI4wGQSR7TN1bExS4JOpaRe5I5EIdMm1G8v-lEZvdWUtV1-u4YYMHBrLlTMKh=w600-h450" width="600" />
</a>
</div>
<p>That makes <b>LDX #$00</b>, set X to $00. That does not matter as it is not used. There are no unexpected <b>BRK</b> or <b>PHP</b> instructions. <i>I could have fixed this by replacing the write with three <b>NOP</b>s, or changing the jump to $033E to go straight to the cartridge at $A080, but I was just trying to minimise changes.</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjNjD0pgnMqeNX-QxVJYGXzMPrVKWf9H39XmfUJTBSH2UkNbY5eUcY5tkmBXgb8MRfc-80AFyACS8pHKjSGvi6jshAherdQeb309mGrVz6VMDNOoEdAonkTUA8Rtui5mdOQ8EmnB1iz9BZ5bvXuyCTM3j_zGo6ET1YeYRhMv9hkkcuS_ePouafFkv0kKQeE" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="546" data-original-width="728" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjNjD0pgnMqeNX-QxVJYGXzMPrVKWf9H39XmfUJTBSH2UkNbY5eUcY5tkmBXgb8MRfc-80AFyACS8pHKjSGvi6jshAherdQeb309mGrVz6VMDNOoEdAonkTUA8Rtui5mdOQ8EmnB1iz9BZ5bvXuyCTM3j_zGo6ET1YeYRhMv9hkkcuS_ePouafFkv0kKQeE=w600-h450" width="600" />
</a>
</div>
<p>After that, it was just a case of loading in part 2 and running it as normal.</p>
<p>Trying out the cartridge, that worked correctly. As soon as you have selected the keys or no keys, it loads straight into the game.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjygGTNTeWQ-TMHmMSZJxfJA4ts3LWl0CZoGABjrHo_gcz6pyZfhqt37fMqbJh5UJ2WPcg6no-0X4COdyll37kMcx0Hj5BqnkVcxG-r4ofMK7eZ5mbChTqY1laeHGrTf-xopzVo5MuNBYLxPA2nCkjOCPCSe8P_yFojNy_pf2zOEP2ib58_0kIOLRaIjYwE" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjygGTNTeWQ-TMHmMSZJxfJA4ts3LWl0CZoGABjrHo_gcz6pyZfhqt37fMqbJh5UJ2WPcg6no-0X4COdyll37kMcx0Hj5BqnkVcxG-r4ofMK7eZ5mbChTqY1laeHGrTf-xopzVo5MuNBYLxPA2nCkjOCPCSe8P_yFojNy_pf2zOEP2ib58_0kIOLRaIjYwE=w600-h450" width="600" />
</a>
</div>
<p>I left the LOADING ROCK MAN message as it is only there for a second, and I did not want to change the BASIC program as it is a lot easier if the assembler after it stays in a fixed location so I only have to patch the code in a couple of places.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiqgvTkNz41_NoarE_v6MSAJt7z3F01cj265sEN1jkCgnPmi9nF7FCQD5-IvRdfLcpBuXH-_hSAg6cClAii3eBIFibdr5HcUhSN3Wms0WGxBf5-75uQrj8Quu7SX7qNVHIHHohdqvAL4EVwvGPnAQeB_NFRmhlc-R6SgRJtJGwsFqiqF5olc2jrQepZZVAk" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiqgvTkNz41_NoarE_v6MSAJt7z3F01cj265sEN1jkCgnPmi9nF7FCQD5-IvRdfLcpBuXH-_hSAg6cClAii3eBIFibdr5HcUhSN3Wms0WGxBf5-75uQrj8Quu7SX7qNVHIHHohdqvAL4EVwvGPnAQeB_NFRmhlc-R6SgRJtJGwsFqiqF5olc2jrQepZZVAk=w600-h450" width="600" />
</a>
</div>
<p>Quite a nice game, with slightly different rock fall mechanics to Boulder Dash or Repton, I will enjoy getting to know this one.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiFYjHv9VvN7xGBiclZn2uLZuQCqI42eVtMHSXDK2GoRg4XCAI2Bij8IWpZaADvN_3HtcXmb-VLdUBgXjMBnHAEVGgt2wmR9S2YbgofEB2-Uc4BI-HacooFaUTh-THu8JQgalNAruR0j_fjOmZHMNJ4-kyrjmB8YfIMK_kmM2j-C_hUg8yp0OYBY7XIlYNL" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiFYjHv9VvN7xGBiclZn2uLZuQCqI42eVtMHSXDK2GoRg4XCAI2Bij8IWpZaADvN_3HtcXmb-VLdUBgXjMBnHAEVGgt2wmR9S2YbgofEB2-Uc4BI-HacooFaUTh-THu8JQgalNAruR0j_fjOmZHMNJ4-kyrjmB8YfIMK_kmM2j-C_hUg8yp0OYBY7XIlYNL=w600-h450" width="600" />
</a>
</div>
<p><i>And yes, I did spent far too long making a badge. What of it? I don't go around to your house and criticise how you spend your Tuesday evenings.</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXdzKhsaqYiTnGAskYN1xUO-IefzmI4m9dT8QD6KdmW9Vdz6BZrUA7QLk_9MIEvV7aTxyTJMHANdejbjh44kI2Q4iwKxc0t24A4z8EmAqcy1J1lKUBOeCcb5dL6mARIzQbBJmbe0WaRWTibarS5q0rLVQdIMpFXOo01-eEA2ri36PTbs2gWFvE27Ga-hA4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2104" data-original-width="4200" height="300" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXdzKhsaqYiTnGAskYN1xUO-IefzmI4m9dT8QD6KdmW9Vdz6BZrUA7QLk_9MIEvV7aTxyTJMHANdejbjh44kI2Q4iwKxc0t24A4z8EmAqcy1J1lKUBOeCcb5dL6mARIzQbBJmbe0WaRWTibarS5q0rLVQdIMpFXOo01-eEA2ri36PTbs2gWFvE27Ga-hA4=w600-h300" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>Penultimate +2 Cartridge</h2>
<p>The Penultimate +2 Cartridge is in stock at The Future Was 8 bit, note the new website is TFW8b.com. On offer today for £49.99 + VAT</p>
<ul>
<li>
<a href="https://tfw8b.com/product/vic20-penultimate-plus-two/" rel="nofollow" target="_blank">https://tfw8b.com/product/vic20-penultimate-plus-two/</a>
</li>
</ul>
<p>More info in a previous post:</p>
<p></p><ul style="text-align: left;"><li><a href="http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html" rel="nofollow" target="_blank"> http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html</a></li></ul>
<p></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/s1280/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1022" data-original-width="1280" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/w600-h480/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" width="600" />
</a>
</div>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-52256535296949131642024-01-07T11:12:00.002+00:002024-01-07T11:12:30.246+00:00Converting VIC20 Multi-Part Games - Cops'n'Robbers<p>I have converted a lot of cassette games to cartridge format for inclusion on the Penultimate Cartridge. Some well known, some more obscure and not easily available, so it is hopefully bringing these games to a new audience.</p>
<p>When doing these, I have found a few where it has just not worked, or has looked like too much work, and these have been put to one side.</p>
<p>It is time to dig some of these out and try again.</p>
<h2 style="text-align: left;">Cops'n'Robbers</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoCS2JWB84IcfQXe7UCNNahzQFkROwgU1uNf0o1KXQerTcYkfWHL1hbHlXfqujvHHIUeF6BIa92DV1kgi_Zk1_OJsauxsyIIc61ASxOeSCtaw1PKFIJtPUC4Q6gphO-JGDVWxq69l7qDXg075aPxj_MRAejhbkisi5ZDR3A60kIBAdSAYPNIuYPsaWc57/s1600/Cops%20n%20Robbers%20game.png" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnoCS2JWB84IcfQXe7UCNNahzQFkROwgU1uNf0o1KXQerTcYkfWHL1hbHlXfqujvHHIUeF6BIa92DV1kgi_Zk1_OJsauxsyIIc61ASxOeSCtaw1PKFIJtPUC4Q6gphO-JGDVWxq69l7qDXg075aPxj_MRAejhbkisi5ZDR3A60kIBAdSAYPNIuYPsaWc57/w600-h450/Cops%20n%20Robbers%20game.png" width="600" />
</a>
</div>
<p>Cops'n'Robbers is a cassette game that was requested to be added to the Penultimate Cartridge for the last release, but was held back as it looked like it would take a lot of work to convert.</p>
<p>Like many cassette games for the unexpanded VIC20, the program is split into multiple parts so the title and instructions can be displayed and then overwritten by the game which usually needs the full amount of available RAM on the unexpanded VIC20.</p>
<p>This one looked like it might be a little more work as it was in three parts.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjAjnnnGkhJxHXQi0W3lrK2uCId0H-rOuaGeh17JY8NYVpDH0kYqY65dSKQxHXcGfpnEhR2ChH9PNvpcbpLa1UL4_mBB-Mm2QXM7nNNYA9w-17l5VcrinhHPdj8FQig3oKrD7ocN6vIM3rbo5FJg17CcOHeFjZTD1ZrmrFtIuXdjJW79t-ZZI6xkyynZz7l" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjAjnnnGkhJxHXQi0W3lrK2uCId0H-rOuaGeh17JY8NYVpDH0kYqY65dSKQxHXcGfpnEhR2ChH9PNvpcbpLa1UL4_mBB-Mm2QXM7nNNYA9w-17l5VcrinhHPdj8FQig3oKrD7ocN6vIM3rbo5FJg17CcOHeFjZTD1ZrmrFtIuXdjJW79t-ZZI6xkyynZz7l=w600-h450" width="600" />
</a>
</div>
<p>The first sign of trouble as a trick filename. The file is saved with a clear screen character at the start of the filename, so when it is printed it clears the screen before printing the rest of the name.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhtCvpHJmg83DIuO7qz21CfsXnJoUVWe60I2hR8KkAI9xKuGrLLpxt3UNeB77kWViDqL6r-9g20e1ki2uMKYbxFIbSEGjiZpunqSFSyprWcMfpNDXMdQvCGI8bm_h0xN63CkesNT1RjTI8weduT6h5C3sIQ57rsyJa5RdA0yg_OZiGA5ug4t-o3cAAb3c7Z" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhtCvpHJmg83DIuO7qz21CfsXnJoUVWe60I2hR8KkAI9xKuGrLLpxt3UNeB77kWViDqL6r-9g20e1ki2uMKYbxFIbSEGjiZpunqSFSyprWcMfpNDXMdQvCGI8bm_h0xN63CkesNT1RjTI8weduT6h5C3sIQ57rsyJa5RdA0yg_OZiGA5ug4t-o3cAAb3c7Z=w600-h450" width="600" />
</a>
</div>
<p>The first part was designed to be quick to load, and just shows an appropriately gold coloured title page whilst part 2 loads in the background.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEizIIv4-uI1V_oLkgh9QiRJq7wGDwnIpxjxNvtq_rerFQIpaziFWafWcAHGZaz3HnHvaPgmDBHBt9SsPrTguTZtKxfVVr7bKhnKPkFy3CiF8PZ0MVkojseADN-BMGj5Lt-9Gav3EU8ZKFs4Grbj_sJ4zbPd7PNJeNnpkUKxdXB9pWbXzaNZ-PVfbQ2GbEsq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEizIIv4-uI1V_oLkgh9QiRJq7wGDwnIpxjxNvtq_rerFQIpaziFWafWcAHGZaz3HnHvaPgmDBHBt9SsPrTguTZtKxfVVr7bKhnKPkFy3CiF8PZ0MVkojseADN-BMGj5Lt-9Gav3EU8ZKFs4Grbj_sJ4zbPd7PNJeNnpkUKxdXB9pWbXzaNZ-PVfbQ2GbEsq=w600-h450" width="600" />
</a>
</div>
<p>Part 2 displays several screens of instructions and then loads part 3, which is the game.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjpyiW2C_hrP0MqBNETEW0xXaTW6uXRHAJK85iaYQJ_8QGwHgLlppZ3ZzMWBR7ujuDmX5TlkiVIBdb_Z1wvT5LaI7Bt3lDyGQZV-O9yzmZ9NIJHM7pWaoS30A2S5NjMpQVqaqs-83gtgMti4hmfzzsNlJwmDetPwLIlUU698axDa5uaW8Hpv7-KS7AZXGXb" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjpyiW2C_hrP0MqBNETEW0xXaTW6uXRHAJK85iaYQJ_8QGwHgLlppZ3ZzMWBR7ujuDmX5TlkiVIBdb_Z1wvT5LaI7Bt3lDyGQZV-O9yzmZ9NIJHM7pWaoS30A2S5NjMpQVqaqs-83gtgMti4hmfzzsNlJwmDetPwLIlUU698axDa5uaW8Hpv7-KS7AZXGXb=w600-h450" width="600" />
</a>
</div>
<p>Parts 1 and 2 were in BASIC, but part 3 was "written in machine code". Examining the file on tape, it was a bit odd, it seemed to be invalid data.</p>
<p>The load mechanism was also not very clear, it appeared to be jumping to some code after the end of the BASIC program.</p>
<p>So that one was put to one side until I had more time.</p>
<p>I still don't have more time, but this one was requested again, so I had another go.</p>
<h2 style="text-align: left;">Another Go</h2>
<p>The first program is fairly simple, set the screen colour, print the title and then load part 2.</p>
<p>And the way it loads part 2 is oddly simple. </p>
<p>It uses the LOAD command.</p>
<p>Odd because surely if it was that simple, why did all of these games use various convoluted mechanisms when you could just use LOAD? Copy protection maybe?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjgaOziMsARUB4GJtAhbQ-E3Cw69EVK6trd5-jdbcJGfmM5BoIqeRTFUAKexuAwQc3T6P1dOmXd75HF6LK9C0uG6YYxzNBcxmksFuxAdNetdc44eX-SdkUbtNF7-mBySpornJybqoX0Cra2tEFq2rTWOnt7dgYk5IrOjerYPzeggSQS-363cCwkxhERaKpM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjgaOziMsARUB4GJtAhbQ-E3Cw69EVK6trd5-jdbcJGfmM5BoIqeRTFUAKexuAwQc3T6P1dOmXd75HF6LK9C0uG6YYxzNBcxmksFuxAdNetdc44eX-SdkUbtNF7-mBySpornJybqoX0Cra2tEFq2rTWOnt7dgYk5IrOjerYPzeggSQS-363cCwkxhERaKpM=w600-h450" width="600" />
</a>
</div>
<p>The two POKE commands set $2D and $2E, the address of the end of the program which is also the start of space used for variables etc. They are set to $186A (which happens to be the end of the second program). It then does a clear to reset using this new value and does the LOAD.</p>
<p>I was interested to try this out, so I wrote a couple of sample programs.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhv6xcmmRNbFdng_4UBhQfOBLXKUrYxmEMDFmMT3x91Tdc6O7LanxlG87MJSG1bt7W--XlFIweZqsamjzRBpATGnZpMFgmyiSK8TWHlU7pFgo_yiQKAEWrym4VFXn_Q2inud1hkfRlxvTXWlWJnSL4B48mQKxalV7KnqE_4G-JfWXnLnt7SqoPQrm-kIZwa" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhv6xcmmRNbFdng_4UBhQfOBLXKUrYxmEMDFmMT3x91Tdc6O7LanxlG87MJSG1bt7W--XlFIweZqsamjzRBpATGnZpMFgmyiSK8TWHlU7pFgo_yiQKAEWrym4VFXn_Q2inud1hkfRlxvTXWlWJnSL4B48mQKxalV7KnqE_4G-JfWXnLnt7SqoPQrm-kIZwa=w600-h450" width="600" />
</a>
</div>
<p>I rewound the tape and loaded and ran the first program, it automatically loaded and ran the second one, with no fuss or searching or loading messages, it just worked.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhMESnrhe0BxLfgKC5ZYeygKFS8ys_uA81XFIV0t6OKoQZXKJhGK-_zeETd9yZd14UwLMAtuBZXPJ4x-H4AQWQxkxM-mIfM9RvE4Dz42R6xNXcy5YfNTfxUV5MCbJjgJKIzL_x1y62cRbPzLvAYnrmwmSCNtNxXL2Ojy7WIVMtmGEroeWl_z0yh58QiMfPb" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhMESnrhe0BxLfgKC5ZYeygKFS8ys_uA81XFIV0t6OKoQZXKJhGK-_zeETd9yZd14UwLMAtuBZXPJ4x-H4AQWQxkxM-mIfM9RvE4Dz42R6xNXcy5YfNTfxUV5MCbJjgJKIzL_x1y62cRbPzLvAYnrmwmSCNtNxXL2Ojy7WIVMtmGEroeWl_z0yh58QiMfPb=w600-h450" width="600" />
</a>
</div>
<p>Odd, I now don't understand why all of these other games do not use this mechanism. I remember thinking (and maybe writing in one of the previous posts) that Commodore BASIC could have done with the equivalent of the BBC BASIC CHAIN command. Little did I know that it didn't need that as the LOAD command did the job.</p>
<p>I repeated the test without the POKE commands or the clear, just LOAD. And that also worked.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhRhcy1BZH_tkZ0RwljE_cSA2JQwK5YAInUJuDwp4QXNPPmgpQVPrzJ93lJGK1VUNXvg3qpWWdYx190b5M1gJPLbN1XzRJLwSK8MN_i77i0wmVL56-qoZtAQhq2YNUs2joVPjZJiwMoPMy-9e1kvx_GC82-Nf8-QINxdxPxIMKiFhKxWginnj_4GFw20Lw1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhRhcy1BZH_tkZ0RwljE_cSA2JQwK5YAInUJuDwp4QXNPPmgpQVPrzJ93lJGK1VUNXvg3qpWWdYx190b5M1gJPLbN1XzRJLwSK8MN_i77i0wmVL56-qoZtAQhq2YNUs2joVPjZJiwMoPMy-9e1kvx_GC82-Nf8-QINxdxPxIMKiFhKxWginnj_4GFw20Lw1=w600-h450" width="600" />
</a>
</div>
<p>Just seems odd to me that if that mechanism exists and works, why go to all the fuss some other programs do with putting things in the keyboard buffer and hiding text and trick filenames etc.</p>
<p>Anyway, back to the game. We now have the second part loaded.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi2pN9T6-EfRmDx42AhrFy721Zp-an72Acf-fVeK1MHU-o9gg2Yii7_LEjSKMJWVr3GbpNTyyendzRkgm_2OeQFHmGTTNshA0pG-iHydbrszxeLDlK8M2iuip4EOjzoV6wD8_lp1UEuuAiQHrdpoEBnpZbI0hXj1d0ZUDFdfaSzRXC6gPmYXFrXurUEEizh" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi2pN9T6-EfRmDx42AhrFy721Zp-an72Acf-fVeK1MHU-o9gg2Yii7_LEjSKMJWVr3GbpNTyyendzRkgm_2OeQFHmGTTNshA0pG-iHydbrszxeLDlK8M2iuip4EOjzoV6wD8_lp1UEuuAiQHrdpoEBnpZbI0hXj1d0ZUDFdfaSzRXC6gPmYXFrXurUEEizh=w600-h450" width="600" />
</a>
</div>
<p>It shows a second title screen for a few seconds, accompanied by a fanfare, The prints up the instructions.</p>
<p>Five pages of them, with "press a key" between them.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhonziJB3dTlY7SA2eSWz6T7ifwWVMQTF1akZxDHHulxyiN6J1Jfau5-yzD_kle23wO_aJxF9I9V6IWezQpiBIhD-4586jaBwG3oatJ-8Ul69baRHLXECziBIQc01jFl_miGLF-fZaT2jIPJ-D5LvMNl_iBc-qFs6peQXQxp_YTpAxaBU1uxx2Pieg_oKTp" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhonziJB3dTlY7SA2eSWz6T7ifwWVMQTF1akZxDHHulxyiN6J1Jfau5-yzD_kle23wO_aJxF9I9V6IWezQpiBIhD-4586jaBwG3oatJ-8Ul69baRHLXECziBIQc01jFl_miGLF-fZaT2jIPJ-D5LvMNl_iBc-qFs6peQXQxp_YTpAxaBU1uxx2Pieg_oKTp=w600-h450" width="600" />
</a>
</div>
<p>At the end of that, another title and "wait for tape to load".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjNFx_CihBl-R80Kzr5pY2KpNoHLWiZsaTc7qZlebwiefFX2MANrT8czXnvxSCstb52GEQx80LMs40jE_LnitadeCvidVZEBsfC-MjcUGvQpvly5BAQxlTMn99ctLAiFV81iNb1iTbsN94EvcbNgNq5-MwDx46C5MINiCWnrfZ_nLAw7N87meHcYQFTQDvn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjNFx_CihBl-R80Kzr5pY2KpNoHLWiZsaTc7qZlebwiefFX2MANrT8czXnvxSCstb52GEQx80LMs40jE_LnitadeCvidVZEBsfC-MjcUGvQpvly5BAQxlTMn99ctLAiFV81iNb1iTbsN94EvcbNgNq5-MwDx46C5MINiCWnrfZ_nLAw7N87meHcYQFTQDvn=w600-h450" width="600" />
</a>
</div>
<p>It appears there was going to be an "Instructions Y/N?" prompt, but that has been commented out.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh1zc0nygMhdzpEa6BMhJJeTN6yJma21K_zOjS1xAaq0dtFImOD-IMfjO_c4qPHQ1Ak97kWwT4RwIk3qQ9sN_aGPGYPZzt-h7qOdZGOj7G9-3ir2HUQf-gnpor45PFX0OzavXvM71XTwMQhdX29zi6hrqtoGauFcM9w-VJwDi2-EowM1vUOLL6MLz3nxe5g" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh1zc0nygMhdzpEa6BMhJJeTN6yJma21K_zOjS1xAaq0dtFImOD-IMfjO_c4qPHQ1Ak97kWwT4RwIk3qQ9sN_aGPGYPZzt-h7qOdZGOj7G9-3ir2HUQf-gnpor45PFX0OzavXvM71XTwMQhdX29zi6hrqtoGauFcM9w-VJwDi2-EowM1vUOLL6MLz3nxe5g=w600-h450" width="600" />
</a>
</div>
<p>Then it loads Part 3. It does this by jumping to some code after the BASIC program. This would have been a patched PRG files to add the code onto the end. </p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiahC_1fO_Z_0jW6-9QBIEkSzuCaHv9MgP9uS5TOTG9AFdrB3Ynt6An8uPrWG83BktgEXv32WIhCeVDpsqW6ddSKhiolzY3PHx2KciCj8L5rGZ3NBV5PmKLw4VxKgMmSRB1qN4VDOUxaA9rVVIyIj8T8IxjcnaKCr9UzhQxgIu7w4ZA95K8oPFLZNdwtBpL" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="870" data-original-width="1160" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiahC_1fO_Z_0jW6-9QBIEkSzuCaHv9MgP9uS5TOTG9AFdrB3Ynt6An8uPrWG83BktgEXv32WIhCeVDpsqW6ddSKhiolzY3PHx2KciCj8L5rGZ3NBV5PmKLw4VxKgMmSRB1qN4VDOUxaA9rVVIyIj8T8IxjcnaKCr9UzhQxgIu7w4ZA95K8oPFLZNdwtBpL=w600-h450" width="600" />
</a>
</div>
<p>The first part copies the rest into safe RAM at $02A1 (where it will not be overwritten when the next program is loaded). It then jumps to that code.</p>
<p>The relocated code does the familiar series of calls to the KERNAL routines to load a program.</p>
<p>Then it does another odd thing. It jumps to $0352. There shouldn't be any code there, it is the cassette buffer. Ah, OK. This is using the buffer overrun for secret code again. Neat. The same as Falcon Fighter - <a href="http://blog.tynemouthsoftware.co.uk/2023/07/converting-even-more-multipart-games-for-the-vic20.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/07/converting-even-more-multipart-games-for-the-vic20.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg_hPzO3U2DBZTotIF0S216LsyetHdjUUhj-RadLIgjwogcgRg7WR_iGv6hic0tbclEEgrYLcywzJo56ZUB1o9S3KC-6XBxluz9B2nWEt2udse4MS6hgRG_88zbpfJ50KGLfouMd6BKIQta3bebM9pZhkY_2_MfG9Tto0AAg-qFlq87x7FrkMIJ4VS8yBJg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="690" data-original-width="920" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg_hPzO3U2DBZTotIF0S216LsyetHdjUUhj-RadLIgjwogcgRg7WR_iGv6hic0tbclEEgrYLcywzJo56ZUB1o9S3KC-6XBxluz9B2nWEt2udse4MS6hgRG_88zbpfJ50KGLfouMd6BKIQta3bebM9pZhkY_2_MfG9Tto0AAg-qFlq87x7FrkMIJ4VS8yBJg=w600-h450" width="600" />
</a>
</div>
<p>This hidden code explains why the third part looked odd. It reads a byte from $1000 (the loaded program), exclusive OR's it with $2F and then writes it back. This continues with all the bytes up to $1E00.</p>
<p>It changes it from nonsense</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgCjxd8zWYgQM9J2TSMn2AOT6lP74bs7ljyWbhZ_6kVvFhjFudlvhN11evU5GaRIB1HnHi9vApJxWglsqmw6WS0aNJbAxMEsvdmlpj5yM3gFOpHo_HpYymziavbTE1djQjPCgufC2alBYkDUYBwB9ATcxVTJU84D17KrW6QcxnCkEgIaO8Eq59jALs6WMMs" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="828" data-original-width="1104" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgCjxd8zWYgQM9J2TSMn2AOT6lP74bs7ljyWbhZ_6kVvFhjFudlvhN11evU5GaRIB1HnHi9vApJxWglsqmw6WS0aNJbAxMEsvdmlpj5yM3gFOpHo_HpYymziavbTE1djQjPCgufC2alBYkDUYBwB9ATcxVTJU84D17KrW6QcxnCkEgIaO8Eq59jALs6WMMs=w600-h450" width="600" />
</a>
</div>
<p>To hopefully less than nonsense.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgNAOqRVbYXpXFiok1DUSA24djUJd9ewDnpCD-WRSCCuMF1fPDX1zdxonMCFQXDwplcXTmgatygbiG_2eKlZdUB9r3KM61v6zH6BTGGJWAuWvXgPudnDWVtsio_lwOwUG87xuIINWdjEIVCJn0axrPZF0dlsbIYloU5Dgfl_OPYwi3UjTcoicn72F6zvw4W" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="416" data-original-width="555" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgNAOqRVbYXpXFiok1DUSA24djUJd9ewDnpCD-WRSCCuMF1fPDX1zdxonMCFQXDwplcXTmgatygbiG_2eKlZdUB9r3KM61v6zH6BTGGJWAuWvXgPudnDWVtsio_lwOwUG87xuIINWdjEIVCJn0axrPZF0dlsbIYloU5Dgfl_OPYwi3UjTcoicn72F6zvw4W=w600-h450" width="600" />
</a>
</div>
<p>And then runs it.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgEXxgfoyBG9J8sbaFShb8TgTzUtR_FOSCPVd0QnTZuImKXu7xtOz2FsUMc6AqR9kn2t0RT-Q3mXtMSdLwmU3qtvYaJQgbcPtX622kBlSX5hH8dGSPPdTBNe02Qpm3n1n1Ik0EiJKIMDEXag2NUKG-oU5trjEiFvqtdpYig9_6YnJfgicaLor0uJ2STGI8p" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgEXxgfoyBG9J8sbaFShb8TgTzUtR_FOSCPVd0QnTZuImKXu7xtOz2FsUMc6AqR9kn2t0RT-Q3mXtMSdLwmU3qtvYaJQgbcPtX622kBlSX5hH8dGSPPdTBNe02Qpm3n1n1Ik0EiJKIMDEXag2NUKG-oU5trjEiFvqtdpYig9_6YnJfgicaLor0uJ2STGI8p=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">The Conversion</h2>
<p>Converting this was a bit more work than usual. Since this was loading from ROM, there was no need for the small title screen program to be displayed whilst loading the larger program containing the instructions, but I did like the gold title screen, so wanted to keep that.</p>
<p>I decided the easiest option was to write a new BASIC program, taking most of the first and second to make a single title / instructions program.</p>
<p>I reused the commented out "Instructions Y/N?" prompt to the first title screen, although I had to change the code to check the response properly (the commented code would not have worked).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjrXFjkM-RuCTr2hf2yE5nGggODcOtC3ezJPhOv9pKarqIqn4fxW4ENr_cbCPkgILhMfDW3PqRzJheye9pMhJ0uqXfoMyfDW53LHUTOsqyk6g6Ii0GKHiw4L4GsXkS26pUgWK628usFtXNiAsmKPUzXrk7j3k09ueLA3V40s92pZFqHPIFuFaNNoNPBJr15" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjrXFjkM-RuCTr2hf2yE5nGggODcOtC3ezJPhOv9pKarqIqn4fxW4ENr_cbCPkgILhMfDW3PqRzJheye9pMhJ0uqXfoMyfDW53LHUTOsqyk6g6Ii0GKHiw4L4GsXkS26pUgWK628usFtXNiAsmKPUzXrk7j3k09ueLA3V40s92pZFqHPIFuFaNNoNPBJr15=w600-h450" width="600" />
</a>
</div>
<p>If you press Y, it goes on to display the 5 pages of instructions then loads the game.</p>
<p>If you press anything else, it just goes directly to loading the game.</p>
<p>Loading that is done in the same way as I have before, a SYS call to jump back into the cartridge ROM to copy the game into RAM.</p>
<p>I saved a copy of the decoded game and used that, to avoid having to XOR the data.</p>
<p>All of those together fit neatly into an 8K cartridge, ready for the next update to the Penultimate Cartridge.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgrTVqepgCF7mqwECLwamY1YjaXNGdvCkSvIzFPtFMlDQNGCuxEdnrwmtqvFnec0w7euTQ7GABfnrIC_KVItgql30_zSrmgAtrJOzKpfdtzj-1K1lCsstnSoxVeT-ODZ7WxtSFYvuoNkWBB3-X3k8DOdF3cp8p3rQifdCP7ciJBjj36NUdhVyRP4ggD5DSM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgrTVqepgCF7mqwECLwamY1YjaXNGdvCkSvIzFPtFMlDQNGCuxEdnrwmtqvFnec0w7euTQ7GABfnrIC_KVItgql30_zSrmgAtrJOzKpfdtzj-1K1lCsstnSoxVeT-ODZ7WxtSFYvuoNkWBB3-X3k8DOdF3cp8p3rQifdCP7ciJBjj36NUdhVyRP4ggD5DSM=w600-h450" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>Penultimate +2 Cartridge</h2>
<p>The Penultimate +2 Cartridge is in stock at The Future Was 8 bit, note the new website is TFW8b.com</p>
<ul>
<li>
<a href="https://tfw8b.com/product/vic20-penultimate-plus-two/" rel="nofollow" target="_blank">https://tfw8b.com/product/vic20-penultimate-plus-two/</a>
</li>
</ul>
<p>More info in a previous post:</p>
<p></p><ul style="text-align: left;"><li><a href="http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html" rel="nofollow" target="_blank"> http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html</a></li></ul>
<p></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/s1280/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1022" data-original-width="1280" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/w600-h480/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" width="600" />
</a>
</div>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-61903216887700876252023-12-31T11:40:00.025+00:002023-12-31T13:00:43.715+00:0025 year old DIY valve amp revisit<p>On the top shelf of my workshop for probably the last 20 years has been a little black box with a couple of valves on the top.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg447yaaZb2RbNK6fYhIBLOHJreRBYJy_1rB6RHjTpozDT0-shnGCw6_Zx8l8ZBu5GlE7UPgfrp0eDeqJCG6XKIJNhylVOuU5GLjKgKBTQ2Kqj-I_rZqAeIztkD_P7I3KlqibXXuc-jFKaRWpWyhU49C5QN0HFGdMbtK6rQGq832kTOlt-yoibq56qvym1L" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg447yaaZb2RbNK6fYhIBLOHJreRBYJy_1rB6RHjTpozDT0-shnGCw6_Zx8l8ZBu5GlE7UPgfrp0eDeqJCG6XKIJNhylVOuU5GLjKgKBTQ2Kqj-I_rZqAeIztkD_P7I3KlqibXXuc-jFKaRWpWyhU49C5QN0HFGdMbtK6rQGq832kTOlt-yoibq56qvym1L=w600-h450" width="600" />
</a>
</div>
<p>You might think it is the original valve based version of The Internet, but it isn't. </p><p>You might think this is one of many old projects gathering dust. And indeed it is, but there is a difference. You might just be able to see there is a warm glow coming from the tubes.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhvGwcutoFknqLa6pG8DgnDKEZxm8PTzBWldJXcyIUG4gGFbcDT-Cbc8eZJh4ACflmSusOcUJRkn3EaFwbqeuRjGkvtY21PlRUiamJZsiVizcJOaPvYEMHUZb8F6iPyVquy2cVQknMdBdVGPLLlDimqvzryN8KiNBBvSPbgFzHYeiUCcu8jf1uz3KxZjdZz" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2718" data-original-width="3625" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhvGwcutoFknqLa6pG8DgnDKEZxm8PTzBWldJXcyIUG4gGFbcDT-Cbc8eZJh4ACflmSusOcUJRkn3EaFwbqeuRjGkvtY21PlRUiamJZsiVizcJOaPvYEMHUZb8F6iPyVquy2cVQknMdBdVGPLLlDimqvzryN8KiNBBvSPbgFzHYeiUCcu8jf1uz3KxZjdZz=w600-h450" width="600" />
</a>
</div>
<p>That is because this is in use, and has been in use pretty much daily all the time it has been there.</p>
<p>I built this 20-25 years ago. I can't remember when specifically, before the blog, before Tynemouth Software even. I didn't have a digital camera at that point, and there is no email trail for the parts as it was well before I got my gmail account (2007?).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJJWfZUcqVTCls5RduYMH6PXSPKp90LM7MCq-8S3YXQcHxBJkZSgWqnVz8Y3Ajd55wZuD2R6MXr3YD8x124cmVpezq_x3vQRM5HeWVmQgdZwAkLnYBWowWDq-wF0hr6qpJYzp1p-X2Ee39Q50c1oju4vtcpSPpJSK1Z6btw_DOmD0-8vxJDMLV-k4EM99f" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJJWfZUcqVTCls5RduYMH6PXSPKp90LM7MCq-8S3YXQcHxBJkZSgWqnVz8Y3Ajd55wZuD2R6MXr3YD8x124cmVpezq_x3vQRM5HeWVmQgdZwAkLnYBWowWDq-wF0hr6qpJYzp1p-X2Ee39Q50c1oju4vtcpSPpJSK1Z6btw_DOmD0-8vxJDMLV-k4EM99f=w600-h450" width="600" />
</a>
</div>
<p>I did think I might get a result from some of the valves I bought from Rapid Electronics (yes, they used to sell valves!) but my order history does not go back that far either.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJm1bp4_tqwiSUSJ7cxRsiS5_qvE_7oBZYyxVTYu8Jz3kkWakaTgNeeIwIaqE2Hx2s6nx6-Eo7W2TLivy-wZ1NArXoikj-l5owSglSXfrWqcTox7wLki--zDPjGzTjQl7SjEHjOWD86o0soqdVSsVCkLSKeDzte12koYu_voFLIkRr1K82toHqEZPguusx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJm1bp4_tqwiSUSJ7cxRsiS5_qvE_7oBZYyxVTYu8Jz3kkWakaTgNeeIwIaqE2Hx2s6nx6-Eo7W2TLivy-wZ1NArXoikj-l5owSglSXfrWqcTox7wLki--zDPjGzTjQl7SjEHjOWD86o0soqdVSsVCkLSKeDzte12koYu_voFLIkRr1K82toHqEZPguusx=w600-h450" width="600" />
</a>
</div>
<p>I can't find my notebooks from back then. I am pretty certain I know where they are, just there are rather a lot of things between me and them.</p>
<p>So I thought it might be interesting to reverse engineer it. See how bad it is, and if there is anything I would do differently today.</p>
<p>Step 1 was to clean it up a bit.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgDzegQGB7BwRtodMNdDIOe688sWpCpbqo80b_N6D1BiZerQ4t8sKYVT-JAFL8tyHqhUIM_j1Z9qhganTKG77Wtx6MNpr5apXm2dXHxSra5ymdNvcvD89j84xj6tpaV8vo2mNUb7-h7cOUEQJLlF9dBxsS3cUM0aRoXVuKAxl_Z_kgOFP9Gi2G-0oW__Rwl" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgDzegQGB7BwRtodMNdDIOe688sWpCpbqo80b_N6D1BiZerQ4t8sKYVT-JAFL8tyHqhUIM_j1Z9qhganTKG77Wtx6MNpr5apXm2dXHxSra5ymdNvcvD89j84xj6tpaV8vo2mNUb7-h7cOUEQJLlF9dBxsS3cUM0aRoXVuKAxl_Z_kgOFP9Gi2G-0oW__Rwl=w600-h450" width="600" />
</a>
</div>
<p>You might notice it is resting on a bit of cardboard, that is because the feet have dissolved. There seem to be a problem with rubberised plastic from that era, things that had that sort of coating break down and go sticky over time (e.g. the old sky remote controls)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjlk9a6FF9OAZDKU5KvmxPVDm3odVZDjb9jZX8jEWNJVci2ZUJo5lqUjyUK_KmKnCP4Mllm2DmjkUYoNFXtJ-a-UzlcZRqjyooEMtqt0plPUlZ7KM8ou_gabEkw3YnEJoYtlAqNutHyN2bkhel924WtydApgxBUPZmJa6JeZKT4LP9AE-Mz7HdMxLU9D90y" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjlk9a6FF9OAZDKU5KvmxPVDm3odVZDjb9jZX8jEWNJVci2ZUJo5lqUjyUK_KmKnCP4Mllm2DmjkUYoNFXtJ-a-UzlcZRqjyooEMtqt0plPUlZ7KM8ou_gabEkw3YnEJoYtlAqNutHyN2bkhel924WtydApgxBUPZmJa6JeZKT4LP9AE-Mz7HdMxLU9D90y=w600-h450" width="600" />
</a>
</div>
<p>With that cleaned up a bit, and some new plastic feet fitted, it looks a lot better.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEha2deo_DWi8phGXCU7R_xTDhYiyVHE0Rie3P5drMyk8x_zW3Zq02_LTmZm-tZ8P7LgY2HrGZk42puIzHrk0sDtwnrz_e9P497hp2NZZ7ocyUxUXalBgv-Bw8G3V_W9q8O8c-48irsipDPrCbljb0fq-tF43mIWbLRvArXR55QkzL2jQ0G4qOkwKgF-iwc7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEha2deo_DWi8phGXCU7R_xTDhYiyVHE0Rie3P5drMyk8x_zW3Zq02_LTmZm-tZ8P7LgY2HrGZk42puIzHrk0sDtwnrz_e9P497hp2NZZ7ocyUxUXalBgv-Bw8G3V_W9q8O8c-48irsipDPrCbljb0fq-tF43mIWbLRvArXR55QkzL2jQ0G4qOkwKgF-iwc7=w600-h450" width="600" />
</a>
</div>
<p>It is a very minimal design. A power switch on the left and a volume control on the right. With a good old chicken head knob like every valve amp should have.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhC-fHl7w7ULFIYG9rvZw9mkMTZE-5TpP4MBX93nSiQpRcA-_wl5-2nMZRrqBmag0B_9xBonxyn8S4UmbO3IABKQ9JILCiicsOqbAzfsAP3kl8O-TscB2UWufpqKtyM3wYACkxA1yAgUUqgUhz01yVWosPRMlsPZc3dDdbvIF3ayycoacr0_ZxEfnDpaUlS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhC-fHl7w7ULFIYG9rvZw9mkMTZE-5TpP4MBX93nSiQpRcA-_wl5-2nMZRrqBmag0B_9xBonxyn8S4UmbO3IABKQ9JILCiicsOqbAzfsAP3kl8O-TscB2UWufpqKtyM3wYACkxA1yAgUUqgUhz01yVWosPRMlsPZc3dDdbvIF3ayycoacr0_ZxEfnDpaUlS=w600-h450" width="600" />
</a>
</div>
<p>The back has a fixed mains lead, two phono jacks for the input and four 4mm jacks for the speaker outputs (somewhat faded in a quarter of a century of sunlight).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi1wkOmDCbJyBEac6fqW3nqgaBplTiX5NKPQM6r3lr23pzfjxIr6eBrhypeG6GbJLTxxqe7rM1zin_fKN5aTnl469V6O5ULOXAAc4tg6YqRVOyiZ7FqlFhwB1HODRB3WFu2yHimBj1H0EffxzIKkCFqbzaaB1yqIZyMxfLadY2i9a_Psvb6Dipr9sB5Kqu9" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi1wkOmDCbJyBEac6fqW3nqgaBplTiX5NKPQM6r3lr23pzfjxIr6eBrhypeG6GbJLTxxqe7rM1zin_fKN5aTnl469V6O5ULOXAAc4tg6YqRVOyiZ7FqlFhwB1HODRB3WFu2yHimBj1H0EffxzIKkCFqbzaaB1yqIZyMxfLadY2i9a_Psvb6Dipr9sB5Kqu9=w600-h450" width="600" />
</a>
</div>
<p>I managed to round one of the screws that was quite persistently stuck, so I had to drill that out.<i>(well, first I had to find my drill, that I had conveniently ran flat last time I had used it, then find the charger for it, then wait for it to charge......)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg6ScVupb02jwa-14F9h1u6UEEo56vdEtCKPaWQo1ANHMX_7MMVjin6_H5__rIuf3FGnsyv1Nhc74-X2boyZUaapuAtGzoamYlVtSYHXQPcYBA9izJv_w78DY33mVI72RQdVWc3OcT7l4ncrKshXCczA1sQ3SXB4QB0SynLdbHof1xBvqN1-6a_aZ6TDcla" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3168" data-original-width="4224" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg6ScVupb02jwa-14F9h1u6UEEo56vdEtCKPaWQo1ANHMX_7MMVjin6_H5__rIuf3FGnsyv1Nhc74-X2boyZUaapuAtGzoamYlVtSYHXQPcYBA9izJv_w78DY33mVI72RQdVWc3OcT7l4ncrKshXCczA1sQ3SXB4QB0SynLdbHof1xBvqN1-6a_aZ6TDcla=w600-h450" width="600" />
</a>
</div>
<p>That's better, all six screws removed.</p>
<p>One of these things is not like the others.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhU1SoTdygU0k_qvV1Ui1C9Lqq54BUw-DAIJfbue4rJfijbph2i5aYDNSrWN3z9HwTIZxDiurodc1qXy2AFak54ZdKjZOoxhszucwHfQR4AgJ5g0GVI5-Ylq1kPEplnyX5k0GnMgG_8NxCgt1Syqjv74kkpjJj5k7qCxc2YEnJLk0-9nlJ5dEuqkrvTj0gR" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhU1SoTdygU0k_qvV1Ui1C9Lqq54BUw-DAIJfbue4rJfijbph2i5aYDNSrWN3z9HwTIZxDiurodc1qXy2AFak54ZdKjZOoxhszucwHfQR4AgJ5g0GVI5-Ylq1kPEplnyX5k0GnMgG_8NxCgt1Syqjv74kkpjJj5k7qCxc2YEnJLk0-9nlJ5dEuqkrvTj0gR=w600-h450" width="600" />
</a>
</div>
<p>Time to open it up.</p>
<p>But first, a couple of things.</p>
<p><b>Main voltages and higher are present in here. They can be lethal. If you ever do anything like this, be sensible, take the usual precautions etc.</b></p>
<p>Secondly, the design is wrong. I know that. I knew that at the time. The transformers and wrong, the valves are wrong. I could have built one with the right parts (and indeed I did start that), but they are very expensive, and not easily available. So, I thought I would see what I could do with parts that were not ideal, but were cheap and easily available. (I am sure that will not stop people on the internet telling me that it is wrong in even more ways that I realise).</p>
<p>OK, those of a nervous disposition, look away now.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj-HOA9vdaWiKYYkKMx5duKxguKbkM90FzdbMuTr7vH6Eb0Z3X7RALp_DfGxn4tWcJA9lqUvsEBOHlaCzUAOGkrMkhJFs2ezdUpks6W9hmsPyPUMFLbVvD04uVlRrfBPfEHg95dMT3D1eLIo9WR7KRlygUh1QkjA5nCQYI5odmKdhAL5Y7aISJjxbuOcSri" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj-HOA9vdaWiKYYkKMx5duKxguKbkM90FzdbMuTr7vH6Eb0Z3X7RALp_DfGxn4tWcJA9lqUvsEBOHlaCzUAOGkrMkhJFs2ezdUpks6W9hmsPyPUMFLbVvD04uVlRrfBPfEHg95dMT3D1eLIo9WR7KRlygUh1QkjA5nCQYI5odmKdhAL5Y7aISJjxbuOcSri=w600-h450" width="600" />
</a>
</div>
<p>OK, there is a lot going on there. Let me reverse engineer my own 25 year old design.</p>
<p>One moment please.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhyMNUBKdc6gUo4uZ0v0SvLLe7DvxfE59pIFbpKx7RsjhNiHeCJ2mDDUvjFyCRbW8TaV7HJFMimEWR3XFKKmFE43G9VtpC6QOLVtWW-b26XPIiheClZS4SoXHWTUlF9_U_ci9dnFHroBDBcN7oP0zHqmmMDYEJsn28OXgO1YK8F2EXEIbgH19dTvftfGsTp" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2479" data-original-width="3508" height="425" src="https://blogger.googleusercontent.com/img/a/AVvXsEhyMNUBKdc6gUo4uZ0v0SvLLe7DvxfE59pIFbpKx7RsjhNiHeCJ2mDDUvjFyCRbW8TaV7HJFMimEWR3XFKKmFE43G9VtpC6QOLVtWW-b26XPIiheClZS4SoXHWTUlF9_U_ci9dnFHroBDBcN7oP0zHqmmMDYEJsn28OXgO1YK8F2EXEIbgH19dTvftfGsTp=w600-h425" width="600" />
</a>
</div>
<p>Let's look at that in more detail.</p>
<h2 style="text-align: left;">Power Supply</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi1vpSNlbWTv1UtiWoRlIB6CHmoSZ4wEr3psS3Qi2K6phQNoe5pqHEp0fNQqvatg_95EJWNdf8iQJvgTuw540ANeI1Zaz2DBjGM558u7lIBNG17RfSppGGQG5zJbjFzoyR9EwcNV6hpURps8_aT64ISeJIGVobQc4F-Fov62oz7aYLDcHSfypfNowbJjAa9" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi1vpSNlbWTv1UtiWoRlIB6CHmoSZ4wEr3psS3Qi2K6phQNoe5pqHEp0fNQqvatg_95EJWNdf8iQJvgTuw540ANeI1Zaz2DBjGM558u7lIBNG17RfSppGGQG5zJbjFzoyR9EwcNV6hpURps8_aT64ISeJIGVobQc4F-Fov62oz7aYLDcHSfypfNowbJjAa9=w600-h450" width="600" />
</a>
</div>
<p>I'll start with the power. This is the first bodge. A proper valve amp would have a proper power transformer with a high voltage winding for the B+ and a low voltage winding for the tube filaments.</p>
<p>I didn't have that, so I improvised with two normal mains transformers.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEixmAAG9XZp_brdCzTJY1YHafigEzRLPFVgLUoA9M1Zv3vArVqDuDoGPZR1Z7RZaeKeNANUDmsFirwrDSIMEGBk3vr3RJmFIGhq_XXqDl5EhuePxyARD3TDrxMTsj3l0nBGlALEmiQcCKU7U_YyyRZoBoarp3VFI-Z4AFJ7Kk0ppL3yOIpubawP0AUfuD_I" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="765" data-original-width="1806" height="250" src="https://blogger.googleusercontent.com/img/a/AVvXsEixmAAG9XZp_brdCzTJY1YHafigEzRLPFVgLUoA9M1Zv3vArVqDuDoGPZR1Z7RZaeKeNANUDmsFirwrDSIMEGBk3vr3RJmFIGhq_XXqDl5EhuePxyARD3TDrxMTsj3l0nBGlALEmiQcCKU7U_YyyRZoBoarp3VFI-Z4AFJ7Kk0ppL3yOIpubawP0AUfuD_I=w600-h250" width="600" />
</a>
</div>
<p>The mains comes in via a toggle switch and goes to the primary of the first transformer. This has two 15V secondaries.</p>
<h2 style="text-align: left;">B+ High Voltage Supply</h2>
<p>The first of these is wired to the secondary of a second transformer. This is two 6V windings in series to give a 12V winding. The primary of that becomes the output, one of the 120V is used.</p>
<p>I have redrawn that in simplified form.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgVPh6TW040YZQPiwvgJQy1e6gBotzXnqR0vgzoP5bBBHwNOUxoR0AHbjfHtNcw5dxDHG1CbJ38hK_KVi_Y05a0Z2KdM3ZJNTF_HR5PLBY_yYkh1Z7oFLWk2wKDDSC77ObxPf7hq9b6Oz_yp-9jH-RsPEzXSlgIse-HwRUDStowm_N4gEQ8KbR_y-dC9vmk" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="849" data-original-width="1132" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgVPh6TW040YZQPiwvgJQy1e6gBotzXnqR0vgzoP5bBBHwNOUxoR0AHbjfHtNcw5dxDHG1CbJ38hK_KVi_Y05a0Z2KdM3ZJNTF_HR5PLBY_yYkh1Z7oFLWk2wKDDSC77ObxPf7hq9b6Oz_yp-9jH-RsPEzXSlgIse-HwRUDStowm_N4gEQ8KbR_y-dC9vmk=w600-h450" width="600" />
</a>
</div>
<p>The first transformer is designed for 240V to 15V, so a 16:1 windings ratio. The second is designed as 240V to 12V, so 20:1, but in reverse, so 1:20, and only one of the output windings is used, so 1:10.</p>
<p>When arranged like this, you get a single transformer with a windings ration of 16:10, or 8:5.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgwzqcq-KL0_w8WGpf55kBE4Xp44KTlJzL9qsdY6XCcFtVtOk0e1JAAvHIWBeayubwto4oX0-CNw7ix3Q0JJ-EEGcJhgykR6fvhFVPXUg7qN-FzpDbg9xkcTG1zbYyW2KYL7yPyNDv-NXxxHA3NMfNRVbrvlENcaHXQDoBy4afbbHRBbyv8VRbwdxvIz5MY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="798" data-original-width="1064" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgwzqcq-KL0_w8WGpf55kBE4Xp44KTlJzL9qsdY6XCcFtVtOk0e1JAAvHIWBeayubwto4oX0-CNw7ix3Q0JJ-EEGcJhgykR6fvhFVPXUg7qN-FzpDbg9xkcTG1zbYyW2KYL7yPyNDv-NXxxHA3NMfNRVbrvlENcaHXQDoBy4afbbHRBbyv8VRbwdxvIz5MY=w600-h450" width="600" />
</a>
</div>
<p>So with 240V in, there should be approximately 150V AC output. This is not very efficient, but it does give a high voltage, low current supply, and more importantly, isolation from the mains.</p>
<p><i>(N.B. I am using a nominal 240V here as these transformers are marked as having dual 120V primaries and it makes the maths neater. The UK mains voltage is more like 230V these days, so the output would be 143.75V not 150V)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgT8L9hGHG87sMaeCCni2tF_KkwnkuHPUA8i4PXiH90x45h5PTOvmr-KdcobuYGT1KjX1cyyq_8YUyxm0h3__JCqFdCAA3wdp0oNhbj9MMBVueRAyAH5CmVueVeQHbMtjMAXoWe3TqTKKMT1IwOLmC07WXz2sInLogrVKO4NHxEgmyH0bj9AdBwUGqZqrtA" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgT8L9hGHG87sMaeCCni2tF_KkwnkuHPUA8i4PXiH90x45h5PTOvmr-KdcobuYGT1KjX1cyyq_8YUyxm0h3__JCqFdCAA3wdp0oNhbj9MMBVueRAyAH5CmVueVeQHbMtjMAXoWe3TqTKKMT1IwOLmC07WXz2sInLogrVKO4NHxEgmyH0bj9AdBwUGqZqrtA=w600-h450" width="600" />
</a>
</div>
<p>The high voltage is rectified with a little bridge rectifier module and smoothed with a 47µF capacitor. It is further filtered with a 100Ω resistor and a 100µF capacitor. In circuit, that gives a measured B+ of around 200V in use. <i>(143.75 * √2 is 203.29, so I am happy that the maths seems to work out, given the tolerances of the transformers and the losses in the inefficient design).</i></p>
<p>I have redrawn that section using this simplified view of the transformer.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgm-8JmLJYkmQ4phwPJQ_mg8H8YU6L7B3rYqwB7P807KLyJcLnFtg3ltkdui3ZUN_yRd8CdSSPhviqR9xi95T-KoaXbV3o9VKgJ8ildS0lbKcPc_-NvOOtT0ZN5fEs76dfaYspN6ItqTlBEpS_5Wpj5ecqaF3SsLkh-oSn4c5VXPVpw57VRakQOE6U_w2Jy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="560" data-original-width="1474" height="225" src="https://blogger.googleusercontent.com/img/a/AVvXsEgm-8JmLJYkmQ4phwPJQ_mg8H8YU6L7B3rYqwB7P807KLyJcLnFtg3ltkdui3ZUN_yRd8CdSSPhviqR9xi95T-KoaXbV3o9VKgJ8ildS0lbKcPc_-NvOOtT0ZN5fEs76dfaYspN6ItqTlBEpS_5Wpj5ecqaF3SsLkh-oSn4c5VXPVpw57VRakQOE6U_w2Jy=w600-h225" width="600" />
</a>
</div>
<p>In value amps you often see a series of these R/C filters added, with voltages tapped at each stage to feed different parts of the circuit. I thought I would have taken the output transformer feeds from the first capacitor and the triodes from the second, but it appears I have taken all the supplies from the second one. Not sure why. I am sure I prototyped all of this with crocodile clip leads and would have moved things around until I was happy.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh5ypVga0ULdPgq5euFZ0enMwhGJzNT_jBHpijNotOn0fIqAeO1vNeTYEt18BksG0iErgS5boPCMeN5yhlUpH0kqCYK3wIgCZ5bntIMWaeu5VxfpS0qjuKCfMDQpFe_4OQPhI2r4UDefIi2ooM2kWN8VrzNXFOukDCkJhM5RUD8LxCrypAbKJvZiGauZo8q" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh5ypVga0ULdPgq5euFZ0enMwhGJzNT_jBHpijNotOn0fIqAeO1vNeTYEt18BksG0iErgS5boPCMeN5yhlUpH0kqCYK3wIgCZ5bntIMWaeu5VxfpS0qjuKCfMDQpFe_4OQPhI2r4UDefIi2ooM2kWN8VrzNXFOukDCkJhM5RUD8LxCrypAbKJvZiGauZo8q=w600-h450" width="600" />
</a>
</div>
<p>It seems the last thing I was testing out were some EM80 "magic eye" type values for a VU meter project that never happened. But that is the sort of crocodile clip lead spaghetti that would have been involved.</p>
<h2 style="text-align: left;">Heater Filament Supply</h2>
<p>The second 15V secondary on the mains transformer goes to a second bridge rectifier and a 2200µF smoothing capacitor. This voltage rail is regulated by a 7812 linear regulator, with a 1N4001 diode in it's ground wire, giving an output voltage of 12.6V, perfect for the heater filaments of a pair of ECC82 / 12AU7 valves.<i>(Those valves have two 6.3V filaments that can be wired in parallel or series for 6.3V or 12.6V operation)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgVT0ecr_mtv0Ktu-XopQ97_I79yEY6DQVND4LjCRE5u8W8SIWsG3GQ2TCdIgdZ5s3KPnc4bimCMp6-IXazYu8yVN1pB-rEkt_eU1oiiHzRyCki6LGd6GsigILEJyXwIj6etXObXFbZAsFxO4m2B17kYYILebbDggXhJXVFH8Da7TzcOARDwWbJz3zjWTR_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="555" data-original-width="1755" height="185" src="https://blogger.googleusercontent.com/img/a/AVvXsEgVT0ecr_mtv0Ktu-XopQ97_I79yEY6DQVND4LjCRE5u8W8SIWsG3GQ2TCdIgdZ5s3KPnc4bimCMp6-IXazYu8yVN1pB-rEkt_eU1oiiHzRyCki6LGd6GsigILEJyXwIj6etXObXFbZAsFxO4m2B17kYYILebbDggXhJXVFH8Da7TzcOARDwWbJz3zjWTR_=w600-h185" width="600" />
</a>
</div>
<p>I was surprised to see the 7812 in there, I did not remember adding that, but I guess it makes sense to regulate that supply. I think I would have planned to end up with a 6V or 12V AC winding that I could use directly, but this works and gives a clean regulated DC supply for the filaments.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgAkv5EMRYB7Cm-WIa4yn7uFX0TM12-Bl4JrtGIh_U0ajglJ2rXk4-q8QrDdmGKuFnbLccuYzq5JF0AN6fcg0I0FUQgne_BOCUpvUigbvuG1tJI6KH0t0oGvg1k6UbMZP_MdBNvkFK3DIs0EsorgECnINQ-xm44xlW79wwUVjj4sw_wBxSh4bPF8vs0Dp23" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgAkv5EMRYB7Cm-WIa4yn7uFX0TM12-Bl4JrtGIh_U0ajglJ2rXk4-q8QrDdmGKuFnbLccuYzq5JF0AN6fcg0I0FUQgne_BOCUpvUigbvuG1tJI6KH0t0oGvg1k6UbMZP_MdBNvkFK3DIs0EsorgECnINQ-xm44xlW79wwUVjj4sw_wBxSh4bPF8vs0Dp23=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">Amplifier Circuit</h2>
<p>The amplifier circuit is constructed directly on the valve bases. These are mounted in the lid. Normally with a case like that I would have used it the other way up with the lid (and the mounting screws) as the base to give a neater appearance. However here is clearly makes sense to have access to the sockets directly and the big transformers bolted to the base.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjLbH2Q59ZwrhKldaOZ--JP4ejY2jDiDYfC3uZiIx970f6f05jgKX_MMgtu-7UWS51xBTe73pEprfI_1QxTrd94q7r5BpnJBEbC9kc5F3qVvpGHGDDLxk7_3y8xFSZTiCO7Tw0D9AUcFAq4ax2fnz5Y9Q3C5VqGNMdVBlZt-u2hgRVXZBnizbMmsAc4ih7c" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3309" data-original-width="4412" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjLbH2Q59ZwrhKldaOZ--JP4ejY2jDiDYfC3uZiIx970f6f05jgKX_MMgtu-7UWS51xBTe73pEprfI_1QxTrd94q7r5BpnJBEbC9kc5F3qVvpGHGDDLxk7_3y8xFSZTiCO7Tw0D9AUcFAq4ax2fnz5Y9Q3C5VqGNMdVBlZt-u2hgRVXZBnizbMmsAc4ih7c=w600-h450" width="600" />
</a>
</div>
<p>Valve circuits can be beautifully simple, this one is pretty minimal. Here are more bodges. These are not really output tubes. The transformers I used are not really suitable for audio frequency. You know the story by now.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjG1wWAziIuouGQ2-fRM099he1_j-TJu70Z6BQW_dAM7HN-IiC4DXlWTu4vFsDwm8ud3c9r2S4SVNuBum8ZpF234Vkk1HcZnl2xCo3fyiTlvzb_XESS7ieBhYB0SZIwofpUZlZo9x_J-pg7Nl0tjWA31HV3TRYmVEEnZ7g6tSWwGKLMwnrYSAxNZBffVlnC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="914" data-original-width="1220" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjG1wWAziIuouGQ2-fRM099he1_j-TJu70Z6BQW_dAM7HN-IiC4DXlWTu4vFsDwm8ud3c9r2S4SVNuBum8ZpF234Vkk1HcZnl2xCo3fyiTlvzb_XESS7ieBhYB0SZIwofpUZlZo9x_J-pg7Nl0tjWA31HV3TRYmVEEnZ7g6tSWwGKLMwnrYSAxNZBffVlnC=w600-h450" width="600" />
</a>
</div>
<p>I am using a pair of ECC82 / 12AU7 valves. One per channel. These are dual triodes, a pair of identical voltage controlled amplifiers in each tube. These act a bit like FETs. The voltage at the grid controls how much current flows between the cathode and the anode. Google it, I am sure there are many better explanations than that.</p>
<p>There is very low input impedance, which make this an ideal input stage. There is a 1M resistor to ground just to stop it floating. The first triode takes the input signal and amplifies it. The ECC82 has a gain of around 17, but there will be loads of headroom from a 1V peak to peak signal with a 200V supply.</p>
<p>This is capacitively coupled to the one half of the volume control. The output of which goes to the grid of the second triode, where the output is generated across the output transformer.</p>
<p>Yes, you guessed it, another mains transformer. This 240V-6V, 40:1 ratio drops down the very high voltage, very low current output to something low voltage, higher current, suitable for driving a speaker.</p>
<p>Here it is redrawn with the transformer simplified.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjoxqWhLmS_0IPXcpBL5gxj61j72caErgqif6Y9eBjT8ykbZh24QbF3ZOPr94Yv32U3pF8WkZt3s-cYI0aX8Ew7Cv9jblGTU_8ZAAJYe440nHTTCee8cpJV248HhfsyVAt2PlsXDNiXVJJGGjEa6x1bsWwobNxn0aLd2EvZL8WQb9bvZ5A0Dp6oEpk5kdgi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="901" data-original-width="1201" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjoxqWhLmS_0IPXcpBL5gxj61j72caErgqif6Y9eBjT8ykbZh24QbF3ZOPr94Yv32U3pF8WkZt3s-cYI0aX8Ew7Cv9jblGTU_8ZAAJYe440nHTTCee8cpJV248HhfsyVAt2PlsXDNiXVJJGGjEa6x1bsWwobNxn0aLd2EvZL8WQb9bvZ5A0Dp6oEpk5kdgi=w600-h450" width="600" />
</a>
</div>
<p>A mains transformer is completely the wrong thing to use here. They are not designed for audio frequency use. There are also potentially problems with the placement and proximity of all the transformers which could lead to coupling between them.</p>
<p>The right hand channel is, as you might have guessed, identical (but I drew it anyway)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiYvs8jbeYXl--jf2Ea__j6jk6zd0GWA84Ug34L5O1nlhz7ogogP8SCT5vZvHETFGdRoqnk-wftXMF-gkObx8mI_HKOIt62aHSXpzvHiD8MhGZM7NyMQzPAUcdvHRhaFde_Qex76lOpacEjU3tbTjan92cZOXNPLe41QVMs6DJK56XYXM9BW8I5OVzYH-TT" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="901" data-original-width="1201" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiYvs8jbeYXl--jf2Ea__j6jk6zd0GWA84Ug34L5O1nlhz7ogogP8SCT5vZvHETFGdRoqnk-wftXMF-gkObx8mI_HKOIt62aHSXpzvHiD8MhGZM7NyMQzPAUcdvHRhaFde_Qex76lOpacEjU3tbTjan92cZOXNPLe41QVMs6DJK56XYXM9BW8I5OVzYH-TT=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">Testing it out</h2>
<p>Using the signal generator in my scope, I can feed in a 1KHz sine wave, and the output looks decent enough. You have to be very careful with things like this as the scope probe ground is connected to mains earth, as are parts of the amplifier circuit. In this case, I was measuring the input (which was grounded to mains earth at both ends) and the speaker output (which was isolated).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjl9fNnFCFcxRpGYS9aIarSop-KB8UZMAC4o0ucG-WXvwGPoO6jJu1v0sWUKW7p5NSBKonQIIGGiU1IZk2Nj5G2ct1REYYzv4JFQn-v2-V6OAerhU7QOOqbYB4p9Q0Ey290FsbOQHRribiTYFgbAbukdcG7xu7JjoTiJNHqp3DJiTgjjpqhe-V5GhMWwH56" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="355" src="https://blogger.googleusercontent.com/img/a/AVvXsEjl9fNnFCFcxRpGYS9aIarSop-KB8UZMAC4o0ucG-WXvwGPoO6jJu1v0sWUKW7p5NSBKonQIIGGiU1IZk2Nj5G2ct1REYYzv4JFQn-v2-V6OAerhU7QOOqbYB4p9Q0Ey290FsbOQHRribiTYFgbAbukdcG7xu7JjoTiJNHqp3DJiTgjjpqhe-V5GhMWwH56=w600-h355" width="600" />
</a>
</div>
<p>If I read that right, yellow is showing the input signal (I didn't disable the 10:1, so it is 1V p-p not 10V), and green is the ouput, looks to be about 500mV. Into a 4Ω speaker that would be 62mW? <i>(I am going to pretend I didn't see that, it sounds loud enough to me.)</i></p>
<p>I don't have the necessary bits to do a frequency response plot. <i>(I think the scope could do it, but it's one of the things knobbled by a license that I don't have)</i> I expect the response would drop off at higher frequencies due to the properties of the wrong transformers I used. The frequency response of my ears is probably no better these days.</p>
<h2 style="text-align: left;">Conclusion</h2>
<p>It is not very powerful, but it's fine for driving a couple of 1970s hi-fi speakers in a small room. The volume is usually set between 50% and 100%, I have not needed it to be any higher than that.</p>
<p>I built it as an experiment, to see if I could do it and how well it would work. I didn't have a use for it initially, but when the hi-fi amp in my workshop broke, I swapped this in as a temporary replacement. That must have been about 20 years ago. </p>
<p>Valve circuits can be incredibly simple and incredibly reliable. I use it because it just sits there and works. I have a big switch by the door that cuts the power to the whole workshop when I leave, so this amplifier is on, and in use, any time I am in there.</p><p>It sounds fine to me, to listen to music or audio books when I am soldering, played from MP3 files by a Raspberry Pi that is wired to various amplifiers around the house. It is not the audiophile valve amplifier experience, that has been nullified by the use of the wrong parts and the signal source. </p>
<p>I did start to make a better one, with a pair of EL84s per channel, one that I would listen to my vinyl records on my 1969 Goldring Lenco GL75 turntable. I got as far as drilling out a chassis, but I never got around to ordering the correct transformers, as they were so expensive. <i>Any interest in my continuing with that? Any generous donors or anyone with some suitable transformers they no longer need?</i></p>
<p>Would I do anything different today? well, no, not with those parts. There are things I could improve if I wanted to make a better amplifier, but for this application it is fine.</p>
<ul style="text-align: left;">
<li>I could tie the centre tap of the two filaments to ground via a 10K resistor to maybe reduce noise.</li>
<li>I could probably have done the wiring more neatly, but no one has had to look at it for 25 years, so it has not been a problem.</li>
<li>I could use a single ECC83 as the input stage for both channels and get 100x gain, and use a single ECC82 with it's lower gain / higher power as the output stages?</li>
<li>I could create a second B+ using the other 120V tap on the second transformer to give left and right isolated supplies.</li>
<li>I don't know if it would help to bypass the grid of the second triode with a capacitor. I have that on the input stage.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgMq99kj4CvqjM07_T1LYs5LoIsDKnTfC3gfgOh8hf5F2ShxAwz2wGptUV_OX8xeQMLF_ViIEGgg7iF0cDPQayoQeTMFzLbMxspccS0U01AqJMvq67xVR_L-_658QfGw0YhQK4ijWb07sd_duc06EB8nAUrdbG1vjWTy1-gCU4Ja1wDYsFXa7yrnOBSOHeS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgMq99kj4CvqjM07_T1LYs5LoIsDKnTfC3gfgOh8hf5F2ShxAwz2wGptUV_OX8xeQMLF_ViIEGgg7iF0cDPQayoQeTMFzLbMxspccS0U01AqJMvq67xVR_L-_658QfGw0YhQK4ijWb07sd_duc06EB8nAUrdbG1vjWTy1-gCU4Ja1wDYsFXa7yrnOBSOHeS=w600-h450" width="600" />
</a>
</div>
<p>So, 25 year service is wiping off the dust, replacing the stick on feet on the bottom of the case and replacing a rounded screw. Here's to another 25 years.</p>
<p>Hope you enjoyed something different for a change.</p>
<hr />
<h2>Advertisements</h2>
<p>I normally work on old computers, or new things for old computers, such as these:</p>
<h2>ZX80, ZX81, Commodore PET and Jupiter Ace compatible computer kits</h2>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX=w600-h450" width="600" />
</a>
</div>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of blog posts and behind the scenes updates. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-52212438592436910332023-12-23T09:06:00.012+00:002024-01-07T11:22:10.350+00:00Commodore Disk Directory Structure<p><i>One from the Patreon archive, this from the development of the Penultimate +2 Cartridge file browser.</i></p><p>I am sure any Commodore user is very familiar with typing LOAD "$",8 and then LIST but what exactly is going on when you do that?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhnncAi0Yj1QCtb9ZNl84a_C8Aa8VIMoMjTa6LdTUUQ5QT5TsHjietgd3vMw-RcHOfjpJMWEZlbjtn6de-zlSOUnG2MXHRd6S6sYb02NRHr-PheHXvfI79cCNIwc9ZQBrktkTgNdHvZF905ozlAfzuNkj7gBL0Cpps9LtsWBEhklLFdEiRAJPt0PZkWgcXp" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhnncAi0Yj1QCtb9ZNl84a_C8Aa8VIMoMjTa6LdTUUQ5QT5TsHjietgd3vMw-RcHOfjpJMWEZlbjtn6de-zlSOUnG2MXHRd6S6sYb02NRHr-PheHXvfI79cCNIwc9ZQBrktkTgNdHvZF905ozlAfzuNkj7gBL0Cpps9LtsWBEhklLFdEiRAJPt0PZkWgcXp=w600-h450" width="600" />
</a>
</div>
<p>I wanted to add a file browser to the Penultimate +2 Cartridge so I looked for more information. I have several very thick and weighty tomes about Commodore disk drives, but none of them seemed to go into any detail about the directory format, so time to do some digging.</p>
<p>I started doing this on the VIC20, since it seemed appropriate, but the way this is handled in Commodore DOS is pretty much unchanged in all the 8 bit machines. I've gone back to the PET because that's where it all started, and it is easier to see what is going on with a 40 column screen.</p>
<h2 style="text-align: left;">I'd buy that for a dollar</h2>
<p>Back in the late 1970s, Commodore BASIC was on five very expensive ROM chips, so it would not have been an easy option to extend that to a sixth or seventh to add support for DOS. Instead, the first disk drives found ways to work with what was already there. Rather than adding a <b>DIRECTORY</b> command (which finally appeared in BASIC 4), they created the concept of a special file called $.</p>
<p>To get a directory of a disk, you load that special file.</p>
<p><span style="font-family: courier;">LOAD "$",8</span></p>
<p>And then you list it.</p>
<p><span style="font-family: courier;">LIST</span></p>
<p>And you see a directory of the files on the disk.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgJleZ0y2COEea_Wvmv0o8v10Ieaei4POSlCCTuUyk89dTTCV8iMpvNiJM2S44IVLT3kKpXsg48LR4K2hcjHIbQz8zVVVOq8ouvbKddons14kRN3NLVCzQ5ALU_hvnkWkq5M4p2OruCboJkOAJkstGhfyS6sLz2ZMJ1zSbFtQEHn1gGzRKIvxpftjcDuNPF" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgJleZ0y2COEea_Wvmv0o8v10Ieaei4POSlCCTuUyk89dTTCV8iMpvNiJM2S44IVLT3kKpXsg48LR4K2hcjHIbQz8zVVVOq8ouvbKddons14kRN3NLVCzQ5ALU_hvnkWkq5M4p2OruCboJkOAJkstGhfyS6sLz2ZMJ1zSbFtQEHn1gGzRKIvxpftjcDuNPF=w600-h450" width="600" />
</a>
</div>
<p>But what you are seeing is actually a BASIC program. The drive creates this BASIC program on the fly, with a line for each file.</p>
<p>You can see that if you add your own lines to it and list again.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi_TbwQa4lJOQogzQxSyYVGgeu9VN9HlvIqoxu4QGXCd3pMgLd0QPUSgKeSkuf2_AtsugMlZlDzh4dBtSw5WJ_Sml0w3p4p_0J082BgyIaavO7nU5zl7aa69-P4zizoDozr3T1_fD487LFKUj4MhcR5OFQ-QOl9dneN-Hb-NbD35BSNjtKL8lyc6PisZQ3-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi_TbwQa4lJOQogzQxSyYVGgeu9VN9HlvIqoxu4QGXCd3pMgLd0QPUSgKeSkuf2_AtsugMlZlDzh4dBtSw5WJ_Sml0w3p4p_0J082BgyIaavO7nU5zl7aa69-P4zizoDozr3T1_fD487LFKUj4MhcR5OFQ-QOl9dneN-Hb-NbD35BSNjtKL8lyc6PisZQ3-=w600-h450" width="600" />
</a>
</div>
<br />
<h2 style="text-align: left;">Back to BASICs</h2>
<p>Time for a quick overview of how Commodore BASIC programs are stored.</p>
<p>Let's start with something simple.</p>
<pre style="font-family: courier; font-size: small;">10 PRINT "HELLO WORLD"
20 GOTO 10
</pre>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiUhJTF_nTsKSo3tObzGxgUblPFcClSga_N07ac4HZtQNSTNzquj-96RVFc9sidm1mmugPtmjH6yOojtSDYznv-QGEPqFhcXhIEwNi724xkBGBQJ6yg7D4X-pWgbvfTHSR8mGWJU6_4me1EWADYGc_hQg7shDhxZgT3izCJ048Ky_0W9VA3rw-4SjaMvqdX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiUhJTF_nTsKSo3tObzGxgUblPFcClSga_N07ac4HZtQNSTNzquj-96RVFc9sidm1mmugPtmjH6yOojtSDYznv-QGEPqFhcXhIEwNi724xkBGBQJ6yg7D4X-pWgbvfTHSR8mGWJU6_4me1EWADYGc_hQg7shDhxZgT3izCJ048Ky_0W9VA3rw-4SjaMvqdX=w600-h450" width="600" />
</a>
</div>
<p>The PET stores programs in RAM starting at address $0401.</p>
<p>Looking at the memory at $0401, you can see the following structure:</p>
<pre style="font-family: courier; font-size: small;">>C:0401 15 04 0a 00 99 20 22 48 45 4c 4c 4f 20 57 4f 52 ..... "HELLO WOR
>C:0411 4c 44 22 00 1e 04 14 00 89 20 31 30 00 00 00 ff LD"...... 10....
>C:0421 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
</pre>
<p>I filled the RAM with FF before typing the program, so you can more easily see where it ends</p>
<p>Each line starts with the address of the next line.</p>
<p><span style="font-family: courier; font-size: small;">15 04</span></p>
<p>So the second line starts at $0415 (the 6502 is little-endian).</p>
<p>Next is the line number, in this case 10 ($0A in hex).</p>
<p><span style="font-family: courier; font-size: small;">0a 00</span></p>
<p>Then the code starts. Here 99 is the token for <b>PRINT</b>, and 20 is the space after it. (hint, get rid of the spaces if you want your programs to be smaller and faster)</p>
<p><span style="font-family: courier; font-size: small;">99 20</span></p>
<p>Then comes the string "HELLO WORLD" in quotes.</p>
<p><span style="font-family: courier; font-size: small;">22 48 45 4c 4c 4f 20 57 4f 52 4c 44 22</span></p>
<p>Finally a null ends the line.</p>
<p><span style="font-family: courier; font-size: small;">00</span></p>
<p>Line 20 is a similar format, address of the next line, line number, <b>GOTO</b> (code $89), space and the destination line number as a string and finally a null.</p>
<p><span style="font-family: courier; font-size: small;">1e 04 14 00 89 20 31 30 00</span></p>
<p>The address of the next line is $041E, and at $041E, there are two zeroes, indicating the end of the program.</p>
<p><span style="font-family: courier; font-size: small;">00 00</span></p>
<p>And that's it.</p>
<p>Now, let's save that to disk. I formatted a new disk, again there is no <b>FORMAT</b> command (when BASIC 4 arrived, it used <b>INITIALISE</b>). So the BASIC <b>OPEN</b> and <b>CLOSE</b> commands are used, n is initialise, 0 is the drive number within the device (0 or 1 on a dual drive, 0 on single). The name can be followed by a number, which is displayed in the directory listings. I used 10 here. It is used by the drive to work out if the disk has been changed so it can reload it's cache.</p>
<p><span style="font-family: courier;">open15,8,15,"n0:diskname,10":close15</span></p>
<p>I can now save the program with the <b>SAVE</b> command with <b>,8</b> to indicate device 8, the disk drive.</p>
<p><span style="font-family: courier;">SAVE "HELLO",8</span></p>
<p>(you could verify at this point to make sure it has saved, but we have nice reliable storage these days, so no need).</p>
<p><span style="font-family: courier;">VERIFY "HELLO",8</span></p>
<p>Now we can get to the actually important bit.</p>
<p><span style="font-family: courier;">LOAD "$",8</span></p>
<p>If I <b>LIST</b> now, the hello program has been overwritten, and I get a directory. It is important to remember that <b>LOAD "$",8</b> will overwrite the program. It was not until BASIC 4 added the <b>DIRECTORY</b> command (and rather redundant identical <b>CATALOG</b> command) that you could do that without overwriting the program. </p><p><i>(<b>DIRECTORY</b> was a nightmare to support on the SD2PET, it reads a few bytes - not a consistent number - then stops mid flow to update the screen, then reads a few more - again 1, 2 or 3, then interrupts the drive again. Would have made sense to do 32 characters at a time at least, but maybe it was also trying to deal with some of the oddities - see later.)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi4yNnV-FIKoJ2nF-gNzI5fAe7696fNsth8-YYTLNRI2Qa2mtJbN3YzdRoHFxPfQpfeLKFCgqE4J-HVxgcbW8s0BrcEJZyS1CpME9h5jScqveRX-0_IriZr6c-8Vr2UnsAkn_NMzmScArd_hjnlH7WxdIzS3KsZjOKXDEtZyoZfrPOHt74_fbUyh0Y_RW9z" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi4yNnV-FIKoJ2nF-gNzI5fAe7696fNsth8-YYTLNRI2Qa2mtJbN3YzdRoHFxPfQpfeLKFCgqE4J-HVxgcbW8s0BrcEJZyS1CpME9h5jScqveRX-0_IriZr6c-8Vr2UnsAkn_NMzmScArd_hjnlH7WxdIzS3KsZjOKXDEtZyoZfrPOHt74_fbUyh0Y_RW9z=w600-h450" width="600" />
</a>
</div>
<p>So if that last been listed, then it must be a program, right?</p>
<p>Let's have a look at $0401.</p>
<pre style="font-family: courier; font-size: small;">>C:0401 1f 04 00 00 12 22 54 45 53 54 44 49 53 4b 20 20 ....."TESTDISK
>C:0411 20 20 20 20 20 20 22 20 31 30 20 32 41 00 3f 04 " 10 2A.?.
>C:0421 01 00 20 20 20 22 48 45 4c 4c 4f 22 20 20 20 20 .. "HELLO"
>C:0431 20 20 20 20 20 20 20 20 50 52 47 20 20 00 5d 04 PRG .].
>C:0441 97 02 42 4c 4f 43 4b 53 20 46 52 45 45 2e 20 20 ..BLOCKS FREE.
>C:0451 20 20 20 20 20 20 20 20 20 20 20 00 00 00 0d ff .....
>C:0461 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
</pre>
<p>The structure is the same, just a nonsensical program that is only useful for listing.</p>
<p>So the first two bytes tell us that the second line starts at $041F. Then there is the line number, in this case zero ($00 $00). </p>
<p><span style="font-family: courier;">1f 04 00 00</span></p>
<p>Next there is a $12 which is the PETSCII code to switch to inverse text. After that, there is the string which is the disk title, padded with spaces <b>inside</b> the quotes.</p>
<p><span style="font-family: courier;">12 22 54 45 53 54 44 49 53 4b 20 20 20 20 20 20 20 20 22</span></p>
<p>The a space, then the disk number as a string (as typed in above, in this case 10).</p>
<p><span style="font-family: courier;">20 31 30</span></p>
<p>Then another space and the disk type, which is always $2A<i> (Do you think the Commodore guys were Hitch Hikers Guide to the Galaxy fans?)</i> and finally a null which signals the end of the line.</p>
<p><span style="font-family: courier;">20 32 41 00</span></p>
<p>There is no $92 to cancel the inverse characters, but that will be cancelled by the end of line so it is not required.</p>
<p>The second line is the first file, the first two bytes point to the next entry, $043F, and then the line number, 0001 in this case, although it is actually the number of blocks used by the file. Neat huh?</p>
<p><span style="font-family: courier;">3f 04 01 00</span></p>
<p>Next comes the filename, padded with some spaces <b>outside</b> the quotes.</p>
<p><span style="font-family: courier;">20 20 20 22 48 45 4c 4c 4f 22 20 20 20 20 20 20 20 20 20 20 20 20</span></p>
<p>The space padding continues up to the file type, not in quotes, in this case PRG</p>
<p><span style="font-family: courier;">50 52 47</span></p>
<p>Finally a couple of spaces and then a null.</p>
<p><span style="font-family: courier;">20 20 00</span></p>
<p>The third line is the "blocks free" information.</p>
<p><span style="font-family: courier;">5d 04</span></p>
<p>This one starts as normal, the next line is at $045D, but the line number is actually the number of blocks free, 663 in this case, as $0297 in hex.</p>
<p><span style="font-family: courier;">97 02</span></p>
<p>After that is the BLOCKS FREE. text (no quotes)</p>
<p><span style="font-family: courier;">42 4c 4f 43 4b 53 20 46 52 45 45 2e</span></p>
<p>And then a load of spaces padding it to the end of the line. A final null, and then the two nulls at start of the next line indicate the end of the program.</p>
<p><span style="font-family: courier;">20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00</span></p>
<p>All the entries are exactly 32 bytes long.</p>
<p>When there are multiple files, there are simply more lines in the middle, and if the files are the same size, the line numbers are duplicated, but that does not matter as it is just used for listing.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjCi6_aWooByza4HpNqnxe2lMI7js9xzQ2F-QzLihNuEqomZBYiZO9eBD7Njk6csD4dySdE1ZcBN7nKwbigtyzievAp4iCBFuBV3_jvPqpUrZ95otFEnrAwcgNsJfHAhufm9172X0aEIl2mlO01VPGhH7f5C_7SQPX7Q3QyROP0aDaZGHkwOekmMRZHDZmg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjCi6_aWooByza4HpNqnxe2lMI7js9xzQ2F-QzLihNuEqomZBYiZO9eBD7Njk6csD4dySdE1ZcBN7nKwbigtyzievAp4iCBFuBV3_jvPqpUrZ95otFEnrAwcgNsJfHAhufm9172X0aEIl2mlO01VPGhH7f5C_7SQPX7Q3QyROP0aDaZGHkwOekmMRZHDZmg=w600-h450" width="600" />
</a>
</div>
<p>Here I went back and using the magic of the screen editor, entered the program again, formatted the disk again (with a different ID) and save the program 4 times.</p>
<pre style="font-family: courier; font-size: small;">>C:0401 1f 04 00 00 12 22 54 45 53 54 44 49 53 4b 20 20 ....."TESTDISK
>C:0411 20 20 20 20 20 20 22 20 32 30 20 32 41 00 3f 04 " 20 2A.?.
>C:0421 01 00 20 20 20 22 48 45 4c 4c 4f 20 31 22 20 20 .. "HELLO 1"
>C:0431 20 20 20 20 20 20 20 20 50 52 47 20 20 00 5f 04 PRG ._.
>C:0441 01 00 20 20 20 22 48 45 4c 4c 4f 20 32 22 20 20 .. "HELLO 2"
>C:0451 20 20 20 20 20 20 20 20 50 52 47 20 20 00 7f 04 PRG ...
>C:0461 01 00 20 20 20 22 48 45 4c 4c 4f 20 33 22 20 20 .. "HELLO 3"
>C:0471 20 20 20 20 20 20 20 20 50 52 47 20 20 00 9f 04 PRG ...
>C:0481 01 00 20 20 20 22 48 45 4c 4c 4f 20 34 22 20 20 .. "HELLO 4"
>C:0491 20 20 20 20 20 20 20 20 50 52 47 20 20 00 bd 04 PRG ...
>C:04a1 94 02 42 4c 4f 43 4b 53 20 46 52 45 45 2e 20 20 ..BLOCKS FREE.
>C:04b1 20 20 20 20 20 20 20 20 20 20 20 00 00 00 0d ff .....
>C:04c1 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
</pre>
<p>By the way, on the subject of things you can do with the screen editor. Whether by design or accident, the position of the filenames in a directory listing means you can cursor up and have space to type in <b>LOAD</b> before the name, then just cursor along and add <b>,8</b> in place of the PRG and load your program. Handy with long filenames, or ones with odd characters that are not easy to type out.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgq8FSNuIwJUWnf3e2Vy6szcdHg1HBDJLem3XYW4dhHCGsaGHeTQWadR3CId-Ya_MZWVNxvQ811cM5ZZan1zqcIyZM4I-tado-2u16lxsZCL6DUsw4URSdddVgYGiwGCuwfJGIP0s3wTx6qWli3E35KtGuSAyyQi_gSam7DPwurEPJ-EmzsssvC6mlnCo7o" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgq8FSNuIwJUWnf3e2Vy6szcdHg1HBDJLem3XYW4dhHCGsaGHeTQWadR3CId-Ya_MZWVNxvQ811cM5ZZan1zqcIyZM4I-tado-2u16lxsZCL6DUsw4URSdddVgYGiwGCuwfJGIP0s3wTx6qWli3E35KtGuSAyyQi_gSam7DPwurEPJ-EmzsssvC6mlnCo7o=w600-h450" width="600" />
</a>
</div>
<br />
<h2 style="text-align: left;">Penultimate Cartridge File Browser</h2>
<p>I wanted to integrate the file browser into the existing menu structure. This stile of menu was introduced for the Penultimate +, and has been added to with each release, as the list of games grew. The latest improvement that has made it a lot faster to use was adding SHIFT + letter navigation to jump directly to a page of the games list, starting with that letter.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEivPPa90NYrnRW335WdvXOdORqQJgS1v4pfq__N55iqcdiy_I3L2RfaHMn-TVES3dhR0RMCXtYLqerQWWEkryRI_7jDJe9J8GRV9zDPbWrDvzHXbU840x_BUDgBWyN97ns20Q__lkMbTAh_o2Exaa_iN4toDN77ZI7iRDUk2vm4SZVc2obXxiWJ8R7fAaWX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEivPPa90NYrnRW335WdvXOdORqQJgS1v4pfq__N55iqcdiy_I3L2RfaHMn-TVES3dhR0RMCXtYLqerQWWEkryRI_7jDJe9J8GRV9zDPbWrDvzHXbU840x_BUDgBWyN97ns20Q__lkMbTAh_o2Exaa_iN4toDN77ZI7iRDUk2vm4SZVc2obXxiWJ8R7fAaWX=w600-h450" width="600" />
</a>
</div>
<p>I could have looked at building in something like the FB program that is used on the SD2IEC, but I thought the difference in appearance was a bit jarring, and it would require a lot of work to deal with the memory management of the loading side.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgPJsgARZRvXUiIlkMixXyIxnpAFJNqYiegdhW0tXq1WW1I-AkEXxVWoVznPD8cBfR62UTcE2Cr82SFg9BcL3pEUbPhT3S3QKD5-DKgXXbR7qrQk7bUDqH4-zB1Aey9cKIuA_fPOx5pOYRclHbk5bKBHdX0ClsW8q5H6zOIOyvSAfoBNroIlwgTPWU19gO8" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgPJsgARZRvXUiIlkMixXyIxnpAFJNqYiegdhW0tXq1WW1I-AkEXxVWoVznPD8cBfR62UTcE2Cr82SFg9BcL3pEUbPhT3S3QKD5-DKgXXbR7qrQk7bUDqH4-zB1Aey9cKIuA_fPOx5pOYRclHbk5bKBHdX0ClsW8q5H6zOIOyvSAfoBNroIlwgTPWU19gO8=w600-h450" width="600" />
</a>
</div>
<p>To make that work with the existing menu structure meant I had to adapt that from using the hard coded games list and fixed menus to being able to work with a dynamically loaded file list from disk. I will not go into the internal workings of the menu, but I do want to look at getting the data to create the directory listings.</p>
<p>Having the games list dynamically loaded did come in very handy for adding the "filter by category" and the source for the random games list.</p>
<p>Based on what I had learned, I was able to implement the file browser in the Penultimate +2 Cartridge.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7frop3GdTYLSLOi6YVBPpTAv2uLzbjIVnnc1rSjJWlh0F6MXtPyddMJyTmknRlLLcJDxZeCTegzkGAT06__B8YJDizD2hjeAyFNfsVqlloO2gB16qguSX6aBRbCgedeo2ai6WZhAFHzlVM_jj9_f0P7umXwNkAqIN-9pXI5pZ-iPFDZTjO5MGUZe1L__f" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7frop3GdTYLSLOi6YVBPpTAv2uLzbjIVnnc1rSjJWlh0F6MXtPyddMJyTmknRlLLcJDxZeCTegzkGAT06__B8YJDizD2hjeAyFNfsVqlloO2gB16qguSX6aBRbCgedeo2ai6WZhAFHzlVM_jj9_f0P7umXwNkAqIN-9pXI5pZ-iPFDZTjO5MGUZe1L__f=w600-h450" width="600" />
</a>
</div>
<p>Once you are thinking about the directory as a program, then all I have to do is load the program into memory. The maximum number of files on a Commodore disk is 144. Each entry is 32 bytes, so the total is about 4.5K, including the extra lines for the disk title and blocks free. That means I couldn't load the listing to $0401 as it was on the PET as that would overwrite the screen when it got to $1000.</p>
<p>The menu program on the cartridge is already taking up three 8K blocks of ROM, and is ever growing with all the new things being added. I was thinking I might expand that to four 8K blocks of ROM, but I will need to keep 8K free to load the directory listing.</p>
<p>I override the load address, and load the data to RAM at $2000, the start of the 8K bank 1.</p>
<pre style="font-family: courier; font-size: small;">>C:2000 01 01 00 00 12 22 54 45 53 54 44 49 53 4b 20 20 ....."TESTDISK
>C:2010 20 20 20 20 20 20 22 20 32 30 20 32 41 00 01 01 " 20 2A...
>C:2020 01 00 20 20 20 22 48 45 4c 4c 4f 20 31 22 20 20 .. "HELLO 1"
>C:2030 20 20 20 20 20 20 20 20 50 52 47 20 20 00 01 01 PRG ...
>C:2040 01 00 20 20 20 22 48 45 4c 4c 4f 20 32 22 20 20 .. "HELLO 2"
>C:2050 20 20 20 20 20 20 20 20 50 52 47 20 20 00 01 01 PRG ...
>C:2060 01 00 20 20 20 22 48 45 4c 4c 4f 20 33 22 20 20 .. "HELLO 3"
>C:2070 20 20 20 20 20 20 20 20 50 52 47 20 20 00 01 01 PRG ...
>C:2080 01 00 20 20 20 22 48 45 4c 4c 4f 20 34 22 20 20 .. "HELLO 4"
>C:2090 20 20 20 20 20 20 20 20 50 52 47 20 20 00 01 01 PRG ...
>C:20a0 94 02 42 4c 4f 43 4b 53 20 46 52 45 45 2e 20 20 ..BLOCKS FREE.
>C:20b0 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 00
</pre>
<p>Looking at the data which is loaded, you can see the addresses for the next lines are not as they were before. The are all $0101. This is because the BASIC LOAD command relinks the program lines depending on where they are loaded in memory. The disk drive doesn't know what machine you have. Back in 1978, they could not even dream that the VIC20 would follow a couple of years later and have three different load addresses based on the amount of expansion RAM installed.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfxQUsQIdl-9vKTKp-Pl15LA0s2feyjhjgT0fZL2emG_3AODDU-4gbH3WwPiLFSNv4ndE8AmlUfbvJJuirLRhccx9VIldrSxEmeT2qqqWkZYbRzPLXlBCoEuzwiWIsq__fYIer8Psw8b0ySOVfRgbG-CGlfe4AUAfAG7wo-4a_aRXthgEtfhQm5jgUHcWU" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfxQUsQIdl-9vKTKp-Pl15LA0s2feyjhjgT0fZL2emG_3AODDU-4gbH3WwPiLFSNv4ndE8AmlUfbvJJuirLRhccx9VIldrSxEmeT2qqqWkZYbRzPLXlBCoEuzwiWIsq__fYIer8Psw8b0ySOVfRgbG-CGlfe4AUAfAG7wo-4a_aRXthgEtfhQm5jgUHcWU=w600-h450" width="600" />
</a>
</div>
<p>So going back to the VIC20, if I load the same "$" file from the same drive, it lists the same, but when you look at the RAM, you can see the line addresses have all been changed.</p>
<pre style="font-family: courier; font-size: small;">>C:1000 00 1f 10 00 00 12 22 54 45 53 54 44 49 53 4b 20 ......"TESTDISK
>C:1010 20 20 20 20 20 20 20 22 20 32 30 20 32 41 00 3f " 20 2A.?
>C:1020 10 01 00 20 20 20 22 48 45 4c 4c 4f 20 31 22 20 ... "HELLO 1"
>C:1030 20 20 20 20 20 20 20 20 20 50 52 47 20 20 00 5f PRG ._
>C:1040 10 01 00 20 20 20 22 48 45 4c 4c 4f 20 32 22 20 ... "HELLO 2"
>C:1050 20 20 20 20 20 20 20 20 20 50 52 47 20 20 00 7f PRG ..
>C:1060 10 01 00 20 20 20 22 48 45 4c 4c 4f 20 33 22 20 ... "HELLO 3"
>C:1070 20 20 20 20 20 20 20 20 20 50 52 47 20 20 00 9f PRG ..
>C:1080 10 01 00 20 20 20 22 48 45 4c 4c 4f 20 34 22 20 ... "HELLO 4"
>C:1090 20 20 20 20 20 20 20 20 20 50 52 47 20 20 00 bd PRG ..
>C:10a0 10 94 02 42 4c 4f 43 4b 53 20 46 52 45 45 2e 20 ...BLOCKS FREE.
>C:10b0 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 ....
</pre>
<h3>It all looks fine, to the naked eye, but it don't really happen that way at all.</h3>
<p>That all looks good, but I have found quite a few oddities. Consider this, the 1540/1541 demo disk.</p>
<p>Listing looks good doesn't it.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiL5-SMq4EfgyqUyd625ojPhXxox3ICbgKuXCyUryXOwb5BckeN6FlJm0iymMrXSuhX8g_plg3XzEU5ZIHLeubjSJ7VPxbFXJSoCpjcd3EBPckPhX5u-IuOnSvfgUMxLsb991ZYzpSG5vJv_RVIuCiv_b2QaSqteDrsmDyRgH6DwNrCywPYJXtpjsCIcLqR" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiL5-SMq4EfgyqUyd625ojPhXxox3ICbgKuXCyUryXOwb5BckeN6FlJm0iymMrXSuhX8g_plg3XzEU5ZIHLeubjSJ7VPxbFXJSoCpjcd3EBPckPhX5u-IuOnSvfgUMxLsb991ZYzpSG5vJv_RVIuCiv_b2QaSqteDrsmDyRgH6DwNrCywPYJXtpjsCIcLqR=w600-h450" width="600" />
</a>
</div>
<p>But looking at the program in memory it is not consistent. Some lines have two spaces before the quotes, some three. </p>
<pre style="font-family: courier; font-size: small;">>C:0401 1f 04 00 00 12 22 31 35 34 30 54 45 53 54 2f 44 ....."1540TEST/D
>C:0411 45 4d 4f 20 20 20 22 20 5a 5a 20 32 41 00 3f 04 EMO " ZZ 2A.?.
>C:0421 04 00 20 20 20 22 44 49 52 22 20 20 20 20 20 20 .. "DIR"
>C:0431 20 20 20 20 20 20 20 20 50 52 47 20 20 00 5f 04 PRG ._.
>C:0441 06 00 20 20 20 22 56 49 45 57 20 42 41 4d 22 20 .. "VIEW BAM"
>C:0451 20 20 20 20 20 20 20 20 50 52 47 20 20 00 7f 04 PRG ...
>C:0461 0e 00 20 20 22 44 49 53 50 4c 41 59 20 54 26 53 .. "DISPLAY T&S
>C:0471 22 20 20 20 20 20 20 50 52 47 20 20 20 00 9f 04 " PRG ...
>C:0481 04 00 20 20 20 22 43 48 45 43 4b 20 44 49 53 4b .. "CHECK DISK
>C:0491 22 20 20 20 20 20 20 20 50 52 47 20 20 00 bf 04 " PRG ...
>C:04a1 09 00 20 20 20 22 50 45 52 46 4f 52 4d 41 4e 43 .. "PERFORMANC
>C:04b1 45 20 54 45 53 54 22 20 50 52 47 20 20 00 df 04 E TEST" PRG ...
>C:04c1 05 00 20 20 20 22 53 45 51 55 45 4e 54 49 41 4c .. "SEQUENTIAL
>C:04d1 20 46 49 4c 45 22 20 20 50 52 47 20 20 00 ff 04 FILE" PRG ...
>C:04e1 0d 00 20 20 22 52 41 4e 44 4f 4d 20 46 49 4c 45 .. "RANDOM FILE
>C:04f1 22 20 20 20 20 20 20 50 52 47 20 20 20 00 1d 05 " PRG ...
>C:0501 61 02 42 4c 4f 43 4b 53 20 46 52 45 45 2e 20 20 a.BLOCKS FREE.
</pre>
<p>It took me quite a while to realise this was to make all the quotes line up. The line number is the number of blocks, which can be 1, 2 or 3 digits long, so the number of spaces after the line number is reduced by 1 for >9 and by two for >99. Seems perfectly logical once I worked it out, but before that it just looked like it randomly changed the padding.</p><p>It does make it quite a challenge to parse that to extract the data because you can't just read filename, skip 32 bytes, read next filename etc.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhRo5NdU6_pfiorOKLPFuJUEj2-05eySxSp6zhEL2qPKcpoui4NKNxhFvZ5nDEdWEOuGvS1IziqDLJhrI9vaTIm6GhxmhR86ppWW_PkjJiNAx0W55RykMogkGkVpuEyPct47QfOqYdF59g0BTbfzE2K4GEB0DWXgrWWIFgM5O--UUhuICtUiFf-JQNfSaVA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhRo5NdU6_pfiorOKLPFuJUEj2-05eySxSp6zhEL2qPKcpoui4NKNxhFvZ5nDEdWEOuGvS1IziqDLJhrI9vaTIm6GhxmhR86ppWW_PkjJiNAx0W55RykMogkGkVpuEyPct47QfOqYdF59g0BTbfzE2K4GEB0DWXgrWWIFgM5O--UUhuICtUiFf-JQNfSaVA=w600-h450" width="600" />
</a>
</div>
<p>But, I got there in the end. I spent quite a while searching out various esoteric disk images to make sure all would be supported, and with the exception of some animated ones with trick graphics, all work well. Up to, and including the maximum 144 files.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjYzrxRSHqEyeuTPho5rgGLthMLNclA-So3K5ncrrXzEGRxCii6ZmYAdpo9hx6h77VXrEBar5-GAz82fGqygwHMzsF9ONf2PBnCN0C2j1DaG0RT0qCLbuE01TuBDSdNmRm8RY-GjyKzqdpd_x35Ydk-R27YIAExCB9eYVP94Nj4tq9JyteYX33xxf22Zg_M" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjYzrxRSHqEyeuTPho5rgGLthMLNclA-So3K5ncrrXzEGRxCii6ZmYAdpo9hx6h77VXrEBar5-GAz82fGqygwHMzsF9ONf2PBnCN0C2j1DaG0RT0qCLbuE01TuBDSdNmRm8RY-GjyKzqdpd_x35Ydk-R27YIAExCB9eYVP94Nj4tq9JyteYX33xxf22Zg_M=w600-h450" width="600" /></a></div><div><br /></div><h2 style="text-align: left;">What about directories?</h2>
<p>I couldn't find any way to create a directory within a D64 image, I do not think it was ever supported, however, it is supported by things like the SD2IEC disk drive.</p>
<p>However, this is no support for it in the <b>LOAD "$"</b> directories. What you see if the folder name instead of the disk name, and the list of files. No ".." for the root directory as you might expect.</p>
<p>I have to manually add the .. to the list of files, as well as the back arrow to go back to the menu.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi1gr6CEQOFrVpdb5dJFX8ooT6EjTb1lIYH0lcZ1jio0AmTsBJ0AQka8CR5uKyIwS-FHBHnVH3ojvDR45HWRSeFNcp_73PgEc6mERweefzjvoqcnerlVgBCF2LwNZi-xL41pP52DmNiqiAenIb3e3kG1-OBzVBaNQU0TvuoJ5TGTHZYmP0vMjUpUXF8yXA1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2664" data-original-width="3552" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi1gr6CEQOFrVpdb5dJFX8ooT6EjTb1lIYH0lcZ1jio0AmTsBJ0AQka8CR5uKyIwS-FHBHnVH3ojvDR45HWRSeFNcp_73PgEc6mERweefzjvoqcnerlVgBCF2LwNZi-xL41pP52DmNiqiAenIb3e3kG1-OBzVBaNQU0TvuoJ5TGTHZYmP0vMjUpUXF8yXA1=w600-h450" width="600" />
</a>
</div>
<p>I have switched to photos from a real VIC20 (in this case an NTSC one) to show the folder structure, since I cannot get a disk image with subdirectories on the Vice emulator I have been for the other screenshots in this post.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgiWL5miiutU5nhB8IO9uwQVdoS1aSUGggbzIbD080iU6L9bhLf4zP4Y5PDuKAoS4tbEjorbow7JevEhkdCPDYutQpe49AHcJHtB1N9cdYPsibDRbCenoDI1HeEjw0MHX747CsP5VDV7U7wrYcf3Q6u1Jbfwt_7fbND4cG5F5FitE9IJm7u39qFskrz0MXS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2388" data-original-width="3184" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgiWL5miiutU5nhB8IO9uwQVdoS1aSUGggbzIbD080iU6L9bhLf4zP4Y5PDuKAoS4tbEjorbow7JevEhkdCPDYutQpe49AHcJHtB1N9cdYPsibDRbCenoDI1HeEjw0MHX747CsP5VDV7U7wrYcf3Q6u1Jbfwt_7fbND4cG5F5FitE9IJm7u39qFskrz0MXS=w600-h450" width="600" />
</a>
</div>
<p>There was a bug in the original version where the extra line needed for the .. was not taken into account when moving to the second screen, so in the case of A-Z folders in a subdirectory, the Q would be skipped. This is fixed in later versions.</p>
<h2 style="text-align: left;">Addendum</h2>
<p>Just to add to this, the version of BASIC 4 for the VIC20 includes the DIRECTORY and CATALOG commands, and they appear to be better formatted for the available screen width.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh7ZbYym-wgvkEO7iIQBcMkxzNhj2avbFi7megrYTTu9YVQFA_A3xbaAMSN2ZbqzAbU78b12XYEXLeFnr0ZFUR33pO3AZ74tW_LPq5vJyCb2m1jcUSVM6XKDGHMofkD0_Hy-gCYSvs-kJwNEn3hAxlCI6v97sxANHz0HgLLK4ZmgT562MtC4t_GBItOxY0J" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh7ZbYym-wgvkEO7iIQBcMkxzNhj2avbFi7megrYTTu9YVQFA_A3xbaAMSN2ZbqzAbU78b12XYEXLeFnr0ZFUR33pO3AZ74tW_LPq5vJyCb2m1jcUSVM6XKDGHMofkD0_Hy-gCYSvs-kJwNEn3hAxlCI6v97sxANHz0HgLLK4ZmgT562MtC4t_GBItOxY0J=w600-h450" width="600" />
</a>
</div>
<p>You can type out DIRECTORY or CATALOG in full, but I find the shortcuts easier, I normally use C shift A.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjwjkIbCkUN2eoI7tzAGrqtY6SZuB4WTc7NAxmibVU-yQq4OUYeAZBIn4UPAqSAugsFksE5m9f9jjDwGJyUBARbEOX8FogsIMoVVH9NMP9loL6NqRQN4FFnwowdaOOOws2LFTaQ0VgiBU76SkpNH7SrivBuJG9Z8WfdlOpJiPiw_6jL9QcyWTD9MFMeLWdq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjwjkIbCkUN2eoI7tzAGrqtY6SZuB4WTc7NAxmibVU-yQq4OUYeAZBIn4UPAqSAugsFksE5m9f9jjDwGJyUBARbEOX8FogsIMoVVH9NMP9loL6NqRQN4FFnwowdaOOOws2LFTaQ0VgiBU76SkpNH7SrivBuJG9Z8WfdlOpJiPiw_6jL9QcyWTD9MFMeLWdq=w600-h450" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>Penultimate +2 Cartridge</h2>
<p>The Penultimate +2 Cartridge, with built in file browser and so much more are in stock at The Future Was 8 bit:</p>
<ul>
<li>
<a href="https://tfw8b.com/product/vic20-penultimate-plus-two/" rel="nofollow" target="_blank">https://tfw8b.com/product/vic20-penultimate-plus-two/</a>
</li>
</ul>
<p>More info in a previous post:</p>
<p>
<a href="http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html" rel="nofollow" target="_blank"> http://blog.tynemouthsoftware.co.uk/2023/06/penultimate-plus-2-cartridge.html</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/s1280/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1022" data-original-width="1280" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiQ2BfAvFoHK1WkxZHihJVtD7qzqhxc5iw9HpI4OC1l7p_pYdtt23EIWIEjchhY3KfPxQHnJlrSpICi3BMTToqKQsMd9lOjVPeFRz3NZJOAYtVIohux8p8DIZcQQoNOGAVHRS3LjOd367pink_hjI-ExDkwfIsWuAayId4TvJdwQoUw0FsAJpMmEDnDg/w600-h480/TFW8b_VIC20_PUPLUS2-IMG_20230602_214251.jpg" width="600" />
</a>
</div>
<p>See also a great video from Robin, 8 bit show and tell:</p>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="BLOG_video_class" height="450" src="https://www.youtube.com/embed/eNGyneXHKJQ" width="600" youtube-src-id="eNGyneXHKJQ"></iframe>
</div>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-85882085989689896232023-12-17T09:57:00.001+00:002023-12-17T09:57:05.131+00:00ZX80 BASIC on a Minstrel 4D - Part 4 - ZX80 Autoload<p>I have been working on porting ZX80 BASIC to the Minstrel 4D. Hardware that was designed to run the Jupiter Ace, without making any hardware changes.</p>
<p>The next target for things to get working were two excellent flicker-free ZX80 games from Paul Farrow.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrgSTHU7qRzKYFJMdv4oa6Mf6RjRmaQR0Cz7jhhfs-LWnowNNcx8eJ3q7p5sJTCBQ9hnJL0raqG-SFt301wqmP0sZdYLKbbyno7P7AqSr285LFrHxXcJlUzjUi7R_UCzLO7uRqParoMvG-UR5iCgZ2M2YAP2u1KWUITCcFxkjsQC6khLGA2cWHmx3KjiKv/s4577/ZX80%20Kong%20and%20Pacman%20tapes.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="3433" data-original-width="4577" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrgSTHU7qRzKYFJMdv4oa6Mf6RjRmaQR0Cz7jhhfs-LWnowNNcx8eJ3q7p5sJTCBQ9hnJL0raqG-SFt301wqmP0sZdYLKbbyno7P7AqSr285LFrHxXcJlUzjUi7R_UCzLO7uRqParoMvG-UR5iCgZ2M2YAP2u1KWUITCcFxkjsQC6khLGA2cWHmx3KjiKv/w600-h450/ZX80%20Kong%20and%20Pacman%20tapes.jpg" width="600" />
</a>
</div>
<p>Following on from the post testing games on the ZX80 BASIC port on the Minstrel 4D, I had got as far as testing Paul's ZX80 version of Mazogs - <a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Mazogs.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Mazogs.htm</a></p>
<p>I was pleased to see that working well.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi8Br_2VSq3mtiD7A2q7q6_lG7oXRwPa9mw1i73IEtC6p2Rb15zK5Vceq-KZ-vyXGwQ9AE2f5PXLLlDaZw6MMCt3JCvUKjXCAnNmCJUWeCwKKCPWQNuDYeUw7IXIw3y6ue4m77DKveAk8IXS2giLBQFXCPCrYdKf9524xxXLxkkVrsdZ89iha9CyeJscxO-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi8Br_2VSq3mtiD7A2q7q6_lG7oXRwPa9mw1i73IEtC6p2Rb15zK5Vceq-KZ-vyXGwQ9AE2f5PXLLlDaZw6MMCt3JCvUKjXCAnNmCJUWeCwKKCPWQNuDYeUw7IXIw3y6ue4m77DKveAk8IXS2giLBQFXCPCrYdKf9524xxXLxkkVrsdZ89iha9CyeJscxO-=w600-h450" width="600" />
</a>
</div>
<p>But when I tested ZX80 Kong, that unfortunately did not work, just giving an odd single line listing. - <a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Kong.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Kong.htm</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgrakl9lmWTFF52-kGOO_hWZH0MS0NPij8nKHbSiWEjM2tlP6EackMKEGtqNdjd8q6RBeO_QDptnmIdMrX4Pm7go5M4591ZahiqFH7-T3E3_xfenO9LgzXi_wdNMrJdEAF51Mot1dp8q92wGtaFXB3bME0OxPpb-KUQoGD0H5TCagBirhhU2KGMdQ6EYHuq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgrakl9lmWTFF52-kGOO_hWZH0MS0NPij8nKHbSiWEjM2tlP6EackMKEGtqNdjd8q6RBeO_QDptnmIdMrX4Pm7go5M4591ZahiqFH7-T3E3_xfenO9LgzXi_wdNMrJdEAF51Mot1dp8q92wGtaFXB3bME0OxPpb-KUQoGD0H5TCagBirhhU2KGMdQ6EYHuq=w600-h450" width="600" />
</a>
</div>
<p>ZX80 Pacman was the same.</p>
<p>I wasn't sure what was going on here, other flicker-free mechanisms did appear to be working, so why were these games not running?</p>
<p>I remembered that unusually for the ZX80 these games ran directly after loading, rather than needing <b>RUN</b> or <b>GOTO 100</b> etc. to be typed.</p>
<p>The page includes the following lines:</p>
<blockquote><i>The game is written entirely in machine code, and uses the technique developed by Martin Knorth to auto-run upon loading. It first performs an integrity test to ensure that it has loaded from cassette correctly and should an error be detected then a return to BASIC is made and an error message displayed.</i></blockquote>
<p>I contacted Paul and asked if he could tell me more, to see if that was indeed the problem, and he kindly replied with the information and link to the appropraite page.</p>
<p>I added a quick bodge to test the theory, and it worked first time.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgctX4JkMi-dei4C1b5lx_esq6yKlOZZk8hz1qMHk51A97v8D0pgy6oOxkEXKBEfEhwlHNYt990_xi9vTtER9lbYWyGyLTQ0toeAuK8vVcp2CWnGCrB-CH8KxCKg-7LCFc2k64qS1m-caY-WRU4URWKgdrOO11D4xhbs08EsMA-cQ9uAq0JvapI1rvPNCM_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgctX4JkMi-dei4C1b5lx_esq6yKlOZZk8hz1qMHk51A97v8D0pgy6oOxkEXKBEfEhwlHNYt990_xi9vTtER9lbYWyGyLTQ0toeAuK8vVcp2CWnGCrB-CH8KxCKg-7LCFc2k64qS1m-caY-WRU4URWKgdrOO11D4xhbs08EsMA-cQ9uAq0JvapI1rvPNCM_=w600-h450" width="600" />
</a>
</div>
<p>First the "Lightening Software" logo page, and then the Kong title screen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi0CT-pwZYrIvbwFYG6eMnT29M649EyY7KeQYdacfKPuFGN5vN-nBn45jHanCZFvoYfPk_nLDsRoVLITAwXu9ed08wl-OsgRuTLosTxQnmWc7gsGqfX3BF-5yv0mV25otG8ya9ttMbyVstkj3IEeL0Fe_--wVsnqrf43LTPzlxbh0hEOGXO1XFrECUC6Y-y" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi0CT-pwZYrIvbwFYG6eMnT29M649EyY7KeQYdacfKPuFGN5vN-nBn45jHanCZFvoYfPk_nLDsRoVLITAwXu9ed08wl-OsgRuTLosTxQnmWc7gsGqfX3BF-5yv0mV25otG8ya9ttMbyVstkj3IEeL0Fe_--wVsnqrf43LTPzlxbh0hEOGXO1XFrECUC6Y-y=w600-h450" width="600" />
</a>
</div>
<p>That all appeared to be working, so time to try the game.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhGq3dwNYrnJbqQRZpLedGqIRSBUGwS1EORFmvKgOyXoltCD1JlsYIo-7BxB-mlysCm2FECAEfTCswz9WFUMaetWJYGqlatEm5j8Tw1imJ7aWteqoTJAoT95EcIdcUGv5cP9rSVxvaKeKdmC4D5v5r0eIsDYoFLy8-DWabqBtYj5D5FZC7bNb2UOOKmKCrv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhGq3dwNYrnJbqQRZpLedGqIRSBUGwS1EORFmvKgOyXoltCD1JlsYIo-7BxB-mlysCm2FECAEfTCswz9WFUMaetWJYGqlatEm5j8Tw1imJ7aWteqoTJAoT95EcIdcUGv5cP9rSVxvaKeKdmC4D5v5r0eIsDYoFLy8-DWabqBtYj5D5FZC7bNb2UOOKmKCrv=w600-h450" width="600" />
</a>
</div>
<p>And yes, it works fine. There are a couple of caveats. The game appeared to be running slow, but I think that was just the inefficient bodge to test proof of principle. It should hopefully run at the correct speed once that has been implemented better. <i>(it did)</i></p>
<p>The keys default to the arrow keys. Left and Right are the same, but up and down are reversed between the ZX80 and Jupiter Ace, so you need to press the 7 key, marked down, to move up.</p>
<p>There quite a lot of other control options, unfortunately (<i>although fully justifiably</i>), it does not include support for the Boldfield joystick port on the Minstrel 4D. There are other keyboard options, including QA OP + M and others. However, to get to these you have to press the C key. The keyboard scanning routine has been replaced, so it has the same problem as Hampton's maze, the keys on the bottom row are offset one place, so you have to press X rather than C.</p>
<p>Most programs use the ROM keyboard scan routines, which have been adjusted for the Minstrel 4D keyboard layout, but anything with it's own scan routines is going to have this issue.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh7ys-Xanug27RGI9YsrYs3lMrI9-FlzAUMgonBNrRzxpxk6LEBXrAxJgHas2NvB_p-DAW-5MzXYuBkedEPUB4KC-9Ee5VqTTzquZMcAe-02i8Fb_YEkdt3YDPBsLpFx2IFijM2PRCOnzEHd1zuKfYYb4z7yF-e52WFYHA2U8TiAvzkEx2MglN3ybpaCUYf" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh7ys-Xanug27RGI9YsrYs3lMrI9-FlzAUMgonBNrRzxpxk6LEBXrAxJgHas2NvB_p-DAW-5MzXYuBkedEPUB4KC-9Ee5VqTTzquZMcAe-02i8Fb_YEkdt3YDPBsLpFx2IFijM2PRCOnzEHd1zuKfYYb4z7yF-e52WFYHA2U8TiAvzkEx2MglN3ybpaCUYf=w600-h450" width="600" />
</a>
</div>
<p>ZX80 Pacman also worked -<a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Pacman.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Pacman.htm</a></p>
<p>This had the same issues with the keyboard scanning on the bottom row of keys, but otherwise played great.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjJvjSKat-n3UJVxcV7fdY9dP0r3nscj6lfrs-9LIm8FkfrG5XdSiFf4RMajsw8EME5tiNBpMyqGXyAyaQgAxEGfJhFSCsBWznBZHYldoObLRU_Jf8CyfjlipCTj9Fokomn6kKqkE0vu8T3wFp02G4Vc9NuM4N_lZqjNMx8I07Azo1buzNITDEWqb5Qn6O5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjJvjSKat-n3UJVxcV7fdY9dP0r3nscj6lfrs-9LIm8FkfrG5XdSiFf4RMajsw8EME5tiNBpMyqGXyAyaQgAxEGfJhFSCsBWznBZHYldoObLRU_Jf8CyfjlipCTj9Fokomn6kKqkE0vu8T3wFp02G4Vc9NuM4N_lZqjNMx8I07Azo1buzNITDEWqb5Qn6O5=w600-h450" width="600" />
</a>
</div>
<p>It is interesting to note there is no clicking in the flicker-free routines used in these games, I think they are using <b>OUT $FF,A</b> rather than the <b>OUT $FE,A</b> that was triggering the clicking.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi16D0-VKbnUr5cJpyEVaxtQIUfJfAKFv9CNz3r3mdKZ6d2omeMZ8xxVy_oMyfBF4Vw-SMFmbn5eXh6-ziqE5NgRB5u41E-yXp1gV8nSKG222u26qfH2bCnlEWoIAcnFKNgGyuEPDN-5MawpvwtCKYhXiE-cvK76Mn-NTJPDzA--x-NWOyw-rV7fhqSHFKR" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi16D0-VKbnUr5cJpyEVaxtQIUfJfAKFv9CNz3r3mdKZ6d2omeMZ8xxVy_oMyfBF4Vw-SMFmbn5eXh6-ziqE5NgRB5u41E-yXp1gV8nSKG222u26qfH2bCnlEWoIAcnFKNgGyuEPDN-5MawpvwtCKYhXiE-cvK76Mn-NTJPDzA--x-NWOyw-rV7fhqSHFKR=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">How does the autostart work?</h2>
<p>So, what had caused them not to work? Well, a clue can be gleaned from the loading screen I was seeing with line one with just a black square.</p>
<p>The technique used was devised by Martin Korth, and is the "nocash LD H,L trick".</p>
<p>See <a href="https://problemkaputt.de/zxdocs.htm#zx80zx81cassettefilecontent">https://problemkaputt.de/zxdocs.htm#zx80zx81cassettefilecontent</a></p>
<p>Remember from "How the ZX80 Generates Video" that the screen information in the display file is executed as it is stepped through. If address bit 15 is set, the ZX80 hardware is in screen drawing mode. </p><p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx80-generates-video.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx80-generates-video.html</a></p>
<p>When the ZX80 hardware sees an execute cycle, data bit 6 is used to see if this is a printable character. If it is one of $00-3F (normal characters) or $80-$BF (inverse characters), then bit 6 is not set. The hardware detects this and the Z80 is sent a NOP instruction to execute instead. When bit 6 is set, the value from the display file is executed. The normal use for this is $76 the newline character which is also the opcode for "Halt".</p>
<p>The special listing seen above is constructed such that line one contains a value which does have bit 6 set, and so is executed as the screen is being drawn.</p>
<p>This is $65, <b>LOAD H,L</b></p>
<p>The HL register pair is used to store a pointer to the display file, with address bit 15 set, so it is treated specially by the hardware. The is the display file mirror in upper RAM, in the $C000-$FFFF region.</p>
<p>The position is directly after the program in memory, so it varies with the program size.</p>
<p>The technique requires the program size to be padded out so it ends at a point where the lower byte of the address is $3D.</p>
<p>Say the program ends at $503D. The display file will start at $503E, and to generate the display bit 15 of the address is set to make this $D03E. The code jumps to that address is set and the Z80 will start to "execute" the display file. The hardware detects bit 15 has been set and starts to draw the display (the sync pulse will have already been generated).</p>
<p>When it hits the $65, HL will be holding $D040. HL is a 16 bit pair made from registers H and L, with H holding $D0 and L holding $40. The <b>LD H, L</b> instruction will load $40 in H, making HL $4040.</p>
<p>When it gets to the next display line, it will be expecting to jump back into the display file using the HL pointer, but instead will jump to $4040. This address does not have bit 15 set, so will not be interpreted as display data and instead will be executed as normal code.</p>
<p>$4040 will be the entry point into the user program, so it will start to execute. Neat.</p>
<h2 style="text-align: left;">Making that work on the Minstrel 4D</h2>
<p>This was not working on the Minstrel 4D as the display hardware is very different, so does not execute the display file in the same way, so the <b>LD</b> command was not being executed and the program was not starting.</p>
<p>My initial hack to get this working was to check each character as it was being drawn to the screen, and when it hit a $65, it would jump to $4040 and execute the code there.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj8vmNBOHrz7EMYMtUevA3dn4CTNxDHNzGY8qQqGmrxAD9uODGTmKe59E-r-byhRtYbZe7jPAT-Gr3sMkgcrzv18F-NCjOZ41-pRAybd6B6VK1NdgPqXJtU_90BggmWbN2yAT5zeuU-Njj8ImEs2vjqnqpvZlir77g7H3u-qd2zGIKEkwCEZN9WdOfAgrhC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj8vmNBOHrz7EMYMtUevA3dn4CTNxDHNzGY8qQqGmrxAD9uODGTmKe59E-r-byhRtYbZe7jPAT-Gr3sMkgcrzv18F-NCjOZ41-pRAybd6B6VK1NdgPqXJtU_90BggmWbN2yAT5zeuU-Njj8ImEs2vjqnqpvZlir77g7H3u-qd2zGIKEkwCEZN9WdOfAgrhC=w600-h450" width="600" />
</a>
</div>
<p>You can that in this photo taken at just the right time. <i>(I had to do that twice as I had to take all these pictures again. Apparently my camera will happily take pictures, make the noise, show the preview etc. all with no SD card installed. Ask me how I know.)</i> </p><p>Loading is complete, and the listing has started, but as soon as the $65 was going to be written, it instead jumped to $4040, which is executing some code before it finally clears the screen and starts the game.</p>
<p>That was not ideal as that meant an extra delay on each character to test against $65 and then $76 (halt / newline). Instead I modified the <b>LOAD</b> completion routine. It only runs after the load is compelte, and checks for the presence of the specially crafted trick line. If it detects that, it jumps to $4040 instead of jumping to the routine which will list the program as normal on <b>LOAD</b> completion.</p>
<p>This returned the game to normal speed and it went neatly from the end of loading to the game splash screen.</p>
<hr />
<h2 style="text-align: left;">Trying out the autoloader</h2>
<p>I thought it might be interesting to try out this autoload mechanism.</p>
<p>I was looking around for some simple test program I could make autostart, when I thought that I could use the Macronics games I had previously tested.</p>
<p>Those were small ZX80 games that were published as type in listings as well as sold on tape, so were quite small. I was already looking at generating versions patched to use <b>OUT $FF,A</b> like the ZX80 ROM does, rather than <b>OUT $FE,A</b> that Macronics used and unfortunately causes the speaker to tick on the Minstrel 4D.</p>
<p>There are disassemblies and details analysis of these games on Paul Farrow's site:</p>
<p></p><ul style="text-align: left;"><li><a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Breakout.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Breakout.htm</a></li><li><a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_SpaceIntruders_1K.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_SpaceIntruders_1K.htm</a></li><li><a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_SpaceIntruders_3K.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_SpaceIntruders_3K.htm</a></li></ul><p></p>
<p>I started with the disassembly, planning to rebase the code to start at $4040, to fit in with the autostart mechanism. I think that would have worked with the 3K game, but things were too tight for the two 1K games.</p>
<p>It's easy to forget the screen display on a ZX80 is 32x24, so 768 bytes, and the unexpanded machine has only 1024 bytes of RAM. That leaves only 256 bytes for the code, stack, variables etc. This is why the 1K version of space invaders uses a partial screen as there is not enough RAM to make it full size.</p>
<p><i>(hard to believe you can have a playable game in just 256 bytes when you think of modern games where even the update patches can be several gigabytes).</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieW1J6N9dQ_w4ZJQ32xuMtWOVGkEfhr7AbZ3vjlYjWrJZMU-yGnrGmw7jd86Gt_uMAdPEl6KdKFnDhXoOY473CKXGMo67yYXhzQj_LDj9Rb9utk7tdeS_fmQLoohwxX1Xe3-JUe9omT2OB8CYpBfcItVUIQDkZIOazvqYGdWEu7-1A5Y_7ryOzVVYDsWnV/s4896/Invaders%201K%20with%20white%20fill.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieW1J6N9dQ_w4ZJQ32xuMtWOVGkEfhr7AbZ3vjlYjWrJZMU-yGnrGmw7jd86Gt_uMAdPEl6KdKFnDhXoOY473CKXGMo67yYXhzQj_LDj9Rb9utk7tdeS_fmQLoohwxX1Xe3-JUe9omT2OB8CYpBfcItVUIQDkZIOazvqYGdWEu7-1A5Y_7ryOzVVYDsWnV/w600-h450/Invaders%201K%20with%20white%20fill.jpg" width="600" />
</a>
</div>
<p>The original programs used a BASIC loader. The code was present in hex values in <b>PRINT</b> statements. This was extracted and copies to RAM at $4000 (the base of ZX80 RAM) and executed. In the process, this overwrote the original <b>PRINT</b> statements, but the extracted code was smaller than the container, so no problem there.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNz70whrJ4EFA7AF1TNilgUxmBUlOUlBSBzmJSay8eDAjf9Nbt_1WnC7geG460SHi-1IKuHu1cY5tc4oO1FmIAvEbtQG224UP14UGwpwtq21uadU6ak_vjYDuyx0dbr-WNRQkkVUyPtgEi-8fHJ1r93FLfHnRhYlipyTcGAdqS0ey7kTaCaaD0U6qGg44n/s816/Breakout%20code.png" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="816" data-original-width="640" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNz70whrJ4EFA7AF1TNilgUxmBUlOUlBSBzmJSay8eDAjf9Nbt_1WnC7geG460SHi-1IKuHu1cY5tc4oO1FmIAvEbtQG224UP14UGwpwtq21uadU6ak_vjYDuyx0dbr-WNRQkkVUyPtgEi-8fHJ1r93FLfHnRhYlipyTcGAdqS0ey7kTaCaaD0U6qGg44n/w502-h640/Breakout%20code.png" width="502" />
</a>
</div>
<p>I decided the easiest approach was to do something similar. I wrote a loader program with the appropriate autostart header. This will jump to $4040 after loading, so at $4040 I jump to a simple routine at the end of the file to copy the code into place and then jump to the entry point in the game, the same as the BASIC loader did.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi20WtVx9zO_4sgxOM0IIlUM4Y9yGXz6BccP42BuJKnKg-JTQTT8BRQD8u-W2FJyAG8RXp7BDuH92vpxHyDY2Zik4HLI3J2CSBZqIOIr0BaPznIWn5CIgxx82py_ksLv3z7Ux84YEq124KlWj6jcMemOKWDOZIxG3TGVUte4K3ydaIQwv6hvmdtzp41divC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="291" data-original-width="388" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi20WtVx9zO_4sgxOM0IIlUM4Y9yGXz6BccP42BuJKnKg-JTQTT8BRQD8u-W2FJyAG8RXp7BDuH92vpxHyDY2Zik4HLI3J2CSBZqIOIr0BaPznIWn5CIgxx82py_ksLv3z7Ux84YEq124KlWj6jcMemOKWDOZIxG3TGVUte4K3ydaIQwv6hvmdtzp41divC=w600-h450" width="600" />
</a>
</div>
<p>With a couple of caveats, that worked perfectly.</p>
<p>The first caveat is one I forgot at first, when executing jumps to $4040, it is actually in the process of drawing the screen, so interrupts are enabled, and interrupt is wired directly to the A6 line. When code execution reaches a point where A6 is low (e.g. $4060), it will fire an interrupt and jump to whatever you currently have in the HL register, which is probably not what you want. So the first instruction has to be <b>DI</b> to disable interrupts until you are ready to start drawing the screen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEip5TYtzsVKsHe0Tkh6oDt9-ODesaYkSEGNooueBBj2OhtsTC4xfhGLlkJgieUztTgk8Rg-7_1nAFUC5gGw4to-nHBRFIpNsMuH_CfBgP8IHUMVfyhBtFa4dWygGFMHuPpjMCXzFnCPdeXgjK9UJhnE2up4zse8eGsgGDKCQk6quq2sa4VJKTdP3eNNOAEx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="307" data-original-width="409" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEip5TYtzsVKsHe0Tkh6oDt9-ODesaYkSEGNooueBBj2OhtsTC4xfhGLlkJgieUztTgk8Rg-7_1nAFUC5gGw4to-nHBRFIpNsMuH_CfBgP8IHUMVfyhBtFa4dWygGFMHuPpjMCXzFnCPdeXgjK9UJhnE2up4zse8eGsgGDKCQk6quq2sa4VJKTdP3eNNOAEx=w600-h450" width="600" />
</a>
</div>
<p>The second is the file has to be a specific size, $xx3D bytes. The way I first tried this out with breakout, I was hoping it would be $413D, but unfortunately the code for copying just knocked it over by one byte and it would have needed to be $423D bytes long with 254 zeroes padding it at the end.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjaHdV0S9JCIyfDINhpJSw-Ua-Eunx-ttHMqrzaebPELGLE53XRSR-7nAxi7rKvJ0iBVnY4YLrDCMn2DKBo1EtSngoTfTBEKKo7w6XXbV_XdyzgjuvVJZNFT5N9s6w5CFlbJq1TUVtVfAEdeCo4-7Kl1Ez1fZyQBUPYNMlc3mlTkHFlXfDLi-yX6LUvzOmX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="446" data-original-width="595" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjaHdV0S9JCIyfDINhpJSw-Ua-Eunx-ttHMqrzaebPELGLE53XRSR-7nAxi7rKvJ0iBVnY4YLrDCMn2DKBo1EtSngoTfTBEKKo7w6XXbV_XdyzgjuvVJZNFT5N9s6w5CFlbJq1TUVtVfAEdeCo4-7Kl1Ez1fZyQBUPYNMlc3mlTkHFlXfDLi-yX6LUvzOmX=w600-h450" width="600" />
</a>
</div>
<p>That was not ideal, but there was some padding before $4040, so I move the setup code there. I still had to jump to the end of the file but only for the <b>LDIR</b> and <b>JP</b> instructions to activate the copy and jump to the entry point.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7mo2C2KhsXsB9zfQAk36PtWPYUhDKS7pTfYDr859VLYl8_ZNGmY2LPAvMNhDMj82vDgvOpbXdNQwQzjxirxPWnSJ4uk2N5aDe6xEYOTb39it4yJ4cSqbPoloQVDhi0sXy0cOIRk9xNJvRW5vQXktcVi0w1CEq3H3gACtfqLy1wVAcEkdzXymd3tLJPd9G" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="288" data-original-width="384" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7mo2C2KhsXsB9zfQAk36PtWPYUhDKS7pTfYDr859VLYl8_ZNGmY2LPAvMNhDMj82vDgvOpbXdNQwQzjxirxPWnSJ4uk2N5aDe6xEYOTb39it4yJ4cSqbPoloQVDhi0sXy0cOIRk9xNJvRW5vQXktcVi0w1CEq3H3gACtfqLy1wVAcEkdzXymd3tLJPd9G=w600-h450" width="600" />
</a>
</div>
<p>I have created autostart versions of Breakout, and the 1K and 3K versions of Space Invaders. These will autostart on loading, and include the patch to use <b>OUT $FF,A</b>.</p>
<p><a href="https://github.com/tynemouthsoftware/ZX80-4K" rel="nofollow" target="_blank">https://github.com/tynemouthsoftware/ZX80-4K</a></p>
<p>I have put those on my github if anyone is interested. They also work on a real ZX80 or Minstrel 2 with the original ZX80 4K integer BASIC ROM.</p>
<hr />
<h2>Advertisements</h2>
<h2>Minstrel 2</h2>
<p>Minstrel 2 kits and ready built units are available from my SellMyRetro store.</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjy-jgs-PI_hP8mxmXn75JXVEL3ty3XLA3MyY64OLO4bN6OthEx_RzPcyzsxitPEwyyRkULHPaT_HRqC4BsZWbCxfJXdFyd-OzcmFA_WqDNMtjJHbnPTGU2Gl2gaAThH-1BHxPAVo4w5TD2pYeimTvHwQ_W5NUpkjedQgd4K0A8URziARmFe_kuBiEmDGJX=w600-h450" width="600" />
</a>
</div>
<h2>Minstrel 4D</h2>
<p>Minstrel 4D kits and ready built units are available from thefuturewas8bit.com</p>
<p><a href="https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html" rel="nofollow" target="_blank">https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/s1600/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/w600-h450/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" width="600" />
</a>
</div>
<hr />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of blog posts and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-92027698018740784452023-12-10T11:56:00.007+00:002023-12-17T10:29:52.469+00:00ZX80 BASIC on a Minstrel 4D - Part 3 - Testing some flicker-free games<p><i>Continuing the series of posts from Patreon in November, working on getting ZX80 BASIC running on the Minstrel 4D. This one reworked from several posts. I have since updated this to also include a section about the updates to the LOAD routines.</i></p>
<p>In the previous post I got ZX80 BASIC running on the Minstrel 4D, and with the help of new LOAD and SAVE routines was able to load ZX80 games.</p>
<p>This is a modified ZX80 ROM running on Minstrel 4D hardware which was designed to run the Jupiter Ace ROM.</p>
<p>I had tried lots of programs which used the normal ZX80 display mechanism, including board games and text adventures etc. Games that suit the display - think - display type mechanism the ZX80 used.</p>
<p>Due to the way the screen is displayed on the ZX80, it was not possible to do the sort of fast moving shoot-em-up style games, at least not in BASIC.</p>
<p>I wanted to see some space invaders, and luckily back in the day some ingenious methods were found to make that happen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjAnFTlzWRgKUlIDEKVibjzXUXhrAKRV3L45D4J_8xBLTpHYtXcV71kHpCVMKXbPhkVuIoWTk_vloOKVPcmNVNyKSVHjyXeEw3U2-TcimEey2zLwhgd5qIIlo7xkWV8avgilzUgRCIIQTNJ43WnmEbYwWun-6BDaMPqU7pgBhsAQDEoNgVNB2dogv-9kv6u" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjAnFTlzWRgKUlIDEKVibjzXUXhrAKRV3L45D4J_8xBLTpHYtXcV71kHpCVMKXbPhkVuIoWTk_vloOKVPcmNVNyKSVHjyXeEw3U2-TcimEey2zLwhgd5qIIlo7xkWV8avgilzUgRCIIQTNJ43WnmEbYwWun-6BDaMPqU7pgBhsAQDEoNgVNB2dogv-9kv6u=w600-h450" width="600" />
</a>
</div>
<h2>Flicker-free games</h2>
<p>All of the games I had tested up to this point used the display in the standard ZX80 way. There would normally be a screen flicker when the AI player was making there move, but here the screen remains static until it is next updated.</p>
<p>I am hoping that the many "flicker-free" games for the ZX80 will be usable</p>
<p>The idea in brief is to bypass part of the display routines in ROM, and then run short blocks of precisely timed code in the gaps at the top and bottom of the screen, returning to the ROM code to do the actual screen drawing.</p>
<p>Each of the blocks of code needs to take exactly the same number of cycles, so you have to be very careful with anything that is conditional (did the player fire, does that alien need to move down a row etc.) so that all paths through the code take the same number of cycles.</p>
<p>I will link for reference Paul Farrow and George Beckett's work on this subject:</p>
<p><a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_DisplayMechanism.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_DisplayMechanism.htm</a></p>
<p><a href="https://github.com/markgbeckett/zx80/tree/main/hampsons_plane" rel="nofollow" target="_blank">https://github.com/markgbeckett/zx80/tree/main/hampsons_plane</a></p>
<p>The first one I tried was a simple demo from the article that first introduced this concept.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiJPfU91veT4CSwfArhTCDuJnjStZlRfUkOdSKP2wn84HCu7_WNQrhJ9weEuJ5k6igjyz7IY34xBfBdc3X1V9pq1GxBfGCgf7omG06L3dOWuKvU3gu2AvWt48n1SZv0MAC9v17cXeS8L0oA_2mNYZC93Ggxx3d6Bqeve2yS1Fl5suF3UEO7wLe8yfDf-WN4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiJPfU91veT4CSwfArhTCDuJnjStZlRfUkOdSKP2wn84HCu7_WNQrhJ9weEuJ5k6igjyz7IY34xBfBdc3X1V9pq1GxBfGCgf7omG06L3dOWuKvU3gu2AvWt48n1SZv0MAC9v17cXeS8L0oA_2mNYZC93Ggxx3d6Bqeve2yS1Fl5suF3UEO7wLe8yfDf-WN4=w600-h450" width="600" />
</a>
</div>
<p>That was unfortunately the only one that worked at that point.</p>
<p>I did some more research and a bit of debugging, and was able to tweak the way my new display routines generated the display to fit with the expectations of the flicker-free games.</p>
<h2 style="text-align: left;">Breakout</h2>
<p>I started with probably the earlier games, those from Macronics (<a href="http://www.fruitcake.plus.com/Sinclair/ZX80/SoftwareArchive4K/Macronics.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/SoftwareArchive4K/Macronics.htm</a>)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjOZ5WWitwclEuU_gI9RciH2MGXtHJsviYtGybNdktaqIs1w2_Ufgehe28eJnFGYFLJYoZUO87_WOArbY6edJC-QpcZJ9NnGe_Ds8CJ251H5ssY0Wryp9mbYv7Go0R3Q0SQ9qH5p_STj_TZjLiCC7GFyuu8gbRcl0qzmCX6Hw1od-TjunGaSCqBAxfRFFuQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjOZ5WWitwclEuU_gI9RciH2MGXtHJsviYtGybNdktaqIs1w2_Ufgehe28eJnFGYFLJYoZUO87_WOArbY6edJC-QpcZJ9NnGe_Ds8CJ251H5ssY0Wryp9mbYv7Go0R3Q0SQ9qH5p_STj_TZjLiCC7GFyuu8gbRcl0qzmCX6Hw1od-TjunGaSCqBAxfRFFuQ=w600-h450" width="600" />
</a>
</div>
<p>Breakout is working well, with a small caveat. It takes over some of the display drawing, and includes turning on and off the VSync generator. Yes, the same one that now drives the speaker. Yes it now makes a ticking sound.</p>
<p>The code use IN FE and OUT FE instructions to turn on and off the sync generator. The actual values used are not important on the ZX80. The IN is only decoded as IO READ where A0=0, i.e. any even address would do. The OUT is only decoded as IO WRITE, so any address could be used. FF seems the best option, that is what is used in the ZX80 ROM. FD is used on the ZX81 to control the NMI generator (decoded as A1=0), so FF is safe as it will not trigger either of those.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7PlQhBDVVJsZft1b0n3M6dNaLGlbb9MO43yhMkiPcEjMgDxEdZRX-ke2ugXMWDIm8ZAXE48eFfoN-ZlcaURdudIo-flZgnm3xggUgjjVBrFZMdHojBpfm9ws_zruNOI3TtqUWDNEe5dVWGrt5gbUVzBHVkTSUhgKQDOo3JW0x64BC1pwuH2AtLoEREJrJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="995" data-original-width="1891" height="336" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7PlQhBDVVJsZft1b0n3M6dNaLGlbb9MO43yhMkiPcEjMgDxEdZRX-ke2ugXMWDIm8ZAXE48eFfoN-ZlcaURdudIo-flZgnm3xggUgjjVBrFZMdHojBpfm9ws_zruNOI3TtqUWDNEe5dVWGrt5gbUVzBHVkTSUhgKQDOo3JW0x64BC1pwuH2AtLoEREJrJ=w640-h336" width="600" />
</a>
</div>
<p>See <a href="http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx80-generates-video.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx80-generates-video.html</a> for more details.</p>
<p>They published breakout as a type in listing. Yes, that is the entire game. The highlighted D3 FE is the relevant instruction, changing that to D3 FF will stop the clicking sound and will still work on the ZX80 and the Minstrel 4D.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJhxdIoZfJQpNTvkke2ONnzOVzajgjSUuVy44e4xXQEwYhcKBnzZu35K4CLoZjiXO92AU7V7d2kLf_YbvCiKUc5Z3_Y1XGz-wFkwRW4pXNDMfuOARsRya9LZ4p7oaILQRaFaI_-z4qGucul1OCJjmnIpN_ZA7QAyCBRzP1SdPsnOnanJymtz60w4elN5G5/s816/Breakout%20code.png" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="816" data-original-width="600" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJhxdIoZfJQpNTvkke2ONnzOVzajgjSUuVy44e4xXQEwYhcKBnzZu35K4CLoZjiXO92AU7V7d2kLf_YbvCiKUc5Z3_Y1XGz-wFkwRW4pXNDMfuOARsRya9LZ4p7oaILQRaFaI_-z4qGucul1OCJjmnIpN_ZA7QAyCBRzP1SdPsnOnanJymtz60w4elN5G5/w502-h640/Breakout%20code.png" width="502" />
</a>
</div>
<p>George Beckett generated a patched version, and that works nicely. It is not ideal, but patching the games or modifying the hardware are the only options here. There are only a few games like this, so we can provide patched versions of any of those which use OUT FE.</p>
<h2 style="text-align: left;">Space Invaders</h2>
<p>Macronics released two versions of Space Invaders (or Space Intruders), a full screen one for 3K RAM which works fine.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjAnFTlzWRgKUlIDEKVibjzXUXhrAKRV3L45D4J_8xBLTpHYtXcV71kHpCVMKXbPhkVuIoWTk_vloOKVPcmNVNyKSVHjyXeEw3U2-TcimEey2zLwhgd5qIIlo7xkWV8avgilzUgRCIIQTNJ43WnmEbYwWun-6BDaMPqU7pgBhsAQDEoNgVNB2dogv-9kv6u" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjAnFTlzWRgKUlIDEKVibjzXUXhrAKRV3L45D4J_8xBLTpHYtXcV71kHpCVMKXbPhkVuIoWTk_vloOKVPcmNVNyKSVHjyXeEw3U2-TcimEey2zLwhgd5qIIlo7xkWV8avgilzUgRCIIQTNJ43WnmEbYwWun-6BDaMPqU7pgBhsAQDEoNgVNB2dogv-9kv6u=w600-h450" width="600" />
</a>
</div>
<p>They also produced a version which runs on an unexpanded 1K machine. To make that fit, they reduced the number of rows on the screen. Trying that version on the Minstrel 4D, the game is playing correctly, but the remnants of the BASIC program are still visible in the part of the screen that is not being updated. (note this is one of those games where you need to type GO TO 100 to start it rather than run)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhK7VsQr2VOChmK3F86RtcpsMmz8aWTgXyaRnUkF9EiDdc5x-B2omhUSc_eXQfSSdPsL5736U1FKMStPoAFxLw3jBLXTmffyekskpReJaFRP99rl5nPKW_EMWnD0Fu680V0dNKAKGODtwKcpiaP_Ww0Nro9cmxnTCGLtgRU-_gF4QyetHxB6GuhDy3uRZ0O" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhK7VsQr2VOChmK3F86RtcpsMmz8aWTgXyaRnUkF9EiDdc5x-B2omhUSc_eXQfSSdPsL5736U1FKMStPoAFxLw3jBLXTmffyekskpReJaFRP99rl5nPKW_EMWnD0Fu680V0dNKAKGODtwKcpiaP_Ww0Nro9cmxnTCGLtgRU-_gF4QyetHxB6GuhDy3uRZ0O=w600-h450" width="600" />
</a>
</div>
<p>I adjusted my display routine to pad out the rest with spaces, so that now works fine.</p>
<p>I could centre it vertically based on the number of rows being drawn, but as far as I know it is only this one game, and is how it would have looked on the ZX80, so I will just leave it for the moment.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgH8o1JI3pgkNQTKAI15hp58LAzDWmahu0MKsLVWy4LlHY5PaLG3XHTBPxJFVab81fsraPhvH3wk7VYpdiIY2vkNPqeJU0q_jDUGHSQKeR_c67UZLH92Rd45wuhMlOLYTOUsLLgM92tHGaQwQN2arbaUmNy53xCgzKwa0_pWZqp1Enhtu0XAmFP8HZNpAZK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgH8o1JI3pgkNQTKAI15hp58LAzDWmahu0MKsLVWy4LlHY5PaLG3XHTBPxJFVab81fsraPhvH3wk7VYpdiIY2vkNPqeJU0q_jDUGHSQKeR_c67UZLH92Rd45wuhMlOLYTOUsLLgM92tHGaQwQN2arbaUmNy53xCgzKwa0_pWZqp1Enhtu0XAmFP8HZNpAZK=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">Hampson's Plane</h2>
<p>George Beckett has produced a flicker-free implementation of Hampson's Plane for the ZX80.</p>
<p><a href="https://github.com/markgbeckett/zx80/tree/main/hampsons_plane" rel="nofollow" target="_blank">https://github.com/markgbeckett/zx80/tree/main/hampsons_plane</a></p>
<p>It didn't initially work, but that turned out to be it not detecting that a key had been pressed. The actual display side was fine it was just waiting for the user the enter the skill level.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiPxGvh0tuk6pSCUmGBJ3m7bC8WZyPjmTDyQ-yjnDajfen8zseuX2mJjSbseaCpMLbWSX5NIPn2Yr4Khxwu9ascQkjwGubYkWUhzzlmIE-mYOT29dX38azohHy6YXl0Bxzo5_zeXsiHNWRhEMdENQWNjD0iVavGAm62UhzbOY5s57iqsD_45XUyYurtYSdx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiPxGvh0tuk6pSCUmGBJ3m7bC8WZyPjmTDyQ-yjnDajfen8zseuX2mJjSbseaCpMLbWSX5NIPn2Yr4Khxwu9ascQkjwGubYkWUhzzlmIE-mYOT29dX38azohHy6YXl0Bxzo5_zeXsiHNWRhEMdENQWNjD0iVavGAm62UhzbOY5s57iqsD_45XUyYurtYSdx=w600-h450" width="600" />
</a>
</div>
<p>The keyboard differences will be an issue for a few games that implement their own keyboard routine, reading a byte from the keyboard port and then doing a comparison without masking off bits.</p>
<p>On the ZX80, bits 0-4 are defined for the keyboard columns. The other three are not relevant to the keyboard. Bit 7 is the tape input, and will normally be low. Bit 6 is pulled high on UK systems, but will read low on USA systems, and bit 5 is undefined so may read high or low.</p>
<p>On the Ace, the same bits 0-4 are defined for the keyboard. Bit 5 is the tape input, again normally low. Bits 6 and 7 are undefined but will float high on the Minstrel 4D. (see a previous blog post about the issues a similar problem caused with type 2 interrupts on the game Valkyr).</p>
<p>I suggested rotating a bit at a time into carry and testing that, which also worked out a bit more efficient and is consistent timing.</p>
<p>However, there is another issue because it has it's own keyboard scanning routine rather than the ROM one, it will misread the bottom row (see the previous post)</p>
<p>It would be possible to produce special builds for the 4D or possibly one that detects the system. There are various ways that could be done.</p>
<ul style="text-align: left;">
<li>Read of port FE, bit 7 will be high on the 4D, but is the tape on the ZX80, so will read low.</li>
<li>Alternatively, and probably more reliably, pick a byte in ROM that is going to be different. The first byte in the ZX80 ROM is 21. But the new 4D version is C3, so just read 0000 to tell.</li>
<li>Or maybe a more subversive method would be to add "Press C to continue" on the first screen, and then seeing if that reads as C (ZX80) or V (Minstrel 4D).</li>
</ul>
<p>George implemented the changes (with Press C to start) and also switched to using OUT FF to get rid of the background hum and it is now running well on both the ZX80 and the Minstrel 4D.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp2nHRJeABb6V-9K6IkV0o4TtHnskXfRz6EzM63YFNtwNajN0pEZrYCMisVmICknIoJc51xhxux6Bd5TLuxOO0KnXegjMD09AjHn2xjlES3P8I5GdHbitDzbOMIK6XSh1ATASLZOmSKneW_3gMwS1vagCh881k5i_3n2e6gHXBCc8EMtUpHkXSwGs8w32k/s1600/Hamspons%20plane%20running.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp2nHRJeABb6V-9K6IkV0o4TtHnskXfRz6EzM63YFNtwNajN0pEZrYCMisVmICknIoJc51xhxux6Bd5TLuxOO0KnXegjMD09AjHn2xjlES3P8I5GdHbitDzbOMIK6XSh1ATASLZOmSKneW_3gMwS1vagCh881k5i_3n2e6gHXBCc8EMtUpHkXSwGs8w32k/w600-h450/Hamspons%20plane%20running.jpg" width="600" />
</a>
</div>
<h2 style="text-align: left;">Mazogs</h2>
<p>Paul Farrow has adapted Mazogs to run on the ZX80 with flicker-free display.</p>
<p><a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Mazogs.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_Mazogs.htm</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgPhJlTydDZ9RmSw0LzTLV1PV7Vg4Eq8Xdi1I3KoVFqYe5bDCinyw15WvSjV0-9Nz45b6Jq6NuX-aGn9ZmJvg5qZWN86Oi7UfekcSOwswnePU3x09SYmrOiS15XjU6FDQek_fJrpyJj3gc7dmBPruqg26FPa0Bpdv5wVZQf2FU-xICGlzvRIr1hrckHNRzK" style="margin-left: 1em; margin-right: 1em; text-align: center;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgPhJlTydDZ9RmSw0LzTLV1PV7Vg4Eq8Xdi1I3KoVFqYe5bDCinyw15WvSjV0-9Nz45b6Jq6NuX-aGn9ZmJvg5qZWN86Oi7UfekcSOwswnePU3x09SYmrOiS15XjU6FDQek_fJrpyJj3gc7dmBPruqg26FPa0Bpdv5wVZQf2FU-xICGlzvRIr1hrckHNRzK=w600-h450" width="600" />
</a>
</div>
<p>I was pleased to see that ran well. It also ran without the clicking sound, I believe it uses OUT FF instructions, so does not trigger the speaker in the Minstrel 4D.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi76hFhMuBLT7zeZJrD1O3dA-qr0tO8vyFui9h3H4T5Y_pM4InxTPHc08VnSRNFv2mV-Ria-1nm6UUMQI5FmF-xMXrIwdCBnoCJ8SrQalDGZliuX_IUdIG_lwRXxQKhOb5YQZmLLAjTgBcN9n2rwhvmo617XsQMQUiLKR9HI_tTR8wKOxzOY6sq-nzZod-X" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi76hFhMuBLT7zeZJrD1O3dA-qr0tO8vyFui9h3H4T5Y_pM4InxTPHc08VnSRNFv2mV-Ria-1nm6UUMQI5FmF-xMXrIwdCBnoCJ8SrQalDGZliuX_IUdIG_lwRXxQKhOb5YQZmLLAjTgBcN9n2rwhvmo617XsQMQUiLKR9HI_tTR8wKOxzOY6sq-nzZod-X=w600-h450" width="600" />
</a>
</div>
<p>But unfortunately his versions of Kong and Pacman do not. I think this is something to do with the autostart rather than the flicker free, but I will investigate further. <i>(they are now working, but that is a whole blog post of it's own - coming next week)</i>.</p>
<p>This is all I get when they load?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEigM7UfkeNhhMf1gNOc50Iv6--Svk97J-gkaalfaiJGVTJhPjZ1JJ1lCu40Ngxf-TTpto4KnCvEbX-AZvxaKe4djXaNfd1nXNZdFevFW68k5pNJPBH4EqojmjVH-0wQYc7ksc8drd_PFeCKzMW6uF8BJgnR76dWVWTyG0XuRyt7-yvuEJ6g6s8M8mWL1Zy0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEigM7UfkeNhhMf1gNOc50Iv6--Svk97J-gkaalfaiJGVTJhPjZ1JJ1lCu40Ngxf-TTpto4KnCvEbX-AZvxaKe4djXaNfd1nXNZdFevFW68k5pNJPBH4EqojmjVH-0wQYc7ksc8drd_PFeCKzMW6uF8BJgnR76dWVWTyG0XuRyt7-yvuEJ6g6s8M8mWL1Zy0=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">LOAD routine updates</h2>
<p>The new LOAD and SAVE routines I wrote were covered in the previous post. I added a status box, which showed the address currently being loaded. This started at 4000 and went up to the end of the file.</p>
<p>I was thinking as I was testing these files that it would be nice if there was an actual progress bar.</p>
<p>It should be possible as the file size is known. That is the way LOAD knows to stop, when it gets to the end address.</p>
<p>The calculations involved to scale this would be a little complicated and probably too much work. I started looking at showing a bar that simply ran from 4000-7FFF, the standard 16K RAM. Only the largest programs would get to the end of the bar, so that may be interesting, but is probably not much use.</p>
<p>Instead I decided an easy alternative was to switch to showing bytes remaining. The user then sees a countdown of the number of bytes still to be loaded, so you can watch it could down to 0000 when it will have loaded.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgwnORGvwdE7YaNmmPiyqnT9pTraClG87s-vgr5m7Sm0YFMYAn0s1Ut_xhcwTWlbLbg_EOF9XWNEpy8fdW5Q9-9UcBdpYEd9TAh2D1Guf4Sis1auTtmFIMuBYC4YWOgQEEShlyjCVmeYBop3rP3_qDCa--uWX_qvnbeqhGCpIeJ5f0Ql5n5LEcMQ0-CdXyJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgwnORGvwdE7YaNmmPiyqnT9pTraClG87s-vgr5m7Sm0YFMYAn0s1Ut_xhcwTWlbLbg_EOF9XWNEpy8fdW5Q9-9UcBdpYEd9TAh2D1Guf4Sis1auTtmFIMuBYC4YWOgQEEShlyjCVmeYBop3rP3_qDCa--uWX_qvnbeqhGCpIeJ5f0Ql5n5LEcMQ0-CdXyJ=w600-h450" width="600" />
</a>
</div>
<p>It will actually start with the wrong number at first, due to the way the ZX80 works. There is a sort of file header which is actually just the RAM from 4000 upwards. This starts with system variables and includes at 400A the address of the end of the program. At the start of load, the value of the high byte is incremented, so it should be at least long enough to get passed the point where the values at 400A have been overwritten by the value stored on the tape, which is the actual end address. After that point, the displayed value will be correct.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgaGmJ-xB-AQTwQ3LfjwYz0VxGCgbNeKs1aM6o98ZAyhvIJxHKxNjqUelGzXZt-Pen2Wrcm-Lke0tNQFRfGtdQfhWeZm4oBljmvUJbXztzr5mUqUhqncOQo5eYFq837GGx-rBUq8O4egkuaYgT1nxqaLXabyKP0Grs6QizBVWAgpYHoB9JKXbkbE1dNknd2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgaGmJ-xB-AQTwQ3LfjwYz0VxGCgbNeKs1aM6o98ZAyhvIJxHKxNjqUelGzXZt-Pen2Wrcm-Lke0tNQFRfGtdQfhWeZm4oBljmvUJbXztzr5mUqUhqncOQo5eYFq837GGx-rBUq8O4egkuaYgT1nxqaLXabyKP0Grs6QizBVWAgpYHoB9JKXbkbE1dNknd2=w600-h450" width="600" />
</a>
</div>
<p>SAVE has also been similarly updated, so a countdown to 0000 as it is saving.</p>
<h2 style="text-align: left;">Results</h2>
<p>With the exceptions of the Kong and Pacman, all the games I have tried have worked.</p><p>There are a few games that I know will not work. The Metropolis demo (which I believe was developed on a Minstrel 2) uses a complete replacement display routine, so that will not work with this hardware. The same is true of the two Beam Software games (Super Invasion and Double Breakout) and QS Defender, as they also replace the entire display routine.</p>
<p>I think pretty much any other ZX80 software will just work, but there are a couple of caveats.</p>
<p>Anything in BASIC should be fine, and even machine code as long as it calls the ROM routines for reading the keyboard reading, load and save and video generation, everything is fine.</p>
<p>If any code has it's own keyboard routines, then the bottom row of keys will read wrong.</p><p>If any code has it's own keyboard routines, and does not mask off the unused bits, it may not read correctly depending on the method of testing the keys.</p>
<p>If any code has it's own load routine, they will fail as the tape signal is read from a different pin.</p>
<p>Flicker-free games will work as long as they do not replace the entire display routine.</p><p>Any flicker-free games that use OUT FE,A in the display routine will cause the speaker click. Any that do as the ZX80 ROM does and use OUT FF,A (or can be patched to do so) will be fine.</p>
<hr />
<p>In the next post I will go into details of why Kong and Pacman were not working, and what was required to get them running.</p><p><a href="http://blog.tynemouthsoftware.co.uk/2023/12/zx80-basic-on-the-minstrel-4d-part-4.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/12/zx80-basic-on-the-minstrel-4d-part-4.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhGq3dwNYrnJbqQRZpLedGqIRSBUGwS1EORFmvKgOyXoltCD1JlsYIo-7BxB-mlysCm2FECAEfTCswz9WFUMaetWJYGqlatEm5j8Tw1imJ7aWteqoTJAoT95EcIdcUGv5cP9rSVxvaKeKdmC4D5v5r0eIsDYoFLy8-DWabqBtYj5D5FZC7bNb2UOOKmKCrv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhGq3dwNYrnJbqQRZpLedGqIRSBUGwS1EORFmvKgOyXoltCD1JlsYIo-7BxB-mlysCm2FECAEfTCswz9WFUMaetWJYGqlatEm5j8Tw1imJ7aWteqoTJAoT95EcIdcUGv5cP9rSVxvaKeKdmC4D5v5r0eIsDYoFLy8-DWabqBtYj5D5FZC7bNb2UOOKmKCrv=w600-h450" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>Minstrel 4D</h2>
<p>Minstrel 4D kits and ready built units are available from thefuturewas8bit.com</p>
<p><a href="https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html" rel="nofollow" target="_blank">https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/s1600/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/w600-h450/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" width="600" />
</a>
</div>
<hr />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of blog posts and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-72857277792977481422023-12-03T12:09:00.008+00:002023-12-03T12:34:05.525+00:00ZX80 BASIC on a Minstrel 4D - Part 2 - New tape load and save routines<p>
<i>Continuing the series of posts from Patreon in early November, working on getting ZX80 BASIC running on the Minstrel 4D.</i>
</p>
<p>Yesterday I gave up on trying to make the old ZX80 tape load routine work. I do not know what exactly is wrong, I have tried all the combinations I can think, and is just isn't working.</p>
<p>So, I wrote a new one.</p>
<h2 style="text-align: left;">A new tape loading routine</h2>
<p>The screen border on the Minstrel 4D is driven by the load signal, so you can see the data on the tape in it's groups of 4 or 9 pulses, which represent the 0's and 1s.</p>
<p>The ZX80 cannot generate the screen during loading, so normally the screen is just black. As the hardware on the Minstrel 4D is different, the screen persist with the last update, so the LOAD command remains visible where it was typed until the program has loaded.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg8kNPmmkvUbNws_h4NDubd8N8_gV-XVkbUqZeQu51oZDtNArB7YouxquwsxO_DLH94KPDz35mLhHUH47NCq3mUYgGU9G7E0jOOYeS_ssKn8XdVTGD_uQJkURNZV5wuVRIy-iwzt63AECVKdZCI5kbBul4CfuxFQqW8j06KPzhercervIHqPrmR_nmuk7J2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg8kNPmmkvUbNws_h4NDubd8N8_gV-XVkbUqZeQu51oZDtNArB7YouxquwsxO_DLH94KPDz35mLhHUH47NCq3mUYgGU9G7E0jOOYeS_ssKn8XdVTGD_uQJkURNZV5wuVRIy-iwzt63AECVKdZCI5kbBul4CfuxFQqW8j06KPzhercervIHqPrmR_nmuk7J2=w600-h400" width="600" />
</a>
</div>
<p>I thought it might cause the user to think they hadn't pressed return, or it had not registered, so I tried blanking the screen, which sort of worked. I also tried filling it with 50% grey characters, which is not normal to see on a ZX80, so acts as a "something is going on and nothing is being drawn on the screen".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjtn8uN5US7ZJf-Z7Pqc6mpdm4gJm86iF2v7LFkGD49kTxR_3DkipvFmM4BH_suyKIZrVkMKKdrKF1Hm1y3BKL7skqzVPCiwUUPs-MbPLQd0G0HPaa-JN1clhNg-MpmYX7u7bQaK3j4e2778lBldqwSwKwAKYbW50Ra2MV6RKQe9ZeFsoMUja0peyeQMjct" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjtn8uN5US7ZJf-Z7Pqc6mpdm4gJm86iF2v7LFkGD49kTxR_3DkipvFmM4BH_suyKIZrVkMKKdrKF1Hm1y3BKL7skqzVPCiwUUPs-MbPLQd0G0HPaa-JN1clhNg-MpmYX7u7bQaK3j4e2778lBldqwSwKwAKYbW50Ra2MV6RKQe9ZeFsoMUja0peyeQMjct=w600-h400" width="600" />
</a>
</div>
<p>Loading is a difficult thing to debug, but I realised I could make use of the display. I will go into more detail in a future post, but I can write to the display when the Z80 is doing other things.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5E9eDZCNCBsGVQcK6zaj-Gg8K3vkckxtle81ztIwbZY5G2eliSlaikWA3XQsibEO6On4YtWzbbeajN2lYIgNX6Wcvce-3aAOMQqYkrkcuqkg7cJPixGzpdlWlpahbE1f6FKk0Ehm1OzvXo4dSnQ5QfHLvwt6T0mctBuT3YGbAJIT5qZan_XRwOum5u2gX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5E9eDZCNCBsGVQcK6zaj-Gg8K3vkckxtle81ztIwbZY5G2eliSlaikWA3XQsibEO6On4YtWzbbeajN2lYIgNX6Wcvce-3aAOMQqYkrkcuqkg7cJPixGzpdlWlpahbE1f6FKk0Ehm1OzvXo4dSnQ5QfHLvwt6T0mctBuT3YGbAJIT5qZan_XRwOum5u2gX=w600-h400" width="600" />
</a>
</div>
<p>Here I am writing the bits remaining counter when it gets to the end of a byte. Most of the time with the old load routine, I was lucky to get more than a single 1. This was an unusual occasion I captured when the volume level on the tape was wrong and the data was rubbish, but it was rubbish in just the right way to make the old tape routine accept that rubbish and try to load it.</p>
<p>I decided to write a new load routine, and see if that worked.</p>
<p>The idea seems to be the a series of either 4 or 9 pulses, followed by a gap. A wrote code to detect the transitions in the signal (so polarity would not be an issue), and waited until there was a big enough gap since the last transition to count as the end.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiiqwhg8I1Cf2O9cgH6p3TBAmOGElRiKy5HqRGX9OQxEB-xqF6UFspCZ2pkORVrBLUAbUPI_Aw_DUnw93f0Raq5cks6DYGAd2UQ4Bbi9TMK2GNIwoCfPaz1M2yTnGnakoONZL9CtELtBFMeWDqk1IB9Y7gAeJefK5j-PHtY7-JYj2G33oLg5EqoRZfvZLrY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEiiqwhg8I1Cf2O9cgH6p3TBAmOGElRiKy5HqRGX9OQxEB-xqF6UFspCZ2pkORVrBLUAbUPI_Aw_DUnw93f0Raq5cks6DYGAd2UQ4Bbi9TMK2GNIwoCfPaz1M2yTnGnakoONZL9CtELtBFMeWDqk1IB9Y7gAeJefK5j-PHtY7-JYj2G33oLg5EqoRZfvZLrY=w600-h360" width="600" />
</a>
</div>
<p>This shows a 1 and a 0 being detected. Yellow is the sampling pulses, green is the input signal, and blue shows writes to RAM once a bit has been detected.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgMXfbLPdvXvS0xOnh_hfCa422M2EHC48fF3w3AlbK3yj3C2iPF8mtBIvPlunE4xP4-81dhslCVFPhXiNr4V7PqgPhIa0tTduIkAGU34XftwBprzJyo9m61rLaFb1yDFgTTqPrrjnyYBlUH-co3H6XHgtR-h24X_D8Hk4FtW6dUThJiXcMiVv4E378ICBM7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEgMXfbLPdvXvS0xOnh_hfCa422M2EHC48fF3w3AlbK3yj3C2iPF8mtBIvPlunE4xP4-81dhslCVFPhXiNr4V7PqgPhIa0tTduIkAGU34XftwBprzJyo9m61rLaFb1yDFgTTqPrrjnyYBlUH-co3H6XHgtR-h24X_D8Hk4FtW6dUThJiXcMiVv4E378ICBM7=w600-h360" width="600" />
</a>
</div>
<p>I used the debug to record the 0s and 1s here showing the 66 bytes that make up the "Hello" program I was testing with.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiDzEkksHvf76t5yCHTK0Fxz2bTcROsDF3ArcvrwybSFRGDEoM7Js0T1xL0_aadaZgXW4zXnteYtJRb9PAnEjDGPVZ69nnNi1T8R3VKof0n5VP4-3qOR0MNu64S4Kk3X6JHFivpSdEAN212q7m8ZhjXhODNn945MI7E6sm_cCQItpc06Mk-Jo92VGHZUgTS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiDzEkksHvf76t5yCHTK0Fxz2bTcROsDF3ArcvrwybSFRGDEoM7Js0T1xL0_aadaZgXW4zXnteYtJRb9PAnEjDGPVZ69nnNi1T8R3VKof0n5VP4-3qOR0MNu64S4Kk3X6JHFivpSdEAN212q7m8ZhjXhODNn945MI7E6sm_cCQItpc06Mk-Jo92VGHZUgTS=w600-h400" width="600" />
</a>
</div>
<p>There is no formatting to the data, no header or end marker. End detection on the ZX80 is based on the data in the file itself. It is written to RAM from 0x4000 upwards, overwriting all the system variables, including E_LINE, the end marker. As memory fills up with data being loaded, the current address is compared with E_LINE until they match, and then loading is complete and the program is listed. <i>(E_LINE is initially set to a high address so that it will not stop before E_LINE has been overwritten with the value from the tape)</i>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgZAr2RW6JpGhv6rfAhpwUKx5wntIrBYJH9pVWNZU2nuDkfjhm4ItS40gViBx0nDm23wH49t8fT9p-1LzRmn4yyB1aOnFOuQoV4eC1htqyk400cYk5a6gaGnHCT2ml0R2o-4Lk4AFBQqGkTaAwH86HO6TjBhZyeXLon3hZ4vl-1m7RMLj5mDqEsXnkJ_bLO" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgZAr2RW6JpGhv6rfAhpwUKx5wntIrBYJH9pVWNZU2nuDkfjhm4ItS40gViBx0nDm23wH49t8fT9p-1LzRmn4yyB1aOnFOuQoV4eC1htqyk400cYk5a6gaGnHCT2ml0R2o-4Lk4AFBQqGkTaAwH86HO6TjBhZyeXLon3hZ4vl-1m7RMLj5mDqEsXnkJ_bLO=w600-h400" width="600" />
</a>
</div>
<p>Yay, finally. Can you imagine how relieved I was to finally get that working <i>(at about 5AM this morning, but who's counting).</i></p>
<p>And it even worked.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj-OpIXEw1zvS-fUINqQi9yXS7JuEvc-g7guvAu7zebsYmEgZhxZCp_6qhn3fHuCWxNRfEqfwT32_uuRjWMJAOo0BpEHBSp7rfW0R9qpKz5TNLWPK9uGOkZJmQHiC824Pe_Lz4Vm913A7I5slNoYeqbOVj2872YwxEQfp7CL97mpKsi9O-nArezQvaFD1Ml" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj-OpIXEw1zvS-fUINqQi9yXS7JuEvc-g7guvAu7zebsYmEgZhxZCp_6qhn3fHuCWxNRfEqfwT32_uuRjWMJAOo0BpEHBSp7rfW0R9qpKz5TNLWPK9uGOkZJmQHiC824Pe_Lz4Vm913A7I5slNoYeqbOVj2872YwxEQfp7CL97mpKsi9O-nArezQvaFD1Ml=w600-h400" width="600" />
</a>
</div>
<p>I needed to remove the debug, but it then went back to being a sort of boring grey. </p>
<p>I think I can do better than that.</p>
<p>Now when you type LOAD, the screen is cleared and you get a little box.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjEZx_r_FSJQZYbsZtPDUllqvukB-a9HrK4EoIx0YlVcQZ-thZrjmnXjgXAGAb2rccOhzoTqbm2O1ZRffh1WyKmN4UKaoS6PRA5tykT-hZPKUF6uStb1_x2nw05trIGvf6ifmfwgSrHlR8761j04luwCIGBs3NF8PkbR2VY67bPPp6DraOExVfB_BW7f8Bc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjEZx_r_FSJQZYbsZtPDUllqvukB-a9HrK4EoIx0YlVcQZ-thZrjmnXjgXAGAb2rccOhzoTqbm2O1ZRffh1WyKmN4UKaoS6PRA5tykT-hZPKUF6uStb1_x2nw05trIGvf6ifmfwgSrHlR8761j04luwCIGBs3NF8PkbR2VY67bPPp6DraOExVfB_BW7f8Bc=w600-h400" width="600" />
</a>
</div>
<p>As loading progresses, the current address is displayed. I thought about subtracting 4000, so it counted up from 0000 instead of 4000, but I think it's fine like that. It also counts in hex as that is far easier to do. Very easy as it happens due to the character set of the ZX80. Character 28 through 37 are 0 to 9, and 38 goes straight to A, so characters 28 through to 43 are 0123456789ABCDEF. To display a number in hex, just add 28 to it. <i>(It is a little more complicated in practice as you need to split the byte into two nibble, and display each one separately.)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgALuUWmacqAMAzyeNnP0J3K1IgXkxJunDeSAznBcNzi0v37rtFmVwCpMInjhGw23BVZSpt1oge36mXQTx6dxABHcpab21xnFDeevMbkT_vGkeyQEvjUbM8idSS6VV6_lBPyyi7hUf3oqpXMEuM-898dY447eUelK_mCrA5R2DhvLAkw7KhNxNAf3rAi07J" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgALuUWmacqAMAzyeNnP0J3K1IgXkxJunDeSAznBcNzi0v37rtFmVwCpMInjhGw23BVZSpt1oge36mXQTx6dxABHcpab21xnFDeevMbkT_vGkeyQEvjUbM8idSS6VV6_lBPyyi7hUf3oqpXMEuM-898dY447eUelK_mCrA5R2DhvLAkw7KhNxNAf3rAi07J=w600-h400" width="600" />
</a>
</div>
<p>That seems to be working quite nicely. I was a little worried about the extra overhead, but it only adds a small delay, see the extra write pulses in blue at the end of a byte, more than enough space before the next one starts.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4pa3pGnJ8JaSuSTNsR-Q1s169EDODiIBPRNmrITBs-M9GBKctyZ0cc1gcOrfRwuvZHP2SJRefyZXUGSdxLLfaqV190CWKSPRGe2OPw1SmeOEC1zHxJVBKpVY0zmpkuaaDq-LSLn9XM5slkpTTyHh3sujkFjuGl8V8SG89HBp8RGLSH2WtZg_fyH18R6h-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4pa3pGnJ8JaSuSTNsR-Q1s169EDODiIBPRNmrITBs-M9GBKctyZ0cc1gcOrfRwuvZHP2SJRefyZXUGSdxLLfaqV190CWKSPRGe2OPw1SmeOEC1zHxJVBKpVY0zmpkuaaDq-LSLn9XM5slkpTTyHh3sujkFjuGl8V8SG89HBp8RGLSH2WtZg_fyH18R6h-=w600-h360" width="600" />
</a>
</div>
<p>I successfully loaded many programs, including a large text adventure, Citadel.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgL35Si2aJ3NVJ9gNKPmIUwCeqSWswOCgZF7V_vcNI4qO80_k7hXRmy3fVFWraRcGijYEu33239v9aKd6VGNYSjM_Crk9sB7AotRIAhCBI-pSpRGBJwrfZDwrxu_rvKmA0jjMjkAdPGTecG9-rCLQZF3T5prgP_LT8LlodpjgRnhuI9lZcRrKp25tjFfBCE" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgL35Si2aJ3NVJ9gNKPmIUwCeqSWswOCgZF7V_vcNI4qO80_k7hXRmy3fVFWraRcGijYEu33239v9aKd6VGNYSjM_Crk9sB7AotRIAhCBI-pSpRGBJwrfZDwrxu_rvKmA0jjMjkAdPGTecG9-rCLQZF3T5prgP_LT8LlodpjgRnhuI9lZcRrKp25tjFfBCE=w600-h400" width="600" />
</a>
</div>
<p>And a version of Othello with a surprisingly good AI player.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiaD9z73ZwkRM_vy7DlM5RXZEkkp79BnsqB-5VcTHquHCm0II_x3mhoZhF1kD4iyIEJ_ZreA4MRAQ0nhidSnk6e9cTjJ5pnoEUsgPMbtqfymwYCc9VSq-uC0UVVjfE9qXnOM5bmKoYWzTkWAC9LNy7MLOcxAsQKh06gGEp42AVabO6WfuQ8G2hg45dIH_Ug" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiaD9z73ZwkRM_vy7DlM5RXZEkkp79BnsqB-5VcTHquHCm0II_x3mhoZhF1kD4iyIEJ_ZreA4MRAQ0nhidSnk6e9cTjJ5pnoEUsgPMbtqfymwYCc9VSq-uC0UVVjfE9qXnOM5bmKoYWzTkWAC9LNy7MLOcxAsQKh06gGEp42AVabO6WfuQ8G2hg45dIH_Ug=w600-h400" width="600" />
</a>
</div>
<h2 style="text-align: left;">Save</h2>
<p>I knew save was going to have similar problems to load. The hardware of the Ace is again fairly similar to that of the ZX80 when it comes to saving, but the actual triggers are different.</p>
<p>The ZX80 re-purposes the VSync generator to drive the mic input of a cassette recorder. So again, when it is doing that, it cannot drive the TV signal, but that's par for the course with the ZX80.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5aXw7tatKP-pooGNyEBd6NCk-9hiwZPA_ToOGx-5qwSFLeZxYNZqIZmQGQBNUHiMVrv1mySYhLuH0-PCjOu9grDvzSoKQrI6ejbC1jeoUVl0UA5sMdcTwfy0J9dxbpNH-wVdeWOUc0wvdTyTnNIm5cVMXwdo-jxLExUG6yYGlw09nw3qRsR0LAgl5w3a-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="645" data-original-width="860" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5aXw7tatKP-pooGNyEBd6NCk-9hiwZPA_ToOGx-5qwSFLeZxYNZqIZmQGQBNUHiMVrv1mySYhLuH0-PCjOu9grDvzSoKQrI6ejbC1jeoUVl0UA5sMdcTwfy0J9dxbpNH-wVdeWOUc0wvdTyTnNIm5cVMXwdo-jxLExUG6yYGlw09nw3qRsR0LAgl5w3a-=w600-h400" width="600" />
</a>
</div>
<p>Here the signal is turned on by any IO writes, and turned off by keyboard IO reads.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiRbVmW5mGpFbdvC96rNHHeLHwK9vcItzxHzD1XCG8owBezwz1cXE_TaDjNfVRM_IdxksoWUREuH4i38S_h6ghez9VC0Pj41T2GPW1ckiX8Uqv9S5Qomf8VGvAcvQoDG5LMW8OGiWGkCF1VrCTSSCEiHerYrbKemKiC4QeIB6XCc0tkxDDeIHlyzr0ZbjhK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="246" data-original-width="738" height="200" src="https://blogger.googleusercontent.com/img/a/AVvXsEiRbVmW5mGpFbdvC96rNHHeLHwK9vcItzxHzD1XCG8owBezwz1cXE_TaDjNfVRM_IdxksoWUREuH4i38S_h6ghez9VC0Pj41T2GPW1ckiX8Uqv9S5Qomf8VGvAcvQoDG5LMW8OGiWGkCF1VrCTSSCEiHerYrbKemKiC4QeIB6XCc0tkxDDeIHlyzr0ZbjhK=w600-h200" width="600" />
</a>
</div>
<p>The IO read to the keyboard doubles to turn the sync signal off and also read the column which includes the space key, so that can be used to abort the save.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhCItilUKZHx6gpekO61vtpo_l4qNGXag_nYgcjwkCs24EjGCg4WcCui0_0FXWiMzHPBktlhp13Vb4_REFBlCnhv3TbJnk-LNtysatMD8kJu7in2OBWzET1GSJXSPSTvK8Q-ROmvCPVYy6t7OCNO-gXi4iOuCp9gUcRWaRqm-yQ_6lA39U5vcAjjlImjMSo" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="60" data-original-width="560" height="62" src="https://blogger.googleusercontent.com/img/a/AVvXsEhCItilUKZHx6gpekO61vtpo_l4qNGXag_nYgcjwkCs24EjGCg4WcCui0_0FXWiMzHPBktlhp13Vb4_REFBlCnhv3TbJnk-LNtysatMD8kJu7in2OBWzET1GSJXSPSTvK8Q-ROmvCPVYy6t7OCNO-gXi4iOuCp9gUcRWaRqm-yQ_6lA39U5vcAjjlImjMSo=w600-h62" width="600" />
</a>
</div>
<p>The sync signal generated is a series of pulses representing 0s and 1s. A 0 is 4 pulses, a 1 is 9 pulses. There are no byte or block markers.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiY5R-PlTbdo9e9xobSpML60Sfjp1_Db1Uh7J7vR3y45Hl1c70jFFsnXZ78Uaw3dzHWG55NU21kBcXP6n_-2ahfXzcXQVCm3NZuIYc1ApSsY2GLvLCaScDVLxOzPMENO4H-PjxzNT0ALxjsRX-sm7gbYNOlzJC2zEgnNEn1ri2sJGIM0CdP_vCyfpghwx7H" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="492" data-original-width="1155" height="260" src="https://blogger.googleusercontent.com/img/a/AVvXsEiY5R-PlTbdo9e9xobSpML60Sfjp1_Db1Uh7J7vR3y45Hl1c70jFFsnXZ78Uaw3dzHWG55NU21kBcXP6n_-2ahfXzcXQVCm3NZuIYc1ApSsY2GLvLCaScDVLxOzPMENO4H-PjxzNT0ALxjsRX-sm7gbYNOlzJC2zEgnNEn1ri2sJGIM0CdP_vCyfpghwx7H=w600-h260" width="600" />
</a>
</div>
<p>The version which is recorded on the tape is AC coupled by the capacitor C14, so ends up as a stream of pulses of 300us / 3.33kHz, which is within the range of a basic 1980s domestic cassette recorder.</p><p>
</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg2S2OYXDC9OrByrUExrfLavHQDX49froLGtUwgmCLM3kxRqSRkMNGa5XkTMJ2cIuX7mRuF10ncJy8SP7KaX8pYQbD9DCrrANARxBOq1_vjlIzPLK7ayxGk031VR_P0FFSGOwQT43fcwmt3VE6wGqJWLgOhedItNdSfDVvbyEkaJO_20GKGTAaNgvSfHG6Y" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="479" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEg2S2OYXDC9OrByrUExrfLavHQDX49froLGtUwgmCLM3kxRqSRkMNGa5XkTMJ2cIuX7mRuF10ncJy8SP7KaX8pYQbD9DCrrANARxBOq1_vjlIzPLK7ayxGk031VR_P0FFSGOwQT43fcwmt3VE6wGqJWLgOhedItNdSfDVvbyEkaJO_20GKGTAaNgvSfHG6Y=w600-h360" width="600" />
</a>
</div>
<p>The Minstrel 4D has the same output section as the Jupiter Ace, which is something resembling a proper IO port. In this case, a 1 bit output port latching the value of D3 written to I/O port FE.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhYjATaXRbaeJXGdkU8iz21cP-G73b1ttFSsYL59GHdieU_chcvfgfAv0vo4dLoPVxycMcO00cESKJ6PA23troLtWKQGq6ryqJ-8hh6oBnSGw7duUtY0KziTYPHwlzGeK_I80U7bUVkzZ25eKbBz9p3zb85BOE1R-xYBXmv9yEBkDeH9j4bpRKwoXgq6jS-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="390" data-original-width="1170" height="214" src="https://blogger.googleusercontent.com/img/a/AVvXsEhYjATaXRbaeJXGdkU8iz21cP-G73b1ttFSsYL59GHdieU_chcvfgfAv0vo4dLoPVxycMcO00cESKJ6PA23troLtWKQGq6ryqJ-8hh6oBnSGw7duUtY0KziTYPHwlzGeK_I80U7bUVkzZ25eKbBz9p3zb85BOE1R-xYBXmv9yEBkDeH9j4bpRKwoXgq6jS-=w600-h214" width="600" />
</a>
</div>
<p>In order to make save work on the ZX80 4K BASIC on the Minstrel 4D, I just need to change the IO write (to unused address 0xFF) to be a write to 0xFE with D3 set to 1, and the reads of 0xFE to be writes to 0xFE with D3 set to 0.</p>
<p>I need to add extra reads to 0xFE to check for the break key. This is only tested between bytes, so an extra read there shouldn't be a problem.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhqwRnYbQSMvpFnJgGK1IrdS9cGkg9FdEOdBqntsdPlFA3iMhVTlIOXEOPWpzolTil5r254oRGynHoPM4IA_7AQXvBo1LdfBEEAhMueJ4suHz7lLbSLsYe32R_L3T3xN1d_0_TxI0Qy8Aa-2V6RhZLUlRjF-E06iQ2aB3LhD88tOK4n_8KRpcKHTM4G_G0Y" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="285" data-original-width="855" height="200" src="https://blogger.googleusercontent.com/img/a/AVvXsEhqwRnYbQSMvpFnJgGK1IrdS9cGkg9FdEOdBqntsdPlFA3iMhVTlIOXEOPWpzolTil5r254oRGynHoPM4IA_7AQXvBo1LdfBEEAhMueJ4suHz7lLbSLsYe32R_L3T3xN1d_0_TxI0Qy8Aa-2V6RhZLUlRjF-E06iQ2aB3LhD88tOK4n_8KRpcKHTM4G_G0Y=w600-h200" width="600" />
</a>
</div>
<p>The only problem is the speaker on the Ace is also controlled by IO reads and writes to port FE so it will click on an off with each byte.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgNJ0oAoab-3zVocipcYaoyp1LmakYoax_9e6uVtJgHFBt29T2QRB1GMC9ZzmwpjagOCaNK1XihU04V5bkPtlewqdfpUMchK50-g-QftLh2St1Ba_bAMDfakSVjXbcNcdlInzEGhJKQKWtnCrIyopQSd-d_y08aaOyop2SLcYBPG-i3b5WDNCLOsw_F2ugn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="902" data-original-width="1202" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgNJ0oAoab-3zVocipcYaoyp1LmakYoax_9e6uVtJgHFBt29T2QRB1GMC9ZzmwpjagOCaNK1XihU04V5bkPtlewqdfpUMchK50-g-QftLh2St1Ba_bAMDfakSVjXbcNcdlInzEGhJKQKWtnCrIyopQSd-d_y08aaOyop2SLcYBPG-i3b5WDNCLOsw_F2ugn=w600-h400" width="600" />
</a>
</div>
<p>I don't think there is a way around that. I can't change the hardware, so it's either clicking or no way to abort a save once it has started.</p>
<p>Testing out save, that worked fine.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEijgqdlDjxGvAud-TZzMBGGntqK3znv77-e1STvNheMH3d5O-uPRZ6PIUVv0wnzYzYTXoCAyBUrxGEA6ApJEGF4kd33xw7Oh0ewglS7rVifyKRcVkcrLh5USWHzt7j33-DnWTLxo0qP3ylx3oaS7VaPwoUxTa4GJ3iSWtfqgOJ3XR8l3UF37jdQgFopfVNd" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="270" data-original-width="810" height="200" src="https://blogger.googleusercontent.com/img/a/AVvXsEijgqdlDjxGvAud-TZzMBGGntqK3znv77-e1STvNheMH3d5O-uPRZ6PIUVv0wnzYzYTXoCAyBUrxGEA6ApJEGF4kd33xw7Oh0ewglS7rVifyKRcVkcrLh5USWHzt7j33-DnWTLxo0qP3ylx3oaS7VaPwoUxTa4GJ3iSWtfqgOJ3XR8l3UF37jdQgFopfVNd=w600-h200" width="600" />
</a>
</div>
<p>Rather than having to mess around patching in place, I decided it would be easier to just create a new save function, that way I could also use the on screen counter the same as the new load routine.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhcFjNGNGLwhceNuvGkWp7dYpTzAE3WX5sovCCL5oGI9-WM5JoNhB0JbS3NL5cJSktgYbyDqChThE2jwQH35mI5IxN0VQV-Sj5urWSoUWFkVxExHYbycsSP9rEPrOmldgc9QU5SHzUySZDWyV-oRc3znKJp69e6bBltW4uPHc_k_8tSIBNfWl_6p0vYBIVo" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhcFjNGNGLwhceNuvGkWp7dYpTzAE3WX5sovCCL5oGI9-WM5JoNhB0JbS3NL5cJSktgYbyDqChThE2jwQH35mI5IxN0VQV-Sj5urWSoUWFkVxExHYbycsSP9rEPrOmldgc9QU5SHzUySZDWyV-oRc3znKJp69e6bBltW4uPHc_k_8tSIBNfWl_6p0vYBIVo=w600-h400" width="600" />
</a>
</div>
<p>That all seems to work as expected, I have tried saving and loading and all seems to work well and interchangeably with a Minstrel 2 running the original ZX80 4K BASIC ROM.</p>
<hr />
<p>In the next post I will be trying out some games and seeing if the special "flicker-free" programs work.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi76hFhMuBLT7zeZJrD1O3dA-qr0tO8vyFui9h3H4T5Y_pM4InxTPHc08VnSRNFv2mV-Ria-1nm6UUMQI5FmF-xMXrIwdCBnoCJ8SrQalDGZliuX_IUdIG_lwRXxQKhOb5YQZmLLAjTgBcN9n2rwhvmo617XsQMQUiLKR9HI_tTR8wKOxzOY6sq-nzZod-X" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi76hFhMuBLT7zeZJrD1O3dA-qr0tO8vyFui9h3H4T5Y_pM4InxTPHc08VnSRNFv2mV-Ria-1nm6UUMQI5FmF-xMXrIwdCBnoCJ8SrQalDGZliuX_IUdIG_lwRXxQKhOb5YQZmLLAjTgBcN9n2rwhvmo617XsQMQUiLKR9HI_tTR8wKOxzOY6sq-nzZod-X=w600-h400" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>Minstrel 4D</h2>
<p>Minstrel 4D kits and ready built units are available from thefuturewas8bit.com</p>
<p><a href="https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html" rel="nofollow" target="_blank">https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/s1600/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/w600-h450/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" width="600" />
</a>
</div>
<hr />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of blog posts and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-81480544637746408762023-11-26T11:07:00.016+00:002023-12-03T12:39:54.898+00:00ZX80 BASIC on a Minstrel 4D - Part 1<p>Yes, you read that right, ZX80 4K Integer BASIC running on a Minstrel 4D.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgvZe9eDdLPznuzDIqKoJcsHbZ2thMfOqWDb92hgL3crm5NsSfSTAgdSUQJaI1yH6LcuooM5-5biQOiUKQ4Jy_5JBX-EouoWsCH2OX2z7uakFuazz36_JYoh-xc83ulggSMCtDkkfJCmN1VFEfYPokriHRUiFehQ0NkPMB_hEdeHw0a1y4Wtk6wz3iM6xOG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgvZe9eDdLPznuzDIqKoJcsHbZ2thMfOqWDb92hgL3crm5NsSfSTAgdSUQJaI1yH6LcuooM5-5biQOiUKQ4Jy_5JBX-EouoWsCH2OX2z7uakFuazz36_JYoh-xc83ulggSMCtDkkfJCmN1VFEfYPokriHRUiFehQ0NkPMB_hEdeHw0a1y4Wtk6wz3iM6xOG=w600-h450" width="600" />
</a>
</div>
<p>This is the first part in a series of posts where I will be starting with building a modified version of ZX80 BASIC and later moving on to a version of ZX81 BASIC that will run on the Minstrel 4D hardware. The final goal will be to get it running as a ZX81, and capable of running an unmodified version of 3D Monster Maze.</p>
<p>I will talk about the practicalities of how that works in a later post, in this post I talk about the initial idea and getting it running.</p>
<hr />
<p>It was one of those occasions where a silly idea crept into my head and I had to give it a go.</p><p>Back in the dim and distant part, one of the original plans for the Minstrel 4th / 4D is that as well as the standard Forth, it would include other language and utility ROMs.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhe_3GJt2yCAtwFYRSH8uyb4vJk7zVDv_uf4CneRFAheHWgy4BmbE6FKNJasFQoyMHc1BtnqAkdAaBjcz9o1f8hYQJ6N7d7yAi-Nbpdv9HQ8Uosqhsa0BBBCd2HspehuUcWXn0wm495tkwBXH54F3WhR9TU4n87LBBKwCbAgXtni52C2U-PzMEZyXrr0jCR" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhe_3GJt2yCAtwFYRSH8uyb4vJk7zVDv_uf4CneRFAheHWgy4BmbE6FKNJasFQoyMHc1BtnqAkdAaBjcz9o1f8hYQJ6N7d7yAi-Nbpdv9HQ8Uosqhsa0BBBCd2HspehuUcWXn0wm495tkwBXH54F3WhR9TU4n87LBBKwCbAgXtni52C2U-PzMEZyXrr0jCR=w600-h450" width="600" />
</a>
</div>
<p>There are two jumpers on the 4th and two DIP switches on the Minstrel 4D to select alternate ROM images, although none were supplied as standard. The memory map of the Minstrel also has an 5K extra space available, meaning these language ROMs could be up to 13K.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgxxTYAia0JUavkas9wdEg4uqwPdy12bwbm0pN-ipmgYiWmbV1-CTR-OHwMZs-Tkrmw75cGGo9Ge02DP2mW8xSwWDLL-r-Hz6vUs544JvAEL-z3vS-gM0KTM5UtWAQiVa-0zF3Z4YVr_ZhKCqPsosSKUgyRg2_2QpLQ6QTM68iAUw_PBrQj_tum2o8Costt" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgxxTYAia0JUavkas9wdEg4uqwPdy12bwbm0pN-ipmgYiWmbV1-CTR-OHwMZs-Tkrmw75cGGo9Ge02DP2mW8xSwWDLL-r-Hz6vUs544JvAEL-z3vS-gM0KTM5UtWAQiVa-0zF3Z4YVr_ZhKCqPsosSKUgyRg2_2QpLQ6QTM68iAUw_PBrQj_tum2o8Costt=w600-h450" width="600" />
</a>
</div>
<p>I worked for quite a while on a version of Microsoft BASIC, adapted from NASOM BASIC, but I never quite got that right.</p>
<p>I should maybe go back and try that again, but it has been such a long time, I would probably end up starting all over again.</p>
<p>The main issue was the screen editor. The version of BASIC is designed to work with a serial terminal, as seen with things like the RC2014.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi0A_gqiXtwTGzT5_F4vECNiBYB4hTFmsdei2fZHoYz0jnaxqMoXpMti6zc0J2wqQmQaRoI7sl1iXJ2UhMXLb6o4bMsL3dfVSCMxW1eA2HE5Gry8ff5cK8UGdRaTBIgZHjqr76T1k_dcXUiCT27RE6G-DkqKqnla_YU_H5ACCFEYnQFHmA6c2MaOhhoCs-a" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="708" data-original-width="848" height="520" src="https://blogger.googleusercontent.com/img/a/AVvXsEi0A_gqiXtwTGzT5_F4vECNiBYB4hTFmsdei2fZHoYz0jnaxqMoXpMti6zc0J2wqQmQaRoI7sl1iXJ2UhMXLb6o4bMsL3dfVSCMxW1eA2HE5Gry8ff5cK8UGdRaTBIgZHjqr76T1k_dcXUiCT27RE6G-DkqKqnla_YU_H5ACCFEYnQFHmA6c2MaOhhoCs-a=w600-h520" width="600" />
</a>
</div>
<p>I tried to adapt the Ace screen editor, but that is a bit odd with the bottom one or two rows also effectively being the keyboard buffer.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgGaeIzRTbv4TNHQ7CVEa54q5wHMIU6nlNElqvBfWlTLBaRMWtQPCqZFBmy_BH-hI9ntK-HR8mp9ThIpHIQD-0tyUb0ScOigyNlB1d25iRXAHAWlryv-6LbhOxGxtH35ppBjTazvinSjTuTwBiEl3-bDH3G9ZTEx9TQ9MB18mXOXr4jWZ2JZQW0M2COXhXx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgGaeIzRTbv4TNHQ7CVEa54q5wHMIU6nlNElqvBfWlTLBaRMWtQPCqZFBmy_BH-hI9ntK-HR8mp9ThIpHIQD-0tyUb0ScOigyNlB1d25iRXAHAWlryv-6LbhOxGxtH35ppBjTazvinSjTuTwBiEl3-bDH3G9ZTEx9TQ9MB18mXOXr4jWZ2JZQW0M2COXhXx=w600-h450" width="600" />
</a>
</div>
<p>I also looked at adapting the NASCOM screen editor, but that was also problematic due to the way it had a 48 column display in the middle of 64 byte screen lines.</p>
<p>Anyway, that didn't happen so got shelved.</p>
<p><i>....</i></p>
<p>And then, two years later, I had an idea. Hey, why not use the screen editor from the Spectrum.</p>
<p>But wait, why use the NASCOM BASIC, why not use the Spectrum BASIC as well.</p>
<h3 style="text-align: left;">Hey, why not make the Spectrum ROM run on the Minstrel 4th.</h3>
<p>Well. That was last Sunday <i>(*at the time of writing this post which went to Patreon about a month ago)</i></p>
<p>I spent a while working on the Spectrum version, but it was clear that it was going to require a lot of work to simplify the pixel based display with colour attributes to one that was character based.</p>
<h3 style="text-align: left;">Hey, what about the ZX81? That was character based, let's use that.</h3>
<p>So I started again, but this time with the ZX81 ROM. That version is almost working, but there were some issues with slow mode that I need to rethink.</p>
<h3 style="text-align: left;">Hey, what about the ZX80? That doesn't have slow mode.</h3>
<p>So, I started again, this time with the ZX80 4K Integer BASIC ROM.</p>
<p>And well, it works. There will be a full blog post explaining how I modified it to work, but for the moment, suffice to say I have it running on the Minstrel 4D.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4IA5nmHXghYNa2ppajbEDohXWbwgnSq1-PfCfZRcag7tadA3h_IAKSfHYZzxLoCVe6IQ6EiBqwFNoNmaZbH-9qBrQ1i1tUN7tQ5aGnz0DtYOlC1nEVxrWmAeNDBo6STsmwYCGlybB3TSkaK1ZdT1zidr6D0ilju1NR_qRyN642Z1VWTyByLBujpdLjfJs" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4IA5nmHXghYNa2ppajbEDohXWbwgnSq1-PfCfZRcag7tadA3h_IAKSfHYZzxLoCVe6IQ6EiBqwFNoNmaZbH-9qBrQ1i1tUN7tQ5aGnz0DtYOlC1nEVxrWmAeNDBo6STsmwYCGlybB3TSkaK1ZdT1zidr6D0ilju1NR_qRyN642Z1VWTyByLBujpdLjfJs=w600-h450" width="600" />
</a>
</div>
<p>There are various things to deal with to make it usable. The first is the keyboard, the Ace has it's bottom row of keys shifted around compared to the Sinclair machines, so I needed to adjust the key tables to cope with the new layout (for the moment, the Symbol Shift key will be the ZX80's full stop and comma key). I may look at remapping to match the symbols and maybe even a tokeniser for BASIC so you type in P R I N T rather than pressing O (yes, it was on O on the 4K BASIC, not P).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjSWhM8qBPMJFmQDLBLLkL7uRe7rXqZjXU440oU6XwJTmTBdVYVw2ERnYuLxiTensrpWn8p8Mit3wF9qYptORhFvbOBEEYlFFoJiJ_dqAGvFkLf4XgRBiA-CMImfRgx0utngZ66sfeOk68YME-Zy_dkgb1hCXieMc5gh5k19foOwcsIVE6Rx2P6fyw08hhu" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjSWhM8qBPMJFmQDLBLLkL7uRe7rXqZjXU440oU6XwJTmTBdVYVw2ERnYuLxiTensrpWn8p8Mit3wF9qYptORhFvbOBEEYlFFoJiJ_dqAGvFkLf4XgRBiA-CMImfRgx0utngZ66sfeOk68YME-Zy_dkgb1hCXieMc5gh5k19foOwcsIVE6Rx2P6fyw08hhu=w600-h450" width="600" />
</a>
</div>
<p>The next thing to tackle was loading. And this is where I initially got stuck. I needed to load programs to test things further, but was having no luck loading.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi0IjG5POoZcmygm0Qhz6NbyDCLCLbz-gHK8QYLSUdAsYNtKe_Uus5BTcZOs5iGMTLlU9Pj-X3a36flUOFKmq0vJCLS_bTtApoGJ9rkiqS4a2TcMEi2rNQG9Ph2mF4GfEYKB3QrXvbCQ10w74doHog5VUPwsEDgaT9eeS-MncJPnZFVt3B_-o6oJX2I2la4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi0IjG5POoZcmygm0Qhz6NbyDCLCLbz-gHK8QYLSUdAsYNtKe_Uus5BTcZOs5iGMTLlU9Pj-X3a36flUOFKmq0vJCLS_bTtApoGJ9rkiqS4a2TcMEi2rNQG9Ph2mF4GfEYKB3QrXvbCQ10w74doHog5VUPwsEDgaT9eeS-MncJPnZFVt3B_-o6oJX2I2la4=w600-h450" width="600" />
</a>
</div>
<p>Hardware wise, the ZX80 and the Ace have very similar hardware for reading the keyboard and the tape. I have redrawn them in the same way, to highlight the difference. Can you spot it?</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZMismvoyVcpDpsL7wODnekkwi_SBEsNGEgZT5Vakum_Z1JyyDP00QDi5ik3kDsdQM9VEL8T65cGDT25g0G2BnEUD3C73ovXpUjIXgToXUTKgSOVO7qNtIaYOkv9TlJR39shaZHBGXzrC_H7M39Ffh7CFFMRyQhNCAgR-zfgVb5LdMhsLOsYt-R96j-nOk" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="711" data-original-width="1527" height="280" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZMismvoyVcpDpsL7wODnekkwi_SBEsNGEgZT5Vakum_Z1JyyDP00QDi5ik3kDsdQM9VEL8T65cGDT25g0G2BnEUD3C73ovXpUjIXgToXUTKgSOVO7qNtIaYOkv9TlJR39shaZHBGXzrC_H7M39Ffh7CFFMRyQhNCAgR-zfgVb5LdMhsLOsYt-R96j-nOk=w600-h280" width="600" />
</a>
</div>
<p>Yes, the tape input is on D5 on the Ace, rather than D7 on the Sinclair machines. D7 is handy as you can use the RLA instruction to move bit 7 into the carry flag, where it can be easily tested. In bit 5, you either have to do three RLA instructions, or use BIT 5,A to test it.</p>
<p>I did some clever shuffling around to make that work and keep the same number of bytes and T-states, and tried it out.</p>
<p>And it didn't work.</p>
<p>And two days later, after trying all sorts of stuff, it still doesn't work.</p>
<p>I am not sure why yet. It seems to be doing all the right things, but it's just not reading the bits.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEit9feH2MdGxAY_D0iNHTau70nk32hMWHoxpHLhzOJ0cGEb4UXJxIQIEK0H75xtbn-JcLtxAguN_9Cm749jCHIrSQyu9ODvblbmd4BauYkFdMXdTY1gEAb-xxVlgx9zCsOrcXJIBXBjKQuIM-le9HxnjT7cclvFRs0_jb2XUut_5WDMbtVgqD0CNpkOScgZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="480" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEit9feH2MdGxAY_D0iNHTau70nk32hMWHoxpHLhzOJ0cGEb4UXJxIQIEK0H75xtbn-JcLtxAguN_9Cm749jCHIrSQyu9ODvblbmd4BauYkFdMXdTY1gEAb-xxVlgx9zCsOrcXJIBXBjKQuIM-le9HxnjT7cclvFRs0_jb2XUut_5WDMbtVgqD0CNpkOScgZ=w600-h360" width="600" />
</a>
</div>
<p>Here yellow shows the reads from the port and green shows the signal from the tape. I will probably write a long blog post on this at some point on the ZX80/81 tape loading, but basically 4 pulses then a gap means a 0, 9 pulses then a gap means a 1.</p>
<p>This is very different from the way the Ace did it with different length pulses for 0 and 1 See an annotated listing by George Beckett:</p>
<p><a href="https://github.com/markgbeckett/jupiter_ace/blob/master/mpf-i/jupiter_ace_tape_interface.asm" rel="nofollow" target="_blank">https://github.com/markgbeckett/jupiter_ace/blob/master/mpf-i/jupiter_ace_tape_interface.asm</a></p>
<p>The full ZX80 disassembly by Geoff Wearmouth can be found here for those playing along at home:</p>
<p><a href="https://web.archive.org/web/20050207050627/http://www.wearmouth.demon.co.uk/zx80.htm" rel="nofollow" target="_blank">https://web.archive.org/web/20050207050627/http://www.wearmouth.demon.co.uk/zx80.htm</a></p>
<p>You can see my modified ZX80 ROM it is sampling multiple times per pulse, as expected.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg6lG6_coYZtNElGMj9TUAgWwt35I9AKdFm7khAB6Q_CTOklNNTGMh_jj8tq7j8LKeHyWJWNkTmTzuYnqsf9NK6Ko4xmj4vrn85A_gSXpTpgxqLF_7EZQNpInohGvcucfZ0ojYPgaSLMDbFEN5sdrHAy-0yydQmwR0PkysI7Rlj_evoZ22YnCDpzTWyD9b9" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="370" src="https://blogger.googleusercontent.com/img/a/AVvXsEg6lG6_coYZtNElGMj9TUAgWwt35I9AKdFm7khAB6Q_CTOklNNTGMh_jj8tq7j8LKeHyWJWNkTmTzuYnqsf9NK6Ko4xmj4vrn85A_gSXpTpgxqLF_7EZQNpInohGvcucfZ0ojYPgaSLMDbFEN5sdrHAy-0yydQmwR0PkysI7Rlj_evoZ22YnCDpzTWyD9b9=w640-h384" width="600" />
</a>
</div>
<p>Compare that to the ZX80<i>(ignore the slow rise on the green pulse, it is fine at a logic level, and this is the cleaned up version)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi457iuvuBAYqPyNecdW9b2ok9jjo97Pyai6UB7JkgHIyIgNc8wpuvLdI9kdL3MeWtizcux69g0DT-o7g8yTl77TEBdK9FyY49ZYfo3gCuiVAzHTMHFRrYtli7MKXC6AwtbUZpoVUmRqna1VaZXUFb4OeuDFY_0YXSyKRXBrihMKFx5yHPLEsdXW60u3T5e" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="480" data-original-width="800" height="370" src="https://blogger.googleusercontent.com/img/a/AVvXsEi457iuvuBAYqPyNecdW9b2ok9jjo97Pyai6UB7JkgHIyIgNc8wpuvLdI9kdL3MeWtizcux69g0DT-o7g8yTl77TEBdK9FyY49ZYfo3gCuiVAzHTMHFRrYtli7MKXC6AwtbUZpoVUmRqna1VaZXUFb4OeuDFY_0YXSyKRXBrihMKFx5yHPLEsdXW60u3T5e=w600-h370" width="600" />
</a>
</div>
<p>Here I have added the blue trace showing writes to RAM as each bit is read. <i>I didn't include that on the shots of my modified version is it isn't writing to RAM, so imagine a flat blue line doing nothing.</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhStH8g_JkbGUD4znl-RuzhB0kJWdOPxqjFNZPuFRSyWzRCoafaU--abeWYYTrlqOP5F4KZJtLu6sGGoHxVEsRph7LJvuoW-lHQTcB00hZO5n8iPAbWaT4qNXRIXTQjLv2d5ho4pPwnX_qaUJgWhYFG_eel4m2zL5GgXOaTjl4R9zBwvssxMgB47kjCt6on" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="480" data-original-width="800" height="370" src="https://blogger.googleusercontent.com/img/a/AVvXsEhStH8g_JkbGUD4znl-RuzhB0kJWdOPxqjFNZPuFRSyWzRCoafaU--abeWYYTrlqOP5F4KZJtLu6sGGoHxVEsRph7LJvuoW-lHQTcB00hZO5n8iPAbWaT4qNXRIXTQjLv2d5ho4pPwnX_qaUJgWhYFG_eel4m2zL5GgXOaTjl4R9zBwvssxMgB47kjCt6on=w600-h370" width="600" />
</a>
</div>
<p>Looking at the code, it seems that rather than counting pulses as I expected, it is actually looking for the long period without a change.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7fEk1RTiCtctqm1OjsRq5c5jD69eox1rjOVSjjLxhFURCFyopHY5ioJ2mD1Z05nuI-kReEjwMQYTYvFcpd8pxWPy8ftucWyVQpR-oYyGqmMaF3k__a8IdrzV9RUNlViknuEC0S-mhoEYtWFdqDwAsJGeDzx6s8zojEf-QDqT53VEOLN756XwGIDssH-MA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="480" data-original-width="800" height="370" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7fEk1RTiCtctqm1OjsRq5c5jD69eox1rjOVSjjLxhFURCFyopHY5ioJ2mD1Z05nuI-kReEjwMQYTYvFcpd8pxWPy8ftucWyVQpR-oYyGqmMaF3k__a8IdrzV9RUNlViknuEC0S-mhoEYtWFdqDwAsJGeDzx6s8zojEf-QDqT53VEOLN756XwGIDssH-MA=w600-h370" width="600" />
</a>
</div>
<p>A count is started after a bit has been read, and it waits until the signal goes flat. If that is after X counts, it is a 0, if it has reached Y counts and it is a 1, anything over that is an error.</p>
<p>I have spent quite a while probing around at various different machines loading, but no success on the 4D with the modified ZX80 ROM.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEia8YgAk6G7qmqNmh_MBmCQA-bg0wPmZEm3gVs3ozz14YW6WvPfG4BH8GU8Ez8V45aOpo29f_kIKc_leFtdfRnZ8590k9qHy0yjEUxowot08qpopeuT5S0fL_-o0b2k34sUGx1hRvYrqfaxeQ_uitqyGY0A_8B5eca1v3gf40LzEGl2_Km0cmNA_yBlRVmI" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3498" data-original-width="4664" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEia8YgAk6G7qmqNmh_MBmCQA-bg0wPmZEm3gVs3ozz14YW6WvPfG4BH8GU8Ez8V45aOpo29f_kIKc_leFtdfRnZ8590k9qHy0yjEUxowot08qpopeuT5S0fL_-o0b2k34sUGx1hRvYrqfaxeQ_uitqyGY0A_8B5eca1v3gf40LzEGl2_Km0cmNA_yBlRVmI=w600-h450" width="600" />
</a>
</div>
<p>I also tried on a Minstrel 4th, which should be pretty much the same other than it does not have the Minstrel SD cleaning up the tape signal, but that proved to be the same.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi0oRn_EoTpJ7SqKWW_vukVfoBTqPiyshOfH8kq6ozWnxI1ICJIllm-f6hOojxr4o1cn729yx-48ihqhKBB2LTDwWRUiGpjXFwRabnHg0G5bGw5bFJWbOG_0wtF0cLo6EBoCmFz5P6uiuARx2K7styXTjeBosdizKnY4mnBNu13lHnAEkcoSjy4Mvz7QjHb" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi0oRn_EoTpJ7SqKWW_vukVfoBTqPiyshOfH8kq6ozWnxI1ICJIllm-f6hOojxr4o1cn729yx-48ihqhKBB2LTDwWRUiGpjXFwRabnHg0G5bGw5bFJWbOG_0wtF0cLo6EBoCmFz5P6uiuARx2K7styXTjeBosdizKnY4mnBNu13lHnAEkcoSjy4Mvz7QjHb=w600-h450" width="600" />
</a>
</div>
<p>I even tried going back to the original LOAD routines and modified the hardware to use D7, in case it was my changes at fault.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg1BL5ZkQbN9cIKfDwbfiv4JQ4nGPV0eoZUxw-OG_jij6hSGsPu9-lJVr0b2tIzqw8CyD2vBveWD0cOAEWPaM1uHKedLQlKh-PuxVkMlKGbOGj-dEPfYCJAbaYw6PES-zzYKwa9HY3bLXvQUfsR9zipMwu3G62tVYzrpgmPJAgwXtTX0CxNu54-4zHxFjuU" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg1BL5ZkQbN9cIKfDwbfiv4JQ4nGPV0eoZUxw-OG_jij6hSGsPu9-lJVr0b2tIzqw8CyD2vBveWD0cOAEWPaM1uHKedLQlKh-PuxVkMlKGbOGj-dEPfYCJAbaYw6PES-zzYKwa9HY3bLXvQUfsR9zipMwu3G62tVYzrpgmPJAgwXtTX0CxNu54-4zHxFjuU=w600-h450" width="600" />
</a>
</div>
<p>Summing up where I currently am:</p>
<ul>
<li>Is it the signal processing on the 4D? No. Tried a Minstrel 4th.</li>
<li>Is it the D5/D7 swap? No. Tried to swap it in hardware.</li>
<li>Does the TZXduino produce the correct output? Yes, it loads into a Minstrel 2.</li>
<li>Does the 4D board work with the Ace ROM loading from the same source? Yes.</li>
<li>Are there interrupts going off during loading to affect the timing? No.</li>
<li>Is it down to something else you have changed? Maybe, but I don't know what.</li>
<li>Have you tried turning it off and then on again. Yes.</li>
</ul>
<p>So I am confused. I may try to write an alternate tape loading routine, or adapt the one from the ZX81 or ZX Spectrum, but I do not understand why the original does not work.</p>
<p>The remainder of the BASIC seems to work as expected. Thanks to George Beckett for trying out typing in a longer BASIC test program which ran fine.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgEOqMJCJlRaVaSbZThGWjH4Ivuk-FvcG1DHNZ1g08aU8KPGcE4dyWmOVDRMskV_48Dz3A7cn5m90u6h5KFIo7Xo3ww6Z26nuEqVgSD1kx7l6-pxUiug5eGweYFzANykEBNgccNCfI7M8xGgMtWNuXAU921PZXg2d_fvDltdtJaIObBfY71uNBcVCRT3RIw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="998" data-original-width="1280" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgEOqMJCJlRaVaSbZThGWjH4Ivuk-FvcG1DHNZ1g08aU8KPGcE4dyWmOVDRMskV_48Dz3A7cn5m90u6h5KFIo7Xo3ww6Z26nuEqVgSD1kx7l6-pxUiug5eGweYFzANykEBNgccNCfI7M8xGgMtWNuXAU921PZXg2d_fvDltdtJaIObBfY71uNBcVCRT3RIw=w600-h480" width="600" />
</a>
</div>
<p>Today is Saturday, in case you needed to know.<i>(* well, it was)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhiyu7UHMSrVZS5FM7SQLT8pVLb9NM2rAo_wNJNosMrHnG4IHW0hUMN1ESthVCbEUTHRKOUUA1T0-bQLdkSsPLsA8V2gN6qmSWZ8TIi4gUbFKHtRmK9gixtZmaxvTFB3j9OMwM4x4P07gYBjZJv_9RhYaSUzaRALbBFX8n6c7UR1fdQHaGiLvTC7Ldb5v5q" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="998" data-original-width="1280" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEhiyu7UHMSrVZS5FM7SQLT8pVLb9NM2rAo_wNJNosMrHnG4IHW0hUMN1ESthVCbEUTHRKOUUA1T0-bQLdkSsPLsA8V2gN6qmSWZ8TIi4gUbFKHtRmK9gixtZmaxvTFB3j9OMwM4x4P07gYBjZJv_9RhYaSUzaRALbBFX8n6c7UR1fdQHaGiLvTC7Ldb5v5q=w600-h480" width="600" />
</a>
</div>
<p>That is running in the Eighty One emulator, set to Jupiter Ace, as I can't load it yet.</p>
<p>Lots of things still to do, I might look at a tokeniser, and adding some extra commands, like IN and OUT, and maybe JOYSTICK to return the value read by the joystick port, and a version of the Spectrum's BEEP command. And then possibly a machine code monitor.......</p>
<p>Any other suggestions?</p>
<p>And then, I need to do all that again for the ZX81 ROM, but I think it is best to keep working on the ZX80 version for the moment as there is loads of space and the lack of slow mode just makes things easier whilst I get these things sorted.</p>
<p>Oh, and then I need to adapt the Minstrel SD and menu etc. so it will work with these new ROMs as well as the Ace one......</p>
<p>But, first I need to get the loading sorted. Spoilers, the next part is titled "Writing a new tape LOADing routine".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgi7hSTw_3a0z45AbDeWGlpJQ6o3aAxz3qZ4-QiHaSfWZN3CBUDQ12BHPSPvK8eOS32xaeB_FpL-v3ENuj4nHGsUTRWdIfLlZRb-Wx40qtDlo3iQ2AWbxwFkKk0o3Nx8RUh2Y80He9QVv7-p5Ye20I5eV1ySU3SD9WqpUhYOFXKRxlRucn61DUxNoCT64KC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgi7hSTw_3a0z45AbDeWGlpJQ6o3aAxz3qZ4-QiHaSfWZN3CBUDQ12BHPSPvK8eOS32xaeB_FpL-v3ENuj4nHGsUTRWdIfLlZRb-Wx40qtDlo3iQ2AWbxwFkKk0o3Nx8RUh2Y80He9QVv7-p5Ye20I5eV1ySU3SD9WqpUhYOFXKRxlRucn61DUxNoCT64KC=w600-h450" width="600" />
</a>
</div>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/12/zx80-basic-on-the-minstrel-4d-part-2.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/12/zx80-basic-on-the-minstrel-4d-part-2.html</a></p>
<hr />
<h2>Advertisements</h2>
<h2>Minstrel 4D</h2>
<p>Minstrel 4D kits and ready built units are available from thefuturewas8bit.com</p>
<p><a href="https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html" rel="nofollow" target="_blank">https://www.thefuturewas8bit.com/shop/tynemouth-products/minstrel4d.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/s1600/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/w600-h450/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" width="600" />
</a>
</div>
<hr />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of blog posts and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-31969479933817911002023-11-19T14:13:00.051+00:002023-11-19T14:33:41.011+00:00December shipping times<p>I am shipping to the USA and to Europe from my SellMyRetro store, but this is currently taking 1-2 weeks, and my have additional customs fees to pay.</p>
<p><a href="https://www.sellmyretro.com/store/tynemouth-software" rel="nofollow" target="_blank">https://www.sellmyretro.com/store/tynemouth-software</a></p>
<p>This is likely to take longer as things get busier into December, so if you want to order anything to arrive for Christmas, you would be advised to order as soon as possible.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgP3GKmFp8h4c0CPoDttV3ZybcPGvLT2Ilm9Rz43SgUyEm85D7dVKfxN78C1r7YqPqr42NJ5Dlr6qJohEL05oZqMGiB7ECDZJCRot27Virh6OJc2Bsw51nVJ6z3l0ke0P9SQbF1_HLjNgvXUmTFjSunLWHAnUWWKhH8bDD3Nliz68Vv6isJd50C6xN5lEwJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgP3GKmFp8h4c0CPoDttV3ZybcPGvLT2Ilm9Rz43SgUyEm85D7dVKfxN78C1r7YqPqr42NJ5Dlr6qJohEL05oZqMGiB7ECDZJCRot27Virh6OJc2Bsw51nVJ6z3l0ke0P9SQbF1_HLjNgvXUmTFjSunLWHAnUWWKhH8bDD3Nliz68Vv6isJd50C6xN5lEwJ=w600-h450" width="600" />
</a>
</div>
<p>UK shipping should still be OK up to mid December, but it would be advisable to use the Special Delivery option later on to be safe.</p>
<h3 style="text-align: left;">What can you buy there?</h3>
<p>Well, I am pleased you asked.</p>
<p>There are Minstrel and Mini PET PCBs, kits and assembled units.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjxu1Z1zl6cDt287pGwbiRDDx8oYpe9UdZJ253VUgiyZLBiPG-myIepIpj01ccYsJnP1TJvh7tecU1sozbby1HKZYKxUBSMyA1lVmv_1JE1_Vw6PRzC0eo2QHW_bcQe12izw-12-J1PTLRMQeXTquNHFRmAHptnOPwaC8jlJXMg_ynOExmkySgw0QeCt5rs" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3512" data-original-width="4683" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjxu1Z1zl6cDt287pGwbiRDDx8oYpe9UdZJ253VUgiyZLBiPG-myIepIpj01ccYsJnP1TJvh7tecU1sozbby1HKZYKxUBSMyA1lVmv_1JE1_Vw6PRzC0eo2QHW_bcQe12izw-12-J1PTLRMQeXTquNHFRmAHptnOPwaC8jlJXMg_ynOExmkySgw0QeCt5rs=w600-h450" width="600" />
</a>
</div>
<p>Stocks of Minstrel boards are starting to run a bit low, and I doubt I will be getting more until the new year.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg_67rm02HB3Qp6fQP5M8s881fCpUv17quko7GA3w3_z-viMFzipz1qiI9exvMRVJXnAwpv1cyxAR_rnIAdL8ss11ZpAtdYg1kWxpmYmx7gSAB2ucegdq5jZHUeL479UZbuvf2DEC0h5Rej7uP9Tp63uFNeTIHJ3rxCjeCKt4EhVx8z27Xvys3QZ-9QdcM7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2916" data-original-width="3888" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg_67rm02HB3Qp6fQP5M8s881fCpUv17quko7GA3w3_z-viMFzipz1qiI9exvMRVJXnAwpv1cyxAR_rnIAdL8ss11ZpAtdYg1kWxpmYmx7gSAB2ucegdq5jZHUeL479UZbuvf2DEC0h5Rej7uP9Tp63uFNeTIHJ3rxCjeCKt4EhVx8z27Xvys3QZ-9QdcM7=w600-h450" width="600" />
</a>
</div>
<p>Stocks of the original Mini PET boards are also starting to run out, not sure if I will be getting any more of those. We will see.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQz3rTdIRxVBjBgN9nUmpCXId5DFOuD9V--192w4gQMPaYIxUPqEDHVcmcJ9gw6_mJvlQs0oAPyCxBTKseJE_ROyQX8oyx3owXrLCncaiWQjixIFn8B4itXFu6s80eOKvd55m7Ks9LRw0dwTk7eXy73RqIuLh-vMEHE7mymBVGlu12s7YtSX2QuneLQlrW" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQz3rTdIRxVBjBgN9nUmpCXId5DFOuD9V--192w4gQMPaYIxUPqEDHVcmcJ9gw6_mJvlQs0oAPyCxBTKseJE_ROyQX8oyx3owXrLCncaiWQjixIFn8B4itXFu6s80eOKvd55m7Ks9LRw0dwTk7eXy73RqIuLh-vMEHE7mymBVGlu12s7YtSX2QuneLQlrW=w600-h450" width="600" />
</a>
</div>
<p>There are various PCBs for other DIY projects, such as 1541 to 2031 conversion, 6532 to 6530 conversion, joystick emulation etc.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhj8S88Fzwm5k_FCM7oy8f0HUyzhBPZdlDtKp8n6D7XgsHBwM2ldGymqkk0omsE1_2bvQBM5yhAjhcoX_E8Ajw4mL_hBRr3S6-VLfRqF8mxpq4adXRBdWzkpMGD-CNRYlcDX21LC7VwXlhqkiMaiotMrHBh8sbmX3QR5jUyIANqscFVunMF7MXJXO-vlHoB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2442" data-original-width="3256" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhj8S88Fzwm5k_FCM7oy8f0HUyzhBPZdlDtKp8n6D7XgsHBwM2ldGymqkk0omsE1_2bvQBM5yhAjhcoX_E8Ajw4mL_hBRr3S6-VLfRqF8mxpq4adXRBdWzkpMGD-CNRYlcDX21LC7VwXlhqkiMaiotMrHBh8sbmX3QR5jUyIANqscFVunMF7MXJXO-vlHoB=w600-h450" width="600" />
</a>
</div>
<p>There are built versions of some diagnostic tools, such as the large PET ROM/RAM board and the new revision of the PET IEEE-4888 diagnostics board (also available in kit form).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhDQQa24ScBnjOnvAA0N3NQxGjq_in2IKxl_1PFETa2ZuMHQp36qu9KmJXpG292RwnJsSvjMeiskGNSDp1d6EClfjHLy_NXNft12Bsbt6czzdiq_ta9tzSmwemfvAbA-v24AYySESqC5an4oKlXBQpBzwEFQ4Iow-xzl8WKc9wvgOrJTIPyqF_4poh2O-zQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3342" data-original-width="4456" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhDQQa24ScBnjOnvAA0N3NQxGjq_in2IKxl_1PFETa2ZuMHQp36qu9KmJXpG292RwnJsSvjMeiskGNSDp1d6EClfjHLy_NXNft12Bsbt6czzdiq_ta9tzSmwemfvAbA-v24AYySESqC5an4oKlXBQpBzwEFQ4Iow-xzl8WKc9wvgOrJTIPyqF_4poh2O-zQ=w600-h450" width="600" />
</a>
</div>
<p>USB keyboard controllers are also still available for various machines. I keep trying to discontinue those, but people keep asking for them.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhHzRQF9Lqvolb9oXseNCwVfaSCyFUv7yQjUusPAGbgoMhWMw7JrpREIITM-mDmFqbV7eb0_U2t-DPCWhZLGkgX4H8utYpBRRCXuMUKU9drWJPfuemy3fYpu5t51JxuccZHk_h9VkBxqyaMwSMUDzS312D6-UNG_1GWvoxyoURj-P6g4dDznYcN71aSggvU" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2592" data-original-width="4784" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEhHzRQF9Lqvolb9oXseNCwVfaSCyFUv7yQjUusPAGbgoMhWMw7JrpREIITM-mDmFqbV7eb0_U2t-DPCWhZLGkgX4H8utYpBRRCXuMUKU9drWJPfuemy3fYpu5t51JxuccZHk_h9VkBxqyaMwSMUDzS312D6-UNG_1GWvoxyoURj-P6g4dDznYcN71aSggvU=w600-h320" width="600" />
</a>
</div>
<h3 style="text-align: left;">What was the link again?</h3>
<p><a href="https://www.sellmyretro.com/store/tynemouth-software" rel="nofollow" target="_blank">https://www.sellmyretro.com/store/tynemouth-software</a></p>
<hr />
<h2 style="text-align: left;">Any other options?</h2>
<p>Yes, both of the following sites have better and faster shipping options</p>
<h3 style="text-align: left;">Z80kits.com</h3>
<p>You can get my Minstrel 2 and 3 kits from z80kits.com, as well as exclusively two of my RC2014 modules, the 68B50 serial with clock and the joystick port.</p>
<p><a href="https://z80kits.com/product-category/tynemouth-kits/" rel="nofollow" target="_blank">https://z80kits.com/product-category/tynemouth-kits/</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9IStBMYK7hEDF4gLAg3TXgsFae_jRj0ZHBChrtMUhBCbd_nswnfxubGpIHm5nuXY32OVdkK_HhzkhED5D64Cy35WV2X9hci44B9YF2zeWZWmYCOTZeCRBtB5nppMpVtxQAkCCVOlbwSvoKji4CVEHBjo8sbgpiglKRpm6UaEV-SmZTRuAH6JyWozvy694/s600/68B50.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="450" data-original-width="600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9IStBMYK7hEDF4gLAg3TXgsFae_jRj0ZHBChrtMUhBCbd_nswnfxubGpIHm5nuXY32OVdkK_HhzkhED5D64Cy35WV2X9hci44B9YF2zeWZWmYCOTZeCRBtB5nppMpVtxQAkCCVOlbwSvoKji4CVEHBjo8sbgpiglKRpm6UaEV-SmZTRuAH6JyWozvy694/w600-h450/68B50.jpg" width="600" />
</a>
</div>
<h2 style="text-align: left;">The Future Was 8 bit</h2>
<p>And you can get Minstrel 4D kits, the small PET ROM/RAM boards and my two PET games on cassette from thefuturewas8bit.com</p>
<p><a href="https://www.thefuturewas8bit.com/shop/tynemouth-products.html" rel="nofollow" target="_blank">https://www.thefuturewas8bit.com/shop/tynemouth-products.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/s1600/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNUVCvasnvPtcf7Fv7os63_D3zvwA46UZBH7CXMzEUKLTOMbs3kxN6Urd5kry1HQNoGwipjH3EXcYgmDF2-JrD-EBz3zT1w980hzZPr8A_cvRLGBdTmdymvwGgzelIddIEYfSgaYbwvyPSYmhqNqYv5rB7N15GhBn_0MQv_toz1ZxZ3D_O0PGT48-uPaa/w600-h450/Minstrel%204D%20V4.5.60%20with%20Perspex%20Angled.jpg" width="600" />
</a>
</div>
<hr />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of blog posts and behind the scenes updates. These are often in more detail than I can fit in here. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-85606079898759549972023-11-12T12:54:00.033+00:002023-12-30T15:25:21.535+00:00Fixing my Jupiter Ace Clone<p>I am in the process of writing a post about how the video system on the Jupiter Ace works, and that is coming together nicely, but it would be useful if I had a Jupiter Ace I could wire up to a logic analyser to get some traces.</p>
<p>I do have lots of Minstrel 4th's and Minstrel 4D's, but those have all of the counter logic inside the microcontroller, so I really need something that uses the original schematic that I can poke things at.</p>
<p>Unfortunately, I don't have a real Jupiter Ace, but I remember about 5 years ago (January 2019 I think), I did have a go at building a clone of the Jupiter Ace, with pretty much the original schematic. This would be ideal, if I could just get it to work.......</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjSHs3zQiFonUPoOfkFDOFW02atvks4hfhcB1arNuEtEU2eYfpH8BoPEETh9xwLiDHh3fvXCn0X_7cOibi-yp0aYtNnAeplNpz9RMmb0rxj7TE28cjdgvJ8-YtPu1q4j83zE1uv7pUJZs-UPWK_YmsP8n2mozsBkMohjNU-O-cDWgycjxN9LGlI4hNjeyvh" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjSHs3zQiFonUPoOfkFDOFW02atvks4hfhcB1arNuEtEU2eYfpH8BoPEETh9xwLiDHh3fvXCn0X_7cOibi-yp0aYtNnAeplNpz9RMmb0rxj7TE28cjdgvJ8-YtPu1q4j83zE1uv7pUJZs-UPWK_YmsP8n2mozsBkMohjNU-O-cDWgycjxN9LGlI4hNjeyvh=w600-h400" width="600" />
</a>
</div>
<p>At the time I had the Minstrel 2 and 3 boards that used the ZX81 form factor, so it seemed a good idea to use the same for this.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEicvDNRjDH1s2-Qm54aZtByb225NmQfhvZA06whkEhJj0Qtn1HjZeb4v-fQVia_n1OzLr5W4SJdYsUsdQf9bPjDmaPUJvg4aovY5PkJ5qKFrCemw5_uLLiqgXN9b-UWSgWxtF9gILicXWFDfZRbbqi2Uq2Gqyg_1724cHLS5mlOMwMf55cDzYGI6Zi3EHqP" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEicvDNRjDH1s2-Qm54aZtByb225NmQfhvZA06whkEhJj0Qtn1HjZeb4v-fQVia_n1OzLr5W4SJdYsUsdQf9bPjDmaPUJvg4aovY5PkJ5qKFrCemw5_uLLiqgXN9b-UWSgWxtF9gILicXWFDfZRbbqi2Uq2Gqyg_1724cHLS5mlOMwMf55cDzYGI6Zi3EHqP=w600-h400" width="600" />
</a>
</div>
<p>It was quite a squeeze to fit it in there, with all the logic chips and half of the worlds supply of 1K resistors.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgFea4zqfe4L1GYM5fh0LCHR2hBCjJc7S5YHWoECQSpqaBgDCBOArOj2gXl9mGuIvuZdak2xn1zeHTUdNwFMIgqOMC76-wvJIMCKaq5MEGqc34HcdtvluIboGe_sJ5zmVUQkLyM5CEHrtuwQZZRMDIdzu9D1fXAojKt0QcJNDbEmO0noPmtIpPnqGlBGvcM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgFea4zqfe4L1GYM5fh0LCHR2hBCjJc7S5YHWoECQSpqaBgDCBOArOj2gXl9mGuIvuZdak2xn1zeHTUdNwFMIgqOMC76-wvJIMCKaq5MEGqc34HcdtvluIboGe_sJ5zmVUQkLyM5CEHrtuwQZZRMDIdzu9D1fXAojKt0QcJNDbEmO0noPmtIpPnqGlBGvcM=w600-h400" width="600" />
</a>
</div>
<p>The original Ace had three pairs of 2114 static RAM chips giving the three 1K blocks, system RAM, video RAM and font RAM. I can't get new 2114 chips, and the used / New Old Stock ones are not always very good, so I decided to replace all of them with three skinny DIP 32K SRAM chips.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjbXfTpoOFzXrKkJOANIMIhG4FrJXa_00qN2w5pALGoq7qV8YpjHWmwJoO8Q0_Ev88uLZpLS-TLpkfSLS_QUMOS6tGmFVeX4VOyWRt0rzM4PtL6J-YsVUlgPbeWQ-VFnphkZNzHj_Wp5wctJYv9kq7G1PDd0SE0Kpbr0Qk_97anySXeGl6yR0Ev-83K316g" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2888" data-original-width="3851" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjbXfTpoOFzXrKkJOANIMIhG4FrJXa_00qN2w5pALGoq7qV8YpjHWmwJoO8Q0_Ev88uLZpLS-TLpkfSLS_QUMOS6tGmFVeX4VOyWRt0rzM4PtL6J-YsVUlgPbeWQ-VFnphkZNzHj_Wp5wctJYv9kq7G1PDd0SE0Kpbr0Qk_97anySXeGl6yR0Ev-83K316g=w600-h400" width="600" />
</a>
</div>
<p>(yes, I wired one of the pins wrong on the 74LS166)</p>
<p>You might think that is a bit wasteful, but they are cheaper than 2114s, and they are even cheaper than the 8K versions of the same thing. The two video parts only use 1K, the main RAM provides the 1K system RAM and also a 16K expansion.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjzOEZBQVMxBnIJy2RBQzVaU0pVMAVyju6bNa3Avz0EXaWvX_0jHUo_fYX7rZc5IrH3slu_mNpGV3gJR8Dn71EIpl1z8s8VCqnRmE6UGhwRzFczria6HfGHOmzhDFh_Og5D2x4EHN2F2BYBdiEez0Ialy0JAlWz_4tDuhomgfFX_qiuOsq4CERuwSXQMI-0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjzOEZBQVMxBnIJy2RBQzVaU0pVMAVyju6bNa3Avz0EXaWvX_0jHUo_fYX7rZc5IrH3slu_mNpGV3gJR8Dn71EIpl1z8s8VCqnRmE6UGhwRzFczria6HfGHOmzhDFh_Og5D2x4EHN2F2BYBdiEez0Ialy0JAlWz_4tDuhomgfFX_qiuOsq4CERuwSXQMI-0=w600-h400" width="600" />
</a>
</div>
<p>I put it all together with a ZX81 replacement keyboard membrane, with an overlay in the style of the Ace keyboard.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEivKqQSSXaBHOGMHk6flooorO40_us4EpcMdr4z5wUG_nHj6ZCHcuqcjHfuw3hL7hvwY8aNptJ2rIFBBDPCa8csxVBJN6HyndsLVjjXnfys5UZMdOxs91dQujvlL5CYGgJDOHJFsCLZ5882Hbw4JJewyBEah6diLP14nx5PdZgBXnx3mNaMcX1Z6QwDSmV9" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEivKqQSSXaBHOGMHk6flooorO40_us4EpcMdr4z5wUG_nHj6ZCHcuqcjHfuw3hL7hvwY8aNptJ2rIFBBDPCa8csxVBJN6HyndsLVjjXnfys5UZMdOxs91dQujvlL5CYGgJDOHJFsCLZ5882Hbw4JJewyBEah6diLP14nx5PdZgBXnx3mNaMcX1Z6QwDSmV9=w600-h400" width="600" />
</a>
</div>
<p>When I came to fire it up, it seemed to work, but there were some random characters on the screen, and some of the characters were corrupted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjGngQan5eM5F_sUwiuPb95d0mUMrW0eYdql8UhE5sUtCSwGRrhzAyMRhIWNJbB_lqLCVLUKRkcQZUKj7VdYSl29xRWCaVuLv0fpO4xpWm7HdOiOiOjaP27KtUV3vtIM1WBWF52OafdShlyJHBeZ4tc6hXUDZeH3NiBRC200c7BhypjpkldOTJGHHimEi3m" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2946" data-original-width="3928" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjGngQan5eM5F_sUwiuPb95d0mUMrW0eYdql8UhE5sUtCSwGRrhzAyMRhIWNJbB_lqLCVLUKRkcQZUKj7VdYSl29xRWCaVuLv0fpO4xpWm7HdOiOiOjaP27KtUV3vtIM1WBWF52OafdShlyJHBeZ4tc6hXUDZeH3NiBRC200c7BhypjpkldOTJGHHimEi3m=w600-h400" width="600" />
</a>
</div>
<p>The video was also very fuzzy, I had based the composite video mixer and amplifier on the Jupiter Ace 4000 version which had composite video out (the original Ace didn't), so I thought I would use that. But it was a bit ropey, so I later adapted it to the same circuit I had used on the Minstrels.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj7P-HtV7ZYnjWXcgnDwCa2cGMLzrN6z8Fi1IQ9x4s0J7Snj9wz9hpoIj9B-dxmmf0qCPyDaIjWZHMIHWtwHLZ0aDlCP4iCZ3diM5vZodm7um-2jF6w6zX68XYbR7L0FagH585h5T4nBjExNwhOGkgOXA6AACiwc6zWbbuQwWfV4iDLf9y__mVSXyON338B" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj7P-HtV7ZYnjWXcgnDwCa2cGMLzrN6z8Fi1IQ9x4s0J7Snj9wz9hpoIj9B-dxmmf0qCPyDaIjWZHMIHWtwHLZ0aDlCP4iCZ3diM5vZodm7um-2jF6w6zX68XYbR7L0FagH585h5T4nBjExNwhOGkgOXA6AACiwc6zWbbuQwWfV4iDLf9y__mVSXyON338B=w600-h400" width="600" />
</a>
</div>
<p>The video signal was much clearer, but the character corruption was still there, and seemed to get worse the more you used it. I couldn't work out what was wrong, but it did seem to be otherwise working.</p>
<p>At the same time, I had designed another board, one which used dual port RAM to simplify things, and that one also just about worked, but seemed a better place to start from for what became the Minstrel 4th and later the Minstrel 4D - read about that here - <a href="http://blog.tynemouthsoftware.co.uk/2020/05/minstrel-goes-forth.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2020/05/minstrel-goes-forth.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhZtUPBpqcn8ugeFLH-ufjjkIYdUOe_R2LSMSxrL90gHdKyNQjWOd2aZ5VrPWwcFvzsFXPzSDbwtPj_iC1fCAumRYwy5-ppqf64Fhkoq19jok8slAx1RzVVmx8ewvo08vuSDXP-GavsxvkgNXfzqBIdCKPs1yfkEWllIJHdbyWM2DVRjmqZ3NrzYc6u9evi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3018" data-original-width="4024" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhZtUPBpqcn8ugeFLH-ufjjkIYdUOe_R2LSMSxrL90gHdKyNQjWOd2aZ5VrPWwcFvzsFXPzSDbwtPj_iC1fCAumRYwy5-ppqf64Fhkoq19jok8slAx1RzVVmx8ewvo08vuSDXP-GavsxvkgNXfzqBIdCKPs1yfkEWllIJHdbyWM2DVRjmqZ3NrzYc6u9evi=w600-h400" width="600" />
</a>
</div>
<p>I did return to the original board a few times. At seems at this point I had decided to call it JACK (Jupiter Ace Computer Kit). It seems I decided Minstrel 4th was a better name.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgHku-jshU9E3wzstpXcyEhnToBMNrDP8Q7CnKAdCEM2ksy_vaIj5Hucea_ldFKr1fFH1XLfV34P6TveJevhdd9T638NNDZXGu2dTFtgthgjiB7APG4afIFEOjcpjDC50nE-NjUN1G1CFFv-ubkdk8DZ2cWP0IbpBuMMdbjW4rtkIJ27mfBF95mepkRtpwR" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3392" data-original-width="4523" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgHku-jshU9E3wzstpXcyEhnToBMNrDP8Q7CnKAdCEM2ksy_vaIj5Hucea_ldFKr1fFH1XLfV34P6TveJevhdd9T638NNDZXGu2dTFtgthgjiB7APG4afIFEOjcpjDC50nE-NjUN1G1CFFv-ubkdk8DZ2cWP0IbpBuMMdbjW4rtkIJ27mfBF95mepkRtpwR=w600-h450" width="600" />
</a>
</div>
<p>I am not even sure what all this was trying to address, but it didn't seem to fix any problems.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjYQRauKDba9qS0bw4lPxcsXSUBxXkLWFrpTyYp_yZ8P0Ap2Mk4KCzTjGHULvWR0oihoRKwZwEQP4Voj3VBJZvGIbwnYY3wPmNjN6fK-OnCJyAThfwDOyD7xT3DwbE9RstHx8p11o0uuovX36mILikx_tW9NWcJHG9YbO6uv496aqKS-xeZvIxpsPt_hjJc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3270" data-original-width="4360" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjYQRauKDba9qS0bw4lPxcsXSUBxXkLWFrpTyYp_yZ8P0Ap2Mk4KCzTjGHULvWR0oihoRKwZwEQP4Voj3VBJZvGIbwnYY3wPmNjN6fK-OnCJyAThfwDOyD7xT3DwbE9RstHx8p11o0uuovX36mILikx_tW9NWcJHG9YbO6uv496aqKS-xeZvIxpsPt_hjJc=w600-h450" width="600" />
</a>
</div>
<p>Another few months later, I tried again. I noticed the clock signal was a bit weak, so I tried replacing the transistor based crystal oscillator with one made from two inverters, a more tried and tested solution. Yes, that is a bit of a cut up one of my RC2014 modules. <i>(I later found out that the weak clock was actually down to a bad gate on the 74LS86 that buffered the clock, when I tried to use that spare gate to invert the video)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgXICpkYzlLJlNhOcblVRhziqdrPBB53I0zNO8uZ5n2hcq5MRJDsKWeXphJ8jP6uR2Xf9iMPy8_zUe8h91cBoUIi6oQQGyJCgRYS-pfGGlw_qyM0GsD1btbGFT9MoNhifKNqZNJVhkxjP_QyH4hIR2B2pIsXW5_AVtAKbuYhYL8gksopIclB7UUArPvInPg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3372" data-original-width="4496" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgXICpkYzlLJlNhOcblVRhziqdrPBB53I0zNO8uZ5n2hcq5MRJDsKWeXphJ8jP6uR2Xf9iMPy8_zUe8h91cBoUIi6oQQGyJCgRYS-pfGGlw_qyM0GsD1btbGFT9MoNhifKNqZNJVhkxjP_QyH4hIR2B2pIsXW5_AVtAKbuYhYL8gksopIclB7UUArPvInPg=w600-h400" width="600" />
</a>
</div>
<p>That seemed to help, and with some of the other modifications, it had reached the point where it would start with a clear screen one reset out of three, but even when it was clear, you could run VLIST and all would look fine until it got to the bottom line and then bits of the screen would get corrupted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgLJqV3bAiZ2bGvJ6c3_SqQaAokacrHLBxICfmk40MjuYoP5CayBLXFLXpL6Pi0OIC3JHiIAurxSMvKN1KF0WbXOcgOJ4rk6kDjhWBN8j8489RD_Tm7r2fwjljHE1DaM7TDQefu0vHD8_Nzcc5I9fznn1cBMiIxxtxF6cJ8gLNT1Tl2zA-7FJuNxuOdZHrB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2070" data-original-width="2760" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgLJqV3bAiZ2bGvJ6c3_SqQaAokacrHLBxICfmk40MjuYoP5CayBLXFLXpL6Pi0OIC3JHiIAurxSMvKN1KF0WbXOcgOJ4rk6kDjhWBN8j8489RD_Tm7r2fwjljHE1DaM7TDQefu0vHD8_Nzcc5I9fznn1cBMiIxxtxF6cJ8gLNT1Tl2zA-7FJuNxuOdZHrB=w600-h400" width="600" />
</a>
</div>
<p>By this point, the Minstrel 4th was going well, so I put this away in a box again and forgot about it.</p>
<p>Roll forward to today, and it would be quite useful if I could get this to it to work, so back out of the box and onto the bench.</p><p>I removed most of the previous mods to go back to basically what was in the schematic, with the exception of the alternative oscillator and composite video buffer circuits.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh7KcPSNHGicOHpi-e3Eh6chKqzNeGR1XCRsef2eQRSn_4WmB8ZUBWDuzE2HO4mzkmNtbqOws0-DtzCmWK51pCdIUwc0zBn6uIwcWeUm968FgNbR08zzrkC4pmcJcX5bPULWcp8LzqwzrwENv5t5f_HCCfg-CuX_-Lzg85pXotuiuZCqP90bKJPos14Idi-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3256" data-original-width="4341" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh7KcPSNHGicOHpi-e3Eh6chKqzNeGR1XCRsef2eQRSn_4WmB8ZUBWDuzE2HO4mzkmNtbqOws0-DtzCmWK51pCdIUwc0zBn6uIwcWeUm968FgNbR08zzrkC4pmcJcX5bPULWcp8LzqwzrwENv5t5f_HCCfg-CuX_-Lzg85pXotuiuZCqP90bKJPos14Idi-=w600-h400" width="600" />
</a>
</div>
<p>I decided to analyse the problem further, now I have a better scope and a better logic analyser and what passes for a fresh pair of eyes.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEilPfDtW0I12oS_F-E2uG0_vFy9LPFwqKlCiucD8g_QUg8XlztE-QN_oOSpf3hZjeFMR9nEymjtqR31Lirz9wz5jlvT35TSX-5JdWil1CUR5xVxqvk1rYDID1nQZyWtDLQmolRM81OiAf5zz5MC2FikZSiwjbVBaMNrAGEA1lPom1ek-z-gE5oeGn9LiBr2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3400" data-original-width="4533" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEilPfDtW0I12oS_F-E2uG0_vFy9LPFwqKlCiucD8g_QUg8XlztE-QN_oOSpf3hZjeFMR9nEymjtqR31Lirz9wz5jlvT35TSX-5JdWil1CUR5xVxqvk1rYDID1nQZyWtDLQmolRM81OiAf5zz5MC2FikZSiwjbVBaMNrAGEA1lPom1ek-z-gE5oeGn9LiBr2=w600-h400" width="600" />
</a>
</div>
<p>My initial thought was that there were unintentional writes happening to the two video RAM chips, so I probed those and looked out for anything unusual.</p>
<p>Because of the way the video system works (see the future blog post), the video RAM and character RAM are both enabled most of the time as they are generating the video signal.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjxto4t0lCQ9cdFoK4R8uvEImbmbQkl_Bei_q-A7wk1T8uGUpkgqVRJEMrtxhevLnTD47vchLAm0g2jqeMvnGlmiwGM8kGvqUHHtZfAasUOxpX9c8_ff8V3BQlpq3Dwh_pQJ34mNxZPq_bDeqJUO4os326P4XTa-cboR7kvr83_EBsumXc70tp6qSkhG4gc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="412" data-original-width="549" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjxto4t0lCQ9cdFoK4R8uvEImbmbQkl_Bei_q-A7wk1T8uGUpkgqVRJEMrtxhevLnTD47vchLAm0g2jqeMvnGlmiwGM8kGvqUHHtZfAasUOxpX9c8_ff8V3BQlpq3Dwh_pQJ34mNxZPq_bDeqJUO4os326P4XTa-cboR7kvr83_EBsumXc70tp6qSkhG4gc=w600-h400" width="600" />
</a>
</div>
<p>I did see occasional glitches in the chip enable signals. Very short and only a single sample wide when scanning at 50MHz. But the edge that creates could be enough to trigger a write cycle in the RAM chip, if they occurred when write was low.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgS39FYlxjX29PskYrb065xOxg1uMfPBLx0xv2wzp5q8FD9wpxferEunLOlxMNWmHvTjlkfQyfJ8nje3Vjtl_Poyp6bwq2Ozv49iyBLca2sdw5WzehOIBJqJMaYR9mfDLWMw9kDKLY7WODzZMWSEEgqwgh_toMr34YPc_gcqhgokEQlvT2OR_4cyPkPVeVH" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="430" data-original-width="573" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgS39FYlxjX29PskYrb065xOxg1uMfPBLx0xv2wzp5q8FD9wpxferEunLOlxMNWmHvTjlkfQyfJ8nje3Vjtl_Poyp6bwq2Ozv49iyBLca2sdw5WzehOIBJqJMaYR9mfDLWMw9kDKLY7WODzZMWSEEgqwgh_toMr34YPc_gcqhgokEQlvT2OR_4cyPkPVeVH=w600-h400" width="600" />
</a>
</div>
<p>Ah, there you are, that would trigger an unwanted video RAM write cycle, and would explain the corruption.</p>
<p>That probably wasn't an issue with the slower 2114 SRAM chips originally used, but because the modern 71256 chips I used here were a lot faster, they were treating those glitches as edges and getting corrupted.</p>
<p>Those signals are produced from an assortment of logic gates and a slightly strange loop around buffer based delay.</p>
<p>I decided I wouldn't change any of those, since this was just due to faster RAM, I tried to fix it just before the signal gets to the RAM chips. I tried gating the write signal with the 6.5MHz clock, that moved the write pulses away from the jagged edge where the occasional glitches were occurring. It does mean multiple write pulses, but I don't think that will be a problem. I could maybe use the 3.25MHz clock, but this seems to work nicely as is.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhiz_lhZQHy8tEM4v5Ymhl2cIqpqu5AqQuNUT2kkItVr1edskYugs3BiPE50Uod5KszO2NYVb3hb3Net8dy4SwzbS0g3Htze-d-E2Qb3owkgQz3HXKtT0crcR10knrkgqbXwzf3pb-lZ__OJwYC6AwkXh3ZLw_Ug0T-RbxJJJgcMg1QHZpCL05s_sqzwjtB" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhiz_lhZQHy8tEM4v5Ymhl2cIqpqu5AqQuNUT2kkItVr1edskYugs3BiPE50Uod5KszO2NYVb3hb3Net8dy4SwzbS0g3Htze-d-E2Qb3owkgQz3HXKtT0crcR10knrkgqbXwzf3pb-lZ__OJwYC6AwkXh3ZLw_Ug0T-RbxJJJgcMg1QHZpCL05s_sqzwjtB=w600-h400" width="600" />
</a>
</div>
<p>It did mean one more chip was required, but I used a 74LS00, and if I was to do another spin of the board, a single 74LS00 could do both the crystal oscillator, clock buffer and the clock gating of the video RAM write pulse, keeping all the 6.5MHz signals in one place. <i>(would anyone be interested if I was to do another revision of this board to fix the various issues and make it available as a kit?)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiQO-y1sdLPeeqdhK6B0FifFaHvJ55wI-AH6yVYWeWXge9bn3iwgCoRgWrCrBjgDXrnjx6f5b9Dyk7uRka-SITFNs80Uji9El0S61jnWDertDiKI7MF-d802o1LNG-Jd7PFaKZ8xuqI-UztALciyL_qwUY3JD70XoVd2pItOV6iQkPokE8_FGbAUeJw1qR-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiQO-y1sdLPeeqdhK6B0FifFaHvJ55wI-AH6yVYWeWXge9bn3iwgCoRgWrCrBjgDXrnjx6f5b9Dyk7uRka-SITFNs80Uji9El0S61jnWDertDiKI7MF-d802o1LNG-Jd7PFaKZ8xuqI-UztALciyL_qwUY3JD70XoVd2pItOV6iQkPokE8_FGbAUeJw1qR-=w600-h400" width="600" />
</a>
</div>
<p>Even with the output buffer changed to the circuit I used on the other Minstrels, the video output of this circuit is still not great. It has no back porch to set the black level, but the screen is all black, so it just needs good strong white peaks, but the 74LS series logic never really generates those, so the screen is a bit grey and washed out. I probably need to tweak the resistor values in the buffer circuit to get the levels better.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgxks0BtBgCZAbcSYhJy90FWY7s-J7_HxMWrY2Flu-bL24LFDwnBopeG6DEFiovyzDh6OQRViWOenfy-Q41tbs7rBZRjNi8nDmkqZ0ObzBb1GN064cw4T9zbQR4nco0qytxaFIwp923DfHyO9R6md5mT5RMCeHL-7hUXK0fQLZJNwey-3QOUIC1Jah9ghdq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="384" src="https://blogger.googleusercontent.com/img/a/AVvXsEgxks0BtBgCZAbcSYhJy90FWY7s-J7_HxMWrY2Flu-bL24LFDwnBopeG6DEFiovyzDh6OQRViWOenfy-Q41tbs7rBZRjNi8nDmkqZ0ObzBb1GN064cw4T9zbQR4nco0qytxaFIwp923DfHyO9R6md5mT5RMCeHL-7hUXK0fQLZJNwey-3QOUIC1Jah9ghdq=w640-h384" width="600" />
</a>
</div>
<p>Ideally I would also add a back porch generation circuit to make it more correct, and maybe switch over the 74HC or 74HCT logic, but this is good enough for the moment.</p><p>And there you go, perfect vlist with no corruption.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgfNX89f3LXt6bPChoBqjxO4Q1ERScEuNYADmc-hxnoBkx8onEWR02pVr-fTT5u0RGF180LTEBsB8-NlXQvJWalC6diwa2FNQS3roznEhATsWwvjLzpJjQShpA_Z9L5l1alnph-ErLdaU7AEmsSXjfE6ft6SKWUbem29lAnm-cDZ5FTHk5_r601lPq6sY-g" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2541" data-original-width="3388" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgfNX89f3LXt6bPChoBqjxO4Q1ERScEuNYADmc-hxnoBkx8onEWR02pVr-fTT5u0RGF180LTEBsB8-NlXQvJWalC6diwa2FNQS3roznEhATsWwvjLzpJjQShpA_Z9L5l1alnph-ErLdaU7AEmsSXjfE6ft6SKWUbem29lAnm-cDZ5FTHk5_r601lPq6sY-g=w600-h400" width="600" />
</a>
</div>
<p>The 16K expansion is working with the top of RAM showing as 32K, and all the character set seems to be printing correctly with no corruption.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiOBjo2YZiH1RlaKZKjRxHPM2R_9u-fO8FiRJNmNNunr2OUtBLkCKNyX2qEucdA32dfDb7IEJ84r5XSz8qGemjWxkmRnwCV6iNz6OS-VHHekJgeiApHlDDWjdSq0JpZEt2azWpJb4n5TLCI7TkwqIAq-zgFt7RdLCodLiGwN3At1cLc9adY2MyrfcxfLnIo" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3114" data-original-width="4152" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiOBjo2YZiH1RlaKZKjRxHPM2R_9u-fO8FiRJNmNNunr2OUtBLkCKNyX2qEucdA32dfDb7IEJ84r5XSz8qGemjWxkmRnwCV6iNz6OS-VHHekJgeiApHlDDWjdSq0JpZEt2azWpJb4n5TLCI7TkwqIAq-zgFt7RdLCodLiGwN3At1cLc9adY2MyrfcxfLnIo=w600-h400" width="600" />
</a>
</div>
<p>I did not have much luck loading programs from cassette, as seems typical with the Jupiter Ace, so in the end I just wired up the ear input to the mic output of a Minstrel 4D.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZMhWi4WQr210H2qnHtJAK210MiDNlrJNTaoDl0P-qxE_ffCMKlMz8R7XGLHJcUlGDXD5bFKmQEa1K-4jzE8YM74kElLKuKkJMRQRuRuMdTSvksbs-cmEGojAU4W6l2uTJSLL16cjLcO33HHTkMdrrop70ozn5rkKoXe4yr0WtpU9GD_BcmXNPBwWn3gk-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZMhWi4WQr210H2qnHtJAK210MiDNlrJNTaoDl0P-qxE_ffCMKlMz8R7XGLHJcUlGDXD5bFKmQEa1K-4jzE8YM74kElLKuKkJMRQRuRuMdTSvksbs-cmEGojAU4W6l2uTJSLL16cjLcO33HHTkMdrrop70ozn5rkKoXe4yr0WtpU9GD_BcmXNPBwWn3gk-=w600-h400" width="600" />
</a>
</div>
<p>I loaded the built-in Tut Tut on the 4D and then typed save TUTTUT on there and load TUTTUT on the Jupiter Ace clone and it loaded first time.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiKiPUt2q1GAsPULVdFjWcN1e825TLvuSmGdsiCl84Vc0bSUy3nz6gxUnbIUQqvLCBvTBDbHZYMmvK5tTh8-SCpBtDQWulCtjkzR63NoVHT6THW32gRuCMVxt49tuYf7ijemcjh1it_kX2B8z0PgKtk5HuK2d-_lyrQwirnwJhE_k1mrQLfjBjcjfphIvzy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2144" data-original-width="2859" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiKiPUt2q1GAsPULVdFjWcN1e825TLvuSmGdsiCl84Vc0bSUy3nz6gxUnbIUQqvLCBvTBDbHZYMmvK5tTh8-SCpBtDQWulCtjkzR63NoVHT6THW32gRuCMVxt49tuYf7ijemcjh1it_kX2B8z0PgKtk5HuK2d-_lyrQwirnwJhE_k1mrQLfjBjcjfphIvzy=w600-h400" width="600" />
</a>
</div>
<p>This is a good test as it modifies the character set.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh3ZJJqK1llHfsVizwxs7p2t09i3ohUQOjPTPLJy-qMrzgM0wum4V0vkWPCuCdTmftp1Jichy5HKXRalJ69NJricNFQp3jV5QS3t1-6H9_gyCNMFrDT2xsEIzUwPOeDCxeP5d5MlaHymaRgH4PknhSDeaE7yhDovnm-P8RTvSn1L9-ClGRV1NchdTH99LXx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2408" data-original-width="3211" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh3ZJJqK1llHfsVizwxs7p2t09i3ohUQOjPTPLJy-qMrzgM0wum4V0vkWPCuCdTmftp1Jichy5HKXRalJ69NJricNFQp3jV5QS3t1-6H9_gyCNMFrDT2xsEIzUwPOeDCxeP5d5MlaHymaRgH4PknhSDeaE7yhDovnm-P8RTvSn1L9-ClGRV1NchdTH99LXx=w600-h400" width="600" />
</a>
</div>
<p>That all looks good.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEir_Xq3R-lOvPf169mAOcElHugbDzpbaI0FsJWr39HokIGFFblQhmOnnxdg0wpvavaaosqf2ndq2lpXaDIDWmxz-c_7dpEf5w5hlqAEMXd73cEmvAyUVQimAXmzD14vlK7mcMR6qMBFnk2LMRl8A2pbdB1JPIVAdmV301PFgTGYelz7OteaddDrYghGaGpU" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2488" data-original-width="3317" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEir_Xq3R-lOvPf169mAOcElHugbDzpbaI0FsJWr39HokIGFFblQhmOnnxdg0wpvavaaosqf2ndq2lpXaDIDWmxz-c_7dpEf5w5hlqAEMXd73cEmvAyUVQimAXmzD14vlK7mcMR6qMBFnk2LMRl8A2pbdB1JPIVAdmV301PFgTGYelz7OteaddDrYghGaGpU=w600-h400" width="600" />
</a>
</div>
<p>I always like to play out at least the first level.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6_oimk_IoyXP5Ql0tnWhdLzZTnXydLbrYv7NQXun6xfYlEyCzW5nLECk8b_ax4tW6Y7m_iReo7OoGn068X8tQ8WcRQgv6q7gccTIH8cLQFZlb-GTnlq9amzMYDhhnL6I3kxJJ7J54nfYu12ufZYSy-ycZXZWqWEysoNgYzO93WOgQ5lqRUgT34CURqQAe" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2392" data-original-width="3189" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6_oimk_IoyXP5Ql0tnWhdLzZTnXydLbrYv7NQXun6xfYlEyCzW5nLECk8b_ax4tW6Y7m_iReo7OoGn068X8tQ8WcRQgv6q7gccTIH8cLQFZlb-GTnlq9amzMYDhhnL6I3kxJJ7J54nfYu12ufZYSy-ycZXZWqWEysoNgYzO93WOgQ5lqRUgT34CURqQAe=w600-h400" width="600" />
</a>
</div>
<p>All good apart from the sound not working, the speaker is just clicking. I will need to have a look at that, I think it was working, so was maybe damaged when I cleaned the board with IPA. The video side of things is all working which was my main aim, and all I need for now.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3igxx63goirOz_oFtxlQRTLEHQMrqNbIudQ19EI0WDbocYNDz52mYT_4A6L4TGIe_fuCXIjZek3Ic8XRSTU1KGye5vssHMcOu3tRoDh0l4yLI95uZR6mOiJf6TmcfTZIJDBld62dexns3nFxulYzdm4cS1r_N04tftv4F8IRGbe8yoVdEQkpLYhzuF2uw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2616" data-original-width="3488" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3igxx63goirOz_oFtxlQRTLEHQMrqNbIudQ19EI0WDbocYNDz52mYT_4A6L4TGIe_fuCXIjZek3Ic8XRSTU1KGye5vssHMcOu3tRoDh0l4yLI95uZR6mOiJf6TmcfTZIJDBld62dexns3nFxulYzdm4cS1r_N04tftv4F8IRGbe8yoVdEQkpLYhzuF2uw=w600-h400" width="600" />
</a>
</div>
<p><i>Why didn't I wire the ear input to the signal out of the microcontroller on the 4D, then you could have loaded things more easily? Ah well (as I found out after trying that a few too many times before I realised), it always loads in turbo mode, and of course the Ace clone doesn't have a turbo, so has to load at slow speed.</i></p><p>I am not used to running the Ace in it's normal colour scheme. I normally chose black text, white background on the Minstrel 4D. Makes it a sort of "3D Monster maze: Night vision edition".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgxEnNo_3CxBjRjr2ZoGhNwN_Ei4cZIUr41gTNo_7BaUqaBl79I6myVCvHKUpNxztYEZOiVAh-Kb70h9pvs9BhoxtBMv7JSNj2aEpDqd9P0GTUzfIwEcIORfBg5MKmktzPKxBmez9GuI8TCb7uLv9a3l7Or3xcLJkHc6oax2fpEVUKNe7PxYHIpX0Lxs9_m" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgxEnNo_3CxBjRjr2ZoGhNwN_Ei4cZIUr41gTNo_7BaUqaBl79I6myVCvHKUpNxztYEZOiVAh-Kb70h9pvs9BhoxtBMv7JSNj2aEpDqd9P0GTUzfIwEcIORfBg5MKmktzPKxBmez9GuI8TCb7uLv9a3l7Or3xcLJkHc6oax2fpEVUKNe7PxYHIpX0Lxs9_m=w600-h450" width="600" />
</a>
</div>
<p>That also highlights a mistake I made with the keyboard overlays. The up / down / left / right keys are on 5, 6, 7 and 8, the same as the ZX81 etc. But, for reasons best known to themselves, 6 and 7, down and up are reversed. I didn't have a working Jupiter Ace at the time I did those, so I didn't realise, and left the arrow graphics as they had been on the ZX80, which is wrong.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjE0N0u-9TdJ3nTXfCpJr0XB-Jsw5k2vSrs_JIeSNmkB0Txr9wOsxInhzyKmqtuJMwASDa5pZNQE_sRbzRwhESVxKtQ4XIjFlgog2uE1WiHwh7jTg-E-dWLAVi8-dcJ8vuXYA14ypmEPHWR_iEsPXc1Eg_w-i_pbrDaScKUaxzp1Fq6VCIDr4xFVrPvNz0L" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1947" data-original-width="2596" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjE0N0u-9TdJ3nTXfCpJr0XB-Jsw5k2vSrs_JIeSNmkB0Txr9wOsxInhzyKmqtuJMwASDa5pZNQE_sRbzRwhESVxKtQ4XIjFlgog2uE1WiHwh7jTg-E-dWLAVi8-dcJ8vuXYA14ypmEPHWR_iEsPXc1Eg_w-i_pbrDaScKUaxzp1Fq6VCIDr4xFVrPvNz0L=w600-h450" width="600" />
</a>
</div>
<p>I still managed to find the exit in the end though.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg2d-JoIxdm-_zGV7KLG_B8h1HuS0d8yHiZ9F8tLVfNsjM16u8bSSdAiOeeQdcn91LlyLWjRrBdoPuumbu31jZ1AOR6mZpK5rXEn95GmRGR_KFetoDKe0D58AgNWZy11NkVq2fCNzcNDfato3GplfOQ-TzrQ5mvVpZ2BKPbLtgJ3wX5MX1-4tg_DRa9-c1R" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2406" data-original-width="3208" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg2d-JoIxdm-_zGV7KLG_B8h1HuS0d8yHiZ9F8tLVfNsjM16u8bSSdAiOeeQdcn91LlyLWjRrBdoPuumbu31jZ1AOR6mZpK5rXEn95GmRGR_KFetoDKe0D58AgNWZy11NkVq2fCNzcNDfato3GplfOQ-TzrQ5mvVpZ2BKPbLtgJ3wX5MX1-4tg_DRa9-c1R=w600-h450" width="600" />
</a>
</div>
<p>Look out for the "How the Jupiter Ace Generates Video" post coming soon.</p>
<hr />
<h2>Advertisements</h2>
<h2>Minstrel 4D</h2>
<p>The Minstrel 4D is a much more reliable and usable Jupiter Ace compatible computer, with all the extras like a joystick interface, SD card loader, RC2014 expansion bus etc. Available in kit and built form from The Future Was 8 bit.</p>
<p>
<a href="https://tfw8b.com/product/minstrel-4d-turbo-jupiter-ace-compatible-computer-kit/" rel="nofollow" target="_blank">https://tfw8b.com/product/minstrel-4d-turbo-jupiter-ace-compatible-computer-kit/</a>
</p>
<p>More info in a previous post:</p>
<p>
<a href="http://blog.tynemouthsoftware.co.uk/2022/08/minstrel-4d-overview.html" rel="nofollow" target="_blank"> http://blog.tynemouthsoftware.co.uk/2022/08/minstrel-4d-overview.html</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEghCggT7qdtFYXbyAWVOAVAkbg7r0VKyjXnTvHjFa-OHoSxC5U0RR05jXIdGPUzlOCQfULj6L0GE4RFpi_yQFoeYmYwAhLCLJ30KWEm7B0g442EpDsu0flXUqAN5nm2eHdrWmVC8cTYhPtVxVjKGLBaKUd-lCr2lDbNVWe2_9xUqHtlUenv0xwlLjzgOw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3450" data-original-width="4600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEghCggT7qdtFYXbyAWVOAVAkbg7r0VKyjXnTvHjFa-OHoSxC5U0RR05jXIdGPUzlOCQfULj6L0GE4RFpi_yQFoeYmYwAhLCLJ30KWEm7B0g442EpDsu0flXUqAN5nm2eHdrWmVC8cTYhPtVxVjKGLBaKUd-lCr2lDbNVWe2_9xUqHtlUenv0xwlLjzgOw=w600-h450" width="600" />
</a>
</div>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and Patreon is currently getting a lot development logs on a new project at the moment. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-64358009904550910982023-11-05T12:22:00.004+00:002024-02-18T11:57:53.780+00:00PET 8032 Repair<p>I don't normally write up most of the Commodore PET repairs I do, because they generally follow the same patterns of RAM faults, ROM faults, and occasionally a bad CRTC. Sometimes all three.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjaB3QkGvLAhkgNUWwT3ze3KPGXHV9sHnFwz_jZsviX2zAvLgz1uh4VA5lMa0xv7LJHbuNIIBKkv44fswxmbBGqMAUp4Fvk5vnKRX1zEAN3au16HN6X6C6vGHwqJafaqYnmAiX3jJQU6SCW5z1kN1sES8X7cNohE8f-jXyEnXb8oARqOxRnDFkAR7sY7Q" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3420" data-original-width="4560" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjaB3QkGvLAhkgNUWwT3ze3KPGXHV9sHnFwz_jZsviX2zAvLgz1uh4VA5lMa0xv7LJHbuNIIBKkv44fswxmbBGqMAUp4Fvk5vnKRX1zEAN3au16HN6X6C6vGHwqJafaqYnmAiX3jJQU6SCW5z1kN1sES8X7cNohE8f-jXyEnXb8oARqOxRnDFkAR7sY7Q=w600-h450" width="600" />
</a>
</div>
<p>As you might have guessed, this is not one of those.</p>
<p>I think I need a disclaimer.</p>
<blockquote>
<i>These posts are not troubleshooting guides. They are documentation of the process I went through to fix a specific fault. They are unlikely to help in your case unless your fault has the exact same cause (<b>not</b> the exact same symptoms). If your PET is dead, it is most likely a ROM or RAM fault (or both). Get yourself a <a href="https://www.tfw8b.com/product/commodore-pet-rom-ram/" rel="nofollow" target="_blank">PET ROM/RAM board</a> that will probably fix it. If it is a later 4032 or 8032, maybe the 6545 CRTC will also be bad, but still likely a ROM or RAM fault.</i>
</blockquote>
<p>This board shows all the hallmarks of a dead 8032, no video output, no chirp. On these machines, video is generated by a 6545 CRTC chip. This needs to be initialised correctly to generate video output. If the CPU does not get to the stage of running the setup code, then you don't get a video output. Sometimes you do get a chirp, this usually means the CPU has got that far, but the CRTC chip is not working, or something is stopping it from hearing the setup commands.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi-h1kG5Td6-uS8wDzeV9fAkqvRv_BgbivrwjXADFs_cn-OjhVcEzA50TwXp8gM8nksaxlARQw8NjA5ZE5vkVAZOe9LkRtBAihXqkGUcpSBKzRLYXri84TwUTr06_YGdw7H-tfRk19LxpenwaKLS-7YxU950GmPJchfrtebsShXl5PzDzVrdKjuqe02zg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3232" data-original-width="4309" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi-h1kG5Td6-uS8wDzeV9fAkqvRv_BgbivrwjXADFs_cn-OjhVcEzA50TwXp8gM8nksaxlARQw8NjA5ZE5vkVAZOe9LkRtBAihXqkGUcpSBKzRLYXri84TwUTr06_YGdw7H-tfRk19LxpenwaKLS-7YxU950GmPJchfrtebsShXl5PzDzVrdKjuqe02zg=w600-h450" width="600" />
</a>
</div>
<p>Here it looks like this board has already been through the 6545 failure as the 6545 has been replaced by a 6845. That is functionally compatible, and I think has some extra features that the 6545 doesn't.</p>
<p>Looks like the 6522 has also been replaced, in this case with an RS part number painted on the top. They are probably out of stock of those now.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgk7MbjaCrj-3g_otPI2SblFxB0yJ5Ws00nJCSTYLoQ4b319nX8MNrMp1ZfDp-Y6zlf6QtOFYoIr-E21KvoPastSOd6wvtCtHdf4LuPiDTZnCHVpAVaRqoO9LHcfP2amAs375W4u_89Eq09J1pEbPId-nblyGvZyESFx2pE_Zl6w0vZwiy0fpcQcjndLQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2802" data-original-width="3736" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgk7MbjaCrj-3g_otPI2SblFxB0yJ5Ws00nJCSTYLoQ4b319nX8MNrMp1ZfDp-Y6zlf6QtOFYoIr-E21KvoPastSOd6wvtCtHdf4LuPiDTZnCHVpAVaRqoO9LHcfP2amAs375W4u_89Eq09J1pEbPId-nblyGvZyESFx2pE_Zl6w0vZwiy0fpcQcjndLQ=w600-h450" width="600" />
</a>
</div>
<p>To get around the video issue, I removed the five 40 pin chips and fitted a known good 6545 and a PET diagnostics module. That will do the setup of the video chip and should generate a display.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhqlYwcvQg3AJqjQqeHJ0yQTfrAYJe7mTsM4keRG6wrtRopaHmMGpj-3hUIGg2UOtFtIB1yv7mHbWe8tIhHADDi-ncL4wUBjEYBhXgl3LdOkxLNJWkioGhKORUKzVwAhyut5rsMSuKR5KslevZF89ltxsvyGbRUQDNdr2-37Y4478hJTOTc4VTmVJizwg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhqlYwcvQg3AJqjQqeHJ0yQTfrAYJe7mTsM4keRG6wrtRopaHmMGpj-3hUIGg2UOtFtIB1yv7mHbWe8tIhHADDi-ncL4wUBjEYBhXgl3LdOkxLNJWkioGhKORUKzVwAhyut5rsMSuKR5KslevZF89ltxsvyGbRUQDNdr2-37Y4478hJTOTc4VTmVJizwg=w600-h450" width="600" />
</a>
</div>
<p>OK, sort of progress, there is no a display, but not a good one.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEilsHCTucg4-rGXH5Jnr-GHcsm1J2DIBUcRAX3hx0jqjcjEsVyofeboRFWQRGGw_6J3Gi2rE2DJA9Wd4gkhSaNwS7NLBikO7MbaQY7vTuX83P31pXS6f4a2i3_G3K-SxS21w-v_1SOUrGjHnd9K2DhK7GMgMY_W5jEjbNS8X496L9qsyYV8HwxLZC_7Fg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3186" data-original-width="4248" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEilsHCTucg4-rGXH5Jnr-GHcsm1J2DIBUcRAX3hx0jqjcjEsVyofeboRFWQRGGw_6J3Gi2rE2DJA9Wd4gkhSaNwS7NLBikO7MbaQY7vTuX83P31pXS6f4a2i3_G3K-SxS21w-v_1SOUrGjHnd9K2DhK7GMgMY_W5jEjbNS8X496L9qsyYV8HwxLZC_7Fg=w600-h450" width="600" />
</a>
</div>
<p><b>Note 1</b> - It may look like it, but this is not a vertical sync failure, it's presumably misheard the instructions and set a very short page size.</p>
<p><b>Note 2</b> - I am incapable of taking decent pictures of the PET CRT. Get used to it. It's not going to get any better.</p>
<p>Checking the databus, you can see why it might get confused, rather than nice clean one and zeros of 5V and 0V, this is a mismash of fractions, with bits of signals at 1 and 2 volts.</p><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;"><i>I would like to have included a scope trace at this point, but I don't like running machines too long with active bus conflicts, so I didn't get any pictures that were good enough.</i></p></blockquote>
<p>This is indicative of bus conflicts, and usually means several things are writing to the bus at the same time. This seems to happen a lot of the 6540-xx ROM chips and 6550 RAM chips used in the original PET, but less so with the later mask ROMs used on these machines.</p>
<p>The ROMs are all socketed, so time to remove them, in case it is one of those to blame.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjHeENimFaO29ECt6ZDU7wpGB7mHR1gOG9A68hG5WNKqpiJpkS-WEf6F2iR3V_NGElYVTeRZxVIipoNBGwa1RhTe2KBnAsgWWWPzi_SQpbV8hf8-j_Mm_I0yMezYGOvxiZE8DWBaojNfCB3apfv428HHfZytq977pg9VqkzHZ4Kao4iMbvv6Rl7ecUFgg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjHeENimFaO29ECt6ZDU7wpGB7mHR1gOG9A68hG5WNKqpiJpkS-WEf6F2iR3V_NGElYVTeRZxVIipoNBGwa1RhTe2KBnAsgWWWPzi_SQpbV8hf8-j_Mm_I0yMezYGOvxiZE8DWBaojNfCB3apfv428HHfZytq977pg9VqkzHZ4Kao4iMbvv6Rl7ecUFgg=w600-h450" width="600" />
</a>
</div>
<p>That is better, now there is a full screen, but it's a full screen of rubbish.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6HcJA-RpLU-AGaNwbcbg-7859qqeDcM9OszXqHGDnT4W6-1KRi4jJSxWz8OGtXcuSrPpIvwZXI2G7fIZ2IF8oPBsFvy3JPQn-7pNuWS7n3SXFxG0FIODNBs1RKk9whw2Ae9BFUkb2tNDw550cFRS52f5XYLo-l9ENJfyC7EcXnqAkyGMu1noqC0aauw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3192" data-original-width="4256" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6HcJA-RpLU-AGaNwbcbg-7859qqeDcM9OszXqHGDnT4W6-1KRi4jJSxWz8OGtXcuSrPpIvwZXI2G7fIZ2IF8oPBsFvy3JPQn-7pNuWS7n3SXFxG0FIODNBs1RKk9whw2Ae9BFUkb2tNDw550cFRS52f5XYLo-l9ENJfyC7EcXnqAkyGMu1noqC0aauw=w600-h450" width="600" />
</a>
</div>
<p>Time to do some poking around with the scope.</p>
<p>The address lines are all wiggling around as they should be, in all the appropriate places. Due to the amount of chips on the PET board, these are buffered in a few places due to the limited number of chips the buffer chips of that era could drive. Fan out is barely an issue these days with HC logic chips that can drive a seemingly unlimited number of chips.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjT1RPDrc-0sNleTVyf6KQ23lMTXVIwTO0C7PDZ35DPvMALRW-_onmOxxTaR-8zcF68Wy739jvXDbVf0BTPh1kHt1x_cf78DBWcc8xsGoQwQeM75k_kzV2qBgVdBcRXwW4LVUzA5D7x6oxFMQDx5JCtyuwr3ZCEdK85fwZjU0kvwJCQIByrMZeLv1SDcA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1347" data-original-width="2691" height="300" src="https://blogger.googleusercontent.com/img/a/AVvXsEjT1RPDrc-0sNleTVyf6KQ23lMTXVIwTO0C7PDZ35DPvMALRW-_onmOxxTaR-8zcF68Wy739jvXDbVf0BTPh1kHt1x_cf78DBWcc8xsGoQwQeM75k_kzV2qBgVdBcRXwW4LVUzA5D7x6oxFMQDx5JCtyuwr3ZCEdK85fwZjU0kvwJCQIByrMZeLv1SDcA=w600-h300" width="600" />
</a>
</div>
<p>Pin 20 on all the ROM chips was doing odd things. These are the enable lines, and should all be high apart from the one currently selected.</p>
<p>But they are not.</p>
<p>All of those are generated by the 74154 4-16 line decoder chip. This takes the top 4 address lines and generates 16 enables signals, one for each 4K block in memory. These are active low, so should normally be high with just one of them low, indicating the block currently selected.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgThFFcq9Ydo-BJX6N2lnTz9npOb1ME_mr68gXYHPSOfmX-FRJUUjLBHsa0-teHjDrMJcEsN7-0wvs3-4Zs6gTWYwIXu6lyA3rJsFRC748SE3dw51whkFDbuyMTZkIgOdD9e34u5WTDdqJFvSjwm1f3oG-2jljbGsv1RjV494t2RkSzfrLDT6waMClB3A" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="560" data-original-width="958" height="374" src="https://blogger.googleusercontent.com/img/a/AVvXsEgThFFcq9Ydo-BJX6N2lnTz9npOb1ME_mr68gXYHPSOfmX-FRJUUjLBHsa0-teHjDrMJcEsN7-0wvs3-4Zs6gTWYwIXu6lyA3rJsFRC748SE3dw51whkFDbuyMTZkIgOdD9e34u5WTDdqJFvSjwm1f3oG-2jljbGsv1RjV494t2RkSzfrLDT6waMClB3A=w600-h350" width="600" />
</a>
</div>
<p>Probing that directly, it's clear that some are high as they should be, but several are low, and a few are floating. Hmm, that's not good.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiFbEjfqBgHpe-tV31wY-ZcEKzUceiAHrrGjuYf4N5BjDJXhaU8C9OAvzh6YrONWVRS7ilCKhVh-hR0y5WMXaJYtKZgZOZeSNwXqxInVj6RVBuEZKGjH3LVYjleYkPP7_Ls-IzySztCpyyPVXwz2Wwzt4r2eo1ZYCUPao4_d0GazIcwGtGetFzft_V7hw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiFbEjfqBgHpe-tV31wY-ZcEKzUceiAHrrGjuYf4N5BjDJXhaU8C9OAvzh6YrONWVRS7ilCKhVh-hR0y5WMXaJYtKZgZOZeSNwXqxInVj6RVBuEZKGjH3LVYjleYkPP7_Ls-IzySztCpyyPVXwz2Wwzt4r2eo1ZYCUPao4_d0GazIcwGtGetFzft_V7hw=w600-h450" width="600" />
</a>
</div>
<p>The chip fitted is actually a Mitsubishi M53354P, but I guess that's a compatible part.</p>
<p>That looks a bit crusty, as do several of the chips around it. It is near what would have been a slot in the case, so is where moisture could most easily attack the board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjLC2mXNDH9ZGuCxnZSivx52mDvOQsbdyO8lsFulyOF9-jZmNIST26LMnDwGEPRDKuVNFI4VIlSxTJ6vvGLMft5HDrBRtcm4NrbsOH0KxXJsPsMM7zWmV-W0qkmHIhfWyvpR6h8YUc8Pk86VOPp50XDV2eveZnCnKJnx_110ZWcHM3b5lsG_gOD6WoKTw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjLC2mXNDH9ZGuCxnZSivx52mDvOQsbdyO8lsFulyOF9-jZmNIST26LMnDwGEPRDKuVNFI4VIlSxTJ6vvGLMft5HDrBRtcm4NrbsOH0KxXJsPsMM7zWmV-W0qkmHIhfWyvpR6h8YUc8Pk86VOPp50XDV2eveZnCnKJnx_110ZWcHM3b5lsG_gOD6WoKTw=w600-h450" width="600" />
</a>
</div>
<p>Even after a bit of a clean up, the legs of the 74LS10 look the worst hit, so time to remove that and the 74154 (or whatever that Mitsubishi part number was).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj2EmWxBcSG4GR9K2g9RJkleSMZrREtSts72kdwQNS_lsivplU6kc2PJQRyRcEB8xBh37g4UnOqs2KAfFKahX_TbxmkiSyfddYNlpjSDpmAD1U0vof-_DafpHHGAVChRaoO6Vy3YpS3sZ11EQL62mllZwG12BgnjyGwR1lolmnA2WmIGagAqysZ47xl9Q" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj2EmWxBcSG4GR9K2g9RJkleSMZrREtSts72kdwQNS_lsivplU6kc2PJQRyRcEB8xBh37g4UnOqs2KAfFKahX_TbxmkiSyfddYNlpjSDpmAD1U0vof-_DafpHHGAVChRaoO6Vy3YpS3sZ11EQL62mllZwG12BgnjyGwR1lolmnA2WmIGagAqysZ47xl9Q=w600-h450" width="600" />
</a>
</div>
<p>The traces around the 74154 look intact, but one of the traces to the 74LS10 was corroded through, so will need to be repaired (pin 11, middle top).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi4Eg7Z77jCwIZeBSl-PXbV1KEomtaaaqNkq3u-z_UE0l6cTNplFByz5HxLbNDCvHARdVgtTXNqTw16OwsdfOkZJ7gajgtPUA5qsxWVO8_4gof9-kzv8q8pzWJW-_AMgfS2Jsp4eskQBGy3Vi7n3pwe8g6SvknTnkWAPRMZMUhxBoulIaK6Je2UHquOYA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi4Eg7Z77jCwIZeBSl-PXbV1KEomtaaaqNkq3u-z_UE0l6cTNplFByz5HxLbNDCvHARdVgtTXNqTw16OwsdfOkZJ7gajgtPUA5qsxWVO8_4gof9-kzv8q8pzWJW-_AMgfS2Jsp4eskQBGy3Vi7n3pwe8g6SvknTnkWAPRMZMUhxBoulIaK6Je2UHquOYA=w600-h450" width="600" />
</a>
</div>
<p>The 74154 equivalent failed the test, so that was indeed the main culprit.</p>
<p>The 74LS10 was probably OK, but the pins were too corroded to test it properly.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjMC55Hd4az6_R7vQBKn1h2yMUcJu7gIxeafjL5p0AvMYRAepnU7iN7AYMvNaeavtDodxpK4QCYGr6NJz1sBRPBzdWjX1QIMD_cZc40AWg9WsUcSuldqL5Gax5yZbazUX8vrpvznUU_0DWJQha-8deqU8x3hg52u9QX_pB601GJ-IHhWIcX9_1u_m7kMg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2899" data-original-width="3866" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjMC55Hd4az6_R7vQBKn1h2yMUcJu7gIxeafjL5p0AvMYRAepnU7iN7AYMvNaeavtDodxpK4QCYGr6NJz1sBRPBzdWjX1QIMD_cZc40AWg9WsUcSuldqL5Gax5yZbazUX8vrpvznUU_0DWJQha-8deqU8x3hg52u9QX_pB601GJ-IHhWIcX9_1u_m7kMg=w600-h450" width="600" />
</a>
</div>
<p>The 74154 is now out of production, and I am down to the last few from the last full tube I bought many years ago when they were still available.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjNfeQnlQRnDCbxoT61OjkR3fSInkxbCRO0WirCmZ_vhxmtq6vid1HoS-4MLCbBQr4zj_EbBBkANswOPl8tBbc4o_ji3wzoC49pg-ommXggtwM6vqXrXcBcGTlIE5J--05tt3zGAOJqog2yj3jmJHbXArI-4qFcQzxbr6PxvAQaGmvMVoI-lT7eWf470Q" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjNfeQnlQRnDCbxoT61OjkR3fSInkxbCRO0WirCmZ_vhxmtq6vid1HoS-4MLCbBQr4zj_EbBBkANswOPl8tBbc4o_ji3wzoC49pg-ommXggtwM6vqXrXcBcGTlIE5J--05tt3zGAOJqog2yj3jmJHbXArI-4qFcQzxbr6PxvAQaGmvMVoI-lT7eWf470Q=w600-h450" width="600" />
</a>
</div>
<p>I patched the corroded trace to the new 74LS10, which went neatly to a via above, and checked the continuity of the others.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgmmWQOGGWVaqV98MS77hsUzb3IcWtMnPAsjNVvy6RnaVYAA1TroKzW4H2E2srZj1YLvRtirb8m2mbdD5TkZaDLaz8ZZrzVJy5lkVJeJjUjoU7w5MhsEOcfvB6KNQ0iquXHvKbVj0JnUY7ExaXZpErNg3f0W2XofTaFeytiz3awDtM2nzoDPOYFdSL-yQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1774" data-original-width="2366" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgmmWQOGGWVaqV98MS77hsUzb3IcWtMnPAsjNVvy6RnaVYAA1TroKzW4H2E2srZj1YLvRtirb8m2mbdD5TkZaDLaz8ZZrzVJy5lkVJeJjUjoU7w5MhsEOcfvB6KNQ0iquXHvKbVj0JnUY7ExaXZpErNg3f0W2XofTaFeytiz3awDtM2nzoDPOYFdSL-yQ=w600-h450" width="600" />
</a>
</div>
<p>With that replaced, I got a display.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiZLKrFpIMGe9pkSVum_M9HSVw62vjlxRaRbvFAxhfuSmDPbfEEUa2BMEQmrcIurVzHkwGLWPZbzUh9rW0MQ9o1A1ZGFEED383KIm4naTfO2OJIAmjooUOD6IYZj7qtnBpyh5su7JABevvtOEDK7Q7MKDCAG1gLWj0kHjvGJjNVhqxFv_UCJhaPJJ_GYg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiZLKrFpIMGe9pkSVum_M9HSVw62vjlxRaRbvFAxhfuSmDPbfEEUa2BMEQmrcIurVzHkwGLWPZbzUh9rW0MQ9o1A1ZGFEED383KIm4naTfO2OJIAmjooUOD6IYZj7qtnBpyh5su7JABevvtOEDK7Q7MKDCAG1gLWj0kHjvGJjNVhqxFv_UCJhaPJJ_GYg=w600-h450" width="600" />
</a>
</div>
<p>Miraculously, the RAM all passed.</p><p>It is showing a few faults in the video RAM, but nothing visible on the screen. The timing is extremely tight on the video RAM, so much so they alternate odd and even pixels between two chips at a time as a single one wouldn't be fast enough.</p>
<p>The main RAM looks awful, so probably best to leave that alone if it's working.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgKgFRXO3GUxYObxFeenRwwJDgHeByLzaLVatU5oAjqGh0FFeIboRqy5XDUEnzeqZnRxqd6o4JJt_PkXPW6I11dHe3k-CsFgdAQX8AXGkByaL81uLGgU14pkYQBVP7r0wZLmAYs7pMlOgSHF83FX20c1JIvJLSAGOL57BWaxNrwEvKNCze6r8brtYk3uQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2202" data-original-width="2936" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgKgFRXO3GUxYObxFeenRwwJDgHeByLzaLVatU5oAjqGh0FFeIboRqy5XDUEnzeqZnRxqd6o4JJt_PkXPW6I11dHe3k-CsFgdAQX8AXGkByaL81uLGgU14pkYQBVP7r0wZLmAYs7pMlOgSHF83FX20c1JIvJLSAGOL57BWaxNrwEvKNCze6r8brtYk3uQ=w600-h450" width="600" />
</a>
</div>
<p>Some people suggest washing boards like this in a dish washer. Not a fan of that idea, I am thinking about water getting trapped under chips, potential delamination of ceramic packages like those. And also, that board is pretty grotty, no way am I putting that in <i>my</i> dishwasher.</p>
<p>I started putting the chips back in, testing after each one, and it continued to work.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiLQJIYEBw_t4gCLY-Il4cLcMoUPVIny_Y_c7tMvGAF1labADLNPK0b21IOG6Pd4kbk_1aLba3vlaZl4BP5axGDO7nBpwscUuOh6U1K5GPJQIPRYSs902RNQu70VQ0oZOQGWfriNatYzl46_D6mg49JQa70uDBxa2KhSbvx8E5E_1FlWYlopbo83_rxxg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiLQJIYEBw_t4gCLY-Il4cLcMoUPVIny_Y_c7tMvGAF1labADLNPK0b21IOG6Pd4kbk_1aLba3vlaZl4BP5axGDO7nBpwscUuOh6U1K5GPJQIPRYSs902RNQu70VQ0oZOQGWfriNatYzl46_D6mg49JQa70uDBxa2KhSbvx8E5E_1FlWYlopbo83_rxxg=w600-h450" width="600" />
</a>
</div>
<p>The only problem was one of the ROM chips.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjh4rW0SBJ51WbR_MEUZ_gItOLKqXi3xyX_9xljhbEFl42oTbrDRGeHxQzlYQWcFrsg-RiN4DgwyDptDaRIlhnAmOEGL3wX-0Yv9aXTq8pPxZeipQrc2HOgP1I0O0AoX3NUu1FE0lSxM1CgcfT4-MnlGVrU3tU7nsouFlSr1Rmkf0mP3G5Ez-yH3rr5EQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2453" data-original-width="3271" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjh4rW0SBJ51WbR_MEUZ_gItOLKqXi3xyX_9xljhbEFl42oTbrDRGeHxQzlYQWcFrsg-RiN4DgwyDptDaRIlhnAmOEGL3wX-0Yv9aXTq8pPxZeipQrc2HOgP1I0O0AoX3NUu1FE0lSxM1CgcfT4-MnlGVrU3tU7nsouFlSr1Rmkf0mP3G5Ez-yH3rr5EQ=w600-h450" width="600" />
</a>
</div>
<p>It is showing up as empty. I checked the power pins and the enable line, and they were working correctly, so I guess the chip was just faulty.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhw1pbZvYJQtiqZ0Nw_Z-nWvkisP8lJ-iS7LEX1VboOvJbnRu8Ab4bPmF9hGrIcSGI3wNCjgbL5YQTRVhv0xt-HW11xPkKtBp5HPsQpYsPXy5u3fxYYQieqh-nJIziW-2d1Q2SyOzyCy1V28pP05UeVO7AvVjNC8Z0giynnTFodzTXsJpV0V5rIzTf2yg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhw1pbZvYJQtiqZ0Nw_Z-nWvkisP8lJ-iS7LEX1VboOvJbnRu8Ab4bPmF9hGrIcSGI3wNCjgbL5YQTRVhv0xt-HW11xPkKtBp5HPsQpYsPXy5u3fxYYQieqh-nJIziW-2d1Q2SyOzyCy1V28pP05UeVO7AvVjNC8Z0giynnTFodzTXsJpV0V5rIzTf2yg=w600-h450" width="600" />
</a>
</div>
<p>This is the only 2K ROM chip, the others are 4K, so it can be replaced by a standard 2716, or in this case, a 2816. The others need non-standard 2532 EPROMs or adapters.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiOxdKtN1EFGTWiOKXPIOBh17RnI_CIMrL0c_zVhAWb-dFxXtcbrN5AkWSoUrmS3-qZydmSRmlTMBPul-A70sT7yCRd5nVLDixBoZkoXQCdrt0TmSBkNKzJqjrcLCyy3EgBeb5gYl-Nvq-UFAINZm43mNYKcT3Xi9xYQXBMKSivcyLINaw8Y-4N-Aia6Q" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2616" data-original-width="3488" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiOxdKtN1EFGTWiOKXPIOBh17RnI_CIMrL0c_zVhAWb-dFxXtcbrN5AkWSoUrmS3-qZydmSRmlTMBPul-A70sT7yCRd5nVLDixBoZkoXQCdrt0TmSBkNKzJqjrcLCyy3EgBeb5gYl-Nvq-UFAINZm43mNYKcT3Xi9xYQXBMKSivcyLINaw8Y-4N-Aia6Q=w600-h450" width="600" />
</a>
</div>
<p>The label turned out quite nicely, maybe a bit large, but I'm OK with that.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgeOf6AxdDixRbcgWYfyWEpnvuHtaPt_xiVW0h6cR-kOLbS6UoPj8zwHwpGy-UuP6FReQFDyB346H8pblir1k758H21nuoDruzx1W6PDJddmfVLt9Oa4eBQxs2hGdCMcucoIMD4vejZum6P2UUrWUdekfxmJoaDf-dm76zF4ujhxvAiI0ZSCttq-THaXg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgeOf6AxdDixRbcgWYfyWEpnvuHtaPt_xiVW0h6cR-kOLbS6UoPj8zwHwpGy-UuP6FReQFDyB346H8pblir1k758H21nuoDruzx1W6PDJddmfVLt9Oa4eBQxs2hGdCMcucoIMD4vejZum6P2UUrWUdekfxmJoaDf-dm76zF4ujhxvAiI0ZSCttq-THaXg=w600-h450" width="600" />
</a>
</div>
<p>With that replaced, it passed the tests. <i>(note, the screen shows a later run of the test with a different ROM chip, one I made with a modified keyboard table so I could use the normal keyboard on the 4032 I was testing this in, rather than the business keyboard it was expecting.)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgziZhHm_KO2Ym5Az2NGLTj7Q3-gk4yYjmbSOGAUA9Wj9EsM6Y7-sBjJbRI1YGzc_XzeZXaJv-S384ThXaWuMI_S4FQkwhYgFqAc45OmA1XTFAviIYLT_LGYn8ysFG4tG4VR8OwgEKsorGcWRJYSP9P46JoveOnt0qAw81A1gVpgNf8u-GEAY2F0vYIjQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2624" data-original-width="3499" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgziZhHm_KO2Ym5Az2NGLTj7Q3-gk4yYjmbSOGAUA9Wj9EsM6Y7-sBjJbRI1YGzc_XzeZXaJv-S384ThXaWuMI_S4FQkwhYgFqAc45OmA1XTFAviIYLT_LGYn8ysFG4tG4VR8OwgEKsorGcWRJYSP9P46JoveOnt0qAw81A1gVpgNf8u-GEAY2F0vYIjQ=w600-h450" width="600" />
</a>
</div>
<p>OK, nothing left for it, time to put the 6502 back and see if it will live again.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhovgpxtU6yj0Nvs7SdeY1wV3z8Gq-qrf_MHtxbGxBSUT9f_MZoNf9LPH5-m7Pe6ftAMVIkvH2sTi4PXAkTVPkcChTO9G1ZINWLAmfwWKRMipB4tMgdQnakHOGXcscqUFz6vO2Uf4Oho-0UvFCOAUOnZL_TXVuzWNj34p2ATJDR3hVzsFeJi7OD-oSTxA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2724" data-original-width="3632" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhovgpxtU6yj0Nvs7SdeY1wV3z8Gq-qrf_MHtxbGxBSUT9f_MZoNf9LPH5-m7Pe6ftAMVIkvH2sTi4PXAkTVPkcChTO9G1ZINWLAmfwWKRMipB4tMgdQnakHOGXcscqUFz6vO2Uf4Oho-0UvFCOAUOnZL_TXVuzWNj34p2ATJDR3hVzsFeJi7OD-oSTxA=w600-h450" width="600" />
</a>
</div>
<p>Yay, success, we have a ready prompt.</p>
<p>I did a bit more testing, and all seemed fine, the IEEE-488 bus was working, after I cleaned the edge connectors, so I was able to load further games and test programs from an SD2PET.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_CGmI_nw37-MAYR8ikcuNzTk-OQsHMl7UM7bAyp5g3pxuRmwOpob1Q_ROwoiF8pVXFzplYYAPPs17g2o15m18OoM6Kzhz7-WSX8jqdp1r16HJ4aLPycEgtH4FNTmWoA0xg33jPJ4Sw9XFalHohCzffy46E7t-qICaOPVTMUnrzEX-HFzHn7jP6QeK4g" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3287" data-original-width="4383" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_CGmI_nw37-MAYR8ikcuNzTk-OQsHMl7UM7bAyp5g3pxuRmwOpob1Q_ROwoiF8pVXFzplYYAPPs17g2o15m18OoM6Kzhz7-WSX8jqdp1r16HJ4aLPycEgtH4FNTmWoA0xg33jPJ4Sw9XFalHohCzffy46E7t-qICaOPVTMUnrzEX-HFzHn7jP6QeK4g=w600-h450" width="600" />
</a>
</div>
<p>I left it running the 8296 diagnostics program.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6h7KD_91RlvRAIe9X6jeFGmgC0hXdffnp4kpZ9PQOsF2LEkJpexin-816NMWUCanW7tDWGZWneV6s2hH1Q07P8BP57a3bc8ErvWq1rn6OtzS0Z5QTorgi5c0fP19JsN17qwXDvcVZRjkESIix8vBg_ilI30eEB6bZSzRZEowttkA2wAfOJ5UczLyfDQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3259" data-original-width="4346" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6h7KD_91RlvRAIe9X6jeFGmgC0hXdffnp4kpZ9PQOsF2LEkJpexin-816NMWUCanW7tDWGZWneV6s2hH1Q07P8BP57a3bc8ErvWq1rn6OtzS0Z5QTorgi5c0fP19JsN17qwXDvcVZRjkESIix8vBg_ilI30eEB6bZSzRZEowttkA2wAfOJ5UczLyfDQ=w600-h450" width="600" />
</a>
</div>
<p>That again picked up the odd fault with the video RAM, but it doesn't seem to affect the screen in normal operation, so as I said before, I will leave that alone. There may be a fault somewhere in the second or third column full of chips here, but the 8032 seem to be very picky about 2114 RAM chips, so it is quite difficult to find replacements that will work.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjpyDYuoA7HXoP6tc-Ggp7uLZpynlJzNr9ZCnXF2XQWuBaKfGyo_ggr8GiT4Ok3e01C1f504QMo_hvhjpiTfZR40nd_XdAZBYOgcYE1BRXWdMfDKpI4l4qnLhwH0x1H04qAblOi4go6ukTvykUtcI1fU-o0j3UuFFXBJY3XohT-d1yI3MV42k45eI2tBg" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjpyDYuoA7HXoP6tc-Ggp7uLZpynlJzNr9ZCnXF2XQWuBaKfGyo_ggr8GiT4Ok3e01C1f504QMo_hvhjpiTfZR40nd_XdAZBYOgcYE1BRXWdMfDKpI4l4qnLhwH0x1H04qAblOi4go6ukTvykUtcI1fU-o0j3UuFFXBJY3XohT-d1yI3MV42k45eI2tBg=w600-h450" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>PET ROM/RAM</h2>
<p>As mentioned above, many PET faults are down do bad ROM chips or bad RAM chips, and a PET ROM/RAM chip can often help bypass those. You can order one from The Future Was 8 bit.</p>
<p><a href="https://www.tfw8b.com/product/commodore-pet-rom-ram/" rel="nofollow" target="_blank">https://www.tfw8b.com/product/commodore-pet-rom-ram/</a></p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2022/08/testing-pet-rom-ram-boards.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2022/08/testing-pet-rom-ram-boards.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj8ELeXaYity5sUpDztvv4mBg3Gx-miFjBDXVyrZYYMay2-aA7YkyYhHGeTGhHfvwkmphBijasvuMsn_47BDFxoA9tZfxzXC7-IN7CI8RpTXmhUlEtFQPKHCrGK4yiVJN79XGTIWDgVsKzNwZ_btqt8lFISsyMmjsNIOX6xFaMXM6nQBw-2jBsV3wfy0A" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj8ELeXaYity5sUpDztvv4mBg3Gx-miFjBDXVyrZYYMay2-aA7YkyYhHGeTGhHfvwkmphBijasvuMsn_47BDFxoA9tZfxzXC7-IN7CI8RpTXmhUlEtFQPKHCrGK4yiVJN79XGTIWDgVsKzNwZ_btqt8lFISsyMmjsNIOX6xFaMXM6nQBw-2jBsV3wfy0A=w600-h450" width="600" />
</a>
</div>
<br />
<h3>Mini PET B</h3>
<p>Or if you want an easier solution, the Mini PET B is a drop in replacement for a PET / CBM 40 column 32K motherboard.</p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/building-a-mini-pet-b-kit.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/building-a-mini-pet-b-kit.html</a></p>
<p>Mini PET B at SellMyRetro:</p>
<ul>
<li>Built and tested - <a href="https://www.sellmyretro.com/offer/details/63875" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63875</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/63876" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63876</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ=w600-h450" width="600" />
</a>
</div>
<br />
<h2 style="text-align: left;">PET IEEE-488 Diagnostics</h2>
<p>The PET IEEE-488 Diagnostics module is available from my SellMyRetro store, in assembled or kit form.</p>
<p>More info in a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/pet-ieee-488-diagnostics-updated-version.html</a></p>
<p>PET IEEE-488 Diagnostics module at SellMyRetro:</p>
<ul>
<li>Built and tested - <a href="https://www.sellmyretro.com/offer/details/63989" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63989</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/63987" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63987</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXwwTL_gKT77jHu0uo1XAvPby36Hmzi2-kZypFhw3__Kx37WaPYaji918RKDs-Z2qrMh1Yf9vFmGyaBG8pvUl-FBjixXrBGsqFOOcUyv2Nl7hENRjgK3fn9xARRh8_rrvJgUemojyW8QXsQG6tkT7owEd8goGS0iwjSn2lZdBJpx4VFaUprMkTOocFTgkc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3342" data-original-width="4456" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXwwTL_gKT77jHu0uo1XAvPby36Hmzi2-kZypFhw3__Kx37WaPYaji918RKDs-Z2qrMh1Yf9vFmGyaBG8pvUl-FBjixXrBGsqFOOcUyv2Nl7hENRjgK3fn9xARRh8_rrvJgUemojyW8QXsQG6tkT7owEd8goGS0iwjSn2lZdBJpx4VFaUprMkTOocFTgkc=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">PET Diagnostics.</h2>
<p>The PET Diagnostics modules are available from my SellMyRetro store:</p>
<ul style="text-align: left;">
<li><a href="https://www.sellmyretro.com/offer/details/64158" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/64158</a></li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgNlzz2fIKeScjtGkRrAGnVtYFHgSy3WELvWhvpuoUqNnotMxJCimNRaTIkV72CZ5oCI2wznQFYBYkkJQhLW8xPF904O2y_ldn6ReWmGoB18jzn5VomnsFqsTK8-6sRfGxaOHK0BzW9_38le4S06MHGP3YkAt57b6zXpgL8c7gM2Bxg7TTXKcit48oBEVe4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2580" data-original-width="3439" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgNlzz2fIKeScjtGkRrAGnVtYFHgSy3WELvWhvpuoUqNnotMxJCimNRaTIkV72CZ5oCI2wznQFYBYkkJQhLW8xPF904O2y_ldn6ReWmGoB18jzn5VomnsFqsTK8-6sRfGxaOHK0BzW9_38le4S06MHGP3YkAt57b6zXpgL8c7gM2Bxg7TTXKcit48oBEVe4=w600-h450" width="600" />
</a>
</div>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p>
<a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a>
</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-4709686721141629802023-10-29T09:36:00.008+00:002023-10-29T13:53:24.213+00:00Building a Mini PET B Kit<p>Mini PET B is the version of the Mini PET designed to act as a drop in upgrade / replacement board for a Commodore PET or CBM.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgVlcDkKUevm-BP0h_tOS0EMa1Xzsg-BhPub7k6hJEv04hcoWFEabXGHl3vVJdMYnPhaP3_85ktivhEUqRtKvL467A4xMVUQwnM6t7WgdPfvyaFVo-lBGFbBkyBGjARf6gA3RjhK-hqrxlkN_bsojw0RiMwiQV3wGPSbHfENl4BrKwqyZ5fjNwfZHVHG2v1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3372" data-original-width="4496" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgVlcDkKUevm-BP0h_tOS0EMa1Xzsg-BhPub7k6hJEv04hcoWFEabXGHl3vVJdMYnPhaP3_85ktivhEUqRtKvL467A4xMVUQwnM6t7WgdPfvyaFVo-lBGFbBkyBGjARf6gA3RjhK-hqrxlkN_bsojw0RiMwiQV3wGPSbHfENl4BrKwqyZ5fjNwfZHVHG2v1=w600-h450" width="600" />
</a>
</div>
<p>It provides 32K of RAM, and selectable ROM sets. 40 x 25 monochrome video, compatible with most software other than a few demos which require a 6545 CRTC. Modern WDC W65Cxx chips are used to provide a PET compatible computer, with the same external port - IEEE-488, Userport and two datasette ports. Note the userport is the PET standard, and is not the same as the VIC20 / C64 (most importantly it does not provide external power).</p><p>Today I am building one of my kits. Step one is always to knoll all the parts out (or at least it is for me).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi5-bOdeVUZYul1WTbe4Sgcyllq4TxKA55LIonai2LvfcIy-s8aOfIf5BZWihMG6Rrgd3aKORjKXvoFyYQLsekTCt9d-JBaz0E0sOG4o3GobdD2uepZQHtIW60Nfwh4DSPcp-C55XX_lEO6YG72IUJ6ektEdNd2dYqTNCcgyDsOh2DmqILQg1umH7m4s6_E" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi5-bOdeVUZYul1WTbe4Sgcyllq4TxKA55LIonai2LvfcIy-s8aOfIf5BZWihMG6Rrgd3aKORjKXvoFyYQLsekTCt9d-JBaz0E0sOG4o3GobdD2uepZQHtIW60Nfwh4DSPcp-C55XX_lEO6YG72IUJ6ektEdNd2dYqTNCcgyDsOh2DmqILQg1umH7m4s6_E=w600-h450" width="600" />
</a>
</div>
<p>Note the parts on the bottom right are optional, if you require composite video output or barrel jack 9V DC power input.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj2qZ1NXLkNNpaJrCOkIprrsjqOtUwKw6Y-XsLDao5mjvNdU33gIx598XdgbL3rV1leo_2svX9_ARh4uPh5MSlqRbBnMw4SfbYlI9MZdIwaRjswG3VLSU_TsHfYeZ3Oh0Scdd8m5JB3wBVSGBOa85xYlw3KKybaCStgKfQHXQDrgWrvOWttWXsyN7Zdyi4y" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj2qZ1NXLkNNpaJrCOkIprrsjqOtUwKw6Y-XsLDao5mjvNdU33gIx598XdgbL3rV1leo_2svX9_ARh4uPh5MSlqRbBnMw4SfbYlI9MZdIwaRjswG3VLSU_TsHfYeZ3Oh0Scdd8m5JB3wBVSGBOa85xYlw3KKybaCStgKfQHXQDrgWrvOWttWXsyN7Zdyi4y=w600-h450" width="600" />
</a>
</div>
<p>I am going to build this one without those parts initially, but will add them in later so show different use cases.</p>
<p>I start with all the low-height components, the resistors, capacitors, diodes, the crystal, the two power transistors and the voltage regulator.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiCUw1TjM49dMAhOgvEePcaPbmFsm0KKNtpA-dG5HytmaMOlrepkWblkD6IA3JQjUaoXLKETsla3DOjkb2eT9KgLfg4_-CBsXOBJ-I5v6nRvFyg8dgWozEdK41d7HypUkEagfSefb1xnXJl7dX-h8XZnIuNnmKfBgfG61GZe62NFt69qLIZApQ9gEijd1Po" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3352" data-original-width="4469" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiCUw1TjM49dMAhOgvEePcaPbmFsm0KKNtpA-dG5HytmaMOlrepkWblkD6IA3JQjUaoXLKETsla3DOjkb2eT9KgLfg4_-CBsXOBJ-I5v6nRvFyg8dgWozEdK41d7HypUkEagfSefb1xnXJl7dX-h8XZnIuNnmKfBgfG61GZe62NFt69qLIZApQ9gEijd1Po=w600-h450" width="600" />
</a>
</div>
<p>Next I fit all the IC sockets. If I am building one of these for myself, I normally do not use sockets for the logic chips, but I will in this case.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgNM9xQ5M3sHmBW2-o2wCadY6kp-StZtUxcpTDf_rw-X9mSiMFXwyecaWGxaUa3Nc_u9I6WA6FdWjYm2PysTC838_FmJbe0yk2QP4knYzs-Hgy2-3NHGU05fVIY-ODbtFOfCiAe5O9wOjyJIxn3B-bu6FcNbKiJqJa_aI8T0nMooGyb85tzGYkMCLFSEW4P" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgNM9xQ5M3sHmBW2-o2wCadY6kp-StZtUxcpTDf_rw-X9mSiMFXwyecaWGxaUa3Nc_u9I6WA6FdWjYm2PysTC838_FmJbe0yk2QP4knYzs-Hgy2-3NHGU05fVIY-ODbtFOfCiAe5O9wOjyJIxn3B-bu6FcNbKiJqJa_aI8T0nMooGyb85tzGYkMCLFSEW4P=w600-h450" width="600" />
</a>
</div>
<p>Next the resistor arrays, noting they are all oriented with their pin 1 dot to the left. Finally the remaining connectors and taller components.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjYt-IChIBnRih0n6vAm0aZfBmVxwG6s-kReYtId0YRlkxPViTCeqM4FZE3M2mrHhEw-o2Y8dowNugeZE5ucLnnitR2Zuu6AiSNwv_HtYWrBPIgA8ag2YE4kJjWygjDBNLdUZfS0ZFQuamUEu5xQHj-KXvRlK0I-6X7bHy53I6QpbufQ_PZl3n9Go6JZgR1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3442" data-original-width="4589" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjYt-IChIBnRih0n6vAm0aZfBmVxwG6s-kReYtId0YRlkxPViTCeqM4FZE3M2mrHhEw-o2Y8dowNugeZE5ucLnnitR2Zuu6AiSNwv_HtYWrBPIgA8ag2YE4kJjWygjDBNLdUZfS0ZFQuamUEu5xQHj-KXvRlK0I-6X7bHy53I6QpbufQ_PZl3n9Go6JZgR1=w600-h450" width="600" />
</a>
</div>
<p>With all that done and cleaned, time to fit the ICs. As ever, they are arranged on the foam pad in the same positions as the PCB.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiF_4luLIg8cHOv6y1-Kj1_CY2JQ-MSdhHJW11SXi-SrcHsw_ZVLh08G4Oxq3us2XDwAhHMq_aM11ep2i59tzq4Mo8tNtcjv5k1zsaaOZCcyLfZm3UFUbehoK-h1JLF3dms8ZckRQZkaUJxO4M6lwfuAX4JwQujHLocmorzAtLplwhCvyBKWKyNoMdxtsSZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3288" data-original-width="4384" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiF_4luLIg8cHOv6y1-Kj1_CY2JQ-MSdhHJW11SXi-SrcHsw_ZVLh08G4Oxq3us2XDwAhHMq_aM11ep2i59tzq4Mo8tNtcjv5k1zsaaOZCcyLfZm3UFUbehoK-h1JLF3dms8ZckRQZkaUJxO4M6lwfuAX4JwQujHLocmorzAtLplwhCvyBKWKyNoMdxtsSZ=w600-h450" width="600" />
</a>
</div>
<p>And we are done. Time to install the board in the PET case. This is my 4032. The two holes on the front of the Mini PET board are for the mounting pillars. They are self adhesive, but you don't actually need to stick them down unless you plan to move your PET around a lot (have you tried to pick of of those it up?)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhCQrIK5Nlxg1UEg1pWwZZw3iFuWtJxgLXoOHayRtfbHoxnwvzvF9nwXya5-Zo-5dnrNSxzgDKj1C3BxK9q9rbVKRIKds6lWuX5QRi3001244404n5XEAeyYsl2OXXlNLgYor7BlFMEtwDUzhZ-NVFGjt1h1L9BKfld2TpeLavz8kOkzqVH6nD5SbGUA9uJ=w600-h450" width="600" />
</a>
</div>
<p>The top left of the board has an earthed pad which is the connection for chassis ground. Fix that with the original screw.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiDRacSpPH1RNRdAhA6olmOrqFkkYAc43UNBtWwbpYc2AbGneFXAJvQl1-CB-RdCHUsblj18G2LFm6zUjpafBKyVdyQqZgmQ5kvmHugSUnsGzwRbPrGzH0xIHJfq7c4miu_tjKeWJVN8SfsTSADbc23Dik0q5qzRzg-8j-inTrG_VqKGrn4RMxoiPWTpp_T" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiDRacSpPH1RNRdAhA6olmOrqFkkYAc43UNBtWwbpYc2AbGneFXAJvQl1-CB-RdCHUsblj18G2LFm6zUjpafBKyVdyQqZgmQ5kvmHugSUnsGzwRbPrGzH0xIHJfq7c4miu_tjKeWJVN8SfsTSADbc23Dik0q5qzRzg-8j-inTrG_VqKGrn4RMxoiPWTpp_T=w600-h450" width="600" />
</a>
</div>
<p>Top right is also screwed to an original pillar, but is not electrically connected.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjA3qEhMfNnnrhrCtU4ygKzeiNYj0x4tFUnm9KWCYUwU1K0KpBYSLNtXH4XjkVXh9QVy4eX8NU1Qkg73bjYfe7khYgTMLC-x2wExFCGy31Uq2yEe3-IL9BaNYZw2y57Jl2cnlpEeVJVacyIH4ZFBDv_qWWOMrBE5zkW6x030oyUfmbGfKODu7u44_mGH0KZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjA3qEhMfNnnrhrCtU4ygKzeiNYj0x4tFUnm9KWCYUwU1K0KpBYSLNtXH4XjkVXh9QVy4eX8NU1Qkg73bjYfe7khYgTMLC-x2wExFCGy31Uq2yEe3-IL9BaNYZw2y57Jl2cnlpEeVJVacyIH4ZFBDv_qWWOMrBE5zkW6x030oyUfmbGfKODu7u44_mGH0KZ=w600-h450" width="600" />
</a>
</div>
<p>Finally the power, monitor and keyboard connectors.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6tQHSPwvMRrvRhBgpTCC8d3JYERoiy8UD2mimU4GslVwnbIpKCa9rYJM2IGOYFNPPcs4hUUGjy6i3oiyeFkLyAuF1s498rwU-dNSI24h018a9DukxULtARyXo-qo8Ai8ojxASOdBCWeQXW0heVlMxORgcEv3Pjyx4k_s9_lNHuZFNCFUMLa17CDouX7_d" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6tQHSPwvMRrvRhBgpTCC8d3JYERoiy8UD2mimU4GslVwnbIpKCa9rYJM2IGOYFNPPcs4hUUGjy6i3oiyeFkLyAuF1s498rwU-dNSI24h018a9DukxULtARyXo-qo8Ai8ojxASOdBCWeQXW0heVlMxORgcEv3Pjyx4k_s9_lNHuZFNCFUMLa17CDouX7_d=w600-h450" width="600" />
</a>
</div>
<p>Power is either 9 pin on 2001N/30xx/40xx and 80xx machines, or 5 pin on 2001 PETs, aligned to the right of the connector. The blue wires on the 9 pin connector are for the 18V tap on the transformer, which is not required. The other black is an extra ground.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgq-jJCqLplVuWknzcdf5To1EXtVy95-Wp5D9z1E142bxoKGjo5gZ2jjfx9c7RaCAH-6xE5uccYQ8Gu_CtfC5jzlEO_oMkT6iVDn3nlgGD5fm5n5yzgXdlO5oqIWUai9XS_rl3WRhpgIE7FceZ_uy2Y3BtJYzic1IkcIvUQjXYd55qZ6DzjZ-y8mtp93BnK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgq-jJCqLplVuWknzcdf5To1EXtVy95-Wp5D9z1E142bxoKGjo5gZ2jjfx9c7RaCAH-6xE5uccYQ8Gu_CtfC5jzlEO_oMkT6iVDn3nlgGD5fm5n5yzgXdlO5oqIWUai9XS_rl3WRhpgIE7FceZ_uy2Y3BtJYzic1IkcIvUQjXYd55qZ6DzjZ-y8mtp93BnK=w600-h450" width="600" />
</a>
</div>
<p>If you want to check voltages, black is common ground, and the centre tap of the transformer. the two brown wires are the other taps on the transformer. There should be around 9V AC between either brown wire and the black (ground). The two red wires are connected together at the big capacitor. There will be no voltage on the red wires unless they are plugged into the Mini PET. The left hand red wire is 9V DC <b>OUT</b> of the Mini PET to the capacitor, and the right hand is 9V DC back <b>INTO</b> the Mini PET from the capacitor. The grey boxes show the original parts mounted in the PET case, and not on the Mini PET PCB. <i>(there are 100nF capacitors in parallel with each of the diodes, omitted for clarity)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5TugvrMSQs3JF6x_IyOqplxnMxxfkAFDlNvQAs8snc-OVe0il0VSwOmq1FbniXvtH9e0ILu6DiQ1ySTSRbauSOTchqiF5YL6gsDjmXhTRGwE8idbnYjNf00v8Q29IzjFS1boF9vvzn3PBg0rOhFbL_PjATfY5vVrGw4z9B0alIWFmiM0jOJpODiwlANE_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="726" data-original-width="1818" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5TugvrMSQs3JF6x_IyOqplxnMxxfkAFDlNvQAs8snc-OVe0il0VSwOmq1FbniXvtH9e0ILu6DiQ1ySTSRbauSOTchqiF5YL6gsDjmXhTRGwE8idbnYjNf00v8Q29IzjFS1boF9vvzn3PBg0rOhFbL_PjATfY5vVrGw4z9B0alIWFmiM0jOJpODiwlANE_=w600-h240" width="600" />
</a>
</div>
<p>With everything wired up, time to set the DIP switches and power on.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhgOIwWSsXslT-qXDttXvphyrOdt_9AGaG3746PO5AlmSmn-UGS7_inRdre4ERN2dZ61zymxCQSn15Cwte8nPrSI-plPt1RJYdyQfut2Nl_emMiSeqEF3zJYLqjmtXQXqlLGpIro50fssn8HUlK39GmqSh4ypCVocf0K2p9QpknJFE-VBMRDmMmpjOcHSeG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhgOIwWSsXslT-qXDttXvphyrOdt_9AGaG3746PO5AlmSmn-UGS7_inRdre4ERN2dZ61zymxCQSn15Cwte8nPrSI-plPt1RJYdyQfut2Nl_emMiSeqEF3zJYLqjmtXQXqlLGpIro50fssn8HUlK39GmqSh4ypCVocf0K2p9QpknJFE-VBMRDmMmpjOcHSeG=w600-h450" width="600" />
</a>
</div>
<p>For the 12" 50Hz monitor in the 4032 I set switches 6 and 7 on, and the rest off.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj8Ek7ReOV0I6aW2Kqspc8aiYgl470eSO8ATiE-NcWZRLyyHOQXiBw27TtDXCCuj1FCEHwOs_EubaQtDiuNVekiKU2avPK1_ddNcbneVTv1Um3ydVdwT4KsobNfyJrNdbBEldegxX65iXPcVeXCk6LeWvupHwCAG8FotyFP2vuZekh2ydIThFir5Q9z52nL" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj8Ek7ReOV0I6aW2Kqspc8aiYgl470eSO8ATiE-NcWZRLyyHOQXiBw27TtDXCCuj1FCEHwOs_EubaQtDiuNVekiKU2avPK1_ddNcbneVTv1Um3ydVdwT4KsobNfyJrNdbBEldegxX65iXPcVeXCk6LeWvupHwCAG8FotyFP2vuZekh2ydIThFir5Q9z52nL=w600-h450" width="600" />
</a>
</div>
<p>Switch on, and there was the familiar chirp and there is the ready prompt.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhzCvn84PZAiaDV54dkbHti7DPP-bzcmmlYg6DymK1nb3E5oFHPPOVd9ZPiQepLe41achd3Gq1bQgiJxvig6XHot6MEcHxz1UyssMiWj9uYvF73ZI4M80tOi9GR8C0X9aM4MEpv1adz5RK_cQ_ScAL1Pp2f6HVkHjlpMnAUVxh4FL5b_zdFy-VmqsMnUsqO" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3267" data-original-width="4356" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhzCvn84PZAiaDV54dkbHti7DPP-bzcmmlYg6DymK1nb3E5oFHPPOVd9ZPiQepLe41achd3Gq1bQgiJxvig6XHot6MEcHxz1UyssMiWj9uYvF73ZI4M80tOi9GR8C0X9aM4MEpv1adz5RK_cQ_ScAL1Pp2f6HVkHjlpMnAUVxh4FL5b_zdFy-VmqsMnUsqO=w600-h450" width="600" />
</a>
</div>
<p>I ran various test programs, including the built in self test (SYS 40960), and my old BASIC memtest program.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjPL7aqB4J8KGwDhLlsapREkE7fTFwd_zPEnmd1TacweU6VErhGID3zJ_FoHfDBC-tB0q8x1FhbXbtJR486G2Mg97yNDaE8x2AihzMpbd-_NRMDMR5xC7go8FjFmLmgnuc73i4NKXGXkz2I3l7gsdQa_1v8JIbgsLaKokbv6x7_67c2aOlmv2a9OMe-eoEf" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2688" data-original-width="3584" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjPL7aqB4J8KGwDhLlsapREkE7fTFwd_zPEnmd1TacweU6VErhGID3zJ_FoHfDBC-tB0q8x1FhbXbtJR486G2Mg97yNDaE8x2AihzMpbd-_NRMDMR5xC7go8FjFmLmgnuc73i4NKXGXkz2I3l7gsdQa_1v8JIbgsLaKokbv6x7_67c2aOlmv2a9OMe-eoEf=w600-h450" width="600" />
</a>
</div>
<p>Maybe I am getting slightly better at taking pictures of CRTs?</p>
<p>To show an alternate use case, I removed the board again and installed the optional composite video out and DC in components. That allows the board to be tested outside of the PET case, or you may have some other use in mind.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhPrVwngG4qBPvPko6d9WCN71vluLkl6muFYw7R4KVUj8omrOM7mCNQ7qPG1hd6AZodN3khYlaX72afdslC_QJ1OYdY-C0p21_fMXP3QBT57i6tUmoAoAwxXk_dHtBsDb9qQSeDjE2-veM5_muUi92zwNy5EJ7huw7YL4mrY4-NN_3wj-8irsJljw6UM9F2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhPrVwngG4qBPvPko6d9WCN71vluLkl6muFYw7R4KVUj8omrOM7mCNQ7qPG1hd6AZodN3khYlaX72afdslC_QJ1OYdY-C0p21_fMXP3QBT57i6tUmoAoAwxXk_dHtBsDb9qQSeDjE2-veM5_muUi92zwNy5EJ7huw7YL4mrY4-NN_3wj-8irsJljw6UM9F2=w600-h450" width="600" />
</a>
</div>
<p>Those allowed me to do some further bench testing with an SD2PET and a datasette.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgWyj9cEuJU-3V92wE8e3iazwVFIzuufVFjT22g_XMEgyqaxoapknKi4rc63JRClMD8K8Nl9i4TvZyi3vpLNKTUmA5_JfXAhZOaOO36_gAsMRhZoI2LJghFVcSEfOK3vJ-Z4hdHqWTdwoOaAbK4TTwMN3Na1yeo6gK6gW7zUG-ouG5or-gDb1jqes0Vg9gm" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3433" data-original-width="4577" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgWyj9cEuJU-3V92wE8e3iazwVFIzuufVFjT22g_XMEgyqaxoapknKi4rc63JRClMD8K8Nl9i4TvZyi3vpLNKTUmA5_JfXAhZOaOO36_gAsMRhZoI2LJghFVcSEfOK3vJ-Z4hdHqWTdwoOaAbK4TTwMN3Na1yeo6gK6gW7zUG-ouG5or-gDb1jqes0Vg9gm=w600-h450" width="600" />
</a>
</div>
<p>The Mini PET B can be used stand alone like this, although, you probably want the Mini PET A instead.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjGxLucbSZYurluItdibr-LiIGqDW98omH3z1lhWr3lxZDmYlbah1SM5cS-EJ5ppJC4hTggt6oTFY71QBHk0AeahT-U7OfZBuG52BVf5TBWgdjhjaxfH1FQJCl6HigjCOsCcgM1TKBQ9azUJqBWUXe1mL-2ko-jmYkx42w3Rn0kCtNQyN86EGqdv4ISVmMd" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjGxLucbSZYurluItdibr-LiIGqDW98omH3z1lhWr3lxZDmYlbah1SM5cS-EJ5ppJC4hTggt6oTFY71QBHk0AeahT-U7OfZBuG52BVf5TBWgdjhjaxfH1FQJCl6HigjCOsCcgM1TKBQ9azUJqBWUXe1mL-2ko-jmYkx42w3Rn0kCtNQyN86EGqdv4ISVmMd=w600-h450" width="600" />
</a>
</div>
<p>Here everything again passed all the tests, so time to try a few games, I think I will load one from tape for old times sake.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJdT9348tdKRVhgb75iP4r-t9ek5mu7jZVSQLVDeogDqLPtNqU0QYCQX4xV6E5270ycPeLssXrRPyd2fdhfdqSXtlzmg5LGyOuEPPstCh7bnOnprE7RIy5YSfugin2prhfHRSxbUI2E2IrPKlTuK-EsHZEXTi9KgtXs1_8Zh8bDpKloGts0pSfPqVY7Re3" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJdT9348tdKRVhgb75iP4r-t9ek5mu7jZVSQLVDeogDqLPtNqU0QYCQX4xV6E5270ycPeLssXrRPyd2fdhfdqSXtlzmg5LGyOuEPPstCh7bnOnprE7RIy5YSfugin2prhfHRSxbUI2E2IrPKlTuK-EsHZEXTi9KgtXs1_8Zh8bDpKloGts0pSfPqVY7Re3=w600-h450" width="600" />
</a>
</div>
<p>All looks good. Loaded first time.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiuVLvnxZWDMrrbSesixGcLXKYZ5ur_suXu5KfeJDOFP8T6JLxBS6KwJdMzOZZmR-hq0Mh2648TjsyeHNBq_eSzwepzOcZIxEpegJ_dULzh5WjU-PHmZZuTbq-cafghhjOWubbgNkr2KrstFzuoAsCCSy0fXxDyx2n-a82_XSmv0Rbrrk7Kn9uKlBymgrch" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2556" data-original-width="3408" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiuVLvnxZWDMrrbSesixGcLXKYZ5ur_suXu5KfeJDOFP8T6JLxBS6KwJdMzOZZmR-hq0Mh2648TjsyeHNBq_eSzwepzOcZIxEpegJ_dULzh5WjU-PHmZZuTbq-cafghhjOWubbgNkr2KrstFzuoAsCCSy0fXxDyx2n-a82_XSmv0Rbrrk7Kn9uKlBymgrch=w600-h450" width="600" />
</a>
</div>
<p>Here he comes, good old Rex.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiVtaNYj0FKwy0nUOTcrlgXq4SoSA46mJXSMZvE1FIOvJkKmv9CWoX-FgwmQh7bGyQV2j0cXmwAmzMmkl8ba6UB8pUqwE430bH01BUyxpt0ggvuMONeapa2D83CKikNAopoL87PL7fx1Tvg9PAORAeEr1tiqW6vyEWa4ONa_75LAwWDFT9olKokvt1fzlX_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiVtaNYj0FKwy0nUOTcrlgXq4SoSA46mJXSMZvE1FIOvJkKmv9CWoX-FgwmQh7bGyQV2j0cXmwAmzMmkl8ba6UB8pUqwE430bH01BUyxpt0ggvuMONeapa2D83CKikNAopoL87PL7fx1Tvg9PAORAeEr1tiqW6vyEWa4ONa_75LAwWDFT9olKokvt1fzlX_=w600-h450" width="600" />
</a>
</div>
<p>Ooooh, I found the exit this time.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhHciUzkIlEhognQNfdpEJFDYPOaXhXZQrn4XVYuyQXq3lzHVpMwiyWmSTcS811_DI4XRg3UH5f89C0NNTElLHXeTyBra4oXhQCuXdEIKg9gT8F5kbZ_xDpwXYdaaLLynJZtFA3B-kHYEpkXCkO5yYOnkbKSNR6ET85j2R-DUGz0yb05rmJu4b8w8H-Ui0O" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhHciUzkIlEhognQNfdpEJFDYPOaXhXZQrn4XVYuyQXq3lzHVpMwiyWmSTcS811_DI4XRg3UH5f89C0NNTElLHXeTyBra4oXhQCuXdEIKg9gT8F5kbZ_xDpwXYdaaLLynJZtFA3B-kHYEpkXCkO5yYOnkbKSNR6ET85j2R-DUGz0yb05rmJu4b8w8H-Ui0O=w600-h450" width="600" />
</a>
</div>
<p>So there is the Mini PET V V1.58</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhUqPRqX9qNgrhJt2YRhMQAJWDoppYirhhWVZbsWOj3gKbabbZ5iWZDM19JTokJvSkGEvA1UD5LnPjpfbysCjQAzgSQ1mFf-2tO6goShVO_c_X99k0SIlRvjjmrsEfiw8uPmzI8JZaYXJfDf1J9xmTBxRq-b5Ka7jsxusT5LM3VhWEoeZJ3qdljNroNObx1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhUqPRqX9qNgrhJt2YRhMQAJWDoppYirhhWVZbsWOj3gKbabbZ5iWZDM19JTokJvSkGEvA1UD5LnPjpfbysCjQAzgSQ1mFf-2tO6goShVO_c_X99k0SIlRvjjmrsEfiw8uPmzI8JZaYXJfDf1J9xmTBxRq-b5Ka7jsxusT5LM3VhWEoeZJ3qdljNroNObx1=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">Adverts</h2>
<p>The Mini PET B and A are available in kit and built forms from my SellMyRetro store:</p>
<h3>Mini PET A</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgYz3Wvr9lHoMSRrKFcVq1dKiHHQOtiikhKezvcvU5HSGtdrsyt1wg_Zh3nAFWiGKwilOLSeE6hIEjTRT6PJQ0g6f8df79IvJAA2NNFadJ2wpkmBCAEYyOlf0pK_M1Dlltu2HmvXWnWkdqIoN3kbqdoGdQYa3W1dDaXnpqx-oDLaH853Du-KTNngRRT_DcY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgYz3Wvr9lHoMSRrKFcVq1dKiHHQOtiikhKezvcvU5HSGtdrsyt1wg_Zh3nAFWiGKwilOLSeE6hIEjTRT6PJQ0g6f8df79IvJAA2NNFadJ2wpkmBCAEYyOlf0pK_M1Dlltu2HmvXWnWkdqIoN3kbqdoGdQYa3W1dDaXnpqx-oDLaH853Du-KTNngRRT_DcY=w600-h450" width="600" />
</a>
</div>
<p>The Mini PET is a Commodore PET compatible 6502 based computer with 32K of RAM and a choice of PET BASIC 1,2 or 4, or Mini PET BASIC 4.0.</p>
<p>This is the stand alone version that can be used with one of my keyboards or another aftermarket PET keyboard (normal / graphics layout recommended for better compatibility than the business keyboard).</p>
<p>Mini PET A on SellMyRetro</p>
<ul>
<li>Built and Tested with Deluxe Keyboard - <a href="https://www.sellmyretro.com/offer/details/63877" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63877</a></li>
<li>Full kit with deluxe keyboard - <a href="https://www.sellmyretro.com/offer/details/63951" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63951</a></li>
<li>Full kit with no keyboard - <a href="https://www.sellmyretro.com/offer/details/63950" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63950</a></li>
</ul>
<h3>Mini PET B</h3>
<p>The B variant is designed as a drop in replacement for a PET motherboard. No keyboard options are provided, as you are expected to use the PETs original keyboard.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhafVLApYjgmLhcw_cejSw_jW2uobrJ_4EBq83_yOdOz_OzPwCTM4AdbEVeVhgetYKlo2qcXeTinHYQ53kzYln92_K2orj7HwQ-mW7LlO0brAwSWpdz4XTEY_x6j8Wcy44EmLjHuea0qpbri6ralU64bXXRhdJHrYyF5suvR1khL2nsqqs6CQzDs7LcmhJS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhafVLApYjgmLhcw_cejSw_jW2uobrJ_4EBq83_yOdOz_OzPwCTM4AdbEVeVhgetYKlo2qcXeTinHYQ53kzYln92_K2orj7HwQ-mW7LlO0brAwSWpdz4XTEY_x6j8Wcy44EmLjHuea0qpbri6ralU64bXXRhdJHrYyF5suvR1khL2nsqqs6CQzDs7LcmhJS=w600-h450" width="600" />
</a>
</div>
<p>In addition to the DC power and composite video output of the A, the Mini PET B can use the PET power supply (5 pin or 9 pin) and drive a PET 9" or 12" monitor.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjaf8ahZMb2yyakT6Q0lBXs66NlKj_qKDdoWgcaA8c7Jx3exJD46qX_l7u9vRQZxlSDG2nIiS1o4MAGXuZgP5jUX7E_DiiCI8yUwby4NDk3Hn3TZgn5qSSmuamx1uiWC2rigOnGmdumXbOE-i-rNWuVTysJwEBRpLBN_iiD0i-AMP19U4DN3APm10h9HrZG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjaf8ahZMb2yyakT6Q0lBXs66NlKj_qKDdoWgcaA8c7Jx3exJD46qX_l7u9vRQZxlSDG2nIiS1o4MAGXuZgP5jUX7E_DiiCI8yUwby4NDk3Hn3TZgn5qSSmuamx1uiWC2rigOnGmdumXbOE-i-rNWuVTysJwEBRpLBN_iiD0i-AMP19U4DN3APm10h9HrZG=w600-h450" width="600" />
</a>
</div>
<p>Mini PET B at SellMyRetro:</p>
<ul>
<li>Built and tested - <a href="https://www.sellmyretro.com/offer/details/63875" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63875</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/63876" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63876</a></li>
</ul>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts.</p>
<p>This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-28623065611240907252023-10-22T09:43:00.005+01:002024-02-10T19:39:58.504+00:00PET IEEE-488 Diagnostics (updated version)<p>This is the new version of my PET IEEE-488 diagnostics board.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsvQqYd3hTL1MtZJWB_M1yzgNhRuL48q7Q_WhfW0luXrhpogHtTldpHYwkjWSdVs1ROmcwaZhA3IpAywuu8eYI2dhEdBwMtzFk4i8bU3E2iv4CZy1gRZai3zXOG-uT-YyFvPIBkT26zSarEXKn2bM2C-1XvjP-swnFSYVZ0XMTersxeEyXGCgTRMl3oYcq" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3449" data-original-width="4599" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsvQqYd3hTL1MtZJWB_M1yzgNhRuL48q7Q_WhfW0luXrhpogHtTldpHYwkjWSdVs1ROmcwaZhA3IpAywuu8eYI2dhEdBwMtzFk4i8bU3E2iv4CZy1gRZai3zXOG-uT-YyFvPIBkT26zSarEXKn2bM2C-1XvjP-swnFSYVZ0XMTersxeEyXGCgTRMl3oYcq=w600-h450" width="600" />
</a>
</div>
<p>It is designed to plug between a Commodore PET or Mini PET and an IEEE-488 bus device.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiooOssncIu5zloA95XON2mZOh9XEKZ0UVph_-2-qTcc0vb8iq-FunJ2x3E4i13lfTQ-gTemilcp7OTETQEofjLmw8VJE6JaFmYNe7v4_RKt1KCFlsyC7ZWC4NPQbfkKhVeTt6YBvIpr-XxJGW20pDJSm_fGNr1EcehHphvK3_IpCLGj3xiQL8eW-TDt_7s" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3287" data-original-width="4383" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiooOssncIu5zloA95XON2mZOh9XEKZ0UVph_-2-qTcc0vb8iq-FunJ2x3E4i13lfTQ-gTemilcp7OTETQEofjLmw8VJE6JaFmYNe7v4_RKt1KCFlsyC7ZWC4NPQbfkKhVeTt6YBvIpr-XxJGW20pDJSm_fGNr1EcehHphvK3_IpCLGj3xiQL8eW-TDt_7s=w600-h450" width="600" />
</a>
</div>
<p>When the bus is in use, the LEDs will flash to show activity.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjtVaiuBRnDnMeHBz9MO_fCLk_3qE1uBVE-ua4TxfDkKi6AhU94Crwyp5n063oR4vufqwJ_ot-VBJFj1SZeFRFJKwanUWecQKqSooX9mX_66_YyhWvoUBuokBybFGPcdHAsjkUYaAFBPh3LbFRt73JjYxXNUhUx5izY4kio2RNtD-NpvTHKdgLI_UbFwKgf" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3160" data-original-width="4214" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjtVaiuBRnDnMeHBz9MO_fCLk_3qE1uBVE-ua4TxfDkKi6AhU94Crwyp5n063oR4vufqwJ_ot-VBJFj1SZeFRFJKwanUWecQKqSooX9mX_66_YyhWvoUBuokBybFGPcdHAsjkUYaAFBPh3LbFRt73JjYxXNUhUx5izY4kio2RNtD-NpvTHKdgLI_UbFwKgf=w600-h450" width="600" />
</a>
</div>
<p>This is an update of my older version with an LED bargraph, I think the individual LEDs look better.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjlul_ChdeNNVK8ICefCy7i_p5WYSNv9jtJFacsEAhRhct9K-jErX8aeA3tSq8ykS4d3izfTlgspWzXaRWWC9D__ZdLB6-9jHlyU7si4cHlHuFviFXXKJDViNvB867vaInIkL6BenEX2jSCfa8vNb83ARZPL2Rilt6A4ag_OaDJNzRbtfLEpHplawVW4MwI" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2282" data-original-width="3423" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEjlul_ChdeNNVK8ICefCy7i_p5WYSNv9jtJFacsEAhRhct9K-jErX8aeA3tSq8ykS4d3izfTlgspWzXaRWWC9D__ZdLB6-9jHlyU7si4cHlHuFviFXXKJDViNvB867vaInIkL6BenEX2jSCfa8vNb83ARZPL2Rilt6A4ag_OaDJNzRbtfLEpHplawVW4MwI=w600-h400" width="600" />
</a>
</div>
<p>I have also updated the drivers, they are now using 74HCT245 chips to reduce loading on the bus signals. This also allows the LEDs to be lit when the signals on the bus are asserted (low), the previous version was inverted and the LEDs lit when the signals were inactive (floating high).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiocieIhl4ifFz4HD7e7XZFocxZ3QohjDSHvCNmTLrjdSQ8-oc-GMNr9AM5mcCwYN-qU7Vvki43qHEETjjjvMHBM4znh-cPF9JjBS_0O-7l8gYhm1lyPH7mTd_XlM_KrwhZe-96Ni5rgh4naPkv5_ioeQvom8PXbiZcsXJCu3Vp_m5wC1xGKun8tnN_rn8J" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1246" data-original-width="1898" height="395" src="https://blogger.googleusercontent.com/img/a/AVvXsEiocieIhl4ifFz4HD7e7XZFocxZ3QohjDSHvCNmTLrjdSQ8-oc-GMNr9AM5mcCwYN-qU7Vvki43qHEETjjjvMHBM4znh-cPF9JjBS_0O-7l8gYhm1lyPH7mTd_XlM_KrwhZe-96Ni5rgh4naPkv5_ioeQvom8PXbiZcsXJCu3Vp_m5wC1xGKun8tnN_rn8J=w600-h395" width="600" />
</a>
</div>
<p>The input ranges of the 74HCT245 suit the IEEE-488 bus, with low and high being comfortably in range, and the input being tolerant up to 5V, although in practice, the bus voltage should not normally be as high as that.</p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none; width: 600px;">
<tbody>
<tr>
<td width="20%"><div align="center"><b>State</b></div></td>
<td width="20%"><div align="center"><b>IEEE-488 Typical</b></div></td>
<td width="20%"><div align="center"><b>IEEE-488</b></div></td>
<td width="20%"><div align="center"><b>74HCT</b></div></td>
<td width="20%"><div align="center"><b>LED</b></div></td>
</tr>
<tr>
<td><div align="center">Asserted (low)</div></td>
<td><div align="center">0.22V</div></td>
<td><div align="center">0.4V (max)</div></td>
<td><div align="center">0.8V (max)</div></td>
<td><div align="center">On</div></td>
</tr>
<tr>
<td><div align="center">Released (high)</div></td>
<td><div align="center">3.4V</div></td>
<td><div align="center">2.4V (min)</div></td>
<td><div align="center">2.0V (min)</div></td>
<td><div align="center">Off</div></td>
</tr>
</tbody>
</table>
<p>I have used a mix of red and green LEDs, although you can use whatever you prefer.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhMIAw8LkP_tFKd776AYtUeubZ2mg3YdPeEbFneDDXsruGaizYjq3MqFKEye-QhCYIb7qSKuDgSvVrSmhDoZ_TYM4wWkRxcQ5GwpMoob46gNi43VD5ThpNdlolV3J7z-tsz349rybsBT3nWdHqRV_CqA4l2qifwM39-zyovyo2nLP2oAkv7bhrr8KrVoprC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3554" data-original-width="4739" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhMIAw8LkP_tFKd776AYtUeubZ2mg3YdPeEbFneDDXsruGaizYjq3MqFKEye-QhCYIb7qSKuDgSvVrSmhDoZ_TYM4wWkRxcQ5GwpMoob46gNi43VD5ThpNdlolV3J7z-tsz349rybsBT3nWdHqRV_CqA4l2qifwM39-zyovyo2nLP2oAkv7bhrr8KrVoprC=w600-h450" width="600" />
</a>
</div>
<p>There is now also space for a pin header to be installed to attach a logic analyser to debug signals on the bus, if you happen to be developing a new IEEE-488 bus device <i>(who me? you might think that, but I couldn't possibly comment)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhnU0DZoREbfQwWZIMFGz8OmUs3NORZurJJHLHVWKZNzgvjUfwpXTaQ-LLhfj-YxEPuR9MqrcRa_8HpaSaarGOLi2-dfFL-PLVhfxI3ORsH3QI2jbZYQRIIi7ETScCf40oRNNhJcPx3H_rlvB_Yw_mQlITOQfvvQA0WiBpSW2zXBufG8NIiA0NbeiK0tHPX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3606" data-original-width="4808" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhnU0DZoREbfQwWZIMFGz8OmUs3NORZurJJHLHVWKZNzgvjUfwpXTaQ-LLhfj-YxEPuR9MqrcRa_8HpaSaarGOLi2-dfFL-PLVhfxI3ORsH3QI2jbZYQRIIi7ETScCf40oRNNhJcPx3H_rlvB_Yw_mQlITOQfvvQA0WiBpSW2zXBufG8NIiA0NbeiK0tHPX=w600-h450" width="600" />
</a>
</div>
<h2>Diagnosing PET IEEE-488 Bus Faults</h2>
<p><i>The following section is extracted from a previous post, updated to cover using this new board.</i></p>
<p>All of the Commodore PET series of computers have an IEEE-488 port, used for disk drives and printers. <i>(I checked all of my PETs, and none of them seem to be labelled, but imagine it says IEEE-488 over that port)</i><br />
</p><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdR718_OJgfuru1OvQRzQ8lOwRqEfnjUOBi26N49fnTyN0hEpV-8psC0OePRz0OaEdezNZlV4mK1xBizkL1Hq6Q_gD0_XU6oqK5yadP30d5vstyCLkmWLJAnGI-pUqrJp_vsLdk0Vtc_XX/s1600/IEEE-488+port+with+cable.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1067" data-original-width="1600" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdR718_OJgfuru1OvQRzQ8lOwRqEfnjUOBi26N49fnTyN0hEpV-8psC0OePRz0OaEdezNZlV4mK1xBizkL1Hq6Q_gD0_XU6oqK5yadP30d5vstyCLkmWLJAnGI-pUqrJp_vsLdk0Vtc_XX/w600-h400/IEEE-488+port+with+cable.jpg" width="600" />
</a>
</div>
<p>There are quite a lot of elements that go to making up the port, and thus many things that can go wrong. It is a parallel 24 pin bus, with 8 data pins, and 8 handshaking lines, and 8 ground pins.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSy4tazd0hc6QBGki7r3ZSqpt72aQh8zsSPbG3EhvwEwJXIxKi8ZJoiiV5CUNl5_2rwl0Pxo-71mf4LMaf7Od91exSvq_bBj6OmEKYssANb9jtDYlZbNsbFSpYjhb7P5Wf5kYg90l-_4S-/s1600/8032+IEEE-488.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1067" data-original-width="1600" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSy4tazd0hc6QBGki7r3ZSqpt72aQh8zsSPbG3EhvwEwJXIxKi8ZJoiiV5CUNl5_2rwl0Pxo-71mf4LMaf7Od91exSvq_bBj6OmEKYssANb9jtDYlZbNsbFSpYjhb7P5Wf5kYg90l-_4S-/w600-h400/8032+IEEE-488.jpg" width="600" />
</a>
</div>
<p>Close by the port, there are three MC3446 buffer chips, and next to that a 6520 PIA. You might think that with more than 16 IO pins, that 6520 would be enough to drive the port, but that's not the case.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh4RdBdjLYRunbXR-77_LS1MsA3EHAjzEJhNUR6UZKLbDtkruX1oOnooPo37G6NdfOomcHnd8oKMSF477xWsbJjFSznLdwknEDZBt3CPWb-Wlvm8WoHMgZHUhbI9z3ZKyAFiOwTRubp322OFqkAfX18ffKSFGQ98B6Kd1Hyzl9AgdjnkWRad6zvFRcw-AwL" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2660" data-original-width="3547" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh4RdBdjLYRunbXR-77_LS1MsA3EHAjzEJhNUR6UZKLbDtkruX1oOnooPo37G6NdfOomcHnd8oKMSF477xWsbJjFSznLdwknEDZBt3CPWb-Wlvm8WoHMgZHUhbI9z3ZKyAFiOwTRubp322OFqkAfX18ffKSFGQ98B6Kd1Hyzl9AgdjnkWRad6zvFRcw-AwL=w600-h450" width="600" />
</a>
</div>
<p>It is arranged so that each pin on the IEEE-488 port is connected to two IO pins, one to drive the pin, and one to read the values. So as well as all the pins on that 6520, it also uses a number of IO pins on the other 6520 (near the keyboard connector) and the 6522.</p>
<p>REN is not used, the PET is always going to be the bus master, so it is tied low. IFC is only an output, and SRQ only an input.</p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none; width: 100%;">
<tbody>
<tr>
<td width="30%"><div align="center"><b>Signal</b></div></td>
<td width="35%"><div align="center"><b>Read</b></div></td>
<td width="35%"><div align="center"><b>Write</b></div></td>
</tr>
<tr>
<td><div align="center">DIO1-DIO8</div></td>
<td><div align="center">PIA#1 PA0-PA7</div></td>
<td><div align="center">PIA#1 PB0-PB7</div></td>
</tr>
<tr>
<td><div align="center">EOI</div></td>
<td><div align="center">PIA#2 PA6</div></td>
<td><div align="center">PIA#2 CA2</div></td>
</tr>
<tr>
<td><div align="center">DAV</div></td>
<td><div align="center">VIA PB7</div></td>
<td><div align="center">PIA#1 CB2</div></td>
</tr>
<tr>
<td><div align="center">NRFD</div></td>
<td><div align="center">VIA PB6</div></td>
<td><div align="center">VIA PB1</div></td>
</tr>
<tr>
<td><div align="center">NDAC</div></td>
<td><div align="center">VIA PB0</div></td>
<td><div align="center">PIA#1 CA2</div></td>
</tr>
<tr>
<td><div align="center">IFC</div></td>
<td><div align="center">N/C</div></td>
<td><div align="center">Reset buffered through 7417</div></td>
</tr>
<tr>
<td><div align="center">SRQ</div></td>
<td><div align="center">PIA#1 CB1</div></td>
<td><div align="center">N/C</div></td>
</tr>
<tr>
<td><div align="center">ATN</div></td>
<td><div align="center">PIA#2 CA1</div></td>
<td><div align="center">VIA PB2</div></td>
</tr>
<tr>
<td><div align="center">REN</div></td>
<td><div align="center">N/C</div></td>
<td><div align="center">Tied low</div></td>
</tr>
</tbody>
</table>
<p>In the above table, there are three main chips referred to PIA#2 is the 6520 nearest the keyboard connector, PIA#1 is the other 6520, nearest the IEEE-488 port, VIA is the 6522, usually between those two.</p>
<p>The IEEE-488 bus is one part of the PET which didn't change from the 2001 up to the 8032, and with a few minor changes onto the later CBM-II machines.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikTTBZfcbW88awMQHyn2OQrrLGrPD853l-H9-brYJ40H4GPpT4CuJYyKodzIi28Zr-Qms3OXfDNY2qd-Ssk7Nh6k3cdzBEekD8uzcvF2UBXvKZd-tEZ4k0ZjDRVvwHEiKhK2XE2K30T1UF/s1600/6520+and+3446s.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="1067" data-original-width="1600" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikTTBZfcbW88awMQHyn2OQrrLGrPD853l-H9-brYJ40H4GPpT4CuJYyKodzIi28Zr-Qms3OXfDNY2qd-Ssk7Nh6k3cdzBEekD8uzcvF2UBXvKZd-tEZ4k0ZjDRVvwHEiKhK2XE2K30T1UF/w600-h400/6520+and+3446s.jpg" width="600" />
</a>
</div>
<p>This two way circuitry does make it possible to do quite a lot of testing from the machine itself. If you read back the value of a pin, then change the machine output and read it back again, you can see if it has changed. The 8 data bits are the easiest to start with, whatever value you write to address 59426 is written to the port, so:</p>
<blockquote class="tr_bq">
<span style="font-family: "courier new" , "courier" , monospace;">POKE 59426,0</span>
</blockquote>
<p>will set all the outputs low (all LEDs should be on). Writing 0 to one of these outputs pulls the bus line low, this is the 'asserted' signal, and means it is active (LED on). When no device is asserting that signal, the line is pulled high by pull up resistors, 'released' to high, and the LED will be off. Nothing should ever drive the bus high, all they do is let it float high or pull it low. </p><p>To read back from the port, type:</p>
<blockquote class="tr_bq">
<span style="font-family: "courier new" , "courier" , monospace;">PRINT PEEK(59424)</span>
</blockquote>
<p>That should show 0. If it does not, there is a problem with PIA#1 or one of the MC3446 buffers. You can then try various other values up to 255 which should have all the output lines high (all LEDs off).</p>
<p>Testing other pins is a little more complicated, this table shows the values to poke and peek at.</p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none; width: 100%;">
<tbody>
<tr>
<td width="23%"><div align="center"><b>Pin</b></div></td>
<td width="23%"><div align="center"><b>Write 0 (Assert)</b></div></td>
<td width="23%"><div align="center"><b>Write 1 (Release)</b></div></td>
<td width="31%"><div align="center"><b>Read value</b></div></td>
</tr>
<tr>
<td><div align="center">DIO1-DIO8</div></td>
<td><div align="center">POKE 59426,0</div></td>
<td><div align="center">POKE 59426,255</div></td>
<td><div align="center">PRINT PEEK(59424)</div></td>
</tr>
<tr>
<td><div align="center">EOI</div></td>
<td><div align="center">POKE 59409,52</div></td>
<td><div align="center">POKE 59409,60</div></td>
<td><div align="center">PRINT PEEK(59408)</div></td>
</tr>
<tr>
<td><div align="center">DAV</div></td>
<td><div align="center">POKE 59427,52</div></td>
<td><div align="center">POKE 59427,60</div></td>
<td><div align="center">PRINT PEEK(59456)</div></td>
</tr>
<tr>
<td><div align="center">NRFD</div></td>
<td><div align="center">POKE 59456,253</div></td>
<td><div align="center">POKE 59409,255</div></td>
<td><div align="center">PRINT PEEK(59456)</div></td>
</tr>
<tr>
<td><div align="center">NDAC</div></td>
<td><div align="center">POKE 59425,52</div></td>
<td><div align="center">POKE 59425,60</div></td>
<td><div align="center">PRINT PEEK(59456)</div></td>
</tr>
<tr>
<td><div align="center">ATN</div></td>
<td><div align="center">POKE 59456,251</div></td>
<td><div align="center">POKE 59456,255</div></td>
<td><div align="center">PRINT PEEK(59425)</div></td>
</tr>
</tbody>
</table>
<p>This can be useful to identify which pins are working, and any that are at fault. It does not show if the problem is the output pin (or it's associated buffer) failing to drive the output low, or the input pin (or it's associated buffer) failing to read back the state correctly.</p>
<p>You can check this with a multimeter on the pins of the port, but it is easier to use the PET IEEE-488 Diagnostic module and monitor the signals on the LEDs.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhKUTVowAhMPA5ZXaHrhx5RVnb3El4aPDHP5WFLftFw8RpLOVqobCQSo0Q7NeXzTXSImg_ofsRsKnFRYx21prJztv73xOx4d3k4GK4jtmREVrD5y86jpXSnKUVD_lZpBItB9AsELixmqtQ4fZhfoWGfb5_VCR6ty5V6wFwJuVWNPOr_A2ip0iXkhhah9dWn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhKUTVowAhMPA5ZXaHrhx5RVnb3El4aPDHP5WFLftFw8RpLOVqobCQSo0Q7NeXzTXSImg_ofsRsKnFRYx21prJztv73xOx4d3k4GK4jtmREVrD5y86jpXSnKUVD_lZpBItB9AsELixmqtQ4fZhfoWGfb5_VCR6ty5V6wFwJuVWNPOr_A2ip0iXkhhah9dWn=w600-h450" width="600" />
</a>
</div>
<p>If the LEDs do not change when you poke values, then the problem is either the MC3446 or the PIA/VIA chip driving the output. You would need to probe the signal between those chips to see if that is changing to see which it is.</p>
<p>If the LEDs are changing, but the values read back, then the problems is either the MC3446 or the PIA/VIA chip reading the input. Again, probe the signal between the chips to see which is at fault.</p>
<hr />
<p>I should have done this last year when I designed this updated version of the boards and got them made, but you know how it is.....</p>
<p>A tweet* yesterday from Ian Scott Johnston showed a similar board he had made for the GPIB interface, and reminded me I needed to write this up.</p>
<p><i>* what am I supposed to call them now, "a post on X"?</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_2tT2MCo6IaFkidX7DE2QkVSkvRQhO31ee-hHCktuP8IALyHnBQboCdnkwEEavROxHBG9aFlumOB7iHIDvi8Dl0A8yvr4wGduLOIBiITRbpXiR7CRqZnkMtKyHk6yB3DsOHaVe-Pl6Im84dj3aqQn0qlWLLjTREztKBp5JIi9CsoTjsoc2dZTsd207CO0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="610" data-original-width="588" height="610" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_2tT2MCo6IaFkidX7DE2QkVSkvRQhO31ee-hHCktuP8IALyHnBQboCdnkwEEavROxHBG9aFlumOB7iHIDvi8Dl0A8yvr4wGduLOIBiITRbpXiR7CRqZnkMtKyHk6yB3DsOHaVe-Pl6Im84dj3aqQn0qlWLLjTREztKBp5JIi9CsoTjsoc2dZTsd207CO0=w588-h610" width="588" />
</a>
</div>
<p>If you don't know Ian, you should check out his YouTube channel for some great test gear repair videos.</p>
<p><a href="https://www.youtube.com/@IanScottJohnston" rel="nofollow" target="_blank">https://www.youtube.com/@IanScottJohnston</a></p>
<br />
<hr />
<h2>Advertisements</h2>
<p>I have listed these on SellMyRetro, it is not (currently) possible to use a dropdown to select different options, so I have listed the PCB only, full kit and assembled versions separately. All include the board to tap power from the datasette, although you can use an alternate 5V DC supply if you wish.</p>
<h3 style="text-align: left;">PET IEEE-488 Diagnostics Assembled</h3>
<p><a href="https://www.sellmyretro.com/offer/details/63989" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63989</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXwwTL_gKT77jHu0uo1XAvPby36Hmzi2-kZypFhw3__Kx37WaPYaji918RKDs-Z2qrMh1Yf9vFmGyaBG8pvUl-FBjixXrBGsqFOOcUyv2Nl7hENRjgK3fn9xARRh8_rrvJgUemojyW8QXsQG6tkT7owEd8goGS0iwjSn2lZdBJpx4VFaUprMkTOocFTgkc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3342" data-original-width="4456" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXwwTL_gKT77jHu0uo1XAvPby36Hmzi2-kZypFhw3__Kx37WaPYaji918RKDs-Z2qrMh1Yf9vFmGyaBG8pvUl-FBjixXrBGsqFOOcUyv2Nl7hENRjgK3fn9xARRh8_rrvJgUemojyW8QXsQG6tkT7owEd8goGS0iwjSn2lZdBJpx4VFaUprMkTOocFTgkc=w600-h450" width="600" />
</a>
</div>
<h3 style="text-align: left;">PET IEEE-488 Diagnostics Full Kit</h3>
<p><a href="https://www.sellmyretro.com/offer/details/63987" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63987</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgOlwfTT625NjaqPfbr99Cq-BiYcLljtQcevy-a0CFY3HIotHVxzIbZnqroU74l8mY7-Sj8iuyiG9il1eGLC6JyVKNocXg9Gjvf8xF_IYmVEXcPewcjzREd-nWDPQC0kbwvsTM_VALn-xkvCdReYVg6bIUsOwK4e3fReayCvhsX2B8KUbs4oUt9H_4w_mHV" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgOlwfTT625NjaqPfbr99Cq-BiYcLljtQcevy-a0CFY3HIotHVxzIbZnqroU74l8mY7-Sj8iuyiG9il1eGLC6JyVKNocXg9Gjvf8xF_IYmVEXcPewcjzREd-nWDPQC0kbwvsTM_VALn-xkvCdReYVg6bIUsOwK4e3fReayCvhsX2B8KUbs4oUt9H_4w_mHV=w600-h450" width="600" />
</a>
</div>
<h3 style="text-align: left;">PET IEEE-488 Diagnostics PCBs only</h3>
<p><a href="https://www.sellmyretro.com/offer/details/63988" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63988</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgCq4W6M_ETlHbP13clHUmjhZ9mp2oiSMojOLDYoiDtKsFgnI5UgwZXIwnSI1wkdzDKFkSWxqRsuiDMiw9A79dRzoO5QkRKtnZrJaRJARBwm1iW-CPwPxpuJU1H4-QQnEzROAdgqXwUuQ_aZlzzRQn59fsFwZ59_9Cb7z6PUirCNfDb8wRVk1RZ0Y4L3bwl" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3042" data-original-width="4056" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgCq4W6M_ETlHbP13clHUmjhZ9mp2oiSMojOLDYoiDtKsFgnI5UgwZXIwnSI1wkdzDKFkSWxqRsuiDMiw9A79dRzoO5QkRKtnZrJaRJARBwm1iW-CPwPxpuJU1H4-QQnEzROAdgqXwUuQ_aZlzzRQn59fsFwZ59_9Cb7z6PUirCNfDb8wRVk1RZ0Y4L3bwl=w600-h450" width="600" />
</a>
</div>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts.</p>
<p>This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-20548056086718719342023-10-15T11:19:00.008+01:002023-12-30T15:21:38.980+00:00How the ZX81 Generates Video<p><i>Now the Minstrel kits are back in stock, it's time for the second in this series of posts from my Patreon, this one covering the video output of the ZX81.</i></p>
<br />
<p>Following on from the previous post which covered the inner workings of the ZX80, today we look at the changes made for the ZX81.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEin3o3uQiuRVaQIzWZl-6TNzC6SHzgrXWc0wUDxRHf1iDpzRc0UbOTcf2BZpl1rxWE07qSsxRwU93etD54Z4s61AOzenMtzTom-YtyjFzPno7Jd28XBsqS_nH4I_uj0y9_nIVtt3cpFJo4JDWem0d1KPJ2TIEtCyE_gnXzhdxFmXSNnFw2aBkogtWXwPRAT" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3432" data-original-width="4568" height="482" src="https://blogger.googleusercontent.com/img/a/AVvXsEin3o3uQiuRVaQIzWZl-6TNzC6SHzgrXWc0wUDxRHf1iDpzRc0UbOTcf2BZpl1rxWE07qSsxRwU93etD54Z4s61AOzenMtzTom-YtyjFzPno7Jd28XBsqS_nH4I_uj0y9_nIVtt3cpFJo4JDWem0d1KPJ2TIEtCyE_gnXzhdxFmXSNnFw2aBkogtWXwPRAT=w600-h482" width="600" />
</a>
</div>
<p>Most of the video generation circuitry is the same as that in the ZX80, so please refer to the previous post if you have not already seen it.</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx80-generates-video.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx80-generates-video.html</a></p>
<p>Before discussing the actual changes, I should first address the biggest practical change. All of the TTL logic chips used in the ZX80, as well as all the logic required to implement the other changes have all been contained within a single IC. The ULA (Uncommitted Logic Array), an early form of CPLD, in this case a factory mask programmed array of logic gates. This is a very early one, with just a date code.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh3dySApbuRN8REMjfeNiez7Ajr_meXtxMDojQbcVM-LuUqCHkQleBrjDu7lalTuZfj5J-YIsU4kH27VxNoRe8S-_haA79YVLGaIXwTRMYPnliLDjJw8fSgrPY6peYe8y5_O9GPFl7Mdtqf1NNjN1Yhv-vTUW4u-B4byjexvLPF505Yn1t0sGenX2ltwXLy" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh3dySApbuRN8REMjfeNiez7Ajr_meXtxMDojQbcVM-LuUqCHkQleBrjDu7lalTuZfj5J-YIsU4kH27VxNoRe8S-_haA79YVLGaIXwTRMYPnliLDjJw8fSgrPY6peYe8y5_O9GPFl7Mdtqf1NNjN1Yhv-vTUW4u-B4byjexvLPF505Yn1t0sGenX2ltwXLy=w600-h450" width="600" />
</a>
</div>
<p>The new ZX81 board (right) was a lot smaller and simpler than the ZX80 (left) thanks to most of the chips being replaced by the ULA.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgdsVJvus8v8ReyUrc0XH8wPMg7bFSoT2tYottlzLY7Ikb5vdUvH55zqsMLQuk3y1V4Kq9YHVxbCwGM8VuobZknAjjS-e9drzWfRKhQOuicQWxivczt2xPqkiVasuJcdkwmHmRiE9PCaLMRguT2FQfzgSYOt0pjangUzrSUOG9NMv1qTAIm0CpYnEGTJ4Bu" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="795" data-original-width="1259" height="380" src="https://blogger.googleusercontent.com/img/a/AVvXsEgdsVJvus8v8ReyUrc0XH8wPMg7bFSoT2tYottlzLY7Ikb5vdUvH55zqsMLQuk3y1V4Kq9YHVxbCwGM8VuobZknAjjS-e9drzWfRKhQOuicQWxivczt2xPqkiVasuJcdkwmHmRiE9PCaLMRguT2FQfzgSYOt0pjangUzrSUOG9NMv1qTAIm0CpYnEGTJ4Bu=w600-h380" width="600" />
</a>
</div>
<p>The exact implementation of the new features is not obvious from looking at the board or the schematic. It has been reverse engineered by various people over the years, most notably Grant Searle who's website is a mine of information for all things 8-bit single board computer and ZX80/81 related..</p>
<p><a href="http://searle.x10host.com/zx80/zx80.html" rel="nofollow" target="_blank">http://searle.x10host.com/zx80/zx80.html</a></p>
<p>Other than the cost reduction and simplification of the ZX81 into essentially a 4 chip computer, the main aim was to get rid of the flicker whenever a key was pressed or code was run.</p>
<p>The Z80 in the ZX80 was usually in one of two states, it was either drawing the screen, or running code. </p><p>Since the Z80 is so intricately involved in generating the screen, it cannot run code at the same time. When it has to run code, it can not generate a screen. This leads to anything from a slight flicker when you press a key to extended periods where no video signal is generated as user code is executing.</p><p>A modern TV will switch to "No signal" after a few seconds of that. </p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFVJNriTSBt6XDPKy47tpe8laGfrrwv6yul1rPErHPodHFhabi2d7-I4qwm8qhahYx4SQqGCxwWNDNU1x6WfnkDEkjpN8qB9sxeAUgIAs3R6MOSKldTRp4exUjG1AyqaHG8eOb1SyZ2FuiA-WCWYdBj0RrO08Pt-UGdq-OFQlP_IUB72HxdFntKaN-dQPv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1704" data-original-width="2272" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFVJNriTSBt6XDPKy47tpe8laGfrrwv6yul1rPErHPodHFhabi2d7-I4qwm8qhahYx4SQqGCxwWNDNU1x6WfnkDEkjpN8qB9sxeAUgIAs3R6MOSKldTRp4exUjG1AyqaHG8eOb1SyZ2FuiA-WCWYdBj0RrO08Pt-UGdq-OFQlP_IUB72HxdFntKaN-dQPv=w600-h450" width="600" />
</a>
</div>
<p><i>(you still get a black screen on an old TV, it would only be snow if the modulator was shut down, but it's difficult to take a picture of a black screen, so here is a picture of some snow in case you are feeling festive)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgMUh5-4XLC4TjHVn9ZM802pl-vsL8H_LwqO8OWGtxgXXr_9T5tjtg4d5gwCOWiCIC1MLD2-IPiGrrCziWUOWtJFbmn_7WYptKG-nHK-iKY8h5iBdJb1C7_-J_8SY5l4HEn5sEDWRNfUNAGD2H47fmIsjUjJ-_gxfGUUAcHRks996A8WNvqJZtkRG9Pk0Bv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2752" data-original-width="3669" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgMUh5-4XLC4TjHVn9ZM802pl-vsL8H_LwqO8OWGtxgXXr_9T5tjtg4d5gwCOWiCIC1MLD2-IPiGrrCziWUOWtJFbmn_7WYptKG-nHK-iKY8h5iBdJb1C7_-J_8SY5l4HEn5sEDWRNfUNAGD2H47fmIsjUjJ-_gxfGUUAcHRks996A8WNvqJZtkRG9Pk0Bv=w600-h450" width="600" />
</a>
</div>
<p>To get around that, the ZX81 added a new mode. The ZX80 style mode became known as "fast" mode. A mode where code is run at full speed, but cannot generate a screen.</p>
<p>The ZX81's new mode was the corresponding "slow" mode. Here, code is run when the blank areas at the top and bottom of the screen are being generated. The rest of the time, the screen is generated as normal. Code is only run for a short amount of time, hence the "slow" mode.</p><p>The USA models had fewer blank lines each frame (64 vs 112), so slow mode on a TS1000 was even slower than on a ZX81.</p>
<p>The "fast" mode was still available if a lot of code needed to be run quickly, a notable example being the "mists of time" when the maze is generated in 3D Monster Maze (oddly, this is mainly due to that section being written in BASIC, unlike the rest of the game).</p>
<p>The new version of BASIC for the ZX81 was double the size, an 8K ROM, with trig functions and a floating point number system. It also had an updated font (see ZX80 post for examples of the change to the K character).</p>
<p>It added lots of functions, and moved many of the existing ones around, into more familiar places such as PRINT and " on the P key, and LOAD on J.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgulINSHchuCQQWdDf9291xWOLLxL4AUtnqiyVi3lIwTO4bVHPkhaBCo7he1hmviA34WQnTLX9kISaJxZjbedSyxPRdEwMSmpQaSzSWoS34WMY389ogfrbHWIIkDB3SLy6b1TyixahqsckaC7_9YUBIY8PJlXvTZ3CBYIdoYWxySqzgwbhYixeums2j3VA2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1398" data-original-width="1864" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgulINSHchuCQQWdDf9291xWOLLxL4AUtnqiyVi3lIwTO4bVHPkhaBCo7he1hmviA34WQnTLX9kISaJxZjbedSyxPRdEwMSmpQaSzSWoS34WMY389ogfrbHWIIkDB3SLy6b1TyixahqsckaC7_9YUBIY8PJlXvTZ3CBYIdoYWxySqzgwbhYixeums2j3VA2=w600-h450" width="600" />
</a>
</div>
<p>There were also keywords to enter the new SLOW mode and FAST mode.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgdzqtwDuEge9KM66Stc5xtBPiBeZTt3a3y90WhHJlKFXvhrjivmE0ZuF7O8YFODB2iLQguG0SIX3Z-f9ubHWrEp8fCHiI3xN_yLQwFIz3UBOUpSSl1aelJ4I1eLwZyfgcPlodMaFzwCgDh1h25Snztv2-6nQexHra100CC3JmXnpmNJuHZeNh4QsmK8vkF" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1977" data-original-width="2636" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgdzqtwDuEge9KM66Stc5xtBPiBeZTt3a3y90WhHJlKFXvhrjivmE0ZuF7O8YFODB2iLQguG0SIX3Z-f9ubHWrEp8fCHiI3xN_yLQwFIz3UBOUpSSl1aelJ4I1eLwZyfgcPlodMaFzwCgDh1h25Snztv2-6nQexHra100CC3JmXnpmNJuHZeNh4QsmK8vkF=w600-h450" width="600" />
</a>
</div>
<br />
<h2 style="text-align: left;">So, how does it work?</h2>
<p>A quick recap of how the ZX80 generates normal lines:</p>
<p>The Z80 is setup to read a line of characters in the display file. It progresses through that line, incrementing the refresh counter for each character, until the new line character is reached. This halts the Z80 and it remains halted for a short time until woken by an interrupt at the end of the line.</p><p>HSync indicates the start of a line, /Halt goes low whilst halted, and the IntAck pulses show where the interrupt is acknowledged. (I am not showing /Int here as it is tied to A6 which does a lot of other things, so it does not help)</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgzqvRKmnSteSnYC-U3VeMwpmNsK8NBJG1hIPpriDM2JFGjoEcmT5_iLoPj1ZMunA6-UplxEIFZOKJFqaBTMgIaKbJQuaCvSMd6OBG7ygWyx5aaumpWQ3X29kjLLKLR0NQ8J1jr-If-tk5MQRGtWIPITR1I6QsTtowI-2riIZnTwNBSrpnkFSzcJSsxFChz" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="415" data-original-width="554" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgzqvRKmnSteSnYC-U3VeMwpmNsK8NBJG1hIPpriDM2JFGjoEcmT5_iLoPj1ZMunA6-UplxEIFZOKJFqaBTMgIaKbJQuaCvSMd6OBG7ygWyx5aaumpWQ3X29kjLLKLR0NQ8J1jr-If-tk5MQRGtWIPITR1I6QsTtowI-2riIZnTwNBSrpnkFSzcJSsxFChz=w600-h450" width="600" />
</a>
</div>
<p>The blank lines at the top and bottom of the display are generated by pointing at the start of the DFILE which is a newline character, so it immediately halts and starts to run NOP instructions internally.</p>
<p>It remains halted for the rest of the line, until it is again woken by an interrupt.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgROilkeDLDOE1Ho3kgWts7tOrorSNasRArvUgbWZplujhy1jQh1tjinhi6cgIUUbcXtaYIi9OafNTkIhLv-T6eaSoTBaf-dUSq5pGIoG9TAI3X7kyWvB1eHY6qIEB6lrUn4w3-eOOYM1IVrevO6qWavdBfWuqiK3CKwvwb2qGnJ5EDfVYA5G6K9LLjHuaZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="384" data-original-width="512" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgROilkeDLDOE1Ho3kgWts7tOrorSNasRArvUgbWZplujhy1jQh1tjinhi6cgIUUbcXtaYIi9OafNTkIhLv-T6eaSoTBaf-dUSq5pGIoG9TAI3X7kyWvB1eHY6qIEB6lrUn4w3-eOOYM1IVrevO6qWavdBfWuqiK3CKwvwb2qGnJ5EDfVYA5G6K9LLjHuaZ=w600-h450" width="600" />
</a>
</div>
<p>That is a lot of time spent halted, and this wasted time is used on the ZX81 to execute user code.</p>
<p>Previously the mechanism to generate the interrupt at the end of the line relied on the Z80 refresh counter counting up to a point where A6 was low and an interrupt was triggered.</p>
<p>Using the refresh counter relies on the instructions all being the same number of cycles (they are NOP instructions). User code will contain a variety of instructions and the number of cycles each instruction uses varies, so this will no longer be a constant time.</p>
<p>To get around this, the ZX81 added a counter which is reset at the start of each line. When it counts 208 cycles, it is reset and the next line begins. The start of each line generates the horizontal sync pulse, and when configured to do so, a Non Maskable Interrupt that will interrupt user code and increment an internal counter of how many lines have been drawn.</p>
<br />
<h2>NMI generator enable</h2>
<p>To control if the NMI signals should be generated, a latch is used. This is set by OUT FE,A, and cleared by OUT FD,A. These calls are generated by the OS as part of generating the display.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiwO3iusiARGkemaT9_MtzH7izFp_ZxtN3Reb9tWNReLnBLmz-CABAxYBoAhi_UNav6ndUk3m1uFOuVIt_-H8KBTDJIP5gRzzVVKor4SDp3LDlkuEQ_PtDKirjq02qy_f-Amys4GbBFfxcCrjzMU9PpGhr051JyRKT8Ye0TJypZd8Zr6im5Q1m3wKLBjUcj" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="813" data-original-width="1085" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiwO3iusiARGkemaT9_MtzH7izFp_ZxtN3Reb9tWNReLnBLmz-CABAxYBoAhi_UNav6ndUk3m1uFOuVIt_-H8KBTDJIP5gRzzVVKor4SDp3LDlkuEQ_PtDKirjq02qy_f-Amys4GbBFfxcCrjzMU9PpGhr051JyRKT8Ye0TJypZd8Zr6im5Q1m3wKLBjUcj=w600-h450" width="600" />
</a>
</div>
<p>Looking at a whole frame, you can see the NMI generator is enabled in the sections at the top and bottom of the screen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjTVPnClB7B7On5NQWo_r8urskQpool-wNdbzHQRulqYWY0m2YL8ipfKYwtkv-h7_B72Xl9AiY8ps_FJs66ASFYZBSWKEd9j4LInRHW1qeHKpIUwbKbHcaJoBVUtxiqCLXcz81SYhNAuW6FG2PtqdeTIHUe_KJPax3MpgNuUmbr0S59N-JClLrqSBDzFTmh" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="409" data-original-width="982" height="266" src="https://blogger.googleusercontent.com/img/a/AVvXsEjTVPnClB7B7On5NQWo_r8urskQpool-wNdbzHQRulqYWY0m2YL8ipfKYwtkv-h7_B72Xl9AiY8ps_FJs66ASFYZBSWKEd9j4LInRHW1qeHKpIUwbKbHcaJoBVUtxiqCLXcz81SYhNAuW6FG2PtqdeTIHUe_KJPax3MpgNuUmbr0S59N-JClLrqSBDzFTmh=w600-h266" width="600" />
</a>
</div>
<p>Why is the generator disabled during the VSync pulse? well that is when the keyboard is scanned, as it was in the ZX80. The first keyboard read is actually the trigger for the VSync pulse <i>(see the ZX80 post for further details)</i>.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjHJrd8J3noEALILxufhIUwI78G_SvaV2e2ZzPt83JlttgMKsCsLVH0_3rydDaJSlZ18Rir_W34PsfPs851hK6b2LFzvecBvmzRNis3OHxpbmRZK68do3iGx-m6-rii0CwAxLUtGW8MAfDSl5DiXcj5QUNhToDk5qgWOussyKTMK-S_5AqmOTmco_CHeyAa" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="378" data-original-width="814" height="298" src="https://blogger.googleusercontent.com/img/a/AVvXsEjHJrd8J3noEALILxufhIUwI78G_SvaV2e2ZzPt83JlttgMKsCsLVH0_3rydDaJSlZ18Rir_W34PsfPs851hK6b2LFzvecBvmzRNis3OHxpbmRZK68do3iGx-m6-rii0CwAxLUtGW8MAfDSl5DiXcj5QUNhToDk5qgWOussyKTMK-S_5AqmOTmco_CHeyAa=w600-h298" width="600" />
</a>
</div>
<p>The NMI Generator enabled signal (here shown as NMI_On) is used to gate the HSync signal to create an /NMI pulse at the same time.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj4jjU6XXZlsQvmMgNaGqPtnZR0bYzqivTfMk9lKowCMfk10w5PwDQpRZelJmQgXntMrmDC6uqcPyzaYVLjwVWzp3lz-64x6_G1TGh7PpQj-y8yz9dN5i-lYI6mQ-7GMn_wbV8U_OcyccG8pGfF14AO7z-FEXHi3MhUXjtcad_oZ9pvi8CqyRCjA8HFrB-A" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="528" data-original-width="1158" height="292" src="https://blogger.googleusercontent.com/img/a/AVvXsEj4jjU6XXZlsQvmMgNaGqPtnZR0bYzqivTfMk9lKowCMfk10w5PwDQpRZelJmQgXntMrmDC6uqcPyzaYVLjwVWzp3lz-64x6_G1TGh7PpQj-y8yz9dN5i-lYI6mQ-7GMn_wbV8U_OcyccG8pGfF14AO7z-FEXHi3MhUXjtcad_oZ9pvi8CqyRCjA8HFrB-A=w600-h292" width="600" />
</a>
</div>
<p>/Wait is also pulled low, to ensure the Z80 is in the correct T-State when the NMI is serviced. This is gated by the /Halt signal, which would always be high as that is normally triggered by processing the End of Line character, which will not happen on the non-visible lines.</p>
<p>I have drawn the /Wait signal generator using a NAND gate (as it is in the Minstrel 3), but that is not the way it was implemented on the ZX81. The ULA contains all the counters and logic to create the /NMI pulse, but the /Wait signal was implemented externally with a single transistor and some passive components.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5qYt11jMc3JiYSTVJO8KJEfpICoitnOqljJh6GCnd3Gm7JrIjQzzEJhVEpndMwT2AWjfxItBkKZ0vgwlwZhjJajmnReV2AKMZwIUWFnUfWHanxO_flDY2RGnnAkAM8RJR8Ca51MzAWRR2ksscfw4utuVWYko7iMxwCeQ9-fq7XfbjfSX0H-ym8WcxGmZG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="842" data-original-width="1123" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5qYt11jMc3JiYSTVJO8KJEfpICoitnOqljJh6GCnd3Gm7JrIjQzzEJhVEpndMwT2AWjfxItBkKZ0vgwlwZhjJajmnReV2AKMZwIUWFnUfWHanxO_flDY2RGnnAkAM8RJR8Ca51MzAWRR2ksscfw4utuVWYko7iMxwCeQ9-fq7XfbjfSX0H-ym8WcxGmZG=w600-h450" width="600" />
</a>
</div>
<p>It looks a little odd in the ZX81 schematic, so I have redrawn it differently to make it easier to see what is happening. For the moment, imagine the emitter was connected to 0V instead of /NMI. It is then a simple inverter. When /Halt is low, the transistor is off, so /Wait is pulled high by R17. When /Halt is high, the transistor switches on and pulls /Wait low. Now, add in the complication that the emitter is actually tied to /NMI. No current can flow in the transistor unless /Halt is high and /NMI is low, in which case, /Wait is also pulled low. <i>(what is the capacitor doing there? it speeds up the switching time of the transistor)</i>.</p>
<p>Here you can see the last few visible lines, the NMI generator being enabled and then the first lines where user code is run.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgYGLz24nimjMmVSeZ6vj8B-awCOjQT3kYELx7hKVCBv-M2LoRk_37uC0dNBoH8v4dE94MGnYdrsdfnKqe1etO3_Q2MXi0zyKfGCXEVsl5ZUkZG2Jqz9BuE3Z5ae-U9jkGW5J-BuxzGvSnalUFTSLbpcI6sY14c_hyx6_iPwHEvsX4BG7RcyMoDoWH89RAK" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="540" data-original-width="866" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEgYGLz24nimjMmVSeZ6vj8B-awCOjQT3kYELx7hKVCBv-M2LoRk_37uC0dNBoH8v4dE94MGnYdrsdfnKqe1etO3_Q2MXi0zyKfGCXEVsl5ZUkZG2Jqz9BuE3Z5ae-U9jkGW5J-BuxzGvSnalUFTSLbpcI6sY14c_hyx6_iPwHEvsX4BG7RcyMoDoWH89RAK=w600-h400" width="600" />
</a>
</div>
<p>During the text lines, /Halt is used to halt the Z80 until it is at the end of the line. This stops when user code is running, and /NMI pulses take over.</p>
<br />
<h2 style="text-align: left;">HSync counter</h2>
<p>HSync pulses are generated based on a self resetting counter. The counter is reset when outputs Q0, Q1, Q2, Q3, Q6 and Q7 are high. The first time this is reached, Q4 and Q5 will be low, so the value will be 1100 1111, 0xCF, or 207. So it counts from 0 to 207 based on a 3,25MHz clock. 3,250,000 / 208 = 15,625. The gives a line frequency of 15.625KHz, a period of 64uS, exactly as required.</p><p>Q4 and Q5 are not tested, so the pulse would be generated at CF, DF, EF and FF, but the counter should be reset the first time the other outputs are all high at CF, so it is not necessary to test those.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgB8BJ1n6OLem_8J08Mdyf48UaeqsLBCkLG7ECOTY0LzVIJ1cdRgiTkuorkwLcJ1qgAwPx5VBwVX2hlLiRy1mS4zSnOH0KoDSDj4jeDFPM16q-gLDy35hz8M7s358UfifC_B0P-xVXxDv4b8tUoYbe8mUYDoYJ3-ovfGD0-_VXVpLHCqbLBMrvNk5bPS-C5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="656" data-original-width="1541" height="272" src="https://blogger.googleusercontent.com/img/a/AVvXsEgB8BJ1n6OLem_8J08Mdyf48UaeqsLBCkLG7ECOTY0LzVIJ1cdRgiTkuorkwLcJ1qgAwPx5VBwVX2hlLiRy1mS4zSnOH0KoDSDj4jeDFPM16q-gLDy35hz8M7s358UfifC_B0P-xVXxDv4b8tUoYbe8mUYDoYJ3-ovfGD0-_VXVpLHCqbLBMrvNk5bPS-C5=w600-h272" width="600" />
</a>
</div>
<p>I have drawn the schematic using ideal parts, to make it easier to follow. For example, the counter is actually two 4 bit counters chained together, and you can't get a 6 input AND gate, so in practice a triple 3 input AND gate or dual 4 input AND gate would be used, but that makes it a little more difficult to follow.</p><p>For the text lines, the end of the line causes an interrupt to fire. Once this is processed, an Interrupt Acknowledge signal is generated. The IntAck appears to arrive just before the counter would reach 208, so the count = 208 pulse is not fired for text lines. Both the IntAck and counter=208 pulses should reset the counter, so they are ORed to create the counter reset pulse.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi2AAI60qCPfHfGfV79UMM7cOHEnXuWX2txDKAfbSHTONwKZ4fVGnKeNfcIpw2ahsqik7ssweXsmZoZSwYEyi6FJ7E92M1gz7Y9ycNobVVGN_E0P4Sja5WEAvnCCgQOy_9Duw-UAzfImjuafiEtkFTJ8Up250gMEGaOmlmOboR3Ro9qa0zUMf3mCKayT7R0" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="330" data-original-width="1047" height="202" src="https://blogger.googleusercontent.com/img/a/AVvXsEi2AAI60qCPfHfGfV79UMM7cOHEnXuWX2txDKAfbSHTONwKZ4fVGnKeNfcIpw2ahsqik7ssweXsmZoZSwYEyi6FJ7E92M1gz7Y9ycNobVVGN_E0P4Sja5WEAvnCCgQOy_9Duw-UAzfImjuafiEtkFTJ8Up250gMEGaOmlmOboR3Ro9qa0zUMf3mCKayT7R0=w600-h202" width="600" />
</a>
</div>
<p>The counter is tapped at the Q3 point to get a 16 cycle clock, a pulse every 4.92uS. A series of flip flops is then used to generate some pulses based on this. HSync needs to start after 16 cycles, and last 16 cycles, so the following logic is used to create the appropriate 16 cycle / 4.92uS pulse.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQvMBpxPqh3W3TjMNNdHEDPB3B_A8DdF9mVXqGDeejfC9Lawl2eJ0yNFtotJxfSP_nCI458maVFjhzqvczFLfwbpf_NU4vocnYIG49P_n6inkdEBtm0Jul1vBrIYczxQu9l1neKC9TQ990V50Uai9d8cNToqqFND81zaM9FUbkinvzDhRio3_lDy_warlR" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="825" data-original-width="1100" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQvMBpxPqh3W3TjMNNdHEDPB3B_A8DdF9mVXqGDeejfC9Lawl2eJ0yNFtotJxfSP_nCI458maVFjhzqvczFLfwbpf_NU4vocnYIG49P_n6inkdEBtm0Jul1vBrIYczxQu9l1neKC9TQ990V50Uai9d8cNToqqFND81zaM9FUbkinvzDhRio3_lDy_warlR=w600-h450" width="600" />
</a>
</div>
<br />
<h2 style="text-align: left;">Fast Mode</h2>
<p>In "fast" mode, (the only option in the ZX80) the Z80 is dedicated to running code, so the screen does not get updated.</p>
<p>The 208 cycle counter is still running and generating HSync pulses, but there is no activity on the other signals.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEii2M7Tavs2qvSR_VTXC3X2-pWpVsPghVqXAcuIOtC7POoLZ7EYI1elVGsFbPF-wanFJd-lQBe75Sz2U-M403-C_jJTHBFZyBGK1OnD_eC16n91kaJZldk69_OteayAwkx9jUbrkDxU60RsqOLMvTTJ2sgh66Fhajj7uF9toKKdh648A0Jux_dcspTwlah7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="801" data-original-width="1067" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEii2M7Tavs2qvSR_VTXC3X2-pWpVsPghVqXAcuIOtC7POoLZ7EYI1elVGsFbPF-wanFJd-lQBe75Sz2U-M403-C_jJTHBFZyBGK1OnD_eC16n91kaJZldk69_OteayAwkx9jUbrkDxU60RsqOLMvTTJ2sgh66Fhajj7uF9toKKdh648A0Jux_dcspTwlah7=w600-h450" width="600" />
</a>
</div>
<p>The NMI generator is not enabled, so no /NMI pulses are generated. The keyboard is being periodically checked, which activates the VSync, so that signal is permanently stuck low, and the composite video signal is flat. Yellow is composite video, blue shows the HSync signal.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiQNusc3izyl6l_Ty1U5_2izz1pnGiRrPt6raGJJmhdoC8rnS30cmADLLfKowRkhc8y0Z4YbRO6HA_UJOF7XxbKaU4TUggtrZV23n0flwPVDXF8pnHrQyotQcVVemybD2FA7PPcfYyyOywIPhm4GvjIXJlStoYjBdxfQbtqcAN7JVC-mopIksBOa263j4A6" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="384" src="https://blogger.googleusercontent.com/img/a/AVvXsEiQNusc3izyl6l_Ty1U5_2izz1pnGiRrPt6raGJJmhdoC8rnS30cmADLLfKowRkhc8y0Z4YbRO6HA_UJOF7XxbKaU4TUggtrZV23n0flwPVDXF8pnHrQyotQcVVemybD2FA7PPcfYyyOywIPhm4GvjIXJlStoYjBdxfQbtqcAN7JVC-mopIksBOa263j4A6=w600-h384" width="600" />
</a>
</div>
<h2>Disabling VSync Generation</h2>
<p>When blank lines are being generated and user code being run, the VSync generation circuitry is disabled. An AND gate is added to stop a user keyboard read from starting a VSync pulse in the middle of a line.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHabVeeDszQM3k83Izj1uAjSh3xzLDpsFeEV2Wv_iJ0GrWBIi2f4dNGP-0X3za0OKeVuaLmS_qU2qeyDzjHvobwYNpDH-QhGJ4biluVc2WQOjd7S13JnIPPoTdzQ_p3rk98ZXGsjrLIrD9KgLjHRz19rFWyWC1ICEJl8T0hkerX0L3sgbEB5w90zADX9bh" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="652" data-original-width="1163" height="358" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHabVeeDszQM3k83Izj1uAjSh3xzLDpsFeEV2Wv_iJ0GrWBIi2f4dNGP-0X3za0OKeVuaLmS_qU2qeyDzjHvobwYNpDH-QhGJ4biluVc2WQOjd7S13JnIPPoTdzQ_p3rk98ZXGsjrLIrD9KgLjHRz19rFWyWC1ICEJl8T0hkerX0L3sgbEB5w90zADX9bh=w600-h358" width="600" />
</a>
</div>
<p>A NOR gate is used to interrupt the signal which loads the shift register, so the output remains low, which translates to a white line on the screen.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiWNUtPXNpIenoNoAh3mbVqUAZEApb6vkSG4pzjej7990HrREQpO6eq-EH9_ZbL_CK5nXpDxSqsaeXc3SAJRPUZ2IT0FmqNznSZyHkaD2UbD5rJa9Tu-KGvSgTs8da_pYcbybOMG5vW2qcdAG_f2s3TJaLcAB09lLtJQpEOLJcXSK2s7fqcVX3yolWCoog1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="618" data-original-width="1151" height="344" src="https://blogger.googleusercontent.com/img/a/AVvXsEiWNUtPXNpIenoNoAh3mbVqUAZEApb6vkSG4pzjej7990HrREQpO6eq-EH9_ZbL_CK5nXpDxSqsaeXc3SAJRPUZ2IT0FmqNznSZyHkaD2UbD5rJa9Tu-KGvSgTs8da_pYcbybOMG5vW2qcdAG_f2s3TJaLcAB09lLtJQpEOLJcXSK2s7fqcVX3yolWCoog1=w600-h344" width="600" />
</a>
</div>
<p>The HSync signal generated by the old hardware is no longer used, so in the Minstrel 3 I omitted the circuit. That means only VSync is used as the save signal now, with no glitches caused by the HSync circuitry.</p>
<h2 style="text-align: left;">Back Porch</h2>
<p>On the Minstrel 3, I added an extra flip flop to the circuit that generates the HSync pulse. This is an additional 16 cycle pulse directly after the HSync, and is used to create the missing back porch of the video signal. On the Minstrel 2, this was generated using an RC circuit, but I prefer the this approach.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg38lUJqgZrLhfc6dCVpqs50Lm_ca6ozbjG4JOrcNs7pHI_8Vnbe4tvG-rBZZK-aE2hBkd4uNX4p84CbWustFCfg_odQuyKcxoxjyOXKk5Eh9bXSYa_cc9XwK2-TE6OG2TMnjedPGGfaks0dp30m1vaHZS0a7KzAmjglypkoAdfLDmjP4EPYZ7MjkILL6sc" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="825" data-original-width="1492" height="354" src="https://blogger.googleusercontent.com/img/a/AVvXsEg38lUJqgZrLhfc6dCVpqs50Lm_ca6ozbjG4JOrcNs7pHI_8Vnbe4tvG-rBZZK-aE2hBkd4uNX4p84CbWustFCfg_odQuyKcxoxjyOXKk5Eh9bXSYa_cc9XwK2-TE6OG2TMnjedPGGfaks0dp30m1vaHZS0a7KzAmjglypkoAdfLDmjP4EPYZ7MjkILL6sc=w600-h354" width="600" />
</a>
</div>
<p>Here you can see the three pulses generated at the start of each line.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhdFs8UqNCokS2IuNGGNbreDk3e7EMitQnsLovdxU0DlqCB0XI973C2-8NmEiEHtuj5cCcFOMdFu3znstwMIJjnED68SPyAa0rhbuE8XSy5omH32Nmr5iGuZqIjE0u8e2oeIWE1o4wsk2yWX4FM5vdgU6KVQ6zFT3qulWY8VWOW8EZubijy81BJU-dV0s-b" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="370" data-original-width="778" height="304" src="https://blogger.googleusercontent.com/img/a/AVvXsEhdFs8UqNCokS2IuNGGNbreDk3e7EMitQnsLovdxU0DlqCB0XI973C2-8NmEiEHtuj5cCcFOMdFu3znstwMIJjnED68SPyAa0rhbuE8XSy5omH32Nmr5iGuZqIjE0u8e2oeIWE1o4wsk2yWX4FM5vdgU6KVQ6zFT3qulWY8VWOW8EZubijy81BJU-dV0s-b=w600-h304" width="600" />
</a>
</div>
<p>The timings are close enough to the requirements, so that works well.</p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none; width: 600px;">
<tbody>
<tr>
<td width="25%"><div align="center"><b>Signal</b></div></td>
<td width="25%"><div align="center"><b>Ideal Timing</b></div></td>
<td width="25%"><div align="center"><b>Actual Timings</b></div></td>
<td width="25%"><div align="center"><b>Cycles</b></div></td>
</tr>
<tr>
<td><div align="center">Horizontal Sync</div></td>
<td><div align="center">4.70μS</div></td>
<td><div align="center">4.92μS</div></td>
<td><div align="center">16</div></td>
</tr>
<tr>
<td><div align="center">Back Porch</div></td>
<td><div align="center">5.80μS</div></td>
<td><div align="center">4.92μS</div></td>
<td><div align="center">16</div></td>
</tr>
</tbody>
</table>
<p>Here you can see the /Hsync in blue and the back porch in green and the resulting composite video signal in yellow at the end of a line.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjscqGjnivn-7fRWdnjJPBUK3rvp5ivk7WFDriBFeSRxf69mw7i-gw-O6YeaMa6hFxlA6nMIqRKCZFBmNTHzxqP-tNV_nyYBmt1SP5moaN7MkJ0ynhSQZ_Ea89D8kc-b7t3k0OQD332hUVJRl_dz7PL_-_1QiP_vbHVHIyjOx5ZrLHPwT1Mc1XmWbKUhEww" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="384" src="https://blogger.googleusercontent.com/img/a/AVvXsEjscqGjnivn-7fRWdnjJPBUK3rvp5ivk7WFDriBFeSRxf69mw7i-gw-O6YeaMa6hFxlA6nMIqRKCZFBmNTHzxqP-tNV_nyYBmt1SP5moaN7MkJ0ynhSQZ_Ea89D8kc-b7t3k0OQD332hUVJRl_dz7PL_-_1QiP_vbHVHIyjOx5ZrLHPwT1Mc1XmWbKUhEww=w600-h384" width="600" />
</a>
</div>
<p>The later ZX81 2C210E ULA also had a back porch signal, probably generated in a similar way.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEizF7PbB12pqkYbJI0i6AM6q0MRvKQ4L-tyyixHcpGAlLpT5nG5lCkqjTbcNrSNuXZg6kyiy8UPVEoz6FnMNns2cuvHy6DiAkscKmR-xV4CoKGfxwyxq5tr5hCf4Ul7LNR-O4vxlHow1XZMbN_WtPRcr8AEOsPEIHNj_5MLMGCzcZZdyIDqOslcEIUq1wFw" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEizF7PbB12pqkYbJI0i6AM6q0MRvKQ4L-tyyixHcpGAlLpT5nG5lCkqjTbcNrSNuXZg6kyiy8UPVEoz6FnMNns2cuvHy6DiAkscKmR-xV4CoKGfxwyxq5tr5hCf4Ul7LNR-O4vxlHow1XZMbN_WtPRcr8AEOsPEIHNj_5MLMGCzcZZdyIDqOslcEIUq1wFw=w600-h450" width="600" />
</a>
</div>
<p>The first pulse on the above schematic is marked as the front porch, although it is not used. That could have been generated and ANDed with the back porch signal to generate a proper front and back porch, but in practice, it does not seem to matter. The timing would also need adjusting. The front porch should be approximately 1.65μS, so that 16 cycle pulse would need to be gated with the lower bits of the times to make it only active for the last 4, 5 or 6 cycles of the 16 cycle pulse.</p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none; width: 600px;">
<tbody>
<tr>
<td width="25%"><div align="center"><b>Signal</b></div></td>
<td width="25%"><div align="center"><b>Ideal Timing</b></div></td>
<td width="25%"><div align="center"><b>Actual Timings</b></div></td>
<td width="25%"><div align="center"><b>Cycles</b></div></td>
</tr>
<tr>
<td><div align="center">Front Porch</div></td>
<td><div align="center">1.65μS</div></td>
<td><div align="center">4.92μS</div></td>
<td><div align="center">16</div></td>
</tr>
<tr>
<td><div align="center">Alternate 1</div></td>
<td><div align="center">1.65μS</div></td>
<td><div align="center">1.23μS</div></td>
<td><div align="center">4</div></td>
</tr>
<tr>
<td><div align="center">Alternate 2</div></td>
<td><div align="center">1.65μS</div></td>
<td><div align="center">1.54μS</div></td>
<td><div align="center">5</div></td>
</tr>
<tr>
<td><div align="center">Alternate 3</div></td>
<td><div align="center">1.65μS</div></td>
<td><div align="center">1.85μS</div></td>
<td><div align="center">6</div></td>
</tr>
</tbody>
</table>
<br />
<h2 style="text-align: left;">Other Minstrel 3 changes</h2>
<p>The Minstrel 2 followed the ZX80 schematic quite closely, other than the improved composite video circuitry tacked onto the end in place of the RF modulator, and the modern ROM and RAM chips.</p>
<p>The Minstrel 3 deviated quite considerably. I started with the Minstrel 2 version of the ZX80 schematic and added in all of the above changes.</p>
<p>A big change was the switch from 74LS series TTL chips to the high speed CMOS 74HC series. This cleaned up all the signals, and reduced the current consumption by about a third.</p>
<p>There were also two new jumper options.</p>
<p>The first disables slow mode to make the circuitry act like the ZX80. It stops the NMI generator latch being triggered, so slow mode will never be enabled.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgIeOu2lIgFcUV-CQAcH62x5f6F65iyBZj9gEm_HsjEi1LLd85cUPVWYqGTAgzgUlZaQ8L5Uo3wOchzz8QEW75jkLHxqoGP1hdy8PHWy6-HYpwj1YtLHdQji5ghPQsb35QafV8RPLtJy1V9tT_iLMDun5W9n6NWYIfGfHkZgR2uPsEPizvBpO_yFEQJfa6-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="596" data-original-width="1472" height="235" src="https://blogger.googleusercontent.com/img/a/AVvXsEgIeOu2lIgFcUV-CQAcH62x5f6F65iyBZj9gEm_HsjEi1LLd85cUPVWYqGTAgzgUlZaQ8L5Uo3wOchzz8QEW75jkLHxqoGP1hdy8PHWy6-HYpwj1YtLHdQji5ghPQsb35QafV8RPLtJy1V9tT_iLMDun5W9n6NWYIfGfHkZgR2uPsEPizvBpO_yFEQJfa6-=w600-h235" width="600" />
</a>
</div>
<p>This has also been reimplemented with a 74HC74 flip flop, so the power on state can be controlled by the reset line. The same has happened with the VSync flip flop.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEghDfCfcxJgHB5CIB7KUNGUF2ovhkz5hv69Hy_V-9FzW0x9ikNild24T4cQ1MT_jTMezI3ofhe62wo7ZECztQNf1YUULPOvVhGZhmf8VM954CP7mjsiS5W-CqBkNTUthpyImKILCPNnZhoXIyijXutuNyly4Q1Y6dOGWKFv5bujYI_XSry8dHh4E1agdFP2" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="476" data-original-width="1319" height="220" src="https://blogger.googleusercontent.com/img/a/AVvXsEghDfCfcxJgHB5CIB7KUNGUF2ovhkz5hv69Hy_V-9FzW0x9ikNild24T4cQ1MT_jTMezI3ofhe62wo7ZECztQNf1YUULPOvVhGZhmf8VM954CP7mjsiS5W-CqBkNTUthpyImKILCPNnZhoXIyijXutuNyly4Q1Y6dOGWKFv5bujYI_XSry8dHh4E1agdFP2=w600-h220" width="600" />
</a>
</div>
<p>This helps when using the ZX80 4K ROM on the Minstrel 3 hardware. The 8K ROM starts with <b>OUT ($FD),A</b> which disabled the NMI generator, but the 4K ROM knows nothing of it. VSync starting on just means the composite video output with start low for a clean first frame.</p>
<p>The second creates a grey-scale border by feeding a chequerboard pulse into the shift register input which is used when no data is being clocked in, when no characters are being displayed. This is the clock pulse XORed with the lowest bit of the line counter so it alternates each line. As seen in the previous post, this gives an insight into the unexpanded display file.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgDMKjdDsuobQCuUfFIfSmgSvZt-2Gfj8rw0JnD43OMqicaE2L6cF7SQCPHMuUbMgaiRvYl2zAbeyisKoGulyuwyhZ96h3Hdzee87qHdqDwkBrPkTcZEjgyeYKorKQm1ePqWWoahbb8u5h4QAMUsSf4Kgvfs5XGTeYkeuKvCjxCnY13vlh920NtLOyo2D-C" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="657" data-original-width="1242" height="338" src="https://blogger.googleusercontent.com/img/a/AVvXsEgDMKjdDsuobQCuUfFIfSmgSvZt-2Gfj8rw0JnD43OMqicaE2L6cF7SQCPHMuUbMgaiRvYl2zAbeyisKoGulyuwyhZ96h3Hdzee87qHdqDwkBrPkTcZEjgyeYKorKQm1ePqWWoahbb8u5h4QAMUsSf4Kgvfs5XGTeYkeuKvCjxCnY13vlh920NtLOyo2D-C=w600-h338" width="600" />
</a>
</div>
<p>There are also jumpers to select normal / inverse video and 50Hz / 60Hz frame rate as in the Minstrel 2, and jumpers to select the upper address lines to allow multiple ROM images to be used.</p>
<p>As was later added to the Minstrel 2, a character synchronisation flip flop is used to tidy up the video signal so it always generates equally sized pixels. The clear input of the flip flop is used to add the back porch signal.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjDU0s5SrCi3dqReQa1x8znh9R5jWgf6LrmpDOIGitHsa4SuJ7M4Kpa3ooBWoiM_Q7W8QwvUxlMJLX8b_meCLCFDvfhXzcjpAQWaY_g2qm-wLV_DUNjMyY0nOkewwiAPO5flGBwhWoeIrHwKXWLzJKni4vPlkXjtLTe-A4ee2REV1zypatSJ_86wtGQJbL-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="730" data-original-width="1204" height="388" src="https://blogger.googleusercontent.com/img/a/AVvXsEjDU0s5SrCi3dqReQa1x8znh9R5jWgf6LrmpDOIGitHsa4SuJ7M4Kpa3ooBWoiM_Q7W8QwvUxlMJLX8b_meCLCFDvfhXzcjpAQWaY_g2qm-wLV_DUNjMyY0nOkewwiAPO5flGBwhWoeIrHwKXWLzJKni4vPlkXjtLTe-A4ee2REV1zypatSJ_86wtGQJbL-=w600-h388" width="600" />
</a>
</div>
<p>A composite video mixer is used to provide a reasonably standard composite video signal.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgpa6M9oT7Btwqc-OJt4Jes5q0gbvbqkxlMabyJwwU1bzBFy-gSrXkgXjP29P_jgkgg4-LZAThtnvO9TsA-7Ml44RBW61WpXtY1Cxh6TiFNNpe2SZ0RUFxg9HvAZ4fDaXNY1ixCVf8dSi8JYhdfjhajwImalDtM4zbBKTPSHg5toSZtIrM5_fhzZdBr9i-c" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="838" data-original-width="1218" height="440" src="https://blogger.googleusercontent.com/img/a/AVvXsEgpa6M9oT7Btwqc-OJt4Jes5q0gbvbqkxlMabyJwwU1bzBFy-gSrXkgXjP29P_jgkgg4-LZAThtnvO9TsA-7Ml44RBW61WpXtY1Cxh6TiFNNpe2SZ0RUFxg9HvAZ4fDaXNY1ixCVf8dSi8JYhdfjhajwImalDtM4zbBKTPSHg5toSZtIrM5_fhzZdBr9i-c=w600-h440" width="600" />
</a>
</div>
<p>Here showing a screen full of chequerboard characters.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHnLz9AJK0JlXG1zwt3u25RLEvg_4GTk8r8dfqwObn636nJohoHZYGvxM3_O2L63jUtgDhnYUlSovbyzmbtu9_sbKF2YHPVOUXhrKRCpDD5HI5Wt-ARsRXAZBdCMn1B5Vww2-RloYq6YqbF7JfYMwbey_SAaGnx7VaKsDfBE5GbLMOkvZP0UsxTmI3dxhG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="384" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHnLz9AJK0JlXG1zwt3u25RLEvg_4GTk8r8dfqwObn636nJohoHZYGvxM3_O2L63jUtgDhnYUlSovbyzmbtu9_sbKF2YHPVOUXhrKRCpDD5HI5Wt-ARsRXAZBdCMn1B5Vww2-RloYq6YqbF7JfYMwbey_SAaGnx7VaKsDfBE5GbLMOkvZP0UsxTmI3dxhG=w600-h384" width="600" />
</a>
</div>
<p>For details of other changes, including the mysterious "high resolution graphics enabling device", see a previous post:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2019/12/developing-the-minstrel-issue-3.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2019/12/developing-the-minstrel-issue-3.html</a></p>
<p>The latest revision of the Minstrel 3 has a pin header which mirrors the signals at the edge connector. This is going to be useful for expansion cards, and also for attaching logic analysers for debugging.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjvzZqxb7fIIMnjJO8lJTeQpTGc0gZsx7owZX0JYHGfAnAbMZ6lBWntKul5mUhFOeUPqC6tYph5asFqbrCjU_xSSvTdR147Ys3xzJKwmQAhk9BmoK8HeZ_NnD3OGFG7HRe62wOgeihJhmHmVDB7jkHBRb-WVj9xfMgoYyxJoQTesj-733FJXDfqyu43w90i" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjvzZqxb7fIIMnjJO8lJTeQpTGc0gZsx7owZX0JYHGfAnAbMZ6lBWntKul5mUhFOeUPqC6tYph5asFqbrCjU_xSSvTdR147Ys3xzJKwmQAhk9BmoK8HeZ_NnD3OGFG7HRe62wOgeihJhmHmVDB7jkHBRb-WVj9xfMgoYyxJoQTesj-733FJXDfqyu43w90i=w600-h450" width="600" />
</a>
</div>
<p>For the traces in this post, most of the signals I need are on the other side of the board, so there are a few more wires there.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi76OKNuKBZ5uMxTfJPegqiAWDZpOIicAemI8QRpwvKI-7siBVzj8LUTtO1yBPWDhfPxLbWs5D489ftDsJJ6D6c0CNy0NshlLMeVuGLC0v4lFJXYqljsValXNMjtlDh2FdSOd7ARE5oE5_jFBk3tDWgp3DehT00fzBQpquPFPfJpcngb2H6iMYHDeKDW7ep" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi76OKNuKBZ5uMxTfJPegqiAWDZpOIicAemI8QRpwvKI-7siBVzj8LUTtO1yBPWDhfPxLbWs5D489ftDsJJ6D6c0CNy0NshlLMeVuGLC0v4lFJXYqljsValXNMjtlDh2FdSOd7ARE5oE5_jFBk3tDWgp3DehT00fzBQpquPFPfJpcngb2H6iMYHDeKDW7ep=w600-h450" width="600" />
</a>
</div>
<hr />
<h2>Advertisements</h2>
<h2>Minstrel 3</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXaZjKkuMyq1tF9HOKEwYpEzM7pyKmn2B2ybXGWzmCZ6MlC6hQtm6MuGpDcJU3RP4zqSFk5KmQdlawag8ebXSaKOSwvncR9AL4nzh7hGPh00IAuxNV6Svb_HcZb3iIKjl8WZsPzpA-JF9JIOjVsDPqUNHWHkdiNNEebkjA5v1ek9TbhP3JdAANzygNWI08/s4683/3%20angled.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="3512" data-original-width="4683" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXaZjKkuMyq1tF9HOKEwYpEzM7pyKmn2B2ybXGWzmCZ6MlC6hQtm6MuGpDcJU3RP4zqSFk5KmQdlawag8ebXSaKOSwvncR9AL4nzh7hGPh00IAuxNV6Svb_HcZb3iIKjl8WZsPzpA-JF9JIOjVsDPqUNHWHkdiNNEebkjA5v1ek9TbhP3JdAANzygNWI08/w600-h450/3%20angled.jpg" width="600" />
</a>
</div>
<p>The Minstrel 3 is a ZX81 compatible Z80 based computer with 32K of RAM and 8K floating point BASIC. It does support slow mode, and several high resolution mechanisms, so the majority of ZX81 games will run fine.</p>
<p>Minstrel 3 kits are available from Z80kits.com</p>
<ul style="text-align: left;">
<li><a href="https://z80kits.com/shop/tynemouth-minstrel-3/" rel="nofollow" target="_blank">https://z80kits.com/shop/tynemouth-minstrel-3/</a></li>
</ul>
<p>And also in built, kit and PCB only form from SellMyRetro</p>
<ul>
<li>Built and tested with keyboard - <a href="https://www.sellmyretro.com/offer/details/63941" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63941</a></li>
<li>Built and tested for ZX81 case - <a href="https://www.sellmyretro.com/offer/details/63727" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63727</a></li>
<li>Full kit with keyboard - <a href="https://www.sellmyretro.com/offer/details/63947" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63947</a></li>
<li>Full kit with no keyboard - <a href="https://www.sellmyretro.com/offer/details/62147" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/62147</a></li>
<li>Keyboard kit with 8K keywords - <a href="https://www.sellmyretro.com/offer/details/63943" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63943</a></li>
<li>PCB only - <a href="https://www.sellmyretro.com/offer/details/39921" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/39921</a></li>
<li>Keyboard PCB set - <a href="https://www.sellmyretro.com/offer/details/62033" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/62033</a></li>
<li>Keyboard PCB no overlay - <a href="https://www.sellmyretro.com/offer/details/61986" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/61986</a></li>
</ul>
<p>See also Minstrel 2 (ZX80 compatible) and Mini PET (Commodore PET compatible) kits, more info here</p>
<ul style="text-align: left;">
<li><a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a></li>
</ul>
<p>And Minstrel 4D kits (Jupiter Ace compatible)</p>
<ul style="text-align: left;">
<li><a href="https://tfw8b.com/product/minstrel-4d-turbo-jupiter-ace-compatible-computer-kit/" rel="nofollow" target="_blank">https://tfw8b.com/product/minstrel-4d-turbo-jupiter-ace-compatible-computer-kit/</a></li>
</ul>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-48327963335781412272023-10-08T10:35:00.003+01:002023-10-08T10:50:04.370+01:00Testing some new PET games on the Mini PET<p>I keep seeing new Commodore PET games appearing and thinking I must get around to trying some of them out.</p>
<p>Since I am now producing Mini PET kits again, this seems an excellent opportunity to try out some new games whilst testing out the kits.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7zA-rgApNTPRL8nx00KikSUxHmq74aZW4rlnSHKBuMSt13B5aOSI4iDXajIcZlzW9dNKY31gyIY4EMMV9eJI3YyVL9s9kEVOJroPafTDeklquYG8cZfvOFAG3nkK9BnZAuhs5PAJQTstawXAJLyBoJ4g4d3xAoUHUCsR-5VsUkOQpfILLzaH4XJFzUzO5/s4896/Mini%20PET%20A%20With%20SD2PET.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7zA-rgApNTPRL8nx00KikSUxHmq74aZW4rlnSHKBuMSt13B5aOSI4iDXajIcZlzW9dNKY31gyIY4EMMV9eJI3YyVL9s9kEVOJroPafTDeklquYG8cZfvOFAG3nkK9BnZAuhs5PAJQTstawXAJLyBoJ4g4d3xAoUHUCsR-5VsUkOQpfILLzaH4XJFzUzO5/w600-h450/Mini%20PET%20A%20With%20SD2PET.jpg" width="600" />
</a>
</div>
<p>I have had a look through itch.io and found a surprising number of new games to try. They don't seem to have an obvious way to filter by "Commodore PET" as a system, so you have to deal with a number of games for other systems about pets of the furry, four legged, lower case type*, to find the gems for PETs of the green screen, upper case variety**.</p>
<blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">
<p>* Not all pets are furry or have four legs</p>
<p>** Not all PETs are green screen</p>
</blockquote>
<p>I should apologise upfront because:</p>
<ol style="text-align: left;">
<li>I am not very good at playing games</li>
<li>I am not very good at taking pictures of screens, particularly when trying to get a shot of game play.</li>
</ol>
<p>So, as you can see, I am ideally placed to write a piece about playing games accompanied by lots of screenshots.</p>
<p>I could have used screenshots from Vice, but that somehow feels like cheating.</p><p>Most of the game pages have videos on, I would encourage you to watch those as my photos do not do most of these games justice.</p>
<h2 style="text-align: left;"><a href="http://jimbo.itch.io" rel="nofollow" target="_blank">jimbo.itch.io</a></h2>
<p>The one that had most recently caught my eye was from prolific PET game creator Jim Orlando.</p>
<br />
<h3 style="text-align: left;">PETSCII Side-Scrolling Platformer</h3>
<p><a href="https://jimbo.itch.io/petscii-side-scrolling-platformer" rel="nofollow" target="_blank">https://jimbo.itch.io/petscii-side-scrolling-platformer</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVI57mOE-KEkwytcHOagQEpB1ysxOri7xGqYwQYfy94gLDHR_GwcIJBwI7Sds-wvLOS4wh_GsBSSM3axWp-NZzWul1YMcaQ2BkSK2owTn-UAGzAxc3UlomfPE9EzfLO67uK5Vuiif-p0qYiEnDA-tLMvKB5olNVETEQrzkUQUwP7uhqZTaBTZTM35qNaTf/s3425/PSSP1.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="2569" data-original-width="3425" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVI57mOE-KEkwytcHOagQEpB1ysxOri7xGqYwQYfy94gLDHR_GwcIJBwI7Sds-wvLOS4wh_GsBSSM3axWp-NZzWul1YMcaQ2BkSK2owTn-UAGzAxc3UlomfPE9EzfLO67uK5Vuiif-p0qYiEnDA-tLMvKB5olNVETEQrzkUQUwP7uhqZTaBTZTM35qNaTf/w600-h450/PSSP1.jpg" width="600" />
</a>
</div>
<p>This is a multi-level side-scrolling platform game inspired by Mario and Sonic and is one I will be trying more. The controls take a while to get used to, I was using the 4, 5 and 6 keys, but I think I might do better switching to the alternate A, S and D.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZEc-kilyAjKh79VEFZrycFn_wTgHRuufLNU7fxWTKJMjVHbCLoYJYpbVHLK8Ry8jt50QwI5QRKTSn8PXPsMx_IZ_PMH3EoqENSNwrv3e7AvqX4FgYIAFpDjCSVw-HGzvmRGLe5D86obf2yyf2kf9pI6WpH8F89KPPxOJVUpQj_4WupeJxI3Jg5RDNHqDX/s3644/PSSP2.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="2734" data-original-width="3644" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZEc-kilyAjKh79VEFZrycFn_wTgHRuufLNU7fxWTKJMjVHbCLoYJYpbVHLK8Ry8jt50QwI5QRKTSn8PXPsMx_IZ_PMH3EoqENSNwrv3e7AvqX4FgYIAFpDjCSVw-HGzvmRGLe5D86obf2yyf2kf9pI6WpH8F89KPPxOJVUpQj_4WupeJxI3Jg5RDNHqDX/w600-h450/PSSP2.jpg" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">PETSCII Kong</h3>
<p><a href="https://jimbo.itch.io/petscii-kong" rel="nofollow" target="_blank">https://jimbo.itch.io/petscii-kong</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQURRwNY9B9LEcn-ncfdo_Apkwcnjt-YfsFssLIrrBZyN42OVcqtIvMGpOm3bQuvMjGcYP9_d0_A2hDeN9y0t-mvZmkwOTuYsCQyfWExBUgieitjnt2TA60iO6ya154oahzK-wbu03Rd28v_uzBzsIsh_HmM72__Gjgvb5RHZyeptb8gwefM4_TL-D0rcg/s3613/Kong1.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="2710" data-original-width="3613" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQURRwNY9B9LEcn-ncfdo_Apkwcnjt-YfsFssLIrrBZyN42OVcqtIvMGpOm3bQuvMjGcYP9_d0_A2hDeN9y0t-mvZmkwOTuYsCQyfWExBUgieitjnt2TA60iO6ya154oahzK-wbu03Rd28v_uzBzsIsh_HmM72__Gjgvb5RHZyeptb8gwefM4_TL-D0rcg/w600-h450/Kong1.jpg" width="600" />
</a>
</div>
<p>A nice version of Donkey Kong, with clever use of the PETSCII bar characters to create the sloping levels for the barrels to roll down.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfPcQEH57U0X08YUc3owtUUWHVS9LFyGHdnEwd_yk2KC9W3cCcw7RRleQAs9jCtE-kHrbKokDz7YT_oW-9aMK6CxP9kVNNuCM6vYWAP8SwgtXrMgT0FQEo2TPnMD4_JGMtJTpmy60SFoAtXSUar_AVlVSmzm5ZsHuL4F4QblpogOyJ7vKMExjbB2abefd7/s3658/Kong2.jpg" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="2743" data-original-width="3658" height="450" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfPcQEH57U0X08YUc3owtUUWHVS9LFyGHdnEwd_yk2KC9W3cCcw7RRleQAs9jCtE-kHrbKokDz7YT_oW-9aMK6CxP9kVNNuCM6vYWAP8SwgtXrMgT0FQEo2TPnMD4_JGMtJTpmy60SFoAtXSUar_AVlVSmzm5ZsHuL4F4QblpogOyJ7vKMExjbB2abefd7/w600-h450/Kong2.jpg" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">PETSCII Bros</h3>
<p><a href="https://jimbo.itch.io/petscii-bros" rel="nofollow" target="_blank">https://jimbo.itch.io/petscii-bros</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj4j4vl31tfuR_CI4KEh5oJzWwfcByiz1v30oHtfW-mmcSpDjakFhUS-FfT93nx630UlVAEtdknX0MoXZVPiqsH6VE6qU4CwXW8w_2-dzEOZ8b5OexZ_vUCy8KTftum3c1-H12v2ev6P5nl3VNyMN-jfJ-CqqJPUTMvftmati3dKEXVVNo_SF8G9hjyW3N3" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2932" data-original-width="3908" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj4j4vl31tfuR_CI4KEh5oJzWwfcByiz1v30oHtfW-mmcSpDjakFhUS-FfT93nx630UlVAEtdknX0MoXZVPiqsH6VE6qU4CwXW8w_2-dzEOZ8b5OexZ_vUCy8KTftum3c1-H12v2ev6P5nl3VNyMN-jfJ-CqqJPUTMvftmati3dKEXVVNo_SF8G9hjyW3N3=w600-h450" width="600" />
</a>
</div>
<p>A game similar to the original Mario Brothers (not Super Mario Brothers). Haven't quite got the hang of this one yet.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQBGEIIdN8qMxeg7alO1AXfkGpslknItkfiLB2L3QP4l2sLot019DhX1KiA8bi4vJ7i-wOWB7IY_Okeiz3--jx_zQhn2wAMF5sa_d_5hHfAghRd0hZOKpPlZhr6Uy1LkqYczOPJsAGjnwlrBg96bf2UuSyNFKTYnT3TyHWHnX0p845ql9gXMISlg-L6Ep7" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3424" data-original-width="4566" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQBGEIIdN8qMxeg7alO1AXfkGpslknItkfiLB2L3QP4l2sLot019DhX1KiA8bi4vJ7i-wOWB7IY_Okeiz3--jx_zQhn2wAMF5sa_d_5hHfAghRd0hZOKpPlZhr6Uy1LkqYczOPJsAGjnwlrBg96bf2UuSyNFKTYnT3TyHWHnX0p845ql9gXMISlg-L6Ep7=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">PET Panic!</h3>
<p><a href="https://jimbo.itch.io/pet-panic" rel="nofollow" target="_blank">https://jimbo.itch.io/pet-panic</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgi2G7lG5CdRVlKgfo21TDMA0j6p_fHAe8AEMlt8Rp8WQ7NUkXxsLvkdHzk7UF1U4X3OfTYTlnyNHtkM8V9h8X1Mp3empCwow4Z0AMRMTA6eVKpOuMdke1U2HfWQxR7KM6BVhsVVI_LEpaPiIRjGcnPClmty40nnSP-16CWLW8jAUm92OUPZQ0mUT_K8AWQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3106" data-original-width="4142" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgi2G7lG5CdRVlKgfo21TDMA0j6p_fHAe8AEMlt8Rp8WQ7NUkXxsLvkdHzk7UF1U4X3OfTYTlnyNHtkM8V9h8X1Mp3empCwow4Z0AMRMTA6eVKpOuMdke1U2HfWQxR7KM6BVhsVVI_LEpaPiIRjGcnPClmty40nnSP-16CWLW8jAUm92OUPZQ0mUT_K8AWQ=w600-h450" width="600" />
</a>
</div>
<p>A nice little Panic / Lode Runner style platformer. Another one of those games where it is difficult to setup enough traps so I can take a picture before game over.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgvsBZx-oluFc4-xSMFNdFyMKsO4LlYOYekPJPNRBUn4LyJBCeIqymZHYHZfLPdwlvCNXiy2tJmStkbe_skPor_ReVPALjRS4vaWIqtiOZ7cHwxCG0gIiAb6JRwd-06yp-QdaEEkxnB66-iNJKr1JC1nO1CIPtOyJKLObRJSC56ATICzqO8zFSNf01HWADN" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3426" data-original-width="4568" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgvsBZx-oluFc4-xSMFNdFyMKsO4LlYOYekPJPNRBUn4LyJBCeIqymZHYHZfLPdwlvCNXiy2tJmStkbe_skPor_ReVPALjRS4vaWIqtiOZ7cHwxCG0gIiAb6JRwd-06yp-QdaEEkxnB66-iNJKr1JC1nO1CIPtOyJKLObRJSC56ATICzqO8zFSNf01HWADN=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">PET Space Invaders 2</h3>
<p><a href="https://jimbo.itch.io/pet-space-invaders-2" rel="nofollow" target="_blank">https://jimbo.itch.io/pet-space-invaders-2</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgrfBdFh5DKiA3CnK1PZ6gkNaBeWbnsxeYnDXLmHJBBHdQI3-iun7Xi0G-tr3InEGVBBHKuSR1bz1nBqv4uGhn7dBox_O4binQEuDD91CLPjMWRXY5iNtukK0pWIV2zgz8MS_a5_q57GZb9w8fFZWe46LWEcPXIllXe00sXdqxlBkDbaMIJmPFxZSK1aQ8d" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgrfBdFh5DKiA3CnK1PZ6gkNaBeWbnsxeYnDXLmHJBBHdQI3-iun7Xi0G-tr3InEGVBBHKuSR1bz1nBqv4uGhn7dBox_O4binQEuDD91CLPjMWRXY5iNtukK0pWIV2zgz8MS_a5_q57GZb9w8fFZWe46LWEcPXIllXe00sXdqxlBkDbaMIJmPFxZSK1aQ8d=w600-h450" width="600" />
</a>
</div>
<p>An improved Space Invaders with more aliens. The ones on the left hand row always seem to fire as soon as you start, so you have to move quickly to avoid being killed at the start of each life.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEguGaJ-RuYT4Fonh6eCKyTPyfe9VpO3gXHo4Q9WkNZWiYajg0b6MxGnD5tEw0OoGdsybs4Bcv2PN52xMDFzYgnRSKzL5rgP-Uwbjs80AsHBwRtZbmOgGZO6gJpVmmCmqf7afeoTCjxdR1UmYDGn_9Da8YUs2uehdG_uyUETzwUBSkMMwtHLPERBglxI_Y-v" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2959" data-original-width="3945" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEguGaJ-RuYT4Fonh6eCKyTPyfe9VpO3gXHo4Q9WkNZWiYajg0b6MxGnD5tEw0OoGdsybs4Bcv2PN52xMDFzYgnRSKzL5rgP-Uwbjs80AsHBwRtZbmOgGZO6gJpVmmCmqf7afeoTCjxdR1UmYDGn_9Da8YUs2uehdG_uyUETzwUBSkMMwtHLPERBglxI_Y-v=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">PETLifter</h3>
<p><a href="https://jimbo.itch.io/petlifter" rel="nofollow" target="_blank">https://jimbo.itch.io/petlifter</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEic4hwwRNqE7eRu2arXqacQu8QWwOAIVk4l3RP15HAtzes4OIgD2CVlRrWkiAvZAEvFRr0X7tay2-JtbhP2WZlttGoX9zIbRDlnFrs0d2iU0LsmVNmuiGIf7_zwr-W6wNW6IE5AOCOAxNNodvLG-4znp7XLFaXakesDOXklYLadpltaGgpppKJq0jJbC_S6" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2745" data-original-width="3659" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEic4hwwRNqE7eRu2arXqacQu8QWwOAIVk4l3RP15HAtzes4OIgD2CVlRrWkiAvZAEvFRr0X7tay2-JtbhP2WZlttGoX9zIbRDlnFrs0d2iU0LsmVNmuiGIf7_zwr-W6wNW6IE5AOCOAxNNodvLG-4znp7XLFaXakesDOXklYLadpltaGgpppKJq0jJbC_S6=w600-h450" width="600" />
</a>
</div>
<p>Choplifter for the PET with a helicopter that looks surprisingly good in PETSCII.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiqa_-cJH_kP4d1epEolM1Y855p3P8HCwjUHYW6nJaJz8lq_GEesXEV-jSEK6uIs1lNjO04SB8fw2yCtWOTUS6lI5lyqq98Q6xYKNrAgEXr7XK3hlDzeDZj_XA_Hc5wvCut-ePtkomTfP-7f2Kp_GYBMi23YsFv3JkeadeWzqDnsDzPDBb_DK809ufps6Ue" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2860" data-original-width="3813" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiqa_-cJH_kP4d1epEolM1Y855p3P8HCwjUHYW6nJaJz8lq_GEesXEV-jSEK6uIs1lNjO04SB8fw2yCtWOTUS6lI5lyqq98Q6xYKNrAgEXr7XK3hlDzeDZj_XA_Hc5wvCut-ePtkomTfP-7f2Kp_GYBMi23YsFv3JkeadeWzqDnsDzPDBb_DK809ufps6Ue=w600-h450" width="600" />
</a>
</div>
<h3 style="text-align: left;">TrekWar!</h3>
<p><a href="https://jimbo.itch.io/trekwar" rel="nofollow" target="_blank">https://jimbo.itch.io/trekwar</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEj7FknCEp5gWonqTr6qev8pCF03utvmlF1bqE9n4NJa-oXYFPPqxZZXxj7L3UFxAflJ6Eih7lRS5ZMX_1jqHg7-urgrKXVZHL72cnfKmB0j3ojSQRjrsM0s0qhhL46JHQNrM_9sG1xprlJc1N5e_m98lwSLSL8IbWY4A6ZBrtZYUxDHAERssWmjE_MOSEZz" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2871" data-original-width="3828" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEj7FknCEp5gWonqTr6qev8pCF03utvmlF1bqE9n4NJa-oXYFPPqxZZXxj7L3UFxAflJ6Eih7lRS5ZMX_1jqHg7-urgrKXVZHL72cnfKmB0j3ojSQRjrsM0s0qhhL46JHQNrM_9sG1xprlJc1N5e_m98lwSLSL8IbWY4A6ZBrtZYUxDHAERssWmjE_MOSEZz=w600-h450" width="600" />
</a>
</div>
<p>Fly through space, exploring strange new worlds, and seeking out new life and new civilizations, and then shooting at them.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjX4_fXelCQJGr-l5Pj5v_8V0Ev-QI-gXYtgLj43IdOKaY6NxY3MtLSrdVjKeELk4dQUUHWkTeGt3Bbail5eJrUPdbArIA9UrmpIFR_3I9ucFGTLYph1l_oAw2utpPlrHlf18e63NfQefbfQp34feOOL6Geu7ByWWvGGJWbUnAwYp_Uw57OCEuEkstx8-X6" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3050" data-original-width="4067" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjX4_fXelCQJGr-l5Pj5v_8V0Ev-QI-gXYtgLj43IdOKaY6NxY3MtLSrdVjKeELk4dQUUHWkTeGt3Bbail5eJrUPdbArIA9UrmpIFR_3I9ucFGTLYph1l_oAw2utpPlrHlf18e63NfQefbfQp34feOOL6Geu7ByWWvGGJWbUnAwYp_Uw57OCEuEkstx8-X6=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">PETSCII Portal</h3>
<p><a href="https://jimbo.itch.io/petscii-portal" rel="nofollow" target="_blank">https://jimbo.itch.io/petscii-portal</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEit81ZBvgLtaHBCn_p2OBs9vgg83u0qSkBrP4bYJky7ceFB020ocN3as6knc4qQSNsBL3q9VNKJp1c1AESaxp_mU1hrE7Xm1hC71Hf6URore0WyitDyJPIlds2zvRc1lZv8Bn9lrO1ijBwX9yCtjHKg7XwLSriC580de3PZ-U5vaOa2-rprRyhxvfQv_-hZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2545" data-original-width="3394" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEit81ZBvgLtaHBCn_p2OBs9vgg83u0qSkBrP4bYJky7ceFB020ocN3as6knc4qQSNsBL3q9VNKJp1c1AESaxp_mU1hrE7Xm1hC71Hf6URore0WyitDyJPIlds2zvRc1lZv8Bn9lrO1ijBwX9yCtjHKg7XwLSriC580de3PZ-U5vaOa2-rprRyhxvfQv_-hZ=w600-h450" width="600" />
</a>
</div>
<p>Portal for the PET? You got it.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhfJHf18RNI7C8sgGqMuNKEvOKvF7GkW5V5exKL0aoe4-txRbsb9PXduVjPjhKtig_xdc9bRAh5oJH5UJURHYeAcMV0lToJrgedVwMg0bemcZKJLctG8CZ8pXZIqvmkQw8xDA-RTGi-Zx-gbyHFw7XUeZ4OJdKXVg0Jj8RlYtDr6eLpyOPqpi_gmAcNvwft" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2739" data-original-width="3652" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhfJHf18RNI7C8sgGqMuNKEvOKvF7GkW5V5exKL0aoe4-txRbsb9PXduVjPjhKtig_xdc9bRAh5oJH5UJURHYeAcMV0lToJrgedVwMg0bemcZKJLctG8CZ8pXZIqvmkQw8xDA-RTGi-Zx-gbyHFw7XUeZ4OJdKXVg0Jj8RlYtDr6eLpyOPqpi_gmAcNvwft=w600-h450" width="600" />
</a>
</div>
<p>Oooh I like this. One of those addictive problem solving games. I need to spend more time learning all the mechanics, but the hints guiding you around are very handy.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7dGMhEOF6G6n4mnsaDCSdLKuer_TRZ5nat0aNRfmC7B6pekh9Aqs7LSNS49OMvhzS6dovm0QoOEUxu2EX7Iy41HWO2_izqnXdAamRQuH64r_L-IVc2NLaNPkDKdhMCNmPA6k9DP78K7azrsgPNtThzSnVXp8CXbVOkjFWGBNmFgbj_BbCsbeBmFoHp4ub" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7dGMhEOF6G6n4mnsaDCSdLKuer_TRZ5nat0aNRfmC7B6pekh9Aqs7LSNS49OMvhzS6dovm0QoOEUxu2EX7Iy41HWO2_izqnXdAamRQuH64r_L-IVc2NLaNPkDKdhMCNmPA6k9DP78K7azrsgPNtThzSnVXp8CXbVOkjFWGBNmFgbj_BbCsbeBmFoHp4ub=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">PETSCII Zombie Lemmings for Commodore PET</h3>
<p><a href="https://jimbo.itch.io/petscii-lemmings-for-commodore-pet" rel="nofollow" target="_blank">https://jimbo.itch.io/petscii-lemmings-for-commodore-pet</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgRJ4DVxm1y3f3UNCEMhT9R6w-nAvRh6IcoFF_xZ7PSQOPdUJLAhxx4vPMvFqYxTzEWwyoEfqSIPwuL1InmbPhz-GUm2qmrHPVv68LNLvt7ln-1GbXHfs7sKPLNNT3QqV3pp5BXj98OKZhGGdMPQZ10KrrBRwgJilLMtPMY8fVWb1ZOSjYy_WCy5Nk2dlwN" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2916" data-original-width="3888" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgRJ4DVxm1y3f3UNCEMhT9R6w-nAvRh6IcoFF_xZ7PSQOPdUJLAhxx4vPMvFqYxTzEWwyoEfqSIPwuL1InmbPhz-GUm2qmrHPVv68LNLvt7ln-1GbXHfs7sKPLNNT3QqV3pp5BXj98OKZhGGdMPQZ10KrrBRwgJilLMtPMY8fVWb1ZOSjYy_WCy5Nk2dlwN=w600-h450" width="600" />
</a>
</div>
<p>Surely you can't do Lemmings on a PET? Well, it appears you can.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgjc7dQ-BlPhoSNVdHeOSTu36SS36wXAzx9dzqm3R5HTzNXwNzoO-PGqZ-pXyVZN6Hw8HuS-kldpX384WWmMxd1biDw5JvdV246mcjK1jW5wWCP9Fg-PNS9dhtjqTQ0RiJ9vNU_uCB0uTDCgUxuu5R173qADrVN4ESaNV6IblkmpoLa9Q94NTzEyI2AfYgs" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3020" data-original-width="4026" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgjc7dQ-BlPhoSNVdHeOSTu36SS36wXAzx9dzqm3R5HTzNXwNzoO-PGqZ-pXyVZN6Hw8HuS-kldpX384WWmMxd1biDw5JvdV246mcjK1jW5wWCP9Fg-PNS9dhtjqTQ0RiJ9vNU_uCB0uTDCgUxuu5R173qADrVN4ESaNV6IblkmpoLa9Q94NTzEyI2AfYgs=w600-h450" width="600" />
</a>
</div>
<p>Lemmings was a favourite on the Amiga 500 and this version is very playable with familiar puzzles.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgfAf-dyhmRE5onKYtuwpxE5GKNwo6lA2xE10WR37034_SuxKYYUgv0fW-EPPsyljFgRSMzOi465w9NXv05XDqGrZHTwHC6q7IZcFaWhpQaTmvMdqNaG_vPA0GHyQ2ZkoaY7LgliCg01gTmjjoNNTalL9k5G7j2DDoMeVGyieLvHN3eIOePX2iyDwcvYn-g" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2880" data-original-width="3840" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgfAf-dyhmRE5onKYtuwpxE5GKNwo6lA2xE10WR37034_SuxKYYUgv0fW-EPPsyljFgRSMzOi465w9NXv05XDqGrZHTwHC6q7IZcFaWhpQaTmvMdqNaG_vPA0GHyQ2ZkoaY7LgliCg01gTmjjoNNTalL9k5G7j2DDoMeVGyieLvHN3eIOePX2iyDwcvYn-g=w600-h450" width="600" />
</a>
</div>
<p>The keys being ESDF rather than WASD keeps throwing me though, although it is still impressive to have a workable keyboard mechanic for what was a very much mouse based game.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjRc695qHwbegDU2bpDOG_mNy1O9Ar0c3dsOkywqS979XJP_fyfbXiksQoW9Xb4bpMWxFUMsfLeQqKrjiNcznf4VQO33gIOMIdpj7R9Px0EaJcwoC0Hkz3VXwP9p0dnJHZvAa-cPUg73nDV7Ixj4ZZPjpNMS7vvZET1G9WoWXfzO5dNd_EBHJurEI18svmL" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2949" data-original-width="3932" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjRc695qHwbegDU2bpDOG_mNy1O9Ar0c3dsOkywqS979XJP_fyfbXiksQoW9Xb4bpMWxFUMsfLeQqKrjiNcznf4VQO33gIOMIdpj7R9Px0EaJcwoC0Hkz3VXwP9p0dnJHZvAa-cPUg73nDV7Ixj4ZZPjpNMS7vvZET1G9WoWXfzO5dNd_EBHJurEI18svmL=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">Desktop Tower Defense for Commodore PET</h3>
<p><a href="https://jimbo.itch.io/desktop-tower-defense-for-commodore-pet" rel="nofollow" target="_blank">https://jimbo.itch.io/desktop-tower-defense-for-commodore-pet</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjKxAWxC6UTrU_IFRVImXoYlfAM0wlO7wNdhKTcntrLdR5f9Bfy8t55-8NuTGm90eQSGig1A5AqY2X3STErnvHnYe4OOiEQYOCcKnP8movKvsvUMFtp-8sYguNjQwEcSNWCg1uVZ5HN9M5mmQ58W0xHmXiwQ3acLNRoo77pxfW48zMzA_3BhnZRvtsMWCVh" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjKxAWxC6UTrU_IFRVImXoYlfAM0wlO7wNdhKTcntrLdR5f9Bfy8t55-8NuTGm90eQSGig1A5AqY2X3STErnvHnYe4OOiEQYOCcKnP8movKvsvUMFtp-8sYguNjQwEcSNWCg1uVZ5HN9M5mmQ58W0xHmXiwQ3acLNRoo77pxfW48zMzA_3BhnZRvtsMWCVh=w600-h450" width="600" />
</a>
</div>
<p>I think I get the idea with this, but would need to spend more time placing the blocks to defend against the "creep's".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgsFfBGX41npULI_YQisnRENxe03acFsvbeYmeO_wHsbVY_NQ8m9UR2fFOuJSNjM2QNIcJU5vSSO-iwRgs-rUWJrC5PKiqlTMYxSUvqVppiDNSLrGFiiOKCd7HIb0P85NX4HluwZRyMjz4lN4wiredCsP03rDhWe06uTVOAapMBYqhg9ixDYlWzooP2Z1LC" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2928" data-original-width="3904" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgsFfBGX41npULI_YQisnRENxe03acFsvbeYmeO_wHsbVY_NQ8m9UR2fFOuJSNjM2QNIcJU5vSSO-iwRgs-rUWJrC5PKiqlTMYxSUvqVppiDNSLrGFiiOKCd7HIb0P85NX4HluwZRyMjz4lN4wiredCsP03rDhWe06uTVOAapMBYqhg9ixDYlWzooP2Z1LC=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">Defender Clone for Commodore PET</h3>
<p><a href="https://jimbo.itch.io/defender-clone-for-commodore-pet" rel="nofollow" target="_blank">https://jimbo.itch.io/defender-clone-for-commodore-pet</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiyGdO_ho8p9y-JtTxmEI0XLYJn8plxKesaPAP-4U4HpmN82WAy2clRwpU-R6WGdm_6juycMk3XLpcvM2DLbWh59GnKPWZAk6CMKm4KMatByHwF3OIVRbbGxvglk9jQMEY1UXFoBbDQBnqB5VRSlYHqo9eKo4gdM3tZ8urDG_muWcx-8yr4zZSgZ6fnXaH6" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2808" data-original-width="3744" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiyGdO_ho8p9y-JtTxmEI0XLYJn8plxKesaPAP-4U4HpmN82WAy2clRwpU-R6WGdm_6juycMk3XLpcvM2DLbWh59GnKPWZAk6CMKm4KMatByHwF3OIVRbbGxvglk9jQMEY1UXFoBbDQBnqB5VRSlYHqo9eKo4gdM3tZ8urDG_muWcx-8yr4zZSgZ6fnXaH6=w600-h450" width="600" />
</a>
</div>
<p>A fast moving defender clone, again making good use of PETSCII to create the landscape and UFOs that look a bit like the UFOs from UFO.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhGZ6IJssoloPkvZQIYhuhPRUgd9Kk43AHbjJkJFMKP6B-l53NO7rvoeTqGmPcpsRSmlQxawy0WqEZ88H4T8KTdEXrp9TOso9i5vCYgliv61Z2MPm_ivh3ZqQaJzaCxA7Ffgdz5WYS9gqGlRbQvdJMA_TTRhUp1637Wysqbfjd42dGjSxqRRiTwZbAgaHwM" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3102" data-original-width="4136" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhGZ6IJssoloPkvZQIYhuhPRUgd9Kk43AHbjJkJFMKP6B-l53NO7rvoeTqGmPcpsRSmlQxawy0WqEZ88H4T8KTdEXrp9TOso9i5vCYgliv61Z2MPm_ivh3ZqQaJzaCxA7Ffgdz5WYS9gqGlRbQvdJMA_TTRhUp1637Wysqbfjd42dGjSxqRRiTwZbAgaHwM=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">Lode Runner Clone for Commodore PET</h3>
<p><a href="https://jimbo.itch.io/lode-runner-clone-for-commodore-pet" rel="nofollow" target="_blank">https://jimbo.itch.io/lode-runner-clone-for-commodore-pet</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg2yQs3KivEsjRPwbFQv3n_JXJ7lVlpAaPAA96I-khwOHdC6VK1IHef6OLsPlARIEvRzV71iyUReIPvzahre_mP4kaZMCGNdPzknDY2zc0Ml2zpZ_BaESPiK-IkjtHLn3E8Y5FmhN1iQYlLmu38tJrpF3Ad3_fYIkmNC9XsLdEFmQdNjdpnmtxnx0Dqs6xi" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2259" data-original-width="3012" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg2yQs3KivEsjRPwbFQv3n_JXJ7lVlpAaPAA96I-khwOHdC6VK1IHef6OLsPlARIEvRzV71iyUReIPvzahre_mP4kaZMCGNdPzknDY2zc0Ml2zpZ_BaESPiK-IkjtHLn3E8Y5FmhN1iQYlLmu38tJrpF3Ad3_fYIkmNC9XsLdEFmQdNjdpnmtxnx0Dqs6xi=w600-h450" width="600" />
</a>
</div>
<p>Classic Lode Runner, good fast version, a bit fast for me.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjupMf8Oc6w7eKvxOuvy00wMvSRaBs-fWhG7sHnpki0x0h2f63X0bJk20XQ9enTtJ9kxsEF8vCpwJvXxKSngcG-cxmMW3m1JsCXjz9TmUQJEJeMMAYQHE0JM6a0pGfycN6JKsWK0uYZH7I5pOVHCFU3rXrxraAcyMCEwVaFyUWYN56OMtUpKVZgW8nms16K" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2529" data-original-width="3371" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjupMf8Oc6w7eKvxOuvy00wMvSRaBs-fWhG7sHnpki0x0h2f63X0bJk20XQ9enTtJ9kxsEF8vCpwJvXxKSngcG-cxmMW3m1JsCXjz9TmUQJEJeMMAYQHE0JM6a0pGfycN6JKsWK0uYZH7I5pOVHCFU3rXrxraAcyMCEwVaFyUWYN56OMtUpKVZgW8nms16K=w600-h450" width="600" />
</a>
</div>
<p>Nice circular fade when you lose a life.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgXZmCgKBlxyJLh-4sH4x-xyk5EpMLC7AEMcQXzMRm3BuoLQcsOWo83PW7WoeW4NkNDLaUrz0MkqI3SUPRG1kq2CpMTFzE59CqErDAXFI6V_FpVWbBCePLGozu5gmiLlnW4-BQSe_k69_z8I7tIOhHJMvVobI0oEnX3GbItRyxLYw9BbJROrAEb_S0ELt1x" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2516" data-original-width="3355" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgXZmCgKBlxyJLh-4sH4x-xyk5EpMLC7AEMcQXzMRm3BuoLQcsOWo83PW7WoeW4NkNDLaUrz0MkqI3SUPRG1kq2CpMTFzE59CqErDAXFI6V_FpVWbBCePLGozu5gmiLlnW4-BQSe_k69_z8I7tIOhHJMvVobI0oEnX3GbItRyxLYw9BbJROrAEb_S0ELt1x=w600-h450" width="600" />
</a>
</div>
<hr />
<h2 style="text-align: left;"><a href="http://fuzzybad.itch.io" rel="nofollow" target="_blank">fuzzybad.itch.io</a></h2>
<p>Another recent game I wanted to test out again is from FuzzyBad</p>
<br />
<h3 style="text-align: left;">PET Light Cycles</h3>
<p><a href="https://fuzzybad.itch.io/pet-light-cycles" rel="nofollow" target="_blank">https://fuzzybad.itch.io/pet-light-cycles</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiQi2Mpmu_C3CmEAhPqbWggwBr-i87ldyZKK__qNhaZ-Z9DbY-tNYxTslWfw_bCOQhPu1Qms282SZFyxwh697Te-UdfNy1JP9_Wrw4O2lPyOjeZNSi_wdL7kbgvJ--AVnEX2O63_ixal2yZ2fVgkHzKSm7s01ImoQDlKnubQNLNBZRyQyfnSLvXTiObwFgX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2541" data-original-width="3388" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiQi2Mpmu_C3CmEAhPqbWggwBr-i87ldyZKK__qNhaZ-Z9DbY-tNYxTslWfw_bCOQhPu1Qms282SZFyxwh697Te-UdfNy1JP9_Wrw4O2lPyOjeZNSi_wdL7kbgvJ--AVnEX2O63_ixal2yZ2fVgkHzKSm7s01ImoQDlKnubQNLNBZRyQyfnSLvXTiObwFgX=w600-h450" width="600" />
</a>
</div>
<p>A nice Tron style light cycle game, or a snake game where someone else is trying to play snake at the same time as you are.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh2u5s4BCtj3GZu1m8B2pYMPFbQiS-SxRjqp-m-pLB1tKdYZe_YH9FMRJnWvKDeS8-UF1rom25YI9OGXBLauZotTSi6Zo9M4wbic0btnbwIOwz5wYYpaaNnJSg-2VvIhE36zPcs2hlq3LhuduP82cydr0LVUTiBn0eIw_nkRY1ujMCvlO_bXF0Nzo05815x" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2596" data-original-width="3461" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh2u5s4BCtj3GZu1m8B2pYMPFbQiS-SxRjqp-m-pLB1tKdYZe_YH9FMRJnWvKDeS8-UF1rom25YI9OGXBLauZotTSi6Zo9M4wbic0btnbwIOwz5wYYpaaNnJSg-2VvIhE36zPcs2hlq3LhuduP82cydr0LVUTiBn0eIw_nkRY1ujMCvlO_bXF0Nzo05815x=w600-h450" width="600" />
</a>
</div>
<hr />
<p>Other notable mentions with more games, conversions and fixes.</p>
<h3 style="text-align: left;"><a href="http://milasoft64.itch.io" rel="nofollow" target="_blank">milasoft64.itch.io</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgH8NJyyDSgNmJmOv47DCfHAEQE-21Z87lKUI53C-YcmMB6lMCaiFpnn-GlATSvGHeSswOokMF1vCGw8F8C2THt9rrJO4ynb5p5P2Ekela2JIjyNx1wom68u2lI7WNkGFiTSzjiLgDvizIK4abW7q9sYDmVcK-AhtSgwmhCsfTy7wqPG5xEpL2AeL7YSwZW" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2335" data-original-width="3113" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgH8NJyyDSgNmJmOv47DCfHAEQE-21Z87lKUI53C-YcmMB6lMCaiFpnn-GlATSvGHeSswOokMF1vCGw8F8C2THt9rrJO4ynb5p5P2Ekela2JIjyNx1wom68u2lI7WNkGFiTSzjiLgDvizIK4abW7q9sYDmVcK-AhtSgwmhCsfTy7wqPG5xEpL2AeL7YSwZW=w600-h450" width="600" />
</a>
</div>
<h3 style="text-align: left;"><a href="http://arlagames.itch.io" rel="nofollow" target="_blank">arlagames.itch.io</a></h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEga5RLPZk5UMFD_ffOLmzxb-_KJS-QHhkWqH4mxO-YdmaF2R1lwWZw0rqbJ8uBIZiaMOaGVnKZNGNCuOFjBNEhLDk0tOrFKQkLQIsS9buDo69BRsBdu9kkyrnoEQLC-x2msYiruWrW2hgjRQ01hWf4lw2McT2TENqipzHAZHvrCc1lFLCQXJ1tb5kDTWexW" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2805" data-original-width="3740" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEga5RLPZk5UMFD_ffOLmzxb-_KJS-QHhkWqH4mxO-YdmaF2R1lwWZw0rqbJ8uBIZiaMOaGVnKZNGNCuOFjBNEhLDk0tOrFKQkLQIsS9buDo69BRsBdu9kkyrnoEQLC-x2msYiruWrW2hgjRQ01hWf4lw2McT2TENqipzHAZHvrCc1lFLCQXJ1tb5kDTWexW=w600-h450" width="600" />
</a>
</div>
<hr />
<h2><a href="http://tynemouth.itch.io" rel="nofollow" target="_blank">tynemouth.itch.io</a></h2>
<p>Well, I suppose I should mention my own contributions</p>
<br>
<h3 style="text-align: left;">3D Monster Maze</h3>
<p><a href="https://tynemouth.itch.io/pet-3d-monster-maze" rel="nofollow" target="_blank">https://tynemouth.itch.io/pet-3d-monster-maze</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjDh1DVYLre1Zif1JPbQHLftSyedNrIVK3ejXRno7iHcI4V1jlzwLCLXfzm-H_q2Z2YNgANDteExzpkje0N9--mG6HH_fx1GlCFCy5IXmHQAEnMwR-TFRXBEL20QZslKwLr_oPdaNxge5WNwxEzAFeHvdLLneAiyMYBYK__Po8EqhrQb7XrM5uf8kUn5gPG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjDh1DVYLre1Zif1JPbQHLftSyedNrIVK3ejXRno7iHcI4V1jlzwLCLXfzm-H_q2Z2YNgANDteExzpkje0N9--mG6HH_fx1GlCFCy5IXmHQAEnMwR-TFRXBEL20QZslKwLr_oPdaNxge5WNwxEzAFeHvdLLneAiyMYBYK__Po8EqhrQb7XrM5uf8kUn5gPG=w600-h450" width="600" />
</a>
</div>
<br />
<h3 style="text-align: left;">Tut-Tut</h3>
<p><a href="https://tynemouth.itch.io/tut-tut-commodore-pet" rel="nofollow" target="_blank">https://tynemouth.itch.io/tut-tut-commodore-pet</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi4YV6PQmZv_btLQp9sGXmaTOpghfdjV5_nJwbQfj9pImhb9cNgjJl1jCF6HfN-FsahrDL5F6zRyQGCxq4xWYP9lsY1BaRykJKCGMKR4nNfIatfNNcpu7pF6GwUf8VxfONYWsgHL4py0vGosCLzrxC4G-Zrx-LqLGpjxax7Kwuw3OeLFiMbYhQ1xtTZQiXG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1200" data-original-width="1600" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi4YV6PQmZv_btLQp9sGXmaTOpghfdjV5_nJwbQfj9pImhb9cNgjJl1jCF6HfN-FsahrDL5F6zRyQGCxq4xWYP9lsY1BaRykJKCGMKR4nNfIatfNNcpu7pF6GwUf8VxfONYWsgHL4py0vGosCLzrxC4G-Zrx-LqLGpjxax7Kwuw3OeLFiMbYhQ1xtTZQiXG=w600-h450" width="600" />
</a>
</div>
<p>Well, I had to include one screenshot on a greenscreen monitor, provided by a Mini PET B I was also testing some of these games on.</p>
<hr />
<h2 style="text-align: left;">Online</h2>
<p>You can also play some of these games online using Norbert Landsteiner's excellent Commodore PET emulator:</p>
<p><a href="https://www.masswerk.at/pet/" rel="nofollow" target="_blank">https://www.masswerk.at/pet/</a></p>
<p>Tut-Tut and most Jim Orlando's games are included in the Prg Library, the rest can be played from the prg files or disk images.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh3KdRQ_TSujsg2nOMhXj_sMtqPB7p1x1VpfhoQUn9sAqz38yILXKg-htNvp4DZkeRwLzLsxfwrrYESaFbVFhlW2nNhiXESV7j82kohasYGWgk4p8edhEsSkpt5u0eOKaTNOAQV7Q7QOFw3aZ_BlpJJbK5SZZtBBhiFkMzys2Q_e_pLVNWYOSKdbgtrntoU" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="900" data-original-width="900" height="600" src="https://blogger.googleusercontent.com/img/a/AVvXsEh3KdRQ_TSujsg2nOMhXj_sMtqPB7p1x1VpfhoQUn9sAqz38yILXKg-htNvp4DZkeRwLzLsxfwrrYESaFbVFhlW2nNhiXESV7j82kohasYGWgk4p8edhEsSkpt5u0eOKaTNOAQV7Q7QOFw3aZ_BlpJJbK5SZZtBBhiFkMzys2Q_e_pLVNWYOSKdbgtrntoU=w600-h600" width="600" />
</a>
</div>
<hr />
<h2 style="text-align: left;">Support Developers</h2>
<p>Most of the games on itch.io can be downloaded for free, but I would encourage you to support the developers where you can, whether that be by paying a few dollars, or leaving comments, following them, sharing the links etc.</p>
<hr />
<h2 style="text-align: left;">SNES controller</h2>
<p><b>Note:</b> a lot of these games support the Texelec SNES adapter. If you do use one of those with a PET or Mini PET, I would strongly recommend you follow the instructions to add external power rather than using pin 2 which is video output on all PETs, not 5V power. I went into a lot more detail on this in the original Patreon post, but I will just leave the recommendation.</p>
<hr />
<h2 style="text-align: left;">Adverts</h2>
<h3>Mini PET A</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgYz3Wvr9lHoMSRrKFcVq1dKiHHQOtiikhKezvcvU5HSGtdrsyt1wg_Zh3nAFWiGKwilOLSeE6hIEjTRT6PJQ0g6f8df79IvJAA2NNFadJ2wpkmBCAEYyOlf0pK_M1Dlltu2HmvXWnWkdqIoN3kbqdoGdQYa3W1dDaXnpqx-oDLaH853Du-KTNngRRT_DcY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEgYz3Wvr9lHoMSRrKFcVq1dKiHHQOtiikhKezvcvU5HSGtdrsyt1wg_Zh3nAFWiGKwilOLSeE6hIEjTRT6PJQ0g6f8df79IvJAA2NNFadJ2wpkmBCAEYyOlf0pK_M1Dlltu2HmvXWnWkdqIoN3kbqdoGdQYa3W1dDaXnpqx-oDLaH853Du-KTNngRRT_DcY=w600-h450" width="600" />
</a>
</div>
<p>The Mini PET is a Commodore PET compatible 6502 based computer with 32K of RAM and a choice of PET BASIC 1,2 or 4, or Mini PET BASIC 4.0.</p>
<p>This is the stand alone version that can be used with one of my keyboards or another aftermarket PET keyboard (normal / graphics layout recommended for better compatibility than the business keyboard).</p>
<p>Mini PET A on SellMyRetro</p>
<ul>
<li>Built and Tested with Deluxe Keyboard - <a href="https://www.sellmyretro.com/offer/details/63877" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63877</a></li>
<li>Full kit with deluxe keyboard - <a href="https://www.sellmyretro.com/offer/details/63951" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63951</a></li>
<li>Full kit with no keyboard - <a href="https://www.sellmyretro.com/offer/details/63950" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63950</a></li>
</ul>
<h3>Mini PET B</h3>
<p>The B variant is designed as a drop in replacement for a PET motherboard. No keyboard options are provided, as you are expected to use the PETs original keyboard.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhafVLApYjgmLhcw_cejSw_jW2uobrJ_4EBq83_yOdOz_OzPwCTM4AdbEVeVhgetYKlo2qcXeTinHYQ53kzYln92_K2orj7HwQ-mW7LlO0brAwSWpdz4XTEY_x6j8Wcy44EmLjHuea0qpbri6ralU64bXXRhdJHrYyF5suvR1khL2nsqqs6CQzDs7LcmhJS" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhafVLApYjgmLhcw_cejSw_jW2uobrJ_4EBq83_yOdOz_OzPwCTM4AdbEVeVhgetYKlo2qcXeTinHYQ53kzYln92_K2orj7HwQ-mW7LlO0brAwSWpdz4XTEY_x6j8Wcy44EmLjHuea0qpbri6ralU64bXXRhdJHrYyF5suvR1khL2nsqqs6CQzDs7LcmhJS=w600-h450" width="600" />
</a>
</div>
<p>In addition to the DC power and composite video output of the A, the Mini PET B can use the PET power supply (5 pin or 9 pin) and drive a PET 9" or 12" monitor.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjaf8ahZMb2yyakT6Q0lBXs66NlKj_qKDdoWgcaA8c7Jx3exJD46qX_l7u9vRQZxlSDG2nIiS1o4MAGXuZgP5jUX7E_DiiCI8yUwby4NDk3Hn3TZgn5qSSmuamx1uiWC2rigOnGmdumXbOE-i-rNWuVTysJwEBRpLBN_iiD0i-AMP19U4DN3APm10h9HrZG" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjaf8ahZMb2yyakT6Q0lBXs66NlKj_qKDdoWgcaA8c7Jx3exJD46qX_l7u9vRQZxlSDG2nIiS1o4MAGXuZgP5jUX7E_DiiCI8yUwby4NDk3Hn3TZgn5qSSmuamx1uiWC2rigOnGmdumXbOE-i-rNWuVTysJwEBRpLBN_iiD0i-AMP19U4DN3APm10h9HrZG=w600-h450" width="600" />
</a>
</div>
<p>Mini PET B at SellMyRetro:</p>
<ul>
<li>Built and tested - <a href="https://www.sellmyretro.com/offer/details/63875" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63875</a></li>
<li>Full Kit - <a href="https://www.sellmyretro.com/offer/details/63876" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63876</a></li>
</ul>
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here (the original version of this post had two extra sections at the end), and some of these posts contain bits from several Patreon posts.</p>
<p>This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>
Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.comtag:blogger.com,1999:blog-6605755600954489405.post-90794278716138038692023-10-01T11:39:00.020+01:002023-12-30T15:19:52.230+00:00How the ZX80 Generates Video<p><i>My Patreon supporters have had this for a while, but I have been holding off posting it until the Minstrel 2 and 3 kits were back in stock, in case any of you wanted to build your own to follow along.</i></p><p>The ZX80 is quite an amazingly simple design. One of the impressive things is the way the it generates a video signal without a custom video chip, or any of the counters and comparators normally required for a logic implementation.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiUlZPm-RdnZFmT7NFNZpriltO_aabIFQO2i0EoLGnjAxCeC0we9TLee7QV3uvd1R4t59dhxPeWxDpENA6U3J_s6GVFkKFN216O6CUTa2-T2-FY1fQBtPuMv1dnrR1lg4-rPE7uNxDXi4YtU9WK00bL0BDd1PXg7qPJJ39K8dMFM4l7Kkys5X2qfQTjxhvf" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiUlZPm-RdnZFmT7NFNZpriltO_aabIFQO2i0EoLGnjAxCeC0we9TLee7QV3uvd1R4t59dhxPeWxDpENA6U3J_s6GVFkKFN216O6CUTa2-T2-FY1fQBtPuMv1dnrR1lg4-rPE7uNxDXi4YtU9WK00bL0BDd1PXg7qPJJ39K8dMFM4l7Kkys5X2qfQTjxhvf=w600-h450" width="600" />
</a>
</div>
<p>It does this at the expense of performance and the user experience.</p><p>The ZX80 display operates in two modes:</p>
<ol style="text-align: left;">
<li>The Z80 is devoted to drawing the screen. No user code is run, and the only non-screen drawing activity is scanning the keyboard</li>
<li>When a key press is detected, it switches into code running mode (later called Fast mode). Here the Z80 is running code, and the screen is not drawn.</li>
</ol>
<p>For short bits of code, such as typing in a character as a part of a BASIC program, this will be a brief flash and as soon as the typed letter has been processed, the display drawing will then resume.</p>
<p>For longer bits of code, such as pressing newline to complete a line of code, this takes a few seconds. The longer the program, the longer the delay adding each line.</p>
<p>And finally, for running code, this can be an extended period where the screen is not being drawn, and so the TV will just show snow (or a modern TV will drop to "No Signal").</p>
<p>Players of 3D Monster Maze will know this as "the mists of time".</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEipEuZWNk0LW-JI0DfxjtgwVxyg5UQfCVzAxIH-8FRU06a7k9jooYvNCJSGVJvHQkemmgzhAhnNIDj2v2HWflJM1DqtMEHF_iFwgPL4KixqD3tPSzsWxDtcsGvTFhHm4CEnZlo2_CDYJV_A2NaGSJ31JDFXsETAQt4ssKos3oGdU9kB9e2oW3kQ4Pocn4L-" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="960" data-original-width="1280" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEipEuZWNk0LW-JI0DfxjtgwVxyg5UQfCVzAxIH-8FRU06a7k9jooYvNCJSGVJvHQkemmgzhAhnNIDj2v2HWflJM1DqtMEHF_iFwgPL4KixqD3tPSzsWxDtcsGvTFhHm4CEnZlo2_CDYJV_A2NaGSJ31JDFXsETAQt4ssKos3oGdU9kB9e2oW3kQ4Pocn4L-=w600-h450" width="600" />
</a>
</div>
<p>This occurs when the maze generation code is being run and the screen is just snow for 30 seconds as some BASIC code generates the maze. In my remakes of 3DMM this section is written in assembler and takes less than a second. I added a "snow effect" of clearing the screen, which actually takes longer than the maze generation code, which is run whilst the user is reading the "mists of time" message.</p>
<p>So, how does the ZX80 achieve screen drawing with relatively few parts?</p>
<h2 style="text-align: left;">Vertical Sync Timing</h2>
<p>First, lets look at the vertical sync. This is a regular pulse every 20mS of around 384uS. That is a frequency of 50Hz for the UK model. The USA model produces vertical sync pulses every 16.7ms (60Hz).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjd-F8XNN5ti0wfosM6njCOk22_b5iLoIBzDCCjleP1Vzhw3Ipb7UHj4VLUJZNIXlb9yXcxCkzOeV_LkW85s5HtYr_IPAB2iK-oaaav3jLhO21PhaJuHgyifyXXDaLVjDIZzQnxi0UkyoWxqZvj9VcoIJKrpkpv3NfCvj-H0Fsy9pCkcqSz1wvdc8VaieA_" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1256" data-original-width="1672" height="482" src="https://blogger.googleusercontent.com/img/a/AVvXsEjd-F8XNN5ti0wfosM6njCOk22_b5iLoIBzDCCjleP1Vzhw3Ipb7UHj4VLUJZNIXlb9yXcxCkzOeV_LkW85s5HtYr_IPAB2iK-oaaav3jLhO21PhaJuHgyifyXXDaLVjDIZzQnxi0UkyoWxqZvj9VcoIJKrpkpv3NfCvj-H0Fsy9pCkcqSz1wvdc8VaieA_=w640-h482" width="600" />
</a>
</div>
<p>This is controlled in software. the exact frequency depends on the number of lines, which is set by a the presence of a diode on the ZX80. On ZX80 USA models (left), there is a diode fitted at D11, on the standard UK model (right), it is omitted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjJz-xNv6e5kA98T8nQWj61EsyXp1wBKXGiJu7ylbGEJ8V_pOZ9wDv7BcBgnz7Uc_kkwnyJX1lk8pnp8pWvJBY2yrzHaAtN73o47c5LLZVmGyoOVZR3grUiFBRsvExeKweatMTsXU2JnTrCycdPq-tEzUFwdTZjdP0z8ceuxzvQpQLlrB0zfGM5cvsNXdFT" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1176" data-original-width="1568" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjJz-xNv6e5kA98T8nQWj61EsyXp1wBKXGiJu7ylbGEJ8V_pOZ9wDv7BcBgnz7Uc_kkwnyJX1lk8pnp8pWvJBY2yrzHaAtN73o47c5LLZVmGyoOVZR3grUiFBRsvExeKweatMTsXU2JnTrCycdPq-tEzUFwdTZjdP0z8ceuxzvQpQLlrB0zfGM5cvsNXdFT=w600-h450" width="600" />
</a>
</div>
<p>On the Minstrel 2, the diode is always fitted, but is taken out of circuit if the jumper is set to PAL.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgSZZ_L7jJSyZafu3zNX3qk6L6P4HclrFi4clukUH7_dyBjuJWJpiBw3y7pwmTa2bzQ8rKoQYRPNpD4VKMj3y6sgOpZm6kLmwmTpkxv1L6x5iUiQSyAf_RhdxTSX9UDER8cknqupajEXN-Jp2SrO5DdnoCwP2P8AiA5lHl3xaG21gaoJU0ZZn0g33RAABHr" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="635" data-original-width="1599" height="254" src="https://blogger.googleusercontent.com/img/a/AVvXsEgSZZ_L7jJSyZafu3zNX3qk6L6P4HclrFi4clukUH7_dyBjuJWJpiBw3y7pwmTa2bzQ8rKoQYRPNpD4VKMj3y6sgOpZm6kLmwmTpkxv1L6x5iUiQSyAf_RhdxTSX9UDER8cknqupajEXN-Jp2SrO5DdnoCwP2P8AiA5lHl3xaG21gaoJU0ZZn0g33RAABHr=w640-h254" width="600" />
</a>
</div>
<p>This is about as simple as an I/O port can get. If the diode is in circuit, then when the keyboard port is read, /Keyboard goes low, and current flows through the diode, pulling D6 low and that bit is read as 0. If the diode is not in circuit, it is read as a 1 <i>(it is loosely pulled up through the D6-D6' 1K resistor and the 47K pull up on D6').</i></p>
<p>The PAL/NTSC setting is read each cycle and used to determine how many lines padding should be above and below the text area. NTSC models have 32 lines added at the top and bottom of the screen. UK models have 56 lines are added.</p>
<p>The vertical sync section is around 384us, which is 6 lines at 64us each.</p>
<p>The text area of the screen is 24 lines of 8 x 8 characters, so 192 text lines in total.</p>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: none; width: 600px;">
<tbody>
<tr>
<td width="30%"><div align="center"><b>Section</b></div></td>
<td width="35%"><div align="center"><b>UK / PAL / 50Hz</b></div></td>
<td width="35%"><div align="center"><b>USA / NTSC / 60Hz</b></div></td>
</tr>
<tr>
<td><div align="center">Vertical Sync</div></td>
<td><div align="center">6</div></td>
<td><div align="center">6</div></td>
</tr>
<tr>
<td><div align="center">Top Border</div></td>
<td><div align="center">56</div></td>
<td><div align="center">32</div></td>
</tr>
<tr>
<td><div align="center">Text Area</div></td>
<td><div align="center">192</div></td>
<td><div align="center">192</div></td>
</tr>
<tr>
<td><div align="center">Bottom Border</div></td>
<td><div align="center">56</div></td>
<td><div align="center">32</div></td>
</tr>
<tr>
<td><div align="center">Total</div></td>
<td><div align="center">310</div></td>
<td><div align="center">262</div></td>
</tr>
<tr>
<td><div align="center">Ideal</div></td>
<td><div align="center">312.5</div></td>
<td><div align="center">262.5</div></td>
</tr>
</tbody>
</table>
<p><i>(I am jumping around a bit in terminology, I will try to stick with UK and USA models rather than PAL or NTSC, since there is no colour component to the signal and the difference is the refresh rate)</i></p>
<p>The UK models produce 310 lines per frame, and USA models produce a total of 262 lines. These are repeated identically for odd and even frames, giving a 620 and 524 lines when interlaced (close enough the the ideal 625 / 525 lines).</p>
<h2 style="text-align: left;">Vertical Sync Generation</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi52eMpJm7cSYfDm-ja_XPCgWQR5UM7R3uDyQlZiiiK6eeA0-wUC9aiF5dIBsn2kwcUMsm6o-wQTBpZKCxOlxJWSL3BjgJn9vk2dnVoPt_53o-cuCv7qOigwey-LD5QKZtHXFJ6KV83Xhe_Ozy8zh7qMNVjB8FFxPLYL2gpl2j626kbyYS4ZZkgVgYeoV9H" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1484" data-original-width="1976" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEi52eMpJm7cSYfDm-ja_XPCgWQR5UM7R3uDyQlZiiiK6eeA0-wUC9aiF5dIBsn2kwcUMsm6o-wQTBpZKCxOlxJWSL3BjgJn9vk2dnVoPt_53o-cuCv7qOigwey-LD5QKZtHXFJ6KV83Xhe_Ozy8zh7qMNVjB8FFxPLYL2gpl2j626kbyYS4ZZkgVgYeoV9H=w600-h450" width="600" />
</a>
</div>
<p>The VSync pulse synchronises the top of the display screen. It is triggered by a read operation of the keyboard port. There are actually multiple reads as the keyboard is scanned, but the first one resets the SR flip flop consisting of two NAND gates.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7PlQhBDVVJsZft1b0n3M6dNaLGlbb9MO43yhMkiPcEjMgDxEdZRX-ke2ugXMWDIm8ZAXE48eFfoN-ZlcaURdudIo-flZgnm3xggUgjjVBrFZMdHojBpfm9ws_zruNOI3TtqUWDNEe5dVWGrt5gbUVzBHVkTSUhgKQDOo3JW0x64BC1pwuH2AtLoEREJrJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="995" data-original-width="1891" height="336" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7PlQhBDVVJsZft1b0n3M6dNaLGlbb9MO43yhMkiPcEjMgDxEdZRX-ke2ugXMWDIm8ZAXE48eFfoN-ZlcaURdudIo-flZgnm3xggUgjjVBrFZMdHojBpfm9ws_zruNOI3TtqUWDNEe5dVWGrt5gbUVzBHVkTSUhgKQDOo3JW0x64BC1pwuH2AtLoEREJrJ=w640-h336" width="600" />
</a>
</div>
<p>The keyboard scan happens at the top of each screen and is the only code which is run. If a key press is detected, the screen draw will be aborted and instead the appropriate code will be run.</p>
<p>If no key is pressed, after the appropriate number of cycles, an IO Write operation is carried out. The address does not matter, any address will do. This sets the SR flip flop and send the VSync signal high, ending the pulse.</p>
<h2 style="text-align: left;">Horizontal Lines</h2>
<p>Each line is 64uS, and starts with a horizontal sync pulse. This is the same for UK and USA models, NTSC should be 63.55uS, but this is close enough.</p>
<p>After completing the vertical sync, the Z80 is setup to jump to the location of next line in the display file, which contains up to 32 characters* and a newline.</p>
<p>Well, not the actual location of the DFILE, but a mirror of the DFILE above 32K.</p>
<p>All the characters in the line will have bit 6 low, the character set on the ZX80 is 64 characters, plus there inverse, which have bit 7 set.</p>
<p>Characters from 64-128 are used for BASIC tokens and keywords, and special characters like NEW_LINE, which also happens to be the op code for the HALT instruction (0x76) which will come in handy later.</p>
<p>This logic detects a character in the DFILE mirror is being executed and instead sets a NOP instruction on the databus.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEgAKpX3A9ocbUabS_CSW7WmjO5rltUGB9Yi4Oq0cNKuguMYZ6KycLMsgUOjiUlS8_GnmFB54mF5E0Rt91yumDJXcW8YM8S66vis_iyJlMT0vDgI00XzwPdyFujdp0l5iIjXvsj2ACtXLIp77X5Qbu2COUqo2PMloOifJgXShtVxlEvCBcXGGte21shcx76c" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2161" data-original-width="2426" height="571" src="https://blogger.googleusercontent.com/img/a/AVvXsEgAKpX3A9ocbUabS_CSW7WmjO5rltUGB9Yi4Oq0cNKuguMYZ6KycLMsgUOjiUlS8_GnmFB54mF5E0Rt91yumDJXcW8YM8S66vis_iyJlMT0vDgI00XzwPdyFujdp0l5iIjXvsj2ACtXLIp77X5Qbu2COUqo2PMloOifJgXShtVxlEvCBcXGGte21shcx76c=w640-h571" width="600" />
</a>
</div>
<p>If D6 is low (not a newline), A15 is high (running in the mirror), /HALT is high (not halted) and /M1 is low (an instruction is being read), then the databus of the Z80 is pulled down to 0x00, the opcode for a NOP instruction.</p>
<p>There are resistors in the databus splitting it into two side, the Z80, the keyboard IO and the NOP generator on one side, and the RAM, ROM and expansion bus on the other.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEi6MbUVqq0x9HvHTcqmtJ1aHpGAoRlQlEUZvUgxeG3FzTzP5a_OZ0052pbXzDsU7q0SEbUMWjPPDYhlV01RTf8jA9iBOEQfoAzLhNm7GCWUtnz8P4jdZiPNmoUvhztiUurP4NPIr9b8mM5SagToujx3O0OFDS1smG2QbeCSzlKuDcZU3hwx69MDQa7luiV-" style="margin-left: 1em; margin-right: 1em;">
<img alt="" data-original-height="1303" data-original-width="1189" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEi6MbUVqq0x9HvHTcqmtJ1aHpGAoRlQlEUZvUgxeG3FzTzP5a_OZ0052pbXzDsU7q0SEbUMWjPPDYhlV01RTf8jA9iBOEQfoAzLhNm7GCWUtnz8P4jdZiPNmoUvhztiUurP4NPIr9b8mM5SagToujx3O0OFDS1smG2QbeCSzlKuDcZU3hwx69MDQa7luiV-" width="219" />
</a>
</div>
<p>This means the character code is still on the databus on the RAM side, and this is latched into the character latch.</p>
<p>Whilst executing instructions, the Z80 uses it's spare cycles to refresh the RAM. Dynamic RAM chips require each address be accessed regularly to maintain it's stored value, the Z80 has refresh circuitry built in, which makes using DRAM with a Z80 much easier.</p>
<p>But the ZX80 isn't using DRAM, it has repurposed the refresh cycles. Instead the value being refreshed is set to the location in ROM where the character bitmaps are stored, and when /Refresh is low, the ROM address becomes a combination of this, the character code (from the latch) and a line counter which cycles from 0 through to 7 with every sync pulse.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjruXULHov3uGVbopG0q3sFbBH57WqSH-Qv3om36jnvPForZf70-pGOke9PCEgHUWy6MMAAnH2EYpJW1AAf96tUOquD9KIjGTINhOI0ZVrSMTzRLmm0P15IRAF58zWrPc1abTCzbdejIabN3y41bzsvJ5xO6M7PvcleQm5B_xMwxP4a7QmicoBHMLZ4Vyla" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1426" data-original-width="2036" height="448" src="https://blogger.googleusercontent.com/img/a/AVvXsEjruXULHov3uGVbopG0q3sFbBH57WqSH-Qv3om36jnvPForZf70-pGOke9PCEgHUWy6MMAAnH2EYpJW1AAf96tUOquD9KIjGTINhOI0ZVrSMTzRLmm0P15IRAF58zWrPc1abTCzbdejIabN3y41bzsvJ5xO6M7PvcleQm5B_xMwxP4a7QmicoBHMLZ4Vyla=w640-h448" width="600" />
</a>
</div>
<p>There is a lot going on there, but this allows the ROM to be addressed in two ways.</p>
<p>When /Refresh is high, the Z80 is running code, and the 74LS157s switch the ROM address lines to those of the Z80. <i>(This is from the Minstrel 2, so shows the extra address lines on the ROM are selectable via jumpers to allow different ROM images to be used, and the extra resistor R103, which adds the missing /ROM_CS to the expansion connector)</i>.</p>
<p>When /Refresh is low, the Z80 is running NOPs, so the 74LS157s switch the ROM address lines to an address composed of:</p>
<ul style="text-align: left;">
<li><b>A0-A2</b> - 3 bit line counter, sets which line of each character is currently being drawn</li>
<li><b>A3-A8</b> - 6 bit character address, previously latched into the 74LS373 character latch</li>
<li><b>A9-A12</b> - 4 bits from the refresh address counter (set to point to the character bitmaps)</li>
</ul>
<p>Just before the end of the refresh cycle, the value read from the ROM is loaded into the shift register and clocked out over the next 8 clock cycles, which is just enough time for the NOP instruction to be executed.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEidLyK0KuvuHSd6osE0NlVx8Mz2CKX6bU4SCAglUlRtJ2vOcrARCTKHB_NDD34a_EL56Wy3WSxD3m056l10griWSsSBpZdeVOvhKCSbZN4UyWvhkEEAwMTw6-Xb0uyPYK3DJiYu_HuorTVlnDhAUqjUNUpG1qKD4bIeMg3dKtR9a8Kz5EmxdkPNawvHMhbZ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1564" data-original-width="2085" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEidLyK0KuvuHSd6osE0NlVx8Mz2CKX6bU4SCAglUlRtJ2vOcrARCTKHB_NDD34a_EL56Wy3WSxD3m056l10griWSsSBpZdeVOvhKCSbZN4UyWvhkEEAwMTw6-Xb0uyPYK3DJiYu_HuorTVlnDhAUqjUNUpG1qKD4bIeMg3dKtR9a8Kz5EmxdkPNawvHMhbZ=w600-h450" width="600" />
</a>
</div>
<p>That is the 4K BASIC inverse K, always looks a little odd with the pixel hanging out the side. They tidied up various things in the font for the 8K BASIC and the ZX81, including this.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiFnSW9x-5bR7YeSa3rAvyxkcHjwPIYSjytfhTSgejFWeDQtzg31FU8Ap6DVtxMbB8cDEeNf7V0Du0LMz_QnL9uGKPww3yMYqBeNZii5x4LYwd8fbppGvgyQNmIGzXzZvs5g7ww7-oIJPLSgQnI1lmDLiVAdO6ylocruoR3CGBpP878VHVlN-0_qLb5Uzri" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1513" data-original-width="2018" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiFnSW9x-5bR7YeSa3rAvyxkcHjwPIYSjytfhTSgejFWeDQtzg31FU8Ap6DVtxMbB8cDEeNf7V0Du0LMz_QnL9uGKPww3yMYqBeNZii5x4LYwd8fbppGvgyQNmIGzXzZvs5g7ww7-oIJPLSgQnI1lmDLiVAdO6ylocruoR3CGBpP878VHVlN-0_qLb5Uzri=w600-h450" width="600" />
</a>
</div>
<p>Character generation continues for up to 32 characters. The DFILE in a ZX80 with less than 4K of RAM is set to take up as little space as possible, so initially just contains newline / HALT characters.</p>
<p>With 4K or more, the DFILE is always full of 32 characters per line (initially spaces) and then the newline.</p>
<p>You can see this on a Minstrel 3 when the chequered background is turned on. This feeds the lowest bit of the line counter XORed with the 3.25MHz clock into the serial input of the shift register. When a character is not being clocked into it, it send this to it's output. If it was just the clock, it would be a series of vertical lines, by XORing it with the line counter, each alternate row is inverted, giving the chequerboard effect.</p>
<p>With the normal, fully expanded DFILE, you get a blank screen as each lines contains 32 spaces and then a newline <i>(ignore the distortion before the K, this is just an artefact of running the ZX80 4K BASIC ROM where the timing is not quite right on the line below the display screen)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh1Ck0fy--XHlVBNAVk7j-Ulyz3A9oZgtgVbUC7rIDphYevCZVEaMhQoM0kwYXcosLJEHUG9e7RukXmGH7vmJL0WZpBmgIT7E3eoEj5Ds2jqyglJEFZKOJLshFnC8Rgj8jvxtdShR5FXxY-aJafM5x8WClhjKe0QE31A7be-JuUEjtjjve5an2I-sXcH-1R" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh1Ck0fy--XHlVBNAVk7j-Ulyz3A9oZgtgVbUC7rIDphYevCZVEaMhQoM0kwYXcosLJEHUG9e7RukXmGH7vmJL0WZpBmgIT7E3eoEj5Ds2jqyglJEFZKOJLshFnC8Rgj8jvxtdShR5FXxY-aJafM5x8WClhjKe0QE31A7be-JuUEjtjjve5an2I-sXcH-1R=w600-h450" width="600" />
</a>
</div>
<p>With the collapsed DFILE, there are only the newline characters, no spaces are drawn, so you see only the background.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsheS79-bjE_PjJ4NNPwxDoGWf_2Y7J5XiVHDMZrkC0gXbQzAQ8wuHfasmctQE2XHtBBXsytMo2S-PrC8IKSSuA1V8b89xsm88iBcdkcOoyiNTmY6kSmPfnHgoQ-arf6trCC3BBnxfvrF5vaucWxEwB4hA0d1m4DWuWP2JKW3DaEq2b10DIkamfiIAhScE" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsheS79-bjE_PjJ4NNPwxDoGWf_2Y7J5XiVHDMZrkC0gXbQzAQ8wuHfasmctQE2XHtBBXsytMo2S-PrC8IKSSuA1V8b89xsm88iBcdkcOoyiNTmY6kSmPfnHgoQ-arf6trCC3BBnxfvrF5vaucWxEwB4hA0d1m4DWuWP2JKW3DaEq2b10DIkamfiIAhScE=w600-h450" width="600" />
</a>
</div>
<p>This is clearer when there is text on the screen, you can see where characters are drawn, but with no additional white space at the end of the lines.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhDCUMGXpoJFs3iuBljAuwO5kNM86gSYxSEt3UScejrvCCLRt8gqMw6i27_LpuLWvcV059p54YazsfqGspe0GVZlGRhzgJQ6hs1PBZYWZAqzPFSJiYvF0vUjEidRMtvOfmB3F5wdSOuNaaHs3jLt70ceK6MA2bcxtRQs-zc3i2CWAtPMvU1I9oo49-GbVCb" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhDCUMGXpoJFs3iuBljAuwO5kNM86gSYxSEt3UScejrvCCLRt8gqMw6i27_LpuLWvcV059p54YazsfqGspe0GVZlGRhzgJQ6hs1PBZYWZAqzPFSJiYvF0vUjEidRMtvOfmB3F5wdSOuNaaHs3jLt70ceK6MA2bcxtRQs-zc3i2CWAtPMvU1I9oo49-GbVCb=w600-h450" width="600" />
</a>
</div>
<p>Normally this would not be visible to the user, as the background is white.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJbzXu4UUjIxmhMR6InPLKlPer6-vsOAUOsEiMB7s3eDPU1Mvvwjv4U2KV_VLI81a94eINJmNyMf21scXWEnYstzg8aqDofXAvlHLkFx-HJ-72NXiqttRPCklMrmFXlfzwo44bIKzKxIQ__A2nojJDf82QW4kNyAa487_Wv9z9em52Mgo61kKvLYFnbtLJ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJbzXu4UUjIxmhMR6InPLKlPer6-vsOAUOsEiMB7s3eDPU1Mvvwjv4U2KV_VLI81a94eINJmNyMf21scXWEnYstzg8aqDofXAvlHLkFx-HJ-72NXiqttRPCklMrmFXlfzwo44bIKzKxIQ__A2nojJDf82QW4kNyAa487_Wv9z9em52Mgo61kKvLYFnbtLJ=w600-h450" width="600" />
</a>
</div>
<h2 style="text-align: left;">Horizontal Sync</h2>
<p>When the NewLine character is encountered, the NOP generation logic is disabled and the Z80 reads the NewLine character code as an instruction and executes it. As previously stated, this is the op code for HALT, and so the Z80 halts.</p>
<p>The Z80 remains in the halt state until the end of the line.</p>
<p>The refresh cycles continue, and the refresh address continues to count up. The address range has been chosen so that by the end of the line it will have reached an address where A6 is low. A6 is hard wired to the /INT pin, so this causes an interrupt and wakes up the Z80. The interrupt handler in the ZX80 ROM sets up the refresh address for the next line and then jumps into the DFILE again.<i> (this unfortunately means it's tricky to use hardware interrupts for other things on the ZX80)</i></p>
<p>Whilst doing this, the Z80 generates an interrupt acknowledge signal, an IO request with /M1 low. The /IORQ line going low sets the Q output of the first flip high and its /Q output low. This is clocked through the second flip flop by the rising edge of M1 (which is the falling edge of the /M1 signal).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjylNX8a9zn_ov9eOJPshF9YsohC06_-KnYCxkVZCkIiLaSw347DAmsNoBnYCBBS1D_VPUWrFdQscTpLLcwkMnLPNO3a1A2-BpBvUxVTxHWS7u5ND6SGoO8FJfJxHmy3SAAqYv4Lj1j_2-zLxHR6FWXMAzLJjqVhBF3WDnBu4aC9cLXC_yElqdhnZSlCcie" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="743" data-original-width="2430" height="196" src="https://blogger.googleusercontent.com/img/a/AVvXsEjylNX8a9zn_ov9eOJPshF9YsohC06_-KnYCxkVZCkIiLaSw347DAmsNoBnYCBBS1D_VPUWrFdQscTpLLcwkMnLPNO3a1A2-BpBvUxVTxHWS7u5ND6SGoO8FJfJxHmy3SAAqYv4Lj1j_2-zLxHR6FWXMAzLJjqVhBF3WDnBu4aC9cLXC_yElqdhnZSlCcie=w640-h196" width="600" />
</a>
</div>
<p>That low pulse is then clocked into the third flip flop by the next falling edge of /M1, and this sets the output Q of the third flip flop low, starting the horizontal sync pulse.</p>
<p>This low is fed back and clears the first flip flop, sending it's /Q output high. This high is then clocked through the next two flip flops on the next to falling edges of /M1, ending up with the Q output of the third flop flop going high after around 6uS.</p>
<p>That high ends the horizontal sync pulse, the first flop flip is no longer in clear mode, but the /Q output remains high until the next interrupt acknowledge sets it low again.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhd1k42SnZtfEpdQWc3m8pkrWajmzEEhPOhPbngLxQQIk3U6c8DrcWW9RSO4ZKULh5gnASgCaOu5ZI9cMWR0gwEPhAMzDfYtFP1LSMg5n9Ry36oF55z_2WcTQfdL-0cf1dLmozATYbYRSqmVVmN2mIENiMlPP7gZaV7pLUp2VgNxagH5k5dTn8XkxJDXwcn" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1232" data-original-width="1644" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhd1k42SnZtfEpdQWc3m8pkrWajmzEEhPOhPbngLxQQIk3U6c8DrcWW9RSO4ZKULh5gnASgCaOu5ZI9cMWR0gwEPhAMzDfYtFP1LSMg5n9Ry36oF55z_2WcTQfdL-0cf1dLmozATYbYRSqmVVmN2mIENiMlPP7gZaV7pLUp2VgNxagH5k5dTn8XkxJDXwcn=w600-h450" width="600" />
</a>
</div>
<p>When the collapsed DFILE is in use on a ZX80 with less than 4K of RAM you can see it spends the remainder of the lines in halt, waiting for the refresh address counter to trigger the interrupt.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXOT_ULVYGSshMkrtD9QPciNhKoOTQk5xJ3aNG6ZaBffIPw4vrTEtUDg0U5WrzZUY8F8g5pJy1cypQK7cyAeJEHxuM2ES3GzPefQfcOmrfD18gvJ1JZfHSMMpZMDaNmD_TO6zu7KFAmJnQb_i5NOOuN0LAgmoQVshgs2eb2DMu8pCt4J5W4ozrihb3YSkx" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="1234" data-original-width="1644" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXOT_ULVYGSshMkrtD9QPciNhKoOTQk5xJ3aNG6ZaBffIPw4vrTEtUDg0U5WrzZUY8F8g5pJy1cypQK7cyAeJEHxuM2ES3GzPefQfcOmrfD18gvJ1JZfHSMMpZMDaNmD_TO6zu7KFAmJnQb_i5NOOuN0LAgmoQVshgs2eb2DMu8pCt4J5W4ozrihb3YSkx=w600-h450" width="600" />
</a>
</div>
<p>The border lines at the top and bottom of the screen look similar to the above collapse display file version, the address is set so the first character read is always a newline, so the Z80 is halted for the full length of the line.</p>
<p>These traces show a full line, with the combined sync in blue, video in green, and the composite video in yellow (at the base of the output transistor).</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhvs50kLh8YZgaatlFwj89i2s3o1JNQ5HhA4SDhVywC-5-02oseIeNXBcqw_Xsn4LhfYpx3OFZANM0BMVA6v1hymG8CVOM9uaW5EikYz_F1DEMxFHdG7CjLLLE4CwGKl1Gu5B2CUKh-b07njgTnO-EEECURstoRUD-nxxUtRbME0UXsUP8XkQrfn3H_rMWA" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEhvs50kLh8YZgaatlFwj89i2s3o1JNQ5HhA4SDhVywC-5-02oseIeNXBcqw_Xsn4LhfYpx3OFZANM0BMVA6v1hymG8CVOM9uaW5EikYz_F1DEMxFHdG7CjLLLE4CwGKl1Gu5B2CUKh-b07njgTnO-EEECURstoRUD-nxxUtRbME0UXsUP8XkQrfn3H_rMWA=w600-h360" width="600" />
</a>
</div>
<p>This process of line drawing continues until all the display lines and border lines have been completed.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjLdOQ947DOUgrmRiRPHngYiFvjt3VIMQnMFnHDBbYmfRQ0ewEe3i5irjgBktd_7ACvxuhzIphP1u1kzuxPwwJn_rRv1TfFDS02xdfk3sYpCWCEuoQgm4H2VSQ2GshsSoEqGTgRVB1Fz5ip6E7xk4CwkWvzYb4JESP_Vv1fETxQ8O-MJjU0mv_i9iJZ3SvY" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjLdOQ947DOUgrmRiRPHngYiFvjt3VIMQnMFnHDBbYmfRQ0ewEe3i5irjgBktd_7ACvxuhzIphP1u1kzuxPwwJn_rRv1TfFDS02xdfk3sYpCWCEuoQgm4H2VSQ2GshsSoEqGTgRVB1Fz5ip6E7xk4CwkWvzYb4JESP_Vv1fETxQ8O-MJjU0mv_i9iJZ3SvY=w600-h360" width="600" />
</a>
</div>
<p>The VSync signal discussed above is then generated and merged with the horizontal sync pulses at the last stage of a flip flop chain, where the VSync pulse drives the clear input and forces the output low for the duration of the 384uS pulse.</p>
<p>During this pulse, the keyboard is scanned and the end of the vertical sync pulse takes us back to the top of the screen again.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh2d3XWIWUGq0xXnXH9DFI5JQ2LkEAsBeDfCOt3vKoKTZ2KSoxPhFYqQlYdoPvi203gFTVaQv3ErA-bcc6_VfVk-3yuQQzXXJwbw5963NxrAPeuW_KC4iLgoDs9sK87t3bxR7x0A48Vu7MinYcX3qBggRCPD4RtMs041zuc7RAjrYYE4V7DUwJefCviRN4f" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEh2d3XWIWUGq0xXnXH9DFI5JQ2LkEAsBeDfCOt3vKoKTZ2KSoxPhFYqQlYdoPvi203gFTVaQv3ErA-bcc6_VfVk-3yuQQzXXJwbw5963NxrAPeuW_KC4iLgoDs9sK87t3bxR7x0A48Vu7MinYcX3qBggRCPD4RtMs041zuc7RAjrYYE4V7DUwJefCviRN4f=w600-h360" width="600" />
</a>
</div>
<p>And so on, 50 or 60 times a second until a key press is detected.</p>
<h2 style="text-align: left;">Back Porch</h2>
<p>Looking at the line end, you will see an extra ledge on the yellow composite video trace, this is the "back porch" signal required to set the black level, you will see the video signal only goes down to the black level, and not as far as the sync pulse. <i>(to be technically correct, black level should be 0V, the sync pulse -0.2V and the white level 0.7V, but most of the time it is fine to generate a 1V P-P signal with the sync at 0V.)</i></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhPVM6nKMpIVyOwZMG75MknAQSQXV_oODMNWtYR52imMfxqppMGooBSg9amQ-OzYQ-GPJR7fZtOzGmz9fwRXs4tAoajp5AyhpdzemCysovT1nr2BImDjIEUMCAzeW5DTUsA3IWw3qOZXlHN0O-9njUO1kP_QTRovh7AAiCcdmsQy-rY0-i-6PnFbj9WSK98" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEhPVM6nKMpIVyOwZMG75MknAQSQXV_oODMNWtYR52imMfxqppMGooBSg9amQ-OzYQ-GPJR7fZtOzGmz9fwRXs4tAoajp5AyhpdzemCysovT1nr2BImDjIEUMCAzeW5DTUsA3IWw3qOZXlHN0O-9njUO1kP_QTRovh7AAiCcdmsQy-rY0-i-6PnFbj9WSK98=w600-h360" width="600" />
</a>
</div>
<p>The front porch on the left is a little slow transition, due to additional capacitance in the circuit below, but it does not seem to cause a problem.</p>
<p>This signal was missing on the original ZX80, and is handled on the Minstrel 2 by an additional logic chip, as discussed in this series of blog posts:</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2022/09/minstrel-2-pixel-synchronisation-part-1.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2022/09/minstrel-2-pixel-synchronisation-part-1.html</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjUWWltH4iDkIOIcunw186tgGCUEwwPgbXC7XDXhL4srSEpu4gzTotXBHh_bdQwqCS7T-FschZixsc2AVGwcjqzA1YvLYxQI9U4qSxScnaTztwTmeuuQ-0h0f3N1QOLPzprsw-LpPbySKXry6qf0AOCqnBbMiqlIxKa-WzWbbZCXTE5kscCiEdYcVpThFqv" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="696" data-original-width="1275" height="350" src="https://blogger.googleusercontent.com/img/a/AVvXsEjUWWltH4iDkIOIcunw186tgGCUEwwPgbXC7XDXhL4srSEpu4gzTotXBHh_bdQwqCS7T-FschZixsc2AVGwcjqzA1YvLYxQI9U4qSxScnaTztwTmeuuQ-0h0f3N1QOLPzprsw-LpPbySKXry6qf0AOCqnBbMiqlIxKa-WzWbbZCXTE5kscCiEdYcVpThFqv=w640-h350" width="600" />
</a>
</div>
<p>Here yellow now shows the modified video signal as it leaves the second flip flop, with the new low pulse which is the duration of the HSync pulse, plus the extra back porch section. It does not matter that it is also low during the HSync pulse, as that will override the output and take it fully low.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg6Qyukk97MXS2X7wL5kBO4yg8KRMyijpdWOnk6VwFRqHBXkJkOPv7hxzgDF7gC_MFHizexeMb5SaXwCRohl4qZ1R8VLhayQqGbym6neh0S2lb608B34RZlqlXHzawgli69Et4npY-ehe3uLJfVAn2nFU3EMkcPkmsmC4RNAmQhkm2jstEhUzRBjqmULwfX" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEg6Qyukk97MXS2X7wL5kBO4yg8KRMyijpdWOnk6VwFRqHBXkJkOPv7hxzgDF7gC_MFHizexeMb5SaXwCRohl4qZ1R8VLhayQqGbym6neh0S2lb608B34RZlqlXHzawgli69Et4npY-ehe3uLJfVAn2nFU3EMkcPkmsmC4RNAmQhkm2jstEhUzRBjqmULwfX=w600-h360" width="600" />
</a>
</div>
<h2 style="text-align: left;">Pixel Synchronisation</h2>
<p>The other thing the new circuitry does is corrects a display glitch that is only visible due to modern monitors, and gives a cleaner output.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjDf2BEWJgz1KfEXBnX_i8mKAjjhBUsAH4SJtf1D7JOpOh05oTfs2Gh0JgC760AlaLGZ5_j4pDFsuCboBbqiMwOdFoNzbvg0NN1TVyYUYv9mvgv2mdh49u4waxmop7W02aqQPKMXOxHrsnAVNc8PW245T5t61-fARYHyt-hZ4lhP836dNDb32YyjQ8a0UOl" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjDf2BEWJgz1KfEXBnX_i8mKAjjhBUsAH4SJtf1D7JOpOh05oTfs2Gh0JgC760AlaLGZ5_j4pDFsuCboBbqiMwOdFoNzbvg0NN1TVyYUYv9mvgv2mdh49u4waxmop7W02aqQPKMXOxHrsnAVNc8PW245T5t61-fARYHyt-hZ4lhP836dNDb32YyjQ8a0UOl=w600-h450" width="600" />
</a>
</div>
<p>A simple 10 PRINT program generates a screen full of chequerboard patterns</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjS2fhyYSer_eoMB2HE4pwg2ESHkYdXjqdC8KWNUcY-cbWul2jE7DqoDptbwz60eozQaNyAGi5KXk94FG0qwGbsiwqLn_la-MelMvyHi_QDRuyC_34rmbhr8-bvRuVx2F4Rg6fot7HXECcioWOtPFLjtN6lPYqMmlGYyJhY9U-pe15rccFVbbTAHDB_HiRH" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEjS2fhyYSer_eoMB2HE4pwg2ESHkYdXjqdC8KWNUcY-cbWul2jE7DqoDptbwz60eozQaNyAGi5KXk94FG0qwGbsiwqLn_la-MelMvyHi_QDRuyC_34rmbhr8-bvRuVx2F4Rg6fot7HXECcioWOtPFLjtN6lPYqMmlGYyJhY9U-pe15rccFVbbTAHDB_HiRH=w600-h450" width="600" />
</a>
</div>
<p>Here you can see the green pulse from the output of the 165, complete with a glitch every 8 pixels, and the yellow cleaned up version which is delayed by one clock cycle, hence appearing inverted.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEjfOqq2AoTE8fY1VsPwJ54DL51uyiIxHl26sNwmXdu6dE39gPSbk9dUdK8tqJJ-ZWf-TX-frL0fzhs6Ma74f0WctD5ZR9F9FBAC2TqyzNw88vgTdcVcmaaqxkK7rUsk3QlLATxyZqYpchymianbEHSUAMJRvFUuRsbztDb4XEBHHxAD3nwpMlUF61qcruk1" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="450" data-original-width="800" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjfOqq2AoTE8fY1VsPwJ54DL51uyiIxHl26sNwmXdu6dE39gPSbk9dUdK8tqJJ-ZWf-TX-frL0fzhs6Ma74f0WctD5ZR9F9FBAC2TqyzNw88vgTdcVcmaaqxkK7rUsk3QlLATxyZqYpchymianbEHSUAMJRvFUuRsbztDb4XEBHHxAD3nwpMlUF61qcruk1=w600-h360" width="600" />
</a>
</div>
<h2 style="text-align: left;">Flicker Free?</h2>
<p>The flicker every time a key is pressed or code is being run is annoying when typing in programs, and limits games to challenge - response type games, things like Space Invaders being difficult to play if the screen flashes whenever you press a key.</p>
<h2 style="text-align: left;">The Software Solution</h2>
<p>On the ZX80, programmers worked out that they could bypass the normal screen drawing code and draw the screen themselves, and execute their game code. The only catch is the code had to take exactly the same number of cycles to run, no matter which code path it went down, making it a challenge to code. But, very rewarding, as you can have so called "Flicker Free" games which were a lot more playable as you could now have Space Invaders and Donkey Kong etc.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhVQqwXEUqm_s5XOnoW6fSj8ZjcuFXqIPBwI_DaSO-Q1-TrcCf5cted4KNg2TDi9Pe2Mz1-UkLjRYWDwsQfCdciENIO7y1_LcusVjZeNHiiUftmGdr-lIyQsWPGdRj-Q3aytyY5_LdNV81yNI3dlxv-zcVvmVXJzYZYhIpUI40pBPpSePcDTyFygSqQ4DjQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhVQqwXEUqm_s5XOnoW6fSj8ZjcuFXqIPBwI_DaSO-Q1-TrcCf5cted4KNg2TDi9Pe2Mz1-UkLjRYWDwsQfCdciENIO7y1_LcusVjZeNHiiUftmGdr-lIyQsWPGdRj-Q3aytyY5_LdNV81yNI3dlxv-zcVvmVXJzYZYhIpUI40pBPpSePcDTyFygSqQ4DjQ=w600-h450" width="600" />
</a>
</div>
<p>See Paul Farrow's excellent site for more information on techniques used and some modern games which benefit from the flicker free game mechanic.</p>
<p><a href="http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_DisplayMechanism.htm" rel="nofollow" target="_blank">http://www.fruitcake.plus.com/Sinclair/ZX80/FlickerFree/ZX80_DisplayMechanism.htm</a></p>
<p>See also George Beckett's research into this to create his flicker free ZX80 port of Hampsons Plane.</p>
<p><a href="https://github.com/markgbeckett/zx80/tree/main/hampsons_plane" rel="nofollow" target="_blank">https://github.com/markgbeckett/zx80/tree/main/hampsons_plane</a></p>
<p>Whilst I am doing links, I should also credit Grant Searle for his work on understanding the ZX80 and ZX81, which has been very useful throughout all of my Z80 related tinkering.</p>
<p><a href="http://searle.x10host.com/zx80/zx80.html" rel="nofollow" target="_blank">http://searle.x10host.com/zx80/zx80.html</a></p>
<h2 style="text-align: left;">The Hardware Solution</h2>
<p>One of the key aims of the ZX80's replacement, the ZX81, was to remove the flicker when keys were pressed etc. They did this by introducing a mode where user code could be run in the blank areas at the top and bottom on the screen.</p>
<p>In the next post, I will look at how the ZX81 does this, and how the Minstrel 3 replicated this functionality.</p>
<p><a href="http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx81-generates-video.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/10/how-the-zx81-generates-video.html</a></p>
<hr />
<h2>Advertisements</h2>
<h2>Minstrel 2</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_L_NWDhFwbv8k6B5vd2WW5H_8URQZ2qLzyf6mrTB8-454RVnKc852zFXKFcNpBbnQB36SXwtVq1cvUqSywKdTtlAbqXEKUKorr72wVIUUFQ4kHck26jlt6kpWOJqmkaLO2kCCDui3MTQdpGdfclt5FAVbhQUOJpKpHJQ8iUaSha4DzkGHKWUvjFc6I88D" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3540" data-original-width="4720" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_L_NWDhFwbv8k6B5vd2WW5H_8URQZ2qLzyf6mrTB8-454RVnKc852zFXKFcNpBbnQB36SXwtVq1cvUqSywKdTtlAbqXEKUKorr72wVIUUFQ4kHck26jlt6kpWOJqmkaLO2kCCDui3MTQdpGdfclt5FAVbhQUOJpKpHJQ8iUaSha4DzkGHKWUvjFc6I88D=w600-h450" width="600" />
</a>
</div>
<p>The Minstrel 2 is a ZX80 compatible kit. It largely follows the original schematic, with the addition of 16K of RAM, and a modern ROM chip and the improved video out with back porch and pixel synchronisation as shown above.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4lSSPhSdBX4A0EyK0GlPT5hWSKYtqt8tnBjCrhXglG75HjzPN-1yVmCQeBpBlgMnpK2ggW7QTsf0E4bsoOSdvfhMQQknBuh3umwj58I_MJnFug_APlEAaEGqRYyfzP23ZMWp_ROl95x8uWNQ4v-4G2O0q7J9TNi4uSH9oNk0Arf1ofBQ5V-ogE678NYK5" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3078" data-original-width="4104" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4lSSPhSdBX4A0EyK0GlPT5hWSKYtqt8tnBjCrhXglG75HjzPN-1yVmCQeBpBlgMnpK2ggW7QTsf0E4bsoOSdvfhMQQknBuh3umwj58I_MJnFug_APlEAaEGqRYyfzP23ZMWp_ROl95x8uWNQ4v-4G2O0q7J9TNi4uSH9oNk0Arf1ofBQ5V-ogE678NYK5=w600-h450" width="600" />
</a>
</div>
<p>The latest version includes pads to fit a pin header next to the edge connector. That was very useful during the creation of this post to attach all the logic analyser probes.</p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEja-AKG_XM1aRkMivPe1XhqvfDuPsoVh0J8VxkMpm74UnhzZnf7FgOQm6b55NF1YYJArTcy0_hD06DJqpagg3JKtZIwXP7isTxCaNvpZih5SMnY3_0XapuwksNUTeieXV-bNzmci2DT7kVlykgUU3ULCJpca2bcUgADfuLUDjpAd888MDXvEEXJLalbMPk4" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="2822" data-original-width="3763" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEja-AKG_XM1aRkMivPe1XhqvfDuPsoVh0J8VxkMpm74UnhzZnf7FgOQm6b55NF1YYJArTcy0_hD06DJqpagg3JKtZIwXP7isTxCaNvpZih5SMnY3_0XapuwksNUTeieXV-bNzmci2DT7kVlykgUU3ULCJpca2bcUgADfuLUDjpAd888MDXvEEXJLalbMPk4=w600-h450" width="600" />
</a>
</div>
<p>Minstrel 2 kits are available from Z80kits.com</p>
<ul style="text-align: left;">
<li><a href="https://z80kits.com/shop/tynemouth-minstrel-2/" rel="nofollow" target="_blank">https://z80kits.com/shop/tynemouth-minstrel-2/</a></li>
</ul>
<p>And also in built, kit and PCB only form from SellMyRetro</p>
<ul style="text-align: left;">
<li>Built and tested with dual keyboard - <a href="https://www.sellmyretro.com/offer/details/63942" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63942</a></li>
<li>Built and tested for ZX81 case - <a href="https://www.sellmyretro.com/offer/details/62386" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/62386</a></li>
<li>Full kit with dual keyboard - <a href="https://www.sellmyretro.com/offer/details/63946" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63946</a></li>
<li>Full kit with no keyboard - <a href="https://www.sellmyretro.com/offer/details/63729" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63729</a></li>
<li>Keyboard kit with 4K keywords - <a href="https://www.sellmyretro.com/offer/details/63944" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63944</a></li>
<li>Keyboard kit with 8K keywords - <a href="https://www.sellmyretro.com/offer/details/63943" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/63943</a></li>
<li>PCB only - <a href="https://www.sellmyretro.com/offer/details/62001" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/62001</a></li>
<li>Keyboard PCB set 4K keywords - <a href="https://www.sellmyretro.com/offer/details/61984" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/61984</a></li>
<li>Keyboard PCB set 8K keyboard - <a href="https://www.sellmyretro.com/offer/details/62033" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/62033</a></li>
<li>Keyboard PCB no overlay - <a href="https://www.sellmyretro.com/offer/details/61986" rel="nofollow" target="_blank">https://www.sellmyretro.com/offer/details/61986</a></li>
</ul>
<p>See also Minstrel 3 (ZX81 compatible) and Mini PET (Commodore PET compatible) kits, more info here</p>
<ul style="text-align: left;">
<li><a href="http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html" rel="nofollow" target="_blank">http://blog.tynemouthsoftware.co.uk/2023/09/minstrel-and-mini-pet-kit-updates.html</a></li>
</ul>
<p>And Minstrel 4D kits (Jupiter Ace compatible)</p>
<ul style="text-align: left;">
<li><a href="https://tfw8b.com/product/minstrel-4d-turbo-jupiter-ace-compatible-computer-kit/" rel="nofollow" target="_blank">https://tfw8b.com/product/minstrel-4d-turbo-jupiter-ace-compatible-computer-kit/</a></li>
</ul>
<br />
<h2>Patreon</h2>
<p>You can support me via Patreon, and get access to advance previews of posts like this and behind the scenes updates. These are often in more detail than I can fit in here, and some of these posts contain bits from several Patreon posts. This also includes access to my Patreon only Discord server for even more regular updates.</p>
<p><a href="https://www.patreon.com/tynemouthsoftware">https://www.patreon.com/tynemouthsoftware</a></p>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ" style="margin-left: 1em; margin-right: 1em;">
<img data-original-height="3672" data-original-width="4896" height="450" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAFq_1LFiHrWNG3rGc5VFiziGo9257qkDM5tV78OeN-W-JLdmo1B7hIvZxuUnEl0moHPvxM9yc0YSiPi4klhXxgYW__YTzogcCm4oOphN0C53v7w9nmtwJZJ6SYdd3ZG-hmmKLRuh5_8G_S5B0eMgcU2mPXdTQX_xHvEg1F6JeGyapLlzh9fXjNJnZiQ=w600-h450" width="600" />
</a>
</div>Dave Curranhttp://www.blogger.com/profile/02180330197057421294noreply@blogger.com