From bf49aedbed02cdbf40430178847d34c48c36c693 Mon Sep 17 00:00:00 2001 From: rtm Date: Thu, 22 Jun 2006 15:51:57 +0000 Subject: [PATCH] send console output to parallel port --- Notes | 3 +++ console.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/Notes b/Notes index 06a9696..88b725c 100644 --- a/Notes +++ b/Notes @@ -1,3 +1,6 @@ +bochs 2.2.6: +./configure --enable-smp --enable-disasm --enable-debugger --enable-all-optimizations --enable-4meg-pages --enable-global-pages --enable-pae --disable-reset-on-triple-fault + bootmain.c doesn't work right if the ELF sections aren't sector-aligned. so you can't use ld -N. and the sections may also need to be non-zero length, only really matters for tiny "kernels". diff --git a/console.c b/console.c index 2035611..e6203e2 100644 --- a/console.c +++ b/console.c @@ -2,6 +2,23 @@ #include #include "defs.h" +/* + * copy console output to parallel port, which you can tell + * .bochsrc to copy to the stdout: + * parport1: enabled=1, file="/dev/stdout" + */ +static void +lpt_putc(int c) +{ + int i; + + for (i = 0; !(inb(0x378+1) & 0x80) && i < 12800; i++) + ; + outb(0x378+0, c); + outb(0x378+2, 0x08|0x04|0x01); + outb(0x378+2, 0x08); +} + void cons_putc(int c) { @@ -9,6 +26,8 @@ cons_putc(int c) unsigned short *crt = (unsigned short *) 0xB8000; // base of CGA memory int ind; + lpt_putc(c); + // cursor position, 16 bits, col + 80*row outb(crtport, 14); ind = inb(crtport + 1) << 8;