|
|
1.1 root 1: /*
2: * DR-11C interface
3: * The routines in this driver are not called through the normal
4: * device interface. Instead, they are available for other device
5: * drivers to use to send arbitrary information out on a DR-11C.
6: */
7:
8: #include "dr.h"
9: #include "../h/param.h"
10: #include "../h/dir.h"
11: #include "../h/user.h"
12: #include "../h/conf.h"
13: #include "../h/inode.h"
14: #include "../h/file.h"
15: #include "../h/systm.h"
16: #include "../h/pte.h"
17: #include "../h/buf.h"
18: #include "../h/ubareg.h"
19: #include "../h/ubavar.h"
20:
21: /* number of output bits available in a DR -- must be a power of 2 */
22: #define DRWIDTH 16
23:
24: /* DRWIDTH is 2**DRSHIFT */
25: #define DRSHIFT 4
26:
27: struct drreg {
28: u_short drcsr, drout, drin;
29: };
30:
31: int drattach(), drprobe();
32: struct uba_device *drinfo[NDR];
33: u_short drstd[] = { 0 };
34: struct uba_driver drdriver =
35: { drprobe, 0, drattach, 0, drstd, "dr", drinfo };
36:
37: drprobe(reg)
38: caddr_t reg;
39: {
40: register int br, cvec;
41: register struct drreg *draddr = (struct drreg *) reg;
42:
43: draddr->drcsr = 0;
44: br = 0x15;
45: cvec = 0700; /* hope this will not be used */
46: return 1;
47: }
48:
49: drattach()
50: {
51: }
52:
53: /* set bit n of the dr-11 complex to v */
54: drsetbit (n, v)
55: register int n;
56: register int v;
57: {
58: if (drinfo[n>>DRSHIFT]->ui_alive == 0)
59: return;
60: if (n >= 0 && n < (NDR << DRSHIFT)) {
61: register u_short bit;
62: register struct drreg *drptr;
63: drptr = (struct drreg *) drinfo[n>>DRSHIFT] -> ui_addr;
64: bit = 1 << (n & (DRWIDTH - 1));
65: if (v)
66: drptr->drout |= bit;
67: else
68: drptr->drout &= ~bit;
69: }
70: }
71:
72: drrint()
73: {
74: }
75:
76: drxint()
77: {
78: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.