|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1982, 1986 Regents of the University of California. ! 3: * All rights reserved. The Berkeley software License Agreement ! 4: * specifies the terms and conditions for redistribution. ! 5: * ! 6: * @(#)rxreg.h 7.2 (Berkeley) 12/22/87 ! 7: */ ! 8: ! 9: #ifdef KERNEL ! 10: #include "ioctl.h" ! 11: #else ! 12: #include <sys/ioctl.h> ! 13: #endif ! 14: ! 15: /* ! 16: * RX02 registers ! 17: */ ! 18: struct rxdevice { ! 19: short rxcs; /* control/status register */ ! 20: short rxdb; /* data buffer register */ ! 21: }; ! 22: ! 23: /* ! 24: * RX211 Command and Status Register (RX2CS) ! 25: */ ! 26: #define RX_DRV0 0x0000 /* select drive 0 */ ! 27: #define RX_DRV1 0x0010 /* select drive 1 */ ! 28: #define RX_DONE 0x0020 /* function complete */ ! 29: #define RX_INTR 0x0040 /* interrupt enable */ ! 30: #define RX_TREQ 0x0080 /* transfer request (data only) */ ! 31: #define RX_SDEN 0x0000 /* single density */ ! 32: #define RX_DDEN 0x0100 /* double density */ ! 33: #define RX_EXT 0x3000 /* extended address bits */ ! 34: #define RX_INIT 0x4000 /* initialize RX211 interface */ ! 35: #define RX_ERR 0x8000 /* general error bit */ ! 36: ! 37: /* ! 38: * RX211 control function bits (0-3 of RX2CS) ! 39: */ ! 40: #define RX_FILL 0x0001 /* fill the buffer */ ! 41: #define RX_EMPTY 0x0003 /* empty the buffer */ ! 42: #define RX_WRITE 0x0005 /* write the buffer to disk */ ! 43: #define RX_READ 0x0007 /* read a disk sector to the buffer */ ! 44: #define RX_FORMAT 0x0009 /* set the media density (format) */ ! 45: #define RX_RDSTAT 0x000b /* read the disk status */ ! 46: #define RX_WDDS 0x000d /* write a deleted-data sector */ ! 47: #define RX_RDERR 0x000f /* read the error registers */ ! 48: ! 49: #define RXCS_BITS \ ! 50: "\20\20RX_ERR\17RX_INIT\11RX_DDEN\10RX_TREQ\7RX_IE\6RX_DONE\5RX_DRV1" ! 51: ! 52: /* ! 53: * RX211 Error and Status Register (RX2ES) -- ! 54: * information is located in RX2DB after completion of function. ! 55: * The READY bit's value is available only after a "read status". ! 56: */ ! 57: #define RXES_CRCERR 0x0001 /* CRC error (data read error) */ ! 58: #define RXES_IDONE 0x0004 /* reinitialization complete */ ! 59: #define RXES_DENERR 0x0010 /* density error */ ! 60: #define RXES_DBLDEN 0x0020 /* set if double density */ ! 61: #define RXES_DDMARK 0x0040 /* deleted-data mark */ ! 62: #define RXES_READY 0x0080 /* drive is ready */ ! 63: ! 64: #define RXES_BITS \ ! 65: "\20\14RXES_NXM\13RXES_WCOF\11RXES_DRV1\10RXES_RDY\7RXES_DDMK\6RXES_DDEN\5\ ! 66: RXES_DNER\4RXES_ACLO\3RXES_ID\1RXES_CRC" ! 67: ! 68: /* ! 69: * Ioctl commands, move to dkio.h later ! 70: */ ! 71: #define RXIOC_FORMAT _IOW('d', 1, int) /* format the disk */ ! 72: #define RXIOC_WDDS _IOW('d', 2, int) /* write `deleted data' mark */ ! 73: /* on next sector */ ! 74: #define RXIOC_RDDSMK _IOR('d', 3, int) /* did last read sector */ ! 75: /* contain `deleted data'?*/ ! 76: #define RXIOC_GDENS _IOR('d', 4, int) /* return density of current */ ! 77: /* disk */ ! 78: ! 79: #ifdef RXDEFERR ! 80: /* ! 81: * Table of values for definitive error code (rxxt[0] & 0xff) ! 82: */ ! 83: struct rxdeferr { ! 84: short errval; ! 85: char *errmsg; ! 86: } rxdeferr[] = { ! 87: { 0010, "Can't find home on drive 0" }, ! 88: { 0020, "Can't find home on drive 1" }, ! 89: { 0040, "Bad track number requested" }, ! 90: { 0050, "Home found too soon" }, ! 91: { 0070, "Can't find desired sector" }, ! 92: { 0110, "No SEP clock seen" }, ! 93: { 0120, "No preamble found" }, ! 94: { 0130, "Preamble, but no ID mark" }, ! 95: { 0140, "Header CRC error"}, ! 96: { 0150, "Track addr wrong in header" }, ! 97: { 0160, "Too many tries for ID AM" }, ! 98: { 0170, "No data AM found" }, ! 99: { 0200, "Data CRC error" }, ! 100: { 0220, "Maintenance test failure" }, ! 101: { 0230, "Word count overflow" }, ! 102: { 0240, "Density error" }, ! 103: { 0250, "Set-density protocol bad" }, ! 104: { 0, "Undefined error code" } ! 105: }; ! 106: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.