--- cci/usr/src/man/man4/vddc.4 2019/07/28 12:24:19 1.1.1.1 +++ cci/usr/src/man/man4/vddc.4 2019/07/28 12:27:13 1.1.1.2 @@ -1,9 +1,9 @@ .TH VDDC 4 "15 May 1984" .UC 4 .SH NAME -fsd, smd, xfd, fuj, xsd \- versabus storage module controller/drives +vddc / (fsd, smd, xfd, fuj, xsd) \- versabus storage module controller/drives .SH SYNOPSIS -.B "VDDC controller at vba address ff2000" +.B "VDDC controller at vba addresses 0xf2[0-7]00" .br .B "160 Mb FSD " .br @@ -13,7 +13,7 @@ fsd, smd, xfd, fuj, xsd \- versabus stor .br .B "360 Mb FUJ " .br -.B "340 Mb XSD " +.B "515 Mb XSD " .SH DESCRIPTION This is a generic VERSABUS storage module disk driver for CCI's VDDC controller. @@ -24,7 +24,7 @@ minor devices 8 through 15 refer to driv The standard device names begin with `fsd, `smd', `fuj', `xfd', or `xfd' followed by 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-7. +The character ? stands here for a drive number in the range 0 - 1f (hex). .PP The block files access the disk via the system's normal buffering mechanism and may be read and written without regard to @@ -36,15 +36,15 @@ and therefore raw I/O is considerably mo many words are transmitted. The names of the raw files conventionally begin with an extra `r.' .PP -In raw I/O counts should be a multiple of 512 bytes (a disk sector). +In raw I/O counts should be a multiple of 1024 bytes (a disk block). Likewise .I seek -calls should specify a multiple of 512 bytes. +calls should specify a multiple of 1024 bytes. .SH "DISK SUPPORT" 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 36 Mb. +CDC XFSD (340 Mb), CDC 515Mb, and Fujitsu 360 Mb. The origin and size of the pseudo-disks on each drive are as follows: .PP @@ -55,67 +55,65 @@ FSD 160Mb drive partitions: fsd?a 0 9600 0 - 59 fsd?b 9600 12000 60 - 134 fsd?c 21600 109280 135 - 817 - fsd?d 0 21600 0 - 134 (a & b) - fsd?e 0 130880 0 - 817 (whole disk) - fsd?f 9600 121280 60 - 817 (b & c) - fsd?g 21600 54720 135 - 476 (1st 1/2 of c) - fsd?h 76320 54560 477 - 817 (2nd 1/2 of c) + 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 .PP SMD (CDC 9766) 300Mb drive partitions: disk start length cyl smd?a 0 20064 0 - 65 smd?b 20064 13680 66 - 110 smd?c 33744 214928 111 - 817 - smd?d 0 33744 0 - 110 (a & b) - smd?e 0 248672 0 - 817 (whole disk) - smd?f 20064 228608 66 - 817 (b & c) - smd?g 33744 107616 111 - 464 (1st 1/2 of c) - smd?h 141360 107312 465 - 817 (2nd 1/2 of c) + 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 .PP XFD 340Mb drive partitions: disk start length cyl xfd?a 0 20352 0 - 52 xfd?b 20352 20352 53 - 105 xfd?c 40704 230400 106 - 705 - xfd?d 0 40704 0 - 105 (a & b) - xfd?e 0 271104 0 - 705 (whole disk) - xfd?f 20352 250752 53 - 705 (b & c) - xfd?g 40704 115200 106 - 464 (1st 1/2 of c) - xfd?h 155904 115200 406 - 705 (2nd 1/2 of c) + 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 .PP FUJ 360Mb drive partitions: disk start length cyl fuj?a 0 19200 0 - 59 fuj?b 19200 24000 60 - 134 fuj?c 43200 218560 135 - 817 - fuj?d 0 43200 0 - 134 (a & b) - fuj?e 0 261760 0 - 817 (whole disk) - fuj?f 19200 242560 60 - 817 (b & c) - fuj?g 43200 109440 135 - 476 (1st 1/2 of c) - fuj?h 152640 109120 477 - 817 (2nd 1/2 of c) + 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 .PP XSD 515Mb drive partitions: disk start length cyl xsd?a 0 30528 0 - 52 xsd?b 30528 30528 53 - 105 xsd?c 61056 345600 106 - 705 - xsd?d 0 61056 0 - 105 (a & b) - xsd?e 0 406656 0 - 705 (whole disk) - xsd?f 30528 376128 53 - 705 (b & c) - xsd?g 61056 172800 106 - 464 (1st 1/2 of c) - xsd?h 233856 172800 406 - 705 (2nd 1/2 of c) + 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 .fi .PP -It is unwise for all of these files to be present in one installation, +It is unwise for all of these partitions to be present in one installation, since there is overlap in addresses and protection becomes a sticky matter. 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, +except the last 5 cylinders which are reserved for bad sector forwarding, and diagnostic use. -The ?e partition may be used for pack-pack copying -(they maps the entire disk without the last 5 cylinders). .SH FILES /dev/fsd[0-7][a-f] fsd block files .br @@ -144,18 +142,182 @@ The driver prints out a number of error 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: +.sp 1 +.in +3m +.nf +31 0 ++--------------------------------+ +|||||||||||||||||||||||||||||||||| ++--------------------------------+ + ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ + ||||| |||||||||||||||||||||||||+-- 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. +.fi +.in -3m +.PP +In addition, if the controller is an SMD-E controller then an error code +will also be printed. The error codes are: +.sp 1 +.in +3m +.nf +\fICode\fP \fIMeaning\fP + +\fICommand related errors\fP: + +01 Bad MDCB pointer +02 Bad DCB pointer +03 Invalid command +04 Invalid disk address +05 Invalid sector in command +06 Gap specification error +07 sector per track error +08 bytes per sector error +09 Interleave error +0A Invalid head address +0B Invalid DMA burst count +0C Invalid sector count +0D Drive number out of range +0E Too many total sectors + + +\fIHard errors\fP: + +10 Disk not ready +11 Seek error +12 Disk write protected +13 Unit not selected (command sent to non-existent drive) +14 Seek error timeout +15 Fault timeout +16 Drive faulted +17 Ready timeout +18 Data Overrun +19 No index pulse on write format +1A Sector not found +1B Retry performed - Soft error +1C Invalid sync in data field +1D seek timeout error +1E Busy timeout +1F Not on cylinder +20 RTZ timeout +21 Unit not initialized +22 Seek error +23 Mapped header error +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 +2C Read time-out error +2D On-cylinder timeout during offset adjust +2E Good header found on defective track + + +\fIDMA transfer errors\fP + +30 DMA bus error +31 DMA parity error +32 DMA timeout + + +\fIMiscellaneous errors\fP: + +40 Track offset minus +41 Track offset plus +42 Data strobe early +43 Data strobe late +44 Drive ready +45 Data compare error +47 Alternate track accessed +48 Header CRC error +49 Uncorrectable error +4A ECC code error - data field code +4B Abort +4C Out of buffer space +4D Controller performed data correction +4E Alternate track accessed + + +\fIPOC related errors\fP + +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) +60 ROM CRC error +61 Timer short error +62 Shared RAM error +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 +6C Timer long error + +70 DMA gate array init started +71 ROM CRC test 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 + +80 Bus error +81 Address error +82 Illegal instruction +83 Divide by zero +84 CHK instruction +85 TRAPV instruction +86 Privileged instruction +87 Trace trap +88 Line 1010 emulator +89 Line 1111 emulator +8A - 8C Reserved (1 - 3) +8D Uninitialized interupt +8E Reserved 4 +8F Spurious interupt +91 - 97 "Hot" interupts on lines 1 - 7 + +.fi +.in -3m .SH BUGS -In raw I/O -.I read -and -.IR write (2) -truncate file offsets to 1024-byte block boundaries, -and .I write scribbles on the tail of incomplete blocks. -Thus, -in programs that are likely to access raw devices, -.I read, write -and -.IR lseek (2) -should always deal in 1024-byte multiples.