xref: /original-bsd/sys/hp300/stand/cons.c (revision 13deef58)
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  * %sccs.include.redist.c%
11  *
12  * from: Utah $Hdr: cons.c 1.7 92/02/28$
13  *
14  *	@(#)cons.c	7.5 (Berkeley) 06/18/92
15  */
16 
17 #include "sys/param.h"
18 #include "samachdep.h"
19 #include "../hp/dev/cons.h"
20 
21 #ifdef ITECONSOLE
22 int	iteprobe(), iteinit(), itegetchar(), iteputchar();
23 #endif
24 #ifdef DCACONSOLE
25 int	dcaprobe(), dcainit(), dcagetchar(), dcaputchar();
26 #endif
27 #ifdef DCMCONSOLE
28 int	dcmprobe(), dcminit(), dcmgetchar(), dcmputchar();
29 #endif
30 
31 struct consdev constab[] = {
32 #ifdef ITECONSOLE
33 	{ iteprobe,	iteinit,	itegetchar,	iteputchar },
34 #endif
35 #ifdef DCACONSOLE
36 	{ dcaprobe,	dcainit,	dcagetchar,	dcaputchar },
37 #endif
38 #ifdef DCMCONSOLE
39 	{ dcmprobe,	dcminit,	dcmgetchar,	dcmputchar },
40 #endif
41 	{ 0 },
42 };
43 
44 struct consdev *cn_tab;
45 int noconsole;
46 
47 cninit()
48 {
49 	register struct consdev *cp;
50 
51 	cn_tab = NULL;
52 	noconsole = 1;
53 	for (cp = constab; cp->cn_probe; cp++) {
54 		(*cp->cn_probe)(cp);
55 		if (cp->cn_pri > CN_DEAD &&
56 		    (cn_tab == NULL || cp->cn_pri > cn_tab->cn_pri))
57 			cn_tab = cp;
58 	}
59 	if (cn_tab) {
60 		(*cn_tab->cn_init)(cn_tab);
61 		noconsole = 0;
62 	}
63 }
64 
65 cngetc()
66 {
67 	if (cn_tab)
68 		return((*cn_tab->cn_getc)());
69 	return(0);
70 }
71 
72 cnputc(c)
73 	int c;
74 {
75 #ifdef ROMPRF
76 	extern int userom;
77 
78 	if (userom)
79 		romputchar(c);
80 	else
81 #endif
82 	if (cn_tab)
83 		(*cn_tab->cn_putc)(c);
84 }
85