xref: /csrg-svn/sys/hp300/stand/cons.c (revision 63163)
141488Smckusick /*
241488Smckusick  * Copyright (c) 1988 University of Utah.
3*63163Sbostic  * Copyright (c) 1990, 1993
4*63163Sbostic  *	The Regents of the University of California.  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  *
1254073Shibler  * from: Utah $Hdr: cons.c 1.7 92/02/28$
1341488Smckusick  *
14*63163Sbostic  *	@(#)cons.c	8.1 (Berkeley) 06/10/93
1541488Smckusick  */
1641488Smckusick 
1756510Sbostic #include <sys/param.h>
1856510Sbostic #include <hp300/stand/samachdep.h>
1956510Sbostic #include <hp/dev/cons.h>
2041488Smckusick 
2141488Smckusick #ifdef ITECONSOLE
2241488Smckusick int	iteprobe(), iteinit(), itegetchar(), iteputchar();
2341488Smckusick #endif
2441488Smckusick #ifdef DCACONSOLE
2541488Smckusick int	dcaprobe(), dcainit(), dcagetchar(), dcaputchar();
2641488Smckusick #endif
2742376Smckusick #ifdef DCMCONSOLE
2842376Smckusick int	dcmprobe(), dcminit(), dcmgetchar(), dcmputchar();
2942376Smckusick #endif
3041488Smckusick 
3141488Smckusick struct consdev constab[] = {
3241488Smckusick #ifdef ITECONSOLE
3341488Smckusick 	{ iteprobe,	iteinit,	itegetchar,	iteputchar },
3441488Smckusick #endif
3541488Smckusick #ifdef DCACONSOLE
3641488Smckusick 	{ dcaprobe,	dcainit,	dcagetchar,	dcaputchar },
3741488Smckusick #endif
3842376Smckusick #ifdef DCMCONSOLE
3942376Smckusick 	{ dcmprobe,	dcminit,	dcmgetchar,	dcmputchar },
4042376Smckusick #endif
4141488Smckusick 	{ 0 },
4241488Smckusick };
4341488Smckusick 
4441488Smckusick struct consdev *cn_tab;
4541488Smckusick int noconsole;
4641488Smckusick 
cninit()4741488Smckusick cninit()
4841488Smckusick {
4941488Smckusick 	register struct consdev *cp;
5041488Smckusick 
5141488Smckusick 	cn_tab = NULL;
5241488Smckusick 	noconsole = 1;
5341488Smckusick 	for (cp = constab; cp->cn_probe; cp++) {
5441488Smckusick 		(*cp->cn_probe)(cp);
5541488Smckusick 		if (cp->cn_pri > CN_DEAD &&
5641488Smckusick 		    (cn_tab == NULL || cp->cn_pri > cn_tab->cn_pri))
5741488Smckusick 			cn_tab = cp;
5841488Smckusick 	}
5941488Smckusick 	if (cn_tab) {
6041488Smckusick 		(*cn_tab->cn_init)(cn_tab);
6141488Smckusick 		noconsole = 0;
6241488Smckusick 	}
6341488Smckusick }
6441488Smckusick 
cngetc()6541488Smckusick cngetc()
6641488Smckusick {
6741488Smckusick 	if (cn_tab)
6841488Smckusick 		return((*cn_tab->cn_getc)());
6941488Smckusick 	return(0);
7041488Smckusick }
7141488Smckusick 
cnputc(c)7241488Smckusick cnputc(c)
7341488Smckusick 	int c;
7441488Smckusick {
7554073Shibler #ifdef ROMPRF
7654073Shibler 	extern int userom;
7754073Shibler 
7854073Shibler 	if (userom)
7954073Shibler 		romputchar(c);
8054073Shibler 	else
8154073Shibler #endif
8241488Smckusick 	if (cn_tab)
8341488Smckusick 		(*cn_tab->cn_putc)(c);
8441488Smckusick }
85