Skip to content

M9312 — bootstrap ROM card

The M9312 is the bootstrap card of the later UNIBUS PDP-11s. It carries a console emulator and diagnostic ROM and four sockets for boot ROMs, one per kind of boot device, and at power-up it can hand the processor the address of a boot routine so the machine starts its operating system with no console input. QUniLator lists it as M9312. Its sockets are programmed from MACRO-11 listings of the DEC PROMs, which QUniLator ships.

Console emulator ROM256 words at 765000..765776, from consemu_file
Boot ROMsFour sockets of 64 words at 773000, 773200, 773400 and 773600, from bootrom1_file to bootrom4_file
Empty socketReads 161777 in every word
Power-up bootWith bootaddress_label set, the card answers the processor’s fetch of the power-up vector at 24 and 26 with that ROM address and the boot socket’s PSW

The power-up boot works for a real processor in the backplane and for an emulated one alike.

Each is a MACRO-11 listing of a DEC PROM, by its part number. On the Storage screen, Copy default ROM… puts one into the roms folder of the image tree, where a socket can name it.

FilePROM
23-248F1.lstConsole emulator and diagnostics, 11/04, 11/34 and similar
23-616F1.lstConsole emulator and diagnostics, 11/60 and 11/70
23-751A9.lstDL: RL11
23-752A9.lstDM: RK611
23-753A9.lstDX: RX11
23-755A9.lstDP/DB: RP0x and RM0x
23-756A9.lstDK/DT: RK03/RK05 and TU55/TU56
23-757A9.lstMM: TU45, TU77, TE16
23-758A9.lstMT: TM11
23-759A9.lstDS: RS03/RS04
23-760A9.lstPR/TT: PC11 and DL11
23-761A9.lstCT: TA11/TU60
23-764A9.lstMS: TS11, TS04, TU80
23-765A9.lst, 23-765B9.lstDD: TU58; B is the revised version
23-767A9.lstDU: MSCP
23-811A9.lstDY: RX211
23-ZZZA9.lstZZ: runs the card’s own diagnostics continuously, with the 23-248F1

Each boot ROM names its entry points with code labels: in 23-751A9, dl0n boots RL unit 0 and dl0d does the same after the console ROM’s diagnostics.

  1. Copy the console ROM and the boot ROM for the machine’s boot device into roms, and name them in consemu_file and bootrom1_file.
  2. Set bootaddress_label to the entry to boot, such as dl0n.
  3. Enable the card. A power cycle now boots the machine from that entry.

On the Configurations screen, an M9312 added to a configuration comes with the boot ROM of the controller the machine boots from, copied into roms when it is not there yet, and with that controller’s unit-0 entry as its boot address. The controller is the configuration’s one controller with a boot ROM here, or of several the one whose drives hold a medium. Each boot socket says which controller its ROM boots, flags a ROM for a controller the configuration does not carry, and offers the boot ROMs of the controllers that are in it. bootaddress_label is chosen among the labels the plugged ROMs define, with the unit-0 entries of the configuration’s controllers first.

The sockets and the boot address can be changed on the running machine only while the card is disabled. Applying a configuration takes the card off the bus to program it.

  • An emulated PDP-11/34 boots the RSX-11M V4.2 distribution kit from an emulated TS11 through the MS boot ROM 23-764A9.
  • On a card running its internal bus, an emulated PDP-11/20 boots XXDP from an emulated RL02 through the DL boot ROM 23-751A9.

What a configuration stores and an operator sets.

ParameterShortValueDefaultWhat it is
consemu_filecerROM fileemptyak6dn.com *.lst file for console emulator & diag ROM. ”-” = no ROM in socket.
bootrom1_filebr1ROM fileemptyak6dn.com *.lst file for BOOT ROM1
bootrom2_filebr2ROM fileemptyak6dn.com *.lst file for BOOT ROM2
bootrom3_filebr3ROM fileemptyak6dn.com *.lst file for BOOT ROM3
bootrom4_filebr4ROM fileemptyak6dn.com *.lst file for BOOT ROM4
bootaddress_labelbltextemptyMACRO11 label from *.lst file to auto boot. Empty = no autoboot

What the device reports as it runs. A configuration does not store these.

ParameterShortValueWhat it is
bootaddress_infobitextresolved bootaddress => power-on PC

It also carries the parameters under parameters every card on the bus has.

The console emulator and diagnostic ROM, the 256-word socket the machine reads at 765000..765776. The file is a MACRO-11 listing of the ROM, assembled at 165000, as the listings QUniLator ships are (23-248F1 for the 11/04 and 11/34 class, 23-616F1 for the 11/60 and 11/70). Empty or - leaves the socket empty, and an empty socket reads 161777 in every word. A file that does not load, or is not assembled at 165000, is refused with an error and leaves the socket empty. The sockets can be changed only while the card is disabled.

bootrom1_file, bootrom2_file, bootrom3_file, bootrom4_file

Section titled “bootrom1_file, bootrom2_file, bootrom3_file, bootrom4_file”

The four boot ROM sockets, 64 words each, which the machine reads at 773000, 773200, 773400 and 773600. Each takes a MACRO-11 listing of one DEC boot PROM, assembled at 173000 as every one of them is, and moves it to its socket’s addresses, so any PROM goes in any socket. A file that does not load, or is not assembled at 173000, is refused with an error and leaves the socket empty. Empty or - leaves it empty.

Where the machine starts at power-up, named by a code label of a plugged ROM: dl0n in the RL PROM 23-751A9 boots RL unit 0, DIAG in 23-248F1 starts the console emulator after its diagnostics. Labels are case-sensitive. At power-up the card answers the processor’s fetch of the power-up vector at 24 and 26 itself, with this address as the PC and the PSW the first boot socket holds at 773026, so the machine runs the ROM with no console input. It does so for the first two reads after power returns, or for 300 ms, whichever ends first. Empty: the processor takes its power-up vector from memory.

A label no plugged ROM defines is refused, with the labels there are to choose from, so the sockets are programmed first; a configuration does that in the right order by itself. bootaddress_info shows the address the label resolved to, DISABLED with no label, and UNRESOLVED when a socket changed since took the label away.