|
|
1.1 root 1: /*
2: * Copyright (c) 1988 University of Utah.
3: * Copyright (c) 1990 The Regents of the University of California.
4: * All rights reserved.
5: *
6: * This code is derived from software contributed to Berkeley by
7: * the Systems Programming Group of the University of Utah Computer
8: * Science Department.
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: * 3. All advertising materials mentioning features or use of this software
19: * must display the following acknowledgement:
20: * This product includes software developed by the University of
21: * California, Berkeley and its contributors.
22: * 4. Neither the name of the University nor the names of its contributors
23: * may be used to endorse or promote products derived from this software
24: * without specific prior written permission.
25: *
26: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36: * SUCH DAMAGE.
37: *
38: * @(#)dca.c 7.3 (Berkeley) 5/7/91
39: */
40:
41: #ifdef DCACONSOLE
42: #include "sys/param.h"
43: #include "../dev/dcareg.h"
44: #include "../include/cpu.h"
45: #include "../hp300/cons.h"
46:
47: struct dcadevice *dcacnaddr = 0;
48:
49: dcaprobe(cp)
50: struct consdev *cp;
51: {
52: register struct dcadevice *dca;
53:
54: dcacnaddr = (struct dcadevice *) sctoaddr(CONSCODE);
55: if (badaddr((char *)dcacnaddr)) {
56: cp->cn_pri = CN_DEAD;
57: return;
58: }
59: dca = dcacnaddr;
60: switch (dca->dca_irid) {
61: case DCAID0:
62: case DCAID1:
63: cp->cn_pri = CN_NORMAL;
64: break;
65: case DCAREMID0:
66: case DCAREMID1:
67: cp->cn_pri = CN_REMOTE;
68: break;
69: default:
70: cp->cn_pri = CN_DEAD;
71: break;
72: }
73: }
74:
75: dcainit(cp)
76: struct consdev *cp;
77: {
78: register struct dcadevice *dca = dcacnaddr;
79:
80: dca->dca_irid = 0xFF;
81: DELAY(100);
82: dca->dca_ic = 0;
83: dca->dca_cfcr = CFCR_DLAB;
84: dca->dca_data = DCABRD(9600) & 0xFF;
85: dca->dca_ier = DCABRD(9600) >> 8;
86: dca->dca_cfcr = CFCR_8BITS;
87: }
88:
89: #ifndef SMALL
90: dcagetchar()
91: {
92: register struct dcadevice *dca = dcacnaddr;
93: short stat;
94: int c;
95:
96: if (((stat = dca->dca_lsr) & LSR_RXRDY) == 0)
97: return(0);
98: c = dca->dca_data;
99: return(c);
100: }
101: #else
102: dcagetchar()
103: {
104: return(0);
105: }
106: #endif
107:
108: dcaputchar(c)
109: register int c;
110: {
111: register struct dcadevice *dca = dcacnaddr;
112: register int timo;
113: short stat;
114:
115: /* wait a reasonable time for the transmitter to come ready */
116: timo = 50000;
117: while (((stat = dca->dca_lsr) & LSR_TXRDY) == 0 && --timo)
118: ;
119: dca->dca_data = c;
120: /* wait for this transmission to complete */
121: timo = 1000000;
122: while (((stat = dca->dca_lsr) & LSR_TXRDY) == 0 && --timo)
123: ;
124: }
125: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.