DECbox - integrating BeagleBone, VT100 and SimH
Mounting the BeagleBone inside a VT100 terminal is very easy: The VT100 itself was designed to be a platform for many applications, and there is much room in it for additional backplanes and controller hardware.
You could pack 20 BeagleBones inside!
The VT100 has lots of +5V power, I lend a bit of it for the 'bone. The serial cable must nicely be folded and stripped to the VT100 logic board.
I simply put the BeagleBone into a plastic box and stuffed it into the empty space beside the single VT100 logic board (it needs no cooling). It looks a bit messy, don't show it your mother.
The cable for the serial UART on the BeagleBone was routed through a gap in the rear cover outside the VT100, bend backward and plugged into to regular 25pin male RS232 DSUB connector.
The VT100 is not damaged and can even be reused as a regular terminal within seconds: Just plug off the intern BeagleBone RS232 cable and you have a plain VT100 again.
So if the VT100 is switched on, the BeagleBone is powered too. The VT100 needs approx. 10 seconds to heat up and self test, and this is the time the BeagleBone needs to boot it's Linux.
VT100 as a server
The BeagleBone has more than one RS232 port. You can route three ports outside the VT100 case and connect other terminals to these ports.
So several users can run different machines in parallel on different terminals.
You can also route an Ethernet cable outside the VT100 and plug it in your local network switch. The BeagleBone needs a DHCP server to get an address.
Then in addition to the "real" terminals, you can also work on the BeagleBone over network sessions with "ssh".
Since we do not like to drill holes into the historical VT100 case, all cables come out of the case in quite a unprofessional way.
Finally we've build a strange mutant: a VT100 with LAN cable and serving other terminals too!
SimH on the BeagleBone
The simulation of historical DEC systems is done with multiple installations of the SimH simulator.
SimH is the de-facto standard for simulation of old DEC hardware. It is just a big C program and has been ported to many platforms, the source code is open.
Makefiles for Linux are provided, so the only thing you have to do is run SimH through a cross-compiler. The cross compiler runs on a x86 Linux (I used Ubuntu) and produces code for the ARM Linux on the BeagleBone. This process is not so easy ... explaining it would overflow these pages. Just to scare you: the path to the cross-gcc on my development machine is
SimH has support for TCP/IP, meaning, that network hardware for the historical machines can be emulated using the physical network controller of the BeagleBone. Under Linux this works without problems (in contrast to MS-Windows): Just install the "libpcap" libraries, and compile SimH with the "USE_NETWORK" option.
The effortless implementation of SimH on Linux platforms is one big reason to choose "embedded Linux" as host system for "embedded SimHs".
Setting up simulated machines
After compilation you have to build up configurations for the simulated machines. This involves creating a control file for SimH, which specifies the simulated hardware devices, and also providing disk and tape images, which have to be attached to the simulated mass storage controllers.
The simulated operating system is given as image of the simulated system disk. You can get disk images ...
- directly from the SimH web site, where many operation system disk are ready for download.
- from some enthusiast web sites on the web
- by dumping the disk content of a *real* historical computer to a SimH disk image file (with tools like VTServer or PDP11GUI).
- by installing the old operating systems on the SimH machine directly from installation tape images, also available from the sources above (so you learn most).
Copying all the stuff to the BeagleBone
Finally you have to copy some files to the BeagleBone file system: SimH executables ("pdp11", "vax", "pdp10" or the like), SimH control files, disk images, and maybe some glue shell scripts.
BeagleBone is a regular Linux node in the network. Files can easily be copied with "scp". Or you plug the micro SD card into a card reader and copy the files directly to the SD card partition.
Setting up the DECbox application
After power-on of the VT100 the BeagleBone should not show its normal "login: " prompt to the user.
Instead a special intro screen should be shown, followed by the emulation-selection menu and some help system.
So these things have to be done:
- On the UARTs, baudrate is slowed down to 9600 bauds (we're on a real VT100, not on some modern high-speed terminal emulation).
- Also the UARTs have to be configured for "auto-login", so automatically user "root" is logged in without prompting "login:".
Both is done by editing the system file "/lib/systemd/system/getty@.service"
- In the ".profile" of root, the "DECbox" application is automatically started for those tty ports which are attached to RS232 UARTs.
The UART based tty devices are "/dev/ttyO1" .. "/dev/ttyO5".
A menu application has to be setup to do the initial user selection. This is simple some shell code, the ASCII menu logic is made with the "dialog" tool, which is a package of the Angstrom distribution.