How-to's

Interpreting UNIBUS signals

I connected my little Intronix USB logic analyzer to the UNIBUS in my defective PDP-11/05. He has 32 signals lines and 500MHz resolution.

Some basics

The UNIBUS has an asynchronous protocol, I'm skipping most of it's features here.

Before each "data transfer" bus cycle an "piority arbitration" is performed.

Transmission is always between a "master" (mostly the processor) and a "slave" (a memory card or an I/O device).

For basic read/write, only these signals are used:

ADDRESS: there are 18 address lines,

DATA: there are 16 DATA lines

CONTROL: lines C1 and C0 identify the bus cycle type. There are:

C1

C0

Cycle

Info

0

0

DATI

read word

0

1

DATIP

read word, next instruction will write to same address (core memory had a destructive read. If the data is written back by the processor the restore cycle can be skipped).

1

0

DATO

write word

1

1

DATOB

write byte

MSYN: Master Sync

SSYN: Slave Sync

All lines mentioned here are low-active. This means, an "active" (or "asserted") state of a signal is electrically encoded as a 0 Volt level.

But here in the logic anayzer an active line is shown as "1".

UNIBUS read cycle

Here is a shot of a read cycle:

Address 0x006e is read, the result is 0x8401. The sequence is:

The master (the CPU) sets C1,C0 to DATI, and sets the ADDRESS lines. Then he asserts MSYN asserted (Cursor A).

All devices on the bus evaluate ADDRESS. The selected slave device (memory or I/O card) puts DATA onto the bus. Then it asserts SSYN.

The master reads DATA. Then he clears MSYN. (Cursor B).

The slaves notices the master is reads, removes DATA from the bus and cleares SSYN.

UNIBUS write cycle

Here is a write:

Valu 0x8000 is written to address 0x00d4. The sequence is

The master (the CPU) sets C1,C0 to DATO and puts ADDRESS and DATA onto the bus. Then he asserts MSYN (Cursor A).

All slave devices (memory cards and I/O cards) decode ADDRESS. The selected slave reads in DATA and processes them. Then he asserts SSYN.

The master removes DATA from the bus and cleares MSYN (Cursor B).

The slave device notices bus cycle is over and clears SSYN.

After each transition of MSYN or SSYN delays of 75ns and 150 ns defined. This guarantees that line level progagate along the UNIBUS lines to all attached devices. A single UNIBUS may cross many racks, with long connection cables in between).

Connecting a DECserver to modern Linux

Whats a DECserver?

A DECserver is a terminal server, it allows to connect remote terminals to a host over LAN network. Normally every terminals is connected over RS232 connection to a port on the host computer. But this direct connection style needs one cable per terminal, and limits the distance between terminal and host.

A terminal server acts like a relais: terminals are connected to a local terminal server, the data traffic between terminals and host is routed over LAN.

You can connect 8 terminals over serial ports, there are standard 25 pin DSUB males.

For connection to the LAN it has an AUI port, in which you plug an Ethernet tranceiver.

The big red square button is for total reset: Press it while you power on, and the DECserver forgets all his settings. After that, the baudrate on al ports is 9600 baud.

There is no power switch! Just plug it into line power ... DECservers never get switched off.

The protocol used between DECserver and the host is LAT - "Local Area transport". This DEC protocoll supported by PDP-11, VAX and Alpha operating systems, and also on many other platform. Modern Linuxes still support it.

And there's a 2nd protocol involved: MOP - DEC's Maintenance Operation Protocol. The DECserver has no static onboard firmware, it boots over network. So in the same local network there has to be a MOP server, which will allow the DECserver to load its firmware.

Today DECservers are almost obsolete, since we live mostly in a TCP/IP world, and if we want to connect a physical text terminal to a remote host, we'd rather use a Telnet-compatible terminal server instead of a LAT server.

But at least for one application a DECserver is fine: to connect physical terminal to a simulated VAX the way DEC intended. Maybe I try this later, for now I show how to connect a terminal to an modern Ubuntu.

Connecting a VT220 to Ubuntu

When we use our Linux, we sit the most time before an terminal window. With an DECserver, you can use an real terminal instead of a simulation!

There are lots of instructions on the web on how to connect a DECserver to Linux. I couldn't resist to mash them up into one more page about it: So here is a walk-though on how to connect an old VT220 to Linux ... I used a Ubuntu 10.4 LTS.

Install the firmware file at the right place. The MOP daemon "mopd" has a directory in wich all files must be placed. Call "man mopd" to read about it. For Ubuntu 10, the directory is "/srv/tftp/mop". So do

This article describes how to interface a PDP-11/05 over serial line to a modern PC.

While this is normally the easiest thing of the world on a later PDP-11 (connect PDP-11 and PC with nullmodem cable, choose right baudrate, power ON), on the '05 it took me many (hobbyist-) weeks to get it right.

This is Mark Matlock's story about installing RSX11M+ on SimH from zero. Always beeing addicted to RSX11, he finally made a dream come true: Seeing the RSX11 idle light pattern on a real PDP-11 console again after 20 years!