]> Devi Nivas Git - cs3210-lab1.git/commitdiff
send console output to parallel port
authorrtm <rtm>
Thu, 22 Jun 2006 15:51:57 +0000 (15:51 +0000)
committerrtm <rtm>
Thu, 22 Jun 2006 15:51:57 +0000 (15:51 +0000)
Notes
console.c

diff --git a/Notes b/Notes
index 06a969656109b6c5159f98637502fa04c2d09b35..88b725cafed8426f01d24946a4a5319692ea23f3 100644 (file)
--- 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".
index 2035611bc104dbd6dbec356f3f05691e0b2390e6..e6203e2ec657b800bae4564181604a4280ae702d 100644 (file)
--- a/console.c
+++ b/console.c
@@ -2,6 +2,23 @@
 #include <x86.h>
 #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;