|
|
1.1 ! root 1: /* ! 2: * /usr/include/sys/xl.h ! 3: * ! 4: * Archive floppy tape support. ! 5: * ! 6: * Revised: Wed Jun 2 12:16:16 1993 CDT ! 7: */ ! 8: ! 9: #ifndef __SYS_XL_H__ ! 10: #define __SYS_XL_H__ ! 11: ! 12: /************************************************************************/ ! 13: /* QIC 117 commands */ ! 14: /************************************************************************/ ! 15: #define QIC_CMD_RST 01 /* reset */ ! 16: #define QIC_CMD_RNB 02 /* report next bit */ ! 17: #define QIC_CMD_PAUS 03 /* pause */ ! 18: #define QIC_CMD_MPAUS 04 /* micro step pause */ ! 19: #define QIC_CMD_ALTTO 05 /* alternate command timeout */ ! 20: #define QIC_CMD_STS 06 /* status */ ! 21: #define QIC_CMD_ECD 07 /* report error code */ ! 22: #define QIC_CMD_DRVCN 08 /* report drive configuration */ ! 23: #define QIC_CMD_ROMVN 09 /* report ROM version */ ! 24: #define QIC_CMD_FWD 10 /* logical forward */ ! 25: #define QIC_CMD_BOT 11 /* rewind to begining of tape */ ! 26: #define QIC_CMD_EOT 12 /* forward to end of tape */ ! 27: #define QIC_CMD_SEEK 13 /* seek head to track */ ! 28: #define QIC_CMD_CAL 14 /* rewind, calibrate drive */ ! 29: #define QIC_CMD_FMD 15 /* format mode */ ! 30: #define QIC_CMD_WRF 16 /* write reference bursts */ ! 31: #define QIC_CMD_VMD 17 /* verify mode */ ! 32: #define QIC_CMD_STOP 18 /* stop tape motion */ ! 33: #define QIC_CMD_SKPB 25 /* skip n segments back */ ! 34: #define QIC_CMD_NMD 30 /* normal mode */ ! 35: #define QIC_CMD_VNDID 32 /* report vendor id */ ! 36: #define QIC_CMD_TPSTAT 33 /* report tape status */ ! 37: ! 38: /************************************************************************/ ! 39: /* QIC 117 error codes */ ! 40: /************************************************************************/ ! 41: ! 42: /* command received while drive not ready */ ! 43: #define QIC_ERR_NOT_READY 01 ! 44: ! 45: /* cartridge not present or removed */ ! 46: #define QIC_ERR_NO_CART 02 ! 47: ! 48: /* motor speed error (not within 1%) */ ! 49: #define QIC_ERR_MOTOR_SPEED 03 ! 50: ! 51: /* motor speed fault (jammed, or gross speed error) */ ! 52: #define QIC_ERR_MOTOR_FAULT 04 ! 53: ! 54: /* cartridge write protected */ ! 55: #define QIC_ERR_WPROT 05 ! 56: ! 57: /* undefined or reserved command code */ ! 58: #define QIC_ERR_BAD_CMD 06 ! 59: ! 60: /* illegal track address specified for seek */ ! 61: #define QIC_ERR_SEEK_TRK 07 ! 62: ! 63: /* illegal command in report subcontext */ ! 64: #define QIC_ERR_RPT_CMD 08 ! 65: ! 66: /* illegal entry into a diagnostic mode */ ! 67: #define QIC_ERR_DIAG_ENTRY 09 ! 68: ! 69: /* broken tape detected (based on hole sensor) */ ! 70: #define QIC_ERR_BROKEN_TAPE 10 ! 71: ! 72: /* warning - read gain setting error */ ! 73: #define QIC_ERR_READ_GAIN 11 ! 74: ! 75: /* command received while error status pending (obsolete) */ ! 76: #define QIC_ERR_ESTAT 12 ! 77: ! 78: /* command received while new cartridge pending */ ! 79: #define QIC_ERR_NEW_CART 13 ! 80: ! 81: /* command illegal or undefined in primary mode */ ! 82: #define QIC_ERR_PRI_MODE 14 ! 83: ! 84: /* command illegal or undefined in format mode */ ! 85: #define QIC_ERR_FMT_MODE 15 ! 86: ! 87: /* command illegal or undefined in verify mode */ ! 88: #define QIC_ERR_VFY_MODE 16 ! 89: ! 90: /* logical forward not at logical BOT in format mode */ ! 91: #define QIC_ERR_LOG_FWD 17 ! 92: ! 93: /* logical EOT before all segments generated */ ! 94: #define QIC_ERR_LOG_EOT 18 ! 95: ! 96: /* command illegal when cartridge not referenced */ ! 97: #define QIC_ERR_NOT_REF 19 ! 98: ! 99: /* self-diagnostic failed (cannot be cleared) */ ! 100: #define QIC_ERR_SELF_DX 20 ! 101: ! 102: /* warning EEPROM not initialized, defaults set */ ! 103: #define QIC_ERR_EE_DFLT 21 ! 104: ! 105: /* EEPROM corrupt or hardware failure */ ! 106: #define QIC_ERR_EE_BAD 22 ! 107: ! 108: /* motion timeout error */ ! 109: #define QIC_ERR_MOTION_TO 23 ! 110: ! 111: /* data segment too long - logical forward or pause */ ! 112: #define QIC_ERR_TOO_LONG 24 ! 113: ! 114: /* transmit overrun (obsolete) */ ! 115: #define QIC_ERR_XMIT_OVR 25 ! 116: ! 117: /* power on reset occurred */ ! 118: #define QIC_ERR_POWER_ON 26 ! 119: ! 120: /* software reset occurred */ ! 121: #define QIC_ERR_SOFT_RST 27 ! 122: ! 123: /* diagnostic mode 1 error */ ! 124: #define QIC_ERR_DX_1 28 ! 125: ! 126: /* diagnostic mode 2 error */ ! 127: #define QIC_ERR_DX_2 29 ! 128: ! 129: /* command received during noninterruptible process */ ! 130: #define QIC_ERR_NON_IRPT 30 ! 131: ! 132: /* rate selection error */ ! 133: #define QIC_ERR_RATE_SEL 31 ! 134: ! 135: /* illegal command while in high speed mode */ ! 136: #define QIC_ERR_HIGH_SPD 32 ! 137: ! 138: /* illegal seek segment value */ ! 139: #define QIC_ERR_SEEK_SEG 33 ! 140: ! 141: /************************************************************************/ ! 142: /* request buffer structure */ ! 143: /************************************************************************/ ! 144: struct rb{ ! 145: struct rb *nxt; /* ptr to next packet */ ! 146: unchar fun; /* function */ ! 147: unchar sts; /* status */ ! 148: ushort sgn; /* segment # */ ! 149: paddr_t adr; /* addr of buffer */ ! 150: ulong map; /* bad sector map */ ! 151: unchar hed; /* fdc head */ ! 152: unchar cyl; /* fdc cylinder */ ! 153: unchar sct; /* base fdc sector */ ! 154: unchar trk; /* tape track */ ! 155: unchar tps; /* segment */ ! 156: unchar idc; /* read id cylinder */ ! 157: unchar ids; /* sct */ ! 158: unchar nbk; /* # blocks */ ! 159: unchar erc; /* error count */ ! 160: unchar ers[ 3 ]; /* error sectors */ ! 161: ushort tbl[ 33 ]; /* parsed segment params*/ ! 162: }; ! 163: ! 164: struct rbq { /* buf queue structure */ ! 165: struct rb *top; ! 166: struct rb *bot; ! 167: }; ! 168: ! 169: /************************************************************************/ ! 170: /* Volume table structure (128 bytes) */ ! 171: /************************************************************************/ ! 172: ! 173: typedef struct { ! 174: unsigned char ident[4]; /* Volume entry signature "VTBL"*/ ! 175: unsigned short data_seg_num; /* Starting segment number */ ! 176: unsigned short last_seg_num; /* Ending segment number */ ! 177: unsigned char op_system[6]; /* OS type "unix" */ ! 178: unsigned char p1[43]; /* Null (offset 14-56) */ ! 179: char c_seq_num; /* Multicartridge seq # */ ! 180: /* initial cartridge = 1 */ ! 181: unsigned short p3[34]; /* Null (offset 58-126) */ ! 182: unsigned short last_blk_size; /* Reserved. For UNIX/Xenix */ ! 183: /* last block data size */ ! 184: } xlvtbl; ! 185: ! 186: /************************************************************************/ ! 187: /* xl typedefs */ ! 188: /************************************************************************/ ! 189: ! 190: typedef unsigned char * fpchr; ! 191: typedef unsigned short * fpwrd; ! 192: typedef unsigned long * fplng; ! 193: ! 194: /************************************************************************/ ! 195: /* xldefines */ ! 196: /************************************************************************/ ! 197: ! 198: #define RBFRD 0x01 /* rb.fun values */ ! 199: #define RBFWT 0x02 ! 200: #define RBWFD 0x03 ! 201: ! 202: #define XLSRDY 0x01 /* xl6sts equates */ ! 203: #define XLSEXC 0x02 ! 204: #define XLSCIN 0x04 ! 205: #define XLSWRP 0x08 ! 206: #define XLSCHG 0x10 ! 207: #define XLSREF 0x20 ! 208: #define XLSBOT 0x40 ! 209: #define XLSEOT 0x80 ! 210: /* xlster equates */ ! 211: #define XLSNEC 0x80 /* nec error */ ! 212: #define XLSLSB 0x40 /* last status bit != 1 */ ! 213: #define XLSSFT 0x20 /* soft error:, exc, chg, or no cin */ ! 214: #define XLSNTD 0x10 /* not tape drive */ ! 215: #define XLSNID 0x08 /* can't read id's */ ! 216: ! 217: #endif /* __SYS_XL_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.