Ausgabe 5 — Änderungen 2673 → 3261

Zeile 220: Zeile 220:
 
Der Video-Speicher ist ein bestimmter Bereich im Arbeitsspeicher, der - befindet sich der PC im Textmodus - ein Word, also zwei Bytes für jedes Zeichen auf dem Bildschirm bereithält. Das erste Byte ist hierbei ein ganz normales ASCII-Zeichen (wie etwa `A`, `x` oder `?`), das zweite Byte stellt die Attribute dar, wie etwa die Textfarbe, die Hintergrundfarbe und ob der Text bzw. das Zeichen blinken soll. Auf `normalen` Architekturen beginnt der Video-Speicher an der Adresse 0xB8000 und ist 4000 Bytes (80 * 25 Zeichen * 2 Bytes pro Zeichen) lang bzw. groß. Auf Schwarz-Weiß-Monitoren beginnt der Speicher - soviel ich weiß - an der Adresse 0xB0000. Ich habe mir jetzt aber nicht die Mühe gemacht, das zu überprüfen, da ich nicht davon ausgehe, dass noch jemand so ein Teil besitzt (und benutzt).
 
Der Video-Speicher ist ein bestimmter Bereich im Arbeitsspeicher, der - befindet sich der PC im Textmodus - ein Word, also zwei Bytes für jedes Zeichen auf dem Bildschirm bereithält. Das erste Byte ist hierbei ein ganz normales ASCII-Zeichen (wie etwa `A`, `x` oder `?`), das zweite Byte stellt die Attribute dar, wie etwa die Textfarbe, die Hintergrundfarbe und ob der Text bzw. das Zeichen blinken soll. Auf `normalen` Architekturen beginnt der Video-Speicher an der Adresse 0xB8000 und ist 4000 Bytes (80 * 25 Zeichen * 2 Bytes pro Zeichen) lang bzw. groß. Auf Schwarz-Weiß-Monitoren beginnt der Speicher - soviel ich weiß - an der Adresse 0xB0000. Ich habe mir jetzt aber nicht die Mühe gemacht, das zu überprüfen, da ich nicht davon ausgehe, dass noch jemand so ein Teil besitzt (und benutzt).
  
−
Wie bereits erwähnt stehen die Attribute im zweiten Byte eines jeden Zeichen-Words. Der Einfachheit halber stellen wir sie (im Beispiel-Code) als vierstellige Hexadezimal-Zahlen dar (0x0000) und OR`en sie einfach mit dem Zeichen-Word zusammen. Da wir im Textmodus nur 16 Farben haben, ist der Vorgang denkbar einfach. Die höchste Stelle im der HEX-Zahl (0x1000) stellt die Hintergrundfarbe dar, die zweite Stelle (0x0100) die Vordergrundfarbe. Leider Gottes kenne ich die exakten Farbbezeichnungen nicht (auswendig), aber ich denke, dass ihr wisst, was ich meine.
+
Wie bereits erwähnt stehen die Attribute im zweiten Byte eines jeden Zeichen-Words. Der Einfachheit halber stellen wir sie (im Beispiel-Code) als vierstellige Hexadezimal-Zahlen dar (0x0000) und OR`en sie einfach mit dem Zeichen-Word zusammen. Da wir im Textmodus nur 16 Farben haben, ist der Vorgang denkbar einfach. Die höchste Stelle im der HEX-Zahl (0x1000) stellt die Hintergrundfarbe dar, die zweite Stelle (0x0100) die Vordergrundfarbe.  
  
 
* 0x0 Schwarz
 
* 0x0 Schwarz
Zeile 228: Zeile 228:
 
* 0x4 Dunkelrot
 
* 0x4 Dunkelrot
 
* 0x5 Lila
 
* 0x5 Lila
−
* 0x6 Braun
+
* 0x6 Orange
 
* 0x7 Hellgrau (Standard-Textfarbe unter DOS, Linux, etc.)
 
* 0x7 Hellgrau (Standard-Textfarbe unter DOS, Linux, etc.)
 
* 0x8 Dunkelgrau
 
* 0x8 Dunkelgrau
 
* 0x9 Hellblau
 
* 0x9 Hellblau
 
* 0xA Hellgrün
 
* 0xA Hellgrün
−
* 0xB (sehr) helles Blau (?), keine Ahnung, wie das heißt
+
* 0xB Cyan
 
* 0xC Hellrot
 
* 0xC Hellrot
 
* 0xD Pink
 
* 0xD Pink
Zeile 307: Zeile 307:
 
         putchar(*(s++));
 
         putchar(*(s++));
 
       return;
 
       return;
−
     };</c>  
+
     };</c>
  
 
== Icy Wolf`s Kolumne ==
 
== Icy Wolf`s Kolumne ==