To boot from a disk, the 11/44 execute a little program, the so-called “boot-loader”. They just execute these steps.
- Initialize disk/tape controller
- load data block 0 from device into memory at 0
- if success: execute code from address 0
- if error: goto 1
Bootloaders are very short: on the 11/44, they are held in tiny 512x4 byte ROMs and are only 64 words long. These ROMs are seating on the UNIBUS Interface Module (M7098). On other PDP-11, they are located on the M9312 Bootstrap Terminator Module. Therefore “M9312” is a good key word for further research.
In days before boot loder ROMs, the boot loader had to be entered manually over the “light-and-switches” consoles. According to “Real Men Don’t Use Pascal”, real gurus like Seymour Cray could enter their boot loader by memory. Since the code is very short, and you have to do it very often on a machine under development, I lost a little respect about this.
I also found this picture at lh5.ggpht.com: A PROM, where every bit is a user accessible switch. Its from a CDC 6600, built in 1964.
Why you need new ones
If you want connect a new disk or tape device, and you want to boot from that device, you need the appropriate boot rom. Of course you can enter the relocated bootloader manually (or via PDP11GUI), but you have to do this each time you will boot!
Where to get them
You can pick them from defective PDP-11’s, or try to make them yourself. The bit patterns are available on the net, try this.
At first I had only a ROM for a MSCP disks, later I could get more.
Now I have: MSCP disk (boot code “DU”) 2 x RL02 (“DL”), TU58 tape (“DD”), RX02 floppy (“DY”), RK06 (“DM”).
But I’m missing the ROM for my Emulex SC31, meaning I need a ROM for RM0x drives.
The ROMs were produced by many vendors and have many compatible designations, but they’re not made any more. I managed to get three N82S131 from xxx. A bigger problem is to find somebody how can program them. My company has an old GALEP ALL-07 programmer, which has exactly these types in its compatibility list, but we stopped programming after this programmer had ruined two of my three chips.
Using a modern EPROM
Next idea was to use a regular modern EPROM or EEPROM instead of the 82S131. Challenges were:
- There’s no room on DEC module M7098 for another DIL chip: neither can you stack it above the other chips, nor is there floor space for it.
- The bipolar 82S131 is fast: 50ns access time. This is necessary because it is only 4-bit width, so for every 16-bit bus cycle the PROM is accessed four times.
I tried with a 70ns EPROM 27C512.
Since modern EPROMS have much larger capacities, you can save a big number of bootloaders into one memory chip. Selection of the boot-loader can be made by setting higher address lines to constant levels over a DIP switch bank.
This is how my card cage looks now (does the flash light erase the EPROM too?):
There are four sockets for Boot-ROMs on the UNIBUS Interface Module M7098. You see three original DEC-ROMS (labeled “MSCP”, “RL01”, “TU58”). In the fourth socket I plugged in the adapter for my 27C512.
It works, but THIS LOOKS SO UGLY! If I ever show my 11/44 on a vintage convention, I’ll have to remove this!