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.
What the machine sees
Section titled “What the machine sees”| Console emulator ROM | 256 words at 765000..765776, from consemu_file |
| Boot ROMs | Four sockets of 64 words at 773000, 773200, 773400 and 773600, from bootrom1_file to bootrom4_file |
| Empty socket | Reads 161777 in every word |
| Power-up boot | With 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.
The ROMs QUniLator ships
Section titled “The ROMs QUniLator ships”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.
| File | PROM |
|---|---|
23-248F1.lst | Console emulator and diagnostics, 11/04, 11/34 and similar |
23-616F1.lst | Console emulator and diagnostics, 11/60 and 11/70 |
23-751A9.lst | DL: RL11 |
23-752A9.lst | DM: RK611 |
23-753A9.lst | DX: RX11 |
23-755A9.lst | DP/DB: RP0x and RM0x |
23-756A9.lst | DK/DT: RK03/RK05 and TU55/TU56 |
23-757A9.lst | MM: TU45, TU77, TE16 |
23-758A9.lst | MT: TM11 |
23-759A9.lst | DS: RS03/RS04 |
23-760A9.lst | PR/TT: PC11 and DL11 |
23-761A9.lst | CT: TA11/TU60 |
23-764A9.lst | MS: TS11, TS04, TU80 |
23-765A9.lst, 23-765B9.lst | DD: TU58; B is the revised version |
23-767A9.lst | DU: MSCP |
23-811A9.lst | DY: RX211 |
23-ZZZA9.lst | ZZ: 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.
Using it
Section titled “Using it”- Copy the console ROM and the boot ROM for the machine’s boot device into
roms, and name them inconsemu_fileandbootrom1_file. - Set
bootaddress_labelto the entry to boot, such asdl0n. - 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.
What has been verified
Section titled “What has been verified”- An emulated PDP-11/34 boots the RSX-11M V4.2 distribution kit from an emulated
TS11 through the
MSboot ROM 23-764A9. - On a card running its internal bus, an emulated PDP-11/20 boots XXDP from an
emulated RL02 through the
DLboot ROM 23-751A9.
Parameters
Section titled “Parameters”Settings
Section titled “Settings”What a configuration stores and an operator sets.
| Parameter | Short | Value | Default | What it is |
|---|---|---|---|---|
consemu_file | cer | ROM file | empty | ak6dn.com *.lst file for console emulator & diag ROM. ”-” = no ROM in socket. |
bootrom1_file | br1 | ROM file | empty | ak6dn.com *.lst file for BOOT ROM1 |
bootrom2_file | br2 | ROM file | empty | ak6dn.com *.lst file for BOOT ROM2 |
bootrom3_file | br3 | ROM file | empty | ak6dn.com *.lst file for BOOT ROM3 |
bootrom4_file | br4 | ROM file | empty | ak6dn.com *.lst file for BOOT ROM4 |
bootaddress_label | bl | text | empty | MACRO11 label from *.lst file to auto boot. Empty = no autoboot |
Status
Section titled “Status”What the device reports as it runs. A configuration does not store these.
| Parameter | Short | Value | What it is |
|---|---|---|---|
bootaddress_info | bi | text | resolved bootaddress => power-on PC |
It also carries the parameters under parameters every card on the bus has.
In detail
Section titled “In detail”consemu_file
Section titled “consemu_file”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.
bootaddress_label, bootaddress_info
Section titled “bootaddress_label, bootaddress_info”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.