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