.\" Copyright (c) 1986 Regents of the University of California.
.\" All rights reserved. The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\" @(#)vd.4 6.1 (Berkeley) %G%
vd / (fsd, smd, xfd, fuj, xsd) \- versabus storage module controller/drives
.B "VD controller at vba addresses 0xf2[0-7]00"
This is a generic VERSABUS storage module disk driver for CCI's VD
Files with minor device numbers 0 through 7 refer to various portions
minor devices 8 through 15 refer to drive 1, etc.
The standard device names begin with `fsd, `smd', `fuj', `xfd',
the drive number and then a letter a-h for partitions 0-7 respectively.
The character ? stands here for a drive number in the range 0 - 1f (hex).
The block files access the disk via the system's normal
buffering mechanism and may be read and written without regard to
physical disk records. There is also a `raw' interface
which provides for direct transmission between the disk
and the user's read or write buffer.
A single read or write call results in exactly one I/O operation
and therefore raw I/O is considerably more efficient when
many words are transmitted. The names of the raw files
conventionally begin with an extra `r.'
In raw I/O counts should be a multiple of 1024 bytes (a disk block).
calls should specify a multiple of 1024 bytes.
The driver tries to access the last track on each drive
to determine the type of drive attached. The driver recognizes
five different drives: CDC FSD (160 Mb), CDC 9766 (300 Mb),
CDC XFSD (340 Mb), CDC 515Mb, and Fujitsu 360 Mb.
The origin and size of the pseudo-disks on each drive are
.ta .5i +\w'000000 'u +\w'000000 'u +\w'000000 'u
FSD 160Mb drive partitions:
fsd?b 9600 12000 60 - 134
fsd?c 21600 109280 135 - 817
fsd?d 39840 91040 249 - 817
fsd?e 58080 72800 363 - 817
fsd?f 76320 54560 477 - 817
fsd?g 94560 36320 591 - 817
fsd?h 112800 18080 705 - 817
SMD (CDC 9766) 300Mb drive partitions:
smd?b 20064 13680 66 - 110
smd?c 33744 214928 111 - 817
smd?d 69616 179056 229 - 817
smd?e 105488 143184 347 - 817
smd?f 141360 107312 465 - 817
smd?g 177232 71440 583 - 817
smd?h 213104 35568 701 - 817
XFD 340Mb drive partitions:
xfd?b 20352 20352 53 - 105
xfd?c 40704 230400 106 - 705
xfd?d 79104 192000 206 - 705
xfd?e 117504 153600 306 - 705
xfd?f 155904 115200 406 - 705
xfd?g 194304 76800 506 - 705
xfd?h 232704 38400 606 - 705
FUJ 360Mb drive partitions:
fuj?b 19200 24000 60 - 134
fuj?c 43200 218560 135 - 817
fuj?d 79680 182080 249 - 817
fuj?e 116160 145600 363 - 817
fuj?f 152640 109120 477 - 817
fuj?g 189120 72640 591 - 817
fuj?h 225600 36160 705 - 817
XSD 515Mb drive partitions:
xsd?b 30528 30528 53 - 105
xsd?c 61056 345600 106 - 705
xsd?d 118656 288000 206 - 705
xsd?e 176256 230400 306 - 705
xsd?f 233856 172800 406 - 705
xsd?g 291456 115200 506 - 705
xsd?h 349056 57600 606 - 705
It is unwise for all of these partitions to be present in one installation,
since there is overlap in addresses and protection becomes
The ?a partition is normally used for the root file system,
and the ?b partition as a paging area.
The ?c partition maps the rest of the pack,
except the last 5 cylinders which are reserved for bad sector forwarding,
/dev/fsd[0-7][a-f] fsd block files
/dev/rfsd[0-7][a-f] fsd raw files
/dev/smd[0-7][a-f] smd block files
/dev/rsmd[0-7][a-f] smd raw files
/dev/xfd[0-7][a-f] xfd block files
/dev/rxfd[0-7][a-f] xfd raw files
/dev/fuj[0-7][a-f] fuj block files
/dev/rfuj[0-7][a-f] fuj raw files
/dev/xsd[0-7][a-f] xsd block files
/dev/rxsd[0-7][a-f] xsd raw files
The driver prints out a number of error messages, indicating that
the error bit in the DCB'c op error status register was set.
The contents of the register are printed, as well as an indication
of the operation attempted and drive number.
The status word is displayed in hexadecimal, so
conversion to binary is up to the operator.
The meaning of the status word's bit fields are:
+--------------------------------+
||||||||||||||||||||||||||||||||||
+--------------------------------+
^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
||||| |||||||||||||||||||||||||+-- Header CRC error detected.
||||| ||||||||||||||||||||||||+--- Header compare error.
||||| |||||||||||||||||||||||+---- Disk write protected.
||||| ||||||||||||||||||||||+----- Controller fault.
||||| |||||||||||||||||||||+------ Disk seek error.
||||| ||||||||||||||||||||+------- Uncorrectable data error.
||||| |||||||||||||||||||+-------- Disk not on cylinder.
||||| ||||||||||||||||||+--------- Disk drive not ready.
||||| |||||||||||||||||+---------- Alternate track accessed.
||||| ||||||||||||||||+----------- Seek started.
||||| |||||||||||||||+------------ Invalid disk address issued.
||||| ||||||||||||||+------------- Non-existent memory error.
||||| |||||||||||||+-------------- Main memory parity error.
||||| ||||||||||||+--------------- Data compare error.
||||| |||||||||||+---------------- Drive is ready.
||||| ||||||||||+----------------- Operation aborted.
||||| |||||||||+------------------ Tried data strobe early.
||||| ||||||||+------------------- Tried data strobe late.
||||| |||||||+-------------------- Tried track offset plus.
||||| ||||||+--------------------- Tried track offset minus.
||||| |||||+---------------------- Controller performed data correction.
||||| ||||+----------------------- Uncorrected error happened (hard).
||||| |||+------------------------ Corrected error happened (soft).
||||| ||+------------------------- An error happened (hard or soft).
||||| |+-------------------------- Invalid command.
||||+-+--------------------------- unused.
|||+------------------------------ DCB aborted by system.
||+------------------------------- Unsuccessful completion.
|+-------------------------------- DCB completed.
+--------------------------------- DCB started.
In addition, if the controller is an SMD-E controller then an error code
will also be printed. The error codes are:
\fICommand related errors\fP:
05 Invalid sector in command
06 Gap specification error
07 sector per track error
08 bytes per sector error
0B Invalid DMA burst count
0D Drive number out of range
0E Too many total sectors
13 Unit not selected (command sent to non-existent drive)
19 No index pulse on write format
1B Retry performed - Soft error
1C Invalid sync in data field
24 Header error - Sync word bad
25 Header error - Wrong cylinder address
26 Header error - Wrong head address
27 Header error - Pad word bad
28 Sector write protected
2A Header check sum error
2B Alternate track accessed
2D On-cylinder timeout during offset adjust
2E Good header found on defective track
\fIDMA transfer errors\fP
\fIMiscellaneous errors\fP:
47 Alternate track accessed
4A ECC code error - data field code
4D Controller performed data correction
4E Alternate track accessed
50 - 53 Buffer RAM error (banks 0 - 3)
54 - 57 Buffer RAM clear error (banks 0 - 3)
58 - 5B Event RAM Error (banks 0 - 3)
5C - 5F Event RAM clear error (banks 0 - 3)
63 Shared RAM clear error
64 Illegal interupt or exception
65 Disk sequencer did not initialize
66 Restart FF did not initialize
67 Data parity error FF did not initialize
68 Versabus error FF did not initialize
69 Unit select panel did not clear
6A Versabus interupt pending FF did not clear
6B Restart interupt FF did not init
70 DMA gate array init started
72 Local RAM test started
73 Buffer RAM test started
74 Event RAM test started
75 SERDES gate array init started
\fIIllegal interupts or exceptions\fP
86 Privileged instruction
8D Uninitialized interupt
91 - 97 "Hot" interupts on lines 1 - 7
scribbles on the tail of incomplete blocks.