Difference between revisions of "RX11 floppy disk controller"

From Computer History Wiki
Jump to: navigation, search
(777170: Command and Status Register (RXCS): RXV11 lossage)
(Error and Status (RXES): Add Error reg)
Line 68: Line 68:
 
| colspan=8 | Unused || Drive Ready || Deleted Data || colspan=3 | Unused || Initialize Done || Parity Error || CRC Error
 
| colspan=8 | Unused || Drive Ready || Deleted Data || colspan=3 | Unused || Initialize Done || Parity Error || CRC Error
 
{{16bit-bitout}}
 
{{16bit-bitout}}
 +
 +
====Error (RXER)====
 +
{{16bit-header}}
 +
| colspan=8 | Unused || colspan=8 | Error Code
 +
{{16bit-bitout}}
 +
 +
Error code values:
 +
 +
{| class="wikitable"
 +
! Value !! Meaning
 +
|-
 +
| 0010 || Drive 0 failed to see home on Initialize
 +
|-
 +
| 0020 || Drive 1 failed to see home on Initialize
 +
|-
 +
| 0030 || Found home when stepping out 10 tracks for INIT
 +
|-
 +
| 0040 || Tried to access a track greater than 77
 +
|-
 +
| 0050 || Home was found before desired track was reached
 +
|-
 +
| 0060 || Self-diagnostic error
 +
|-
 +
| 0070 || Desired sector could not be found after looking at 52 headers (2 revolutions)
 +
|-
 +
| 0110 || More than 40 μsec and no SEP clock seen
 +
|-
 +
| 0120 || A preamble could not be found
 +
|-
 +
| 0130 || Preamble found but no I/O mark found within allowable time span
 +
|-
 +
| 0140 || [[CRC]] error found on what we thought was a header
 +
|-
 +
| 150 || The header track address of a good header does not compare with the desired track
 +
 +
|}

Revision as of 22:43, 27 March 2018

The RX11 and RXV11 are controllers for the RX01 floppy disk drives for the UNIBUS and QBUS.

They have an identical programming interface; both use programmed I/O. The controller contains a buffer, which is filled or emptied under program control.

Device registers

Register Abbreviation Address
Command and Status Register RXCS 777170
Data Buffer Register RxDB 777172

777170: Command and Status Register (RXCS)

Error Initialize Unused Transfer Request Interrupt Enable Done Unit Select Function Go
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

Setting the 'Initialize' bit does not clear the 'Interrupt Enable' bit on the RXV11.

The function codes are:

Code Function
0 Fill Buffer
1 Empty Buffer
2 Write Sector
3 Read Sector
4 Not used
5 Read Status
6 Write Deleted Data Sector
7 Read Error Register

777172: Data Buffer Register (RXDB)

This register contains one of several 'virtual' registers, depending on the function in progress.

The 'Transfer Request' bit in the RXCS is used to indicate which virtual register is in used at any given time.

Track Address (RXTA)

Unused 0 Track
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

Sector Address (RXSA)

Unused 0 0 0 Sector
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

Data Buffer (RXDB)

Unused Data
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

Note the name clash between this virtual register, and the actual register which contains it.

Error and Status (RXES)

Unused Drive Ready Deleted Data Unused Initialize Done Parity Error CRC Error
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

Error (RXER)

Unused Error Code
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00

Error code values:

Value Meaning
0010 Drive 0 failed to see home on Initialize
0020 Drive 1 failed to see home on Initialize
0030 Found home when stepping out 10 tracks for INIT
0040 Tried to access a track greater than 77
0050 Home was found before desired track was reached
0060 Self-diagnostic error
0070 Desired sector could not be found after looking at 52 headers (2 revolutions)
0110 More than 40 μsec and no SEP clock seen
0120 A preamble could not be found
0130 Preamble found but no I/O mark found within allowable time span
0140 CRC error found on what we thought was a header
150 The header track address of a good header does not compare with the desired track