Portfolio of Projects

This is a non-exhaustive list of personal projects I've worked on over the years. It should be fairly obvious from this list that I have a real passion for vintage computer simulation and emulation.

Tektronix 4404 AI Workstation Emulator

2020–current

tek4404_screenshot.png

The Tektronix 4404 is an interesting AI workstation from 1984 that ran Smalltalk-80 and LISP. I've started work on an emulator for the platform. Please be aware that the emulator is still under very heavy development and is not yet really usable!

AT&T 3B2 Minicomputer Emulator

2014–current

3b2_emulator_screenshot.jpg

The AT&T 3B2 was a line of UNIX mini- and microcomputers produced in the early 1980s. It was the base porting platform for AT&T UNIX System V Release 3. Unfortunately, AT&T's entry into the minicomputer world is barely remembered these days. To help preserve this little piece of history, I wrote a 3B2 emulator capable of running unmodified system software directly from disk and tape images.

This project involved a tremendous amount of research, archiving, and reverse engineering to understand the 3B2/400, a popular early model.

AT&T / Teletype DMD 5620 Terminal Emulator

2018–current

dmd_gtk_screenshot.png

The DMD 5620 was an innovative graphical windowing terminal produced jointly by AT&T and Teletype Corp starting in 1984. It was a commercial product derived from earlier research work done by Rob Pike and Bart Locanthi Jr. at AT&T Bell Labs.

The DMD 5620 was often used with the AT&T 3B2 line of computers, so it felt appropriate to write a DMD terminal emulator to go along with my 3B2 emulator.

The emulator currently runs on macOS and Linux, with a Windows version planned for the future. The core is written in Rust; the Linux version uses GTK for its user interface, and the macOS version uses a Swift UI.

Farnsworth Morse Code Trainer

2019

farnsworth_cwtrainer.png

A small, pure JavaScript web application that can be used as an instructional aid to learn morse code using the Farnsworth training method. No frameworks were used.

ContrAltoJS Xerox Alto Emulator

2016

contraltojs.png

ContrAltoJS is a port of the excellent ContrAlto Xerox Alto emulator from C#/.Net to JavaScript. The goal was to run Xerox Alto software in a web browser, and it's succeeded pretty well. The project involved examining the C#/.Net architecture and porting it to JavaScript piece by piece. I learned a lot about the Alto's internals along the way.

Symon 6502 Simulator

2010–2019

symon.png

Symon is a 6502 system simulator, written in Java. At its core is a 6502 CPU emulator, but the simulated system also includes RAM, ROM, and a simulated 6551 ACIA. It has a virtual serial terminal connected for I/O. Programs and ROM images can be loaded and executed. There's a simple suite of debugging tools, as well.

Symon is fairly rigorously tested, and should be extremely accurate. At this time there are no known core 6502 emulator bugs, so it can serve as a platform for 6502 software development and testing.

Retrochallenge

2013

kbd_mess-1024x768.jpg

As always, the purpose of Retrochallenge is to play around with vintage computer technology in some way. This year, I chose to build a VT100 keyboard to USB keyboard converter, so I could use a real VT100 keyboard on my Mac. The firmware was written in AVR C, and I learned a lot about the inner workings of a vintage serial terminal.

I'm very honored that my project was chosen as the winner for Retrochallenge 2013. More details than you could ever possibly want are on my weblog.

Retrochallenge Winter Warmup

2013

cassette_input-1024x768.png

This was a fun project. My home-brewed 6502 computer had no capability for mass storage, so I had no way to save programs. For 2013's Winter Warmup, I chose to build a cassette storage interface so I could re-live the awful old days of PRESS PLAY ON TAPE

I documented the whole process on my weblog.

Home Brew Computers

2010

6502sbc.jpg

I built a simple 6502-based personal computer from the ground up, using a handful of ICs. It's not a complex design, but it offers simple terminal-based IO and cassette storage. It's built around a Rockwell R65C02, a 6522 VIA, a 6551 ACIA, 32KB of EPROM, and 32KB of SRAM.

Next plans include a Z80-based system, but it's still in the breadboard stages.