LSIbox - Technical details
Here are some infos about how I build the LSIbox in early 2017. Not very important to you, but nice memories for me!
Outside design and main case
I already had a single PDP-11/03 front panel (in fact, using this for something was one motivation).
The LSIbox case itself should look as "11/03" like as possible.
Important features were: plain white surface, round edges, as small as possible.
Best was a BOPLA EUROMAS M 244, grey polycarbonate, LxBxH = 34x15x10 cm (bought from conrad.de in 2016, item 531952) .
I used this color for the case:
Important was a coarse surface finish, as the original BOPLA case is totally smooth. Spray with "Terracotta" effect looks much more like the PDP-11 steel case surface (bought at German GLOBUS hardware store).
It took a while until all the stuff fit into the LSIbox case:
From the outside, the two major components are the LSIbox case and the LSI-11 backplane with card cage, both connected with various wires.
Inside the box, we have a Power Supply, the BeagleBoneBlack, plugged onto a BlinkenCape, a base board with some minor parts, the front panel, and all wire routing
These BBB resources are used:
- HDMI, USB (for wireless keyboard&mouse), Ethernet
- 4x UARTs
- 8 GPIOs
Luckily the BlinkenCape (made for BlinkenBone project) could be used with almost no changes.
The BBB has an internal eMMC (on-chip SDcard), which eats up valuable GPIO and UART pins. Soft disable did not work, I had to cut it off:
Line Time Clock
DEC power supplies provide a 50Hz signal for the LTC (Line Time Clock), a PC power supply doesn't. In LSIbox it is generated by an ATmega88 and a quartz-base.
Using an own processor just for a 50Hz signal is quite an overkill, but I wanted some reserve logic on board for later expansions ... which never will come.
The LTC signal can be switched ON and OFF by a GPIO signal, as some PDP-11 front panels have a switch for this.
The BeagleBone exposes dozens of I/O signals, but many are used for the HDMI graphic card and the 4 UARTs. GPIOs (General Purpose I/O) digital signals were used to control the front panel and the H9270 backplane, enable the LTC signal, and switch the null-modem relays.
GPIO under Linux works by accessing specialized places in the virtual /sys file system at /sys/class/gpio.
A pin is actived by "$ pinnr >export", then a subdirectory <pinnr> appears.
The pin direction is set by "echo in >gpionr/direction".
the pin value itself can be set like "echo 1 >gpionr/value".
and read out is "echo gpion/value".
BBB GPIOs are 3.3V level and are amplified by an 7407 open collector TTL driver chip.
User interface to all special functions is through the C program "lsictrl" with rich commandline interface:
lsictrl - control LSI11 in LSIbox assembly
version: Mar 23 2017 12:05:07
Command line summary:lsictrl --help --halt --run --restart --ltc <onoff> --led <onoff> --tty1 --tty2
--local <baudrate> <format> --extern <baudrate> <format> --status
--depositlisting <filename> --depositptap <filename>
--go [<start_addr>] --gocomitted [<start_addr>]
-? | --help
-h | --halt
Activate BHALT, like LSI panel HALT switch DOWN
-r | --run
Deactivate BHALT, like LSI panel HALT switch UP
Note: to use 'halt' and 'run', HALT switch must be UP!
-rst | --restart
Pulse BDCOK L, like PANEL RESTART toggle
-ltc | --ltc <onoff>
Line Time Clock: Activate/Deactivate 50Hz on BEVENT.
Arg can be "0", "1", "on", or "off"
Simple example: -ltc 1
Generate 50Hz on BEVENT
-led | --led <onoff>
Switch spare LED on panel.
Arg can be "0", "1", "on", or "off"
Simple example: -led ON
Let the LED shine
-1 | --tty1
Select /dev/ttyO1 for baudrate, format and connection commands
-2 | --tty2
Select /dev/ttyO2 for baudrate, format and connection commands
-l | --local <baudrate> <format>
Connect tty to a LSI SLU.
-1 --local: /dev/ttyO1 plugged onto LSI SLU A.
-2 --local: /dev/ttyO2 plugged onto LSI SLU B.
RS232 traffic from/to SLU A available on /dev/ttyOx
D-SUB9 ports still provide TxD signals
Simple example: -l 2400 7e1
connect, set tty to DEC LSI comm params
-e | --extern <baudrate> <format>
Disconnect tty from a LSI SLU; tty and SLU on D-SUB9 ports.
-1 --extern: /dev/ttyO1 and LSI SLU A on D-SUB9 ports.
-2 --extern: /dev/ttyO2 and LSI SLU B " " ".
Simple example: -e 115200 8n1
disconnect, set tty for Debian communication
-s | --status
Get status of all signals.
-dl | --depositlisting <filename>
Parse a MACRO-11 listing, HALT the LSI-11 and deposit into memory.
Set ttyO1/2 for connection with -1 or -2 --local before -dl!
Simple example: -dl hello.lst 1
load memory from hello.lst,
use /dev/ttyO1 for connection to ODT console
-dp | --depositptap <filename>
Like "depositlisting", but reads a Standard Absolute Papertape Image file.
-go | --go [<start_addr>]
enter ODT, enable RUN, and issue a "<start_addr>G" to start program execution.
<start_addr> can be omitted, if loaded by previous --depositptap
Simple example: -go 1000
Start program execution at address 1000 (octal)
-gc | --gocomitted [<start_addr>]
Same as "go", but the final "G" is not sent.
Typical used if a terminal emulation is started next:
User types the "G" to start and no output is lost
Simple example: -gc
Start program execution at address set by papertape file (if any)
Option names are case insensitive.
As you can see, "lsictrl" can also load code from DEC paper tape images or MACRO-11 listings, and DEPOSIT it over serial console line into the ODT monitor.
Power supply adventures
The LSI-11 needs much 5V, some 12V, and has connectors for -12V and +5V memory battery power.
All these are delivered by modern PC power supplies.
When drawing 15 amps on +5V, there was a voltage drop of several 100mV over the original power wires and the ATX plug, reaching the limit of 4.5V on the PDP-11 TTL ICs. So the power supply was opened and a short fat copper cable was soldered directly from power supply PCB to H9270 backplane screw connectors.
The green-wired "Power Enable" signal is connected to the LSI-11 panel's "Aux ON/OFF" switch, as in the original DEC cases.
Smallest PC power supplies are those in "ITX" form factor. Choosing the right ITX power supply was surprisingly difficult.
First I choose a chinese "DeLUX" for 30€, which promised me 5V at 20A.
As it came, it was defective: 5V breaking away even at 3A power draw. A replacement was working, but could deliver only 9A instead of 20A.
The data sticker on the case was apparently just another "chinese fairy tale".
The 3rd PS was a Fortron FSP250 for 65€ ... this finally works as designed.
Bottom line: do not try to save money on the power supply!
A running PDP-11 card cage needs cooling, air flow must be forced between the QBUS cards. Its not because PDP-11 cards will crash immediately on over temperature, we absolutely have to slow further aging!
The need for a fan could have been a show-stopper: How to add it while keeping the clean white case style?
Solution was a separate fan tower in similar case as the LSIbox itself.
Air is not just flowing out of case openings, but is focused by bunches of little blow tubes. These tubes are very effective: it can blow off a pocket lighter two feet away! This way the fan unit can stand well separated from the LSIbox, and air is still reaching the right places.
The square base houses a high-volume 12cm fan, powered by an external 12V power supply and a variable LM338 regulator. The fan can move 180m³/h and is a bit too noisy at full power.
The case is a Spelsberg 130x130x99 mm, the air tower is a piece of pipe for house ventilation, and the blow tubes are chemical test tubes with bottom cut off.
The fan tower looks simple, but was amazingly difficult to build: what you see is the 3rd version, with lots of different plastic cases, fans and hot glue rods wasted. I should have bought a 3D printer just for this project, but dimensions are too large for cheap ones.
Fun has many faces!