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
©
Jürgen Richter