[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [Patch] textterm: Ausgabe auf serieller Schnittstelle



Kevin Wolf wrote:
> Toni Kaufmann schrieb:
>   
>> Dieser Patch erweitert textterm so, dass es alle Ausgaben auch auf die
>> serielle Schnittstelle ausgibt.
>>     
>
> Gleich komplett abzubrechen, falls er die serielle Schnittstelle nicht 
> bekommt, ist vielleicht ein bißchen hart, aber für den Moment ist das so 
> in Ordnung.
>   
Ich habe das jetzt trotzdem mal geändert.
Index: src/modules/textterm/out.c
===================================================================
--- src/modules/textterm/out.c	(Revision 631)
+++ src/modules/textterm/out.c	(Arbeitskopie)
@@ -47,7 +47,11 @@
 // ANSI-Buffer
 char ansi_buf[32];
 
+// Wenn TRUE werden die Ausgaben auch auf die serielle Schnittstelle
+// geschriben
+bool serial_output = TRUE;
 
+
 ///
 void con_clear_screen();
 
@@ -58,6 +62,15 @@
 
 void con_init()
 {
+    // Ports fuer die serielle Schnittstelle reservieren
+    if (!request_ports(0x3F8, 1)) {
+        serial_output = FALSE;
+    }
+    if (serial_output && !request_ports(0x3FD, 1)) {
+        serial_output = FALSE;
+        release_ports(0x3F8, 1);
+    }
+
     video_memory = mem_allocate_physical(CONSOLE_WIDTH * CONSOLE_HEIGHT *
         sizeof(video_mem_cell_t), 0xb8000, 0);
     
@@ -372,6 +385,14 @@
 {
     static char last_char = 0;
     
+    // Zeichen auf die serielle Schnittstelle schreiben
+    if (serial_output == TRUE) {
+        outb(0x3f8, c);
+        while ((inb(0x3fd) & 0x20) == 0) {
+            asm("nop");
+        }
+    }
+    
     switch (c) {
         case '\n':
             if (last_char != '\r') {