|
|
1.1 root 1:
2: #define V_CMDI 0 /* send command */
3: #define V_CMDRI 1 /* let vioc process next cmd */
4: #define V_URESP 2 /* response to unsolicited command */
5: #define V_RESET 1 /* cause a vioc reset */
6: #define V_TRP 2 /* cause a vioc trap */
7: #define V_INTR 4 /* cause a vioc interrupt */
8: #define V_ERR 0x80 /* generic error flag */
9: #define V_BSY 0x80 /* generic busy flag */
10: #define V_UNBSY 0x80 /* not busy for unsolicited interrupt */
11:
12: #define V_RDY 0xa /* Vioc ready after reset */
13: #define V_ALLOK 0x0a55 /* VIOC passed internal diagnostic */
14: #define V_BAD 0x02 /* VIOC failed internal diagnostic */
15: #define V_P1BAD 0x03 /* Connector panel #1 is bad */
16: #define V_P2BAD 0x03 /* Connector panel #2 is bad */
17:
18: #define VSPEED 7 /* standard speed is 300 baud */
19: #define VCVECT 64 ; /* base vioc vector */
20:
21:
22: #define NVXPORTS 8 /* Total nbr of viocx terminal ports */
23: #define VXLEN 05 /* essentially the nbr of pending "reads" */
24: #define VIDENT 0x3FE /* vioc ident displacement into vblok */
25: #define VREADY 0x55 /* denotes no err in vioc self-initializaton */
26: #define FAULT 0x400
27: #define FECPNBR 1
28: #define V_REVNBR 040
29:
30: #define VRESPLEN 0100
31: #define VCMDLEN 16
32: #define VC_IQLEN 16 /* Interrupt circular queue length */
33:
34: #define VIOCX 0xa /* identifies viocx in v_ident */
35: #define SSPEED 13 /* standard speed 9600 bps */
36: #define MDMCTL 0x1004 /* auto modem control */
37:
38: #define V_MAN 0203 /* man + DTR + RTS */
39: #define V_AUTO 0002 /* auto + DTR */
40: #define V_RTS 0001 /* assert RTS */
41: #define V_DISAB 0200 /* manual + isable DTR and RTS */
42:
43: #define BRK_CHR 040
44: #define DCD_ON 020
45: #define DCD_OFF 010
46: #define CTS_ON 004
47:
48: #define SILOBAS 0x800+VIOCBAS
49: #define NVIOCXLIN 16 /* nbr lines per vioc-x */
50: #define VSILTIM 10 /* silo timount value,10=100msec */
51: #define NVCXBUFS 12 /* number of command buffers */
52: #define LIDENT 0x0008 /* load ident, set int vectors */
53: #define LSILOA 0x0104 /* set silos */
54: #define XMITDTA 0x0200 /* transmit */
55: #define FDTATOX 0x8304 /* flush data */
56: #define EXMODEX 0x0404 /* xon xoff mode */
57: #define DXMODEX 0x0504 /* disable xon,xoff */
58: #define LPARAX 0x060a /* load params */
59: #define RPARALX 0x0704 /* request params from viocx */
60: #define RPARADX 0x0804 /* request params dma */
61: #define AUTOLP 0x0900 /* auto loop back /local echo */
62: #define PERROR 0x40
63: #define FERROR 0x80
64: #define RCVOVRN 0xc0
65:
66: /*
67: * Data Structures
68: */
69:
70: struct vblok { /* Common buffer seen by HOST */
71: char v_vioc; /* type of interrupt + voic bsy flg */
72: char v_hdwre; /* trap, reset, or hard interrupt */
73:
74: char v_vcbsy; /* command busy (set by host) */
75: char v_vcid; /* command id. */
76:
77: short v_vcp0; /* command address, high byte (sent by HOST) */
78: short v_vcp1; /* command address, low byte (sent by HOST) */
79:
80: short not_used;
81: short v_rsp; /* Offset to VIOC_BASE (ffx000) */
82: /* Respond buff. addr = (VIOC_BASE + v_rsp) */
83:
84: char v_ustat; /* Unsolicited status */
85: char v_uqual; /* qualifies of unsolicited interrupt */
86:
87: char v_usdata[0x42] ; /* unsolicited interrupt data */
88:
89: short v_ident ; /* VIOC identifier */
90: /* denotes fault or ready after reset */
91:
92: short v_dcd ; /* f2 bit mask for carr detect by port */
93: short v_cts ; /* f4 bit mask for cts by port */
94: };
95:
96: #define CMDMAXLEN 10
97: struct cmd_inp /* Command input block */
98: {
99: short opcode;
100: char byte[CMDMAXLEN];
101: };
102:
103: #define RESMAXLEN 100
104: struct cmd_res /* Command respond block */
105: {
106: char stat; /* Respond status */
107: char id; /* Identification code */
108: struct cmd_inp; /* Command input block */
109: char byte[RESMAXLEN];
110: };
111:
112: #define BUFLEN 100
113: #define NVIOC 1
114:
115:
116: struct vbuf {
117: long cnt;
118: long nxt_c;
119: long nxt_fill;
120: char buf[BUFLEN];
121: };
122:
123: struct vbuf vi_buf[NVIOC*16];
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.