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 14: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 |