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 * 1254073Shibler * from: Utah $Hdr: cons.c 1.7 92/02/28$ 1341488Smckusick * 14*56510Sbostic * @(#)cons.c 7.6 (Berkeley) 10/11/92 1541488Smckusick */ 1641488Smckusick 17*56510Sbostic #include <sys/param.h> 18*56510Sbostic #include <hp300/stand/samachdep.h> 19*56510Sbostic #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 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 6541488Smckusick cngetc() 6641488Smckusick { 6741488Smckusick if (cn_tab) 6841488Smckusick return((*cn_tab->cn_getc)()); 6941488Smckusick return(0); 7041488Smckusick } 7141488Smckusick 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