How-to's
Interpreting UNIBUS signals
- Details
- Written by: Administrator
- Category: How-to's
This is the sequel to the "UNIBUS signal adapter" article.
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
- Details
- Written by: Administrator
- Category: How-to's
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.
DECservers also have a Wikipedia entry.
Here we talk about a "DECserver 200/MC":
He looks like little MicroVAX in a BA23 case.
The backside is more interesting than the front. What you see:
- 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.
1. Setup
- Connect terminal at 9600 baud to Port J1 (console), use normal null modem cable.
- reset the DECserver: Press the S1 button and hold, power ON (clear to factory defaults)
- Verify, that the fans are rotating! A DECserver usually dies, because it's fans block and then the power supply burns up.
- Connect to your Ethernet: use an AUI with twisted pair connector. With a little luck you can buy an AUI on eBay for less then $10.
- The final setup could look like this:
6. Switch the DEC server ON.
You should on the console something like
Local -901- Initializing DECserver "08-00-2B-23-3A-7A" -- ROM BL20, H/W Rev D.A
Local -902- Waiting for image load
Local -912- Load failure, time
2. Allow the DECserver to boot from Ubuntu MOP server
The DECserver needs to load its firmware over MOP protocol. So you must install a MOP server and install the firmware file.
- Contrary to some Internet instructions, installation of DECnet is NOT necessary.
- DECserver and Ubuntu machine must be on the same subnet, no routing!
- Open the Synaptic Paket manager and install the paket "mopd".
Choose interface "eth0". - You need the firmware file. It's name is "PR0801ENG.SYS" (all uppercase!).
You can download it from ftp://ftp.update.uu.se/pub/pdp11/ds/ or contact me. - 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
$ sudo mkdir -p /srv/tftp/mop
$ cp PR0801ENG.SYS /srv/tftp/mop/PR0801ENG.SYS -
Start the mop daemon on your ethernet port.
Normally mopd is running after installation. "kill -9" it and start it again in the foreground and in debug mode:# mopd -d eth0
-
Power ON the DECserver. On the terminal you should see:
- Press ENTER, and enter an arbitrary username:
- The user interface is VMS-like and quite comfortable.
The prompt is "Local>", and HELP is your friend:
3. Setup LAT for Ubuntu
The LAT protocoll enables remote login over over the DECserver. Read more about it here.
- Install LAT: From Synaptic paket manager, install paket "latd".
- Controlling the LAT demon:
Start with
$ sudo latcp -s
and stop with
$ sudo latcp -h
Thats all!
4. Connect from Terminal over DECserver to Ubuntu host
The DECserver command to connect to a LAT enabled host is just "CONNECT servicename",
with servicename defaulting to hostname ... the name of your linux machine.
You can redefine the LAT servicename, by deleting it and adding a new service:
$ sudo latcp -D -a linux1
$ sudo latcp -A -a LINUX1 -i "LAT login service on host linux1"
(Here old and name are both "linux1". For other options, see "man latcp".)
Now here I log on my Ubuntu host "linux1" into my account "joerg":
Now you can do everything you would do in a normal terminal window:
Compare the emulation ...
... with the real thing:
Subcategories
DECnet
How to link Linuxes and VAXes together.
DEC hardware errors, and how to repair them
This category contains a list of all defective components in DEC hardware, which could be repaired successfully by somebody.
While this list grows, it will identifiy components with high error probability.
Checking those components first will greatly speed-up any repair process.
How this LIST IS organized
- ONE article per per module.
- Article title contains module name and module number, as in the "UNIBUS field guide"
- Example: "RL11 / 7062 UNIBUS RL01/RL02"
- Each component error on the module gets a different "Heading 4" entry.
For component error entries, the following fields should be used:
- "Error": what was wrong ("E123 74S00 very hot")
- "Detection": how did you detect this error? ("PCB was very dark, noticed stench")
- "Repair": how you repaired it ("added bigger heat sink")
- "Explanation": some theory, if necessary
- "Documentation": title and number of the DEC documents with relevant information
- "Date": when did you repaired it
- "Contact": who did it? ("Jörg Hoppe")
Interfacing with a PDP-11/05
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.
Getting RSX11M+ running on SIMH
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!
Full log files of the creation process are given as attachements.
Good work, Mark!
Faster baudrates for DL11-W
The DL11-W card is a general purpose serial interface for UNIBUS-PDP-11. It was introduced with the PDP-11/34. Since the card also contains a real time clock, it is often called "SLU/RTC".
The best documentation is on pdp-11.nl. (Go "Peripherals/comm/interfaces/DL11-W")
Here I show how you can speed up the card from 9600 baud to 19200 or 38400 ... with part for less than $5.
Using PDP-11 diagnostics
DEC made diagnostic programs for every hardware they build.
These were scattered over the whole net, but a approach was made to gather them in a single database.
Normally you use the diagnostics as a GO/NO-GO test to find defective components, which you replace with good ones then.
Repairing, on the other hand, means mostly to find defective ICs on the circuit boards by means of a logic analyzer.
This article show how a defective 11/34 CPU is analysed with diagnostics, down to the point were a logic analyzer is triggered on a single erratic assembler statement.