Skip to main content

Building an Altair-Duino 8800 Replica

How the hell did I end up with an Altair replica

The first computer I ever used was a TI-99/4A.  I was probably 12 or 13; my dad brought it home one day because he thought he needed to be able to do word processing.  I'm guessing he didn't do his homework, because that computer wasn't really a platform for such work.

It ended up unused in a spare bedroom attached to an old TV for a while before I was allowed to play with it.  Like all computers of that time, it came with printed manuals which I read and and used to teach myself BASIC and computer concepts in general.  I hooked up an old tape recorder to store the programs that I hand-typed in from magazines.  We didn't have any computer classes in school at that time - it was all what you could glean from reading code and experimenting.

One day it disappeared.  He decided it wasn't being used and sold it.

By then, around 1983 or so, I had spent so much time reading computer and electronics magazines and books that I knew I wanted another computer.  The MITS Altair 8800 and IMSAI 8080 were machines that I had read a lot about, but never had the opportunity to touch.  I wanted one, even though they were older and way out of my price range.  In the end, I saved my paperboy money and bought a TRS-80.

(Spoiler - I got better at BASIC, then learned 6809 assembly then got an early PC clone and learned C, then ended up in a successful career - all thanks to that first computer in the house.)

Then one day a year or two ago, I saw something online about the Altair-Duino kit on Tindie.  I saw two versions - the Pro that was a faithful recreation in terms of size, and an Experimenter that was smaller, but more importantly, looked like something I could really dig in to.  

Building the kit

I ordered the Experimenter version from Adwater & Stir's Tindie shop, opting to add the expansion bus kit.  It arrived just a few days later.  It was very nicely packaged and looked quite professional with a logo branded box sized perfectly for the contents.  The parts were pre-packaged in numbered bags, the printed instructions bound with a plastic loom, and an addendum sheet:

Everything nicely packed into the box (I removed the packing peanuts)Professional looking box!

Following the instructions, I started soldering parts to the main board.  With all through-hole components, it's a pretty easy build.  That first session, I spent about an hour and a half, and by that time had the switches, LEDs, headers for the Arduino, and other components done:

Switches installedFront panel installed to hold the LEDs in place

The instructions call for installation of the front panel to place the LEDs.  Once installed, I left the panel assembled to the board; I was concerned that some of the LEDs may get bent out of position. 

Just before calling it a day, I put all of the unassembled parts back into the box.  That's when I noticed I was missing the plug-in power supply and extension USB cable - not sure how I missed that before; probably just my excitement to get started.  I wrote an email to Chris from Adwater on Saturday afternoon.  He had the parts in the mail and I got them right away.  

Day 2 of assembly

I put off further work until I received the missing parts (just a couple of days).  I took everything out of the box and prepped for the rest of the assembly.  Of course, setting the empty box on the floor is an invitation for supervision:


The Due version of the Altair-Duino can have up to 5 serial ports: the two USB serial ports from the Arduino itself, one RS-232 serial via a DE-9 connector on the back (my brain still always says DB-9), and one emulated VT100 terminal (with a VGA and USB keyboard connection).  The last serial port is available on some unconnected Arduino pins used to drive the TX and RX LEDs.  To use that fifth port, it's necessary to solder wires directly to the SMD LEDs.  I did this before installing the Arduino:


Next was the power/audio/serial board and the VT100 board.  They went together with no problems:

Those two boards get physically mounted to the rear acrylic cover:


Before putting the cover on, I went a bit off-script.  There is place on the board for and "ESP-01s"; a WiFi board providing a wireless Telnet console connection.  I have plans to make my own wireless adapter, perhaps with more features than just a telnet server.

The typical way to use the EPS-01s is to disable either the RS-232 or VT100 emulation, and use that serial port.  I wanted to keep both of those capabilities, hence the connections to the fifth (TX/RX) serial port.  I installed headers for the jumpers and ESP connection.  The plan was to use Dupont style wires to extend the connection out of the case.  That didn't work because of a mechanical interference when the back cover was installed. I ended up soldering wires to the header pins:


With that finished, the front and rear panels were assembled into the case.  The instructions note that it could be difficult to get the header pins of the rear aligned with the socket on the back of the main board.  Happily, I didn't have any issues with that - it just went together with no problem.

I am really impressed with the case - solid 5mm aluminum!  Looking at the photos before ordering, I was thinking the final product would be lightweight - but it's pleasantly solid and weighty.

After that, I went right into the assembly of the expansion bus and register LED card.  They are pretty simple and went together with no issues  

First power up and testing

The kit comes with an SD card preloaded with base configs and disk images.  The system can emulate several disk units (different types of floppy and hard drives).  The first test was to select the configuration for the RS-232 interface with floppy images of CP/M loaded.  A USB to RS-232 adapter was plugged into the Altair's DB-9 port and the USB into a computer.  The switches were set to select the ROM disk boot loader and CP/M started right up!  From there, I loaded up the classic Star Trek BASIC game:


Next up was the VT100 emulator.  My monitor has a VGA input, so it was just a matter of digging through boxes of cables to find a VGA cable to connect to the two together.  I saw some comments on the Google group for the Altair-Duino about troubles getting some USB keyboards to work, but the first one I plugged in worked.

Powered it up with switches set for the VT100 config and it came right up again:


I noticed the text was shifted just a bit left, but didn't take any time to try to adjust my monitor for it.  From there, I booted CP/M again, started BASIC, and wrote what is probably the 2-line program every BASIC programmer has written: 


😀

I did a quick test of the expansion board - the LEDs responded as expected.  The last test was the fifth serial port (TX/RX pins).  I connected my Bus Pirate 6 to the pins and set up UART transparent bridge mode and found that interface worked just as well as the RS-232 and VT100.  I spent the next couple of days exploring the disk images and playing around.  A bit of Zork, a bit of BASIC - good times!

What's next?

There are a few things I want to do next:

That fifth serial port

I plan on using an EPS32-S3 dev board to make a WiFi - serial bridge.  Like the ESP-01s, the bridge will present a Telnet server to the the wireless network, and bridge that to the logic level serial.  A second telnet server on another port will be used to set configuration and options on the bridge.  A UDP server can be hit to get diagnostic and logging information out.  

Finally, and more complicated, I want to have another mode to the bridge: if the telnet server is not active, allow the serial side to access a telnet client on the bridge to connect to foreign hosts.  To make this work, one of the other serial ports of the Altair would have to be primary and another piece of Altair software accessing the bridge serial port.

The expansion bus

There are a few existing expansion bus cards - floppy controller, parallel interface, I2C/SPI, etc.  I plan on making a prototyping board; something to speed up development of other expansion bus cards.  The card would have the "glue" hardware to handle bus addressing and data control, then have a proto area to experiment with other hardware.



Comments

Popular posts from this blog

Successful Fault Injection (glitching) with the Bus Pirate

Introduction In this post, I'll discuss using power fault injection (glitching) to bypass UART password authentication in an application running on a simple Arduino dev board using the Bus Pirate.  (Spoiler - it works!) The Bus Pirate  is an open source hardware/firmware debugging and test tool that is capable of many, many things useful to an embedded engineer and/or hacker.  In this case, we'll be using the UART functionality to communicate with and time, generate, and inject a power fault into our target (an Arduino Uno). Background For a recent project, I was connected to a consumer IoT device's UART port and found that I could break into the U-Boot bootloader at which time I prompted to enter a password.  I noticed that once the password prompt mode was entered, it would allow infinite retries of password until the correct password was entered (not a good idea from a product security standpoint).  I later pulled the entire firmware from the flash of the dev...

Bus Pirate 5!

I've been a happy user of the Bus Pirate for several years now - it's perfect for probing circuits to get at TTL level UARTs, sniffing SPI and I2C, generic JTAG, and other shenanigans.  From a hardware/firmware developer use case, it's great to be able to sniff bus traffic during debug.  From a red team standpoint, I've used it to extract and modify the contents of serial EEPROMs and serial flash chips - good clean fun :) I noticed that there's a new version of the hardware finally available, so of course I immediately ordered one.  It arrived this morning and I spent a couple of hours playing with it. Ordering and Shipping It can be ordered from Dirty PCBs  (link at end of blog).  I already had a Dirty PCB account from some projects a few years back - they do a pretty good job of cheaply producing PCBs if you don't mind waiting a bit to get them.  Ordering was straight forward; the only thing I noted was that it would be shipped after February 19th due to ...

I'll be speaking at CypherCon!

 Just a short note here - I'll be speaking at CypherCon in early April.  My topic is about hacking a cheap IP camera, and what the vendor could have done to make it less hackable. Hope to see you there!