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