<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>frakendirary</title>
	<atom:link href="https://tlindner.macmess.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>https://tlindner.macmess.org</link>
	<description>tim lindner&#039;s personal blog</description>
	<lastBuildDate>Mon, 29 Sep 2025 04:01:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2</generator>
		<item>
		<title>SAM/VDG Sizzler</title>
		<link>https://tlindner.macmess.org/?p=1046</link>
		<comments>https://tlindner.macmess.org/?p=1046#comments</comments>
		<pubDate>Fri, 16 Aug 2024 16:35:30 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=1046</guid>
		<description><![CDATA[I recently thought it would be nice to have a picture of every video mode a Color Computer could produce. So I wrote a program to make it easy to do that. You can find this program over on github. &#8230; <a href="https://tlindner.macmess.org/?p=1046">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I recently thought it would be nice to have a picture of every video mode a Color Computer could produce. So I wrote a program to make it easy to do that.<br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2024/08/Sizzle-Screen-Shot.png"><img src="http://tlindner.macmess.org/wp-content/uploads/2024/08/Sizzle-Screen-Shot.png" alt="Sizzle Screen Shot" width="866" height="652" class="alignnone size-full wp-image-1047" /></a><br />
You can find this program over on <a href="https://github.com/tlindner/VDGSIZZLE">github</a>.<br />
I have also taken the time to make videos of the four major implementations of the CoCo SAM/VDG:<br />
<code><br />
<a href="https://archive.org/details/siz-cc-1">https://archive.org/details/siz-cc-1</a><br />
<a href="https://archive.org/details/siz-cc-2b_202408">https://archive.org/details/siz-cc-2b_202408</a><br />
<a href="https://archive.org/details/siz-cc-3-86">https://archive.org/details/siz-cc-3-86</a><br />
<a href="https://archive.org/details/siz-cc-3-87">https://archive.org/details/siz-cc-3-87</a><br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=1046</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Disassembler</title>
		<link>https://tlindner.macmess.org/?p=1025</link>
		<comments>https://tlindner.macmess.org/?p=1025#comments</comments>
		<pubDate>Sat, 01 Jun 2024 15:54:12 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=1025</guid>
		<description><![CDATA[I wrote a newish 6809 and 6309 disassembler. https://www.macmess.org/follow9.html. Its just two files, an HTML and JavaScript file. Copy them locally, host them on another site, what ever. There is also a git hub so you can do a pull &#8230; <a href="https://tlindner.macmess.org/?p=1025">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I wrote a newish 6809 and 6309 disassembler. <a href="https://www.macmess.org/follow9.html">https://www.macmess.org/follow9.html</a>.<br />
Its just two files, an HTML and JavaScript file. Copy them locally, host them on another site, what ever.<br />
There is also a git hub so you can do a pull request to help me add features.<br />
<a href="https://github.com/tlindner/follow9">https://github.com/tlindner/follow9</a></p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=1025</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Demon Attack on a CoCo 3</title>
		<link>https://tlindner.macmess.org/?p=1017</link>
		<comments>https://tlindner.macmess.org/?p=1017#comments</comments>
		<pubDate>Mon, 18 Mar 2024 03:53:10 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=1017</guid>
		<description><![CDATA[Demon Attack cartridge (26-3099) has a small bug when running on a CoCo 3. The Programmer&#8217;s credit and version information is drawn using garbage rather than the correct data from the ROM. This has to do with setting bit 3 &#8230; <a href="https://tlindner.macmess.org/?p=1017">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Demon Attack cartridge (26-3099) has a small bug when running on a CoCo 3. The Programmer&#8217;s credit and version information is drawn using garbage rather than the correct data from the ROM.</p>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2024/03/capture1.png"><img src="http://tlindner.macmess.org/wp-content/uploads/2024/03/capture1.png" alt="capture1" width="1920" height="1080" class="alignnone size-full wp-image-1018" /></a></p>
<p>This has to do with setting bit 3 of $FF90 causing RAM to appear at $FExx. This does not happen on a CoCo 1 or 2.</p>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2024/03/Capture.png"><img src="http://tlindner.macmess.org/wp-content/uploads/2024/03/Capture.png" alt="Capture" width="642" height="512" class="alignnone size-full wp-image-1019" /></a></p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=1017</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo 3 PIA 2 Mirror</title>
		<link>https://tlindner.macmess.org/?p=1005</link>
		<comments>https://tlindner.macmess.org/?p=1005#comments</comments>
		<pubDate>Thu, 08 Feb 2024 06:51:25 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=1005</guid>
		<description><![CDATA[The second PIA has a smaller mirror in the CoCo 3 than the CoCo 1/2. It goes from $FF20 to $FF2F. The CoCo 1/2 mirror is from $FF20 to $FF3F. Recently I was challenged to find a citation for this &#8230; <a href="https://tlindner.macmess.org/?p=1005">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The second PIA has a smaller mirror in the CoCo 3 than the CoCo 1/2. It goes from $FF20 to $FF2F. The CoCo 1/2 mirror is from $FF20 to $FF3F.</p>
<p>Recently I was challenged to find a citation for this information. But I could not. <a href="https://colorcomputerarchive.com/repo/Documents/Books/Assembly%20Language%20Programming%20for%20the%20CoCo3%20%281987%29%20%28Laurence%20A%20Tepolt%29.pdf" title="Tepolt">Tepolt</a> has this wrong. So I decided to create a test program and accompanying video to document this first hand.</p>
<p>Here is the <a href="https://www.macmess.org/downloads/PIA2Test.zip">test</a> program.<br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2024/02/Capture.png"><img src="http://tlindner.macmess.org/wp-content/uploads/2024/02/Capture.png" alt="PIA Test Program" width="642" height="512" class="alignnone size-full wp-image-1006" /></a><br />
It is a menu driven program that allows you to choose a specific mirror address for PIA 2, then allows you to choose one of three tests.</p>
<p>Test &#8216;S&#8217; produces a square wave using the CoCo&#8217;s DAC. This DAC is connect to port A of the PIA.<br />
Test &#8216;B&#8217; produces a square wave using the CoCo 1 bit sound source. This is connected to bit 1 of port B of the PIA.<br />
Test &#8216;V&#8217; toggles the A/G line of the VDG. This is connected to bit 7 of port B of the PIA.</p>
<p>When using this program on a CoCo 3 you will find the the second PIA only responds from $FF20 to $FF2F. And the VDG test only responds to $FF20 to $FF23, because the GIME only see writes to these specific addresses.</p>
<p><iframe width="560" height="315" src="https://www.youtube.com/embed/lvSHaDOJJPA?si=IlXvVWg6DP1QEEAv&amp;controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=1005</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GIME Horizontal Retrace Register Update Table</title>
		<link>https://tlindner.macmess.org/?p=977</link>
		<comments>https://tlindner.macmess.org/?p=977#comments</comments>
		<pubDate>Wed, 27 Dec 2023 00:07:57 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=977</guid>
		<description><![CDATA[This is a proposal to the people who make FPGA versions of the CoCo 3&#8242;s GIME chip. I was recently reading about the Amiga&#8217;s Copper chip. I thought something similar could be added to a GIME implementation. The following is &#8230; <a href="https://tlindner.macmess.org/?p=977">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This is a proposal to the people who make FPGA versions of the CoCo 3&#8242;s GIME chip.</p>
<p>I was recently reading about the <a href="https://en.wikipedia.org/wiki/Amiga_Original_Chip_Set#Copper">Amiga&#8217;s Copper chip</a>. I thought something similar could be added to a GIME implementation. The following is my idea, for what it&#8217;s worth.</p>
<table>
<tr>
<th>Addresses used:</th>
</tr>
<tr>
<td>FF99, Bit 7</td>
<td>Horizontal retrace update enable</td>
</tr>
<tr>
<td>FFEA-FFEC</td>
<td>Address (24 bit) table start</td>
</tr>
</table>
<table>
<tr>
<th>Table format:</th>
</tr>
<tr>
<td>0 byte</td>
<td>Scan line</td>
</tr>
<tr>
<td>1 byte</td>
<td>GIME register number</td>
</tr>
<tr>
<td>2 byte</td>
<td>New value</td>
</tr>
<tr>
<td>Repeating.</td>
<td></td>
</tr>
</table>
<h1>Function</h1>
<p>If enabled, during the vertical retrace, the 24 bit table start address is loaded. Then the first byte of the table is deference. If the scan line value (table byte 0) is $FF, then the new value is written to the register number. The table pointer is advanced (by three bytes) and writes are repeated until the scan line is no longer $FF. This allows you to set any video registers before they are latched for the frame.</p>
<p>During every Horizontal retrace the scan line declared in the table is compared to the current scan line. If there is a match, the table value is written to the specified GIME register. Then the next table entry scan line is loaded.</p>
<p>If the scan line does not match, the process is paused until then next horizontal retrace.</p>
<p>If there is time, multiple GIME registers can be changed during horizontal retrace.</p>
<p>Register number zero refers to $FF90 (Initialization register #0). It goes up from there.</p>
<p>Register numbers $FE will trigger an FIRQ or IRQ. Nothing will be written to an internal register. Bit 6 will determine which interrupt is generated ($FF92 or $FF93).</p>
<p>Register number $FD will cause the GIME to reload the video start address from $FF9D and $FF9E. Nothing will be written to an internal register.</p>
<h1>Example Programs</h1>
<p>I implemented the above in a <a href="https://github.com/tlindner/mame/tree/hst">private MAME branch</a>. I wrote some demos and made these screen captures. All this code can be found <a href="https://www.macmess.org/downloads/hst.zip">here</a>.</p>
<h2>COLOR64/BAS:</h2>
<p>In BASIC, switch to HSCREEN 2 and draw a grid of 64 circles. Eight every row, for 8 rows. Use palette index 1 to 8 for every row. Load in an assembly language program to install a horizontal sync table to update the palette color to show all 64 colors on the screen at the same time.<br />
<video width="640" height="480" controls><source src="http://tlindner.macmess.org/wp-content/uploads/2023/12/Color64.mp4" type="video/mp4">Your browser does not support the video tag.</video><br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2023/12/Color64.mp4">Color64</a></p>
<h2>JOY/BAS:</h2>
<p>In BASIC, switch to HSCREEN 2, then load a binary file. This file contains:<br />
1. Image data to be loaded in the Hi-res screen memory.<br />
2. The first 52 lines are 128 bytes wide<br />
3. The rest are 256 bytes wide.<br />
4. Hsync table to switch to 256 byte wide video at line 52.<br />
5. Code to install hsync table and turn it on.<br />
Then the BASIC program will update the horizontal scroll register in the table to match the horizontal joystick position.<br />
<video width="640" height="480" controls><source src="http://tlindner.macmess.org/wp-content/uploads/2023/12/Joy.mp4" type="video/mp4">Your browser does not support the video tag.</video><br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2023/12/Joy.mp4">Joy</a></p>
<h2>DUAL/BAS:</h2>
<p>In BASIC switch to HSCREEN 2, Draw random circles. Load hsync table and enable it. Near the bottom of the screen the GIME is instructed to switch to text mode and change the display address to be the bottom of the 40 column text screen.<br />
Repeat drawing circle to the graphics screen and printing text to the 40 column screen.<br />
<video width="640" height="480" controls><source src="http://tlindner.macmess.org/wp-content/uploads/2023/12/Dual.mp4" type="video/mp4">Your browser does not support the video tag.</video><br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2023/12/Dual.mp4">Dual</a></p>
<h2>INT/BAS:</h2>
<p>In BASIC load binary from disk, wait for disk to stop spinning. Switch to HSCREEN 2 and have BASIC draw random circles. Setup horizontal table to trigger IRQ interrupt on scan line 100.</p>
<p>Interrupt service routine quickly sets all palette registers to zero. Then immediately restore RGB palette values. Repeat on next frame.<br />
<video width="640" height="480" controls><source src="http://tlindner.macmess.org/wp-content/uploads/2023/12/Int.mp4" type="video/mp4">Your browser does not support the video tag.</video><br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2023/12/Int.mp4">Int</a></p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=977</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://tlindner.macmess.org/wp-content/uploads/2023/12/Color64.mp4" length="802203" type="video/mp4" />
<enclosure url="http://tlindner.macmess.org/wp-content/uploads/2023/12/Joy.mp4" length="1789158" type="video/mp4" />
<enclosure url="http://tlindner.macmess.org/wp-content/uploads/2023/12/Dual.mp4" length="765439" type="video/mp4" />
<enclosure url="http://tlindner.macmess.org/wp-content/uploads/2023/12/Int.mp4" length="947936" type="video/mp4" />
		</item>
		<item>
		<title>Laurel &amp; Hardy &#8211; Commodore 64 Game</title>
		<link>https://tlindner.macmess.org/?p=972</link>
		<comments>https://tlindner.macmess.org/?p=972#comments</comments>
		<pubDate>Sat, 28 Oct 2023 17:58:03 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=972</guid>
		<description><![CDATA[I&#8217;m not a C64 guy. But I do play their games for a little show I do with my sister. Recently we played this game. https://www.lemon64.com/game/laurel-and-hardy We usually do a poor job of playing complicated game we don&#8217;t know. But &#8230; <a href="https://tlindner.macmess.org/?p=972">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m not a C64 guy. But I do play their games for a little show I do with my sister. Recently we played this game. https://www.lemon64.com/game/laurel-and-hardy</p>
<p>We usually do a poor job of playing complicated game we don&#8217;t know. But both of us decided to really learn this game and try to play it well. The game has a sprawling world and I quickly decided I needed a map. So I made one. I like to share so here it is.</p>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2023/10/Laurel-and-Hardy-Map.pdf">Laurel and Hardy Map</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=972</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6809 Exchange and Transfer Opcodes</title>
		<link>https://tlindner.macmess.org/?p=945</link>
		<comments>https://tlindner.macmess.org/?p=945#comments</comments>
		<pubDate>Sat, 19 Nov 2022 06:44:30 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=945</guid>
		<description><![CDATA[It was recently brought to my attention that Darren Atkinson has a really good summary of the invalid register exchange and transfer opcodes in the 6809. So good, that I should use the information to make MAME&#8217;s 6809 better match &#8230; <a href="https://tlindner.macmess.org/?p=945">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It was recently brought to my attention that <a href="https://colorcomputerarchive.com/repo/Documents/Books/Motorola%206809%20and%20Hitachi%206309%20Programming%20Reference%20%28Darren%20Atkinson%29.pdf" title="Motorola 6809 and Hitachi 6309 Programming Reference">Darren Atkinson</a> has a really good summary of the invalid register exchange and transfer opcodes in the 6809.</p>
<p>So good, that I should use the information to make MAME&#8217;s 6809 better match real hardware.</p>
<p>That will be a future post. In the mean time, I wrote a little program to exercise all of the invalid combinations and print results to the CoCo&#8217;s screen memory. This way I can, eventually, verify the implementation.</p>
<p>The software package is here: <a href="http://tlindner.macmess.org/wp-content/uploads/2022/11/Test-Exg-TFR.zip">Test-Exg-TFR.zip</a></p>
<p>Here is a screen shot from a real CoCo 2B with a 6809 running my program:<br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2022/11/REAL-coco2b.png"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/11/REAL-coco2b.png" alt="REAL coco2b" width="906" height="512" class="alignnone size-full wp-image-946" /></a></p>
<p>And here is a screen shot form a real CoCo 3 with a 6309 running the same program:<br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2022/11/REAL-CoCo3h.png"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/11/REAL-CoCo3h.png" alt="REAL CoCo3h" width="956" height="720" class="alignnone size-full wp-image-947" /></a></p>
<p>By &#8220;invalid&#8221;, I mean the combinations of registers that Motorola didn&#8217;t document. Combinations like specifying different width registers when exchanging or transferring. Or the use of the register bit patterns not defined by Motorola.</p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=945</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VDG study (July 2022)</title>
		<link>https://tlindner.macmess.org/?p=913</link>
		<comments>https://tlindner.macmess.org/?p=913#comments</comments>
		<pubDate>Wed, 20 Jul 2022 02:54:20 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=913</guid>
		<description><![CDATA[I was recently informed of some inaccuracies with the various VDG text screens emulated in MAME. I also recently acquired an RGB2HDMI. This device is a very configurable retro computer video to HDMI device. One nice feature it has is &#8230; <a href="https://tlindner.macmess.org/?p=913">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I was recently informed of some inaccuracies with the various VDG text screens emulated in MAME. I also recently acquired an <a href="https://github.com/hoglet67/RGBtoHDMI/wiki">RGB2HDMI</a>. This device is a very configurable retro computer video to HDMI device. One nice feature it has is to write the frame buffer to a PNG file.<br />
Using this device I can capture pixel perfect pictures of my CoCos and compare them to what MAME currently produces.</p>
<h1>First, here is the comparison between a real and MAME emulated CoCo 2.</h1>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2022/07/2-and-MAME-2-Normal.gif"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/07/2-and-MAME-2-Normal.gif" alt="2 and MAME 2 Normal" width="3072" height="1728" class="alignnone size-full wp-image-914" /></a><br />
The stem of the number &#8217;3&#8242; is too short in MAME.<br />
The &#8220;E&#8221; stem is too short.<br />
The &#8220;F&#8221; stem is too short.</p>
<h1>Next is the CoCo 2B in normal mode.</h1>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2022/07/2B-and-MAME-2B-Normal.gif"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/07/2B-and-MAME-2B-Normal.gif" alt="2B and MAME 2B Normal" width="3624" height="2048" class="alignnone size-full wp-image-917" /></a><br />
Over all the characters need to be pushed one pixel to the right and one pixel up to properly fit in their boxes.<br />
The &#8216;@&#8217; has an extra pixel.<br />
The &#8216;G&#8217; is the wrong shape.<br />
The &#8216;J&#8217; has an extra pixel.<br />
The pound sign has extra pixels.<br />
The dollar sign has extra pixels.<br />
The apostrophe is missing some pixels.<br />
The comma is missing some pixels.<br />
The period is missing some pixels.<br />
The three is missing a pixel on it&#8217;s stem.<br />
The &#8217;6&#8242; is the wrong shape.<br />
The &#8217;9&#8242; is the wrong shape.<br />
The colon is missing some pixels.<br />
The semi-colon is missing some pixels.</p>
<h1>Next is the CoCo 2B in lowercase mode.</h1>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2022/07/2B-and-MAME-2B-Lowercase.gif"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/07/2B-and-MAME-2B-Lowercase.gif" alt="2B and MAME 2B Lowercase" width="3624" height="2048" class="alignnone size-full wp-image-919" /></a><br />
Over all the characters need to be moved one pixel up and to the right. Except the lowercase J. It only needs to be moved one pixel to the right.<br />
The lowercase letter g is the wrong shape.<br />
The lowercase letter m has an extra pixel.<br />
The lowercase letter p is the wrong shape.<br />
The lowercase letter q is the wrong shape.<br />
The lowercase letter t is the wrong shape.<br />
The lowercase letter w is the wrong shape.<br />
The lowercase letter y is the wrong shape.<br />
The pound sign has extra pixels.<br />
The dollar sign has extra pixels.<br />
The apostrophe is missing some pixels.<br />
The comma is missing some pixels.<br />
The period is missing some pixels.<br />
The &#8217;3&#8242; is missing a pixel on it&#8217;s stem.<br />
The &#8217;6&#8242; is the wrong shape.<br />
The &#8217;9&#8242; is the wrong shape.<br />
The &#8216;@&#8217; has an extra pixel.<br />
The colon is missing some pixels.<br />
The semi-colon is missing some pixels.<br />
The &#8216;G&#8217; is the wrong shape.<br />
The &#8216;J&#8217; has an extra pixel.</p>
<h1>Next is the CoCo 3 in normal mode.</h1>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2022/07/3-and-MAME-3-Normal.gif"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/07/3-and-MAME-3-Normal.gif" alt="3 and MAME 3 Normal" width="1434" height="720" class="alignnone size-full wp-image-921" /></a><br />
Over all, the characters need to be moved a pixel up.<br />
The comma also needs to be moved one pixel to the right.<br />
The number 9 has an extra pixel.</p>
<h1>Last is the CoCo 3 in lowercase mode.</h1>
<p><a href="http://tlindner.macmess.org/wp-content/uploads/2022/07/3-and-MAME-3-Lowercase.gif"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/07/3-and-MAME-3-Lowercase.gif" alt="3 and MAME 3 Lowercase" width="3624" height="2048" class="alignnone size-full wp-image-922" /></a><br />
Over all the characters need to be moved one pixel up.<br />
The lowercase letter g is the wrong shape.<br />
The lowercase letter i is the wrong shape.<br />
The lowercase letter j is the wrong shape.<br />
The lowercase letter m has an extra pixel.<br />
The lowercase letter p is the wrong shape.<br />
The lowercase letter q is the wrong shape.<br />
The comma need to be moved to the right one pixel.<br />
The numeral 9 has an extra pixel.</p>
<p>Special thanks to <a href="https://www.youtube.com/user/pedrolpena">Pedro Pena</a> for a screen capture.</p>
<p>MAME 0.246 is the first version to contain the fixes for the above.</p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=913</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Write Protect Problem</title>
		<link>https://tlindner.macmess.org/?p=897</link>
		<comments>https://tlindner.macmess.org/?p=897#comments</comments>
		<pubDate>Fri, 01 Jul 2022 17:15:08 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=897</guid>
		<description><![CDATA[An interesting bug appeared on MAME Testers recently. The bug linked here is really simple. OS-9 wont boot on a copy protected disk image. The solution also was simple: properly emulate the delay between issuing a write command, and the &#8230; <a href="https://tlindner.macmess.org/?p=897">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>An interesting bug appeared on MAME Testers recently. The <a href="https://mametesters.org/view.php?id=8258">bug linked here</a> is really simple. OS-9 wont boot on a copy protected disk image. The solution also was simple: properly emulate the delay between issuing a write command, and the INTRQ that happens when the write protect notch is covered.<br />
But how long of a delay should it be? The floppy disk controller chip data sheet does not specify what is normal. I wish I had an oscilloscope to measure things like this, but I don&#8217;t. So I had to get tricky.<br />
I wrote a Color Computer program that writes to a write protected disk on purpose. Normally after you issue the command to write to a sector, you prepare to start writing and then wait until the disk is ready. But if you know the disk write will error becuase of a write protect notch, all you really have to do is count. That is what I did, initiate write and then count forever:</p>
<p><code><br />
&nbsp;&nbsp;&nbsp;&nbsp;pragma 6809<br />
&nbsp;&nbsp;&nbsp;&nbsp;opt cd</p>
<p>start<br />
&nbsp;&nbsp;&nbsp;&nbsp;org $6000<br />
count fcb 55<br />
error fcb $55</p>
<p>begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;orcc #$50 turn off interrupts, keep motor spinning<br />
&nbsp;&nbsp;&nbsp;&nbsp;clrb clear counter<br />
&nbsp;&nbsp;&nbsp;&nbsp;ldx #vector_return<br />
&nbsp;&nbsp;&nbsp;&nbsp;stx $0983 load my NMI vector routine<br />
&nbsp;&nbsp;&nbsp;&nbsp;lda #$ff<br />
&nbsp;&nbsp;&nbsp;&nbsp;sta $0982 Enable NMI flag to vector<br />
&nbsp;&nbsp;&nbsp;&nbsp;lda $ff48 reset status of 1793<br />
&nbsp;&nbsp;&nbsp;&nbsp;lda #$A0<br />
&nbsp;&nbsp;&nbsp;&nbsp;sta $FF48 do write sector command</p>
<p>; disk should be write protected.</p>
<p>loop<br />
&nbsp;&nbsp;&nbsp;&nbsp;incb<br />
&nbsp;&nbsp;&nbsp;&nbsp;bra loop</p>
<p>vector_return<br />
&nbsp;&nbsp;&nbsp;&nbsp;stb count<br />
&nbsp;&nbsp;&nbsp;&nbsp;lda $ff48<br />
&nbsp;&nbsp;&nbsp;&nbsp;sta error<br />
&nbsp;&nbsp;&nbsp;&nbsp;andcc #$AF enable interrupts<br />
&nbsp;&nbsp;&nbsp;&nbsp;rts<br />
&nbsp;&nbsp;&nbsp;&nbsp;end begin<br />
</code></p>
<p>The loop will not actually count forever. When the write fails, the Floppy Disk Controller will produce an Interrupt Request signal. On the Color Computer this is tied to the Non-Maskable Interrupt line. This will stop the loop and run my NMI handler. The records the counter and status to make available to a BASIC program for further processing.</p>
<p>I now have two results from different Floppy Disk Controllers: 20 and 19. With a 5 cycle loop counter, this comes to a delay of about 111 microseconds. I show my work <a href="https://docs.google.com/spreadsheets/d/1yBH18TyhmZBf5OChWvDDq10XLS0sWLBYxzH_vOoiNuo/edit?usp=sharing">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=897</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CoCo Max III Hi Res interface</title>
		<link>https://tlindner.macmess.org/?p=885</link>
		<comments>https://tlindner.macmess.org/?p=885#comments</comments>
		<pubDate>Sun, 08 May 2022 22:57:40 +0000</pubDate>
		<dc:creator>tlindner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://tlindner.macmess.org/?p=885</guid>
		<description><![CDATA[Thanks to a few friends I&#8217;ve been able to upgrade my hi-res tester to support the CoCo Max III interface. It is a device similar to the Tandy Hi-res interface, but is triggered differently. Here is what MAME is doing &#8230; <a href="https://tlindner.macmess.org/?p=885">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Thanks to a few friends I&#8217;ve been able to upgrade my <a href="https://github.com/tlindner/HiRes-Interface-Test">hi-res tester</a> to support the CoCo Max III interface. It is a device similar to the Tandy Hi-res interface, but is triggered differently.<br />
<a href="http://tlindner.macmess.org/wp-content/uploads/2022/05/A985155D-394F-459C-B696-E844B0AECB8E.jpg"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/05/A985155D-394F-459C-B696-E844B0AECB8E.jpg" alt="A985155D-394F-459C-B696-E844B0AECB8E" width="1134" height="851" class="alignnone size-full wp-image-888" /></a><a href="http://tlindner.macmess.org/wp-content/uploads/2022/05/BD9AA54A-5172-40DA-A777-5AE01D34BB44-1.jpg"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/05/BD9AA54A-5172-40DA-A777-5AE01D34BB44-1.jpg" alt="Screenshot" width="2000" height="1500" class="alignnone size-full wp-image-889" /></a><a href="http://tlindner.macmess.org/wp-content/uploads/2022/05/capture24-1.png"><img src="http://tlindner.macmess.org/wp-content/uploads/2022/05/capture24-1.png" alt="capture24-1" width="956" height="720" class="alignnone size-full wp-image-890" /></a><br />
Here is what MAME is doing as of today for the CoCo Max III interface:</p>
<table>
<tr>
<td>Speed</td>
<td>Start Value</td>
<td>End Value</td>
<td>Length</td>
</tr>
<tr>
<td>Slow</td>
<td>67</td>
<td>483</td>
<td>416</td>
</tr>
<tr>
<td>Fast</td>
<td>67</td>
<td>483</td>
<td>416</td>
</tr>
</table>
<p>After going over the data here is what I am going to change MAME to do:</p>
<table>
<tr>
<td>Speed</td>
<td>Start Value</td>
<td>End Value</td>
<td>Length</td>
</tr>
<tr>
<td>Slow</td>
<td>29</td>
<td>243</td>
<td>214</td>
</tr>
<tr>
<td>Fast</td>
<td>57</td>
<td>486</td>
<td>429</td>
</tr>
</table>
<p>You can see the new values are nearly the same as the previous values, but I think it is an improvement to use values verified on actual hardware.</p>
]]></content:encoded>
			<wfw:commentRss>https://tlindner.macmess.org/?feed=rss2&#038;p=885</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
