xref: /csrg-svn/sys/hp300/stand/cons.c (revision 41488)
1*41488Smckusick /*
2*41488Smckusick  * Copyright (c) 1988 University of Utah.
3*41488Smckusick  * Copyright (c) 1990 The Regents of the University of California.
4*41488Smckusick  * All rights reserved.
5*41488Smckusick  *
6*41488Smckusick  * This code is derived from software contributed to Berkeley by
7*41488Smckusick  * the Systems Programming Group of the University of Utah Computer
8*41488Smckusick  * Science Department.
9*41488Smckusick  *
10*41488Smckusick  * %sccs.include.redist.c%
11*41488Smckusick  *
12*41488Smckusick  * from: Utah $Hdr: cons.c 1.5 89/08/22$
13*41488Smckusick  *
14*41488Smckusick  *	@(#)cons.c	7.1 (Berkeley) 05/08/90
15*41488Smckusick  */
16*41488Smckusick 
17*41488Smckusick #include "param.h"
18*41488Smckusick #include "samachdep.h"
19*41488Smckusick #include "machine/cons.h"
20*41488Smckusick 
21*41488Smckusick int	nodev();
22*41488Smckusick #ifdef ITECONSOLE
23*41488Smckusick int	iteprobe(), iteinit(), itegetchar(), iteputchar();
24*41488Smckusick #endif
25*41488Smckusick #ifdef DCACONSOLE
26*41488Smckusick int	dcaprobe(), dcainit(), dcagetchar(), dcaputchar();
27*41488Smckusick #endif
28*41488Smckusick 
29*41488Smckusick struct consdev constab[] = {
30*41488Smckusick #ifdef ITECONSOLE
31*41488Smckusick 	{ iteprobe,	iteinit,	itegetchar,	iteputchar },
32*41488Smckusick #endif
33*41488Smckusick #ifdef DCACONSOLE
34*41488Smckusick 	{ dcaprobe,	dcainit,	dcagetchar,	dcaputchar },
35*41488Smckusick #endif
36*41488Smckusick 	{ 0 },
37*41488Smckusick };
38*41488Smckusick 
39*41488Smckusick struct consdev *cn_tab;
40*41488Smckusick int noconsole;
41*41488Smckusick 
42*41488Smckusick cninit()
43*41488Smckusick {
44*41488Smckusick 	register struct consdev *cp;
45*41488Smckusick 
46*41488Smckusick 	cn_tab = NULL;
47*41488Smckusick 	noconsole = 1;
48*41488Smckusick 	for (cp = constab; cp->cn_probe; cp++) {
49*41488Smckusick 		(*cp->cn_probe)(cp);
50*41488Smckusick 		if (cp->cn_pri > CN_DEAD &&
51*41488Smckusick 		    (cn_tab == NULL || cp->cn_pri > cn_tab->cn_pri))
52*41488Smckusick 			cn_tab = cp;
53*41488Smckusick 	}
54*41488Smckusick 	if (cn_tab) {
55*41488Smckusick 		(*cn_tab->cn_init)(cn_tab);
56*41488Smckusick 		noconsole = 0;
57*41488Smckusick 	}
58*41488Smckusick }
59*41488Smckusick 
60*41488Smckusick cngetc()
61*41488Smckusick {
62*41488Smckusick 	if (cn_tab)
63*41488Smckusick 		return((*cn_tab->cn_getc)());
64*41488Smckusick 	return(0);
65*41488Smckusick }
66*41488Smckusick 
67*41488Smckusick cnputc(c)
68*41488Smckusick 	int c;
69*41488Smckusick {
70*41488Smckusick 	if (cn_tab)
71*41488Smckusick 		(*cn_tab->cn_putc)(c);
72*41488Smckusick }
73