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 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:
unit attention options, leaving everything else as the default.
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.