XXDP Diagnostics

Knowing I was able to run code on the PDP-11 without any storage devices, I got to thinking if it would be possible to boot up XXDP from a virtual tape drive in order to run some diagnostics. Being unfamiliar with the XXDP system itself, I first tried out a couple of disk images (available here External link) on the SIMH External link PDP-11 emulator.

Originally I thought I'd use SIMH to create a tape image to use with VTServer, but this was not an option as VTServer is made for running stand-alone programs, not full operating systems. Although it is possible to create stand-alone XXDP programs, this would involve a lot of extra work as each diagnostic program would have to de individually built. It's also handy to have the actual XXDP monitor running to tie things together.

In any case, the XXDP disk images would not be of any use until the RL02s were working, so I'd need another way to boot the system. A web search for "XXDP tape image" turned up the XXDP Mini User Guide External link which explained how a PC could be used to emulate a TU58 tape drive. This is extremely useful as the TU58 requires only a serial port on the host computer and can therefore be emulated by something readily available: a regular PC. As an added bonus, boot code for the TU58 is included on the MXV11-B2 ROMs.

Having downloaded the emulation software and the tools required to manipulate virtual tape images from the links provided in the guide, I got to building a custom XXDP tape image containing the basic XXDP system and a few diagnostics for the processor and MXV11-B module. Not a lot more would fit as TU58 tapes only hold about 256K of data. For this I used the DIAGDIR program to create a new tape image using the data on one of the XXDP disk images as below (lines in bold indicate my input).

>diagdir xxdp25.dsk -itest.tap
 
Will's Works PDP-11 XXDP Image Viewer  Version: 1.01
 
image supports 20460 blocks, 203 are pre-allocated
XXDP format, monitor starts at block 170
22 blocks in bitmap 17531 device blocks in use
source appears to be VERSION 2 system, supported devs:
DD:  DL:  DY:
 
which of supported devices do you want? : dd
 
4 directory blocks, ending in block 6
Assume DOSBATCH device with 512 blocks
DOSBATCH format, assume monitor starts at block 8
1 blocks in bitmap 39 device blocks in use
enter files to be copied, or empty string to terminate:
*.sys
 
copy XXDPXM.SYS .......................................
copy XXDPSM.SYS .............................
copy DRSXM .SYS ................................................
copy DRSSM .SYS ........................
copy DIR   .SYS .......
copy DB    .SYS ..
copy DD    .SYS ...
copy DL    .SYS ....
copy DM    .SYS ....
copy DR    .SYS ...
copy DU    .SYS ....
copy DY    .SYS ...
copy LP    .SYS .
copy MM    .SYS ...
copy MS    .SYS ....
copy MU    .SYS ....
copy DATE  .SYS ..
copy DUSZ  .SYS ..
zkd*.*
 
copy ZKDJB2.BIC .....................................
copy ZKDKB0.BIC ...................
copy ZKDLB0.BIC .................................
copy ZKDMB0.BIC ............
vmxb*.*
 
copy VMXBA0.BIN .......................
[enter to finish]

The names of the diagnostic programs for the devices I wanted to test were lookup up in these XXDP notes External link. The notes also list the files required to build a fully functional XXDP image, several of which I left out due to space restrictions. The DIAGDIR program can also be used to examine the contents of the newly created image:

>diagdir test.tap
 
Will's Works PDP-11 XXDP Image Viewer  Version: 1.01
 
4 directory blocks, ending in block 6
Assume DOSBATCH device with 512 blocks
DOSBATCH format, assume monitor starts at block 8
1 blocks in bitmap 349 device blocks in use
Attempting dir starting at block 3  LIST ALL
  1:  XXDPXM.SYS   1-MAR-89   39 blocks start   39  end   77
  2:  XXDPSM.SYS   1-MAR-89   29 blocks start   78  end  106
  3:  DRSXM .SYS   1-MAR-89   48 blocks start  107  end  154
  4:  DRSSM .SYS   1-MAR-89   24 blocks start  155  end  178
  5:  DIR   .SYS   1-MAR-89    7 blocks start  179  end  185
  6:  DB    .SYS   1-MAR-89    2 blocks start  186  end  187
  7:  DD    .SYS   1-MAR-89    3 blocks start  188  end  190
  8:  DL    .SYS   1-MAR-89    4 blocks start  191  end  194
  9:  DM    .SYS   1-MAR-89    4 blocks start  195  end  198
 10:  DR    .SYS   1-MAR-89    3 blocks start  199  end  201
 11:  DU    .SYS   1-MAR-89    4 blocks start  202  end  205
 12:  DY    .SYS   1-MAR-89    3 blocks start  206  end  208
 13:  LP    .SYS   1-MAR-89    1 blocks start  209  end  209
 14:  MM    .SYS   1-MAR-89    3 blocks start  210  end  212
 15:  MS    .SYS   1-MAR-89    4 blocks start  213  end  216
 16:  MU    .SYS   1-MAR-89    4 blocks start  217  end  220
 17:  DATE  .SYS   1-MAR-89    2 blocks start  221  end  222
 18:  DUSZ  .SYS   1-MAR-89    2 blocks start  223  end  224
 19:  ZKDJB2.BIC   1-MAR-89   37 blocks start  225  end  261
 20:  ZKDKB0.BIC   1-MAR-89   19 blocks start  262  end  280
 21:  ZKDLB0.BIC   1-MAR-89   33 blocks start  281  end  313
 22:  ZKDMB0.BIC   1-MAR-89   12 blocks start  314  end  325
 23:  VMXBA0.BIN   1-MAR-89   23 blocks start  326  end  348

Connecting everything up was simple. It would have been nice to have used the VT220 as a console, but I only had two 9-pin null modem cables and a couple of 25-pin adapters. I therefore ended up using two PC's: one as a terminal emulator on SLU-1 and one to emulate the TU58 via SLU-0. I started up the TU58 emulator with my custom tape image and typed "DD" at the PDP-11's BOOT> prompt to boot from tape. Unfortunately, the thing didn't want to co-operate, so I tested the TU58 emulator by connecting both PCs with a serial cable. Typing characters at one end had the TU58 emulator producing output at the other, which hadn't been the case when the PDP-11 was supposedly accessing the port.

Assuming the TU58 emulator was therefore working, I went back to the MXV11-B manual to see if that was set up right. Surely enough, another jumper was required to get SLU-0 running at 9600 bps (300 being the default for some reason) so this was fitted and the cables were returned to their original configuration. Bingo! Typing "DD" now had the TU58 emulator chatting away like there was no tomorrow as data was pumped over the line. Shortly after:

BOOTING UP XXDP-XM EXTENDED MONITOR

appeared on the screen... and, shortly after that, the tape emulator went quiet and the PDP hung. Hmm. A couple more tries got XXDP booted properly:

XXDP-XM EXTENDED MONITOR - XXDP V2.5
REVISION: F0
BOOTED FROM DD0
124KW OF MEMORY
NON-UNIBUS SYSTEM
 
RESTART ADDRESS: 152000
TYPE "H" FOR HELP !
 
.

Things were working, but only booting on one attempt in three wasn't really what you'd call reliable. Rerouting the serial cables away from noisy power cables and using the TU58 emulator's IRQ setting made seemed to clear this up and even got things loading quicker. During one of the reboots required to get things running, I was also able to verify that the system would automatically boot from the TU58 when left to its own devices.

Running the diagnostics themselves was quite cool, in a cryptic kind of way. Some of them require input and are quite verbose; others just start up and loop until you stop them. I've yet to figure out how to stop them properly so that you're returned to the monitor, but you always have the option of dropping into ODT and restarting from there.

Next: More XXDP and ODT Testing >>