Geräte
und Schnittstellen

E-Books


MS-DOS Kurs


4. Kodetabellen

Die Arbeit mit Sonderzeichen und fremdländischen Symbolen bereitet immer wieder Schwierigkeiten, noch dazu, wenn sie gleichermaßen auf Bildschirm und Drucker erscheinen sollen. Da nur 256 verschiedene Zeichen zur Verfügung stehen (soviel lassen sich gerade mit 8 Bit kodieren), existieren verschiedene Landesspezifische Belegungen, die ab DOS-Version 3.3 in sogenannten Kodetabellen (oder Codepages) abgespeichert sind, so daß ein Umschalten möglich ist. Neben der fest installierten Tabelle stehen die zusätzlichen für Bildschirm und Drucker in Form von Dateien mit der Endung .CPI (Code Page Information) zur Verfügung. Voraussetzung ist allerdings eine EGA- oder VGA-Grafikkarte, denn nur sie ermöglichen, die Zeichensatzmatrix zu manipulieren. Außerdem sind im Lieferumfang von MS-DOS nur Treiber für die IBM-Drucker enthalten. Demzufolge finden Sie im DOS-Verzeichnis eine Datei EGA.CPI (für den Bildschirm) und mehrere CPI-Dateien, deren Name aus Ziffern besteht (für die IBM-Drucker).
Wir verwenden im allgemeinen die Kodetabelle 437, die den erweiterten IBM-Zeichensatz enthält - zum Datenaustausch kann die internationale Kodetabelle 850 (von der ISO genormt) von Interesse sein, gegebenfalls auch die anderer Länder (siehe Tafel). Die Tabellen mit den Zeichensätzen finden sich häufig in Druckerhandbüchern, wobei sie sich nur in den Zeichen mit einem Code größer 127 unterscheiden; die untere Hälfte ist identisch. Die Tabelle 850 hat den Vorteil, daß alle wichtigen internationalen Zeichen ohne Umschalten zur Verfügung stehen, anstelle der Grafik-Ecken liegen aber akzentuierte Buchstaben, so daß Umrahmungen nicht vollständig dargestellt werden. Der Einsatz der Kodetabellen ist nicht ganz einfach: Zuerst sind entsprechende Treiber für die Geräte (Bildschirm, Drucker) zu laden, dann die Zeichensatztabelle zu installieren, so daß anschließend zwischen mehreren Tabelle umgeschaltet werden kann. Im folgenden sei das Einrichten der Kodetabelle 850 beispielhaft gezeigt. In der CONFIG.SYS stehen Einträge, die wie folgt aussehen:
device = display.sys con:=(ega,437,2)
device = print.sys lpt1:=(4201,437,2)
Als erstes wird ein Kontrolltreiber installiert, der den Grafikstandard festlegt (unter DOS 3.3 muß immer EGA angegeben werden, auch wenn Sie über eine VGA-Karte verfügen; DOS 4.x erkennt den Grafikstandard automatisch). Anschließend erfolgt die Angabe der Standardtabelle und die Anzahl Zeichensätze, die unterstützt werden sollen.
Entsprechend sieht es auch für den Drucker aus, wobei die Zahl 4201 für den IBM Grafikdrucker 4201 steht. Um die Nutzung fremdsprachiger Funktionen überhaupt einzustellen, ist der Befehl-NLSFUNC (National Language Support Functions) folgendermaßen in die AUTOEXEC.BAT einzubinden:
nlcfunc country.sys
Der Parameter kann auch weggelassen werden, wenn sich die Datei COUNTRY.SYS im Hauptverzeichnis befindet oder der entsprechende Pfad durch APPEND festgelegt wurde.
Anschließßnd können die zur Verwendung vorgesehenen Kodetabelle vorbereitet werden, wozu mit der DOS-Version 3.3 der Befehl MODE erweitert wurde. (Gibt es inzwischen irgend etwas, wozu man diesen Befehl nicht einsetzen könnte?) Die folgenden Eintragungen gehören also ebefalls in die AUTOEXEC.BAT:
mode con codepage prepare = ((437,850) ega.cpi)
mode lpt1 codepage prepare = ((437,850) 4201.cpi)
Im Hause Mircrosoft ahnte man wohl, daß dem Anwender hier einiges zugemutet wird und hat Abkürzungen vorgesehen, die alternativ verwendet werden können:
mode con cp prep = ((437,850) ega.cpi)
mode lpt1 cp prep = ((437,850) 4201.cpi)
Für Bildschirm (CON) und Drucker (LPT1) werden jeweils zwei Tabellen initialisiert (437 mit dem erweiterten IBM- und 850 mit dem internationalen Zeichensatz), wozu die Angabe der Datei für das jeweilige Gerät nötig ist.
Land Kennung Kodetabelle Tastatur
USA 001 437 US
Kanada 002 863 CF
Lateinamerika 003 437 LA
Niederlande 031 437 NL
Belgien 032 437 BE
Frankreich 033 437 FR
Spanien 034 437 SP
Italien 039 437 IT
Schweiz 041 437 SF
Großbritanien 044 437 UK
Dänemark 045 437 DK
Schweden 046 437 SV
Norwegen 047 865 NO
Deutschland 049 437 GR
Portugal 351 860 PO
Arabische Länder 785 437
International 850
Tafel Landesspezifische Kodetabelle (Auswahl); die Landeskennung entspricht der Internationalen Telefonvorwahl und findet beim COUNTRY-Befehl Verwendung, die Tastaturkennung wird für den Befehl KEYB benötigt
Um Problemen mit dem Tastaturtreiber vorzubeugen, ist auch diesem die Änderung der Zeichensatztabelle mitzuteilen:
keyb gr,850
andernfalls erhalten Sie später eine Fehlermeldung. Beachten Sie bitte, daß die Nutzung bestimmter Kodetabellen nicht für beliebige Tastaturtreiber möglich ist; die in diesem Beispiel verwendeten sind aber sowohl für den deutschen (GR) als auch für den englischen (UK) bzw. amerikanischen (US) Tastaturtreiber zulässig.
Einem Umschalten auf die jeweils andere Tabelle steht nun nichts mehr im Wege. Zur Auswahl der internationalen Tabelle für die Tastatur ist
mode con codepage select = 850
zu schreiben, oder verkürzt
mode con sp sel = 850
Die Auswahl für den Drucker sähe entsprechend so aus:
mode lp1 sp sel = 850
mode lpt1 cp sel =850
Die Befehlszeile
mode con codepage oder
mode con cp
zeigt alle vorbereiteten und die gerade ausgewählte Kodetabelle für die Konsole an, für den Drucker ist entsprechend zu verfahren.
Der Tatsache Rechnung tragend, daß in der Regel alle Geräte mit der gleichen Kodetabelle arbeiten sollen, wurde ein Befehl zum gleichzeitigen Umschalten aller dafür vorbereiteten Geräte eingeführt: CHCP (Change Codepage). Entsprechend erfolgt mit
CHCP 850
die Einstellung von Codepage 850.
Zwischen beiden vorbereiteten Zeichentabellen kann jetzt sowohl mit MODE, als auch mit CHCP jederzeit umgeschaltet werden. Zu beachten ist, daß CHCP nur eingesetzt werden kann, wenn sowohl Konsole als auch Drucker dafür vorbereitet wurden.
Wenn alles geklappt hat, müßte jetzt das Copyrightzeichen unter der Dezimalen Kodierung 184 zur Verfügung stehen, das im sonst benutzten Zeichensatz nicht existiert. Überprüfen Sie es einmal durch Eingabe von <Alt> und der Ziffernfolge.
Alle im obigen Beispiel durchgeführten Arbeiten betreffen ausschließlich den Textmodus. Um auch im Grafikmodus mit erweiterten Zeichensätzen arbeiten zu können, steht der Befehl GRAFTABL zur Verfügung. Zum Laden der internationalen Kodetabelle 850 für den Grafikmodus ist
graftabl 850
zu schreiben. Beachten Sie bitte, daß für diesen Befehl keine zusätzlichen Treiber und keine Initialisierungen nötig sind, wie eben für den Textmodus beschrieben. Wenigstens ein Befehl, der einfach zu handhaben ist. Der Befehl GRAFTABL wird aber nicht nur benötigt, um im Grafikmodus auf alternative Zeichensätze umzuschalten, sondern um überhaupt den erweiteren Zeichensatz zugänglich zu machen. Wenn Sie einmal
graftabl /status
aufrufen, werden Sie sehen, daß standardmäßig kein erweiterter Grafikzeichensatz geladen ist. Programme, die Grafikausgaben über die DOS-Schnittstelle vornehmen, stellen Sonderzeichen nicht korrekt dar, da nur die Zeichen bis zu einer Kodierung von 127 zur Verfügung stehen. In diesem Falle ist mit
graftabl
der aktuelle Erweiterungszeichensatz zu laden. Diese Notwendigkeit wird Ihnen aber kaum einmal aufgefallen sein, weil sich neuere Programme fast immer selbst um ihre Ausgaben kümmern.
Nach diesem etwas zähen Thema werden Sie vielleicht fragen: Braucht man das Wirklich ? Ja, manchmal kann man es schon gebrauchen, und wenn Sie sich auch nur trauen, all die unnützen Eintragungen in ihren Dateien CONFIG.SYS und AUTOEXEC.BAT zu entfernen, auf die Sie bisher ehrfürchtig geschaut haben.
Sie, der aufgeweckte Leser (wir freuen uns, daß auch Leserinnen darunter sind), haben selbstverständlich bemerkt, daß auch bei der Abhandlung aller Befehle die Darstellung nicht vollständig sein kann; das eine oder andere Detail in Ihren System eventuell etwas anders aussieht. Dessen sind wir uns bewußt und bedanken uns immer wieder für jeden Ihrer Hinweise. Herr Rudolf Steeger aus Wolfen ergänzte zur Belegung der Funktionstasten mit Hilfe des PROMPT-Befehls, wie die ursprüngliche Einstellung wieder hergestellt werden kann, nämlich durch doppelte Eingabe des Tastaturcodes, was für <F10> wie folgt aussieht:
prompt $e[0;68;0;68p
Frau Uta Geisler aus Fürstenwalde fiel auf, daß das Assemblerprogramm TASTE.COM nicht von ihrem Debug akzeptiert wurde. Wenn Sie statt dessen Symdeb verwenden, funktioniert das Programm wie abgedruckt, für Debug schreiben Sie
r cx
8  statt
r cx 8
und
mov ah,4c statt
mov ah,4ch


(c) Jürgen Richter