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