Eric Smith's Free Software
An eclectic assortment of software I've written, as well as a few
programs by others that I've enhanced or just find useful.
Most of these programs are
and are freely redistributable under the terms of the
Free Software Foundation's
General Public License, Version 2 or
Version 3, or, for a few programs, other licenses.
See the web page for the specific program or the comments in the source
code for definitive information on the license applicable to that program.
Non-GPL licenses are also available by arrangement with the author.
- altogether —
a microcode-level simulator for the
- anyipd — a daemon for FreeBSD to automatically add proxy
ARP and routing table entries for any machine on a LAN
that has an IP address outside the LAN's configured subnet. This
allows a user to plug in a machine (e.g., a laptop) with any IP
configuration, and have immediate network access without reconfiguring.
Source code will be available soon.
- asm21 — a crossassembler for the HP 21xx
and HP 1000 series minicomputers, written in Perl. Intended to
provide the exact functionality and exact listing output used by
the HP assembler, as used to assemble the HP 2000C' Time Shared BASIC
- barebones — an interpreter for the
Bare Bones programming language
- bishops — solves the Gentle Bishops puzzle.
- BlackBox — a classic game.
- caption — a closed-caption
decoder with serial output, based on Microchip PIC microcontrollers.
A collaboration with Richard Ottosen.
- centsim — a simulator for the Atari
Centipede and Millipede coin-operated video game hardware. Based on
the vecsim project. Discovered some details
of how the Atari POKEY chip works that allowed use of unpatched ROM
images; this information was provided to the MAME developers.
Obsolete, use MAME instead.
- dectape_decode —
a program to extract block data from a raw DECtape image file.
- DESPICable — an implementation
of the DES cryptographic algorithms for midrange Microchip PIC
- diskii_nybble — a simple C program
demonstrating how tables of valid nybbles for the Apple Disk II
13- and 16-sector disk formats my be generated.
- dmklib — a library
to copy physical floppy disks (3.5-, 5.25-, and 8-inch) to DMK-format
disk image files, and to read and write those image files. DMK format
is commonly used for archival purposes or simulation because it preserves
details of the disk format such as sector interleave.
- edit33 — a symbol editor for the DEC
PDP-1 Type 33 Symbol Generator.
- elfcrc — a utility to insert a magic number,
image length, and CRC into an ELF file, intended for use with
ARM Cortex-M3 and -M4 microcontrollers.
- fduart —
an interrupt-driven high-speed full duplex software UART virtual
peripheral for the Ubicom (formerly Scenix) SX microcontrollers.
- ggps — a small GTK-based program to display
GPS satellite information (satellites in view, SNR).
- glock — a GTK-based analog clock intended
as a demo of an undecorated non-rectangular window using
gtk_widget_shape_combine_mask(), moveable with the mouse using
- gSXprog — a command line
interface for the
and SX-Blitz programmers for
Ubicom (formerly Scenix) SX
- hexterm — a simple
serial terminal program with hexadecimal input and hexadecimal dump w/
ASCII output, for debugging serial communication.
- ksim — an 8080 simulator.
- la2vcd — a utility to translate waveforms
captured with HP and Agilent logic analyzers (e.g., 16500B) into a VCD
file for use with a waveform viewer application such as GTKWave.
- lcdtest — a utility to display LCD monitor
- mathdis — a disassembler for the microcode
of the math box (2901-based bit-slice processor) used in the Atari
Battlezone and Tempest coin-operated video games. May be useful as
a base for developing disassemblers for other 2901-based systems.
- mmon — a tiny monitor program for MIPS
processors, which does not require any RAM. Can download programs in
- m2psd — an MPEG 2 Program Stream demultiplexer.
- m9312 — a utility to decode (or encode) PDP-11
- nonpareil — a
microcode-level calculator simulator. Formerly known as
CASMSIM. Now simulates more calculator models,
including the HP-25, HP-35, HP-45, HP-55, and HP-80. Currently runs
on Linux using GTK+, but should be easily ported to other platforms.
- ns16 —
assembler and simulator for National Semiconductor PACE, first
monolithic 16-bit microprocessor, and incomplete support for the
even earlier National Semiconductor IMP-16 multi-chip processor.
- NSIM — a microcode-level simulator
for the HP-41 calculator. Written for Unix and X11, but easily portable
to other systems. Obsoleted by
- pdp1dump — dump PDP-1 RIM and BIN format
paper tame images in human-readable format.
- psim —
a crude PIC16C71 simulator with NTSC video support, which was used to
debug PIC-Tock and PIC-Pong. Unless you need the video support, you
may be better off with
gpsim, a much
more sophisticated PIC simulator.
- r5test — a program I hacked together to
recover from accidentally wiping out the metadata of a RAID 5 on a
- 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.
- srecutil — utilities to convert object
files between Motorola S-Record, Intel Hex, and raw binary format, and
to split files. I don't think this version was my latest, as the
Intel Hex file support doesn't seem to present. In any case, it is
obsolete, and you should use Peter Miller's
srecord package instead.
It's much more capable and is actively maintained.
- tapeinfo — a utility to read logs and other
information from the HP C1533A DDS2 tape drive; may be useful on other
HP DDS drives.
- tapeutils — copy tapes (9-track,
Exabyte, DDS, etc.) to/from tape image files. Includes a tapeio
library which provides an API for dealing with tapes and tape image
- theseus — solves the "Theseus and
the Minotaur" puzzle.
- tsbutils — extract and decode programs
and data files from HP 2000 Access Time Shared BASIC hibernate,
sleep, or dump tapes or tape images.
- TTYHAN — a Baudot Teletype driver for the
Apex operating system. From around 1981, this is the earliest program
I've written for which I have machine-readable source code.
- tumble — create PDF
files from TIFF and JPEG images, useful for scanned documents
- vecsim — a simulator for the Atari vector display coin-operated
video game hardware. Also contained a simplistic attempt at binary
translation. A collaboration with Hedley Rainnie. Some of the
vector generator and math box code lives on in
MAME. vecsim is obsolete, use
- verbum — a program to punch human-readable
text on paper tape.
- vobdump — a program to decode DVD .VOB files.
Not complete, but handles enough of the format to be somewhat useful.
- WREC — a program to reform large aluminum
electrolytic capacitors, using an SCPI-programmable power supply such
as the Agilent E3631A.
Free Software written by others, that I've patched, modified, or enhanced:
- dis6502 — a flow-tracing disassembler for
the 6502, originally written by Robert Bond with enhancements by
Udi Finkelstein and me.
- gop_fixup — a program to fix GOP timestamps
in MPEG 2 program streams. This is a very small patch to avoid an
assertion when used with files encoded by a Hauppauge WinTV PVR 350
card and the
driver, as used with
Free Software written by friends, that I recommend:
- nc —
a network build tool. Similar to distcc, but better (IMNSHO). Works
with make or SCons.
Free Software written by others, that I'm redistributing:
- kx10 — PDP-10 simulator by Stu Grossman
- MysqlTool — a MySQL database administration
program, by Joseph Ingersoll of Dajoba, LLC
- PALASM and PLEASM — logic compilers for PAL and PROM chips, written in FORTRAN
- rpm-cvs — CVS to RPM conversion program,
by Michael Beach
Other software projects that I've contributed to:
- MAME — the Multiple Arcade
Machine Emulator — Atari analog and digital vector generator
simulation code and Battlezone/Tempest math box simulation code
(originally from vecsim)
Other Free Software I use:
I use a lot of common free software, such as the GNU software (including GCC)
and Linux. But here are some lesser known program I've found to be quite
Last updated January 3, 2015
Copyright 2003, 2004, 2005, 2006, 2008, 2012, 2014, 2015 Eric Smith