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