I’ve starting playing around with UNIX v6 on the PDP-11.
I’m using the “v6_rl02_unknown” image, which is discussed and available for download from https://github.com/eunuchs/unix-archive/tree/master/PDP-11/Boot_Images. This is an RL02 image. It must have a modified kernel, as apparently V6 was not originally distributed on RL02 media.
Hardware
The hardware used was a Sigma Information Systems 22-bit QBUS chassis and a single RL02 drive.
The QBUS chassis consisted of the following:
- DEC M8186 (KDF11-A PDP-11/23)
- Camintonn CMLV11-J (4-port SLU with jumper-selectable baud rates)
- DEC M8067 (512KB RAM board consisting of 9 x 8 array of HM4864P-2 ICs)
- Webster SRQD11-B/05 (MSCP controller for MFM hard drive – not in use)
- DEC M8012 (BDV11 board with boot ROMs – not in use)
Getting UNIX V6 on to a real RL02 cartridge
The first challenge was moving the downloaded RL02 image to a real RL02 cartridge. This turned out to be a fairly simple task using PDP11GUI, although there is a bit of a learning curve to making this work correctly. It took about 3.5 hours to transfer the image over a 9600 baud console connection using PDP11GUI. I had to turn off the LTC front panel switch, to get PDP11GUI’s RL02 driver code to run. No bad-block checking was done (I’m not sure whether PDP11GUI does a verify-after-write operation).
At first I couldn’t get UNIX V6 to boot on the 11/23. Here are the lessons I learnt:
- The M8186 (KDF11-A) must be fitted with a KEF11-A Floating Point Microcode ROM (see below)
- The BDV11 is unable to boot the UNIX V6 RL02 cartridge. It reports “ERR 16 NOT BOOTABLE”
- My Arduino-based ODT bootloader does successfully boot the UNIX V6 RL02 cartridge
- If you are using a standard RL11 bootstrap loader, the RL02 must be UNLOAD’d and LOAD’d again, if you want to re-bootstrap it (see below)
- It does not matter whether the BDV11 is installed or not. Its presence makes no difference to booting UNIX V6
- UNIX V6 will boot and run regardless of whether the LTC switch is on or off. If it is off, the DATE command (when run sequentially) will show that the time is not incrementing
Floating Point Microcode ROM
A PDP-11/23 is based on the F11 chipset. The M8186 (KDF11-A) has 4 x 40-way IC sockets, of which usually 2 or 3 are populated. Looking at the M8186 with the handles on the left and the edge connector on the right, the 4 sockets from top to bottom are:
- F11: 40pin DIL 2-chip hybrid consisting of Control Unit (microcode) 23-001C7-AA and Data Unit (ALU) 21-15541-AB
- KEF11-A (Floating Point microcode ROM): 40pin DIL 2-chip hybrid consisting of 23-002C7 and 23-203C7
- Empty
- KTF11-A (Memory Management Unit): 40pin DIL custom array 21-15542-01
A PDP-11/23 will boot RT-11 with or without the KEF11-A Floating Point IC.
However, UNIX V6 won’t boot without it. Here’s the console output that occurs when attempting to boot UNIX V6 without the KEF11-AA:
!unix unix v6 11/23 mem = 99 KW max = 63 start LTC ka6 = 1421 aps = 140016 regs 23162 140004 1361 0 200 140032 140006 754 30000 trap type 1 panic: trap
Rebooting from the RL02 drive
If you HALT the PDP-11 after booting UNIX V6 from the RL02 drive, the bootstrap process will likely fail when you attempt to re-bootstrap the RL02, if you are using one of the RL11 bootstrap loaders commonly found on the Internet. The main problem is that the common bootstrap loaders do not SEEK to cylinder 0 (they assume the heads are already positioned there).
The fix for this is to unload the cartridge (by de-selecting the LOAD switch on the front of the RL02 drive) and waiting until that switch is lit, indicating that the cartridge is ready to load. Then press the button again to load the cartridge. Once the white READY light is on, the bootstrap loader should load and start UNIIX V6 without any problems.
I have a specially modified RL11 driver that takes care of this problem. It is derived from the 9312 DL bootstrap, which had its own problems (it assumed CMD #0 is a NOP, whereas on the RLV12, CMD #0 initiates “Maintenance Mode” which amongst other things does DMA transfers from and to the PDP-11’s RAM).