Sunday, October 2, 2022

The quest for the perfect VT100 terminal for Retrocomputing CP/M Style

Altair Simulator running CP/M
About two months ago, I assembled my own scratch-build version of the Arduino-Altair Simulator project.   This project replicates the Altair computer, complete with CP/M.

My fabrication skills are somewhat primitive, with the bulk of the build being LEDs and switches attached to a piece of sheet metal, then covered with a laminated printout of the original Altair front panel.  

(Thank you Staples print department!)  

For $270+shipping, you can purchase a very authentic looking version of the same system complete with laser-cut plexiglass case.

The stability of my $125 sheet metal, home-brew version, complete with over 150 plug-in jumper wire connections is a testament to the great design of the project by David Hansel. I've left the unit running CP/M and basic for days on end without a single hiccup.

36 2N222s handing the LEDs

 

In keeping with the spirit of the original Altair computer, instead of using LED driver chips, I created an LED driver board using 36 transistor circuits, as the Arduino Due board is unable to provide the current required by all of the LEDs on the front panel.

The end result of my month long assembly adventure is an Altair that behaves like the original in many ways running in either 8008 or Z80 modes.  It's biggest improvement over the real thing is the ability to store an entire CP/M disk library in a SD card with plenty of room to spare.

CP/M 2.2 with Word Star, Super Calc, and most importantly Microsoft BASIC ready to do my bidding, it was time to read that leaflet in the mailbox on ZORK then jump into some old-school Startrek.

The quest for the perfect VT100 terminal begins:

With the home-brew Altair chugging away happily, it was time to turn my attention to creating a stand alone terminal for it so I could quit using putty from my PC.

Geoff Graham's ASCII Terminal

That lovely kit from adwaterandstir.com comes with a version of Geoff Graham's ASCII terminal built in.  This is a PIC32 solution which provides a reasonable VT100 emulation, outputting TV or VGA in red, blue, or green (color selected by jumper).  

PROs: This solution provides some very nice extended VT100 graphics abilities. (more on this later)

CONs: You have to pick a single color to work with and the font isn't exactly easy on the eyes.   That being said, the project is easy to replicate with schematics, and source code freely available.  

Marco Maccaferri's VT100 Terminal
Alternatively, Marco Maccaferri has created a Parallax Propeller VT100 terminal for the RC2014 project which provides easy to read VGA output in 16 colors.  At first glance this terminal looks complicated with all of the pins connecting to the RC2014 board.  In truth it's a simple circuit requiring only four resistors for the USB circuit, and seven resistors for the VGA circuit.  If you wanted to roll you own easily, you could purchase a Protoboard from Parallax, a VGA connector and dig out a USB connector for the keyboard from your junkbox and you are in business.  Once again the schematics, and source code are freely available.  

PROs: This solution are a VT100 terminal which is easy to read, and looks great when surfing ANSI BBS systems from your CP/M box.  The 

CONs: It's very much limited to the VT100 standard.  Outside of the ANSI color characters, graphics are off the table.

Why not have your cake and eat it too?

16 ANSI compatible colors!
Adventuring where no one has gone before and trying to remember how to get the Bablefish into my ear, the Maccaferri's Propeller based VT100 terminal really shines.   I cut my teeth decades ago in MS-DOS and even booting into CP/M, this terminal will makes me feel right at home.

I know.  In the 70's and early 80's, CP/M terminals were usually only GREEN or AMBER.

The VT100 emulation is spot-on even with the more picky applications like Word Star displaying perfectly.

With a little ROGUE-VT under my belt, it was time to turn my attention to some old-school Microsoft BASIC programming.

 

Geoff Graham's ASCII terminal while being single color like those early terminals of the 70's provides an interesting twist:

Archimedes spiral?
It has a handful of special <ESC>Z commands added to the VT100 emulation which permit LINES, CIRCLES, and BOXES to by plotted on the screen.   In addition, if you upgrade the board with a firmware from David Hansel, the USB port on the original design is capable of handling a USB keyboard.   Push the firmware even further with another firmware update from John Galt, you add even more functionality to it's <ESC>Z commands with a PLOT command as well as several erase commands.

At the end of the day, for me me the answer was, 

"Why not have both?"

A Maurer rose
My home-brew Altair has TTL RX/TX lines running to my Propeller terminal with a 14" Dell VGA monitor rendering those lines of Vogon Poetry from Hitchhiker's Guide.  I've split off an additional TX line into the Geoff Graham solution connected to a small 7" VGA monitor I bought off Aliexpress a while back.  This monitor sits happily above the project itself and provides a second-screen solution happy rendering old fashion line graphics from Microsoft BASIC programs

 

At the end of the day, my multi-monitor Altair Simulator has all the switches, blinky lights, and feel of the original Altair, but all the comforts of home.