SYSTEM   BOXES BA11-VA

D|I|G|I|T|A|L made several housings to hold their systems. First, there were the "BA11" boxes for the PDP-11. Of course, there were boxes for the PDP-8 and earlier systems, but I am not familiar with those machines. The suffix letter following the BA11 designation defined the box for the early types. The more modern types used for QBUS systems were defined by the letters BA followed by a number.

"Old" style BA11 boxes (UNIBUS systems)
  • BA11-N
  • BA11-K
  • BA11-L

"Modern" style BA11 boxes (QBUS systems)
  • BA11-VA
  • BA23
  • BA123
  • BA400

BA11-VA small system box
I describe the BA11-VA box in more detail, because it is small enough to contain a complete PDP-11 system (without storage) which you can put on your desk. The BA11-VA is a very nice little box. It contains a complete power supply, a card cage for 4 dual-height QBUS modules and a small fan to cool the power supply and the modules.

BA11-VA box front view (with cover)

Setting the power supply voltage
AC power selections The box is opened by removing the 2 screws at the left and right side of the box. You must do this, because you have to check if the AC input voltage selection switches are set correct for your mains outlet voltage. Note that there are two switches which must be set to the same voltage setting, 115 or 230 Volt. One switch sets the AC input voltage for the power supply and is located on the power supply board, the other switch sets the supply voltage for the internal fan and is located on top of the metal housing of the power supply AC filter, AC input socket and AC fuse holder. After you set the switches, you should affix the appropriate voltage decal to the back of the BA11-VA, according to the "BA11-VA Configuration Guide" (EK-BA11V-RG-001). Probably that label is not anymore with your box. If you like, you can make a label and glue that to the back of the box as a reminder for yourself.
Be sure the two voltage selections are identical before the power cable is inserted.
The fuse rating is 3 A for either 115V or 230V operation.
The maximum AC input power rating is 115 VAC 50/60 Hz @ 3 A or 230 VAC 50 Hz @ 1.6 A.
 
External connections
At the rear side are, besides the AC power input socket, two AMP sockets for remote restart of the system, and auxiliary power supply (+5V and +12V), see the pictures. The Remote Restart (2 pins) socket can be used to connect a remote switch to restart the program when the BA11-VA is switched on.
Auxiliary power connection
System restart connector
 
The auxiliary power (3 pins) socket is used to connect +12 VDC and +5 VDC and ground to an external option.
The maximum DC power including auxiliary input is +5 VDC @ 5.6 A and +12 VDC @ 1.6 A. You must make a power calculation of the installed modules in the BA11-VA box to know the maximum load that can be connected to the auxiliary power socket.
The BA11-VA box does not contain power sequencing circuitry and, therefore, requires additional external hardware for power-fail detection.

Installation of the PDP-11 modules
module access of the BA11-VA The card cage can hold four dual-height QBUS modules. The access to the card cage is possible when the top cover is installed. A small access cover is at the rear side and is removed by turning the two locking screws a quarter turn counterclockwise. Looking at the rear side of the BA11-VA box and the opening to the card cage at the right hand side, the top slot of the LSI-11 4-slot backplane is dedicated for the LSI-11 (PDP-11) processor module. The three remaining slots can be used for memory and peripheral interface modules.
To configure the BA11-VA box, consult the Microcomputer Handbook Series for dual-height processor module configuration and the memory and peripheral handbook for dual-height memory and option module configurations. The BA11-VA box will accept one double-height processor module and up to 3 double-height option modules.
The BA11-VA box does not generate a line time clock. A 60 Hz XTAL clock may be obtained from the multi-function memory option MXV11.
At the left of the module access cover, below the AC power switch, is a chassis ground screw. The chassis ground screw is used to ground LSI-11 serial line interface cables to the BA11-VA box. This screw provides the chassis ground connection needed for correct operation.
 
My "minimalist" PDP-11 system
I have an LSI-11/2 processor (M7270) installed in the upper slot in my BA11-VA box.
To have a complete PDP-11 system you need at least some memory and a serial line to connect the system console. As the BA11-VA box only has 4 slots, you must make a good choice of the available options, if you want to build a complete system without the use of an additional expansion box.
rear view BA11-VA (cover removed) front view BA11-VA (cover removed)
Rear view on BA11-VA (cover removed) Front view on BA11-VA (cover removed)

I installed in the second slot the MXV11 option module, M8047. This module is capable of generating the line time clock, has two serial line interfaces and RAM. The MXV11-AA (M8047-AA) has 4k word (8 kbytes) RAM, the MXV11-AC (M8047-CA) has 16k word (32 kbytes) RAM. As the LSI-11/2 processor has a 16-bit address bus and has no support for memory management, this system will be maxed out with 32k word (minus the address space required for the I/O page). If more memory is needed you have to install a memory module in the third slot.


    @000000/177777      
    000002/177777
    000004/177777
    000006/177777
    000010/177777
    000012/177777
    @077774/000000
    077776/000000
    100000/?
    @
    Here you see a short ODT dialog.
Memory location 000000 is opened by entering 6 zeroes followed by a slash. ODT immediately prints the contents of location 000000 which is all ones (177777) in this case. Next, the LF (Ctrl-J) is entered and ODT will open the next word location, 000002. This is repeated a few times, and at location 000012 the CR is entered, closing the memory access. ODT prints the "@" prompt on the next line.
To check the total installed memory on this MXV11 (16k words, 32 kbytes), I opened memory location 077774. The contents is 000000. Entering Ctrl-J opens the next location, 077776. Ctrl-J again would access the first location after 16k words, octal 100000. There is no RAM at that location, and ODT prints a "?" followed by the "@" prompt on the next line.

 
The third (or fourth) slot is used to connect external storage peripherals. The RQDX3 (M7555) is the first option module that comes to mind as it offers connection for the RX50 or RD33 5.25" floppy drives and a connection to the RD5x hard disk drives. However, the RD50 ... RD54 hard disk drives are becoming more and more difficult to find, and reliability will not increase over the years. So it might be wise to invest in a QBUS SCSI interface module. Those modules are expensive, but the SCSI disk is very cheap. Remember, on such a small system you will most likely load the RT-11 Operating System. The maximum disk partition size supported by this OS is 32Mb. Yes, Megabyte, not Gigabyte! So, even with a small SCSI disk you will have several partitions.

If you do not have a SCSI module or RD5x hard disk (the other parts needed, M7555 or SCSI hard disk are easy to get), there is yet an other method for external storage. As described, the MXV11 option includes two serial line interfaces. One interface is factory configured at address 177560, which is the CSR for the system console. Looking at the rear side of the BA11-VA box and the opening to the card cage at the right hand side, with the MXV11 module installed, the connector for the system console is at the right side, see the "Rear view on BA11-VA (cover removed)" picture above. The small ribbon cable is the connection to the system console. You have to make a cable to connect the 10-pin BERG header to a 25-pin or 9-pin D-SUB connector to hook the PC serial port to the MXV11.

Connector pins of MXV11 serial ports
(view towards front edge of module)
    BERG header    
pin #
    signal (from MXV11)         9-pin D-SUB (to PC)    
pin #
MXV11 / DLV11 port connector 1UART clocknc
2GND5
3XMIT data +2
4XMIT data -5
5GND5
6keync
7RX data -5
8RX data +3
9GND5
10+12 Voltnc

I tied XMIT data - and RX data - with all GND connections to the GND connection at the PC side (nc = not connected).
The 10-pin BERG header on the MXV11 is identical to the ports on the DLV11 module, so this cable might come in handy more often.
The other connector on the MXV11 is for the second serial line interface, and has the same pin assignment as the console port. The CSR for second serial line interface is default set to 176500, which is the "start" address for the TU58 tape cartridge subsystem. "So what?" you might ask ...

Booting the LSI-11/2 from a simulated TU58 tape
Suppose you can load de bootstrap code for the TU58 device, and have a real TU58 connected to the second serial interface. If the loaded TU58 cartridge has a bootable system, you can run your PDP-11 from it. However, the continuous tape re-positioning would severely impact the "system performance". But there is a TU58 emulator available on the internet. The emulator does not need to re-position the "tape". Check out
Will Kranz' DECtape II, TU58 emulation  page, and the page of Don North, TU58 XXDP Image Files , the emulator that I actually use to emulate a TU58.

  012701
  176500
  012702
  176504
  010100
  005212
  105712
  100376
  006300
  001005
  005012
  012700
  000004
  005761
  000002
  042700
  000020
  010062
  000002
  001362
  005003
  105711
  100376
  116123
  000002
  022703
  001000
  101371
  005007
The bootstrap code listed at the left must be loaded via ODT starting at address 001000 (octal). If you have not made any errors, the last word entered should be at location 001070. It is a jump to address 000000, the start of the (just read from tape) DD: device driver for the TU58 device unit #0.

Do the following steps to load the bootstrap code using ODT using a terminal emulation program.

  1. Hit CR (Carriage Return or "Enter") to obtain the "@" prompt of ODT.
  2. Enter "1000/" to open address location 1000 (octal).
  3. Enter the first word of the bootstrap code (012701) followed immediately by Ctrl-J (Line Feed).
    The data word is stored in memory and the next memory location is opened.
  4. Work your way through the bootstrap code.
    After you entered the last word (005007 Ctrl-J), the next opened address should be 001072. Simply enter CR to close the entry. If the last entered word is not in location 001070, or you want to review your entered code, repeat step 2 again, and only enter the Line Feed for each stored word. Enter CR to close the last entry.
  5. Make sure that the (emulated) TU58 device is connected to the COM port, loaded with a bootable tape and ready. Enter "001000G" to start the bootstrap code, and the loading of the OS from tape.
I can imagine that you enter the bootstrap code once or twice manually, but you would like to have a more intelligent method. If the console is a real VT100 terminal the only other option to load the bootstrap code is the installation of a boot ROM for the TU58 device on the MXV11 module.   If the console is simulated by a terminal program on a PC (or an other computer, Apple, SUN, etc.) you can write a program that mimics the ODT entries for you. With that program you simply send the output to the console port, and in "ODT speak" the bootstrap code is loaded. That program is readily available for the PC platform! The TU58 bootstrap can be downloaded from the separate test library archive testlib.com  containing test and bootstrap code which one can upload to a PDP-11 system console line via ODT.
In effect, if you have a PC with two serial ports you can use one port for the system console (via a terminal emulation program like Hyperterm or ProComm) and the other port for the TU58 emulation! Of course, if you like, you can replace the terminal emulation program with a real VT100 style console. That will increase the "look and feel" of "the ol' days" :-)
Download the very useful utility ODTDOSUT.COM from Will Kranz' PDP-11 troubleshooting  page. Search for the "PC to ODT interface" section, and download the ODT-DOS Utility program ODTDOSUT.COM. The whole page is good reading stuff!
Create a configuration file for the TU58 emulator program as described in its documentation. The config file tells the program which COM port it should use and which settings for the communication. Start the TU58 emulator. Start the terminal emulation program with the appropriate communication settings. Load the bootstrap code for the TU58 via the terminal manually. You can also use the program the PDPDB.EXE program from the ODTDOSUT.COM archive instead of a terminal emulation prgram. PDPDB.EXE is simple but it does the job. When you enter "Alt-U" you can upload a TU58 bootstrap program called TU58A.DMP from the library archive testlib.com . I edited that file, as the "Ctrl-J" was not recognized and an error was reported. To make things work, I added the load address for every line. I guess you can use this modified bootstrap with any terminal emulation program. Hyperterm "eats" the Line Feed character, so the change is needed for Hyperterm. When the "@" ODT prompt returns, enter "1000G" to start the bootstrap code.
If the MXV11 has the bootstrap ROM for the TU58 on board you do not need to load the bootstrap code or TU58A.DMP, simply enter "DD" to boot from the TU58. I am not sure of this, may be you first must start some monitor, probably from address 173000. I do not have any ROMs for the MXV11. If "DD" is not accepted, there is no bootstrap ROM for TU58 installed.

  pdp11.log opened Fri Jan 18 22:22:56 1980

  177777\?
  @1000/177777 12701
  001002/177777 176500
  001004/177777 12702
  001006/177777 176504
  001010/177777 10100
  001012/177777 5212
  001014/177777 105712
  001016/177777 100376
  001020/177777 6300
  001022/177777 1005
  001024/177777 5012
  001026/177777 12700
  001030/177777 4
  001032/177777 5761
  001034/177777 2
  001036/177777 42700
  001040/177777 20
  001042/177777 10062
  001044/177777 2
  001046/177777 1362
  001050/177777 5003
  001052/177777 105711
  001054/177777 100376
  001056/177777 116123
  001060/177777 2
  001062/177777 22703
  001064/177777 1000
  001066/177777 101371
  001070/177777 5007
  001072/177777
  @1000G

  ?BOOT-U-I/O error

  000720
  @1000G
  ?MON-F-Power fail halt
  052052
  @1000G
  ?BOOT-U-I/O error

  000720

  @1000G
  RT-11FB (S) V05.04 B
  ?KMON-F-File not found DK:STARTF.COM

  .dir

  RT11FB.SYS   101  11-Apr-95      DL    .SYS     5  11-Apr-95      
  DY    .SYS     4  11-Apr-95      DD    .SYS     5  11-Apr-95
  RK    .SYS     3  11-Apr-95      SWAP  .SYS    27  16-May-90
  RESORC.SAV    25  16-May-90      DIR   .SAV    19  16-May-90
  DUP   .SAV    49  16-May-90      PIP   .SAV    30  16-May-90
  VBGEXE.SAV    16  20-Dec-85      PACMAN.SAV    28  15-Dec-93
  ZEMU  .SAV    49                 STRTRK.SAV    54  21-Nov-96
   14 Files, 415 Blocks
   89 Free blocks

  .
  .

    Here you see the output of PDPDB.EXE. It was captured to a log file. When you enter "Ctrl-L" in PDPDB.EXE all output is written to the file PDPDB.LOG. Entering "Ctrl-L" again stops logging the output, and "Ctrl-L" again starts logging, any output is appended to the log file.

With "Ctrl-U" the bootstrap code is uploaded. Entering 1000G starts the bootstrap, but as you can see that was not successful as I got the ?BOOT-U-I/O error message. Tried 1000G again, but the system hangs. The bootstrap code is probably overwritten, so I switched the BA11-VA off. To my surprise I got the output ?MON-F-Power fail halt! So, one more attempt. but alas ... no good.

What now?

I saw that I also got errors reported from the TU58EM program, "bad packets". I wondered ... is the communication baudrate OK? I assumed that it would default be set to 9600 Baud, just like the console port. Better check that!
I stopped TU58EM and started Hyperterm, setting the baudrate at 9600. I entered 176506/ on the console to open the RXBUF of the second serial port on the MXV11 and entered "66". That should print a "6" in the Hyperterm window, but I got some weird character!   OK, so the baudrate was set wrong!
I could switch off the BA11-VA, pull the MXV11 module, look up the settings and check them. I was in a lazy mood, so I experimented with the setting of the baudrate in Hyperterm. First I tried 19200 Baud, but when sending "66" I did not get the expected "6". I got a "paragraph" token, and sending "66" again always printed that character. I could adjust the baudrate in two directions, either to 4800 or to 38400 Baud. Being optimistic, I hoped it was set for the faster baudrate. This time, entering 176506/ 66 on the console printed a "6" in the Hyperterm window!   The baudrate was set wrong! No wonder it did not work at first!

Lesson learned: with serial communications, setting it up the first time, always check settings, do not assume the setting are correct!

Closing Hyperterm and starting TU58EM again. I start the TU58 emulator with the command entry TU58EM -v -d -s 38400 -w henkboot.tap. Then I uploaded the bootstrap code again and started it.
I see that TU58EM sends packets, but at some moment I get the ?BOOT-U-I/O error message on the console and TU58EM prints that there are bad packets received.
Since the baudrate is quite high, I wondered if one of the two was not able to keep up with the other. TU58EM has a few switches more, so I tried TU58EM -s 38400 -w henkboot.tap -T. The "-v" and "-d" for verbose and debug output were not needed anymore. The "-T" option makes TU58EM behave like a real TU58 drive: slower.

Starting the bootstrap code again on the console ... this time no "bad packets" received messages, and after some 10 to 15 seconds the first line is printed.

RT-11FB  (S)  V05.04  B

A few seconds later the rest follows and I have the "dot" promt of RT11. Cool, it works! As you can see, the .dir command lists the contents of the simulated TU58 tape.

Any old 486-based PC is fit for the two tasks, a terminal program at 9600 Baud for the system console, and the TU58 emulation program at 38400 Baud. The old PC's also have two old-style serial ports COM1 and COM2, so such an old system is just waiting for a second life!   It is not blindingly fast, but it works!



Impression of console / LSI-11/2 and simulated TU58
As "prove" of the setup described, here are some more pictures. Click the picture to see a larger one in a separate window.
RT-11 is booted, and then I entered the .SH ALL command. The console shows the response. Note that you can see in the TU58EM screen that there are also write operations!

console / LSI-11/2 / TU58 simulation
console screen output
 
TU58 emulation screen output