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 * @(#)tsreg.h 7.3 (Berkeley) 05/04/89 7 */ 8 9 /* 10 * TS11 controller registers 11 */ 12 struct tsdevice { 13 u_short tsdb; /* data buffer */ 14 u_short tssr; /* status register */ 15 }; 16 17 /* Bits in (unibus) status register */ 18 #define TS_SC 0100000 /* special condition (error) */ 19 #define TS_UPE 0040000 /* Unibus parity error */ 20 #define TS_SPE 0020000 /* serial bus parity error */ 21 #define TS_RMR 0010000 /* register modification refused */ 22 #define TS_NXM 0004000 /* non-existent memory */ 23 #define TS_NBA 0002000 /* need buffer address */ 24 #define TS_XMEM 0001400 /* Unibus xmem bits */ 25 #define TS_SSR 0000200 /* subsytem ready */ 26 #define TS_OFL 0000100 /* off-line */ 27 #define TS_FTC 0000060 /* fatal termination class */ 28 #define TS_TC 0000016 /* termination class */ 29 30 #define TS_SUCC 000 /* successful termination */ 31 #define TS_ATTN 002 /* attention */ 32 #define TS_ALERT 004 /* tape status alert */ 33 #define TS_REJECT 06 /* function reject */ 34 #define TS_RECOV 010 /* recoverable error */ 35 #define TS_RECNM 012 /* recoverable error, no tape motion */ 36 #define TS_UNREC 014 /* unrecoverable error */ 37 #define TS_FATAL 016 /* fatal error */ 38 39 #define TSSR_BITS \ 40 "\10\20SC\17UPE\16SPE\15RMR\14NXM\13NBA\12A17\11A16\10SSR\ 41 \7OFL\6FC1\5FC0\4TC2\3TC1\2TC0\1-" 42 43 #define b_repcnt b_bcount 44 #define b_command b_resid 45 46 /* status message */ 47 struct ts_sts { 48 u_short s_sts; /* packet header */ 49 u_short s_len; /* packet length */ 50 u_short s_rbpcr; /* residual frame count */ 51 u_short s_xs0; /* extended status 0 - 3 */ 52 u_short s_xs1; 53 u_short s_xs2; 54 u_short s_xs3; 55 }; 56 57 /* Error codes in xstat 0 */ 58 #define TS_TMK 0100000 /* tape mark detected */ 59 #define TS_RLS 0040000 /* record length short */ 60 #define TS_LET 0020000 /* logical end of tape */ 61 #define TS_RLL 0010000 /* record length long */ 62 #define TS_WLE 0004000 /* write lock error */ 63 #define TS_NEF 0002000 /* non-executable function */ 64 #define TS_ILC 0001000 /* illegal command */ 65 #define TS_ILA 0000400 /* illegal address */ 66 #define TS_MOT 0000200 /* capstan is moving */ 67 #define TS_ONL 0000100 /* on-line */ 68 #define TS_IES 0000040 /* interrupt enable status */ 69 #define TS_VCK 0000020 /* volume check */ 70 #define TS_PED 0000010 /* phase-encoded drive */ 71 #define TS_WLK 0000004 /* write locked */ 72 #define TS_BOT 0000002 /* beginning of tape */ 73 #define TS_EOT 0000001 /* end of tape */ 74 75 #define TSXS0_BITS \ 76 "\10\20TMK\17RLS\16LET\15RLL\14WLE\13NEF\12ILC\11ILA\10MOT\ 77 \7ONL\6IES\5VCK\4PED\3WLK\2BOT\1EOT" 78 79 /* Error codes in xstat 1 */ 80 #define TS_DLT 0100000 /* data late */ 81 #define TS_COR 0020000 /* correctable data */ 82 #define TS_CRS 0010000 /* crease detected */ 83 #define TS_TIG 0004000 /* trash in the gap */ 84 #define TS_DBF 0002000 /* deskew buffer full */ 85 #define TS_SCK 0001000 /* speed check */ 86 #define TS_IPR 0000200 /* invalid preamble */ 87 #define TS_SYN 0000100 /* synchronization failure */ 88 #define TS_IPO 0000040 /* invalid postamble */ 89 #define TS_IED 0000020 /* invalid end of data */ 90 #define TS_POS 0000010 /* postamble short */ 91 #define TS_POL 0000004 /* postamble long */ 92 #define TS_UNC 0000002 /* uncorrectable data */ 93 #define TS_MTE 0000001 /* multitrack error */ 94 95 #define TSXS1_BITS \ 96 "\10\20DLT\17-\16COR\15CRS\14TIG\13DBF\12SCK\11-\10IPR\ 97 \7SYN\6IPO\5IED\4POS\3POL\2UNC\1MTE" 98 99 /* Error codes in xstat 2 */ 100 #define TS_OPM 0100000 /* operation in progress */ 101 #define TS_SIP 0040000 /* silo parity error */ 102 #define TS_BPE 0020000 /* serial bus parity error */ 103 #define TS_CAF 0010000 /* capstan acceleration failure */ 104 #define TS_WCF 0002000 /* write card fail */ 105 #define TS_DTP 0000400 /* dead track parity */ 106 #define TS_DT 0000377 /* dead tracks */ 107 108 #define TSXS2_BITS \ 109 "\10\20OPM\17SIP\16BPE\15CAF\14-\13WCF\12-\11DTP" 110 111 /* Error codes in xstat 3 */ 112 #define TS_MEC 0177400 /* microdiagnostic error code */ 113 #define TS_LMX 0000200 /* limit exceeded */ 114 #define TS_OPI 0000100 /* operation incomplete */ 115 #define TS_REV 0000040 /* reverse */ 116 #define TS_CRF 0000020 /* capstan response fail */ 117 #define TS_DCK 0000010 /* density check */ 118 #define TS_NOI 0000004 /* noise record */ 119 #define TS_LXS 0000002 /* limit exceeded statically */ 120 #define TS_RIB 0000001 /* reverse into BOT */ 121 122 #define TSXS3_BITS \ 123 "\10\10LMX\7OPI\6REV\5CRF\4DCK\3NOI\2LXS\1RIB" 124 125 126 /* command message */ 127 struct ts_cmd { 128 u_short c_cmd; /* command */ 129 u_short c_loba; /* low order buffer address */ 130 u_short c_hiba; /* high order buffer address */ 131 #define c_repcnt c_loba 132 u_short c_size; /* byte count */ 133 }; 134 135 /* commands and command bits */ 136 #define TS_ACK 0100000 /* ack - release command packet */ 137 #define TS_CVC 0040000 /* clear volume check */ 138 #define TS_IE 0000200 139 #define TS_RCOM 0000001 140 #define TS_REREAD 0001001 /* read data retry */ 141 #define TS_SETCHR 0000004 /* set characteristics */ 142 #define TS_WCOM 0000005 143 #define TS_REWRITE 0001005 /* write data retry */ 144 #define TS_RETRY 0001000 /* retry bit for read and write */ 145 #define TS_SFORW 0000010 /* forward space record */ 146 #define TS_SREV 0000410 /* reverse space record */ 147 #define TS_SFORWF 0001010 /* forward space file */ 148 #define TS_SREVF 0001410 /* reverse space file */ 149 #define TS_REW 0002010 /* rewind */ 150 #define TS_OFFL 0000412 /* unload */ 151 #define TS_WEOF 0000011 /* write tape mark */ 152 #define TS_SENSE 0000017 /* get status */ 153 154 /* characteristics data */ 155 struct ts_char { 156 long char_addr; /* address of status packet */ 157 u_short char_size; /* its size */ 158 u_short char_mode; /* characteristics */ 159 }; 160 161 162 /* characteristics */ 163 #define TS_ESS 0200 /* enable skip tape marks stop */ 164 #define TS_ENB 0100 /* enable skip stop BOT */ 165 #define TS_EAI 0040 /* enable attention interrupts */ 166 #define TS_ERI 0020 /* enable message buffer release interrupts */ 167 168 /* Emulex TC13 only */ 169 #define TS_NRZI 0001 /* select NRZI (800bpi) rather than PE */ 170