AT&T 3B2 Emulator

This is an emulator of the AT&T 3B2/400, a small UNIX minicomputer sold by AT&T in the 1980s. Because there is almost no internals documentation about 3B2, this project involved a tremendous amount of reverse-engineering the of the AT&T 3B2. It also involved writing a lot of my own tools, including a WE32100 assembler and disassembler.

The simulator is complete and very functional, though it continues to be a work in progress as additional features are added.

The source was built with the SIMH simulator framework, and is available on GitHub.

ContrAltoJS Xerox Alto Emulator

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

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.


IttyChat is a light-weight internet chat room built on Node.js and CoffeeScript. When I say “chat room”, I mean it in the very retro sense of a Telnet-based chat room. None of this fancy web business, no sir!

To use IttyChat, you need to start the server, then telnet in and create a character. Characters are saved in a SQLite3 database between sessions. There’s a lot more I’d like to do with this, but with so much going on, it’s been a low priority.

Retrochallenge Summer 2013

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.

Home Brew Computers

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.

Retrochallenge Winter Warmup 2013

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.

PDP-11/35 Restoration

I’ve had an unhealthy love for the PDP-11 since college, when I first laid hands on one that was destined for the scrappers. Some friends and I nursed it back to life and played with it over the course of a couple of semesters.

When I was offered a complete PDP-11/35 last year, I jumped at the chance. Unfortunately, the machine had been left in a barn for over a decade and became infested with mice. It was severely damaged, but I spent a few months carefully restoring it.