# Textmodus

Als Textmodus bezeichnet man die bis zum Erscheinen der ersten Videospiele und GUI-Betriebssysteme (Mac OS, TOS, AmigaOS) übliche Betriebsart von Grafik-Hardware. Hierbei werden – im Gegensatz zum Grafikmodus – von der Software nicht einzelne Bildpunkte mit ihrer jeweiligen Farbe verwaltet, sondern einzelne Schriftzeichen, wie Buchstaben und Ziffern. Diese Schriftzeichen werden dann von der Grafik-Hardware des Rechners in Bildpunkte umgewandelt. Dies verhindert zwar, dass Grafiken hochauflösend dargestellt werden können, aber es verringert auch den Bedarf an Grafikspeicher enorm, reduziert den Programmieraufwand deutlich, und beschleunigt Programme, da pro Zeichen meist nur ein oder zwei Byte im Video-RAM benötigt werden.
Übliche Auflösungen reichen von 40×25 Zeichen, was für TV-Bildschirme die größte praktisch nutzbare Auflösung darstellt, über 80×25, welche heute noch der Modus ist, in dem sich PC-Grafikkarten nach dem Booten befinden, bis hin zu 132×50, welche von textbasierten Tabellenkalkulationen und ähnlichen Programmen unter DOS benutzt wurden, die viele Informationen gleichzeitig darstellen müssen. Weitere Varianten waren 80×24 (viele Großrechner-Terminals), 64×16 (Tandy TRS-80 Model 1) oder 22×23 (Commodore VC20, also mehr Zeilen als Spalten!).
Die einzelnen Zeichen besitzen in der Regel eine feste Größe von 8×8 bis 9×16 Pixeln (in den Anfangszeiten mit viel höheren Speicherpreisen auch 5×7), wobei auf PC-Grafikkarten nur Zeichen mit 8 Pixeln Breite unterstützt werden. Diese werden in einem eigenen Zeichenspeicher abgelegt, siehe auch bei Zeichengenerator. Je nach Computer- und Grafikkartenmodell kann dieser Zeichengenerator ein unveränderliches ROM oder ein vom Benutzer veränderliches RAM sein; nur im letzteren Fall kann der Benutzer eigene Zeichenformen definieren und verwenden.
Der Zeichenspeicher bei PC-Grafikkarten speichert die Zeichen als Bitmap, wobei jedes Zeichen so viele Bytes benötigt, wie es Pixel hoch ist. Im ROM der EGA-Karten befinden sich zwei Zeichensätze mit der Zeichengröße 8×8 und 8×14 Pixel, bei VGA-Karten kommt noch ein 8×16-Zeichensatz hinzu. Benutzerdefinierte Zeichensätze, welche ab EGA möglich sind, können 1 bis 32 Pixelzeilen hoch sein.
Textmodi auf CGA/EGA/VGA-Grafikkarten mit Standard-Zeichensätzen :
| Zeichengröße | Grafikauflösung (in Pixel) | Grafikauflösung (in Pixel) | Grafikauflösung (in Pixel) | Grafikauflösung (in Pixel) |
| Zeichengröße | ab CGA: 640 × 200 | ab EGA: 640 × 350 | ab VGA: 640 × 400 | 640 × 480 |
| 8 × 8 | 80 × 25 | 80 × 43 | 80 × 50 | 80 × 60 |
| 8 × 14 | 80 × 14 | 80 × 25 | 80 × 28 | 80 × 34 |
| 8 × 16 | 80 × 12 | 80 × 21 | 80 × 25 | 80 × 30 |
Die farblich hervorgehobenen Modi sind die direkt vom BIOS unterstützten Textmodi; die übrigen lassen sich nur durch direktes Programmieren der Grafikkarte erzielen. Die horizontale Grafikauflösung im Textmodus der VGA-Karte beträgt standardmäßig 720 Pixel. Damit ist jedes Zeichen 9 Pixel breit, was die Lesbarkeit der Textdarstellung verbessert, da sich die Abstände zwischen den Buchstaben etwas vergrößern. Da im Zeichenspeicher aber nur 8 Pixel pro Zeichen gespeichert sind, wird die Farbe des 9. Pixels gesondert ermittelt: Für die meisten Zeichen ist dieses Pixel in der Hintergrundfarbe, außer für die Zeichen mit den Codewerten C0$_{hex}$ bis DF$_{hex}$. Bei diesen Zeichen wird das 8. Pixel jedes Zeichens wiederholt. Damit wird ein nahtloser Übergang bei Grafik- und Rahmenzeichen erreicht. Die ROM-Zeichensätze sind in der Regel in der Codepage 437 kodiert, die die Grafik- und Rahmenzeichen, welche solche horizontalen Verbindungen mit ihren rechts benachbarten Zeichen eingehen können, in diesem Bereich unterbringt. Sowohl die 9 Pixel breiten Zeichen, als auch die Sonderbehandlung der Zeichen C0$_{hex}$ bis DF$_{hex}$ lassen sich allerdings über direkte Programmierung der Grafikkartenregister deaktivieren.
Im Video-RAM wird für jedes Zeichen nur die Zeichennummer gespeichert. Auf PC-Systemen ist diese stets 8 Bit groß, es lassen sich so 256 verschiedene Zeichen ansprechen; außerdem wird für jedes Zeichen ein so genanntes Attribut-Byte gespeichert, welches die Farbe des Zeichens oder besondere Zeichenattribute (Fettdruck, Unterstreichung, Blinkend usw.) kodiert.
Aufteilung der Bits im Attribut-Byte von CGA/EGA/VGA :
| | Standardfarben bei CGA / EGA / VGA (Nummer auch in Hex) | Standardfarben bei CGA / EGA / VGA (Nummer auch in Hex) |
| Aufteilung der Bits im Attribut-Byte von CGA/EGA/VGA BitBedeutung 0..2Vordergrundfarbe (Zeichenfarbe) 3Fett (Vordergrundfarbe) / Zweiter Zeichensatz 4..6Hintergrundfarbe 7Blinkend / Hintergrundfarbe | NummerFarbeRGB-Wert (ca.) 0Schwarz#000000  1Blau#0000AA  2Grün#00AA00  3Cyan#00AAAA  4Rot#AA0000  5Violett#AA00AA  6Braun#AA5500  7Grau#AAAAAA | NummerFarbeRGB-Wert (ca.) 8Dunkelgrau#555555  9Hellblau#5555FF  10/AHellgrün#55FF55  11/BHellcyan#55FFFF  12/CHellrot#FF5555  13/DPurpur#FF55FF  14/EGelb#FFFF55  15/FWeiß#FFFFFF |
Fettdruck wird meist durch eine hellere Farbe simuliert. Somit lassen sich auf Farbgrafikkarten 16 verschiedene Vordergrundfarben darstellen. Die Bedeutung des Bit 7 lässt sich umprogrammieren, so dass es entweder blinkende Zeichendarstellung oder 8 weitere (helle) Hintergrundfarben erlaubt. Ab EGA lassen sich jedoch die 16 Farben umprogrammieren, so dass eine freiere Farbwahl möglich ist.
Eine besondere Eigenschaft der EGA/VGA-Karten ist es, zwei Zeichensätze (und somit bis zu 512 verschiedene Zeichen) gleichzeitig anzeigen zu können. Das Bit 3 des Attributbytes bestimmt, aus welchem Zeichensatz das Zeichen entnommen werden soll. Standardmäßig sind beide Zeichensätze identisch. Die Linux-Console beherrscht dieses Merkmal, sobald eine Bildschirmschrift mit mehr als 256 Zeichen geladen wird. Hierbei werden die Farben 8 bis 15 so umprogrammiert, dass sie identisch mit den Farben 0 bis 7 sind, so dass die Zeichen aus dem zweiten Zeichensatz nicht heller dargestellt werden. Es steht somit kein „Fettdruck“ mehr zur Verfügung.
Durch die Verwendung spezieller „Blockzeichen“ lassen sich niedrig aufgelöste „Klötzchen“-Grafiken im Textmodus darstellen. Werden zudem geschickt pro Zeichen die Vorder- und Hintergrundfarbe gewählt, so können einfache mehrfarbige Bilder erzeugt werden. Im Bildschirmtext wurde diese Funktion sehr häufig verwendet, im Videotext ist dies bis heute üblich. Einige Systeme erlauben auch die Neudefinition der Zeichenformen durch den Anwender; in Verbindung mit hardwareunterstütztem Soft-Scrolling und sogenannten Sprites für Vordergrundelemente erlaubt diese Technik beispielsweise die Darstellung von schnell bewegten Hintergründen für Computerspiele im Textmodus, der dann kaum noch als solcher zu erkennen ist. Dieser Ansatz wurde beispielsweise in vielen Spielen für die 8-Bit-Rechner der Firma Commodore genutzt.
Computersysteme für den geschäftlichen Einsatz verfügten bis in die frühen 1980er Jahre hinein meist nur über einen Textmodus. Erst mit dem Aufkommen der Videospiele und Heimcomputer wurde der Grafikmodus üblich; einige Heimcomputer, wie zum Beispiel der Schneider/Amstrad CPC und der Commodore Amiga, hatten gar keinen Textmodus mehr. Die Apple-Macintosh-Modelle der 68000er und der PowerPC-Reihe hatten keinen Textmodus, die auf BIOS basierenden oder es emulierende Rechner haben den Textmodus bis heute, er wird aber von den meisten Anwendern kaum noch genutzt, seit Windows 95 sich ab 1995 durchsetzte. Nur beim Start des Rechners ist er weiterhin für kurze Zeit aktiv. Wenn man ein Eingabeaufforderungs-Fenster maximiert (Alt+Eingabetaste, ab Windows Vista nicht mehr möglich), wird der Rechner ebenfalls in den Textmodus gesetzt. Linux bzw. Unix-ähnliche Betriebssysteme kennen in ihrer Console immer den Textmodus, der Grafikmodus ist optional.
Da die Unterstützung für den Textmodus auf modernen Grafikkarten selten über die Auflösungen und Bildwiederholraten der VGA-Karten hinausgehen (einige Super-VGA-Karten beherrschen Text-Modi mit 132 Text-Spalten, was einer Grafikauflösung von 1056 Pixeln entspricht), benutzen einige Betriebssysteme für ihre Textkonsole inzwischen auch einen Grafikmodus und emulieren das Verhalten des Textmodus komplett in Software. Da die dabei zu verarbeitende Datenmenge deutlich größer ist, ist eine solche emulierte Textkonsole deutlich langsamer (z. B. beim Scrollen) als ein Hardware-Textmodus (siehe auch: Framebuffer-Console von Linux).
Ältere Fernsehgeräte und Videorekorder verfügen für On-Screen-Menüs und Videotext häufig über Graphikchips, die nur einen Textmodus besitzen. Diese enthalten dann spezielle Zeichensätze (oft maskenprogrammiert), die geschickt dazu benutzt werden, Symbole oder sogar Licht- und Schatteneffekte zu erzeugen.