RX01/02 floppy drive
|Manufacturer:||Digital Equipment Corporation|
|Capacity:||256 Kbytes (RX01), 512 Kbytes (RX02)|
|Transfer Rate:||4 usec/data bit (FM); 2 usec/data bit (MFM) (diskette to drive buffer); 1.2 usec/bit (uffer to CPU interface)|
|Average Access Time:||262 ms|
|Revolutions Per Minute:||360 rpm ± 2.5%|
|1/2 Revolution Time:||166 ms/rev nominal|
|One Track Seek Time:||6 msec/track maximum|
|Tracks Per Surface:||77|
|Sectors Per Track:||26|
|Words Per Sector:||64 16-bit|
|Tracks Per Inch:||48 tracks/inch|
|Density:||3200 bpi (maximum, on inner track)|
|Recording Method:||FM (RX01), FM and MFM (RX02)|
|Physical Size:||19" W x 10-1/2" H x 16-1/2" L (pair of drives)|
|Power Consumption:||460 VA|
They used 8" floppies, compatible with the IBM 3740 floppy drive; the media were single-sided, single-density, floppies, which came pre-formatted. (The RX0x drives are not capable of formatting blank floppies.) Data was protected with a CRC, compatible with that used by the IBM 3740.
The drives are essentially identical, except that the RX02 supports optional double-density operation. This double-density is not the same as the 'normal' double-density 8" floppy, but a unique-to-DEC format. Single-density recording uses a double frequency (FM) coding (compatible with IBM 3740 devices), and double-density uses a modified Miller code (MFM - below).
In an somewhat unusual design choice, on both single- and double-density media, the sector headers are recorded using FM coding, but on double-density media, the data portions of sectors are recorded with MFM.
Both drives provide 26 sectors per track (1-26), and 77 tracks per floppy (0-76), for a total of 2002 sectors. Single-density sectors hold 128 bytes, and double-density sectors hold 256 bytes, for a maximum total capacity of 256KB for the RX01, and 512KB for the RX02. An RX02 can (under program control) write either single- or double-density media; single-density media written on an RX02 are readable on an RX01.
The RX01 included the M7726 Controller and M7727 Read-Write card; the RX02 included the M7744 Controller and M7745 Read-Write card. Each drive cabinet holds a pair of drives (the left-hand drive is always drive 0), along with an H771 power supply.
Both drives have UNIBUS and QBUS controllers; the RX11 and RX211 for the UNIBUS, and RXV11 and RXV21 for the QBUS. The first of each pair are for the RX01, and are programmed I/O; the latter are for the RX02, and provide DMA data transfer.
The RX02 can be strapped to emulate an RX01, in which case the RX01 controllers (RX11 and RXV11) can support them. There are also as RK8E (RX01 only) and RK28 controllers for the PDP-8. The maximum number of drives supported by a single controller is two.
Since the maximum flux reversal rates are the same for FM, and MFM, but with the latter having with a data rate double that of the FM, the same hardware can thus hold twice as many bits with the MFM coding.
The actual MFM encoding used is modified slightly to prevent a false sector header preamble (in FM coding) from being created within a double density data area (in MFM).
A sector contains the following fields (header first):
- Preamble (8 bytes of '0')
- Address mark (1 byte, a unique flux reversal string which does not form a bit string)
- Track number (1 byte)
- Zeros (1 byte)
- Sector number (1 byte)
- Zeros (1 byte)
- Header CRC (2 bytes)
This is followed by an 11-byte gap (0's or 1's), a 6-byte sync field (0's), and a Data mark (recorded in FM). This is also a flux reversal string which does not form a bit string, and there are 4 versions: single- and double-density, and normal and 'deleted'. This is followed by either 128 or 256 bytes of data, and a two-byte CRC (both in either FM, or MFM).
DEC normally left track 0 unused (although it was not used to hold bootstraps). This was because the standard IBM format reserved track 0 for special purposes.
They also used an idiosyncratic layout of the 'logical' sectors on a floppy, intended to maximize the performance: the first logical sector of each data track was offset by six 'physical' sectors from the 'first' sector of the preceding track, and sequential logical sectors were on alternating physical sectors.
This fragment of C code implements the logical to physical sector translation:
#define NSECT 26 track = (blkno / NSECT); i = ((blkno % NSECT) << 1); if (i >= NSECT) i++; sector = (((i + (6 * track)) % NSECT) + 1); track++;
The second through fourth lines do the interleave (they effectively form a rotate); the next line performs the 6-sector offset. (The '+1' is because sectors are numbered 1-26, not 0-25; the last line is to avoid track 0.)
DEC ROM bootstraps for the RX0x load physical sectors 1, 3, 5 and 7 from track 1; in other words, they use the DEC 'logical' layout. On single-density media, where sectors are 128 bytes, loading 4 sectors loads 512 bytes, which is the standard DEC block size (most bootstraps are tailored to fit into one DEC disk block, which is what most DEC ROM bootstraps load). On double-density media, this loads 1024 bytes, but the second block is usually ignored.
- Seek error rate - 1 in 16 seeks
- Soft data error rate - 1 in 109 bits read or written
- Hard data error rate - 1 in 1012 bits read or written
- Head settle time - 25 msec maximum
The average access time of 262 ms is computed as follows:
- Seek - 77 tracks/3 X 6 msec = 154 msec
- Settle - 25 msec
- Rotate - 166 msec/2 = 83 msec