update mscp_driver struct
[unix-history] / usr / src / sys / vax / mba / mtreg.h
CommitLineData
da7c5cc6 1/*
0880b18e 2 * Copyright (c) 1982, 1986 Regents of the University of California.
da7c5cc6
KM
3 * All rights reserved. The Berkeley software License Agreement
4 * specifies the terms and conditions for redistribution.
5 *
618ad62d 6 * @(#)mtreg.h 7.2 (Berkeley) %G%
da7c5cc6 7 */
c0e2fce3
BJ
8
9/*
10 * TU78 registers.
11 */
12
13struct mtdevice {
14 int mtcs; /* control status register */
15 int mter; /* error register */
16 int mtca; /* command address, rec cnt, skp cnt reg */
17 int mtmr1; /* maintenance register */
18 int mtas; /* attention summary register */
19 int mtbc; /* byte count register */
20 int mtdt; /* drive type register */
21 int mtds; /* drive status register */
22 int mtsn; /* serial number register */
23 int mtmr2; /* maintenance register */
24 int mtmr3; /* maintenance register */
25 int mtner; /* non-data transfer error register */
26 int mtncs[4]; /* non-data transfer command registers */
27 int mtia; /* internal address */
28 int mtid; /* internal data */
29};
30
31/* mtcs */
32#define MT_GO 000001 /* go bit */
33#define MT_NOOP 000002 /* no operation */
34#define MT_UNLOAD 000004 /* unload tape */
35#define MT_REW 000006 /* rewind */
36#define MT_SENSE 000010 /* sense */
37#define MT_DSE 000012 /* data security erase */
38#define MT_WTMPE 000014 /* write phase encoded tape mark */
39#define MT_WTM MT_WTMPE /* generic write tape mark */
40#define MT_WTMGCR 000016 /* write GCR tape mark */
41#define MT_SFORW 000020 /* space forward record */
42#define MT_SREV 000022 /* space reverse record */
43#define MT_SFORWF 000024 /* space forward file */
44#define MT_SREVF 000026 /* space reverse file */
45#define MT_SFORWE 000030 /* space forward either */
46#define MT_SREVE 000032 /* space reverse either */
47#define MT_ERGPE 000034 /* erase tape, set PE */
48#define MT_ERASE MT_ERGPE /* generic erase tape */
49#define MT_ERGGCR 000036 /* erase tape, set GCR */
50#define MT_CLSPE 000040 /* close file PE */
51#define MT_CLS MT_CLSPE /* generic close file */
52#define MT_CLSGCR 000042 /* close file GCR */
53#define MT_SLEOT 000044 /* space to logical EOT */
54#define MT_SFLEOT 000046 /* space forward file, stop on LEOT */
55#define MT_WCHFWD 000050 /* write check forward */
56#define MT_WCHREV 000056 /* write check reverse */
57#define MT_WRITEPE 000060 /* write phase encoded */
58#define MT_WRITE MT_WRITEPE /* generic write */
59#define MT_WRITEGCR 000062 /* write group coded */
60#define MT_READ 000070 /* read forward */
61#define MT_EXSNS 000072 /* read extended sense error log */
62#define MT_READREV 000076 /* read reverse */
63#define MT_GCR 000002 /* make generic ops GCR ops */
64
65/* mtds */
66#define MTDS_RDY 0100000 /* tape ready */
67#define MTDS_PRES 0040000 /* tape unit has power */
68#define MTDS_ONL 0020000 /* online */
69#define MTDS_REW 0010000 /* tape rewinding */
70#define MTDS_PE 0004000 /* tape set for phase encoded */
71#define MTDS_BOT 0002000 /* tape at BOT */
72#define MTDS_EOT 0001000 /* tape at EOT */
73#define MTDS_FPT 0000400 /* write protected */
74#define MTDS_AVAIL 0000200 /* unit available */
75#define MTDS_SHR 0000100 /* unit is shared */
76#define MTDS_MAINT 0000040 /* maintenance mode */
77#define MTDS_DSE 0000020 /* DSE in progress */
78
79#define MTDS_BITS \
80"\10\20RDY\17PRES\16ONL\15REW\14PE\13BOT\12EOT\11FPT\10AVAIL\
81\7SHR\6MAINT\5DSE"
82
83/* mter */
84#define MTER_INTCODE 0377 /* mask for interrupt code */
618ad62d
KB
85#define MTER_FAILCODE 0176000 /* failure code */
86#define MTER_FSHIFT 10 /* shift to make units */
c0e2fce3
BJ
87
88/* interrupt codes */
89#define MTER_DONE 001 /* operation complete */
90#define MTER_TM 002 /* unexpected tape mark */
91#define MTER_BOT 003 /* unexpected BOT detected */
92#define MTER_EOT 004 /* tape positioned beyond EOT */
93#define MTER_LEOT 005 /* unexpected LEOT detected */
94#define MTER_NOOP 006 /* no-op completed */
95#define MTER_RWDING 007 /* rewinding */
96#define MTER_FPT 010 /* write protect error */
97#define MTER_NOTRDY 011 /* not ready */
98#define MTER_NOTAVL 012 /* not available */
99#define MTER_OFFLINE 013 /* offline */
100#define MTER_NONEX 014 /* unit does not exist */
101#define MTER_NOTCAP 015 /* not capable */
102#define MTER_ONLINE 017 /* tape came online */
103#define MTER_LONGREC 020 /* long tape record */
104#define MTER_SHRTREC 021 /* short tape record */
105#define MTER_RETRY 022 /* retry */
106#define MTER_RDOPP 023 /* read opposite */
107#define MTER_UNREAD 024 /* unreadable */
108#define MTER_ERROR 025 /* error */
109#define MTER_EOTERR 026 /* EOT error */
110#define MTER_BADTAPE 027 /* tape position lost */
111#define MTER_TMFLTA 030 /* TM fault A */
112#define MTER_TUFLTA 031 /* TU fault A */
113#define MTER_TMFLTB 032 /* TM fault B */
114#define MTER_MBFLT 034 /* Massbus fault */
115#define MTER_KEYFAIL 077 /* keypad entry error */
116
117/* mtdt */
118#define MTDT_NSA 0100000 /* not sector addressed; always 1 */
119#define MTDT_TAP 0040000 /* tape; always 1 */
120#define MTDT_MOH 0020000 /* moving head; always 0 */
121#define MTDT_7CH 0010000 /* 7 channel; always 0 */
122#define MTDT_DRQ 0004000 /* drive request required */
123#define MTDT_SPR 0002000 /* slave present; always 1 ??? */
124/* bit 9 is spare */
125/* bits 8-0 are formatter/transport type */
126
127/* mtid */
128#define MTID_RDY 0100000 /* controller ready */
129#define MTID_CLR 0040000 /* controller clear */
130
131#define b_repcnt b_bcount
132#define b_command b_resid