<?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? &#187; Software I&#8217;ve written</title>
	<atom:link href="https://whats.all.this.brouhaha.com/category/computing/software/software-ive-written/feed/" rel="self" type="application/rss+xml" />
	<link>https://whats.all.this.brouhaha.com</link>
	<description>miscellaneous musings and random rantings</description>
	<lastBuildDate>Fri, 01 Nov 2019 06:31:54 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9</generator>
	<item>
		<title>HP-41 card reader bug</title>
		<link>https://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/</link>
		<comments>https://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 09:32:48 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Nonpareil]]></category>
		<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=921</guid>
		<description><![CDATA[It occurred to me while studying simulator traces that it might be interesting to investigate a bug in early versions of the 82104A card reader for the HP-41C calculator. The bug was fairly esoteric and easily avoided, as it seemed &#8230; <a href="https://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It occurred to me while studying simulator traces that it might be interesting to investigate a bug in early versions of the 82104A card reader for the HP-41C calculator. The bug was fairly esoteric and easily avoided, as it seemed to occur when backspacing over a four-digit numeric prompt after EEX and two digits have been entered. (This is somewhat reminiscent of the famous <a title="Therac-25" href="http://en.wikipedia.org/wiki/Therac-25" target="_blank">Therac-25</a> bug, though without the fatal consequences.)<span id="more-921"></span></p>
<p>The card reader bug is present in the 1E version of the  card reader (and probably 1D), and fixed in the 1G version. I haven&#8217;t  got a 1D or 1F to check.  I discovered the bug around 1981, and I think I  saw it mentioned by someone else in the PPC Journal at one point.</p>
<p>With the card reader plugged in, press the key sequence</p>
<pre>GTO . EEX 0 0 backspace backspace</pre>
<p>What you should see after that is</p>
<pre>GTO .1__</pre>
<p>If you have the bug, the display rotates so it reads</p>
<pre>0      GTO .1</pre>
<p>From study of a instruction trace, it appears that the bug is due to the  card reader ROM&#8217;s I/O service poll routine violating one of the  requirements of the mainframe polling code.  From the mainframe source  code:</p>
<blockquote><p>All subroutine levels are available except in I/O service entry. If PKSEQ is set then I/O service routines must either preserve three subroutine returns on the subroutine stack or else terminate the partial key sequence.</p></blockquote>
<p>The CR-1E I/O service poll code uses two levels of subroutines.  Perhaps  the CR-1G ROM was changed to not need two levels of subroutines, though  I haven&#8217;t yet disassembled the code to determine what the actual  changes are.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2011/07/25/hp-41-card-reader-bug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HP-41CV ROM set version HFF bug fix</title>
		<link>https://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/</link>
		<comments>https://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 09:22:01 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Nonpareil]]></category>
		<category><![CDATA[RetroChallenge]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=914</guid>
		<description><![CDATA[As I was studying HP-41CV microcode running in simulation, I finally uncovered what one of the bug fixes in the HFF ROM version does. This has been a mystery for many years, though there&#8217;s still one more unexplained change relative &#8230; <a href="https://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As I was studying HP-41CV microcode running in simulation, I finally uncovered what one of the bug fixes in the HFF ROM version does. This has been a mystery for many years, though there&#8217;s still one more unexplained change relative to the earlier GFF version.<span id="more-914"></span></p>
<p>For the first half of the product life of the HP-41CV, and the tail  end of the product life of the HP-41C, the mainframe ROMs used were the  &#8220;GFF&#8221; ROMs, which fixed most of the serious known bugs of earlier ROMs.  Some of those bug fixes upset early synthetic programming fans, such as  fixing &#8220;bug 2&#8243; which allowed program memory and status registers to be  accessed by addresses that wrapped around, and &#8220;bug 3&#8243; which allowed  altering system flags.  Of course, other methods were developed for  doing those things without reliance on bug 2 and bug 3.</p>
<p>Around late 1983, the HP-41CV changed to using the &#8220;HFF&#8221; ROM set. As far  as I know, there is no published explanation of the difference between  ROM 0 revisions G and H.  Aside from the version number and checksum,  there are two actual changes, at address range 01c9..01f3, and the  single word at 081a.  I haven&#8217;t figured out the latter, but I&#8217;ve  discovered what the 01c9 change does.</p>
<p>The HP-41 mainframe ROMs have code to support expansion ROMs using  &#8220;buffers&#8221; of registers allocated in main RAM, just after the key  assignments. The first register of a buffer contains two copies of the  buffer number, used by an expansion ROM to identify the buffer it owns,  and a buffer length which is used to locate the next buffer, or the end  of the buffers.</p>
<p>There was a longstanding bug in the mainframe ROMs which would cause a  hard lockup if the length of a buffer was mismarked as zero. The code to  scan the buffers would sit in a tight loop looking at the same  zero-length buffer forever. This situation could easily be caused by  buggy synthetic programs. The ON-backspace trick wouldn&#8217;t recover from  this, because the buffer check happened before the ON-backspace check.   Recovery generally requires removing the batteries until the RAM  contents are lost.</p>
<p>The code change at 01c9 in the 0H ROM, and also the 0N ROM of the 41CX,  fixes this bug!  They reversed the order of the tests, so that the  ON-backspace test is done before the buffer scan, so that it can avoid  the zero-length buffer lockup.</p>
<p>It has been reported that the 41CV with HFF ROMs may have the &#8220;buzz  mode&#8221; of the 41CX (PPCJ v10n9p24), but I don&#8217;t have a 41CV with HFF ROMs  so I can&#8217;t confirm that.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2011/07/25/hp-41cv-rom-set-version-hff-bug-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nonpareil status</title>
		<link>https://whats.all.this.brouhaha.com/2008/06/11/nonpareil-status-2/</link>
		<comments>https://whats.all.this.brouhaha.com/2008/06/11/nonpareil-status-2/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 08:46:20 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Nonpareil]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/2008/06/11/nonpareil-status-2/</guid>
		<description><![CDATA[I&#8217;m still making progress towards a new release on Nonpareil.Â  Sometimes it seems like the more work I do, the more I find that needs to be done. The ability to cross-compile a Windows version has been broken for a &#8230; <a href="https://whats.all.this.brouhaha.com/2008/06/11/nonpareil-status-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m still making progress towards a new release on Nonpareil.Â  Sometimes it seems like the more work I do, the more I find that needs to be done.<span id="more-679"></span></p>
<p>The ability to cross-compile a Windows version has been broken for a while, but now I&#8217;ve got it going again, thanks in no small part to Ronald Burkey&#8217;s <a href="http://www.sandroid.org/imcross/" title="I'm Cross!" target="_blank">IMCROSS</a>, a package which automates building cross-development environments for Windows and Mac OS X.</p>
<p>I&#8217;ve nearly completed the conversion to having each calculator defined by two files, an .ncd (Nonpareil Calculator Definition) file that defines everything about the behavior of the calculator, and an .nui (Nonpareil User Interface) file that defines GUI interface.Â  The .ncd file is a compressed XML file, while the .nui is a ZIP file containing a .kml file defining the user interface, and a lot of .png files for the calculator background (without buttons or legends), overlay (shifted legends), and buttons.Â  The intent is that a given calculator model (e.g., 34C) needs only one .ncd file, which would normally never need to be altered, but any number of .nui files that might present different appearances, window sizes, etc.</p>
<p>For the 41C family only, the actual firmware for the mainframe, peripheral, and option ROMs comes from .mod files rather than the .ncd file.</p>
<p>I still need to integrate an NSIS installer builder into the Nonpareil build system.Â  Some time back, Christoph Giesselink contributed an .nsi file that will serve as the basis.Â  However, rather than having the details of which calculator models are included and which files they need present in the .nsi file, I want to have the SConstruct generate them from its own data structures and the .ncd and .nui files.</p>
<p>Aside from some bug fixes, there probably won&#8217;t actually be that much in the way of new features visible to the user.Â  There will be support for the 29C and for a 67 without card reader.Â  Jacques Laporte helped me quite a bit with figuring out how the card reader instructions work, and he has the card reader working in his Java-based <a href="http://www.jacques-laporte.org/sim67.htm" title="HP-67 Microcode Simulator" target="_blank">simuulator</a>, but I don&#8217;t want to hold up the Nonpareil release until I get it working in my simulation code.Â  I do plan to have it in a future release.Â  I still don&#8217;t have a complete understanding of the ACT processor&#8217;s pointer wraparound behavior, but I know how to fake it well enough to avoid the hang in the label search code in the 19C, 29C, 67 and 97.</p>
<p>The Voyager calculators (11C, 12C, 15C, and 16C) will NOT be included in the next Nonpareil release, but will be in a separate add-on package.Â  This is because the ROM files for the Voyager calculators are not available under a Free Software license, so a package containing them cannot be included in Fedora, Debian, or various other Linux distributions.Â  By splitting them into a separate package, at least the base Nonpareil package can be accepted into Linux distributions.Â Â  I really should have avoided this problem by putting them in a separate add-on package in the first place.</p>
<p>The new release (other than the Voyager add-on package) will be releasedÂ  under the <a href="http://gplv3.fsf.org/" title="GPLv3" target="_blank">GPLv3</a>, rather than the GPLv2 that was previously used.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2008/06/11/nonpareil-status-2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Suboptimal new computer experience &#8212; privacy vs. Mac OS X</title>
		<link>https://whats.all.this.brouhaha.com/2008/04/10/suboptimal-new-computer-experience-privacy-vs-mac-os-x/</link>
		<comments>https://whats.all.this.brouhaha.com/2008/04/10/suboptimal-new-computer-experience-privacy-vs-mac-os-x/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 01:35:16 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Nonpareil]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[The Suboptimal Way]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=657</guid>
		<description><![CDATA[I just got a refurbished Apple Mac mini, with the 1.83 GHz Intel Core 2 Duo processor. It is mainly intended for use compiling my open source programs such as Nonpareil for Mac OS X. I am extremely surprised at &#8230; <a href="https://whats.all.this.brouhaha.com/2008/04/10/suboptimal-new-computer-experience-privacy-vs-mac-os-x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I just got a refurbished <a href="http://www.apple.com/" title="Apple" target="_blank">Apple</a> <a href="http://www.apple.com/macmini/" title="Mac mini" target="_blank">Mac mini</a>, with the 1.83 GHz Intel Core 2 Duo processor.  It is mainly intended for use compiling my open source programs such as <a href="http://nonpareil.brouhaha.com/" title="Nonpareil" target="_blank">Nonpareil</a> for Mac OS X.  I am extremely surprised at the user experience of booting <a href="http://www.apple.com/macosx/" title="Mac OS X" target="_blank">Mac OS X</a> Leopard for the first time, and very disappointed in Apple.</p>
<p>I&#8217;m used to new operating system installations wanting a very small amount of personal information from the user.  Windows asks for the user&#8217;s name and company, though it allows the user to leave the company blank, as would be typical for home users.  Fedora Core Linux asks for the users full name (not required) and a username.  Neither of these seem very onerous, and the reasons for requesting the user&#8217;s name are reasonably clear.  It&#8217;s less obvious why Microsoft wants a company name, but since you can omit it, I don&#8217;t much care.</p>
<p>Mac OS X, on the other hand, requires the user&#8217;s full name, postal address, phone number, expected place of use (home, small business, medium business, large business, etc), and industry.  It will not allow the user to proceed until this information is entered.  I don&#8217;t mind entering my name, but I&#8217;ll be damned if I&#8217;m going to tell my computer any of that other stuff without a very good reason.  If I don&#8217;t put personally identifying information into a computer, that makes it less likely that the information will be misused or compromised.  I&#8217;m pretty sure that the C compiler isn&#8217;t going to need any of that in order to compile my programs successfully.</p>
<p>The pages requesting the information have a button to view Apple&#8217;s privacy policy, which explains that Apple collects the information in order to provide an exceptional user experience.  Exceptionally bad, in my opinion.  I was put in the position of lying to the computer.  I put &#8220;n/a&#8221; for all the fields that would accept that, and all nines for the ZIP code and phone number.  I selected &#8220;home&#8221; for the place the computer will be used, though I wasn&#8217;t very happy about it.  I selected &#8220;other&#8221; for the industry.</p>
<p>Apple shouldn&#8217;t force the user to choose between revealing personal information for no good reason, and providing false information.  They should allow the user to skip providing the unnecessary information, or better yet, not even attempt to collect it.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2008/04/10/suboptimal-new-computer-experience-privacy-vs-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Turing Machine in Bare Bones</title>
		<link>https://whats.all.this.brouhaha.com/2008/03/03/turing-machine-in-bare-bones/</link>
		<comments>https://whats.all.this.brouhaha.com/2008/03/03/turing-machine-in-bare-bones/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 07:36:24 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Bare Bones]]></category>
		<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=641</guid>
		<description><![CDATA[The most recent release of my Bare Bones interpreter made identifiers case-insensitive, and added an optional peephole optimizer that recognizes a common idiom: while N not 0 do; Â  decr N; Â  incr X; end; Such a loop adds N &#8230; <a href="https://whats.all.this.brouhaha.com/2008/03/03/turing-machine-in-bare-bones/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The most recent release of my Bare Bones interpreter made identifiers case-insensitive, and added an optional peephole optimizer that recognizes a common idiom:</p>
<blockquote>
<pre>while N not 0 do;
Â    decr N;
Â    incr X;
end;</pre>
</blockquote>
<p>Such a loop adds N to X, clearing N in the process.  Without the optimizer, this is has time complexity O(N).  The optimizer replaces it with a single macro that executes in O(1).  This makes the supplied example program that computes Fibonnaci numbers run much faster.</p>
<p>For the next release, I&#8217;ve added more sample programs, including an example of a Bare Bones translation of a two-symbol three-state Turing machine busy beaver program.  The Bare Bones program demonstrates that Bare Bones can perform any action that can be performed by a Turing machine, proving that Bare Bones is universal.<span id="more-641"></span></p>
<p>Brookshear states that Bare Bones is universal by comparing it to a Turing machine,  but only actually shows that it can compute two simple functions that are computable by a Turing machine.  He states that &#8220;researchers have shown that the Bare Bones programming language can be used to express algorithms for computing all the Turing-computable functions,&#8221; but unfortunately he does not give any reference to publication of such results.</p>
<p>One way to show that a machine or language is universal is to show that it can emulate a Turing machine, or that any Turing machine program can be translated into a program for the machine or language in question.  At first glance it wasn&#8217;t obvious that Bare Bones could be universal, because a Bare Bones program can only use a finite number of variables.  The key to its universality is that a Bare Bones variable can contain <em>any</em> non-negative integer.  An infinitely long one-dimensional Turing machine tape can be represented as three variables:  one contains all the symbols to the left of the head, one contains the symbol at the head, and one contains all the symbols to the right of the head.  For a turing machine with an alphabet of n symbols, to move the head position right, one must execute these assignments (in pseudo-code, not Bare Bones code):</p>
<blockquote>
<pre>LEFT := LEFT * n + HEAD;</pre>
<pre>HEAD := RIGHT mod n;</pre>
<pre>RIGHT := RIGHT / n;</pre>
</blockquote>
<p>Moving the head position left is done by the same assignments, with LEFT and RIGHT swapped.  For a two-symbol Turing machine, the Bare Bones code to move the head position to the right is:</p>
<blockquote>
<pre># LEFT := LEFT * 2;
copy LEFT to TEMP;
while TEMP not 0 do;
Â    incr LEFT;
Â    decr TEMP;
end;</pre>
<pre># LEFT := LEFT + HEAD;
while HEAD not 0 do;
Â    incr LEFT;
Â    decr HEAD;
end;</pre>
<pre># HEAD := RIGHT mod 2;
# RIGHT := RIGHT / 2;
copy RIGHT to TEMP;
clear RIGHT;
copy TEMP to HEAD;
decr TEMP;
while TEMP not 0 do;
Â    incr RIGHT;
Â    decr TEMP;
Â    copy TEMP to HEAD;
Â    decr TEMP;
end;</pre>
</blockquote>
<p>That&#8217;s the most complicated portion of the Turing machine interpreter.  I might write up an explanation of the rest at some future date.  For now, anyone interested in the details can look at the example Bare Bones source code for a simulation of a three-state Turing Machine busy beaver program:  <a href="http://svn.brouhaha.com/viewvc/barebones/trunk/examples/tm_busy_beaver_3.bb?view=co" title="tm_busy_beaver_3.bb" target="_blank">tm_busy_beaver_3.bb</a>.</p>
<p>Note that it is not currently practical to to use my Bare Bones interpreter to simulate a Turing machine with a long tape, because the division/modulus code used to shift the tape takes O(n) operations, where n is the number of bits to the right of (or left of) the head.  To make that reasonably efficient, I&#8217;ll need to extend the interpreter&#8217;s optimizer, and make the interpreter use bignum arithmetic (probably using the <a href="http://gmplib.org/" title="The GNU MP Bignum Library" target="_blank">GMP</a> library).  Once that&#8217;s done, it would be nice to try running a universal Turing machine in Bare Bones.  The smallest two-symbol UTM I&#8217;ve heard of uses 22 states.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2008/03/03/turing-machine-in-bare-bones/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bare Bones interpreter</title>
		<link>https://whats.all.this.brouhaha.com/2008/02/11/bare-bones-interpreter/</link>
		<comments>https://whats.all.this.brouhaha.com/2008/02/11/bare-bones-interpreter/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 03:21:35 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Bare Bones]]></category>
		<category><![CDATA[Computer Science]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=630</guid>
		<description><![CDATA[Over the weekend I finished the homework assignment for the &#8220;Theory of Computation&#8221; chapter of Computer Science: An Overview, Ninth Edition, by J. Glenn Brookshear. Brookshear defines a very minimal programming language called Bare Bones, in which variables may contain &#8230; <a href="https://whats.all.this.brouhaha.com/2008/02/11/bare-bones-interpreter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Over the weekend I finished the homework assignment for the &#8220;Theory of Computation&#8221; chapter of <em><a href="http://www.aw-bc.com/brookshear/" title="Computer Science: An Overview" target="_blank">Computer Science: An Overview</a></em>, Ninth Edition, by J. Glenn Brookshear.  Brookshear defines a very minimal programming language called Bare Bones, in which variables may contain arbitrarily large non-negative integers.  The only operations available are:</p>
<ul>
<li>clear var; â€” set a variable to zero</li>
<li>incr var; â€” increment a variable</li>
<li>decr var;  â€” decrement a variable, unless it is already zero</li>
<li>while var not 0 do; &lt;statement list&gt; end;  â€” loop</li>
<li>copy var1 to var2;  â€” introduced for convenience</li>
</ul>
<p>Bare Bones is universal, in that it can compute any function that can be computed by a Turing machine.  In fact, it would be universal even without the clear and copy statements, as those can be synthesized from the remaining statements.  Needless to say, writing programs in this language can be tricky.  I wasn&#8217;t confident that the programs I wrote for the homework exercises were correct, and decided to write a <a href="http://www.brouhaha.com/~eric/software/barebones/" title="Bare Bones interpreter" target="_blank">Bare Bones interpreter</a> to check them.  It&#8217;s released under the <a href="http://www.brouhaha.com/~eric/software/gpl-3.0.txt" title="General Public License, version 3" target="_blank">GPLv3</a>.</p>
<p>I wrote example Bare Bones programs to compute factorials and fibonacci numbers, and they are included with the interpreter.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2008/02/11/bare-bones-interpreter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lcdtest now uses SCons instead of make</title>
		<link>https://whats.all.this.brouhaha.com/2007/05/23/lcdtest-now-uses-scons-instead-of-make/</link>
		<comments>https://whats.all.this.brouhaha.com/2007/05/23/lcdtest-now-uses-scons-instead-of-make/#comments</comments>
		<pubDate>Thu, 24 May 2007 06:46:25 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[lcdtest]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=501</guid>
		<description><![CDATA[A few people reported problems caused by the &#8220;.d&#8221; dependency files created by the dependency analysis hack in the Makefile, so I&#8217;ve updated lcdtest to use SCons instead of make.Â  I&#8217;ve also now made RPMs for Fedora Core 6 available &#8230; <a href="https://whats.all.this.brouhaha.com/2007/05/23/lcdtest-now-uses-scons-instead-of-make/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A few people reported problems caused by the &#8220;.d&#8221; dependency files created by the dependency analysis hack in the Makefile, so I&#8217;ve updated <a href="http://www.brouhaha.com/~eric/software/lcdtest/" title="lcdtest" target="_blank">lcdtest</a> to use SCons instead of make.Â  I&#8217;ve also now made RPMs for Fedora Core 6 available (both i386 and x86_64), and submitted a review request to try to get them into the official Fedora package repository.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2007/05/23/lcdtest-now-uses-scons-instead-of-make/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Closed caption decoder enhancements contributed by user</title>
		<link>https://whats.all.this.brouhaha.com/2007/05/21/closed-caption-decoder-enhancements-contributed-by-user/</link>
		<comments>https://whats.all.this.brouhaha.com/2007/05/21/closed-caption-decoder-enhancements-contributed-by-user/#comments</comments>
		<pubDate>Mon, 21 May 2007 07:33:20 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[closed caption decoder]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=497</guid>
		<description><![CDATA[Kevin Timmerman sent me email about having built a USB version of the closed-caption decoder that Richard Ottosen and I developed.Â  He used an FTDI TTL-232R cable which incorporates a USB-to-serial interface chip.Â  He has added many new features to &#8230; <a href="https://whats.all.this.brouhaha.com/2007/05/21/closed-caption-decoder-enhancements-contributed-by-user/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Kevin Timmerman sent me email about having built a USB version of the closed-caption decoder that Richard Ottosen and I developed.Â  He used an FTDI TTL-232R cable which incorporates a USB-to-serial interface chip.Â  He has added many new features to the firmware, including ANSI cursor addressing, XDS, and V-chip support, and also has fixed some bugs.</p>
<p>Photos and the source code to his enhanced version are available from his <a href="http://www.compendiumarcana.com/vbi/" title="NTSC Line 21 Decoder" target="_blank">web site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2007/05/21/closed-caption-decoder-enhancements-contributed-by-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lcdtest 1.04</title>
		<link>https://whats.all.this.brouhaha.com/2007/05/07/lcdtest-104/</link>
		<comments>https://whats.all.this.brouhaha.com/2007/05/07/lcdtest-104/#comments</comments>
		<pubDate>Tue, 08 May 2007 00:49:13 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[lcdtest]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=488</guid>
		<description><![CDATA[lcdtest wasn&#8217;t working properly with German keyboard layouts.Â  It was using keysyms from SDL key events, and those only indicate what the unshifted key legend is.Â  The fix was to enable the optional SDL key event Unicode mapping, and switch &#8230; <a href="https://whats.all.this.brouhaha.com/2007/05/07/lcdtest-104/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://http://www.brouhaha.com/~eric/software/lcdtest/" title="lcdtest" target="_blank">lcdtest</a> wasn&#8217;t working properly with German keyboard layouts.Â  It was using keysyms from <a href="http://www.libsdl.org/" title="SDL" target="_blank">SDL</a> key events, and those only indicate what the unshifted key legend is.Â  The fix was to enable the optional SDL key event Unicode mapping, and switch on that rather than the keysym.Â  However, some keys such as escape and the cursor arrows do not map to Unicode codepoints, and SDL returns a Unicode null for those.Â  I added code to check for them and map them into values in the Unicode Private Use Area.</p>
<p>lcdtest 1.04 should work with any keyboard layout that the host system supports, assuming that SDL&#8217;s Unicode mapping is done properly.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2007/05/07/lcdtest-104/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nonpareil status</title>
		<link>https://whats.all.this.brouhaha.com/2006/12/09/nonpareil-status/</link>
		<comments>https://whats.all.this.brouhaha.com/2006/12/09/nonpareil-status/#comments</comments>
		<pubDate>Sat, 09 Dec 2006 08:02:28 +0000</pubDate>
		<dc:creator><![CDATA[Eric]]></dc:creator>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Nonpareil]]></category>

		<guid isPermaLink="false">http://whats.all.this.brouhaha.com/?p=387</guid>
		<description><![CDATA[Several people have inquired about the status of Nonpareil, so it&#8217;s time for an update. There are major changes in progress that are mostly &#8220;under the hood.&#8221; The released versions of Nonpareil install KML, image, and ROM files in a &#8230; <a href="https://whats.all.this.brouhaha.com/2006/12/09/nonpareil-status/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Several people have inquired about the status of Nonpareil, so it&#8217;s time for an update.</p>
<p>There are major changes in progress that are mostly &#8220;under the hood.&#8221;  The released versions of Nonpareil install KML, image, and ROM files in a library directory (or with the Program Files in Windows).  There has been no clear distinction made between the files relating to the user interface, and the files that define a calculator model.  In fact, the KML files contain both kinds of information.</p>
<p>In the next major release (probably to be numbered 0.90), there is a clean division.  The user interface will be defined by &#8220;.nui&#8221; files (Nonpareil User Interface), which are ZIP files that contain a KML file and a bunch of .png images.  Instead of a single image, there are now separate background and overlay images, and separate images for each key.  But since they are all bundled together into a .nui file, there is actually less clutter.</p>
<p>The ROM code and the information formerly in the KML file that defined a calculator model (non-UI) will now be in a &#8220;.ncd&#8221; (Nonpareil Calculator Definition) file.</p>
<p>Generally there will only be a single .ncd file for each model of calculator (e.g., HP-25, HP-38C, HP-41CV, etc.), but there may be any number of .nui files for a model.  I am only going to supply one .nui file per model initially, based on the graphics developed by Maciej Bartosiak for the MacOS X port, but it is intended that other people be able to create more relatively easily.  Thus people that prefer photorealistic images can create new .nui files to suit.</p>
<p>The Voyager calculators (11C, 12C, 15C, 16C) will be removed from the base &#8220;nonpareil&#8221; package, and instead will be part of a &#8220;nonpareil-voyager&#8221; add-on package.  This is due to the the Voyager firmware being covered by a non-GPL license, most likely the Creative Commons Attribution-Noncommercial-Sharealike 2.5 license.  (The Voyager firmware has never been covered by the GPL or licensed for distribution, despite the fact that most of Nonpareil is covered by the GPL.)</p>
<p>Note that the trunk of the Subversion source code repository is not usable at the moment; in fact, it is rarely expected to be usable.  Any time that there is a significant improvement or bug fix to the code, and it is usable, I publish a release.  The purpose of allowing anonymous access to the source code repository is so that people can look at the history, or at what&#8217;s changing.</p>
]]></content:encoded>
			<wfw:commentRss>https://whats.all.this.brouhaha.com/2006/12/09/nonpareil-status/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
