brouhaha is currently certified at Journeyer level.

Name: Eric Smith
Member since: 2001-04-21 00:34:10
Last Login: 2007-08-03 00:36:10

FOAF RDF Share This



Lots of interests, as described on my home page.

I've developed a number of Free Software projects. Only a few are listed here, see my obscure Free Software projects page for a more comprehensive list. Some of the Free Software projects I've worked on:

  • tumble — a utility to convert TIFF and JPEG images to PDF files - I scan a lot of old DEC manuals and engineering drawings, and needed a better converter
  • altogether — a microcode-level simulator for the Xerox Alto personal workstations - a work in progress: CPU, memory and display simulation is basically complete but probably still has some bugs. The code is in a Subversion repository.
  • asm68 — an enhanced port of the Motorola freeware cross-assemblers
  • caption — a closed-caption decoder with serial output, based on Microchip PIC microcontrollers. A collaboration with Richard Ottosen.
  • Nonpareil (formerly CASMSIM) — a microcode-level simulator for calculators. Supports the HP Classic and Woodstock series, including the HP-25, HP-35, HP-45, HP-55, and HP-80 calculators. Uses GTK+ toolkit.
  • DESPICable — an implementation of the DES cryptographic algorithms for midrange Microchip PIC microcontrollers.
  • glock, a simple analog clock to demonstrate unadorned non-rectangular windows in GTK+
  • gSXprog – a command line utility for programming Ubicom (formerly Scenix) SX microcontrollers using the Parallax SX-Key or SX-Blitz
  • la2vcd — convert data captured by HP/Agilent logic analyzers to VCD format for use in waveform viewing applications such as GTKWave
  • lcdtest — a utility to display LCD monitor test patterns (uses SDL)
  • m2psd — a fast MPEG-2 Program Stream demultiplexer
  • mmon — a tiny monitor program for MIPS processors, which does not require any RAM. Can download programs in S-record format.
  • NSIM — a microcode-level simulator for the HP-41 calculator. Written for Unix and X11, but easily portable to other systems.
  • SERVID — a serial video display using a Ubicom (formerly Scenix) SX microcontroller, generating the video in software. A collaboration with Richard Ottosen. We won the SXlist Video Challenge.
  • shdis — a flow-tracing disassembler for the Renesas (formerly Hitachi) SH1 RISC processor.
  • skipjack — an implementation of the SKIPJACK cryptographic algorithms for Ubicom (formerly Scenix) SX microcontrollers and midrange Microchip PIC microcontrollers.
  • WREC — WREC Reforms Electrolytic Capacitors (work in progress)

Some of my other projects:

  • The Computer History Museum PDP-1 Restoration Project — the PDP-1 is perhaps best known as the system that ran the original Space War! game by Steve "Slug" Russell.
  • restoring a DEC KS10, the small model of DECsystem-10/DECSYSTEM-20

Most diary entries I post here are from my blog, What's All This Brouhaha?.


Recent blog entries by brouhaha

Syndication: RSS 2.0
Nonpareil on Windows

Nonpareil now runs on Windows, as well as Linux and other Posix platforms.

Nonpareil is cross-compiled from Linux using a GCC cross-compiler targeting i586-mingw32msvc.

There is not yet an installer; it's just distributed as a ZIP file. It appears that I should be able to use NSIS to create an installer, and still do everything from Linux.

Nonpareil release 0.72

This is the first release to include the 82143A printer support I mentioned here last week. Graphics and custom characters (BLDSPEC) are supported, subject to the same limitations as a real 82143A (42 byte buffer size). The printout is shown in a separate window at two selectable sizes, and can be saved to a PNG file. Saving as text will probably be provided in a future release.

The 41C and Voyager keyboard support has been enhanced to provide two-key rollover matching the actual calculators. Thanks to John Hogerhuis for his comments and suggestions regarding the keyboard characteristics. I need to verify that the two-key rollover behavior is the same on Classics, Woodstocks, Topcats, etc.; in which case I'll make the same changes for those models.

Some progress has been made on the Windows port, but it still isn't ready. I expect to include a Windows preview release (possibly with less features than the Linux version) with release 0.73 or 0.74.

14 Jun 2005 (updated 14 Jun 2005 at 08:35 UTC) »
More Nonpareil printer work, especially on the GUI

There's some bug that prevents the printer simulation from working on my Fujitsu Lifebook subnotebook (800 MHz Crusoe processsor), but I haven't yet had a chance to try to debug it. It works fine on my other machines, aside from the problem I noted yesterday with use of the Paper Advance button when the calculator is in program mode.

I added the double-size mode, selectable by a menu item. Internally there's an integer for the scale, so it could have values greater than 2, but right now the UI only allows toggling between 1 and 2.

I can't decide whether to use radio buttons for the printer mode (NORM/TRACE/MAN), or a menu with radio items. I've got both in the code now, with defines to select at compile time. For radio buttons, I think I prefer the three radio buttons arranged vertically, with the Print and Paper Advance buttons arranged vertically to the right of the radio button group. Anyhow, if buttons are used (even just for Print and Paper Advance), some effort needs to be put into making the layout aesthetically pleasing.

The arrows on the scroll bars on the printer output menu weren't working, though dragging the ``thumb'' or clicking in the paging regions (between the thumb and arrows) worked fine. It turns out that the default step_increment in the adjustments used by the GtkScrolledWindow and GtkLayout are zero! I would have expected them to be one (pixel), though that wouldn't have been much better. Anyhow, I'd never dealt with GtkAdjustments before, but they're fairly simple. I set the horizontal and vertical step_increments to the size of one character. Now that I think about it, they really need to be the size of a scaled character, and updated if the scale changes.

And once I did that, I realized that the GtkAdjustment was the key to making the printer output window automatically scroll as new output is added. I wanted that to happen only if the window was already scrolled to the end, so that if the user manually scrolls to some other part of the output, newly generated output doesn't keep jumping it to the end. At the beginning of gui_printer_update(), I do something like this:

  bool was_at_end = ((p->v_adjustment->value + p->v_adjustment->page_size) >=

Then at the end, I do:

  if (was_at_end)
      gtk_adjustment_set_value (p->v_adjustment,
				p->v_adjustment->upper - p->v_adjustment->page_size);

It seems to work quite well. It would be nice to have examples like this in the GTK+ API documentation or the tutorial.

P.S. To anyone with a lot of GTK+ experience this stuff probably seems blindingly obvious, but GUIs aren't really my area of expertise (despite having hacked Macintosh code since late 1984). In the Nonpareil project, my main interest is the guts of the simulation, and the reverse-engineering aspects (figuring out the internals of the old HP calculators). I'm doing the GTK+ work because I didn't think I could find anyone else willing to do it for me, but it's turned out to be quite fun. And maybe GTK+ expertise is a marketable skill. I wonder what percentage of GTK+-based development is done in C, vs. C++? I normally avoid C++, which is exactly why I chose GTK+ over Qt or WxWidgets.

82143A printer working in Nonpareil!

It's not ready for release yet, but I basically have the 82143A printer simulation in Nonpareil working now! You can see the result of PRA, PRP, and PRSTK in this screenshot.

There's not yet any way to save or copy the printer output, nor to change the printer mode (MAN/TRACE/NORM) or press the printer ADV or PRINT buttons. I also want to add a double-size view.

I'll make a new release available soon.

I'm missing one character in the font, code 123 (0x7b hex), because I couldn't make it out at all in the manual scan. I haven't the slightest idea what it's supposed to be. There are probably other errors in my transcription of the character set, so I'd like to get a better scan of either the actual printer output, or the page of the manual showing it.

Hmmm, maybe I need to add printer sound effects too! :-)

Nonpareil release 0.71

Keyboard operation has been fixed, and there are improved keyboard mappings for Voyager calculators. The 41C bank switching has been fixed so the 41CX Extended Functions now work correctly. The stopwatch mode now works.

80 older entries...


brouhaha certified others as follows:

  • brouhaha certified jaq as Journeyer
  • brouhaha certified robertc as Master
  • brouhaha certified jwz as Master
  • brouhaha certified alan as Master
  • brouhaha certified xiphmont as Master
  • brouhaha certified rms as Master
  • brouhaha certified shields as Master
  • brouhaha certified phr as Master
  • brouhaha certified bdale as Master
  • brouhaha certified jg as Master
  • brouhaha certified superant as Master
  • brouhaha certified hch as Master
  • brouhaha certified rth as Master
  • brouhaha certified mips as Journeyer
  • brouhaha certified fejj as Master
  • brouhaha certified federico as Master
  • brouhaha certified miguel as Master
  • brouhaha certified raph as Master
  • brouhaha certified AlanShutko as Journeyer
  • brouhaha certified jimb as Master
  • brouhaha certified sussman as Master
  • brouhaha certified timriker as Master
  • brouhaha certified mrbrown as Journeyer
  • brouhaha certified Bram as Master
  • brouhaha certified hadess as Master
  • brouhaha certified Nelson as Master
  • brouhaha certified DV as Master
  • brouhaha certified Akira as Journeyer
  • brouhaha certified lsdrocha as Apprentice
  • brouhaha certified mdupont as Journeyer
  • brouhaha certified bkuhn as Master
  • brouhaha certified murrayc as Master
  • brouhaha certified Stevey as Master
  • brouhaha certified richdawe as Journeyer
  • brouhaha certified chipster as Journeyer
  • brouhaha certified awu as Journeyer
  • brouhaha certified Uraeus as Master
  • brouhaha certified dangermaus as Journeyer
  • brouhaha certified aicra as Journeyer
  • brouhaha certified Zaitcev as Master
  • brouhaha certified kroah as Master
  • brouhaha certified Spooky as Journeyer
  • brouhaha certified Omnifarious as Journeyer
  • brouhaha certified e8johan as Journeyer
  • brouhaha certified mterry as Journeyer
  • brouhaha certified sashako as Journeyer
  • brouhaha certified fxn as Journeyer
  • brouhaha certified lerdsuwa as Journeyer
  • brouhaha certified kai as Journeyer
  • brouhaha certified pasky as Journeyer

Others have certified brouhaha as follows:

  • jaq certified brouhaha as Apprentice
  • AlanShutko certified brouhaha as Apprentice
  • mips certified brouhaha as Journeyer
  • mrbrown certified brouhaha as Journeyer
  • mdupont certified brouhaha as Journeyer
  • lsdrocha certified brouhaha as Journeyer
  • richdawe certified brouhaha as Journeyer
  • chipster certified brouhaha as Journeyer
  • dangermaus certified brouhaha as Master
  • awu certified brouhaha as Journeyer
  • Stevey certified brouhaha as Journeyer
  • Uraeus certified brouhaha as Journeyer
  • mpr certified brouhaha as Journeyer
  • mterry certified brouhaha as Journeyer
  • Omnifarious certified brouhaha as Journeyer
  • superant certified brouhaha as Master
  • sashako certified brouhaha as Journeyer
  • fxn certified brouhaha as Journeyer
  • lerdsuwa certified brouhaha as Journeyer
  • e8johan certified brouhaha as Journeyer
  • kai certified brouhaha as Journeyer
  • pasky certified brouhaha as Journeyer
  • mirwin certified brouhaha as Master
  • dlc certified brouhaha as Journeyer
  • ataridatacenter certified brouhaha as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page