Skip to content

What QUniLator is

QUniLator is a bridge between a DEC bus and a modern Linux environment. Its primary application is device emulation: it presents controllers, drives, memory and terminal lines to a real machine, over the real backplane, as cards that answer like the originals.

It runs on a BeagleBone Black carried by one of two cards.

Everything above the bus wires is shared: the same BeagleBone, the same software, the same web interface, the same SimH-compatible media files. Which is why there is one manual rather than two — see Choose your card if you are deciding which you need.

The card fitted into a backplane, the BeagleBone hovering in its cutout

Several device-emulator projects exist. QUniLator differs in a few deliberate ways:

  • It emulates device and controller together at the bus level, rather than a drive hanging off a genuine DEC controller card. Nothing between the machine and the emulation but the backplane.
  • It is configurable: arbitrary devices in parallel, up to a whole system.
  • A full Linux sits behind it, so the BeagleBone can run SimH, complex diagnostic software, or a network service alongside the emulation.
  • Emulated devices can drive real hardware — the BeagleBone is full of interfaces, and the card carries patch fields and a powered I²C bus for lamps-and-switches panels.
  • All programming is plain C/C++. No FPGA.
  • The hardware is simple enough to be a do-it-yourself kit: through-hole where it can be, hand-solderable, no fine-pitch parts.

The economics matter too. Bus controller cards that interface to any modern standard are rare and expensive — a UNIBUS SCSI or Ethernet card runs to four figures when one can be found at all.

Emulated devices presented to a PDP-11

Grouped by what the machine sees. This is a summary; the per-device reference, generated from the source, is still to come.

DiskRL11 with RL01/RL02 · RK11 with RK05 · MSCP (UDA50 and friends) · RS11/RF11 DECdisk · RX11 and RX211 with RX01/RX02 floppies
TapeTM11/TS11 · TMSCP
Memorya card’s worth of the BeagleBone’s DDR, at an address range you name
SerialDL11-W · DZV11 · DHV11
NetworkDELQA · DEUNA, bridged to the host LAN
BootstrapM9312 · MRV11-D · MXV11-B2
ClocksKW11-L line clock · KW11-P programmable clock
GraphicsVCB01 / QVSS framebuffer
OtherKE11 EAE · a “demo” device exposing the card’s own LEDs and switches · lamps-and-switches panels over I²C

The usual first question is “why not a Raspberry Pi?”. What this job needs is not CPU power or graphics but fast, jitter-free GPIOs, and that is the BeagleBone’s particular strength.

The Sitara AM335x carries two PRUs — Programmable Realtime Units — 200 MHz 32-bit RISC cores with their own GPIOs, built for bit-banged protocols. They have no pipeline and no cache, so an opcode always takes 5 ns. A square-wave loop on a PRU pin runs at 66 MHz.

Speed matters less than determinism. A Linux user process gets descheduled; signals it produces jitter, and inputs it samples lose edges. The PRUs run independently of Linux timing, so the bus protocol holds its timing regardless of what the ARM side is doing. The ARM runs Debian with the RT patch and talks to the PRUs through shared memory.

The BeagleBone Black

Against an “ARM + FPGA” design, the BeagleBone wins on the things this project cares about: it is a complete Linux platform with a community behind it, small enough for a Flip-Chip slot, needs no 100-pin fine-pitch parts on the PCB, and compiles its own software in minutes rather than synthesising a bitstream.

QUniLatorthe software, and this site
UniBonethe UNIBUS card
QBonethe QBUS card
QUniBonethe GitHub organisation, and the older combined name for the two cards

The glossary carries these and the other words this manual uses narrowly — device, machine, configuration, bundle.

The project is BSD-licensed — hardware and software both. See Credits and licence.