I was presented an ADM-3A by a friend of mine. Cool device, and even cooler thought in my head. At my local hackerspace we have a Teletype ASR-35 that can play Zork.
I wanted something more.
I knew that the ADM-3A uses RS-232 or Current Loop. As a result, I had a fair chance of getting it to work out o the box with my current hardware. And thus, my trials of getting various embedded machinery to interface with this thing began.
My first attempt was with the Technologic Systems TS-7200. I figured the easiest installation would be NetBSD — I’d seen it do this before.
Little did i know that NetBSD on the TS-7200 isn’t really quite ready for the other 2 UARTs on the device, and its only really useful if you have a second PC-104 UART. Damn. If anyone has a means/ways to do this more efficiably, talk to me: I want to know.
I then gave Debian a shot. Kernel 3.2 works great on this thing, but I didn’t quite want to sacrifice a laptop to this yet. I’ll get to that later.
Third attempt ended up being my current solution: a USB serial adapter on a windows laptop, forwarding the serial device to Debian/KFreeBSD in VMWare. Yes its convoluted, but I’m not quite yet ready to add anything more quite yet.
Currently, it has a hostname (dogfish), an SSH daemon running on it, and a getty running at 19200bps.
The bigger challenge in my opinion was getting the serial right. What you see here is two RS-232 IDC extender cables. Both ends have a male and a female side on them. Let’s get a little primer on RS-232 though.
RS-232 has two ends: a DCE and a DTE, the Data Communications Device and the Data Terminal Device. Most PCs are DTEs, expecting a DCE (modem) on the other side. Because of this, there are a few things that get in the way: You can’t just hook up a DB9 M-M cable to two PCs and expect them to talk, because the transmit and recieve lines are conflicting (that is, the transmit lines are the same, not crossed).
In our case, however, this is moot: The ADM-3A in local mode assumes the other end is a DTE as well. Awesome, we don’t need to worry about this.
But there’s that nagging problem of how the ADM-3A has a Db25 connector on the back, and I only have a DB9. Out of my shared stash of serial stuff comes the HP 5181-6642. It’s a DB9 to DB25 adapter, described in Agilent documentation pretty cleanly: It translates from DB9 to DB25 control signals.
The final bit of this puzzle was to be able to debug the serial signals. In this case, a simple RS-232 bus sniffer was a perfect item for my needs. this is a really, honestly low tech device. There is no protocol decoding, just “is it high” or “is it low” at any one given time.
The terminal itself has a few gotchas. One is that it has a local echo mode, called Half Duplex mode. Why Half Duplex, I don’t know.
The other gotcha is that in 8-bit data mode, it will force the LSB to be high or low depending on what the BIT 8 switch is set to.
Theoretically, the bell is disabled at anything over 2400 baud, which would mean that the 70-character warning bell would never go off. It goes off at 75 characters, and I can’t find the “SETUP” key the manual refers to anywhere.
But, I can log in with it! I can play Zork! I can edit files with vi!
(Oh, a little bit of fun with vi: I originally thought vim wouldn’t work right. It wouldn’t work right in PuTTY, spitting out random crap while I was working away from my desk. In all reality, it worked fine, but I did learn how to run ex from 1985 on a modern instance of BSD.