| 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 | + | 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 | + | * 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 | + | * 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 == | ||