Annotation of 43BSDTahoe/sys/vaxuba/utreg.h, revision 1.1

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:  *     @(#)utreg.h     7.2 (Berkeley) 5/26/88
        !             7:  */
        !             8: 
        !             9: /*
        !            10:  * System Industries Model 9700 Tape Drive
        !            11:  *   emulates TU45 on the UNIBUS
        !            12:  */
        !            13: 
        !            14: struct utdevice {
        !            15:        u_short utcs1;          /* control status register 1 */
        !            16:        short   utwc;           /* word count register */
        !            17:        u_short utba;           /* low 16-bits of bus address */
        !            18:        short   utfc;           /* frame counter */
        !            19:        u_short utcs2;          /* control status register 2 */
        !            20:        u_short utds;           /* drive status register */
        !            21:        u_short uter;           /* error register */
        !            22:        u_short utas;           /* attention status register */
        !            23:        u_short utcc;           /* NRZI CRC character for validation */
        !            24:        u_short utdb;           /* data buffer reg (not emulated) */
        !            25:        u_short utmr;           /* maintenance reg (not emulated) */
        !            26:        u_short utdt;           /* drive type register (not emulated) */
        !            27:        u_short utsn;           /* serial number reg (not emulated) */
        !            28:        u_short uttc;           /* tape control register */
        !            29:        u_short utbae;          /* buffer address extension register */
        !            30:        u_short utcs3;          /* control and status register 3 */
        !            31: };
        !            32: 
        !            33: /*
        !            34:  * utcs1 --
        !            35:  *   cmds, interrupt enable, extended address bits, and status
        !            36:  */
        !            37: #define        UT_GO           0x0001          /* go bit */
        !            38: /* function codes reside in bits 5-1 */
        !            39: #define        UT_NOP          0x0000          /* no operation */
        !            40: #define        UT_REWOFFL      0x0002          /* rewind offline */
        !            41: #define        UT_LOOP         0x0004          /* loop read/write */
        !            42: #define        UT_REW          0x0006          /* rewind */
        !            43: #define        UT_CLEAR        0x0008          /* drive clear */
        !            44: #define        UT_SENSE        0x000a          /* drive sense */
        !            45: #define        UT_PRESET       0x0010          /* read in preset */
        !            46: #define        UT_DIAGN        0x0012          /* diagnostic mode set */
        !            47: #define        UT_ERASE        0x0014          /* erase */
        !            48: #define        UT_WEOF         0x0016          /* write tape mark */
        !            49: #define        UT_SFORW        0x0018          /* forward space block */
        !            50: #define        UT_SREV         0x001a          /* reverse space block */
        !            51: #define        UT_SFORWF       0x001c          /* forward space file */
        !            52: #define        UT_SREVF        0x001e          /* reverse space file */
        !            53: #define        UT_WCHFORW      0x0028          /* write check forward */
        !            54: #define        UT_WCHREV       0x002e          /* write check reverse */
        !            55: #define        UT_WCOM         0x0030          /* write forward */
        !            56: #define        UT_RCOM         0x0038          /* read forward */
        !            57: #define        UT_RREV         0x003e          /* read reverse */
        !            58: /* the remainder are control and status bits */
        !            59: #define        UT_IE           0x0040          /* interrupt-enable */
        !            60: #define        UT_RDY          0x0080          /* controller ready */
        !            61: #define        UT_EADDR        0x0300          /* extended address bits */
        !            62: /* bit 10 unused */
        !            63: #define        UT_DVA          0x0800          /* drive available */
        !            64: /* bit 12 unused */
        !            65: /* bit 13 - massbus control parity error not emulated */
        !            66: #define        UT_TRE          0x4000          /* transfer error */
        !            67: #define        UT_SC           0x8000          /* special condition */
        !            68: 
        !            69: #define        UT_BITS \
        !            70: "\10\20SC\17TRE\14DVA\10RDY\7IE\1GO"
        !            71: 
        !            72: /*
        !            73:  * utcs2 --
        !            74:  *   controller clear, error flags, and unit select
        !            75:  */
        !            76: /* bits 0-2 are unit select */
        !            77: #define        UTCS2_BAI       0x0008          /* UNIBUS address increment inhibit */
        !            78: #define        UTCS2_PAT       0x0010          /* parity test */
        !            79: #define        UTCS2_CLR       0x0020          /* controller clear */
        !            80: #define        UTCS2_IR        0x0040          /* input ready (not emulated) */
        !            81: #define        UTCS2_OR        0x0080          /* output ready (not emulated) */
        !            82: #define        UTCS2_RPE       0x0100          /* rom parity error */
        !            83: #define        UTCS2_MXF       0x0200          /* missed transfer */
        !            84: #define        UTCS2_NEM       0x0400          /* non existant memory */
        !            85: #define        UTCS2_PGE       0x0800          /* program error */
        !            86: #define        UTCS2_NED       0x1000          /* non existent drive */
        !            87: #define        UTCS2_PE        0x2000          /* parity error */
        !            88: #define        UTCS2_WCE       0x4000          /* write check error */
        !            89: #define        UTCS2_DLT       0x8000          /* data late */
        !            90: 
        !            91: #define        UTCS2_BITS \
        !            92: "\10\20DLT\17WCE\16PE\15NED\14NEM\13PGE\12MXF\11RPE\10OR\7IR\6CLR\5PAT\4BAI"
        !            93: 
        !            94: /*
        !            95:  * utds --
        !            96:  *   beginning of tape, end of tape, error summary bit, plus lots more
        !            97:  */
        !            98: #define        UTDS_SLA        0x0001          /* slave attention */
        !            99: #define        UTDS_BOT        0x0002          /* beginning of tape */
        !           100: #define        UTDS_TM         0x0004          /* tape mark */
        !           101: #define        UTDS_IDB        0x0008          /* identification burst */
        !           102: #define        UTDS_SDWN       0x0010          /* slowing down */
        !           103: #define        UTDS_PES        0x0020          /* phase encode status */
        !           104: #define        UTDS_SSC        0x0040          /* slave status change */
        !           105: #define        UTDS_DRY        0x0080          /* drive ready */
        !           106: #define        UTDS_DPR        0x0100          /* drive present (always 1) */
        !           107: #define        UTDS_GCR        0x0200          /* GCR status */
        !           108: #define        UTDS_EOT        0x0400          /* end of tape */
        !           109: #define        UTDS_WRL        0x0800          /* write lock */
        !           110: #define        UTDS_MOL        0x1000          /* medium on line */
        !           111: #define        UTDS_PIP        0x2000          /* positioning in progress */
        !           112: #define        UTDS_ERR        0x4000          /* composite error */
        !           113: #define        UTDS_ATA        0x8000          /* attention active */
        !           114: 
        !           115: #define        UTDS_BITS \
        !           116: "\10\20ATA\17ERR\16PIP\15MOL\14WRL\13EOT\12GCR\11DPR\10DRY\7SSC\6PES\5SDWN\4IDB\3TM\2BOT\1SLA"
        !           117: 
        !           118: /*
        !           119:  * uter --
        !           120:  *   detailed breakdown of error summary bit from cs2
        !           121:  */
        !           122: #define        UTER_ILF        0x0001          /* illegal function */
        !           123: #define        UTER_ILR        0x0002          /* illegal register (always 0) */
        !           124: #define        UTER_RMR        0x0004          /* register modification refused */
        !           125: #define        UTER_RPE        0x0008          /* read data parity error */
        !           126: #define        UTER_FMT        0x0010          /* format error */
        !           127: #define        UTER_DPAR       0x0020          /* data bus parity error */
        !           128: #define        UTER_INC        0x0040          /* incorrectable data */
        !           129: #define        UTER_PEF        0x0080          /* PE format error */
        !           130: #define        UTER_NSG        0x0100          /* non standard gap */
        !           131: #define        UTER_FCE        0x0200          /* frame count error */
        !           132: #define        UTER_CS         0x0400          /* correctable skew */
        !           133: #define        UTER_NEF        0x0800          /* non executable function */
        !           134: #define        UTER_DTE        0x1000          /* drive timing error */
        !           135: #define        UTER_OPI        0x2000          /* operation incomplete */
        !           136: #define        UTER_UNS        0x4000          /* unsafe */
        !           137: #define        UTER_COR        0x8000          /* correctible data error */
        !           138: 
        !           139: /*
        !           140:  * These errors we consider "hard"; UTER_OPI and UTER_RPE
        !           141:  * are considered "soft", at least for the moment.
        !           142:  */
        !           143: #define        UTER_HARD       (UTER_UNS|UTER_NEF|UTER_DPAR|UTER_FMT|UTER_RMR|\
        !           144:                         UTER_ILR|UTER_ILF)
        !           145: 
        !           146: #define        UTER_BITS \
        !           147: "\10\20COR\17UNS\16OPI\15DTE\14NEF\13CS\12FCE\11NSG\10PEF\7INC\6DPAR\5FMT\4RPE\3RMR\2ILR\1ILF"
        !           148: 
        !           149: /*
        !           150:  * uttc --
        !           151:  *   tape format and density
        !           152:  */
        !           153: /* bits 0-2 are slave select */
        !           154: #define        UTTC_EVPAR      0x0008          /* even parity */
        !           155: #define        UTTC_FMT        0x00f0          /* format select (see below) */
        !           156: #define        UTTC_DEN        0x0700          /* density select (see below) */
        !           157: /* bit 11 not used */
        !           158: #define        UTTC_EAODTE     0x1000          /* (not emulated) */
        !           159: #define        UTTC_TCW        0x2000          /* tape control write */
        !           160: #define        UTTC_FCS        0x4000          /* frame count status */
        !           161: #define        UTTC_ACCL       0x8000          /* acceleration */
        !           162: 
        !           163: /* the bits to stuff in UTTC_DEN */
        !           164: #define        UT_NRZI         0x0000          /* 800 bpi code */
        !           165: #define        UT_PE           0x0400          /* 1600 bpi code */
        !           166: #define        UT_GCR          0x0500          /* 6250 bpi code */
        !           167: 
        !           168: /* tape formats - only PDP-11 standard is supported */
        !           169: #define        PDP11FMT        0x00c0          /* PDP-11 standard */
        !           170: 
        !           171: #define        b_repcnt  b_bcount
        !           172: #define        b_command b_resid
        !           173: #define        b_state   b_active  

unix.superglobalmegacorp.com

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