RL8-A disk controller

From Computer History Wiki
Revision as of 20:00, 26 May 2021 by Jnc (talk | contribs) (Fairly complete)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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.

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