<?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>What&#039;s All This Brouhaha?</title>
	<atom:link href="http://whats.all.this.brouhaha.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://whats.all.this.brouhaha.com</link>
	<description>miscellaneous musings and random rantings</description>
	<lastBuildDate>Sat, 31 Mar 2012 09:32:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>TRS-80 Model II TRSDOS: paranoia strikes deep</title>
		<link>http://whats.all.this.brouhaha.com/2012/03/31/trs-80-model-ii-trsdos-paranoia-strikes-deep/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/03/31/trs-80-model-ii-trsdos-paranoia-strikes-deep/#comments</comments>
		<pubDate>Sat, 31 Mar 2012 09:32:59 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Retrocomputing]]></category>
		<category><![CDATA[Reverse-engineering]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=973</guid>
		<description><![CDATA[It looks like the developers of TRS-80 Model II TRSDOS were very paranoid that someone might be able to bypass the filesystem and access data on a floppy directly.  I&#8217;m not sure if their primary concern was file password protection, &#8230; <a href="http://whats.all.this.brouhaha.com/2012/03/31/trs-80-model-ii-trsdos-paranoia-strikes-deep/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It looks like the developers of TRS-80 Model II TRSDOS were very  paranoid that someone might be able to bypass the filesystem and access  data on a floppy directly.  I&#8217;m not sure if their primary concern was  file password protection, or if they had other reasons.  Obviously you  could write a program that accesses the floppy directly, by talking to  the FDC and DMAC chips yourself, and there&#8217;s not really anything that  can be done to prevent that.</p>
<p>Oddly enough, this was exactly the <strong>opposite</strong> of what Apple did in Apple  DOS.  Apple published the APIs to read and write sectors (RWTS), but  never published the &#8220;File Manager&#8221; APIs that allowed access to the file  system through means other than passing commands through the character  output vector (e.g., the BASIC statement PRINT CHR$(4);&#8221;OPEN FOO&#8221;).</p>
<p>I&#8217;ll mostly describe how things work in Model II TRSDOS 1.2, the  earliest version I&#8217;ve been able to obtain.  I haven&#8217;t studied 2.0 nearly  as much yet.  The TRSDOS 1.2 &#8220;kernel&#8221; consists of three parts, while  later versions are more monolithic.</p>
<p>The Model II boot ROM loads all of drive 0 track 0 (single density, 26  sectors of 128 bytes) into memory starting at 0e00.  First it looks for  the four characters &#8220;DIAG&#8221; at 1400 and &#8220;BOOT&#8221; at 1000.  If either are  missing, it refuses to proceed.  It calls the code at 1404, which in  TRSDOS is a simple hardware diagnostic.  When that returns, it jumps to  the first stage boot loader code at 1004.  Some other operating systems  don&#8217;t bother with a diagnostic, and just start their boot code at 1404,  never returning to the ROM.</p>
<p>The first stage boot loader actually understands the TRSDOS filesystem  enough to find the directory entries of files in TRSDOS load module  format, and load them into memory.  In 1.2, it loads &#8220;IODVRS/SYS&#8221; and  then &#8220;TRSDOS/SYS&#8221;, and jumps into the latter.  The Model II TRSDOS  filesystem is similar in many regards to that of Model I TRSDOS, but not  enough to actually be compatible. Unsurprisingly, it looks like an  intermediate step in the evolution from Model I TRSDOS to Model III  TRSDOS.  As in Model III TRSDOS, files can only have a single directory  entry, with a limited number of extents.</p>
<p>IODVRS/SYS contains, as the name implies, the low level I/O drivers for  the system, including the keyboard, display, printer, and floppy drives,  the dispatching for system (SVC) calls, and a few utility SVCs.   However, it only contains the SVC handlers for services 0-28, the I/O  functions and basic utility SVCs.  Note in particular that it contains  no file system code.  IODVRS/SYS is conceptually similar to the CP/M  BIOS, though lacking CP/Ms charming simplicity.  IODVRS/SYS provides  several undocumented SVCs for internal use by TRSDOS, including floppy  subsystem initialization (13), floppy sector read (14), and floppy  sector write (16). Note that at the time IODVRS/SYS is loaded, no call  is made into it to initialize it.</p>
<p>TRSDOS/SYS, however, is called after being loaded.  It basically  performs the TRSDOS initialization that only has to happen at boot  time.  It has another implementation of filesystem reading and load  module format handling, very similar to what is present in the stage 1  boot, but now instead of talking to the FDC and DMAC directly, it uses  the undocumented floppy SVCs described previously.  After various  initialization, it loads SYSRES/SYS and jumps into it.</p>
<p>SYSRES/SYS contains the filesystem code and other relatively high-level  TRSDOS infrastructure code.  It generally relies on SVC calls into  IODVRS/SYS to perform all I/O, and has very little other dependence on  IODVRS/SYS internals.  This is conceptually similar to the CP/M BDOS.   It loads system overlays to handle some SVCs and user commands.   Overlays SYS0/SYS through SYS9/SYS are small overlays, occupying one  disk granule (five sectors) and loading into 2200-26ff.  Other overlays  may be larger, and load at 2800 or higher.  Many of the overlays <strong>do</strong> depend on knowledge of the internals of SYSRES/SYS, directly accessing  subroutines and data structures without the use of vector tables or the  like.  This means that SYSRES/SYS and the overlays must have been built  at the same time, and would generally not be interchangeable with  earlier or later releases.</p>
<p>Anyhow, getting back to the paranoia part.  Someone apparently decided  that simply not documenting the SVCs that provide sector-level access to  the floppy was not sufficient to thwart those that might want to bypass  the filesystem.  After TRSDOS/SYS uses those SVCs for its part in the  boot process, it actually <strong>removes</strong> them from the SVC vector table, and  sets up jumps to them at undocumented internal TRSDOS locations 1130  (read sector) and 1133 (write sector).</p>
<p>In TRSDOS 1.2, access to all of the system files, including overlays, is  done through the file system.  The system files have normal file system  entries. Unlike Model I TRSDOS, neither the system file directory  entries nor the file contents need to be in any special location on the  disk.</p>
<p>In TRSDOS 2.0, things are much more monolithic.  The stage 1 boot code  only loads and jumps into a single file, SYSRES/SYS.  The boot code does  not care where this file is located, but other parts of the system do.   All of the overlays, small and large, are stored in a single file,  SYSTEM/SYS, which is required to start on the track after the primary  directory.  The first sector of SYSTEM/SYS contains a kind of overlay  directory that gives the track and sector numbers at which each overlay  starts.</p>
<p>There is perhaps some advantage to putting all of the overlays in a  single file, since the number of directory entries on the diskette is  limited to 96.  However, the need for a second, special directory  mechanism for overlays is ugly, even if it is only a simple one.   Requiring the system files to be at fixed locations on the disk (at  least relative to the primary directory) might be a reasonable  requirement if it yielded some performance gain, but it generally  doesn&#8217;t.  (With 1.2, the system files are set up when the disk is  formatted, so even though they <strong>could</strong> be anywhere, in practice they are  grouped together.)</p>
<p>TRSDOS 2.0 introduced changes to the disk organization, such that TRSDOS  1.2 and 2.0 diskettes are not interchangeable, except that the 2.0  XFERSYS utility can convert a 1.2 diskette to 2.0 format.  The disk  organization changes are basically gratuitous, and don&#8217;t provide any  benefit to the user, while obviously being a great inconvenience to  users with TRSDOS 1.2.  They mashed the GAT (granule allocation table)  and HIT (hash index table), which were sectors 1 and 2 of the directory  track in 1.2, into just sector 1 in 2.0.  In 1.2, the directory occupied  sectors 3-26, while in 2.0 it occupies sectors 2-25.  The only apparent  rationale for doing this is to free up sector 26 on the directory  track.  In TRSDOS 1.2, sector 26 was not used on any track but the  directory track, for any purpose.  In TRSDOS 2.0, sector 26 of <strong>every</strong> track is used to store five bytes of unique disk ID, to better detect  disk changes.  (it has been suggested that those bytes might also have  been used for software copy protection.)  However, rather than mashing  the GAT and HIT together, which made it impossible to support larger  disks such as double-sided disks, they easily could have special cased  the directory track(s) and stored the disk ID in either the GAT or HIT  sector.</p>
<p>TRSDOS 4.0 introduced much larger changes to the disk organization, in  order to support double-sided disks and hard disks.  I haven&#8217;t yet begun  to dig into the 4.0 code.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/03/31/trs-80-model-ii-trsdos-paranoia-strikes-deep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ksim 8080 simulator released</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/31/ksim-8080-simulator-released/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/31/ksim-8080-simulator-released/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 16:49:43 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=970</guid>
		<description><![CDATA[As part of my RC2012WW project, I ran an 8080 exerciser and other instruction test programs on a Sol20 to better understand the behavior of the 8080&#8242;s flags (which are NOT exactly the same as those of the Z-80), and &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/31/ksim-8080-simulator-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As part of my <a title="Retrochallenge 2012 WW" href="http://www.wickensonline.co.uk/retrochallenge-website/tiki-index.php" target="_blank">RC2012WW</a> project, I ran an 8080 exerciser and other instruction test programs on a Sol20 to better understand the behavior of the 8080&#8242;s flags (which are NOT exactly the same as those of the Z-80), and update ksim to accurately simulate the flags.  There are a lot of Z-80 simulators out there, but fewer 8080 simulators, and fewer yet that get the flags right.</p>
<p><a title="ksim 0.2" href="http://www.brouhaha.com/~eric/software/ksim/ksim-0.2.tar.gz" target="_blank">ksim 0.2</a> is now released under the <a title="GPL v3.0" href="http://www.gnu.org/licenses/gpl-3.0.html" target="_blank">GPLv3 license</a>.  While ksim may be minimally useful in its current form, it is primarily intended as a reference implementation. There is currently no documentation, and the code is not well-commented. Maximum performance was not a goal, so very little optimization has been done. Interrupts are not implemented, though they would be easy to add. There is crude console I/O, and extremely crude disk I/O. It works just barely well enough that I&#8217;ve successfully run CP/M.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/31/ksim-8080-simulator-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simulation success!</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/19/simulation-success/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/19/simulation-success/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 09:32:38 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=967</guid>
		<description><![CDATA[By writing some additional 8080 test programs, running them on both the Sol-20 and my simulator, and comparing the output, I&#8217;ve found and fixed several bugs in my simulator.  Now the 8080 Exerciser running on the simulator matches all the &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/19/simulation-success/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>By writing some additional 8080 test programs, running them on both the Sol-20 and my simulator, and comparing the output, I&#8217;ve found and fixed several bugs in my simulator.  Now the 8080 Exerciser running on the simulator matches all the CRCs.</p>
<p>There was a bug in &#8220;POP PSW&#8221; setting the parity flag wrong, which screwed up all of the CRCs.</p>
<p>I had the polarity of the AF flag wrong for the subtract, compare, and decrement instructions.</p>
<p>In the DAA instruction, to determine whether to correct the high nibble,  at one point in the logic I was using AF when I should have been using  CY.</p>
<p>While it remains possible that the simulator could contain some errors not caught by the exerciser, at this point I&#8217;m fairly confident that it is working correctly. W00t!</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/19/simulation-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sol-20 running reliably, now running debug version of 8080 exerciser</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/18/sol-20-running-reliably-now-running-debug-version-of-8080-exerciser/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/18/sol-20-running-reliably-now-running-debug-version-of-8080-exerciser/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 08:44:08 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=964</guid>
		<description><![CDATA[With a good power supply filter capacitor, the Sol-20 is now running sufficiently reliably that it passed the 8080 Exerciser., generating the expected CRC values. In order to find the bug(s) in the 8080 simulator I wrote last month, I&#8217;ve &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/18/sol-20-running-reliably-now-running-debug-version-of-8080-exerciser/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>With a good power supply filter capacitor, the Sol-20 is now running sufficiently reliably that it passed the 8080 Exerciser., generating the expected CRC values. In order to find the bug(s) in the 8080 simulator I wrote last month, I&#8217;ve just started the Sol running a modified version of the exerciser that outputs every result byte it hashes into the CRC. The simulator ran this in 10 minutes on a 3.2 GHz Athlon II X3 450, prodcucing 16,191,998 lines of output. I estimate that it will take 24.5 hours for the Sol-20 to run it.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/18/sol-20-running-reliably-now-running-debug-version-of-8080-exerciser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sol-20 power supply capacitor failure</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/17/sol-20-power-supply-capacitor-failure/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/17/sol-20-power-supply-capacitor-failure/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 02:09:50 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=962</guid>
		<description><![CDATA[The reason the Sol I&#8217;ve been using is unreliable (mostly in the first 30 seconds after powerup, but sometimes later also) is that C8, a 18000 uF 10V electrolytic filter capacitor for the 5V power supply, has gone high-leakage. It&#8217;s &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/17/sol-20-power-supply-capacitor-failure/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The reason the Sol I&#8217;ve been using is unreliable (mostly in the first 30 seconds after powerup, but sometimes later also) is that C8, a 18000 uF 10V electrolytic filter capacitor for the 5V power supply, has gone high-leakage.</p>
<p>It&#8217;s easy to find an electrical replacement, but difficult to find one that is the same physical size as the original.  There has been so much advancement in capacitor technology since 1976 that the modern ones are less than a third the volume.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/17/sol-20-power-supply-capacitor-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modified 8080 exerciser to run on &#8220;bare metal&#8221; Sol-20</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/16/modified-8080-exerciser-to-run-on-bare-metal-sol-20/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/16/modified-8080-exerciser-to-run-on-bare-metal-sol-20/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 02:49:40 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=960</guid>
		<description><![CDATA[Frank Cringle released a GPL&#8217;d Z80 CPU exerciser in 1994, and Ian Bartholomew released modified versions for the 8080 and 8085 in 2009.  Since I don&#8217;t have CP/M running on my Sol-20 yet, I&#8217;ve modified the sources to assemble with &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/16/modified-8080-exerciser-to-run-on-bare-metal-sol-20/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Frank Cringle released a GPL&#8217;d Z80 CPU exerciser in 1994, and Ian Bartholomew released <a title="8080/8085 CPU Exerciser" href="http://www.idb.me.uk/sunhillow/8080exerciser/index.html" target="_blank">modified versions for the 8080 and 8085</a> in 2009.  Since I don&#8217;t have CP/M running on my Sol-20 yet, I&#8217;ve modified the sources to assemble with the <a title="The Macroassembler AS" href="http://john.ccac.rwth-aachen.de:8000/as/" target="_blank">AS macro cross assembler</a> (asl), and run on a &#8220;bare metal&#8221; Sol-20 (no CP/M), with output to the serial port.  I haven&#8217;t actually run the modified version on the Sol yet, but have run it on the 8080 simulator I wrote last month.</p>
<p>The purpose of getting it running on the Sol-20 isn&#8217;t that I think there&#8217;s anything wrong with my Sol-20, but rather that the 8080 simulator doesn&#8217;t generate the same hashes, so I probably don&#8217;t have the condition code computations correct. Once I&#8217;ve verified that it works and produces the correct hashes on the Sol-20, I&#8217;ll further modify it to output the bytes being hashed into the CRC, and compare those with the simulator.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/16/modified-8080-exerciser-to-run-on-bare-metal-sol-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sol-20 Personality Modules</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/15/sol-20-personality-modules/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/15/sol-20-personality-modules/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 03:21:12 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=958</guid>
		<description><![CDATA[I got a monochrome monitor out of storage, and unsurprisingly, it shows the Sol-20 video much more clearly than the color TV did. I hooked up the serial port of the Sol-20 to a null modem adapter and USB-to-serial adapter &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/15/sol-20-personality-modules/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I got a monochrome monitor out of storage, and unsurprisingly, it shows the Sol-20 video much more clearly than the color TV did.</p>
<p>I hooked up the serial port of the Sol-20 to a null modem adapter and USB-to-serial adapter plugged into my laptop. The first thing I discovered is that the Sol wouldn&#8217;t accept the Solos &#8220;SET I=1&#8243; or &#8220;SET O=1&#8243; commands to set the input or output to use the serial port. It didn&#8217;t seem to accept any SET commands at all. Probably the personality module has a modified version of Solos with a disk bootstrap.</p>
<p>I have five simple personality modules: two PM-5204, two PM-2708, and one from Golemics with two 2708 EPROMs.  I also have a dual personality module from Micro Complex, which has a switch to select between two sockets, which, provided that the Sol has a modification installed, result in one selection being mapped at C000, and the other at F000. The modification moves the Sol&#8217;s video RAM and scratch RAM in that block also, so in the F000 position, it provides for 60K of contiguous usable RAM. The F000 ROM may also be modified to support the Micro Complex 80&#215;24 display daughterboard. Jim Battle&#8217;s excellent <a title="Sol20.org" href="http://www.sol20.org/" target="_blank">Sol20.org</a> has a <a title="Dual Personality Module for Sol Computers manual, by Micro Complex" href="http://www.sol20.org/manuals/dpmon.pdf" target="_blank">PDF of the manual</a> for the dual personality module, as well as the <a title="source code for Micro Complex Dual Personality Module" href="http://www.sol20.org/programs/dpmon.asm" target="_blank">source code</a> and <a title="hexadecimal image of Micro Complex Dual Personality Module ROM" href="http://www.sol20.org/programs/dpmon.rom" target="_blank">hexadecimal image</a> of the Micro Complex ROM.</p>
<p>I&#8217;ve taken <a title="Sol-20 personality modules" href="http://www.flickr.com/photos/22368471@N04/sets/72157628889511017/" target="_blank">photos</a> of the six personality modules.</p>
<p>The Micro Complex personality module appears to be the only one I have with a standard Solos image; it has the Processor Technology masked ROM in the C000 position. I&#8217;m currently using the Sol that does not have the 80&#215;24 display daughterboard, nor the modification to relocate the C block to F, but using it with the C setting works and gives me the standard Solos, so I can use the SET I and O commands. Now I can download code into the Sol over the serial port from the laptop.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/15/sol-20-personality-modules/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sol-20 keyboard fixed</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/14/sol-20-keyboard-fixed/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/14/sol-20-keyboard-fixed/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 01:46:09 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=956</guid>
		<description><![CDATA[I&#8217;ve now got one of the four keyboards fixed. Actually I probably have mixed parts of one keyboard with another. I&#8217;ll have to make or buy more foam pads for the other three. Two of the keyboards had foam pads &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/14/sol-20-keyboard-fixed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve now got one of the four keyboards fixed. Actually I probably have mixed parts of one keyboard with another. I&#8217;ll have to make or buy more foam pads for the other three.</p>
<p>Two of the keyboards had foam pads with mylar disks on both sides, as I expected, and those foam pads remove easily. Unfortunately two of them had mylar disks on only the bottom side. As a result, when the foam deteriorates, it winds up stuck to the plunger, so those two keyboards will require a lot more effort to clean up.</p>
<p>I was somewhat surprised that even the keyboards with mylar on both sides of the foam still had some sticky keys after the pads were removed. I suspect this is due to dirt getting between the plunger and shaft. I probably need to take all four completely apart and clean all of the mechanical pieces thoroughly. I&#8217;ll have to test whether 97% isopropyl alcohol will damage the keycaps, stems, or frames.</p>
<p>One Sol-20 has now been reassembled with the repaired keyboard, and seems to be working fine, aside from the previously noted instability during the first few seconds after powerup. I need to look at the power supply output on a scope to see if it has a problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/14/sol-20-keyboard-fixed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Sol-20 computers working</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/14/getting-sol-20-computers-working/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/14/getting-sol-20-computers-working/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 09:52:45 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=954</guid>
		<description><![CDATA[I&#8217;ve continued work on my KC/CUTS tape decoder program. The decoder works well with clean audio files, but not so well with noisy ones. I&#8217;m not completely convinced that using the Goertzel algorithm has been a good idea; possibly just &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/14/getting-sol-20-computers-working/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve continued work on my KC/CUTS tape decoder program. The decoder works well with clean audio files, but not so well with noisy ones. I&#8217;m not completely convinced that using the <a title="Goertzel algorithm" href="http://en.wikipedia.org/wiki/Goertzel_algorithm" target="_blank">Goertzel algorithm</a> has been a good idea; possibly just using FIR filters would have been more suitable. Also, rather than using fixed filter frequencies, it might be a good idea to do some carrier tracking to account for tape speed variation, possibly using a DPLL.</p>
<p>I&#8217;ve taken various <a title="Sol-20 photos" href="http://www.flickr.com/photos/22368471@N04/sets/72157628862392743/" target="_blank">photos</a> of four Sol-20s in various stages of disassembly. One of them has some nice labels from Micromation on the top backplane connector giving designations of all of the S-100 signals. Another has two daughtercards from Micro Complex, one adding a 80&#215;24 video mode, and one replacing the standard 8080 microprocessor with a Z80. That machine also has the Micro Complex dual personality module, and probably has the modification to allow relocating the ROM, video RAM, and scratch RAM from Cxxx to Fxxx.</p>
<p>One of the Sol-20s came with a Compupro RAM 17 64KB static CMOS RAM card.  I put it in the Sol-20 with the S-100 labels.  The video seems to be unstable for the first ten seconds of operation, but settles down.  It seems to basically work OK.  The only NTSC monitor I had at hand was a Sony KV-1380 Trinitron color TV. It works, but the monochrome bandwidth isn&#8217;t really satisfactory for 64-column text. I&#8217;ll have to dig a monochrome monitor out of storage.</p>
<p>Naturally the foam disks in all four capacitive keyboards have gone bad. Each keyboard has a few keys that work OK, a few that work sometimes, and many that don&#8217;t work at all. Only one had enough keys working to check that the Solos firmware works.</p>
<p>The newer two keyboards use Phillips screws, which are easily  removed. The older two use a strange screw head I&#8217;ve never seen before,  which is like a slotted, but with a round hole in the middle. The slot  is too narrow for any of my normal screwdrivers. Jeweler&#8217;s screwdrivers  will fit the slot, but are not wide enough to stay in the slot, rather  than slipping into the hole in the middle.  I managed to remove 6 of 18  screws from one keyboard before giving up.</p>
<p>Tomorrow I&#8217;ll put the new foam disks into one of the keyboards.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/14/getting-sol-20-computers-working/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code to encode and decode Kansas City standard</title>
		<link>http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/</link>
		<comments>http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 05:52:57 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[RetroChallenge]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=950</guid>
		<description><![CDATA[As part of my Retrochallenge 2012WW project, I&#8217;m writing a pair of C programs to encode and decode Kansas City standard and Processor Technology CUTS audio cassette formats, as these are the formats supported on the Processor Technology Sol-20.  These &#8230; <a href="http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As part of my Retrochallenge 2012WW project, I&#8217;m writing a pair of C programs to encode and decode Kansas City standard and Processor Technology CUTS audio cassette formats, as these are the formats supported on the Processor Technology Sol-20.  These use FSK modulation, so it&#8217;s not too difficult.</p>
<p>In fact, FSK modulation is almost trivial, so I had the encoder written in less than an hour.</p>
<p>For decode, I decided to use the Goertzel algorithm, which is a simplified DFT that only looks for a single frequency.  I&#8217;ve used the Goertzel algorithm before on fixed-point DSP processors. There are app notes on using it for DTMF detection.  For FSK demodulation, I just use two Goertzels, one for the space frequency and one for the mark frequency.  The audio samples are dealt with in windows that are a fraction of a bit time, and the levels indicated by the two Goertzels are compared to decide which frequency predominates in that window.</p>
<p>Implementing the decoder program took a few hours last night and a few hours today.  It&#8217;s now basically working, at least for the perfectly sinusoidal waveforms generated by my encoder.  I still need to test it on some real tapes.</p>
<p>I&#8217;m currently using an 8 kHz sample rate for my audio files, although the encoder can be told to use a higher sample rate if desired, and the decoder will work with whatever sample rate the audio file uses.  Since the FSK frequencies are 1200 Hz and 2400 Hz, there should be no advantage to using a sample rate higher than 8 kHz.</p>
<p>I&#8217;m currently using libsndfile to read and write audio files.  I&#8217;d like to also use PortAudio to support direct access to the audio hardware, but I haven&#8217;t yet tried that.  While I&#8217;m doing the development on Linux, in principle the programs should work if compiled on Windows or MacOS.</p>
<p>I&#8217;ll release the programs under the GPLv3 license when I&#8217;ve verified that they work reasonably well.</p>
]]></content:encoded>
			<wfw:commentRss>http://whats.all.this.brouhaha.com/2012/01/02/code-to-encode-and-decode-kansas-city-standard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

