RL8-A disk controller
The RL8-A disk controller for the OMNIBUS PDP-8s was for the RL01 and RL02 disk drives. It could be set under program control to either 8-bit or 12-bit mode; in the latter, a sector contained 170 words, with 8 bits left unused. (These drives protect the data, and sector headers, with separate CRCs.)
The RL8-A was a hex board, the M8433. It had a 40-pin Berg connector which receives a special inter-drive cable (round in cross-section, with special locking connectors). The cable runs to the first drive; up to 4 drives can be connected to a single controller, using a bus running from one drive to the next, with a terminator in the last drive of the string.
It can be configured as device 60/61 (first controller) or 62/63 (second controller); its normal data break priority is 0, but it can be jumpered to use 1 instead.
Contents
Controller capabilities
The controller and drive combination can execute 8 different commands:
- Maintenance
- Reset
- Get Status
- Seek
- Read Header
- Write Data
- Read Data
- Read Data Without Header Check
Device instructions
The RL8-A is controlled with 14 instructions:
Code | Mnemonic | Function |
---|---|---|
6600 | RLDC | Clear controller, all register |
6601 | RLSD | Skip on function done, clear if set |
6602 | RLMA | Load memory address register |
6603 | RLCA | Load command register A |
6604 | RLCB | Load command register B |
6605 | RLSA | Load sector address register |
6607 | RLWC | Load word count register |
6610 | RRER | Read error register |
6611 | RRWC | Read word count register |
6612 | RRCA | Read command register A |
6613 | RRCB | Read command register B |
6614 | RRSA | Read sector address register |
6615 | RRSI | Read silo word |
6617 | RLSE | Skip on composite error, clear if set |
Device registers
The RL8-A controller includes 7 internal registers:
Register | Abbreviation |
---|---|
Command Register A | CA |
Command Register B | CB |
Memory Address Register | MA |
Sector Address Register | SA |
Word Count Register | WC |
Error Register | ER |
Silo Buffer Register | SI |
Command Register A
During a seek:
DIR | HS | Unused | CYL DIFF | ||||||||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
DIR - Direction HS - Head Select CYL DIFF - Cylinder Difference (distance to move)
During a data read/write:
Unused | HS | Unused | CYL | ||||||||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
HS - Head Select CYL - Cylinder
Command Register B
Unused | MAIN | MODE | IE | DRVSEL | EMA | FUNC | |||||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
MAIN - Maintenance MODE - 12- OR 8-bit mode IE - Interrupt Enable DRVSEL - Drive Select EMA - Extended Memory Address
Function Code | Function |
---|---|
0 | Maintenance |
1 | Reset |
2 | Get Status |
3 | Seek |
4 | Read Header |
5 | Write Data |
6 | Read Data |
7 | Read Data, No Header Check |
Error Register
DCRC/HCRC | OPI | DLT/HNF | Unused | DE | DRDY | ||||||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
DCRC/HCRC - Data CRC/Header CRC OPI - Operation Incomplete DLT/HNF - Data Late / Header Not Found DE - Drive Error ('Get Status' will provide details) DRDY - Drive Ready
Silo Buffer Register
During a 'Read Header' command - word 0:
Unused | CA0 | HS | SECTOR | |||||||||||||||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
During a 'Read Header' command - word 1:
Unused | CYLINDER CA8-CA1 | ||||||||||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
During a 'Get Status' command - word 0:
Unused | DT | HS | CO | HO | BH | STATE | |||||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
DT - Drive Type HS - Head Select CO - Cover Open HO - Heads Out BH - Brush Home
State Code | State |
---|---|
0 | Load Cartridge |
1 | Spin Up |
2 | Brush Cycle |
3 | Load Heads |
4 | Seek |
5 | Lock On |
6 | Unload Heads |
7 | Spin Down |
During a 'Get Status' command - word 1:
Unused | WDE | CHE | WL | STO | SPE | WGE | VC | DSE | |||
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
WDE - Write Data Error CHE - Current Head Error WL - Write Lock STO - Seek Time Out Error SPE - Spin Error WGE - Write Gate Error VC - Volume Check DSE - Drive Select Error
Bootstraps
Address | Data | Comments |
---|---|---|
21 | 7600 | Clear accumulator |
22 | 6600 | Clear controller |
23 | 7332 | Generate constant |
24 | 6605 | Load SA with 20 |
25 | 1021 | Load constant into accumulator |
26 | 6607 | Load WC |
27 | 2327 | Generate constant |
30 | 6604 | Load CMD B |
31 | 6601 | Skip on done |
32 | 5031 | Jump backward if not |
Start at 21; the loaded operating system will overlay the bootstrap.