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