|
|
1.1 root 1: /*
2: * Copyright (c) 1995-1994 The University of Utah and
3: * the Computer Systems Laboratory at the University of Utah (CSL).
4: * All rights reserved.
5: *
6: * Permission to use, copy, modify and distribute this software is hereby
7: * granted provided that (1) source code retains these copyright, permission,
8: * and disclaimer notices, and (2) redistributions including binaries
9: * reproduce the notices in supporting documentation, and (3) all advertising
10: * materials mentioning features or use of this software display the following
11: * acknowledgement: ``This product includes software developed by the
12: * Computer Systems Laboratory at the University of Utah.''
13: *
14: * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
15: * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
16: * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
17: *
18: * CSL requests users of this software to return to [email protected] any
19: * improvements that they make and grant CSL redistribution rights.
20: *
21: * Author: Bryan Ford, University of Utah CSL
22: */
23:
24: #ifdef ENABLE_IMMEDIATE_CONSOLE
25:
26: /* This is a special "feature" (read: kludge)
27: intended for use only for kernel debugging.
28: It enables an extremely simple console output mechanism
29: that sends text straight to CGA/EGA/VGA video memory.
30: It has the nice property of being functional right from the start,
31: so it can be used to debug things that happen very early
32: before any devices are initialized. */
33:
34: int immediate_console_enable = 1;
35:
36: void
37: immc_cnputc(unsigned char c)
38: {
39: static int ofs = -1;
40:
41: if (!immediate_console_enable)
42: return;
43: if (ofs < 0)
44: {
45: ofs = 0;
46: immc_cnputc('\n');
47: }
48: else if (c == '\n')
49: {
50: bcopy(0xb8000+80*2, 0xb8000, 80*2*24);
51: bzero(0xb8000+80*2*24, 80*2);
52: ofs = 0;
53: }
54: else
55: {
56: volatile unsigned char *p;
57:
58: if (ofs >= 80)
59: {
60: immc_cnputc('\r');
61: immc_cnputc('\n');
62: }
63:
64: p = (void*)0xb8000 + 80*2*24 + ofs*2;
65: p[0] = c;
66: p[1] = 0x0f;
67: ofs++;
68: }
69: }
70:
71: int immc_cnmaygetc(void)
72: {
73: return -1;
74: }
75:
76: #endif ENABLE_IMMEDIATE_CONSOLE
77:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.