xref: /csrg-svn/sys/hp300/stand/cons.c (revision 45790)
141488Smckusick /*
241488Smckusick  * Copyright (c) 1988 University of Utah.
341488Smckusick  * Copyright (c) 1990 The Regents of the University of California.
441488Smckusick  * All rights reserved.
541488Smckusick  *
641488Smckusick  * This code is derived from software contributed to Berkeley by
741488Smckusick  * the Systems Programming Group of the University of Utah Computer
841488Smckusick  * Science Department.
941488Smckusick  *
1041488Smckusick  * %sccs.include.redist.c%
1141488Smckusick  *
1241488Smckusick  * from: Utah $Hdr: cons.c 1.5 89/08/22$
1341488Smckusick  *
14*45790Sbostic  *	@(#)cons.c	7.3 (Berkeley) 12/16/90
1541488Smckusick  */
1641488Smckusick 
17*45790Sbostic #include "sys/param.h"
1841488Smckusick #include "samachdep.h"
19*45790Sbostic #include "../hp300/cons.h"
2041488Smckusick 
2141488Smckusick int	nodev();
2241488Smckusick #ifdef ITECONSOLE
2341488Smckusick int	iteprobe(), iteinit(), itegetchar(), iteputchar();
2441488Smckusick #endif
2541488Smckusick #ifdef DCACONSOLE
2641488Smckusick int	dcaprobe(), dcainit(), dcagetchar(), dcaputchar();
2741488Smckusick #endif
2842376Smckusick #ifdef DCMCONSOLE
2942376Smckusick int	dcmprobe(), dcminit(), dcmgetchar(), dcmputchar();
3042376Smckusick #endif
3141488Smckusick 
3241488Smckusick struct consdev constab[] = {
3341488Smckusick #ifdef ITECONSOLE
3441488Smckusick 	{ iteprobe,	iteinit,	itegetchar,	iteputchar },
3541488Smckusick #endif
3641488Smckusick #ifdef DCACONSOLE
3741488Smckusick 	{ dcaprobe,	dcainit,	dcagetchar,	dcaputchar },
3841488Smckusick #endif
3942376Smckusick #ifdef DCMCONSOLE
4042376Smckusick 	{ dcmprobe,	dcminit,	dcmgetchar,	dcmputchar },
4142376Smckusick #endif
4241488Smckusick 	{ 0 },
4341488Smckusick };
4441488Smckusick 
4541488Smckusick struct consdev *cn_tab;
4641488Smckusick int noconsole;
4741488Smckusick 
4841488Smckusick cninit()
4941488Smckusick {
5041488Smckusick 	register struct consdev *cp;
5141488Smckusick 
5241488Smckusick 	cn_tab = NULL;
5341488Smckusick 	noconsole = 1;
5441488Smckusick 	for (cp = constab; cp->cn_probe; cp++) {
5541488Smckusick 		(*cp->cn_probe)(cp);
5641488Smckusick 		if (cp->cn_pri > CN_DEAD &&
5741488Smckusick 		    (cn_tab == NULL || cp->cn_pri > cn_tab->cn_pri))
5841488Smckusick 			cn_tab = cp;
5941488Smckusick 	}
6041488Smckusick 	if (cn_tab) {
6141488Smckusick 		(*cn_tab->cn_init)(cn_tab);
6241488Smckusick 		noconsole = 0;
6341488Smckusick 	}
6441488Smckusick }
6541488Smckusick 
6641488Smckusick cngetc()
6741488Smckusick {
6841488Smckusick 	if (cn_tab)
6941488Smckusick 		return((*cn_tab->cn_getc)());
7041488Smckusick 	return(0);
7141488Smckusick }
7241488Smckusick 
7341488Smckusick cnputc(c)
7441488Smckusick 	int c;
7541488Smckusick {
7641488Smckusick 	if (cn_tab)
7741488Smckusick 		(*cn_tab->cn_putc)(c);
7841488Smckusick }
79