PDP-11/70 console panel
YAPPPP - Yet Another PDP-11 Panel Project Page
Tradition does not mean to look after the ash, but to keep the flame alive.
This page describes my work with a PDP-11/70 processor console panel in 2009. After some try and error this finally leads to BlinkenBone later.
The console panels of early PDP’s have always attracted people: Their clean minimalistic layouts colored in psychedelic purple colors presents (to my opinion) one of the best ‘70s industrial designs. Is it just me, or is there really a subtle connection to Pink Floyd’s music?
Though most of the old mainframes have been scrapped, many of their consoles survived. This is because they are the most personalized part of a computer and they are not too difficult to store over long times.
Everybody likes them, some play around with them. People connected them to webserver, or installed networked interfaces, or simply controlled them with massive parallel I/O cards.
I choose a different approach: Connect the PDP-11/70 panel over USB to a PC.
This has several advantages:
- The panel can easily be connected not just to MS-Windows boxes, but also to MAC OS or Linuxes.
- You can carry the panel and a notebook with you and present it everywhere.
- The implemention is cheap, and pretty straight forward. No microcontroller or programmable logic chip is involved, you need just a solder iron and an standard USB to parallel interface unit.
- Perhaps nobody has done it so far.
I divide this project into several phases:
Phase I “Physical”: Connect the panel to a PC with an USB interface
Phase II “Driver”: write test/demonstration software
Phase III “Applications”: integrate the panel into some more or less usefull application: PDP11GUI.
Phase IV “Simulation”: connect the panel to a complete machine simulation with SimH. I haven’t done this so far.
11/70 panel - physical structure
One challenge for the interface was the 11/70 panels pin count: There are 34 outputs for the switches and 51 inputs for the LEDs, distributed onto three 40 pin Berg connectors. And this is a small console, compared with this one (2100+ lamps, 185 switches).
Unfortunately, my pdp-11/70 panel is missing the white front bezel. Now watch me doing a “lamp test” for you:
Fine, no LEDs are broken at the moment (but one had to be replaced already).
To interface the 11/70 panel, I used an IOWarrior56 module from Code Mercenaries. This is a full USB speed device with 50 bidirectional input/output pins. The IOwarrior acts as an USB HID (human interface device) ... exactly right for the console panel.
The IOwarrior56 is the green board to the left. To multiply the I/O pins from 56 to 85 (= 34+51) pins, I built a bus structure with two 32 bit output registers and one 34 bit input register sharing the same IOwarrior pins. 34 pins are data lines, and 3 lines are output/input latch enable lines.
The input register consists of five 74LS244 drivers (U1-U5), the output registers are built from seven 74LS373 latches (U10-U16). I used DIL packages, mounted everything on a hole matrix board and did much soldering by hand. The design is pretty timeless and could have been built 30 years ago ...
Luckily DEC uses 40 pin Berg connectors and 40-wire flat ribbon cables for interconnection between panel and the KB11-C processor. These are exactly the 40-pin IDE cables used in older PCs.
Soldering took two days. Sorting the connections made me half crazy, until I labled all components and made a detailed netlist. I didn’t cared too much about pin/register bit assignments, decoding is done in software.
If I ever repeat this, I will make a printed circuit board.
11/70 panel - software driver
To control the panel with PC-based software, I’ve written classes in Codegear C++ and Delphi, which present the panel as a list of LED- and Switch-Objects.
The basic “pdp1170panel”-class has two descendents:
- “pdp1170panelPhysical” accesses a real PDP11/70 panel over USB.
I use the driver library of the IOWarrior56 module.
This class includes also glue logic to decode my hardware wiring to well-known LEDs and switches.
- “pdp1170panelFrame” accesses a photo-realistic simulation of the panel. You can click on switch-images with your mouse, this causes the same actions as flipping the switches on the real panel. Unlike to the real panel, LEDs can also be toggled ON and OFF by clicking onto them.
The interface is the same for the on-screen simulation and for the physical panel. So I can switch every application between a real console panel and its simulation.
On the photo, you see the real pdp-11/70 panel sitting before a monitor showing the simulation.
I’ve written a little test program, which just synchronizes simulation and real panel:
- If you flip a switch or rotate a knob on the real panel, it is updated in the simulation.
- If you click on a LED in the simulation, it is switched ON or OFF on the real panel.
You can even play with the simulation without having a physical panel connected. Check the resource page for a download of “pdp1170panel.exe”. The lamp test (white switch) works.