PDP-11 Projects Page

Digital Equipment Corp.

PDP-11 Page                                                                19-APR-19

 

Back in 1998 I recovered a PDP-11/34a from the University of

Pennsylvania (it belonged to a professor in the psychology

department to run experiments), S/N AG11840 built 19-AUG-77.

It was a nicely-equipped system -- 128kw of RAM, two RK05

removable disk drives, an RX01 floppy drive and an expansion

chassis with various cards, including some A/D cards, all in a

single 6' rack.

 

I restored and maintained it for a few years until other

projects needed the space, so I donated it to the Rhode Island

Computer Museum on December 12, 2001.

 

Since then, I have periodically returned to the DEC platform,

whether through SIMH, or through hardware. In 2016, I bought

a Heathkit H-11 computer. The H-11 was made available as a

partial kit (the DEC boards were assembled; other cards and

the enclosure were in kit form) and was based on the DEC LSI-11

(M7270) 16-bit CPU. It had a Heath-designed floppy controller and

ran a custom version of RT-11 so it wouldn't compete with the full-

price machine available from DEC. By comparison, a floppy-equipped

H-11 cost $4,000 but an equivalent PDP-11/03L maybe about $12,000.

 

The unit was in bad shape physically but it worked until the power

supply blew and took some cards with it (not the CPU). I had

equipped it with an Emulex UC07 SCSI card and a second SLU card

so I could run the TU58 dectape emulator. I repaired the power

supply but didn't trust the long-term reliability, so I hunted for

a replacement enclosure.

 

In the fall of 2018, I was able to buy a PDP-11/23 case (BA11-N)

with the 18-bit H9273-A backplane for a reasonable price.

Then I filled in with an M8045 MSV11 64k RAM board and an M8043

DLV11-J 4-port serial board. So my LSI-11 is back. For the console,

I use PDP11GUI, a great program with an assembler, memory dumper

and lots of other tools.

 

Continuing on my quest for parts, in January 2019, I picked up an

M7504 DEQNA Ethernet card, an M8186 KDF11 CPU (through a trade)

and an M8067 MSV11 256k memory board. So now I basically have an

11/23.

 

I have various projects in-process for my machine and a few notes

on those projects follow.

 

TU58 Emulation

Even though the TU58 can be emulated with a command line program

under Windows (like the TU58EM), I decided to also build a stand-

alone emulation of it based on the project from Bela Torok, here.

Various versions of the Arduino can be used for this, but the base

code needs a model with EEPROM storage and at least 2.5K of RAM.

You can modify the code to eliminate it, but I just found it

easier, initially, to work with the Leonardo. There's an error in

the code relating to initializing the second serial port. Bela

should be updating the code on his site, but I have also made

other minor enhancements (start-up screen, button input

thresholds), so here is a ZIP file containing my code. I use an

Arduino Leonardo with a Seeed Studio SD Card Shield.

 

Another related resource is the TU58FS program. I've used this

and the "oversized tape" feature to run the XXDP diagnostics on

my machine. This works because it patches the DD.SYS and DDX.SYS

drivers to allow for tapes greater than 256K. I have a local copy

of the "ready to go" version that contains everything you need.

 

SCSI Emulation

I used the SCSI2SD adapter from Inertial Computing to emulate four

SCSI hard drives. I believe it's original use was for the Amiga or

certain sound samplers, but it works just as well with the Emulex

UC07 Q-Bus adapter that I have. The version I have is the 5.0 version

which is a different shape than the newest version which is shaped

more like a hard drive. I have it configured for four RA81 (456MB)

drives but under RT-11, you're limited to 32MB sizes anyway. I had

to make a custom bracket for the port holes on the back of the BA11-N.

I used a DB25 slot bracket from a PC, cut to the proper size and

drilled for the holes on the BA11.

 

"Getting it Running How-To" and Things I Learned

Getting a PDP-11 running overall is a somewhat daunting task but

there's a lot of help available on the VCFED Forums and on

various mailing lists. For the purposes of this discussion I will

assume that the hardware is at least suspected to or known to be

working.

 

I started with a board inventory so I could download the related

manuals from Bitsavers. I also found that having copies of

MicroNotes #5 and the Field Guide (text version and online) handy.

MicroNotes identifies Q-Bus board compatibility by address space

size (Q18 and Q22, for 18-bit and 22-bit) and backplane. The Field

Guide, of course, is the canonical reference to DEC module numbers

and descriptions.

 

I keep the manuals handy to confirm board jumper settings and in

the case of certain modules, the bootstrapping code. For systems

without a bootstrap/terminator card (such as mine), this site is

handy. Here is a copy of the TU58 bootloader code I used. It's in

MACRO-11 format to be used with PDP11GUI.

 

The type of backplane in the system may impact which cards can

be used in which slots and which side. Facing the backplane, the

columns are lettered A-B-C-D (left to right). A single Q-Bus

(AB = "Q") backplane is easy, but a Q/Q or Q/CD poses additional

constraints and compatibility concerns. Always check the manual or

ask on-line if you're not sure. The H9273 is an 18-bit Q/CD

backplane. It can be modified to be 22-bit, bit I haven't done that

yet (it requires wire-wrapping four address lines across the

slots). MicroNotes #5 has a good description of this.

 

The order of the installation of the cards in the backplane is also

important since the relative interrupt priority is defined by the

positioning, and there can be no gap between boards (for signal

continuity on the interrupt lines). Usually, the CPU is first,

followed by memory and then the other cards. The board manuals

usually tell you in what order to install the cards. Mine are

CPU-memory-Ethernet-SLU-SCSI.

 

At the time I began work on this, I was still hunting for an Emulex

UC07 SCSI card (it turned out to be a relatively expensive but

worthwhile purchase). In the interim, I used the TU58 Emulator and

the first SLU port on the DLV11-J so that I could get XXDP

diagnostics running and then RT-11. The DLV11-J is limited to 9600

baud, so it's kind of slow, but very workable for general purpose

use.

 

I won't go into great detail on using TU58EM because the online info

is good, but I ran it from the command line on the Windows 7 laptop

I'm using for this. You need two serial ports, so I use the dual-

port USB adapter listed below, with Port A connected to the Console

SLU port and Port B to the first non-console port on the DLV11-J.

Once you use PDP11GUI to connect to the ODT on the CPU (the ODT is

a built-in monitor program that can be used to interact with the

CPU, examine memory, upload code, etc.), you can use the built-in

MACRO-11 assembler to assemble and deposit to memory the TU58

bootstrap code. If you watch the TU58 console window, you can

see the tape activity. For running XXDP diagnostics, it is probably

better to run the TU58FS "ready to go" version since it has the

complete XXDP 2.5 distribution, and it has easy-to-run batch files

that you just need to edit to enter your COM port and speed.

 

The PDP-11 Diagnostics Handbook is also handy to keep near because

it describes all of the XXDP diagnostics and how to run them. All

of my cards came "working" so I didn't run diagnostics.

 

The next big task for me was to get the SCSI storage system working

because the TU58 is slow. There are two pieces to this:

  • Configuring the SCSI2SD
  • Configuring the UC07

 

The SCSI2SD enables you to emulate up to 4 SCSI drives using a

microSD or SD card (depending on the version of the board). The

utility program has 5 tabs, one for "general settings" and one for

each emulated device:

  • In the General Settings, check the terminator, parity and

unit attention options, leaving everything else as the default.

  • In each Device tab, enable the SCSI target and then setup as

follows:

SCSI ID: I set these sequentially, 0-1-2-3.

Device Type: Hard Drive

Quirks MOde: None

Start Sector: 0 on the first. On tabs 2, 3, and 4, I selected

    "Auto" so that the starting sector self-populated.

Sector Size: 512

Device Size: 32MB. That should set the sector count to 65536

Vendor: DEC

Product ID: RA81 (this could be anything)

Revision: 4.81 (I made it match the version of SCSI2SD)

Serial No: Also could be anything but I made up ones based on

    the Maxtor XT2190 used in the RD54.

 

With the above, I have four, 32MB "volumes" (Logical Unit Numbers in

SCSI parlance) at starting absolute sectors of 0, 65536, 131072 and

196608 of the microSD card. These will eventually correspond to the

four DU drives I built, DU0: to DU3:. Once done, save the

configuration to the SCSI2SD and move to the UC07.

 

Configuring the UC07 wasn't very difficult, but it's easy to make

some mistakes, and you have to follow the setup script for each

LUN. I found that this walkthrough on the VCFED archive was very

good. The only thing I didn't do was to format the drives.

 

Next is to get RT-11 installed on the first volume of the SD card.

Again, turning to the VCFED archive, this thread walks through the

basic process but it uses different devices and SIMH. The TU58FS

"ready to go" version has a copy of RT-11 which you can boot from

and use to build RT-11 on the SD card. Alternatively, you may be

able to find an image online that you can "dd" to the SD card

directly (this is what I did to make an XXDP volume).

 

In some ways, the process isn't much different than any other

operating system install - format the drive, copy the files, and

make it bootable.

 

About one-third the way down the page is where the good stuff starts

(search for "RT-11FB V05.07"). Essentially you use the initialize

command to format the volume (you can leave out the "/badblocks"

parameter since the SD card will not have them). The "squeeze"

command will take a lot of time because it's copying and packing

the files from the install media. "Output" would be DU0: and the

source DD0: (the emulated TU58 volume).

 

The "copy/boot" command copies the correct system monitor and makes

the volume bootable. There are several choices based on the amount

of memory and the CPU, but With my system I used the "XM" monitor.

I did not do the second "squeeze" command.

 

Once that's completed, you can boot the newly-installed system by

entering "boot du0:" at the dot-prompt. If you get the RT-11 sign-

on message, then you're all set. You can use the initialize

command to format the other volumes (Du1: - DU3:) and create the

empty directory. The boot command without the "foreign" option

assumes that the volume is an RT-11 volume.

 

Now, if you decide to install XXDP to one of the volumes so as to

keep it handy, I haven't been able to successfully do it using the

above process. So, a friend of mine (JerryW) sent me an image that

I wrote directly to the SD card at the right offset. I can then

boot the diagnostics volume using "boot/foreign du3:". XXDP uses a

custom system and volume organization, which makes transferring

files between them somewhat difficult. The "foreign" switch causes

the bootstrap to be loaded from the boot block on the drive

regardless of the OS to be booted (i.e., RT-11 isn't assumed).

 

Getting Other Drivers Working

My system has 256K of memory so I can run the XM mapping monitor.

When running the XM monitor, RT-11 requires special versions of

the various device drivers. So, for the DD (DecTape II) device, the

driver would be DDX.SYS instead of DD.SYS. Unfortunately, the DDX

driver has been included or not included in various RT-11 versions.

In V5.7, it's not included but the files are included in order to

compile and install it.

 

The first time I tried this, I couldn't get it to work - I was

getting a "Conflicting SYSGEN Options" error. Again, Jerry to the

rescue. Basically you have to run "show config" and then edit

XM.MAC to make sure supported devices are included properly. He

did point out two specific variables to check ("*" is my comment

for this paragraph and isn't in the actual file):

 

<FILE: XM.MAC>

SB     = 0

MMG$T  = 1    *Needs to be "1" for the mapper

TIM$IT = 1    *Added; not used in dd.mac

ERL$G  = 0    *Added; enables error logging in dd.sys

<EOF>

 

To compile and link ddx.sys:

.mac xm+dd/obj:ddx

.lin ddx/nobitmap/exe:ddx.sys

 

Once you reboot and get back to the dot-prompt, run "show dev"

and confirm that the DD device is now "installed". The device still

isn't available until it's loaded using "load dd"; this can be

automatically loaded it at startup in the STRTXM.COM file (see

below).

 

KED Editor & VT100 Emulation

I was trying to edit a text file in RT-11 with the default EDIT

program and much like with the MS-DOS 'EDLIN' (or, EDLIN, much like

the RT-11 EDIT program), I found it very hard to use. RT-11 comes

with both KED and TECO as alternate editors, which can be set with

"SET EDIT KED" from the dot-prompt. KED is a screen-oriented editor

rather than a line editor, which to me is easier to use. Once I did

this, I discovered that maybe every VT100 emulation isn't 100%

VT100 capable -- or there is a configuration problem with my RT-11 --

because I can't get the numeric pad keys working properly.

 

The numeric pad on the VT100 has special editing keys and four

function keys, including the "Gold Key" (which is like a meta-key).

This has sent me on a quest to try to solve why. In the process,

I learned a few things about configuring RT-11.

 

First, there is a startup file run by the CLI that functions like

AUTOEXEC.BAT in MS-DOS. Depending on the version of RT-11, it may

be called "starts.com" or a variation based on the installed

monitor (so, for the XM monitor, "strtxm.com"). In STRTXM, you can

use various DCL commands to configure your system. The below

settings make RT-11 a bit more friendly to use.

 

I have my system configured to use a spare port on the DLV11-J

as a line printer device. Channel 0 is reserved for the TU58

Emulator, so I assigned the LP to Channel 1. Channel 2 is empty and

Channel 3 is the console port.

 

My STRTX looks Like this:

 

!don't echo to the screen and set type to "terminal"

SET TT QUIET

set TT scope,NOCRLF

!Define a port to use for a printer. Extra serial ports

!on the DLV11-J are perfect for this.

SET LS CSR=176510 VECTOR=310

SET LS NOFORM0

ASSIGN LS LP

ASSIGN LP LST

!load the logical disk and TU58 drivers

load LD

load DD

!set the default editor

set edit ked

!command lookback

set sl recall,ked,kmon

!set terminal configuration and clear screen

setup VT100,JUMP,DARK,CLEAR

!show the memory configuration

show memory

!Echo to the screen

set tt noquiet

R MSCPCK

 

 

KERMIT

Kermit is a very handy terminal and file transfer program

available from Columbia University's Web site here. I downloaded

the manual and getting it setup is actually pretty easy...you can

put the required port configuration for the XL device right in the

above configuration file.

 

Kermit presents itself as a command line utility with on-line help.

I have the second DLV11 port connected to a second serial port on

my laptop and have HyperTerminal connected to that port. It

provides a convenient way to transfer files into and out of the

PDP-11.

 

Ethernet

I also have a DEQNA Ethernet card installed in my system. When I

bought it, it didn't come with the AUI transceiver cable, so I

built one (see below). Unfortunately, none of the XXDP diagnostics

worked properly (long story, but they failed to proceed past a

certain point in the test), so there was no way for me to test the

card. Well, Jerry to the rescue (again...). He created another disk

image for me based on his system, and this image uses an earlier

version of RT-11, the single-job monitor, and (I think) the Ethernet

files from shop-pdp.net.

 

Once I booted this image, surprisingly everything worked! I was

able to FTP to a server I have in the shop. So, at least I know that

the AUI cable I made works :-)

 

I really haven't found many programs to use for it yet. I was

hoping that I could find a decent email program, and maybe even

browse the Internet. That's the next project...

 

 

Other Items

Serial USB converter. I found a dual-port serial USB cable on

Amazon called the "Gearmo 2 port Professional USB to serial

Adapter". It has the FTDI chip and runs under all operating systems.

Using this saves a USB port and gives you two DE9 connectors.

Coupled with an AT Modem DE9F-DB25M cable, you can connect your

console and TU58 to two ports on the DLV11J. Almost any USB-serial

adapter could work, but I stick to the FTDI-based ones because the

software seems to be most compatible with the various Windows

versions I use.

 

DEQNA 70-2286 Cable. My DEQNA card did not come with the AUI and

bracket assembly cable, so I had to make one. This document is a

mix of a document I found on-line and some additional notes from

me, including the wire colors for the DA15 joystick cable I used to

make the assembly. If I had the right raw cable in stock, I would

have soldered-up the connector myself, but the joystick cable

seems to have worked fine. I made the bracket out of a DE9/DB25

PC slot bracket and mounted the fuse holder in the DE9 spot.