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 love for vintage computer simulation and emulation.
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.
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.
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.
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
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.
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. I haven't updated this project in a number of years, now.
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.