|
|
1.1 root 1: /* dmfreg.h 6.1 83/07/29 */
2:
3: /*
4: * DMF-32 definitions.
5: */
6:
7: /*
8: * "dmf" (unqualified) refers to the async portion of the dmf32,
9: * "dmfc" to the combo portion,
10: * "dmfs" to the sync portion,
11: * "dmfl" to the lp portion, and
12: * "dmfd" to the dr portion.
13: */
14: struct dmfdevice {
15: short dmfccsr0; /* combo csr 0 */
16: short dmfccsr1; /* combo csr 1 */
17: short dmfs[4];
18: short dmfcsr; /* control-status register */
19: short dmflpr; /* line parameter register */
20: short dmfrbuf; /* receiver buffer (ro) */
21: union {
22: u_short dmfirw; /* indirect register word */
23: u_char dmfirc[2]; /* " " bytes */
24: } dmfun;
25: short dmfl[2];
26: short dmfd[4];
27: };
28:
29: #define dmfrsp dmfrbuf /* receive silo parameter register (wo) */
30: #define dmftbuf dmfun.dmfirc[0] /* transmit buffer */
31: #define dmftsc dmfun.dmfirc[0] /* transmit silo count */
32: #define dmfrms dmfun.dmfirc[1] /* receive modem status */
33: #define dmflcr dmfun.dmfirc[0] /* line control register */
34: #define dmftms dmfun.dmfirc[1] /* transmit modem status */
35: #define dmftba dmfun.dmfirw /* transmit buffer address */
36: #define dmftcc dmfun.dmfirw /* transmit character count */
37:
38: /* bits in dmfcsr */
39: #define DMF_TI 0100000 /* transmit interrupt */
40: #define DMF_TIE 0040000 /* transmit interrupt enable */
41: #define DMF_NXM 0020000 /* non-existant memory */
42: #define DMF_LIN 0003400 /* transmit line number */
43: #define DMF_RI 0000200 /* receiver interrupt */
44: #define DMF_RIE 0000100 /* receiver interrupt enable */
45: #define DMF_CLR 0000040 /* master reset */
46: #define DMF_IAD 0000037 /* indirect address register */
47:
48: #define DMFIR_TBUF 000 /* select tbuf indirect register */
49: #define DMFIR_LCR 010 /* select lcr indirect register */
50: #define DMFIR_TBA 020 /* select tba indirect register */
51: #define DMFIR_TCC 030 /* select tcc indirect register */
52:
53: /* bits in dmflpr */
54: #define BITS6 (01<<3)
55: #define BITS7 (02<<3)
56: #define BITS8 (03<<3)
57: #define TWOSB 0200
58: #define PENABLE 040
59: #define EPAR 0100
60:
61: #define DMF_IE (DMF_TIE|DMF_RIE)
62:
63: #define DMF_SILOCNT 32 /* size of DMF output silo (per line) */
64:
65: /* bits in dmfrbuf */
66: #define DMF_DSC 0004000 /* data set change */
67: #define DMF_PE 0010000 /* parity error */
68: #define DMF_FE 0020000 /* framing error */
69: #define DMF_DO 0040000 /* data overrun */
70:
71: /* bits in dmfrms */
72: #define DMF_USRR 0004 /* user modem signal (pin 25) */
73: #define DMF_SR 0010 /* secondary receive */
74: #define DMF_CTS 0020 /* clear to send */
75: #define DMF_CAR 0040 /* carrier detect */
76: #define DMF_RNG 0100 /* ring */
77: #define DMF_DSR 0200 /* data set ready */
78:
79: /* bits in dmftms */
80: #define DMF_USRW 0001 /* user modem signal (pin 18) */
81: #define DMF_DTR 0002 /* data terminal ready */
82: #define DMF_RATE 0004 /* data signal rate select */
83: #define DMF_ST 0010 /* secondary transmit */
84: #define DMF_RTS 0020 /* request to send */
85: #define DMF_BRK 0040 /* pseudo break bit */
86: #define DMF_PREEMPT 0200 /* preempt output */
87:
88: /* flags for modem control */
89: #define DMF_ON (DMF_DTR|DMF_RTS)
90: #define DMF_OFF 0
91:
92: /* bits in dmflcr */
93: #define DMF_MIE 0040 /* modem interrupt enable */
94: #define DMF_FLUSH 0020 /* flush transmit silo */
95: #define DMF_RBRK 0010 /* real break bit */
96: #define DMF_RE 0004 /* receive enable */
97: #define DMF_AUTOX 0002 /* auto XON/XOFF */
98: #define DMF_TE 0001 /* transmit enable */
99:
100: #define DMFLCR_ENA (DMF_MIE|DMF_RE|DMF_TE)
101:
102: /* bits in dm lsr, copied from dh.c */
103: #define DML_USR 0001000 /* usr modem sig, not a real DM bit */
104: #define DML_DSR 0000400 /* data set ready, not a real DM bit */
105: #define DML_RNG 0000200 /* ring */
106: #define DML_CAR 0000100 /* carrier detect */
107: #define DML_CTS 0000040 /* clear to send */
108: #define DML_SR 0000020 /* secondary receive */
109: #define DML_ST 0000010 /* secondary transmit */
110: #define DML_RTS 0000004 /* request to send */
111: #define DML_DTR 0000002 /* data terminal ready */
112: #define DML_LE 0000001 /* line enable */
113:
114: #define SETLCR(pt, exp) \
115: pt->dmfun.dmfirw = (((pt)->dmftms)<<8) | ((exp)&0xff)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.