Annotation of coherent/f/usr/include/sys/xl.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.