Difference between revisions of "RL11 disk controller"
(fix possible misunderstanding) |
(→Device registers: Add RL02) |
||
| Line 44: | Line 44: | ||
===774404: Disk Address Register (RLDA)=== | ===774404: Disk Address Register (RLDA)=== | ||
| − | During a 'Seek' command: | + | During a 'Seek' command on an RL01: |
{{16bit-header}} | {{16bit-header}} | ||
| 0 || colspan=8 | CYL ADDR DIFF || colspan=2 | RSVD || HD SEL || 0 || DIR || 0 || 1 | | 0 || colspan=8 | CYL ADDR DIFF || colspan=2 | RSVD || HD SEL || 0 || DIR || 0 || 1 | ||
{{16bit-bitout}} | {{16bit-bitout}} | ||
| − | During a 'Read Data' or 'Write Data' command: | + | During a 'Seek' command on an RL02: |
| + | {{16bit-header}} | ||
| + | | colspan=9 | CYL ADDR DIFF || colspan=2 | RSVD || HD SEL || 0 || DIR || 0 || 1 | ||
| + | {{16bit-bitout}} | ||
| + | |||
| + | During a 'Read Data' or 'Write Data' command on an RL01: | ||
{{16bit-header}} | {{16bit-header}} | ||
| 0 || colspan=8 | CYL ADDR || HD SEL || colspan=6 | SECTOR | | 0 || colspan=8 | CYL ADDR || HD SEL || colspan=6 | SECTOR | ||
| + | {{16bit-bitout}} | ||
| + | |||
| + | During a 'Read Data' or 'Write Data' command on an RL02: | ||
| + | {{16bit-header}} | ||
| + | | colspan=9 | CYL ADDR || HD SEL || colspan=6 | SECTOR | ||
{{16bit-bitout}} | {{16bit-bitout}} | ||
| Line 86: | Line 96: | ||
|} | |} | ||
| − | During a 'Read Header' command, three successive reads to the Multipurpose Register will return: | + | During a 'Read Header' command, three successive reads to the Multipurpose Register will return, on an RL01: |
{{16bit-header}} | {{16bit-header}} | ||
| 0 || colspan=8 | CYL ADDR || HD SEL || colspan=6 | SECTOR | | 0 || colspan=8 | CYL ADDR || HD SEL || colspan=6 | SECTOR | ||
| + | {{16bit-bitout}} | ||
| + | |||
| + | and on an RL02: | ||
| + | {{16bit-header}} | ||
| + | | colspan=9 | CYL ADDR || HD SEL || colspan=6 | SECTOR | ||
{{16bit-bitout}} | {{16bit-bitout}} | ||
Revision as of 13:31, 5 October 2017
The RL11 disk controller for the UNIBUS was for the RL01 and RL02 disk drives.
The RL11 was a hex board, with a 40-pin Berg connector holding a cable 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.
The controller and drive combination can execute 8 different commands:
- No Operation
- Write Check
- Get Status
- Seek
- Read Header
- Write Data
- Read Data
- Read Data Without Header Check
Spiral reads and writes (i.e. multi-block reads which start on one track, and overflow to the next) are not supported; multiple separate read/write commands are needed, with a seek to the next track between each pair.
Contents
Device registers
The RL11 controller includes 4 read-write registers:
| Register | Abbreviation | Address |
|---|---|---|
| Control Status Register | RLCS | 774400 |
| Bus Address Register | RLBA | 774402 |
| Disk Address Register | RLDA | 774404 |
| Multipurpose Register | RLMP | 774406 |
774400: Control Status Register (RLCS)
| CERR | DE | NXM | DLT/HNF | DCRC/ HCRC | OPI | DRVSEL | CRDY | IE | ADDR EX | FUNC | DRDY | ||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
774402: Bus Address Register (RLBA)
| BA15 <---> BA01 | 0 | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
774404: Disk Address Register (RLDA)
During a 'Seek' command on an RL01:
| 0 | CYL ADDR DIFF | RSVD | HD SEL | 0 | DIR | 0 | 1 | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
During a 'Seek' command on an RL02:
| CYL ADDR DIFF | RSVD | HD SEL | 0 | DIR | 0 | 1 | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
During a 'Read Data' or 'Write Data' command on an RL01:
| 0 | CYL ADDR | HD SEL | SECTOR | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
During a 'Read Data' or 'Write Data' command on an RL02:
| CYL ADDR | HD SEL | SECTOR | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
During a 'Get Status' command:
| NOT USED | MBZ | RESET | 0 | GT STA | 1 | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
774406: Multipurpose Register (RLMP)
During a 'Get Status' command:
| WDE | CHE | WL | SKTO | SPE | WGE | VC | DSE | Rsvd | HS | CO | HO | BH | STATE | ||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
| 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 'Read Header' command, three successive reads to the Multipurpose Register will return, on an RL01:
| 0 | CYL ADDR | HD SEL | SECTOR | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
and on an RL02:
| CYL ADDR | HD SEL | SECTOR | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
in the first word, all 0's in the second word, and the header CRC in the third.
During a 'Read Data' or 'Write Data' command:
| 111 | WC | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |