The first item on the list for running Unix is preparing the hardware to accept the operating system. This involves configuring the processor, memory, disk controller and serial ports. For now, I do not plan to include jumper settings, since the respecive manuals to go into great detail on describing this information. Someday, I might put together some drawings depicting the jumper locations and settings, however.
One thing to note is DEC did not manufacture very many Q-bus modules supporting multiple interrupt priorities. Most DEC Q-bus boards are hardwired to BR4 and rely on their position in the backplane to determine their priority. The only module I have with a different interrupt priority is the DEQNA Ethernet module, which is set to BR5. This gives it a higher priority than everything else on the bus, which helps to ensure it gets serviced, and reduces the chances of a buffer overruns.
The processor in my machine is a KDJ11-AB PDP-11/73 processor. It has very few jumpers to configure and they are all set to the factory default settings, except for the halt option. This yields the following configuration:
This configuration allows the processor to power up and automatically boot from the first available device, assuming the front panel halt switch is set to enable.
The multifunction module I have installed is an M7195-FA. Its configuration is as follows:
I have the serial port bit rates hardwired, since this module serves as the console for the system. When Unix is running in multiuser mode, and the workload is light, the system can only process data at around 4800 bps on these two ports. If the workload has the processor and bus tied up, then the througput drops even further.
The halt/reboot feature is disabled, because the machine has a halt switch on the front panel. I also do not want to accidentially halt/reboot the operating system by sending a break.
I have the line-time clock is set for 60 Hz, but it can be anything, as long as the operating system is configured to match. The LTC software control register is disabled, since the processor has its own LTC register.
The ROMs are configured to allow direct booting. The onboard memory is disabled, since it has no parity, or block mode DMA support.
The table below contains the relevant I/O configuration information.
Port | CSR Address | Interrupt Vector | BR | Bit Rate |
---|---|---|---|---|
SLU0 | 177765008 | 3008 | 4 | 9600 |
SLU1 | 177775608 | 608 | 4 | 9600 |
The system RAM is a Camintonn CMV-504 dual-width 2MB module. The configuration is as follows:
This configuration provides a full 2 MB of memory, with parity support for the operating system, and block mode DMA support for the I/O controllers that need it.
The Ethernet controller is a DEC M7504 DEQNA equipped with an AUI bulkhead cable, and a Cisco BL-50R 10Base-T transceiver. The hardware is configured as follows:
Controller | CSR Address | Interrupt Vector | BR |
---|---|---|---|
qe0 | 177744408 | Programmable | 5 |
The controller has adaptive DMA burst sizing from 4 to 16 word blocks and burst delays of 0 and 5 μs.
The serial multiplexer is a DEC M3107 DHQ11 8-port module, running in DHU11 emulation mode. The module is configured as follows:
Controller | CSR Address | Interrupt Vector | BR |
---|---|---|---|
du0 | 177600208 | 310 | 4 |
Tape coupler is an Emulex QT13 Pertec-compatible tape coupler. It can emulate a TSV05, or a TMSCP tape drive. It has has onboard diagnostics that allow it to be configured from the console. I need to get my tape emulator built, before I can configure the coupler.
The coupler is configured as follows:
Controller | CSR Address | Interrupt Vector | BR |
---|---|---|---|
ts0 | 177725208 | Programmable | 4 |
The disk controller is an Emulex UC07, single bus, fast, narrow, high-voltage SCSI controller. It has an MSCP interface, allowing it to emulate an RQDX-series ST-506 controller, or a UDA50 UNIBUS SDI controller. The controller hardware is configured as follows:
Controller | CSR Address | Interrupt Vector | BR | Autoboot |
---|---|---|---|---|
ra0 | 177721508 | Programmable | 4 | Enabled |
The controller has an extensive number of firmware settings that are configured through the firmware resident diagnostics (FRD). Accessing the FRD is performed by toggling in commands from the ODT.
Here is a summary of the task ahead:
Later on, when the operating system is being installed, the disk geometry can be customized to suit the installation.
The controller configuration I am using is extremely conservative. The slow cable feature is enabled and synchronous transfers are disabled, as are SCSI disconnects. This is because not all of my devices can use all of these features. The PDP is not a fast machine and is only capable of utilizing a fraction of the bandwidth of the SCSI bus, so slowing down the bus will have little, to no impact on its I/O performace.
Below is a session for setting up the hard drive. The bold characters are entered by me, with <CR> being a carriage return and <LF> a line feed (Ctrl-J). Text in red are my comments along the way. The drive geometry is set to maximize the usable space and split it into two logical drives, which will become ra(0,0,0) and ra(0,1,0).
Starting at the ODT prompt:
@17772150/000000 1<LF>
@17772152/5400 30003<CR>
@/000400 42000<CR>
@17772152/2000 <CR>
@200G
Disk Firmware-Resident Diagnostic
Copyright (c) 1988 Emulex Corporation all rights reserved
UC07/8 controller, firmware revision level R
IP address = 172150
Option Menu
----------------------------------------------------------------------------
1 - Format
2 - Verify
3 - Format & Verify
4 - Data Reliability
5 - Format, Verify, & Data Reliability
6 - Read Only
7 - List Known Units
8 - Replace Block
9 - Write RCT
10 - Optical Read all Diag Sectors
11 - Optical Write a Diag Sector
12 - Issue Mode Select
13 - Display Novram
14 - Edit / Load Novram
Enter option number: 14
Emulex automatic set-up of UCxx [Y or N, def=N]? y
<== Set the controller back to its defaults.
ALL DEVICES MUST BE POWERED UP AND READY
Hit any key to continue <CR>
SCSI ADDRESS 0 LUN 0, ATA , KINGSTON SSDNOW ,
REV LEVEL = 114P
<== Drive found at SCSI address 0
Unit offset if alternate controller address is selected, or
unit number to autoboot from if not alternate controller.
Enter unit offset/auto-boot unit number [0-15,def=0]: <CR>
<== We want to boot from this controller.
Do you want to configure another unit [Y or N,def=N]? <CR>
Do you want to change any parameters [Y or N,def=N]? y
<== Go back and tweak the settings
Dma threshold [1-8,def=1]: 8
<== DMA transfers in 16-byte blocks
Dma burst delay in multiples of 2 [2-32,def=4]: <CR>
Host adapter scsi address [0-7,def=7]: <CR>
Enable scsi parity checking [Y or N,def=N]? y
<== Some added reliability
Enable ESP chip slow cable mode [Y or N,def=N]? y
<== We have an unshielded cable.
Unit offset if alternate controller address is selected, or
unit number to autoboot from if not alternate controller.
Enter unit offset/auto-boot unit number [0-15,def=0]: <CR>
ST506 = 1 ESDI/EMBEDDED = 2 Optical = 3 Auto-size = 4
Type code [1-4,def=4]: 2
Current media ID is: RA81
Do you want to change media ID [Y or N, def = N]? y
Please select a media ID number from this table - [0-5]
or type RETURN to use current default
0 = RA81
1 = RA82
2 = RA90
3 = RA91
4 = RA92
5 = RD54
Media ID,def=0]: 4
<== Report the disk as an RA92
Full capacity mode [Y or N,def=Y]? <CR>
<== Disable spare and maintenance tracks.
Physical geometry of device may not be alterable.
In this case device default will be used.
Total number of physical sectors per track [1-255,def=255]: 241
Total number of physical heads [1-63,def=64]: 17
Total number of physical cylinders [20-4095,def=3834]: 4095
Do you want to enable transparent replacements [Y or N,def=Y]? n
<== Let the drive handle block replacements
Do you want to split the drive [Y or N,def=N]? y
Starting block number for 2nd logical drive
will be truncated to track boundry
Enter starting block number [18980-16682984,def=0]: 8382462
<== Split the drive exactly in half.
Removable media [Y or N,def=N]? <CR>
Disable scsi disconnects [Y or N,def=N]? y
<== One of my SCSI bridges needs this.
Prevent manual spin-down of mounted media [Y or N,def=N]?
<CR>
Enable synchronous data transfers [Y or N,def=Y]? n
<== Not all of my devices support synchronous.
Disable host adaptor polling of drive [Y or N,def=N]? <CR>
Scsi controller address [0-7,def=0]: <CR>
Scsi logical unit number [0-7,def=0]: <CR>
Do you want to configure another unit [Y or N,def=N]? <CR>
Do you want to change any parameters [Y or N,def=N]? <CR>
** ALL DATA ON DRIVE CAN BE LOST **
DO YOU WANT TO LOAD THE NOVRAM [Y or N]? y
Option Menu
----------------------------------------------------------------------------
1 - Format
2 - Verify
3 - Format & Verify
4 - Data Reliability
5 - Format, Verify, & Data Reliability
6 - Read Only
7 - List Known Units
8 - Replace Block
9 - Write RCT
10 - Optical Read all Diag Sectors
11 - Optical Write a Diag Sector
12 - Issue Mode Select
13 - Display Novram
14 - Edit / Load Novram
Enter option number: 7
Drive Status
Unit Size
-------------------------------
0 Available
8382461
1 Available
8382461
Hit any key to continue <CR>
Option Menu
----------------------------------------------------------------------------
1 - Format
2 - Verify
3 - Format & Verify
4 - Data Reliability
5 - Format, Verify, & Data Reliability
6 - Read Only
7 - List Known Units
8 - Replace Block
9 - Write RCT
10 - Optical Read all Diag Sectors
11 - Optical Write a Diag Sector
12 - Issue Mode Select
13 - Display Novram
14 - Edit / Load Novram
Enter option number: 1
Data on drive(s) will be lost
Do you want to continue [Y or N,def=N]? y
Drive Status
Unit Size
-------------------------------
0 Available
8382461
1 Available
8382461
Hit any key to continue <CR>
Selected drive(s):
Enter a drive number to test (end with RETURN key): 0
Drive Status
Unit Size
-------------------------------
0 Available
8382461
1 Available
8382461
Selected drive(s): 0
Enter a drive number to test (end with RETURN key): 1
Drive Status
Unit Size
-------------------------------
0 Available
8382461
1 Available
8382461
Selected drive(s): 0, 1
Enter a drive number to test (end with RETURN key): <CR>
0 = device default interleave
1 = no interleave
Enter sector interleave value for drive 0 [0-31,def=1]: <CR>
Starting format on drive 0
<== This takes several minutes.
Completion of format on drive 0
Starting format on drive 1
<== This finishes quickly.
Completion of format on drive 1
Hit any key to continue <CR>
Option Menu
----------------------------------------------------------------------------
1 - Format
2 - Verify
3 - Format & Verify
4 - Data Reliability
5 - Format, Verify, & Data Reliability
6 - Read Only
7 - List Known Units
8 - Replace Block
9 - Write RCT
10 - Optical Read all Diag Sectors
11 - Optical Write a Diag Sector
12 - Issue Mode Select
13 - Display Novram
14 - Edit / Load Novram
Enter option number:
<== Hit the Halt switch here to quit.
000274
@
I split the drive into two 4 GB logical disks, because of how I intended to partition the disk under Unix. The maximum number of partitions per disk is 8, labeled "a" through "h", with the "c" partition typically representing the entire disk. My intent is to keep the primary filesystems (root, swap and usr) as close to their recommended sizes as possible. In addition, I wanted to add tmp and var filesystems, to lessen the potential damage to the primary filesystems, in the event of a power failure, or catastrophic system problem. This would yield the following layout.
Because Unix filesystem (UFS) sizes are represented by signed long numbers, they are limited to 2 GB (231 bytes) in size. This means I would not have enough partitions to fully utilize a larger boot disk.