Die verborgenen Möglichkeiten des

Werbung
Die verborgenen
Möglichkeiten des
IB
PC
2. Ausgabe, völlig neu
VII
Inhalt
Über den Autor .
Einleitung
1
VII
....
IX
Der Stammbaum .
1.1
Aus der Familiengeschichte .
1.2
Die PC-Familie
1.3
Die 8086-Familie
2
Grundlagen: Was ist ein Computer?
10
4
. . . . . .
6
2.1
Das Modell eines Computers
10
2.2
Überblick
11
3
Daten
16
3.1
Bits, Bytes und Zeichen .
16
3.2
Das Hexadezimalsystem
19
3.3
Standardzahlen
. . . . .
23
. . . . .
3.4
Größere Zahlen
3.5
Strings bzw. Zeichenketten
28
4
Der Zeichensatz des PC
31
4.1
Ein Überblick
31
4.2
Die normalen ASCII-Zeichen
. . . .
.
25
. . .
33
4.3
Die ASCII-Steuerzeichen
36
4.4
Sonderzeichen
40
5
Hardware: Die Komponenten des PC
5.1
Die Hauptkomponenten
44
5.2
Zusätze und Adapter
49
5.3
Wichtige Bausteine
6
Der Mikroprozessor
. . . . . . .
44
. .
53
57
6.1
Was der Mikroprozessor alles kann
57
6.2
Arithmetikkünstler: die 87er . . . .
61
6.3
Speicher, Ein-/Ausgabekanäle, Register und Stacks
64
6.4
Interrupts - die treibende Kraft
6.5
Besondere Eigenschaften des 286
. .
69
. . . . . . . .
.
75
Norton
Die verborgenen Möglichkeiten
des IBM PC
PC
professionell
Arbeitsplatzrechner in
Ausbildung und Praxis
Herausgeber:
Prof. Dr.-lng. Werner Heinzel, Fulda
PC professionell zeigt dem Anwender von Personal Computern den Aufbau, die Program­
mierung und die verschiedenen Anwendungsmöglichkeiten seines „persönlichen Rechners
am Arbeitsplatz" und führt ihn am Beispiel aktueller PC-Systeme oder mit der Darstellung und
Diskussion von Fallbeispielen in die betriebliche Praxis derartiger Geräte ein.
Personalcomputer werden in den verschiedensten Anwendungsbereichen eingesetzt:
- in Klein- und Mittelbetrieben
- als persönliches Arbeitsmittel in Fachabteilungen von Großbetrieben
- als Ausbildungsmittel in Schulen, Hochschulen und Fortbildungsstätten
- im privaten Bereich
PC professionell wendet sich an diese verschiedenen Benutzer des Personal Computers.
Aufgrund des didaktischen Aufbaus und der eingearbeiteten Praxisbeispiele eignen sich die
Bände zum Selbststudium.
Die Fachbuchreihe weist die folgenden thematischen Schwerpunkte auf:
Grundlagen der Hard- und Softwaretechnologie von Personal Computern,
zum Beispiel
- Systemstrukturen
- Betriebssysteme
- Programmiersprachen
- Softwarewerkzeuge
Reallsierte Systeme und deren Anwendungen,
zum Beispiel
- Benutzeranleitung für bestimmte PC-Systeme
- Programmierung typischer Systeme
- Anwendungen, Fallbeispiele, Softwaresammlungen
- Softwarelösungen für bestimmte Branchen bzw. Anwendungsgebiete
Carl Hanser Verlag München Wien
Peter Norton
Die verborgenen
Möglichkeiten des
IBM PC
2. Ausgabe, völlig neu
Übersetzt von Rainer v. Ammon
und Christa Neumann-Schwarzfischer
Eine Coedition der Verlage Carl Hanser und Prentice-Hall International
Titel der amerikanischen Originalausgabe:
Inside the IBM PC: Access to Advanced Features and Programming
by Peter Norton
Copyright © 1986 by Brady Communications Company, lnc.
All rights reserved, including the right of reproduction in whole or in part in any form.
A Brady Book, published by Prentice Hall Press, a Division of Simon & Schuster, lnc.
Gulf + Western Building, One Gulf + Western Plaza, New York, NY 10023.
PRENTICE HALL PRESS is a trademark of Simon & Schuster, lnc.
Alle in diesem Buch enthaltenen Programme und Verfahren wurden nach bestem Wissen erstellt
und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen.
Aus diesem Grund ist das in diesem Buch enthaltene Programm-Material mit keiner Verpflich­
tung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen
keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die
auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht.
CIP-Kurztitelaufnahme der Deutschen Bibliothek
Norton, Peter:
Die verborgenen Möglichkeiten des IBM PC I Peter
Norton.
2. Ausg., völlig neu / übers. von
Rainer v. Ammon u. Christa Neumann-Schwarzfischer.
- München ; Wien : Hanser ; London : Prentice-Hall
International, 1987.
-
(PC professionell)
Einheitssacht.: Inside the IBM PC <dt.>
ISBN 3-446-14959-7 (Hanser)
ISBN 0-13-467390-5 (Prentice-Hall)
Dieses Werk ist urheberrechtlich geschützt.
Alle Rechte, auch die der Übersetzung, des Nachdrucks und der Vervielfältigung des Buches,
oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des
Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren), auch nicht für
Zwecke der Unterrichtsgestaltung, reproduziert oder unter Verwendung elektronischer Systeme
verarbeitet, vervielfältigt oder verbreitet werden.
Eine Coedition der Verlage:
Carl Hanser Verlag München Wien
Prentice-Hall International lnc., London
© 1987 Prentice-Hall International lnc., London
Datenkonvertierung, Satz: Gruber, Regensburg
Druck und Bindung: Wagner, Nördlingen
Umschlagentwurf: Carl-Alfred Loipersberger
Printed in Germany
V
Vorwort
zur
deutschen Ausgabe
Bereits die erste Ausgabe von Peter Norton's „Inside the IBM PC", die wir 1984
unter dem Titel „Die verborgenen Möglichkeiten des IBM PC" übersetzten, wurde
ein Bestseller auf dem Buchmarkt. Seither ging die Entwicklung der Microcom­
puter-Technologie in rasantem Tempo weiter.
Beispielsweise ist die IBM PC-Familie inzwischen sehr viel größer geworden. Das
Betriebssystem des IBM PC heißt längst nicht mehr DOS 1.x, sondern DOS 3.x und
beinhaltet neue Funktionen, z.B. für Netzwerkfähigkeit und Multitasking. Eine 20
Megabyte-Festplatte ist heute zum Standard von Personalcomputern geworden,
den 8088-Prozessor des ursprünglichen PC hat man schon fast vergessen, und
man wartet bereits auf den Intel 386, der als 32-Bit-Prozessor in Kürze das Gehirn
von IBM-PCs bilden wird.
Es wurde also höchste Zeit für eine überarbeitete und erweiterte Ausgabe von
Norton's Buch. Peter Norton erledigte mit dem vorliegenden Buch diese Aufgabe
so gründlich, daß ein völlig neues Werk entstand.
Die Fortschritte des IBM PC und seiner Familienangehörigen erforderten auch eine
völlig neue Version der Begleitdiskette mit den „Programming Access Tools"1>. Für
die neuen Eigenschaften der verschiedenen Geräteeinheiten - vor allem für Platten
und Bildschirme, aber auch für Tastatur, Drucker, den asynchronen Kommunika­
tionsadapter sowie für die Zugriffe auf ROM-BIOS- und DOS-Funktionen u.ä. mußten völlig neue Demonstrations- und Untersuchungsprogramme entwickelt
werden.
Für die Mithilfe bei der Übersetzung der Begleitsoftware bedanken wir uns bei
Margit Zier/. Das Buch wurde wieder mit Hilfe des Programmes TRANS von
Hermann Heggenberger und Harald Schmiedbergervom Microcomputer auf Foto­
satz übertragen.
Lappersdorf, Februar 1987
Rainer von Ammon
Christa Neumann-Schwarzfischer
1) Eine Bestellkarte für diese Begleitdiskette und für die Norton Utilities ist am Ende des Buches eingeheftet.
VI
Über den Autor
Peter Norton wuchs in Seattle, Washington, auf und wurde auf dem Reed College
in Portland, Oregon, ausgebildet. Während der letzten 20 Jahre beschäftigte er
sich mit den verschiedensten Computeranlagen, angefangen bei Personalcompu­
tern bis hin zu Großrechenanlagen. Außerdem sammelte er Erfahrungen mit allen
möglichen Arten von Software, mit kompliziertesten Betriebssystemen als auch
sehr ausgefeilten kommerziellen Anwendungen.
Gleich zu Anfang seiner Arbeit mit Mikrocomputern schrieb er für die IBM PC­
Computerfamilie das jetzt schon legendäre Programmpaket, die Norton Uitilities.
Obwohl Peter Norton weiterhin auch Software für Kleincomputer entwickelt, kon­
zentriert sich seine Arbeit nun darauf, über den Einsatz von Personalcomputern zu
schreiben.
VIII
Inhalt
7
Der Arbeitsspeicher
7.1
7.2
7.3
7.4
7.5
Überblick
78
Speicherbänke und Zusatzspeicher .
78
80
84
91
94
8
Platten - Teil 1: Grundlagen
98
8.1
8.2
Das Prinzip der Plattenspeicherung
Verschiedene Plattentypen . . . . . .
98
. 102
9
Platten - Teil 2: Die DOS-Perspektive
. 108
9.1
9.2
9.3
9.4
Wie DOS eine Platte sieht und formatiert
.
.
.
.
. . . . . . . . .
Speicherzugriff
. . . . . .
Die Organisation des Arbeitsspeichers
Zugriff auf Speichererweiterungen . .
Die Struktur einer DOS-Platte
Wichtiges über Dateiformate
ASCII-Textdateien
. .
.
. . .
10
Platten - Teil 3: Details
10.1
Eigenschaften und abgetrennte Speicherbereiche
108
112
116
118
. 122
. . . . . . . . . . . . . . . . . .
10.2
10.3
Details der Plattenstruktur . . . . . . . . . . . . .
Nichtstandardgemäße Formate und Kopierschutz .
. 122
. 126
. 133
11
Bildschirm - Teil 1: Ein Überblick
. 136
11.1
11.2
11.3
Wie der Bildschirm funktioniert
Wie man die Bildschimmodi untersucht . . . .
. 136
. 139
. 146
12
Bildschirm - Teil 2: Textgrund.lagen
. 149
12.1
12.2
12.3
Beschreibung der Textmodi
Details des Textmodus
Textmodus-Tricks
. 149
. 152
. 159
13
Bildschirm - Teil 3: Graphikgrundlagen
. 164
13.1
13.2
13.3
Wie die Graphikmodi funktionieren
. 164
. 168
. 174
von Festplatten
. .
.
. . . . . . . . . .
Überblick über die verschiedenen Bildschirmmodi
. . . . .
Ein Streifzug durch die Graphikmodi
Graphik-Details
. . . . . . . . . . .
Inhalt
IX
14
Tricks mit der Tastatur
.
. 179
14.1
14.2
Die Funktionsweise der Tastatur .
. 179
. 186
15
KoIIl!Ilunikatton,Druckerund
Tastatur-Tricks . . . . . . . . . .
weitere Komponenten . . . . . .
15.1
15.2
15.3
15.4
Weitere Hardware-Komponenten
16
Das eingebaute BIOS
16.1
16.2
. . ... . . . .
Drucker: Die parallele Schnittstelle
Kommunikationsleitungen: Die serielle Schnittstelle .
Töne . . . . . . . . . . . . . . .
.. . . . . . . . .
. 190
.
.
.
.
190
192
195
198
Teil 1: Grundlagen
. 203
Wie das ROM-BIOS arbeitet
. . . . . . . . . .
. 203
. 205
17
Das eingebaute BIOS
Teil 2: Details
. 210
17.1
17.2
Arbeitsprinzipien und Geräteprobleme
Die BIOS-Dienstprogramme . . . . . .
. 210
. 212
18
Die Rolle von DOS . . .
. 219
Die Aufgabe eines Betriebssystems . . . . . . . . . . . .
Visual Shells: TopView und andere
. 219
. 220
. 223
224
19
DOS und der Benutzer
. 226
19.1
19.2
Befehlsverarbeitung
Stapelverarbeitung
. 226
. 229
20
DOS und unsere PrograIIl!Ile.
20.1
20.2
Die DOS-Dienstprogramme
21
Wie man PrograIIl!Ile schreibt .
. 238
21.1
21.2
21.3
Programmiersprachen . . . . . . . .
. 238
. 246
. 251
18.1
18.2
18.3
18.4
-
Die Ideen hinter dem BIOS .
-
Die Geschichte und das grundlegende Konzept von DOS
Installierbare Treiber und flexible Betriebsmittel.
. . . . .
DOS-Dienstprogramme und die DOS-Philosophie
Das
Übersetzen
. . . . . . . . . . . .
von Programmen . .
Wie man Programme zusammenfügt
.
. 231
. 231
. 232
X
Inhalt
22
Erforschen und Experimentieren .
. . . . 255
22.1
22.2
22.3
Warum wir erforschen und experimentieren .
Wie man mit DEBUG arbeitet . .
Wie man mit NU arbeitet . . . .
. . . . 255
. . . . 256
. 259
Anhang A: Progra.mm-Listings . . . . . . . . . . . .
265
Anhang B: Ein Glossar
283
zu
Computergrundlagen .
Anhang C: Bedienungsanleitung für die Begleitdiskette .
296
Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
309
XI
Einleitung
Wir beginnen hiermit eine großartige Entdeckungsreise zu den Geheimnissen und
erstaunlichen Fähigkeiten des IBM Personalcomputers und der Computerfamilie,
die um ihn herum entwickelt wurde.
Seit dem Tag, an dem er auf den Markt gekommen ist, war er die Ursache für Auf­
regung und Faszination. Der PC, wie er allgemein genannt wird, leitete das Zeitlater
des Personalcomputers ein. Heute hat sich der PC als leistungsstarkes Gerät fest
etabliert. Es gibt keine vergleichbare Hilfe für Geschäftsleute und Profis, die die
Qualität und Effizienz ihrer Arbeit verbessern wollen. Der PC hat auch eine Vielzahl
anderer Computer ins Leben gerufen, ein paar von IBM und eine ganze Reihe von
„PC-kompatiblen" Computern. Daraus bildete sich die sogenannte „PC-Familie".
Dieses Buch soll dem Verständnis des PC und seiner ganzen Familie dienen. Wir
werden gemeinsam versuchen, die Rätsel und Geheimnisse des PC zu lüften, und
wir werden sehen, welche Wunder er vollbringen kann. Ich selbst bin vom PC und
der ganzen PC-Familie begeistert und ich möchte Ihnen die Arbeitsweise dieses
wunderbaren Geräts bis ins Detail aufzeigen.
Wie Sie sicher schon bemerkt haben, richtet sich das Buch nicht an Leute, die
noch Probleme mit dem Ein- und Ausschalten ihres Computers haben. Es wendet
sich an den Intelligenten und Wißbegierigen, der diese Computerfamilie wirklich
verstehen will.
Man kann ohne weiteres erfolgreich mit einem PC arbeiten, ohne seine Arbeits­
weise zu begreifen. Je genauer man seinen PC kennt, desto mehr lassen sich
seine Möglichkeiten ausschöpfen, man kann die geeignete Software und Hardware
leichter finden und vor allem lassen sich auch Probleme besser lösen, die beim
Arbeiten mit einem PC auftreten können.
Es gibt viele Gründe, warum man die Arbeitsweise eines Computers verstehen will.
Ein Grund ist ganz einfach die geistige Befriedigung und ein Gefühl von Überle­
genheit. Ein anderer Grund besteht darin, daß man sich ein neues Gebiet
erschließt. Schließlich sind heute Leute sehr gefragt, die sich mit PCs auskennen.
Der beste Grund aus der Sicht der Praxis ist aber vielleicht der, den ich einleitend
erwähnt habe. Man könnte das mit den frühen Fragen des Automobils vergleichen,
als man schon ein Amateurmechaniker sein mußte, um mit einem Auto verreisen
zu können. Heute kann jeder ein Auto fahren. So ähnlich ist es mit den Computern,
mit dem Unterschied, daß die offene Programmierung noch nicht soweit fortge­
schritten ist. Wer heutzutage mit einem Personalcomputer sicher und erfolgreich
arbeiten will, braucht einen gewissen Grad an Erfahrung. Je genauer Sie sich aus­
kennen, desto besser können Sie mit den praktischen Schwierigkeiten, die manch­
mal auftauchen können, fertig werden.
In diesem Sinne versteht sich dieses Buch, und vielleicht gehören Sie nach seiner
Lektüre zu denen, die auf einem PC wirklich zaubern können.
Wenn Sie Peter Norton oder die erste Ausgabe dieses Buches kennen, wissen Sie
sicherlich, daß ich meinen Ruf damit begründet habe. Das Buch wurde ein Best­
seller, weil darin die technischen Tricks des PC erklärt wurden. In den frühen Tagen
Einleitung
II
Abb. 1-1:
START
XIII
l:1======:::::;i
II
ZIEL
II
Auf dem Weg vom Start zum Ziel
wollen, wie verschlungen der Weg zum Erfolg sein kann, oder wenn Sie Ihrem Chef
begreiflich machen wollen, warum augenblicklich noch keine Ergebnisse vorlie­
gen, oder wenn Sie Ihren Freunden zeigen wollen, wie leicht Sie Ihren Personal­
computer beherrschen lernten. Sie können das Programm schließlich auch ein­
fach zum Nachdenken verwenden.
Wenn man einen Computer programmiert, ist eines der wichtigsten Themen, wie
man Programme verbessern und eleganter gestalten kann. Derartige Fragestellun­
gen verfolgen wir zunächst mit einigen Übungen am Beispiel des LABYRINT-Pro­
gramms und erst anschließend beginnen wir, mit dem ersten Kapitel die Grund­
lagen eines Computers zu erklären.
1.
Falls Sie sich bisher das Programmlisting von LABYRINT in Anhang A noch nicht angese­
hen haben, überlegen Sie, wie kompliziert es ist, ein Programm zu schreiben, das einen
Zufallspfad vom START zum ZIEL zeichnet und registriert, wenn es dort angekommen ist.
Entwerfen Sie, in Deutsch oder in einer Programmiersprache, die Sie beherrschen, ein Pro­
gramm, das die gleiche Aufgabe wie LABYRINT löst. Wie wollen Sie sicherstellen, daß die
Zeilen nicht über den Bildschirmrand hinauslaufen? Wie wollen Sie wissen, wann das Pro­
gramm sein Ziel erreicht hat?
2.
Schauen Sie sich das Listing von LABYRINT in Anhang A an. Ist es komplexer als Sie dach­
ten? Wenn Sie ein BASIC-Programm können, überprüfen Sie, ob meine Version wichtige
Details enthält, die Ihr Programm nicht hat, oder sind umgekehrt in Ihrem Programm viel­
leicht bedeutende Einzelheiten enthalten, die ich vergessen habe?
3.
Wenn LABYRINT seinen Weg zeichnet, überschreibt es alle Zeilen, die vorher schon
gezeichnet worden sind. Wie kann man erkennen, wann eine alte Linie gekreuzt wird oder
wie läßt sich vermeiden, daß ein bereits beschrittener Weg zurückverfolgt wird? Versuchen
Sie, die logischen Details herauszuarbeiten, die dem Programm hinzugefügt werden müs­
sen. Was erscheint Ihnen davon als besonders schlau? Wird das Programm durch das Hin­
zufügen solcher Eigenschaften komplizierter? Was sagt Ihnen das in Bezug auf den Ge­
samtcharakter eines Programms?
XII
Einleitung
des PC waren technische Erläuterungen genau das, was PC-Anwender am mei­
sten gebraucht hätten. Die Welt des PC hat sich seit damals weiter entwickelt und
somit haben sich auch die Bedürfnisse der meisten PC-Anwender verändert. Dies
wurde bei der neuen Ausgabe von „Inside the IBM PC" berücksichtigt.
Die vielen interessanten und nützlichen technischen Informationen sind immer
noch enthalten. Es wird aber zwischen zwei T hemen unterschieden. Der erste und
wichtigste Teil dieses Buches erklärt die grundlegenden Prinzipien des PC und der
PC-Familie. Dieser umfaßt alles, was Sie benötigen, um den PC zu verstehen, ohne
daß Sie sich durch eine unnötig große Menge technischer Informationen durchar­
beiten müssen. Dieser Teil ist für alle Leser gedacht.
Schwieriger wird es im zweiten Teil des Buches, unter der Überschrift:
In diesen Kapiteln beschäftigen wir uns mit Details der Hardware und Program­
miertechniken. Sie sind in erster Linie für diejenigen gedacht, die ihren PC wirklich
vollständig ausreizen wollen. Wer will, kann sich mit diesen Kapiteln zum echten
Spezialisten ausbilden. Wer das nicht will, mag hier seine Lektüre beenden.
Außerdem finden Sie in diesem Buch etliche Beispielprogramme, die die Fähigkei­
ten des PC demonstrieren. Diese Programme sind generell in BASIC geschrieben,
so daß es relativ leicht für Sie sein dürfte, die Programmiertechnik für bestimmte
Effekte oder Ansteuerung von Geräteeinheiten zu verstehen. Tippen Sie die
Listings einfach ein und testen Sie sie. Jedes Kapitel endet mit einigen Fragestel­
lungen, anhand derer Sie I hren Wissensstand überprüfen können, oder mit ein
paar Übungen, mit denen Sie sich an Ihrem PC weitertrainieren können. Hierbei
haben wir auch ein bißchen an Ihren Spaß gedacht.
Ein
Labyrinth
zum
Nachdenken
Nur zum Spaß dient ein kleines BASIC-Programm, das zeigt, wie das Leben oft ist;
das gilt auch für den Vorgang, bis man den PC vollständig verstanden hat. (Sie fin­
den das Usting des Programms LABYRINT in Anhang A, wo wir die längeren Bei­
spielprogramme untergebracht haben.) In Abbildung 1-1 sehen Sie, wie so etwas
im mittleren Teil eines Programms aussieht. Das Programm hat zwei Kästchen
gezeichnet, nämlich START und ZIEL, und es arbeitet einen Pfad vom einen zum
anderen Kästchen ab. Das Programm windet sich einen zufälligen Weg entlang,
bis es schließlich in das Ziel stolpert. Aber sobald es dort angekommen ist,
belohnt es Sie mit einer Fanfare.
Glücklicherweise ist dieses Buch anders. Wir werden den Weg zu unserem Ziel,
den PC zu verstehen, auf ganz zweckmäßige Weise verfolgen. Allerdings könnte
dabei manchmal der Eindruck entstehen, daß der Pfad vom START zum ZIEL ge­
nauso ziellos ist wie die Arbeitsweise dieses Programms.
Sie können das Spielprogramm in zweierlei Hinsicht nützen. Erstens können Sie es
vielleicht wirklich brauchen. Wenn Sie zum Beispiel jemanden davon überzeugen
1
Der Stammbaum
Eine der wichtigsten und interessantesten Eigenschaften der PC-Familie ist es, daß
sie mit Recht als Familie bezeichnet werden kann, als eine Gruppe wirklich ver­
wandter Computer also. Für uns hat das den Vorteil, daß wir auf dem Markt eine
größere Auswahl aus weitgehend gleichwertigen Computern haben, die sich ledig­
lich in einigen Eigenschaften, auch in ihrer Leistungsfähigkeit, vor allem aber im
Preis unterscheiden.
In diesem Kapitel werden wir einen Blick auf den Stammbaum der PC-Familie wer­
fen. Die PC-Familie kann man aus verschiedenen Blickwinkeln betrachten, z.B.
aus der Perspektive ihrer geschichtlichen Entwicklung. Ein anderer Aspekt wäre
. der Modellvergleich, bei dem eher die Leistungsfähigkeit und die Eigenschaften in
der PC-Familie untersucht werden. Eine wichtige Rolle spielen dabei auch die
Familienmitglieder, die nicht von IBM sind, die sogenannten PC-Ableger, entfernte
Verwandte des PC und Mitglieder einer weitverzweigten Familie. Wichtig ist
schließlich noch die Geschichte der Mikroprozessorfamilie, die die Stärke des PC
ausmacht und die über seine Zukunft entscheiden wird.
Damit werden wir am Ende dieses Kapitels ein gutes Allgemeinverständnis davon
haben, was die PC-Familie charakterisiert und wie ihre Zukunft aussieht.
1.1
Aus
der Familiengeschichte
Die allgemein bekannte Geschichte des PC begann im August 1981, als IBM den
ersten „IBM Personalcomputer" auf den Markt brachte. Die Geschichte hinter der
Kulisse begann natürlich früher, aber gar nicht so viel früher wie man meinen
könnte. Von der Entscheidung, einen IBM Personalcomputer zu entwickeln, bis
zum Tag der Veröffentlichung dauerte es, wie wir wissen, etwa ein Jahr. Das ist eine
bemerkenswert kurze Zeit für ein so großes Unternehmen wie IBM, bei dem wich­
tige Entscheidungen normalerweise nicht überstürzt gefällt werden. Die Vor­
geschichte des PC, so interessant sie auch sein mag, ist wirklich nicht unser Anlie­
gen hier (ein paar interessante Informationen in diesem Zusammenhang sind aber
im Exkurs „Wie der PC ein 16-Bit-Computer wurde" enthalten). Wichtiger ist es
dagegen, zu wissen, wie die verschiedenen Modelle des PC herauskamen, weil
man dann die Entstehungsgeschichte der PC-Familie besser versteht und erken­
nen kann, wer das eigentliche Oberhaupt der Familie ist.
Wie der PC ein 16-Bit-Computer wurde
Als der PC geplant wurde, gehörten alle Personalcomputer zu den inzwischen
überholten 8-Bit-Rechnern. (Mehr über 8- und 16-Bit-Computer erfahren Sie im
letzten Teil dieses Kapitels und im dritten Kapitel unter der Überschrift „Daten".)
Angeblich wäre der PC beinahe ein 8-Bit-Computer geworden, der mit seinen
heutigen Möglichkeiten nicht zu vergleichen gewesen wäre. Eine PC-Familie wäre
dann vielleicht nie zustande gekommen.
2
1
Der Stammbaum
IBM plante den PC einfach deshalb als 8-Bit-Computer, weil das damals der ein­
deutige Standard war. Einer der Experten, der IBM bei der Planung des PC beriet,
war Bill Gates, der legendäre Begründer der Firma Microsoft Corporation. Bill
Gates wußte, daß die Tage des 8-Bit-Computers gezählt waren, auch wenn er
damals den Standard bildete. Sollte der IBM PC wirklich erfolgreich sein, mußte er
als 16-Bit-Rechner konzipiert werden. Bill Gates wußte das und riet IBM, ihre Pläne
zu ändern.
Ob diese Geschichte nun wahr oder nur eine Legende ist, die Entscheidung, den
PC als 16-Bit-Computer herauszubringen, war für den Erfolg des IBM PC entschei­
dend und heute ist er der führende Schreibtischcomputer.
Der folgende geschichtliche Abriß kann natürlich nicht sämtliche Einzelheiten
berücksichtigen, nicht zuletzt deshalb, weil sich die Geschichte des PC fortwäh­
rend weiterentwickelt, sogar während ich gerade schreibe. Aber auf das Wichtigste
wollen wir nun eingehen.
Der IBM PC erschien im Herbst 1981 auf dem Markt. Im Frühjahr 1982 wurden PCs
bereits in großen Mengen geliefert, aber zur allgemeinen Verwunderung überstieg
der Bedarf bald das Angebot. Der PC wurde ein „Erfolg über Nacht". Dieser Erfolg
traf IBM und den Rest der Computerindustrie wahrscheinlich unvorbereitet. Jeden­
falls versuchte nun jeder, schnell aufzuwachen und an dem Geschäft teilzuhaben.
Gleich zu Anfang bemerkten einige erfahrene Computerspezialisten und Inge­
nieure, daß eine Nachfrage nach einem tragbaren PC bestand. Diese Idee wurde
von der Compaq Computer Corporation verwirklicht. Der sogenannte Compaq war
damit der erste Zuwachs zur PC-Familie. Der Compaq kam im Herbst 1982 auf den
Markt, über ein Jahr später als der ursprüngliche PC.
Im Frühjahr 1983 stellte IBM seinen ersten Familienzuwachs vor, das XT-Modell. Es
ist ein PC, der zusätzlich mit einem Festplattenspeicher von hoher Kapazität aus­
gerüstet wurde. Compaq gab im Herbst 1983 die XT-kompatible tragbare Version
Compaq Plus frei.
1983 begann durchzusickern, daß IBM eine billigere kleinere Version des PC plant,
die als Homecomputer gedacht ist. Das Gerät war der PCjr, bekannt auch als „Pea­
nut".
Fast jeder erwartete, daß der PCjr ein noch größerer Verkaufsschlager würde als
der originale PC, aber als er Ende 1983 auf den Markt kam, war die Enttäuschung
groß. Der PCjr war zu einem kurzen Leben verurteilt. Das verdankte er einer
unhandlichen Tastatur, außerdem schien er nur begrenzt ausbaufähig und dann
besaß er noch diverse Mängel, wie zum Beispiel eine Störung zwischen Tastatur
und Diskettenlaufwerk, so daß man sich mit dem Jr nur herumärgern konnte. Hinzu
kam, daß weniger Interesse für Homecomputer in der Preisklasse des Jr bestand,
als erwartet wurde. W ährend des ganzen Jahres 1984 schleppte sich der Verkauf
des Jr dahin, obwohl IBM ihn mit einigen heroischen Versuchen zu einem Erfolg
machen wollte. 1985 ließ man den PCjr sterben, und nun warten wir darauf, welche
neuen Pläne IBM bezüglich dem unteren Ende der PC-Familie vorlegt.
1.1
Aus der Familiengeschichte
3
Auch wenn 1984 für den Jr ein enttäuschendes Jahr war, für das obere Ende der
PC-Familie war es aufregend. Im Sommer 1984 kamen zwei sehr leistungsfähige
Modelle des PC heraus. Zuerst gab es den Compaq DeskPro, das erste Mitglied
der PC-Familie, das mehr Arbeitsspeicher als der Original-PC besaß. Kurz danach
stellte IBM das AT-Modell vor, das eine viel größere Arbeitsgeschwindigkeit hatte
als der PC und der XT oder sogar als der neue DeskPro.
Während dieser Zeit stellte sich IBM auf den beachtlichen Erfolg und die wach­
sende Bedeutung der Personalcomputer ein. Die Firmenphilosophie bezüglich
dem Management der PC-Familie änderte sich und es bildete sich gewisserma­
ßen eine „Hauptströmung". Sie will von der isolierten und individuellen Personal­
computerei hinlenken auf einen integrierenden Ansatz, der die PC-Familie besser
in die zentralen Bereiche des Computergeschäfts von IBM einfügt. Damit waren die
wilden ersten T age des PC vorbei und es entstand eine Ära einer weniger persönli­
chen Pesonalcomputerei.
Das war eine kurze Zusammenfassung der Geschichte der PC-Familie. Die wich­
tigsten chronologischen Daten der ersten sechs Jahre des PC sind:
1980
Planung:
IBM entscheidet sich für die Entwicklung eines PC und beginnt mit dem Ent­
wurf.
1981
Vermarktung:
Das Design des PC ist fertig, und das Modell kommt im August auf den
Markt. Jeder ist überrascht.
1982
Unerwarteter Erfolg:
Der PC kommt in die Geschäfte und ist weitaus erfolgreicher, als man allge­
mein, auch bei IBM selbst, erwartete.
1983
Festplatten und Homecomputer:
Zu Beginn des Jahres wird der XT vorgestellt, der als erster IBM-PC mit
einer Festplatte ausgerüstet ist. Ende des Jahres kommt der PCjr auf den
Markt, begleitet von enormen Erwartungen.
1984
Der Jr verschwindet und der Sr kommt:
Der PCjr stirbt langsam vor sich hin. Im Sommer kommt der AT heraus, der
den Weg zu einer neuen PC-Generation zeigt.
1985
Wachablösung:
IBM baut die PC-Produktlinie aus und will die alten Modelle durch eine
zweite Generation ersetzen. Die PC-Familie wird an die Hauptpalette der
IBM-Produkte angeglichen.
Nach diesem Überblick über die Geschichte der PC-Familie wollen wir auf die ver­
schiedenen Modelle des PC eingehen, um zu sehen, in welcher Hinsicht sie mit­
einander verwandt sind.
4
Der Stammbaum
1.2
Die PC-Familie
Aus dem historischen Überblick konnte man ersehen, wie sich die PC-Familie ent­
wickelte und welche unregelmäßige und sprunghafte Entwicklung sich vollzog.
Dies sagt aber noch nichts über die verschiedenen Familienmitglieder aus und
über deren Beziehungen bezüglich Leistungsfähigkeit und ihrer Fähigkeiten.
Auch was den folgenden Überblick über die PC-Familie anbelangt, gelten wieder
einige Einschränkungen. Zum einen kann der Überblick nur so vollständig sein,
wie es der Stand der Entwicklung zum aktuellen Zeitpunkt bei der Entstehung die­
ses Buches erlaubt. Zweitens bietet das Buch nicht genügend Platz, um auf jeden
entfernten Verwandten der weitläufigen PC-Familie einzugehen, und es ist in die­
sem Rahmen auch nicht notwendig. Und schließlich beruht die Entscheidung, was
aus dem Stammbaum erwähnenswert erscheint, auf meinem eigenen persönli­
chen Urteil.
Auf diesem Hintergrund sollen im folgenden die Hauptmodelle der PC-Familie vor­
gestellt werden. Abbildung 1-1 enthält eine grobe Skizzierung des Stammbaums.
Die zentrale Linie zeigt den Hauptstamm der PC-Familie, angefangen vom kleinen
PCjr bis zum großen AT. Die Modelle mit abweichenden Eigenschaften bilden die
Äste. Aus der Abbildung 1-1 kann man ungefähr den Verwandtschaftsgrad eines
Modells erkennen, je nachdem, wie weit es vom Hauptstamm entfernt ist.
PCjr
3270 PC
1
Compaq
Portable PC
PC
Compaq Plus
XT
1
----DG1
::___ X370
Compaq Desk Pro
1
AT
Compaq-286
Abb. 1-1:
AT
370
Compaq Desk Pro-286
Stammbaum der PC-Familie
Das kleinste und schwächste Mitglied der Familie ist der unglückselige PCjr. Wenn
man seine Arbeitsgeschwindigkeit und Diskettenspeicherkapazität mit dem Stan­
dard-PC vergleicht, (die zwischen den meisten anderen Modellen nicht variieren),
so hat der PCjr in beiden Punkten nur die Hälfte aufzuweisen.
1.2 Die PC-Familie
5
Der Original-PC stellt in dieser Übersicht den Standard-PC dar. Er kann eine viertel
Million Anweisungen pro Sekunde ausführen. Im Fachjargon wären das 1/4 „mips"
(millions instructions per second). Seine Diskettenspeicherkapazität beträgt
360.000 Zeichen (Bytes) pro Diskettenlaufwerk, insgesamt bei zwei Laufwerken
also fast 3/4 Millionen Bytes. Seine Arbeitsspeicherkapazität (das ist der eigent­
liche Arbeitsbereich, in dem die Aktivitäten des Computers stattfinden) beträgt eine
viertel Million Bytes, aber sie kann noch auf das Zweieinhalbfache ausgebaut wer­
den.
Der XT unterscheidet sich vom PC lediglich durch eine kapazitätsmäßig größere
(und auch schnellere) Platte. Es handelt sich um eine sogenannte Festplatte (oder
auch hard disk), im Gegensatz zu den auswechselbaren Disketten (floppy disks),
mit denen der PC ausschließlich arbeitet. Eine Computerdiskette ist eine Kombina­
tion von Datenspeicher und Arbe.itsbereich, weshalb eine größere und schnellere
Platte die Leistungsfähigkeit eines Computers wesentlich steigert, obwohl der XT
die gleiche Arbeitsgeschwindigkeit und die gleiche Arbeitsspeicherkapazität wie
der PC aufweist. Die Festplatte des XT faßt zehn Millionen Zeichen, zwölfmal mehr
als die Disketten des PC, und ihre effektive Arbeitsgeschwindigkeit beträgt unge­
fähr ein Fünftel der Geschwindigkeit der Diskettenlaufwerke.
Der Compaq DeskPro unterscheidet sich gegenüber dem PC und XT durch einen
schnelleren Mikroprozessor. Der DeskPro ist um fünfzig Prozent stärker als der PC.
(In Abschnitt 1.3 werden wir sehen, um welchen Mikroprozessor es sich handelt.) Er
hat mit bis zu zwanzig Millionen Bytes auch doppelt soviel Plattenkapazität wie der
XT. Damit scheint der DeskPro ein größerer Sprung über den XT hinaus zu sein, als
dies zwischen PC und XT der Fall war. Tatsächlich ist der Fortschritt aber viel klei­
ner, auch wenn es sich um einen wichtigen Entwicklungssprung handelte.
Den nächsten größeren Sprung hinsichtlich der Speicherkapazität macht das AT­
Modell von IBM. Der AT arbeitet, wie der DeskPro, mit einem anderen Mikroprozes­
sor und leistet damit soviel wie etwa fünf PCs oder mehr als drei DeskPros. Das ist
ganz ordentlich. Damit diese Leistungsstärke des Mikroprozessors nicht verpufft,
hat der AT außerdem eine Platte von zwanzig Millionen Bytes Kapazität, doppelt
soviel wie der XT, und es können bei Bedarf sogar noch größere Platten ange­
schlossen werden. Schließlich kann der AT auch noch mit mehr Arbeitsspeicher
versehen werden als alle vorhergehenden Modelle, nämlich mit drei oder mehr
Millionen Bytes. Aber normalerweise hat man keinen Vorteil aus solchen Arbeits. speichergrößen, so daß wir hier nicht näher darauf eingehen müssen.
Das derzeit letzte Modell im Hauptstammbaum der PC-Familie ist der Compaq
DeskPro-286. Der DeskPro-286 ist dem AT-Modell in vielem ähnlich, aber er arbei­
tet ein Drittel schneller als der AT. Er ist mit einer Festplatte ausgerüstet, die dreißig
Millionen Bytes faßt.
Neben dieser Hauptlinie der PC-Familie gibt es eine Anzahl von PC-Ablegern, die
als solche nicht besonders interessant sind, obwohl einige davon durchaus sehr
erfolgreich verkauft werden. Zu den vielen, die in diese Kategorie fallen, gehören
die Tandy Modelle 1000 (vergleichbar mit dem PC) und 1200 (vergleichbar mit
dem
XT), der NCR PC-4 und der Zenith 150 (PCs) und der Texas Instruments Busi­
ness Pro (zählt zur selben Klasse wie der AT).
6
1
Der Stammbaum
Wenn man die Hauptlinie verläßt, findet man eine Anzahl sehr interessanter Varia­
tionen. Der erste Zweig besteht aus den tragbaren Geräten (besser als transpor­
table Geräte bezeichnet, weil sie gar nicht so leicht zu tragen sind). Bei den Trag­
baren sind die Zentraleinheit und der Bildschirm gemeinsam in einem robusten
Koffer untergebracht. Das ist sehr praktisch, weil man sie herumtragen, als Flugge­
päck aufgeben oder sogar verschiffen kann. Vier tragbare Geräte sind besonders
zu erwähnen: der originale Compaq (der erste und, wie manche sagen, der beste
PC-Ableger), dann das tragbare Modell des IBM PC (beide sind äquivalent zum
Standard-PC); schließlich der Compaq Plus, der zum XT äquivalent ist, und der
Compaq Portable-286, vergleichbar mit dem DeskPro-286 und besser als das
Standard-AT-Modell.
Der kleinere Data General One oder DG-1, gehört zwar ebenso in die breite Kate­
gorie der Tragbaren, bildet aber doch selbst noch eine eigene Klasse. Der DG-1 ist
der teilweise gescheiterte Versuch, einen tatsächlich tragbaren Computer zu ent­
wickeln, der klein und leicht genug ist. Wegen seines einzigartigen Designs hat der
DG-1 nur 85 Prozent der Rechnerstärke eines PC, aber dafür die doppelte Disket­
tenkapazität. Der DG-1 war ein heroischer, aber erfolgloser Versuch, einen wirklich
tragbaren PC herzustellen. Sicher werden ihm erfolgreichere Modelle folgen,
soweit es der technische Fortschritt erlaubt. Der DG-1 selbst ist kein wichtiges Mit­
glied der PC-Familie, aber er repräsentiert eine Geräteklasse, die wahrscheinlich
an Bedeutung gewinnen wird.
In den exotischen Bereich der PC-Familie, d. h. zu den Familienmitgliedern mit
wirklich ungewöhnlichen Fähigkeiten, gehören drei Modelle von IBM. Alle sind
zwar eigentlich PCs, lassen sich aber für mehrere Zwecke einsetzen. Der 3270-PC
arbeitet wie ein PC der XT-Klasse, dient daneben aber auch als Standardterminal
3270, das mit einer Großrechenanlage von IBM korrespondieren und arbeiten
kann. Die anderen zwei Exoten sind der XT-370 und der AT-370. Sie fungieren nicht
nur als XT bzw. AT, sondern können auch einen Teil der Aufgaben von großen
Rechenanlagen wahrnehmen. Diese drei sind natürlich Spezialgeräte, aber sie
gehören doch zur PC-Familie.
Die letzte Kategorie sind schließlich die entfernten Verwandten des PC. Das sind
Computer, die dem PC zwar ähnlich, aber nur teilweise kompatibel sind. Beach­
tenswert davon sind der Tandy 2000, der Texas Instruments Professional Compu­
ter, der Wang PC, der DEC Rainbow und der NEC APC-111. Es gibt natürlich noch
viel mehr von diesen manchmal sehr weit entfernten Verwandten, die in diesem
Rahmen aber nicht mehr interessieren.
1.3
Die 8086-Familie
Wenn man die PC-Familie verstehen will, muß man eine Vorstellung von der
Arbeitsweise des Mikroprozessors haben, der von dieser Familie verwendet wird.
Im Gegensatz zur Tradition der Großrechenanlagen werden Mikrocomputer wie
unser PC nicht vollständig neu entworfen und gebaut. Statt dessen vereinen fast
alle Mikrocomputer viele Standardkomponenten, die unabhängig von den Compu­
tern, in denen sie zum Einsatz kommen, entwickelt wurden.
1.3 Die 8086-Familie
7
Wenn ein Computerhersteller, wie IBM, einen Computer am Reißbrett entwirft, kann
er dessen Eigenschaften und Fähigkeiten festlegen. Das gilt auch für den Befehls­
satz oder die interne Sprache des Computers. Die meisten Mikrocomputer, ein­
schließlich unseres PC, sind allerdings nicht auf diese Weise entstanden. Sie erhal­
ten ihr Denkvermögen (und ihren Befehlssatz) vielmehr von einem der vielen Stan­
dardmikroprozessoren, die von Chipherstellern angeboten werden. IBM konnte
also unter vielen möglichen Mikroprozessoren auswählen. Die Wahl bestimmt den
Befehlssatz oder die Sprache des PC und entscheidet somit auch sehr wesentlich
über seine Zukunft.
IBM wählte den Intel 8088-Mikroprozessor. Der 8088 ist nur ein bestimmtes Mit­
glied einer ganzen Familie von Mikroprozessoren, der sogenannten 8086-Familie,
die von Intel als dem Pionier der Chiphersteller entwickelt wurde. Mit der Wahl für
diese Mikroprozessorfamilie legte IBM die prinzipiellen Möglichkeiten des PC fest.
Man muß deshalb über die wichtigsten Eigenschaften der 8086-Familie Bescheid
wissen.
Zunächst muß klargestellt sein, daß zwar jedes Mitglied der PC-Familie auf einem
Mitglied der 8086-Mikroprozessorfamilie beruht, daß sich die PC-Familie und die
8086-Familie aber deshalb nicht direkt aufeinander abbilden lassen. Es gibt kein
spezielles Mitglied aus der PC-Familie für jeweils ein Mitglied aus der 8086-Fami­
lie. Jeder PC enthält aber etwas von der 8086-Familie, und es ist somit ganz sinn­
voll, etwas über diese Familie zu wissen, wenn man die Richtung, die die PC-Fami­
lie überhaupt einschlagen kann, verstehen will.
Die 8086-Familie gründet auf dem 8086-Chip, nach dem die ganze Familie
benannt wurde. Der 8086 wurde für 16-Bit-Rechner entworfen, d. h. ein solcher
Computer kann gleichzeitig 16 Bits verarbeiten. (Wir werden genauer erklären, was
das bedeutet, wenn wir in Kapitel 3 über Bits und Computerdaten sprechen.) Die
Vorgängergeneration der Mikroprozessoren von Intel, die 8080, waren 8-Bit-Com­
puter.
Der 8086, als 16-Bit-Mikroprozessor, kann viel mehr als seine Vorgänger. Die Lei­
stungsfähigkeit eines Mikroprozessors ist dabei nur sehr ungenau angedeutet,
wenn man ihn einfach als „8-Bit", „16-Bit" oder „32-Bit" bezeichnet. Die Eigen­
schaften einer neuen Generation von Computerchips gehen viel weiter, als die
neuen Bitraten besagen. Diese Bitraten lassen aber zumindest erkennen, wieviel
Daten der Computer gleichzeitig verarbeiten kann. Der 8086 verarbeitet doppelt
soviel wie sein Vorgänger, der 8080.
In der Praxis bedeutete die Verwendung des 8086 als Basis einer Computerent­
wicklung ein Problem. Der 8086 kann nämlich sinnvoll nur mit solchen Computer­
komponenten zusammenarbeiten, die ebenfalls 16 Bits gleichzeitig behandeln
können. Als der PC entwickelt wurde, gab es 8-Bit-Komponenten massenweise
und billig. 16-Bit-Komponenten waren teuerer und nicht so leicht verfügbar. Dies
bedeutete ein Hindernis für jeden, der einen Computer auf der Basis des 8086 ent­
wickelte.
Intel löste das Problem einfach mit dem 8088-Chip. Der 8088 verfügt intern über
sämtliche Eigenschaften des 8086; mit seiner Umgebung kommuniziert er jedoch
8
1
Der Stammbaum
mit nur 8 Bits gleichzeitig. Damit vermindert sich die Geschwindigkeit des 8088
leicht, dafür kann er aber mit anderen Komponenten arbeiten, die billig und reich­
lich vorhanden sind.
IBM entwickelte deshalb den Original-PC auf der Basis des 8088, einem Mikropro­
zessor mit einer 16-Bit-Leistung und der Wirtschaftlichkeit von 8-Bit-Mikroprozes­
soren. Der 8088 bildete das Zentrum der ersten vier PC-Modelle von IBM, nämlich
des PC, des XT, des tragbaren PC und des PCjr. Dasselbe gilt für die ersten beiden
Modelle von Compaq, den Compaq und den Compaq Plus, sowie für die meisten
anderen „PC-Ableger". Als Compaq ihr drittes Modell, den DeskPro, leistungsfähi­
ger gestalten wollte, wurde schließlich der 8086 eingesetzt.
Nach dem Entwurf des 8086 und des 8088 begann Intel, diese Mikroprozessorfa­
milie zu verbessern und zu erweitern. Bis zu dieser Zeit mußten alle Mikroprozes­
soren, einschließlich diese beiden, durch andere verwandte Computerchips unter­
stützt werden, womit die Leistungsfähigkeit des Computers verbessert werden
sollte. Intel stellte bei diesem Verfahren zwei wichtige Nachteile fest. Der Einsatz
von separaten Chips verlangsamt die Operationen des Computers und erhöht
seine absoluten Herstellungskosten. Wenn dagegen möglichst viele Funktionen im
selben Chip untergebracht sind wie der Mikroprozessor, kann dieser schneller
arbeiten, und außerdem senken weniger Chips auch die Kosten.
Diese Überlegungen führten zur Entwicklung des 80186 und 80188 (die normaler­
weise kurz „der 186" und „der 188" genannt werden). Diese beiden neuen Mikro­
prozessoren verfügten über einen größeren Befehlssatz und hatten mehr Fähigkei­
ten als ihre Vorgänger; ihr wesentlicher Vorteil war jedoch das Verlagern vieler Un­
terstützungsfunktionen in den Mikroprozessor. Bereits die Modellbezeichnung läßt
erkennen, daß der 186 wie der 8086 innen und außen mit 16 Bits arbeitet, während
der 188 wie der 8088 nach außen eine 8-Bit-Schnittstelle hat und intern mit 16 Bits
arbeitet.
Diese neuen Chips wären beide geeignet gewesen, die Hauptmitglieder der PC­
Famile zu verstärken, aber das ist nicht passiert. Sie kamen bei etlichen entfernten
Verwandten des PC zum Einsatz, auch bei dem fast PC-kompatiblen Tandy 2000.
Weder IBM noch Compaq haben einen dieser beiden Chips verwendet, obwohl
der 188 für den PCjr und der 186 ausgezeichnet für den Compaq DeskPro gepaßt
hätte. Der Grund dafür ist sehr einfach. Als die beiden Chips interessant waren,
waren sie in nicht so großen Mengen lieferbar, als daß man damit einen sicheren
Verkaufsschlager hätte planen können. Als sie dann endlich reichlich verfügbar
waren, gab es schon andere Neuheiten.
Der 186 und der 188 waren zwar wichtige, wenn auch wenig eingesetzte Erweite­
rungen der 8086-Familie, aber im Vergleich zu ihren Vorgängerchips brachten sie
doch keine wirklich aufregenden Neuerungen. Die stolzeste Errungenschaft von In­
tel ist derzeit der 80286, kurz 286 genannt.
Der 286 übertrifft vor allem seine Vorgänger in drei Punkten bei weitem. Erstens
kann er viel mehr Arbeitsspeicher als die vorhergehenden Chips aufnehmen. Bis­
her war man auf eine Million Bytes bzw. Zeichen beschränkt. Der 286 kann dage­
gen bis zu 16 Millionen Bytes speichern. zweitens kann der 286 mit einem soge-
1.3 Die 8086-Familie
9
nannten virtuellen Speicher arbeiten, d.h. er verfügt scheinbar über mehr Speicher,
als tatsächlich der Fall ist. Mit diesen beiden Speichererweiterungen wird der
Arbeitsbereich des 286 enorm vergrößert. Die dritte neue Eigenschaft des 286 ist
das Multitasking. Damit kann ein Computer sicher und zuverläßlich gleichzeitig
mehrere verschiedene Probleme bearbeiten. (Bei den vorhergehenden Chips
hätte Multitasking zu unerwarteten Zusammenbrüchen führen können.)
IBM führte den 286 mit dem AT-Modell im Sommer 1984 in die PC-Familie ein. Die­
sem Beispiel folgte eine Anzahl von AT-Ablegern, besonders zu erwähnen der
Compaq DeskPro-286 und der Compaq Portable-286. Wie schon früher ähneln
die 286-Modelle von Compaq den IBM-Geräten, sind aber durch einige wichtige
Extras erweitert. Besonders interessant ist ein „Geschwindigkeitsschalter", durch
den die beiden Compaq-286 entweder so schnell wie der AT (Geschwindigkeits­
kompatibilität) oder aber noch ein Drittel schneller laufen können.
Wie schon der 186 und der 188 nutzt der 286 die Integration von Chips zur Steige­
rung seiner Arbeitsgeschwindigkeit. Die Computer, die auf dem 286 basierten,
zogen zunächst keinen wesentlichen Vorteil aus den mächtigen neuen Möglichkei­
ten. Sie wurden einfach nur wie schnellere PCs behandelt, als wären sie auf der
Basis des 186 entwickelt worden und nicht auf dem 286.
Selbstverständlich wird die 8086-Familie von Intel nicht mit dem 286 enden. Als
der 286 mit dem AT gerade kommerziell erfolgreich war, plante Intel mit dem 386
bereits die nächste große Erweiterung der Familie. Die wichtigste neue Fähigkeit
des 386 ist die Möglichkeit, 32 Bits Daten gleichzeitig verarbeiten zu können.
Man kann davon ausgehen, daß sich die PC-Familie parallel zur 8086-Familie ent­
wickeln wird, damit die Vorteile der neuen Chips genutzt werden können.
1.
Sehen Sie Lücken im Stammbaum der PC-Familie? Erläutern Sie, was nach Ihrer Meinung
der wichtigste Ausschnitt aus dieser Familie ist.
2.
Wird ein Computer für uns wirklich leistungsfähiger, wenn er eine Festplatte besitzt, wie der
XT? Welche Art von Arbeit läßt sich mit einem XT leichter erledigen als mit einem PC?
Welche Art von Arbeit kann ein XT ausführen, aber nicht ein PC?
3.
Ist Rechengeschwindigkeit grundsätzlich immer wichtig? Oder gibt es Aufgaben, für die die
Rechengeschwindigkeit des AT keinen Vorteil gegenüber dem PC oder sogar dem PCj r
bringt?
10
2
Grundlagen: Was ist ein Computer?
Computer sind heute größtenteils eine Selbstverständlichkeit geworden. In zuneh­
mendem Maße handelt es sich dabei um Personalcomputer wie unseren IBM PC.
Da wir täglich mit ihnen in Berührung kommen oder direkt mit ihnen arbeiten, sind
wir mit ihrer Bedienung mehr oder weniger vetraut. Das bedeutet aber noch lange
nicht, daß wir wirklich wissen, wie sie funktionieren.
Dieses Buch wird Ihnen das Innen- und Außenleben des IBM PC erklären. Bevor
wir auf die Besonderheiten des PC eingehen, müssen wir aber sicherstellen, daß
wir die Grundprinzipien eines Computers verstanden haben.
2.1
Das Modell eines Computers
Computer basieren, genauso wie ein Radio oder Plattenspieler, auf einer bestimm­
ten Modellvorstellung.
Wenn wir uns eine Schallplatte anhören, hören wir Musik, ohne daß natürlich ein
Musiker im Plattenspieler sitzt. Statt dessen enthält der Plattenspieler eine Elektro­
nik, die sozusagen Töne imitiert. Unsere Radios und Plattenspieler sind möglich,
weil wir das Wesen von Tönen entdeckt haben und damit einen mechanischen
oder elektronischen Tonimitator bauen konnten. Bei den Bildern von Film und
Fernsehen ist es ähnlich.
Bei unseren Computern verhält es sich im wesentlichen genauso, aber eben auf
der Basis von Zahlen und Arithmetik.
Wenn man eine Maschine bauen will, die rechnen kann, muß man zunächst festle­
gen, welche Art von Arithmetik sie eigentlich beherrschen soll. Hierzu muß die
mathematische Theorie zu Rate gezogen werden. Mathematik und Maschinen
benötigten eine gemeinsame Basis, die in der sogenannten binären Arithmetik
gefunden wurde.
Die Zahlen, mit denen wir arbeiten, basieren auf der Zahl zehn. Wir verwenden das
Dezimalzahlensystem, das mit zehn Symbolen arbeitet, mit 0,1,2,„. bis 9, und bil­
den alle Zahlen mit diesen zehn Ziffern. Das ist aber nicht zwingend. Wir können
unsere Zahlen auch auf 8 Symbolen basieren lassen oder auf drei oder zwei. Die
mathematische Theorie und einige einfache Beispiele zeigen, daß man die glei­
chen Zahlen in jedem beliebigen anderen Zahlensystem schreiben und die glei­
chen arithmetischen Operationen ausführen kann, egal ob es auf der Zehn, Drei
oder Zwei basiert. Die mathematische Informationstheorie hat jedoch bewiesen,
daß man nicht niedriger als bis zur Zwei gehen kann, dem binären Zahlensystem.
Glücklicherweise kann man nun sehr leicht eine elektronische Maschine bauen,
die eine binäre Zahl darstellen kann. Eine binäre Zahl wird mit zwei Symbolen, 0
und 1, geschrieben (so wie unsere Dezimalzahlen mit zehn Symbolen, 0 bis 9,
geschrieben werden). Elektrische Bauteile, wie zum Beispiel Schalter, haben zwei
Zustände: ein Schalter kann entweder an oder aus sein. Man kann sich also leicht
vorstellen, daß ein Ein/Ausschalter eine binäre 0 oder1 darstellen kann. Tatsächlich
entspricht diese Vorstellung unserem natürlichen Verständnis so sehr, daß der
2.2
Überblick
11
Netzschalter vieler Haushaltsgeräte und Maschinen mit 0 und 1 gekennzeichnet
wird, was Aus und Ein bedeutet. Zwischen einem Schalter, der eine Zahl 0 oder 1
repräsentieren kann, und einem Computer ist natürlich ein Riesenunterschied.
Trotzdem kann man sich leicht vorstellen, wie dieses elektronische Modell einer
einfachen binären Zahl weiterentwickelt werden kann und damit ist das Grundprin­
zip klar. Information, einschließlich Zahlen und Arithmetik, kann in binärer Form
dargestellt werden. Elektronische Komponenten, wie zum Beispiel Schalter, die
ein- oder ausgeschaltet sind, arbeiten im Grunde binär. Mit Hilfe von Schaltern und
anderen Bauteilen kann eine elektronische Maschine Zahlen und alle anderen For­
men von Information imitieren.
Das reicht zunächst aus, um zu verstehen, wie man einen Computer bauen kann.
Trotzdem wissen wir bisher noch nicht viel über Computer. Wenn wir ein Haus be­
greifen wollen, müssen wir uns auch mit Bausteinen auskennen. Über die Archi­
tektur oder das fertige Gebäude sagt das aber noch nichts aus. Genau damit wer­
den wir uns im folgenden beschäftigen.
2.2
Überblick
Die fünf wichtigsten Komponenten eines Computers sind: der Prozessor, der
Arbeitsspeicher, die Ein/Ausgabe (meist E/A oder 110 genannt von Input/Output),
der Plattenspeicher und die Programme. Wir werden diese Komponenten kurz vor­
stellen und dann näher darauf eingehen. Die restlichen Kapitel des Buches sind
schließlich den tatsächlichen Details gewidmet.
Der Prozessor ist das „Gehirn" oder der Motor des Computers. Er ist es, der unsere
Anweisungen (unsere Programme) im Computer ausführen kann. Der Prozessor
weiß, wie man addiert oder subtrahiert und einfache logische Verknüpfungen aus­
führt. In einer Großrechenanlage wird der Prozessor oft Zentraleinheit oder CPU
genannt (von Central Processing Unit). In einem Mikrocomputer, wie unserer PC­
Familie, wird der Prozessor normalerweise Mikroprozessor genannt. Das ist die
Bezeichnung, die wir besonders in diesem Buch fast immer verwenden werden.
Sie wissen bereits aus Kapitel 1, daß die PC-Familie mit der 8086-Mikroprozessor­
familie arbeitet. Später in diesem Kapitel werden wir noch mehr über Prozessoren
erfahren, und in Kapitel 6 werden die Besonderheiten der Mikroprozessoren des
PC aufgezeigt.
Der Speicher ist der Arbeitsbereich des Computers, sozusagen sein Schreibtisch
oder Spielfeld. Das Gedächtnis eines Computers hat nichts mit unserem eigenen
Gedächtnis zu tun, so daß der Begriff leicht irreführend sein kann. Der Arbeitsspei­
cher ist lediglich der Arbeitsplatz des Computers, etwa analog zum Schreibtisch
eines Angestellten, zur Werkbank eines Schreiners oder dem Spielfeld einer Sport­
mannschaft. Im Arbeitsspeicher des Computers finden alle Aktivitäten statt. Der
Vergleich mit einer Werkbank ist besonders gut, weil man daraus ersehen kann,
wann die Speicherkapazität wichtig ist und wann nicht. Wie bei einer Werkbank
setzt auch die Größe eines Computerspeichers möglichen Aufgaben, die der
Computer ausführen kann, praktische Grenzen. Die Fertigkeiten eines Handwer­
kers und andere Faktoren sind sicherlich wichtig, aber die Größe des Arbeitsplat-
12
2 Grundlagen: Was ist ein Computer?
Arbeits­
speicher
P
r_o
z
_e
_s
_ so
_ r_
_
,__
_,,:
Eingabe
Ausgabe
_
t
Platten
Programme
Abb. 2-1:
Die fünf Hauptkomponenten eines Computers
zes setzt genauso Grenzen. Das ist der Grund, warum häufig über die Arbeitsspei­
cherkapazität von Computern gesprochen wird, die gewöhnlich in Kilobyte ange­
geben wird (vgl. hierzu ausführlich Kapitel 3). Ein PC kann zum Beispiel 640 Kilo­
byte Arbeitsspeicher haben.
Die Eingabe/Ausgabe, oder E/A, ist der Sammelbegriff für alles, was der Computer
für das Einlesen oder Ausgeben von Daten benötigt. Dazu gehören auch die Ein­
gaben, die wir auf der Tastatur eintippen, und Ausgaben, die der Computer auf
dem Bildschirm zeigt oder auf dem Drucker ausdruckt. Der Computer kann jeder­
zeit Daten aufnehmen oder ausgeben. Die Ein/Ausgabe erfolgt über Ein/Ausgabe­
geräte, die im Fachjargon auch Peripherie-Geräte oder einfach Peripherie genannt
werden. Unter den vielen verschiedenen Ein/Ausgabekomponenten ist eine beson­
ders wichtig, so daß wir hierauf zuerst eingehen wollen.
Der Plattenspeicher ist eine sehr wichtige Art der Ein/Ausgabe. Er fungiert gleich­
zeitig als Handbibliothek, Aktenschrank und Werkzeugkasten des Computers. Der
Plattenspeicher speichert die Daten, die der Computer gerade nicht im Arbeits­
speicher benötigt. Daten können auch auf anderen Medien als Platten gespeichert
werden, aber Platten sind sicherlich das beste und wichtigste Speichermedium.
Wie wir in Kapitel 1 gesehen haben, können sich die Mitglieder der PC-Familie.
allein durch ihre Plattenspeicherkapazität als hochleistungsfähige (z.B. der XT)
und schwächere Modelle (z.B. der originale PC) unterscheiden.
Die Programme bilden schließlich den letzten Teil eines Computers, der den Com­
puter erst zu einem mächtigen Werkzeug macht. Programme sind die Anweisun­
gen, die dem Computer sagen, was er zu tun hat.
Nach dieser Übersicht wollen wir im folgenden auf diese fünf Komponenten etwas
detaillierter eingehen. Die wirklichen Details folgen dann in den nächsten Kapiteln.
Der Mikroprozessor ist derjenige Teil unseres Computers, der unsere Programme
ausführen soll. Da die Programmausführung der eigentliche Zweck des Computers
2.2
Überblick
13
ist, konzentriert sich alles auf den Mikroprozessor. Der Mikroprozessor muß des­
halb einige besondere Fähigkeiten aufweisen. Zunächst muß er Informationen in
den Arbeitsspeicher einlesen können. Sowohl die Programmanweisungen, die der
Mikroprozessor ausführen, als auch die Daten, mit denen er arbeiten soll, müssen
gleichzeitig im Arbeitsspeicher des Computers gespeichert sein. Außerdem muß
der Mikroprozessor eine Reihe von einfachen Kommandos und Anweisungen
erkennen und ausführen können, damit unsere Programme abgearbeitet werden.
Und schließlich muß er den anderen Komponenten des Computers mitteilen kön­
nen, was zu tun ist, d. h. der Mikroprozessor koordiniert also die gesamten T ätig­
keiten des Computers.
Wie man sich vorstellen kann, muß ein Mikroprozessor für diese Aufgaben über
zahlreiche Fähigkeiten verfügen. Wie er zu diesen Fähigkeiten kommt, und wie der
Mikroprozessor im einzelnen funktioniert, wird in Kapitel 6 besprochen.
In diesem Buch sprechen wir immer wieder über Programme und Daten: Pro­
gramme, die der Mikroprozessor ausführt, und Daten, mit denen er arbeitet. Für
den Mikroprozessor ist die Unterscheidung zwischen Programmen und Daten
wichtig. Das eine besagt, was der Mikroprozessor zu tun hat, und das andere ist
das, mit dem es getan wird. Nicht alle Computerkomponenten machen diese Un­
terscheidung, wie wir bald sehen werden.
Wie wir bereits erwähnt haben, enthält der Arbeitsspeicher die Programmanwei­
sungen und die Daten für eine bestimmte Aufgabe und der Speicher ist das Zen­
trum aller Aktivitäten. Wir müssen aber verstehen, daß der Arbeitsspeicher des
Computers nur ein temporärer Speicher ist, d. h. ein Notizblock oder eine Tafel, auf
die der Computer seine Arbeitsnotizen schreibt. Der Arbeitsspeicher des Compu­
ters ist kein langfristiger Speicher, im Gegensatz zu unserem eigenen menschli­
chen Gedächtnis. Er ist einfach nur ein Platz, an dem gearbeitet werden kann, oder
ein Spielfeld, das nach jedem Spiel für das nächste Spiel und das nächste Team
geräumt werden muß.
Während der Mikroprozessor zwischen Programm und Daten streng unterscheidet,
gibt es für den Arbeitsspeicher (und auch für einige andere Teile des Computers)
keinen Unterschied zwischen Programmen und Daten. Beides sind nur Informatio­
nen, die zeitlich begrenzt in den Speicher aufgenommen werden können. Auch ein
Blatt Papier weiß nicht, was wir darauf schreiben, und genauso ist es mit dem
Arbeitsspeicher oder den Ein/Ausgabegeräten und dem Plattenspeicher.
Der Arbeitsspeicher ist nur teilweise mit einem Blatt Papier vergleichbar, weil man
dort nichts auf Dauer aufzeichnen kann. Alles, was dort steht, kann sofort wieder
überschrieben oder geändert werden. Dazu muß der Arbeitsspeicher nicht erst
gelöscht werden. Das Schreiben in den Arbeitsspeicher löscht automatisch alles,
was vorher darin enthalten war. Eine Information aus dem Speicher zu lesen, ist so
einfach wie bei einem Blatt Papier. Sowohl der Mikroprozessor als auch die Ein/
Ausgabegeräte können natürlich Daten aus dem Arbeitsspeicher lesen und in den
Arbeitsspeicher schreiben.
Der Mikroprozessor und der Arbeitsspeicher bilden zunächst eine geschlossene
Welt. Erst die Ein/Ausgabegeräte eröffnen uns diese Welt und die Kommunikation
mit ihr. Als Ein/Ausgabegerät gilt jede Komponente, mit der der Computer, abgese-
14
2 Grundlagen: Was ist ein Computer?
hen von seinem Arbeitsspeicher, kommuniziert. Wie wir bereits erwähnt haben,
gehören hierzu die Tastatur, der Bildschirm, der Drucker, ggf. eine Telefonleitung,
die mit dem Computer verbunden ist, und sämtliche anderen Kommunikationska­
näle, die in den oder aus dem Computer führen. Auf die verschiedenen Ein/Ausga­
begeräte des PC werden wir später noch genauer eingehen.
Allgemein kann man sagen, daß die Ein/Ausgabegeräte eines Computers für uns
gedacht sind. Alle, was der Computer aufnimmt (besonders von der Tastatur),
kommt von uns. Und alles, was der Computer auf dem Bildschirm, Drucker oder
sonst wo ausgibt, ist an uns adressiert. Eine besondere Kategorie der Ein/Ausga­
begeräte sind die Plattenlaufwerke, die nur für den Computer selbst gedacht sind.
Plattenspeicherung ist nur eine bestimmte Form der Ein/Ausgabe, mit der der
Computer Daten in den Speicher lesen oder aus dem Speicher schreiben kann. Es
gibt einen wesentlichen Unterschied zwischen Plattenspeichereinheiten und den
anderen Geräteeinheiten. Informationen können von uns nicht aus dem Platten­
speicher gelesen oder dorthin geschrieben werden, und sie sind auch gar nicht für
uns bestimmt. Sie können nur vom Computer selbst gelesen oder geschrieben
werden. Die anderen Ein/Ausgabeeinheiten stellen eine Schnittstelle zwischen uns
und dem Computer dar. Der Computer „sieht", was wir auf der Tastatur eintippen,
und wir sehen, was der Computer auf dem Drucker oder Bildschirm schreibt. Das
gilt aber nicht für den Plattenspeicher. Der Plattenspeicher ist vielmehr die Biblio­
thek oder der Werkzeugkasten des Computers. Dort verwahrt der Computer seine
Anweisungen (unsere Programme), seine Materialien (unsere Daten) und alle
anderen Informationen, die schnell verfügbar sein müssen. Wir werden den Plat­
tenspeicher des PC sehr genau erklären, damit Sie verstehen können, wie er arbei­
tet, welche Funktion er für den Computer hat, und wie wir bei der Sicherung von
Informationen auf Diskette helfen können.
Zuletzt müssen wir uns noch die Programme etwas genauer ansehen. Programme
sagen dem Computer, was er zu tun hat. Mit Programmen verhält es sich ähnlich
wie mit Zeitungen, Magazinen oder Büchern: wenn ein Buch einmal geschrieben
ist, kann es endlos von einer beliebigen Anzahl von Leuten gelesen werden. So ist
es auch mit Programmen. Außerdem gibt es immer wieder etwas Neues, das wir
mit unserem Computer anstellen wollen und deshalb gibt es auch immer einen
neuen Bedarf an Programmen.
Grundsätzlich gibt es zwei sehr verschiedene Arten von Programmen, die System­
programme und die Anwenderprogramme. Systemprogramme unterstützen den
Computer bei seiner Arbeit. Die internen Arbeitsvorgänge eines Computers sind in
der Tat so komplex, daß wir sie ohne Hilfe von Programmen nicht zum Laufen brin­
gen. Anwenderprogramme führen dagegen die Aufgaben aus, die der Computer
für uns erledigen soll, z. B. das Addieren einer Zahlenkolonne oder das Prüfen der
Rechtschreibung unseres Textes, den wir in den Computer eingetippt haben. zu­
sammengefaßt heißt das: Anwenderprogramme unterstützen uns bei der Arbeit
und Systemprogramme helfen dem Computer, sich selbst zu verwalten (und
unsere Arbeit auszuführen).
Einige der Systemprogramme hat der IBM PC dauernd gespeichert. Sie werden
ROM-Programme genannt, weil sie auf Dauer im Festspeicher (dem sogenannten
2.2 Überblick
15
Read Only Memory) gespeichert werden (im Gegensatz zum überschreibbaren
Hauptspeicher, über den wir schon gesprochen haben). Dieser Typ von System­
programmen erfüllt die grundlegenden Kontroll- und Unterstützungsfunktionen,
darunter auch wichtige Dienstleistungen für die Anwenderprogramme. Diese
Dienstprogramme werden Basic Input/Output Services oder kurz BIOS oder auch
ROM-BIOS genannt, da sie ständig im Lesespeicher, dem ROM, enthalten sind.
Andere Systemprogramme bauen auf den Grundlagen der ROM-BIOS-Pro­
gramme auf und liefern Unterstützungsroutinen auf höherem Niveau. Betriebssy­
steme, wie das DOS (Disk Operating System) des PC, sind Beispiele dieser
Systemprogramme auf höherem Niveau, die nicht fest im Computer gespeichert
sind. Systemprogramme sind eines der Hauptthemen, die wir in diesem Buch
behandeln werden. Obwohl Anwenderprogramme sehr wichtig sind und wir noch
lernen werden, wie man sie baut, sind Systemprogramme für uns doch das bedeu­
tendere Thema. Wir wollen ja in erster Linie die Arbeitsweise und die Möglichkeiten
des PC verstehen lernen. Beides hängt unmittelbar mit den Systemprogrammen
zusammen.
Mit diesem Überblick über die Komponenten eines Computers besteht nun eine
gute Basis, um weiter ins Detail zu gehen. Zuvor sollten wir aber noch einmal über­
legen, was der Computer, besonders der Mikroprozessor, für uns alles tun kann.
�en
1.
Es wurde gesagt, daß Computer Arithmetik imitieren, so wie Radios oder Plattenspieler Töne
imitieren. Gibt es andere Geräte, die mit Imitation arbeiten? Man könnte behaupten, daß das
Fernsehen sowohl die optische Wahrnehmung als auch den Ton imitiert. Können Computer
mehr als nur Zahlen nachbilden?
2.
Stellen Sie sich vor, daß elektrische Schalter irgendwie anders wären, als sie sind. Anstatt
zweier Zustände (An und Aus) könnten sie drei Zustände annehmen. Würde es dann immer
noch möglich sein, aus ihnen eine Rechenmaschine zu machen? Würde etwas grundle­
gend anders sein oder würden sich nur ein paar Einzelheiten ändern?
3.
Schreiben Sie alle Programme auf, die Sie kennen. Welche würden Sie als Systempro­
gramme und welche als Anwenderprogramme charakterisieren? Glauben Sie, daß es eine
strenge Trennlinie zwischen beiden Gruppen gibt? Gibt es Programme, die beide Eigen­
schaften aufweisen?
16
3
Daten
In diesem Kapitel beschäftigen wir uns mit den Grundlagen von Computerdaten
und den wichtigsten Datenformaten des PC. Auf dieser Grundlage werden wir ver­
stehen, womit der PC tatsächlich arbeitet: mit Daten!
3.1
Bits, Bytes und Zeichen
Die kleinste, elementare Dateneinheit ist das Bit. „Bit" ist eine Abkürzung für einen
längeren und umständlichen Ausdruck, nämlich Binary Digit (binäre Ziffer). Wir
sind alle vertraut mit den zehn dezimalen Ziffern, 0 bis 9, aus denen die Zahlen
bestehen, mit denen wir arbeiten. Binäre Ziffern, Bits, sind ähnlich, aber im Unter­
schied zu zehn verschiedenen dezimalen Ziffern gibt es nur zwei unterschiedliche
Bitwerte, Null und Eins, die natürlich als 0 und 1 geschrieben werden.
Die Bits 0 und 1 repräsentieren aus und an, falsch und richtig, nein und ja. Ihre
numerische Bedeutung ist offensichtlich. Der Bitwert 0 bedeutet wirklich Null oder
Nichts, und 1 bedeutet Eins. Wie wir in Kapitel 2 erwähnt haben, ist es das Konzept
des Bits, das informationsverarbeitende Maschinen, Computer, ermöglicht. Da
man elektronische Maschinen bauen kann, die mit Ein/Aus-Signalen sehr schnell
arbeiten, lassen sich Maschinen herstellen, die tatsächlich Information bzw. Daten
verarbeiten. Dazu müssen wir allerdings unsere Informationen in dem Informa­
tions-Modell des Computers darstellen. Das heißt, daß wir Information aus den
Bits, 0 und 1, konstruieren können müssen.
Gesunder Menschenverstand und mathematische Theorie sagen uns, daß ein Bit
die kleinste Informationseinheit ist. Bits dienen als Bausteine, mit denen man grö­
ßere Informationseinheiten konstruieren kann, mit denen sich leichter arbeiten läßt.
Bits selbst sind normalerweise nicht besonders interessant und wir werden des­
halb in diesem Buch nur gelegentlich über einzelne Bits reden, nämlich nur dann,
wenn wir Bits zu größeren Gruppen zusammenhängen, die wir besser handhaben
können.
Die wichtigste Konstruktion aus Bits ist das Byte. Ein Byte sind acht Bits, die eine
Einheit bilden. Bytes sind für uns wichtig, weil sie in der Praxis die Haupteinheiten
von Computerdaten sind. Sie haben sicherlich schon öfter gehört, daß die Arbeits­
speicherkapazität eines Computers oder Speicherkapazität von Disketten in Bytes
bemessen werden (oder in Kilobyte, die wir in Kürze besprechen werden). Der
Grund liegt darin, daß das Byte die eigentliche Haupteinheit für Computerdaten ist.
Ein Bit ist vielleicht das Atom, das kleinste Sandkorn von Computerdaten, aber das
Byte ist der Ziegelstein, der eigentliche Baustein, aus dem Daten gebildet werden.
Unsere Computer arbeiten meistens mit Bytes. Sie können mit größeren Mengen
von Bytes arbeiten, und sie können auf die Bits innerhalb eines Byte zugreifen. In
erster Linie sind unsere Computer aber so konstruiert, daß sie Bytes manipulieren
können.
3.1
Bits, Bytes und Zeichen
17
Acht Bits bilden also ein Byte. Das bedeutet, daß es innerhalb eines Bytes acht ein­
zelne Zustände gibt, jeweils mit 0 oder 1, bzw. Aus oder Ein. Wenn wir acht Dinge
(Bits) haben und jedes davon einen von zwei Zuständen (0 oder 1) annehmen
kann, dann besagt die Kombinatorik, daß die Anzahl der möglichen verschiedenen
Bitkombinationen in einem Byte die achte Potenz von zwei ist, also 256. Damit gibt
es 256 verschiedene Werte oder Bitkombinationen, die ein Byte annehmen kann.
Diese Zahl müssen wir uns merken.
Unsere kleinste Informationseinheit wird in diesem Buch fast immer das Byte sein
und nur bei einigen technischen Fragen werden wir uns auf Bits beziehen. Im
Abschnitt „Die Bits eines Bytes" können Sie lernen, wie Sie an die einzelnen Bits
herankommen.
'18ohn1scher Hintergrund
Die Bits eines Bytes
Wenn wir Bits innerhalb eines Bytes ansprechen wollen, brauchen wir ein Bezugs­
system. Man kann sie zu diesem Zweck durchnumerieren, und zwar beginnend
beim rechtesten (oder niedrigsten) Bit mit der Ziffer Null, wie es in der Tabelle am
Ende dieses Abschnitts gezeigt wird.
Für die Methode, die Bits von rechts her und bei Null beginnend zu numerieren,
gibt es einen guten Grund. Diese Bitnummern sind zugleich auch die Potenz von
Zwei, die den numerischen Wert des Bits an dieser Position repräsentiert (wenn wir
das Byte und seine Bits als Zahl interpretieren). Bit 3 hat zum Beispiel den numeri­
schen Wert 8, und die dritte Potenz von 2 ist 8.
Ein ähnliches Schema liegt vor, wenn wir zwei Bytes zusammen als Wort betrach­
ten. Anstatt die Bits in den einzelnen Bytes separat zu numerieren, werden alle zu­
sammen von 0 bis 15 durchnumeriert. Das ist aber nur dann interessant, wenn ein
Bytepaar als eine Einheit, als 16-Bit-Wort, behandelt werden soll.
Bitnummer
Numerischer Wert
7654321 0
1
1
• • • • • •
1.
2
1
• •
4
• • • • • • •
•
•
•
• • • •
•
1
• • •
1
•
•
•
•
1
•
•
•
•
1
• • •
8
16
•
32
• • • • • •
64
• • • • • • •
1 28
• •
•
•
1
18
3 Daten
Bytes sind die Rohdaten des Computers, mit denen alles hergestellt werden kann.
Zwei der wichtigsten Dinge, für die wir unseren Computer einsetzen können, sind
das Arbeiten mit Zahlen und die Manipulation geschriebenen Textes. Bytes sind
die Bausteine sowohl für Zahlen als auch für Textdaten.
Es gibt keine grundsätzliche Eigenschaft in einem Byte oder in einer größeren
Dateneinheit, die etwas zu einer numerischen oder Textinformation macht. Es
kommt lediglich darauf an, was wir mit unserem Computer machen wollen. Wenn
wir mit Zahlen arbeiten wollen, dann werden die Bytes im Computer wie Zahlen
behandelt, und die Bitzustände innerhalb des Bytes werden numerisch interpre­
tiert. Wollen wir mit Text arbeiten, werden die Bytes als Textzeichen interpretiert,
wobei jedes Byte ein Textzeichen repräsentiert. Zu diesem Zweck wird jeder Bit­
stellung in den Bytes eine Bedeutung zugeordnet. Die gleiche Bitstellung eines
Bytes könnte zum Beispiel den Buchstaben A oder die Zahl 65 bedeuten, je nach
dem, wofür wir sie verwenden wollen.
Wir werden in diesem Kapitel noch sehen, wie Bytes als Zahlen oder Zeichen ver­
wendet und wie mehrere Bytes zusammengenommen als komplexere Zahlen oder
Textzeichenketten behandelt werden können. Mit dem Vorgang des Interpretierens
und den vielen Zeichen, mit denen der PC arbeiten kann, beschäftigen wir uns
speziell in Kapitel 4, da das Thema sehr umfassend und interessant ist.
Zunächst muß der Begriff „Wort" näher erläutert werden. Obwohl das Byte die
grundlegendste und bequemste Einheit für Computerdaten ist, muß der Computer
manchmal mit Bytepaaren arbeiten, d. h. also nicht mit acht Bits, sondern mit 16
Bits gleichzeitig. Der Name für ein Bytepaar, das als einzelne Einheit behandelt
wird, heißt in der Computerterminologie Wort. „Wort" ist ein technischer Ausdruck
und bedeutet 16 Bits. Das hat nichts mit unserem alltäglichen Verständnis von
„Wort" zu tun, und Sie sollten sich deshalb nicht verwirren lassen.
Wenn Computer z.B. als 8-Bit-, 16-Bit- oder sogar 32-Bit-Computer bezeichnet
werden, bezieht sich das übrigens darauf, wieviele Daten sie gleichzeitig verarbei­
ten können. Unsere PC-Familienmitglieder sind alle 16-Bit-Computer, weil sie in
der Regel bei ihren Aufgaben 16 Datenbits gleichzeitig verarbeiten können. 16 Bits
sind die „Wortgröße" unserer Computer. Das macht sie zu 16-Bit-Computern. Trotz
dieser Tatsache behandeln unsere Computer bzw. unsere Programme Daten mei­
stens als einzelne Bytes.
Auch das Kilobyte, allgemein nur K genannt, ist ein wichtiger Begriff aus der Com­
puter-Terminologie. Es ist immer praktisch, wenn man sich bei großen Mengen in
runden Zahlen unterhalten kann. Unsere Computer arbeiten mit einer großen
Anzahl von Bytes, und wir haben uns an ihr praktisches Verfahren bezüglich run­
der Zahlen gewöhnt. Aber Computer sind eben binäre Rechner. Eine runde Zahl ist
also eine binäre runde Zahl und nur ungefähr rund in unserem bekannten Dezi­
malsystem. Diese mysteriöse runde Zahl ist 1024. Das ist das Ergebnis der zehnten
Potenz von 2, tatsächlich eine binäre runde Zahl. Sie liegt auch einigermaßen nahe
an einer runden dezimalen Zahl, nämlich 1000, ein Grund dafür, warum sie so oft
verwendet wird.
3.2 Das Hexadezimalsystem
19
Diese Zahl 1024 wird ein K genannt, oder manchmal Kilo (wobei man sich auf den
metrischen Begriff für Eintausend bezieht). Ein Kilobyte, 1 Kb oder manchmal nur
1K, sind somit 1024 Bytes. Wenn jemand über 64K spricht, bedeutet das 64 mal
1024, oder genau 65.536.
Bedenken Sie jedoch, daß der Ausdruck K manchmal ziemlich salopp und dann
wieder ganz präzise verwendet wird. Die präzise Bedeutung von K ist genau 1024,
seine lockere Bedeutung ist 1000 oder ungefähr 1000.
Ein verwandter Begriff, über den wir genauso Bescheid wissen müssen, ist Meg
oder Mega. Dies bedeutet ein K von Ks, 1024 mal 1024, oder genau 1.048.576. Das
ist ungefähr eine Million, und darauf bezieht sich ein Megabyte, nämlich auf etwa
eine Million Bytes Speicherkapazität. Wir nennen dies ein Meg, wenn es ungefähr
soviel ist. "Mein AT hat eine 32-Meg-Festplatte", sagt man.
Im Zusammenhang mit Computerdaten müssen wir uns im folgenden mit dem
Hexadezimalsystem und mit numerischen Daten befassen.
3.2
Das Hexadezimalsystem
Wenn man die interne Arbeitsweise des PC oder eines anderen Computers wirk­
lich verstehen will, dann muß man das computer-orientierte Zahlensystem, als
Hexadezimalsystem oder kurz als Hex bekannt, beherrschen. Hex muß man nicht
unbedingt beherrschen, wenn man mit dem PC arbeitet, aber wenn Sie das Gerät
verstehen wollen und mit anspruchsvolleren Tools, wie etwa dem DEBUG-Pro­
gramm von DOS, umgehen wollen, dann müssen Sie sich schon mit Hex ausken­
"
nen. Wir haben diesen Abschnitt unter die Überschrift "Technischer Hintergrund
gestellt, um auf den eher technischen Stoff hinzuweisen.
Hex ist zunächst einfach ein praktisches Verfahren, um Daten, die in unserem
Computer codiert sind, exakt auszudrücken.
Wie wir bereits besprochen haben, sind die kleinsten Bausteine von Daten Bits, die
einzeln die Werte 0 und 1 darstellen. Wenn wir Computerdaten in ihrer binären
Forni, oder Bitform schreiben, bekommen wir eine ziemlich lange Kette von Nullen
und Einsen. Bereits ein einzelnes Byte in binärer Form ist ziemlich lang, zum Bei­
"
spiel 01010101. Man braucht 80 Bits, um das Wort "hexadezimal binär darzustel­
len. Eine typische Diskette hat etwa drei Millionen Bits gespeichert. Wenn wir die
Daten in unserem Computer exakt schreiben wollen, brauchen wir eine Form, um
all die Bits darzustellen. Diese darf aber nicht so umständlich sein wie die binäre.
Die adäquate Form ist die hexadezimale Form.
Hex ist einfach eine Abkürzung der binären Schreibweise, wobei eine hexadezi­
male Ziffer vier binäre Ziffern (Bits) darstellt. Wenn wir einzelne Bits betrachten,
können sie zwei Werte, 0 und 1, annehmen. Wenn wir sie paarweise gruppieren,
20
3 Daten
gibt es vier verschiedene mögliche Kombinationen von Bitwerten je Paar, begin­
nend mit 00, 01, 10 und schließlich 11. Diese Idee kann man zwei Schritte weiter
verfolgen. Schließt man Bits zu Vierergruppen zusammen, ergeben sich 16 mög­
liche Kombinationen aus vier Bits, beginnend mit 0000 bis 1111. (Die Anzahl der
verschiedenen Bitwertekombinationen, als Vierergruppen genommen, ist mathe­
matisch ausgedrückt die vierte Potenz von 2 oder 16.)
In unserem üblichen Dezimalsystem verwenden wir zehn verschiedene Symbole, 0
bis 9, um zehn Ziffernwerte darzustellen. Wir kombinieren dann diese dezimalen
Ziffern, um größere Werte zu bilden, wie z. B. 100. Dasselbe Prinzip kann man auf
die binäre Notation anwenden, bei der wir die beiden Bitwerte, 0 und 1, verwenden
und kombinieren können, um größere Zahlen daraus zu bilden. Diesselbe Idee
funktioniert auch bei Hex, aber anstatt der zwei binären oder der zehn dezimalen
Ziffern benützt Hex 16 verschiedene hexadezimale Ziffern, um 16 unterschiedliche
Werte darzustellen. Die 16 Hex-Ziffern sind 0 bis 9 (welche die gleiche numerische
Bedeutung wie die dezimalen Ziffern 0 bis 9 haben) und dann folgen sechs weitere
Hex-Ziffern, für die Bezeichnung der zusätzlichen sechs Hex-Werte. Sie werden als
die Buchstaben A, B, C, D, E und F geschrieben. Diese letzten sechs Hex-Sym­
bole, A bis F, repräsentieren sechs Werte, die größer als der Wert neun sind: A ist
zehn, B ist elf, und so weiter bis F, welches den Wert fünfzehn hat.
Jede der 16 Hex-Ziffern 0 bis 9, A bis F, stellt einen Wert von 0 bis 15 dar und reprä­
sentiert zusätzlich eine Gruppe von vier Bits. Zum Beispiel die Hex-Ziffer A bildet
die Bitgruppe 1010, und F die Bits 1111. Tabelle 3-1 zeigt eine Liste der 16 Hex-Zif­
fern, ihrer dezimalen Äquivalente und der binären Werte, oder 4-Bit-Gruppen, die
sie darstellen.
Es gibt zwei Arten, diese Hex-Ziffern zu betrachten (und die vier Bits, die jede von
ihnen repräsentiert), und es ist wichtig, den Unterschied zu verstehen. Der Unter­
schied gilt für alle Computerdaten. Wir haben dies schon in Abschnitt 3.1 und Kapi­
tel 2 angesprochen. Wenn wir eine Hex-Ziffer betrachten, zum Beispiel B, könnten
wir an ihrem numerischen Wert (also 11), interessiert sein oder an den Bitgruppen,
die sie repräsentiert (1011), ohne ihre numerische Bedeutung. Merken Sie sich, daß
die gleichen Daten, egal ob wir über Hex, Bits oder andere Computerdaten spre­
chen, verschiedene Bedeutungen haben können, abhängig davon, wie wir sie
betrachten.
Eine Frage, die man stellen könnte, ist: „Warum gerade hex?". Es ist leicht zu ver­
stehen, daß die Bitschreibweise zu umständlich ist und daß man für die Darstel­
lung einer Menge von Bits etwas Kompakteres braucht. Aber warum gerade hex?
Warum vier Bits gleichzeitig, wenn das zu so ungewohnten Ziffern, wie A bis F,
führt? Die Antwort ist, daß Hex ein akzeptabler Kompromiß ist zwischen dem, was
die Maschine braucht, und dem, was sich von uns handhaben läßt. Hex kann
bequem sämtliche Bits eines Bytes mit zwei Hex-Ziffern ausdrücken, wobei jede
vier der acht Bits eines Bytes darstellt. Hex paßt damit ausgezeichnet in das
Grundschema von Computerdaten.
3.2 Das Hexadezimalsystem
Tabelle 3-1:
21
Die sechzehn Hex-Ziffern.
dezimales
Hex-Ziffer
Äquivalent
Bit-Äquivalent
Wert
Null
0
0
0000
1
1
0001
Eins
2
3
2
3
0010
0011
Zwei
Drei
4
4
5
0100
0101
Vier
5
6
6
0110
Sechs
7
7
0111
Sieben
8
8
1000
Acht
Fünf
9
9
1001
Neun
A
10
1010
Zehn
B
11
1011
Elf
c
12
1100
Zwölf
D
13
1101
Dreizehn
E
14
1110
Vierzehn
F
15
1111
fünfzehn
Bisher haben wir einzelne Hex-Ziffern besprochen, aber wir müssen auch mit grö­
ßeren Zahlen in hex arbeiten. Im späteren Verlauf des Buches befassen wir uns
besonders mit den Speicheradressen der PC-Familie. Diese werden uns zu vier­
oder sogar fünfziffrigen Hex-Zahlen führen. Deshalb müssen wir auch mit größeren
Hex-Zahlen rechnen können.
Hex-Arithmetik funktioniert natürlich so wie Dezimalrechnen, aber der Wert der
Zahlen ist verschieden. Die größte Dezimalziffer ist 9 (neun) und die nächst größere
Zahl ist zehn, welche dezimal 10 geschrieben wird. Dasselbe Prinzip wird auf Hex
angewandt (oder jedes andere Zahlensystem). Die größte Hex-Ziffer ist F (welche
den Wert 15 hat) und die nächst größere Zahl wird 10 geschrieben, welche den
Wert 16 hat, dann kommt 11 (mit dem Wert 17) und so weiter.
Zwei Hex-Ziffern sind alles, was wir brauchen, um alle möglichen Bitkombinatio­
nen in einem Byte auszudrücken. Mit acht Bits in einem Byte gibt es zwei poten­
ziert mit acht verschiedene Kombinationen, oder 256 verschiedene Bitgruppen für
ein Byte von 00000000 bis 11111111. In hex wird 00000000 durch 00 und 11111111
durch FF ausgedrückt. Die ersten vier Bits werden durch die erste Hex-Ziffer dar­
gestellt und die letzten vier durch die zweite Hex-Ziffer.
Mit Hilfe von Tabelle 3-2 kann man alle möglichen Bitgruppen in ihre Hex-Äquiva­
lente übersetzen. Genau das tun wir, wenn wir Hex und Bits als Daten lesen wollen.
Wenn wir Hex-Ziffern als Zahlen interpretieren wollen (was wir von Zeit zu Zeit in
diesem Buch tun werden), müssen wir wissen, wie man zwischen hex und dezimal
konvertiert und wie man einfache Berechnungen in hex ausführt.
22
3 Daten
Tabelle 3-2:
Hex Dez
1
2
3
4
5
6
7
8
9
A
8
c
D
E
F
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Hex-Wertetabelle
Hex Dez
Hex
Dez
Hex
Dez
Hex
16
32
48
64
80
96
100
200
256
512
768
1.024
1.280
1.536
1.792
2.048
2.304
2.560
2.816
3.072
3.328
3.584
3.840
1000
2000
3000
4000
5000
6000
4.096
8.192
12.288
16.384
20.480
24.576
10000
20000
30000
40000
50000
60000
65.536
131.072
196.608
262.144
327.680
393.216
7000
8000
9000
AOOO
28.672
32.768
36.864
40.960
45.056
49.152
53.248
57.344
61.440
70000
80000
90000
AOOOO
80000
coooo
DOOOO
EOOOO
FOOOO
458.752
524.288
589.824
655.360
720.896
786.432
851.968
917.504
983.040
10
20
30
40
50
60
70
80
90
AO
80
eo
DO
EO
FO
112
128
144
160
176
192
208
224
240
300
400
500
600
700
800
900
AOO
800
coo
DOO
EOO
FOO
8000
cooo
DOOO
EOOO
FOOO
Dez
Zunächst lernen wir, wie man eine Hex-Zahl berechnet. Als kleine Hilfe sollten wir
darüber nachdenken, wie man Dezimalzahlen bildet, zum Beispiel die Zahl 123.
123 bedeutet 100 plus 20 plus 3. Mit jeder Stelle nach links erhöht sich der Wert
jeweils um das Zehnfache. Dasselbe Prinzip gibt es auch in hex, aber der Multipli­
kator ist 16, nicht 10. Wenn wir also „123" als Hex-Zahl interpretieren, sind das 3 + 2
mal 16 + 1 mal 16 im Quadrat (also 256). Das ergibt dezimal insgesamt 291. In
Tabelle 3-2 wird der Wert der Hex-Ziffern in den ersten fünf Stellen dargestellt.
Wenn Sie manuell zwischen dezimal und hex umwandeln wollen, können Sie bei
den Zahlen in Tabelle 3-2 die Äquivalente finden. Um zum Beispiel die Hex-Zahl
F3A in dezimal umzuwandeln, muß man den Wert von A (dezimal 10) in der ersten
Spalte nachsehen, 30 in der zweiten Spalte (dezimal 48) und FOO in der dritten
Spalte (3.840). zusammengezählt erhält man dann 3.898 als dezimales Äquivalent
zu hex F3A.
Wollen wir dezimal in hex umwandeln, müssen wir den umgekehrten Weg gehen
und subtrahieren. Um zum Beispiel die dezimale Zahl 1.000.000 zu konvertieren,
müssen wir beim größten Eintrag in unserer Hex-Tabelle nachschauen. In diesem
Fall wäre das FOOOO am Ende der letzten Spalte. Wir subtrahieren den dezimalen
Wert (983.040) von unserer Ausgangszahl und führen dieses Verfahren fort, bis
nichts mehr übrig bleibt. Dann kombinieren wir die Serie von Hex-Zahlen, die wir
ermittelt haben, zum hexadezimalen Äquivalent unserer Dezimalzahl. Bei diesem
Beispiel ist der Hex-Wert F4240.
Glücklicherweise gibt es bereits Programmtools, die das Konvertieren zwischen
hex und dezimal für uns erledigen, ohne daß wir manuelle Arbeit leisten müssen.
3.3 Standardzahlen
23
Ein solches Tool ist das Programm Sidekick von Borland International, das einen
Rechner beinhaltet, der von hex in dezimal umwandelt und alle möglichen Berech­
nungen anstellen kann. Auch BASIC kann das, wie die zwei folgenden Beispiele
zeigen.
10
'
20
1
Umwandlung von hex in dezimal
30 INPUT "Geben Sie eine Hex-Zahl ein! ", XS
40 PRINT "Das dezimale Äquivalent ist "; VALC"&H"+XS>
50 GOTO 30
10 'Umwandlung von dezimal in hex
20
•
1
30 INPUT "Geben Sie eine Dezimalzahl ein! ", X
40 PRINT "Das Hex-Äquivalent ist "; HEXSCX)
50 GOTO 30
Wenn Sie jemals mit Hex-Zahlen rechnen müssen, können Sie Sidekick verwen­
den oder eben auch eine Programmiersprache wie BASIC. Sollten Sie einmal
gezwungen sein, selbständig Hex-Berechnungen durchführen zu müssen, finden
Sie Tabellen für die Hex-Addition oder - Subtraktion und -Multiplikation in Anhang
B. Das Programm HEXTAB in Anhang A erstellt diese Tabellen.
3.3
Standardzahlen
Da Zahlen für Computer so wichtig sind, werden wir uns im folgenden alle Arten
von Zahlen ansehen, mit denen unser PC arbeiten kann. Wir beginnen zunächst
mit den einfachen Zahlenformaten, die zum Grundrepertoire des PC gehören und
mit denen der PC eigentlich arbeitet. Im nächsten Abschnitt beschäftigen wir uns
dann noch mit weiteren Zahlentypen.
Sie stellen vielleicht überrascht fest, daß der PC eigentlich nur mit ganzen Zahlen
rechnen kann, den sogenannten lntegers; und selbst das kann er nur mit ziemlich
kleinen Zahlen.
Der PC kann grundsätzlich nur mit zwei Sorten von Zahlen umgehen: mit lntegers
mit einer Größe von einem Byte und mit lntegers von Zwei-Byte- oder Wortgröße.
Bekanntlich ist der PC ein 16-Bit-Computer und kann somit Informationen mit bis
zu 16 Bits (zwei Bytes) gleichzeitig verarbeiten. Die Arithmetik des PC arbeitet also
nur entweder mit einzelnen 8-Bit-Bytes oder mit 16-Bit-Wörtern. Mit Hilfe von
schlauen Programmen kann der PC auch mit größeren Zahlen arbeiten, zum Bei­
spiel durch Kombinieren von zwei 16-Bit-Wörtern zu einer größeren 32-Bit-Zahl.
Ohne solche Software beherrscht der PC aber nur 8- und 16-Bit-Arithmetik.
24
3 Daten
Aber wie groß können nun 8- und 16-Bit-Zahlen sein? Natürlich nicht sehr groß.
wie wir schon bei der Besprechung des 8-Bit-Byte erfahren haben, gibt es nur 256
verschiedene Werte für ein Byte, nämlich 2 hoch 8, bzw. 256. Ein 16-Bit- oder
Zwei-Byte-Wort kann zwei verschiedene Werte der sechzehnten Potenz von Zwei
haben, insgesamt sind es 65.535. Das ist ziemlich wenig. (Wenn Sie 2-Byte-Wörter
oder andere längere lntegerformate Ihres Computers entdecken wollen, müssen
Sie etwas über die „Hintergrund"-Speicherung wissen. Im Abschnitt „Wie Wörter
gespeichert werden" in Kapitel 7 können Sie mehr darüber erfahren.)
Jede dieser zwei lntegergrößen kann auf zwei Arten interpretiert werden, die die
Anzahl verschiedener numerischer Formate verdoppeln. Die zwei Interpretationen
hängen davon ab, ob wir negative Zahlen erlauben oder nicht. Wenn wir nicht mit
negativen Zahlen arbeiten müssen, kann der gesamte Wertebereich für positive
Zahlen verwendet werden. Für ein Integer in Bytegröße reicht der Zahlenbereich
dann von 0 bis 255, bei einem 2-Byte-Wort von 0 bis 65.535.
Wenn wir andererseits auch negative Zahlen benötigen, wird der halbe Wertebe­
reich für diese Zahlen reserviert, und wir können dann nur mit halb so großen Zah­
len arbeiten. Im Falle der Bytes reicht der Wertebereich dann von -128 über 0 bis
+127. Für Wörter liegt der Bereich zwischen -32.768 über 0 bis +32.767. Wir kön­
nen den Bereich nicht auswählen und so einen größeren Bereich positiver Zahlen
durch Verkleinerung des negativen Bereichs erhalten. Mehr über negative Zahlen
finden Sie im folgenden Abschnitt „Wie negative Zahlen dargestellt werden". Sie
werden bemerken, daß der Bereich negativer Zahlen um Eins größer ist als der
Bereich der positiven. Es gibt ein -128, aber kein +128. Das ist ein seltsames Ne­
benprodukt der Art, wie negative Zahlen behandelt werden.
Tabelle 3-3 listet den Zahlenbereich der vier lntegerbereiche auf.
Tabelle 3-3:
Wertebereich der lntegerformate
1 Byte
Integer ohne Vorzeichen
0 bis 255
2 Bytes
0 bis
65.535
Integer mit
Vorzeichen
-128 bis 0 bis +127
-32.768 bis 0 bis +32.767
Wie bereits erwähnt, kann der Mikroprozessor des PC seine gesamte Standard­
arithmetik - Addieren, Subtrahieren, Multiplizieren und Dividieren - mit diesen vier
lntegerformaten ausführen, aber das ist der Umfang der gesamten Grundrechenar­
ten, die der PC beherrscht.
Sie können sich vielleicht vorstellen, daß die meisten Programme mit diesen vier
einfachen lntegerformaten für ihre Zahlen nicht auskommen. BASIC benützt zum
Beispiel drei Arten von Zahlen. Nur eine davon, die in der BASIC-Terminologie Inte­
ger genannt wird, gehört zu diesen vier Formaten (es ist das 2-Byte-Wortformat mit
Vorzeichen). Die anderen zwei, die bei BASIC einfach- und doppeltgenau heißen,
müssen extra konstruiert werden. Wir werden dies in Abschnitt 3.4 besprechen.
3.4
Größere Zahlen
25
Wie negative Zahlen dargestellt werden
Negative Zahlen werden im PC in einer Form dargestellt, die als Zweierkomple­
ment bekannt ist. Es ist ein allgemein verwendetes Schema im Computer, das mit
dem „Borgen und Merken" verwandt ist, wie wir es in der Schule gelernt haben, als
wir zum ersten Mal Addieren und Subtrahieren lernten. Das läßt sich am leichte­
sten an einem Beispiel dezimaler Zahlen erklären, das aus drei Ziffern bestehen
soll. Dies verhält sich analog zu den festen Längen der ein- oder zwei-Byte-langen
binären Ziffern, mit denen der PC rechnet.
In unseren dreiziffrigen Dezimalzahlen wird Null als 000 und Eins als 001 geschrie­
ben. Wenn wir 001 von 001 subtrahieren, bekommen wir 000. Wie können wir
nochmals 001 abziehen, um minus Eins zu bekommen? Wir können dafür eine
imaginäre Eins in der vierten Stelle borgen. Denken wir uns 000 (und alle anderen
positiven Zahlen) mit einer vorausgehenden Eins, von der wir borgen können, wie
zum Beispiel so:
C1>000
Null
001
subtrahiert mit Eins
999
minus Eins
ist gleich
So wird minus Eins als 999 dargestellt, minus Zwei als 998, und so weiter.
Die positiven Zahlen beginnen bei 000, 001, 002 und reichen bis 499. Die negati­
ven Zahlen gehen von 999 (das ist -1), 998 (-2), usw. bis hinunter zu 500, was
wirklich minus fünfhundert bedeutet. Derselbe Trick funktioniert auch mit den binä­
ren Zahlen unseres Computers.
Beachten Sie, daß der Wert einer Zahl davon abhängen kann, ob wir sie mit oder
ohne Vorzeichen interpretieren. Als Zahl mit Vorzeichen bedeutet 999 minus Eins,
als vorzeichenlose Zahl bedeutet sie neunhundertneunundneunzig.
3.4
Größere Zahlen
Der Großteil unseres Rechenbedarfs geht über die einfachen lntegers des PC hin­
aus. EQal, ob wir unsere Finanzierungsplanung mit Tabellenkalkulationsprogram­
men erledigen, technische Berechnungen ausführen etc., wir brauchen größere
Zahlen als die lntegers, die wir bisher besprochen haben. Schon unser Zahlungs­
verkehr würde sich sonst auf 655,35 DM beschränken, wenn wir die Pfennigbe­
träge miteinbeziehen. Wir brauchen also größere Zahlen.
Dafür gibt es zwei Wege und zwei Verfahren, mit diesen Zahlen zu rechnen.
Betrachten wir zuerst einmal die Zahlenarten und dann, wie man mit diesen Zahlen
rechnet.
Die erste Methode, den Zahlenbereich zu erweitern, besteht einfach darin, längere
lntegers zu erhalten. Wir haben bereits Ein- und Zwei-Byte-lntegers gesehen. Wir
können diese Idee fortführen und lntegers von drei, vier oder mehr Bytes Länge
26
3 Daten
verwenden. Alles ist möglich, aber die günstigste Erweiterung sind vier Bytes, und
das ermöglicht uns einen viel größeren Zahlenbereich, nämlich mehr als plus oder
minus 2.000.000.000. Das ist eine Menge, aber noch nicht genug.
Für Bruchrechnen und besonders lange Zahlen verwenden unsere Computer ein
Konzept, das Gleitpunkt genannt wird. Das Gleitpunktverfahren arbeitet ähnlich,
wie die wissenschaftliche oder technische Notation, die Sie vielleicht in der Schule
gelernt haben. Bei diesem Schema werden Zahlen in zwei Teilen dargestellt. Ein
Teil repräsentiert die Ziffern, aus denen die Zahl besteht, der andere Teil zeigt an,
wo der Dezimalpunkt sitzt. Weil der Dezimalpunkt frei verschoben werden kann,
können Gleitpunktzahlen sehr große oder sehr kleine Brüche darstellen. Egal, ob
große oder kleine Zahlen, es funktioniert präzise, weil die Ziffern, die die Richtigkeit
oder Genauigkeit der Zahlen bestimmen, unabhängig von den Zahlen sind, die
festlegen, wo der Dezimalpunkt liegt.
In der Programmiersprache BASIC haben die einfach- oder doppeltgenauen Zah­
len Gleitpunktformate. Der Unterschied zwischen ihnen ist, daß das doppeltgenaue
Format mehr Ziffern für die Genauigkeit vorsieht. Andere Programmiersprachen
verwenden ebenfalls das Gleitpunktformat.
Tabellenkalkulationsprogramme, wie Lotus 1-2-3, verwenden auch das Gleitpunkt­
verfahren für die Darstellung ihrer Zahlen, weil damit eine größere Flexibilität und
Genauigkeit in den Berechnungen ermöglicht wird.
Dies sind die zwei Verfahren, durch die man das Zahlenschema des PC erweitern
kann: lange lntegers und Gleitpunktzahlen. Wie bereits erwähnt, kann der Mikro­
prozessor des PC aber eigentlich nur mit den einfachen vier lntegerformaten arbei­
ten, die wir in Abschnitt 3.3 vorgestellt haben. Wie können wir nun mit diesen
erweiterten Formaten rechnen? Dafür gibt es sowohl software-technische als auch
hardware-technische Möglichkeiten.
Die software-technische Lösung ist die allgemeinere. Jede Programmiersprache,
einschließlich BASIC, und fast jedes Kalkulationsprogramm, einschließlich 1-2-3,
kann mit Gleitpunktzahlen oder langen lntegerformaten rechnen. Solche Pro­
gramme verwenden die Grundrechenarten und logischen Möglichkeiten des PC,
wenn komplexere Berechnungen mit diesen Zahlenformaten notwendig sind. Das
kostet natürlich Zeit. Während der PC seine eigenen lntegerberechnungen sehr
schnell ausführen kann, nämlich in ein paar millionstel Sekunden, braucht ein
Gleitpunkt-Unterprogramm für eine vergleichbare Berechnung vielleicht hundert
mal länger, einfach deshalb, weil das Unterprogramm in viele einfache Arbeits­
schritte zerlegt werden muß.
Für die meisten Zwecke ist die Geschwindigkeit dieser programmgesteuerten
Berechnungen immer noch schnell genug, aber sie ist nicht so schnell, wie sie
sein könnte. Größere Schnelligkeit läßt sich durch hardware-technische Lösungen
erreichen.
In den folgenden Kapiteln werden wir noch mehr über einen Gefährten unseres Mi­
kroprozessors erfahren, der nur für schnelle Gleitpunktberechnungen gedacht ist.
3.4 Größere Zahlen
27
Das sind die sogenannten Numerikprozessoren. Es gibt davon zwei für verschie­
dene Modelle des PC. Sie heißen einfach 8087 bzw. 80287. Häufig spricht man
einfach von den 87ern. Die meisten Modelle der PC-Familie können mit einem
87er arbeiten. Wenn ein 87 installiert ist und ein Programm weiß, wie man ihn
anspricht (was nicht oft vorkommt), können sowohl Geschwindigkeit als auch Ge­
nauigkeit von Gleitpunktberechnungen enorm gesteigert werden.
Man sollte bedenken, daß die meisten Programme keine Gleitpunktberechnungen
anstellen. Textverarbeitungsprogramme zum Beispiel brauchen keine Gleitpunkt­
zahlen. Die Geschwindigkeit dieser Programme wird weder durch Gleitpunkt­
Unterprogramme verlangsamt, noch durch die Anwesenheit eines 87 erhöht. Nicht
alle Programme, die wirklich mit Gleitpunktzahlen rechnen, nehmen die Vorteile
eines 87 wahr. BASIC ignoriert beispielsweise den 87 grundsätzlich. Dagegen ver­
wendet das Programm 1-2-3 den 87, wenn er helfen kann.
Im Gegensatz zu den lntegerformaten, die wir gerade besprochen haben, und dem
Zeichensatz des PC, den wir in Kapitel 4 erklären werden, gibt es keine universel­
len Standards dafür, welche Art längerer lntegers und Gleitpunktzahlen von einem
Programm verwendet werden können. Wir können hier nicht sämtliche erweiterten
Zahlenformate zusammenfassen, aber zumindest die gebräuchlichsten wollen wir
kurz vorstellen.
Zuerst betrachten wir die längeren lntegers. Unsere Programme können lange lnte­
gers mit einer beliebigen Anzahl von Bytes verarbeiten, die gebräuchlichste Größe
ist aber bisher die Vier-Byte-Integer mit Vorzeichen. Diese Zahlen können in einem
Bereich von etwas über plus oder minus zwei Milliarden liegen. Die 87er können
auch mit einem speziellen dezimalen lntegerformat arbeiten, das 18 dezimale Zif­
fern beinhaltet, und sich ebenfalls im Milliardenbereich bewegt. Dieses spezielle
Dezimalformat der 87er ist das einzige Beispiel für eine dezimale Orientierung.
Alles andere bei unseren Computern ist ansonsten binär ausgerichtet.
Als nächstes sehen wir uns an, was man mit dem Gleitpunktformat anstellen kann.
Die zwei gebräuchlichsten Größen von Gleitpunktzahlen benötigen vier oder acht
Bytes, wie die einfach- und doppeltgenauen Formate in BASIC. Das Vier-Byte­
Gleitpunktformat liefert eine Genauigkeit von etwa sechs dezimalen Ziffern, und
das Acht-Byte-Format eine Genauigkeit von etwa 16 dezimalen Ziffern. Der
Bereich, in dem große Zahlen liegen können, bewegt sich ungefähr bei der 38ten
Potenz von zehn. Weil es viele verschiedene Arten für die Codierung einer Gleit­
punktzahl gibt, bestehen je nach Codierung Unterschiede in der Genauigkeit und
dem Wertebereich. Die Zahlen, die hier genannt werden, gelten deshalb nur unge­
fähr. Die 87er können auch mit einem etwas größeren Format arbeiten, das zehn
Bytes beansprucht. Dieses liefert eine Genauigkeit von etwa 18 Dezimalziffern.
Die Art der Zahlen, mit denen wir arbeiten können, hängt auch von der Art unserer
Programme ab. Was wir hier beschrieben haben, trifft auf die meisten Program­
miersprachen zu, Spezialprogramme können allerdings eigene Zahlenformate ver­
wenden. Ein typisches Beispiel dafür sind Tabellenkalkulationsprogramme. Sie
haben nun einen Eindruck davon erhalten, wie man mit großen Zahlen auf unseren
Computern arbeitet.
28
3.5
3 Daten
St.rings bzw. Zeichenketten
Zeichen oder Textdaten, wie z.B. die Buchstaben unseres Alphabets, spielen beim
Einsatz des Computers eine sehr wichtige Rolle. In der Tat werden unsere Compu­
ter mehr für die Verarbeitung von Textdaten als für numerische Daten verwendet.
Das ist eigentlich lustig, weil Computer in erster Linie gute Rechner sind. Wir haben
aber inzwischen diesen Rechner zu einem nützlichen Instrument für die Textverar­
beitung entwickelt (z.B. wurde natürlich auch dieser Text vom ersten Moment an
mit Hilfe des Computers geschrieben). Es ist wichtig, die Grundlagen zu verstehen,
wie Computer mit Textdaten umgehen.
Textdaten bestehen aus einzelnen Zeichen, wie dem Buchstaben A. Wie wir schon
zu Beginn dieses Kapitels gesehen haben, wird jeder Buchstabe durch eine
besondere Bitgruppe dargestellt und beansprucht ein Byte. Der ASCII-Code, mit
dem die meisten Microcomputer arbeiten, bestimmt, welche Bitgruppen zu wel­
chen Buchstaben gehören. In Kapitel 4 werden wir darauf genauer eingehen. Hier
wollen wir zeigen, wie man mit mehreren Zeichen gleichzeitig arbeiten kann.
Die Verarbeitung von Einzelzeichen ist zunächst nichts Besonderes; anders ist das,
wenn sie zusammengefügt Wörter oder ganze Sätze bilden. In der Computertermi­
nologie bezeichnet man das als String (oder Zeichenkette). Ein String ist eine
Gruppe von aufeinanderfolgenden Bytes, die als Einheit behandelt wird.
Alle Programmiersprachen unseres Computers und zahlreiche Software-Produkte,
zum Beispiel Tabellenkalkulationsprogramme wie Lotus 1-2-3, arbeiten mit Zei­
chenstrings. Textverarbeitungsprogramme, wie WordStar, Volkswriter, Multimate,
Microsoft Word, sind in erster Linie für die Verarbeitung von Zeichenstrings gebaut
worden. Strings sind ein wichtiger Datentyp, und wir wollen deshalb hier ausführli­
cher behandeln, wie er gespeichert wird und welche Einschränkungen es gibt.
Im Arbeitsspeicher oder auf der Diskette werden Strings genau so gespeichert, wie
es einem der gesunde Menschenverstand rät, nämlich ein Zeichenbyte nach dem
anderen. Das ist nichts Besonderes. Das Besondere an Strings ist jedoch, daß sie
etwas zusammenhalten muß. Als wir am Anfang dieses Kapitels numerische Daten
besprochen haben, hatte jede Datenart ihr eigenes spezifisches Format, das ge­
nau definiert, wie groß die Daten sind bzw. wieviele Bytes sie beanspruchen.
Strings haben dagegen keine festgelegte Länge. Wie also erkennt man die Zei­
chen, die einen String bilden?
Dafür gibt es mehrere Methoden, wie uns die verschiedenen Programme zeigen.
Die gebräuchlichsten Methoden wollen wir vorstellen.
Eine Methode zur Definition von Stringgröße und Stringende besteht darin, einfach
die Anzahl der Stringzeichen zu zählen und die Zahl separat zu speichern (norma­
lerweise wird die Stringlängenzahl direkt vor den Stringanfang gesetzt).
Das zeigt folgendes Beispiel:
4Dies3ist3ein6String3aus7Wörtern
3.5 Strings bzw. Zeichenketten
29
Wie Sie sehen, ist jedes Wort aus dem Beispiel ein eigener String, und die Anzahl
der Zeichen ist direkt vor jedem Wort angegeben. Dies ist eine viel verwendete
Technik zur Stringbehandlung und Längenbestimmung. Wenn Sie darüber nach­
denken, werden Sie vielleicht bemerken, daß diese Methode indirekt eine Grenze
setzt, wie lang ein einzelner String sein kann. Die Zahl, die die Stringlänge darstellt,
wird in einem· numerischen Format gespeichert, wie wir es schon besprochen
haben. Die maximale Zahl, die das Format erlaubt, ist dann die maximale String­
länge.
Die Stringlänge wird üblicherweise als einzelnes vorzeichenloses Byte gespei­
chert, das nicht größer als 255 sein kann. Bei vielen Programmen, die mit Strings
arbeiten, ist dies die Maximallänge einer Zeichenkette, die sie behandeln können.
(Manchmal ist die Grenze etwas kleiner als 255, weil ein Byte oder zwei für organi­
satorische Zwecke gebraucht werden.) Beim normalen BASIC unseres Computers
können Strings nicht länger als 255 Zeichen sein, dagegen speichert compiliertes
BASIC eine Stringlänge als 2-Byte-Wörter, wodurch die Stringlänge von compilier­
tem BASIC über 32.000 Zeichen lang sein kann. Viele Textverarbeitungspro­
gramme behandeln eine Zeile als einzelnen String und verwenden einen 1-Byte
langen Stringlängenzähler. Das ist der Grund dafür, daß häufig eine Zeile nicht
mehr als 255 Zeichen fassen kann.
Es gibt noch einen anderen Weg, um die Länge eines Strings zu bestimmen, der
keine Grenze für die maximale Länge eines Strings festsetzt. Mit dieser Technik
wird nicht die Länge des Strings gespeichert, statt dessen wird das Stringende mit
einem Begrenzungszeichen markiert. Das folgende Beispiel verwendet das Stern­
chen als Begrenzungszeichen:
Dies*ist*ein*String*aus*WÖrtern*
Das Begrenzungszeichen wird für ie Markierung des Stringendes verwendet, aber
es wird nicht als Teil des Strings selbst betrachtet. Es gibt zwei weit verbreitete Be­
grenzungszeichen. Das eine ist ein 0-Byte, ein Byte, bei dem alle Bits Null sind.
(Wie Sie in Kapitel 4 sehen werden, eignet sich ein Null-Byte für diesen Zweck
ganz gut, weil ein 0-Byte normalerweise niemals als gewöhnliches Textzeichen
verwendet wird.) Das andere Begrenzungszeichen ist ein Byte mit dem numeri­
schen Code 13. Dreizehn ist der Code für ein Wagenrücklaufzeichen, das norma­
lerweise für die Endemarkierung einer Textzeile verwendet wird. Seit es üblich ist,
jede Textzeile als eigenen String zu behandeln, ist es sinnvoll, den gleichen Code
sowohl für Zeilenende als auch für Stringende zu benützen. (Darüber werden wir
noch mehr bei den Textdateiformaten in Kapitel 9 erfahren.)
Wenn das Stringende mit einem besonderen Code markiert wird, bedeutet das
also, daß der String diesen Codewert nicht beinhalten darf. Das ist in den meisten
Fällen vielleicht kein gewichtiges Problem, aber es ist immerhin ein Nachteil und
eine gewisse Einschränkung, der wir uns bewußt sein müssen.
30
1.
3 Daten
BASIC kann Zahlen zwischen hex und dezimal ganz einfach umwandeln, solange die Zah­
len nicht größer sind als das Äquivalent von vier Hex-Ziffern. Versuchen Sie ein Programm
zu schreiben, das größere Zahlen zwischen hex und dezimal umwandeln kann.
2.. Üben Sie ein bißchen Hex-Arithmetik. Addieren Sie 1234 zu ABCD. Subtrahieren Sie 1A2B
von A1B2. Multiplizieren Sie 2A mit 2 und 3.
3.
Finden Sie einen Weg, um die Genauigkeit oder den Wertebereich von Zahlen zu prüfen, mit
denen ein Programm umgehen kann? Versuchen Sie ein BASIC-Programm zu schreiben,
das nachprüft, wie groß eine Zahl werden darf oder wie genau eine Zahl dargestellt wird.
4.
Untersuchen Sie die Probleme, die bei den zwei Verfahren für die Definition eines Strings
auftreten. Denken Sie an praktische Situationen, in denen die Beschränkungen hinderlich
sein könnten. Können Sie sich ein Verfahren ausdenken, das der Länge oder -dem Inhalt
eines Strings keine Grenzen setzt? Gibt es bei Ihrem Verfahren irgendwelche Nachteile?
Schreiben Sie ein Programm in BASIC (oder jeder anderen programmierbaren Software, wie
1-2-3), das herausfindet, wie lang ein String sein kann, indem es einen String Zeichen für
Zeichen verlängert.
31
4
Der Zeichensatz des PC
In Kapitel 3 beschäftigten wir uns mit Datenformaten unseres PC. Auf den Zeichen­
satz des PC sind wir dabei nur kurz eingegangen. Da es über den Zeichensatz
eine Menge zu sagen gibt, haben wir dafür ein eigenes Kapitel reserviert. Wir
geben einen Überblick über den gesamten Zeichensatz und erklären, wie die Zei­
chen des PC mit einem weitverbreiteten ASCII-Standard zusammenhängen, und
es soll besonders auch der gesamte Sonderzeichensatz des PC behandelt wer­
den.
4.1
Ein
Überblick
Die Zeichen des PC benötigen wie bei den meisten modernen Computern ein Byte
aus 8 Bit; die Anzahl möglicher Zeichen ist also die achte Potenz von zwei, oder
256. Zunächst wollen wir uns die Zeichen anschauen (siehe Abbildung 4-1).
Es gibt zwei einfache Möglichkeiten, um alle Zeichen auf dem Bildschirm ausge­
ben zu lassen. Wir könnten z.B. das einfache BASIC-Programm ALL-CHAR aus
Anhang A verwenden. Mit diesem ALL-CHAR-Programm wurde die Abbildung 4-1
erstellt. Oder wir könnten das bekannte Sidekick-Programm verwenden, mit dem
man auch den gesamten PC-Zeichensatz schnell und einfach darstellen kann. Mit
ALL-CHAR oder Sidekick sehen Sie den Zeichensatz des PC genau so, wie der
Bildschirm die Zeichen zeigt. Dies kann, abhängig vom Typ ihres Bildschirms, vari­
ieren. (Mehr darüber erfahren wir in den Kapiteln über den Bildschirm.) Abbildung
4-1 zeigt die Zeichen in ihrer mehr oder weniger idealen Form (wie sie vom IBM­
Quietwriter-Drucker gedruckt werden).
Für unsere Arbeit brauchen wir eine andere Tabelle des PC-Zeichensatzes, die
jedes Zeichen zusammen mit seinem numerischen Zeichencode in dezimal und
hex zeigt. Eine solche Tabelle liefert Abbildung 4-2. Wir werden uns in diesem
Kapitel noch oft auf diese Abbildung beziehen. Wenn Sie die Abbildung 4-2 auf
ihrem Bildschirm ausgeben möchten, können Sie dafür entweder das Programm
REF-CHAR aus Anhang A oder das Programm Sidekick verwenden.
Abbildung 4-2 listet sämtliche 256 Zeichen und ihre dezimalen Zeichencodes auf,
gefolgt vom entsprechenden Hex-Code (die beiden Codes haben den gleichen
numerischen Wert, sie werden nur auf verschiedene Art ausgedrückt) und der
Abbildung des Zeichens. Wie Sie bemerken werden, sind Abbildung 4-1 und
Abbildung 4-2 gleich angeordnet, nämlich in Spalten, die von oben nach unten
gelesen werden, so daß Sie die Abbildungen leicht vergleichen können.
Überraschenderweise gibt es über diese Zeichen eine Menge zu sagen, weil sie
für verschiedenste Zwecke gestaltet wurden. Zuerst beginnen wir mit einem kurzen
Überblick.
In Abbildung 4-1 sehen Sie, daß die ersten zwei Spalten sehr seltsame Zeichen
enthalten (die ersten 32 Zeichen mit den dezimalen Codes von 0 bis 31). Dann fol­
gen sechs Spalten mit Zeichen, die uns bestens bekannt sind, die Ziffern 0-9, die
Buchstaben des Alphabets in Groß- und Kleinschreibung und eine Menge von In-
32
4
Der Zeichensatz des PC
•
e
•
•
...
•
•
*
!!
�
§
•
-
a
0
Ci!
cf
"
#
$
%
&
t
t
0
Abb. 4-1:
@
A
B
c
D
E
F
Q
R
s
T
u
V
7
G
w
8
9
"'
-+
*
+-
+
!i
.P
J.l
0
1
2
3
4
5
6
<
=
+.
•
.
•
/
>
?
H
I
J
K
L
M
N
0
a
p
q
c
r
s
p
X
y
z
[
\
1
b
d
e
f
g
h
i
j
k
1
m
n
0
t
u
V
w
X
y
z
{
1
1
l
a
<;
ü
e
a
ä
a.
ä
c;
e
e
e
1
i
i
Ä
A
E
a!
JE
ö
ö
0
a.
u
y
ö
u
�
E
V
ä
i
6
u
fi
N
A
Q
l
t
t
l'ls
«
f
„
L
J.
JL
a.
=
:;:
ß
±
�
!iJ
l lb
-
F
11
�
H
JI
1
�
JL
�
,
=
�
j
5
r
Tt
E
0
µ.
•
�
e
c
ö
00
q>
E:
n
s
J
+
=
0
J
n
z
Der gesamte Zeichensatz des PC
terpunktionszeichen. Diese acht Spalten bilden die erste Hälfte des PC-Zeichensat­
zes. Sie werden ASCII-Zeichen genannt, weil sie einem weitverbreiteten Standard
folgen, der von den meisten Computern verwendet wird. Dieser Standard heißt
ASCII (von American Standard Code for Information lnterchange).
ASCII umfaßt eigentlich nur 128 Zeichen mit den dezimalen Codes von 0 bis 127.
Unser PC-Zeichensatz hat doppelt soviele Zeichen, mit den zusätzlichen Codes
von 128 bis 255. Diese höheren Codes, die die zweite Hälfte des PC-Zeichensatzes
ausmachen, werden normalerweise als erweiterter ASCII-Code bezeichnet. Genau
gesagt, sind nur die erste Hälfte, die Codes von 0 bis 127, ASCII-Zeichen, aber
häufig wird der Ausdruck ASCII für alle Zeichen verwendet bzw. für das Codier­
schema, das festlegt, wie Zeichen als Bitgruppen dargestellt werden. Das schadet
nicht, aber Sie sollten sich der unterschiedlichen Bedeutung bewußt sein.
Die eigentlichen ASCII-Zeichen unseres
Zeichensatzes haben eine offizielle
Bedeutung und Definition, die weit über unsere PC-Familie hinaus gilt. Es ist ein
universeller Code, der mit der selben Bedeutung von vielen anderen Computern
und anderen elektronischen Geräten benützt wird. Bei den zusätzlichen ASCII-Zei­
chen stimmt das jedoch nicht. Es gibt keine universelle Bestimmung, wofür die
Zeichencodes von 128 bis 255 verwendet werden, und unsere Zeichen wurden
speziell für den PC entworfen. Wegen der Bedeutung des PC werden diese beson­
deren zusätzlichen ASCII-Zeichen nicht nur von der gesamten PC-Familie, sondern
auch von vielen weit entfernten Verwandten des PC verwendet.
Diese besondere Zeichengruppe entwickelt sich langsam zu einem inoffiziellen
Standard, aber nur zu einem inoffiziellen. Deswegen gibt es viele Computer und
Geräteeinheiten, besonders Drucker, die die zusätzlichen ASCII-Zeichen des PC
nicht kennen. In der Tat ist das einer der Gründe, warum wir für die Abbildungen
dieses Buches den IBM Quietwriter verwendet haben, der einer der wenigen Druk-
4.2 Die normalen ASCII-Zeichen
33
ker ist,die fast den gesamten Zeichensatz des PC ausgeben können. Sie sollten
sich also merken,daß einige Teile des Zeichensatzes nicht ohne weiteres uneinge­
schränkt eingesetzt werden können.
In den folgenden drei Abschnitten wollen wir uns mit den Einzelheiten des PC-Zei­
chensatzes befassen. Die ersten beiden behandeln die ASCII-Zeichen (zuerst die
üblichen
ASCII-Zeichen
und
dann
einige
besondere
ASCII-Steuerzeichen);
schließlich behandeln wir die zusätzlichen ASCII-Zeichen und andere Besonder­
heiten des PC-Zeichensatzes.
4.2
Die normalen ASCII-Zeichen
Der ASCII-Zeichensatz mit den Codes 0 bis 127 teilt sich in zwei verschiedene
Teile, wie man sofort aus den Abbildungen 4-1 und 4-2 ersehen kann. Der erste
Teil,den wir in Abschnitt 4.3 besprechen werden,sind die ersten 32 Zeichen mit
den Codes 0 bis 31. Diese werden ASCII-Steuerzeichen genannt, und sie sind
ziemlich verschieden von dem,was sie in den Abbildungen 4-1 und 4-2 zu sein
scheinen. Wir werden auf sie zurückkommen, nachdem wir die konventionelleren
Zeichen mit den Codes 32 bis 127 besprochen haben.
In der dritten der acht Spalten in Abbildung 4-1 und 4-2 sehen Sie unsere gewohn­
ten Zeichen, die Buchstaben des Alphabets, Ziffern und Interpunktionszeichen.
Obwohl man meinen könnte, daß es nicht viel über diese normalen Zeichen zu
sagen gibt,wollen wir doch auf eine ganze Reihe von Einzelheiten eingehen,die
man in Zusammenhang mit diesen Zeichen wissen sollte.
Natürlich gibt es verschiedene Zeichen für Groß- und Kleinschreibung und A ist
nicht gleich a. Falls Sie Daten mit einem Programm alphabetisch sortieren,werden
Sie feststellen, daß manche Programme keinen besonderen Unterschied in der
Behandlung von Groß- und Kleinschreibung machen (andere dagegen schon und
manchmal können wir wählen). Gemäß ASCII kommt a in der alphabetischen Rei­
henfolge jedenfalls nach A und auch nach Z, und die Ziffern werden vor dem
Alphabet sortiert.
Auch über die Interpunktions- und andere besondere Zeichen gibt es einiges zu
bemerken. Erstaunlich ist schon,daß diese Zeichen zwischen die Ziffern und Groß­
und Kleinbuchstaben eingestreut sind und keine Gruppe an einem bestimmten
Platz bilden.
Das Leerzeichen hat den dezimalen Zeichencode 32, den niedrigsten aller Inter­
punktionszeichen, und erscheint deshalb am Anfang der alphabetischen Sortie­
rung. (In den Zeichentabellen von Abbildung 4-1 und 4-2 sehen Sie drei verschie­
dene Zeichen,die ein Leerzeichen zu sein scheinen. Näheres dazu erfahren Sie im
Abschnitt „Leerzeichen und Nullen".) Sie werden bemerken, daß es neben den
runden Klammern c > auch noch zwei andere Zeichenpaare gibt,mit denen man
etwas einklammern kann,nämlich die eckigen Klammern [ J und die geschweiften
Klammern }{. Man verwendet auch die Größer- und Kleinerzeichen <>,um etwas
einzuklammern,wie <dies>. Es ist auf jeden Fall gut,diese vier Klammerpaare zu
kennen, weil man sie von Zeit zu Zeit brauchen kann.
34
4 Der Zeichensatz des PC
0
1
2
3
4
s
6
7
s
9
10
11
12
13
14
lS
16
17
lS
19
20
21
22
23
24
2S
26
27
2S
29
30
31
32
33
34
3S
36
37
3S
39
40
41
42
00
01
02
03
04
OS
06
07
os
09
OA
OB
oc
OD
OE
OF
10
11
12
13
14
lS
16
17
lS
19
lA
lB
lC
1D
lE
lF
20
21
22
23
24
2S
26
27
2S
29
2A
Abb. 4-2:
G
•
•
•
•
•
•
a
0
•
d
�
)!
J3
et
"'
„
*
II
,1
§
-
i
t
"'
-+
+„
&
•
•
!
II
II
$
%
&
1
(
)
*
43 2B
44 2C
4S 2D
46 2E
47 2F
4S 30
49 31
so 32
Sl 33
S2 34
S3 3S
S4 36
ss 37
S6 3S
S7 39
SS 3A
S9 3B
60 3C
61 3D
.
62 3E
63 3F
64 40
6S 41
66 42
67 43
6S 44
69 4S
70 46
71 47
72 4S
73 49
74 4A
7S 4B
76 4C
77 4D
7S 4E
79 4F
so so
Sl Sl
S2 S2
S3 S3
S4 S4
ss ss
+
,
•
/
0
1
2
3
4
s
6
7
s
9
:
;
<
=
>
?
@
A
B
c
D
E
F
G
H
I
J
K
L
M
N
0
p
Q
R
s
T
u
S6
S7
SS
S9
90
91
92
93
94
9S
96
97
9S
99
100
101
102
103
104
lOS
106
107
lOS
109
110
111
112
113
114
llS
116
117
llS
119
120
121
122
123
124
12S
126
127
12S
S6 V
S7 w
SS X
S9 y
SA Z
SB [
SC \
SD )
SE
SF
60
61 a
62 b
63 c
64 d
6S e
66 f
67 g
6S h
69 i
6A j
6B k
6C 1
6D m
6E n
6F o
70 p
71 q
12 r
73 s
74 t
7S u
76 V
77 w
7S X
79 y
7A z
7B {
7C :
7D }
7E
7F Cl
so c
129
130
131
132
133
134
13S
136
137
13S
139
140
141
142
143
144
14S
146
147
14S
149
lSO
lSl
1S2
153
1S4
1S5
156
157
lSS
1S9
160
161
162
163
164
16S
166
167
16S
169
170
171
Sl
s2
S3
S4
ss
s6
S7
ss
S9
SA
SB
SC
SD
SE
SF
90
91
92
93
94
9S
96
97
9S
99
9A
9B
9C
9D
9E
9F
AO
Al
A2
A3
A4
AS
A6
A7
AS
A9
AA
AB
ü
e
ä
ä
ä
a
c
e
ä
e
1
i
i
Ä
A
E
a!
1.
ö
ö
ö
ii
u
y
ö
U
�
f
Y
11.
f
ä
i
6
u
ii
�
!!
2
l
„
„
�
172
173
174
17S
176
177
17S
179
lSO
lSl
1S2
1S3
1S4
lSS
1S6
1S7
lSS
1S9
190
191
192
193
194
19S
196
197
19S
199
200
201
202
203
204
20S
206
207
20S
209
210
211
212
213
214
Der Zeichensatz des PC mit dezimalen und hex Code
AC
!
AD 1
AE
AF
«
»
BO li
Bl i!
B2
BJ
B4
BS
B6
B7 n
BS
B9
�
i
BA
BB
BC
BD
BE
BF
CO
Cl
C2
C3
C4
es
C6
C7
es
C9
CA
CB
cc
CD
CE
CF
DO
Dl
D2
D3
D4
DS
D6
�
l
D
JI
,j
1
L
.L
l
-
l
H-
µ
r
=
JL
�
.II.
:y:
Il
b
f
ß'
21S
216
217
21S
219
220
221
·222
223
224
22S
226
227
22S
229
230
231
232
233
234
23S
236
237
23S
239
240
241
242
243
244
24S
246
247
24S
249
250
2Sl
2S2
2S3
2S4
2SS
D7
DS
D9
DA
DB
DC
DD
DE
DF
EO
El
E2
E3
E4
ES
E6
E7
ES
E9
J
1
�
a
ß
r
11
l:
a
µ
i:
�
e
EA Q
EB 6
EC
00
ED !1>
EE
EF
FO
Fl
F2
F3
F4
FS
F6
F7
FS
F9
FA
FB
FC
FD
FE
FF
e:
n
:
±
2:
S
J
+
:::::
0
•
·
.J
n
2
•
4.2
Die normalen ASCII-Zeichen
35
In Büchern findet man spezielle An- und Abführungszeichen, über die normale
Schreibmaschinen nicht verfügen, auch nicht unser Zeichensatz. Unser Zeichen­
satz hat nur ein doppeltes und ein einfaches Anführungszeichen,die beide auf der
linken wie auf der rechten Seite eines Zitats stehen. Aber es gibt auch ein seltsa­
mes Zeichen, das als umgekehrtes Anführungszeichen bekannt ist. Es liegt vor
dem Kleinbuchstaben a, mit dem dezimalen Zeichencode 96. Sie sollten es nicht
mit dem einfachen Anführungszeichen zusammen verwenden. Es wird für die Her­
stellung fremder (nicht-englischer) Zeichen benützt,genauso wie andere Zeichen,
z.B. der Zirkumflex, ·,Code 94, die Tilde,- ,Code 126, das einfache Anführungszei­
chen, ',Code 39, und das Komma, „ Code 44. Diese Idee des Kombinierens von
Zeichen funktioniert nur, wenn Sie ein Zeichen über das andere stellen können.
Das gelingt bei einem Drucker oder bei einer Schreibmaschine, aber nicht auf
dem Bildschirm eines Computers. Damit diese nicht-englischen Zeichen des
Alphabets richtig behandelt werden, gehören sie beim PC zu den zusätzlichen
ASCII-Zeichen, wie Sie aus der zweiten Hälfte der Zeichentabellen ersehen kön­
nen. Wir werden in Abschnitt 4.4 näher darauf eingehen.
Es gibt noch andere Zeichen,die man kurz erwähnen sollte. Neben dem regulären
Schrägstrich, /,Code 47, gibt es den umgekehrten Schrägstrich, \,Code 92. Die­
ses Zeichen wird normalerweise nicht verwendet,aber ein paar besondere Anwen­
dungen in der Informatik gibt es dafür. In der Programmiersprache BASIC zeigt es
z.B. eine ganzzahlige Division an (der normale Schrägstrich steht für die reguläre
Division mit gebrochenem Ergebnis). Bei DOS markiert es Pfade des Inhaltsver­
zeichnisses (die wir in einem späteren Kapitel besprechen werden). Auch den Bin­
destrich,-,Code 45, darf man nicht mit dem Unterstreichungszeichen,_,Code 95,
verwechseln. Der Zirkumflex, ·, Code 94, wird manchmal auch für die Anzeige
besonderer „Kontrollzeichen" verwendet (die wir in Abschnitt 4.3 behandeln). Das
ist vielleicht verwirrend. Wenn Sie also dieses Zeichen sehen,sollten Sie prüfen,ob
es als eigenes Zeichen verwendet wird oder für besondere Steuerzeichen.
Leerzeichen und Nullen
In den Zeichentabellen der Abbildungen 4-1 und 4-2 finden Sie drei oder vier Zei­
chen, die ein Leerzeichen zu sein scheinen. Nur eines von ihnen ist wirklich das
richtige Leerzeichen, nämlich das mit dem Zeichencode 32. Die Zeichencodes 0
und 255 werden „Nullen" oder Nullzeichen genannt. Sie werden nicht als echte
Zeichen verwendet, sondern als neutrale Nichts. Wenn wir zum Beispiel Code 32
(das echte Leerzeichen) zu einem Drucker schicken,druckt er ein Leerzeichen und
fährt weiter zur nächsten Stelle. Dagegen sollen die Nullzeichen ignoriert werden,
und der Drucker soll nicht weiterfahren.
Im ASCI I-Zeichensatz gibt es zwei Nullen, Code 0 und 127. Im PC-Zeichensatz ist
Code 127 allerdings ein sichtbares Zeichen, das einem kleinen Haus ähnelt. Als
Ersatz für das ASCII-Nullzeichen mi dem Code 127 behandelt der PC-Zeichensatz
Code 255 als Null.
36
4
Der Zeichensatz des PC
Nullzeichen werden relativ selten gebraucht. Sie werden meistens für Übertragun­
gen verwendet, um Zeit zu gewinnen. Die Übertragung von Nullen ist eine Möglich­
keit, eine Leitung aktiv zu halten, ohne daß echte Daten gesendet werden.
4.3
Die ASCII-Steuerzeichen
Die ersten
32 Zeichen im ASCII-Zeichensatz mit den Codes 0 bis 31 haben eine
besondere Verwendung, die nichts mit ihrem Erscheinungsbild in den Abbildun­
gen 4-1 und 4-2 zu tun hat. Sie sollten ihre Bilder in diesen beiden Abbildungen
noch ignorieren, weil wir in diesem Abschnitt diese Zeichen aus einer völlig ande­
ren Perspektive betrachten werden.
Wenn ein Computer zu einem Drucker „spricht", muß er dem Drucker mitteilen,
was er drucken soll und wie er es drucken soll. Er muß ihm zum Beispiel die Zei­
lenenden und den Anfang einer neuen Seite angeben. Die normalen ASCII-Zei­
chen, die wir in Abschnitt 4.2 besprochen haben, sind die abdruckbaren ASCII­
Zeichen. Der Teil, der die Drucksteuerung enthält, ist der Gegenstand dieses .
Abschnitts, nämlich die ASCII-Steuerzeichen.
Die ersten
32 Codes im ASCII-Zeichensatz sind dafür reserviert, dem Drucker oder
einem anderen Computer über Telefonleitung u. ä. besondere Informationen zu
übermitteln. Diese Codes werden nicht direkt für die Übermittlung von Informatio­
nen verwendet, sondern sind Kommandos, Formatiersignale und Übertragungs­
steuercodes. Es gibt vieles, wofür diese 32 Codes eingesetzt werden, und einiges
von den verschiedensten Einsatzmöglichkeiten werden wir gleich aufzeigen.
Diese
32 Codes haben übrigens besondere Namen, wenn sie als ASCII-Steuerzei­
chen verwendet werden und nicht als die hübschen Bilderehen in den Abbildun­
gen
4-1 und 4-2. Tabelle 4-1 ist eine Zusammenfassung dieser Codes und deren
Namen.
Bevor wir diese Steuerzeichen im einzelnen erklären, muß noch etwas über die
Tabelle
4-1 gesagt werden. Die ersten zwei Spalten in Tabelle 4-1 sind natürlich die
numerischen Zeichencodes in dezimal und hex. Die dritte Spalte zeigt einige
besondere Steuertasten, die in Verbindung mit diesen Zeichen verwendet werden.
Jedes dieser Zeichen kann direkt auf der Tastatur eingetippt werden, indem man
einfach die „Ctrl"-Taste gleichzeitig mit der Taste A (für Code
1) oder B (für Code 2)
usw. drückt. Üblicherweise schreibt man zur Darstellung dieser Control-Shift­
Codes einen Zirkumflex, ft, vor den Namen der Taste. Wenn wir ft A schreiben, mei­
nen wir also Control-A, d. h. das Zeichen, das auf der Tastatur durch gleichzeitiges
Drücken der Ctrl- und der A-Taste eingetippt wird.
Merken Sie sich also, daß diese Zirkumflex-Schreibweise sehr oft verwendet wird,
wie z.B. ftz oder ftc für Control-Z oder Control-C. Dies sind zwei spezielle Codes,
die für den PC eine reale Bedeutung haben, wie wir bald sehen werden.
4.3 Die ASCII-Steuerzeichen
Tabelle 4-1:
ASCII-Steuerzeichen
Dez. Code
Hex Code
0
00
1
01
2
3
Control-Taste
Name
Beschreibung
"§
NUL
Null-Zeichen
"A
SOH
Kopfzeilenanfang
02
"B
STX
Textanfang
03
·c
ETX
Textende
4
04
"D
EOT
übertragungsende
5
05
"E
ENG
Aufforderung zur
6
06
"F
ACK
Positive Rück-
7
07
"G
BEL
Klingelzeichen
Datenübertragung
meldung
8
08
"H
BS
Rückwärtsschritt
9
09
"I
HT
Horizontaler
10
OA
"J
LF
Zeilenvorschub
11
OB
"K
VT
Tabulator
Vertikaler
Tabulator
12
oc
"L
FF
Seitenvorschub
13
OD
"M
CR
Wagenrücklauf
14
OE
"N
so
Dauerumschaltung
15
OF
·o
SI
Rückschaltung
16
10
·p
DEL
Löschen
17
11
"Q
DC1
Gerätesteuer-
18
12
"R
DC2
Gerätesteuer-
19
13
·s
DC3
Gerätesteuerzeichen 3
20
14
"T
DC4
Gerätesteuer-
21
15
·u
NAK
zeichen 1
zeichen 2
zeichen 4
Negative Rückmeldung
22
16
·v
SYN
23
17
·w
ETB
Synchronisierung
Ende des Datenübertragungsblocks
24
18
·x
CAN
25
19
·y
EM
Aufzeichnungsende
26
1A
·z
SUB
Substitution
Ungültig
27
1B
"[
ESC
Umschaltung
28
1C
"/
FS
Dateitrennzeichen
29
1D
"]
GS
Gruppentrennzeichen
30
1E
RS
Satztrennzeichen
31
1F
US
Einheitentrennzeichen
37
38
4 Der Zeichensatz des PC
Die letzte Spalte von Tabelle 4-1 enthält die Namen für alle 32 Codes, und in der
vierten Spalte, direkt vor dem Namen, finden Sie einen Code aus zwei oder drei
Buchstaben als Standardabkürzung für den vollen (englischen) Namen der Steu­
erzeichen. Diese kurzen Codes wurden manchmal in der Literatur über Computer
und Datenfernverarbeitung verwendet.
Einige dieser ASCII-Steuerzeichen sind nützlich für uns, und andere werden ziem­
lich selten und nur für sehr technische Zwecke gebraucht. Wir wollen sie hier nicht
in ihrer chronologischen Reihenfolge behandeln, sondern gemäß ihrer Bedeutung
für uns.
Zuerst sprechen wir über jene, für die auf unserer Tastatur eine eigene Taste exi­
stiert. Wie bereits erwähnt, können diese Zeichen mit einer Control-Tasten-Kombi­
nation eingetippt werden. Aber einige dieser Zeichen haben wirklich eigene
Tasten, so daß wir nicht die Kombination verwenden müssen. Dabei handelt es
sich um besonders wichtige Steuerzeichen. Es gibt vier davon: den Rückwärts­
schritt (BS, Code 8), den Tabulator (HT, Code 9), die Enter-Taste oder den Wagen­
rücklauf (CR, 13) und die Escape-Taste (ESC, 27). (Übrigens hat die DEL-Taste auf
ihrer Tastatur nichts mit dem ASCll-DEL (Code 16) zu tun.)
Eine ganze Gruppe dieser Steuerzeichen bezieht sich auf das Textformat. Diese
Codes fungieren sowohl als logische Formatiercodes (die unsere Daten für unsere
Programme in ein sinnvolles Format bringen), als auch als Druckersteuerzeichen.
Die gebräuchlichsten haben wir schon besprochen, wie den Rückwärtsschritt (BS),
den Tabulator (HT) und den Wagenrücklauf (CR). Außerdem gibt es den Zeilenvor­
schub (LF, Code 10), der in Verbindung mit dem Wagenrücklauf verwendet wird,
den Seitenvorschub (FF, Code 12), der zum Anfang einer neuen Seite springt und
den vertikalen Tabulator (VT, Code 11).
Ein weiteres wichtiges Zeichen ist das Klingelzeichen (BEL, 7). Wenn wir dieses
Zeichen zu einem Drucker oder Bildschirm schicken, erzeugen wir ein akustisches
Signal. Das Control-C-Zeichen (ETX, 3) ist auch als Pausenzeichen bekannt und
hat gewöhnlich die gleiche Wirkung wie die BREAK-Taste. Das Control-S- und das
Control-0-Zeichen (DC3, 19 und DC1, 17) gelten oft als Pause- und Neustartkom­
mando, z.B. wenn wir Dienste über Datenfernverarbeitung in Anspruch nehmen
(wie The Source, CompuServe, oder MCI Mail). Das „Pause"-Kommando Control-S
hat jedoch nicht die gleiche Funktion wie die PAUSE-Taste (über die wir in Kapitel
14 noch mehr erfahren). (Wenn Sie die PAUSE-Taste auf Ihrer Tastatur nicht finden,
liegt das daran, daß sie nicht als solche gekennzeichnet ist. Aber es gibt sie. Es ist
die Taste Control-Numlock, genauso wie die BREAK-Taste zugleich Control-Scroll­
Lock ist.) Die PAUSE-Taste stoppt den Computer wirklich, während Control-S ein
Programm anhält (der PC aber weiterarbeitet).
Schließlich gibt es noch Control-Z (SUB, 26). Mit diesem Steuercode markiert man
das Ende von Textdateien. Über diesen Code sowie den Wagenrücklauf- und Zei­
lenvorschubcode erfahren wir in Kapitel 9 noch mehr.
Das waren die wichtigsten ASCII-Steuerzeichen. Wir beenden diesen Abschnitt mit
einem Überblick auf einige der eher technisch orientierten Steuerzeichen. Sie kön­
nen die folgenden Absätze überspringen, wenn Sie kein Interesse daran haben.
4.3 Die ASCII-Steuerzeichen
39
Die restlichen ASCII-Steuerzeichen werden für vielfältige Zwecke verwendet: für
Datenfernverarbeitung, Datenformatierung und für die Druckersteuerung (und
andere Geräteeinheiten). Wir können dieses Thema hier nicht ausführlich behan­
deln, aber einige Details wollen wir kurz vorstellen.
Die Codes 1 bis 4 (SOH, STX, ETX, EOT ) werden in der Datenfernübertragung ver­
wendet, um die Grenzen der Kopfzeileninformation sowie der eigentlichen Textda­
ten und das Ende der gesamten Übertragung anzuzeigen. Solche Codes sind
besonders für Textdaten gedacht. Andere Codes, wie zum Beispiel 28 bis 31 (FS,
GS, RS, US), kennzeichnen als Interpunktionszeichen in anderen Datenarten die
Grenzen von Dateien, „Gruppen", Sätzen und „Einheiten". Diese können, je nach
Datentyp, der übertragen wird, verschiedene Bedeutungen haben.
Noch weitere Codes beziehen sich auf die Steuerung der Datenfernverarbeitung.
Zum Beispiel sollen in der Regel die positive (ACK,
6) und die negative (NAK, 21)
Rückmeldung angeben, ob die Daten erfolgreich übermittelt werden. ENO, SYN,
ETB, CAN und andere Codes werden ebenfalls für die Steuerung der Datenfern­
verarbeitung eingesetzt (dieses spezielle Thema geht aber über unseren Rahmen
hinaus). Vielleicht möchten Sie aber wissen, wofür diese Steuerzeichen im allge­
meinen verwendet werden.
Einige der ASCII-Steuerzeichen dienen der Steuerung von .Druckern und anderen
Geräteeinheiten. Obwohl die Steuercodes von Drucker zu Drucker variieren, gibt
es doch einige allgemein gültige Codes. Das Dauerumschaltungs- und das Rück­
schaltungszeichen (SO, 14 und SI, 15) werden allgemein dafür verwendet, den
Drucker Zeichen in doppelter Breite oder komprimiert drucken zu lassen. Die vier
Gerätesteuerzeichen (DC1-4, 17-20) sind für die Druckersteuerung reserviert, und
bei vielen Druckern wird damit etwa die Breitschrift ausgeschaltet.
Die meisten Drucker arbeiten allerdings mit mehr Formatier- und Steuerkomman­
dos als es verfügbare ASCII-Steuerzeichen gibt, und deshalb wird häufig das Um­
schaltzeichen (ESC, 27) als vorausgehendes Kommando benützt. Wenn ein Druk­
ker das Umschaltzeichen empfängt, weiß er, daß spezielle Kommandos folgen,
und anstatt die nächsten Zeichen zu drucken, interpretiert er sie als Steuerkom­
mandos; zum Beispiel als Kommando, um die Tabulatorpositionen einzustellen,
oder um die folgenden Zeichen zu unterstreichen.
Mehr über diese Steuerzeichen erfahren Sie aus dem Buch „Communications and
Networking with the IBM PC" (Brady Communications, 1983). Die Details der Druk­
kersteuerzeichen müssen Sie dem Handbuch Ihres Druckers entnehmen.
40
4.4
4 Der Zeichensatz des PC
Sonderzeichen
Wir kommen nun zu den Sonderzeichen des PC. Das sind die gesamte zweite
Hälfte des Zeichensatzes, die zusätzlichen ASCII-Zeichen mit den Codes 128 bis
255, und die PC-spezifischen Bilderzeichen der ersten 32 ASCII-Codes. Wir
besprechen sie gruppenweise und kommentieren die interessanten Einzelheiten.
Um einer Verwirrung vorzubeugen, wird nochmals darauf hingewiesen, daß für die
ersten 32 Zeichen mit den Codes 0 bis 31 zwei völlig verschiedene Betrachtungs­
weisen existieren. Gemäß Abschnitt 4.3 können sie als ASCII-Steuerzeichen inter­
pretiert werden. In diesem Fall gibt es keine Abbildung von ihnen, weil sie keine
Zeichen sind, die nach etwas aussehen (wie zum Beispiel ein A). Sie sind im
Grunde Kommandos. In diesem Abschnitt zeigen wir eine andere Interpretation
dieser Zeichencodes, nämlich als Zeichen wie alle anderen, die tatsächlich abge­
bildet werden (vgl. die Abbildungen 4-1 und 4-2).
Was bestimmt, ob der gleiche Zeichencode als ASCII-Steuerkommando oder als
ein sichtbares Zeichen interpretiert wird? Grundsätzlich hängt alles davon ab, wie
der Code eingesetzt wird. In den meisten Fällen werden diese Codes als ASCII­
Steuerzeichen verwendet. Wenn wir sie dagegen irgendwie auf dem Bildschirm
unseres PC sichtbar machen können, dann gilt die andere Interpretation als ASCII­
Sonderzeichen.
Die Bilder der ersten 32 Zeichen (in den Abbildungen 4-1 und 4-2) zeigen Ihnen
ein faszinierendes Durcheinander aus Graphikzeichen, die für vielerlei Zwecke ver­
wendet werden können. Keines davon ist aber wirklich notwendig. Weil die Ver­
wendung dieser Zeichencodes relativ beschränkt ist (sie werden normalerweise
als Steuerzeichen interpretiert und deshalb nicht in der Art dargestellt, wie wir sie in
Abbildung 4-1 sehen), beschloß IBM, die wichtigsten Sonderzeichen in den erwei­
terten ASCII-Bereich zu legen und diesen Bereich für einige der amüsanteren und
entbehrlicheren Zeichen zu verwenden.
Trotzdem gibt es darunter auch einige erwähnenswerte und nützliche Zeichen, wie
die Kartensymbolgruppe (Codes 3 bis 6), das Paragraphen- und das Trennzeichen
(Codes 20 und 21), die Pfeilgruppe (16 bis 31) und die Gesichtergruppe (1 und 2).
Bei den erweiterten ASCII-Zeichen mit den Codes 128 bis 255 finden wir die wichti­
geren Sonderzeichen. Sie sind in drei Hauptgruppen unterteilt: die ausländischen
Zeichen, die Graphikzeichen und die wissenschaftlichen Zeichen.
Die ausländischen Zeichen belegen die Codes 128 bis 175 und beinhalten alles,
was für die Anpassung der meisten europäischen Sprachen gebraucht wird. (ASCII
als Amerikanischer Standardcode ist natürlich auf die englische Sprache und
deren lnterpunktionssymbole ausgerichtet.)
In dieser ausländischen Zeichengruppe gibt es drei Unterteilungen. Die Codes 128
bis 154 und 160 bis 167 liefern besondere alphabetische Zeichen (die diakritischen
Zeichen), für die verschiedenen europäischen Sprachen. Wir haben schon
erwähnt, daß der reguläre ASCII-Zeichensatz die meisten (aber nicht alle) diakriti­
schen Zeichen für die europäischen Sprachen enthält. Sie können nur verwendet
4.4 Sonderzeichen
41
werden, wenn, wie auf einem Drucker, die Zeichen mit den Buchstaben des Alpha­
bets kombiniert werden können. Das ist mit dem Bil.dschirm des PC nicht möglich.
Diese europäischen Zeichen lösen das Problem auf eine elegante Weise.
Der zweite Teil des europäischen Zeichensatzes liefert Währungssymbole: das
Centzeichen (Code 155), das Pfundzeichen (156), das Zeichen für den Japani­
schen Yen (157), für den Spanischen Peseta (158), für den Franc (159). (Das Dollar­
zeichen (36) gehört zum regulären ASCII-Satz.)
Im dritten Teil des europäischen Zeichensatzes finden sich besondere Interpunk­
tionszeichen: das spanische umgekehrte Frage-und Ausrufezeichen (Code 168
und 173), die französischen Akzentzeichen (Code 174 und 175). Diese französi­
schen Akzentzeichen sind eine Bemerkung wert, weil sie auch für viele graphische
Zwecke eingesetzt werden können.
Unter den europäischen Zeichen gibt es vier Symbole mit allgemeiner Bedeutung:
das 1/2- und 1/4-Symbol (Code 171 und 172) und die zwei Winkelzeichen (169 und
170).
Der nächste Hauptabschnitt der zusätzlichen ASCII-Zeichen sind die Graphikzei­
chen. Diese Zeichen hat man entworfen, damit unsere Programme Bilder nur mit
Hilfe des PC-Zeichensatzes erstellen können. Es gibt drei Untergruppen von Gra­
phikzeichen.
Der interessanteste und am weitesten verbreitete Teil der Graphikzeichen sind jene
für das Zeichnen von Rahmen. Mit diesen Zeichen können wir Rechtecke oder
Rahmen auf dem Bildschirm zeichnen. Diese Zeichen für die Darstellung von Rah­
men sind so weit entwickelt, daß wir mit ihnen vertikale und horizontale Trennlinien
innerhalb eines Rahmens zeichnen können, und man kann auch zwischen einfa­
chen oder doppelten Linien wählen. Es gibt tatsächlich vier Zeichensätze für das
Zeichnen von Rahmen: einen Satz für Doppellinien, einen anderen für einfache
Linien und dann noch zwei gemischte Sätze, nämlich für doppelte horizontale und
einfache vertikale Linien, und umgekehrt. Abbildung 4-3 stellt alle vier Zeichen­
sätze dar und zeigt ihre Zeichencodes. Mit dem Programm BOXES aus Anhang A
können Sie die Rahmen auf dem Bildschirm Ihres Computers sehen. Es erzeugt
die Abbildung 4-3.
Fast jedes wichtigere Programm für den PC benützt diese Zeichen, weil sie auf
dem Bildschirm einen guten Eindruck machen. Deshalb wurde Abbildung 4-3
erstellt und das Programm, das sie zeichnet, damit Sie die Anwendung leicht nach­
vollziehen können.
Die nächste Gruppe von Graphikzeichen wird für die Erstellung schattierter Flä­
chen in variierenden Dichteabstufungen verwendet. Code 176 bedeutet 1/4 Dichte
und füllt den gesamten Zeichenraum aus (so daß zwei nebeneinanderliegende
Zeichen lückenlos aneinander schließen). Code 177 steht für 1/2 Dichte, Code 178
für 3/4 Dichte, und Code 219 bedeutet vollständig ausgefüllt. Zusammen mit dem
Leerzeichen liefern sie einen Bereich von vier oder fünf „Grauschattierungen", mit
denen man eine Fläche auf dem Bildschirm ausfüllen oder teere Flächen unter­
schiedlicher Muster herstellen kann.
42
4 Der Zeichensatz des PC
Doppellinie:
einfache Linie:
D
Doppellinie horizontal:
Doppellinie vertikal:
Doppellinie:
rr
201
=
205
II
I�
205
=
JL
1r
205
206
=
186
ß
202
186
=
�I
205
185
=
205
186
:!I
188
196
11
183
II
II
205
;i
187
II
186
II
186
I!:
200
=
II
186
204
einfache Linie:
ii'
203
Doppellinie vertikal:
Ir
214
196
�
195
1
II
F
213
186
179
I�
*
�I
�
196
II
II
196
208
182
II
186
JI
186
Jl
186
IL
211
215
196
+
197
1
196
193
,
191
1
179
196
�
180
1
179
.J.
196
189
=
205
198
179
J
196
=
205
217
:f:
205
216
=
179
=
207
205
1
�
184
1
179
=
1
179
b
212
'i'
209
1
1
186
196
196
179
179
L
192
T
194
1
1
179
186
199
196
Doppellinie horizontal:
II
II
Abb. 4-3:
11'
210
r
218
179
=
�
205
181
=
179
d
190
1
205
Graphikzeichen für Rahmen
Die letzte Gruppe von Graphikzeichen besteht aus den Codes 220 bis 223. Diese
Zeichen sind nur zur Hälfte schattiert, im Gegensatz zum Zeichen 219, das wir
schon erwähnt haben. Bei einem ist die obere Hälfte halb ausgefüllt, bei einem
anderen die untere Hälfte, bei einem die linke und beim anderen die rechte Hälfte.
4.4 Sonderzeichen
43
Man kann mit ihnen dichte, ausgefüllte Formen zeichnen, die doppelt so dicht sind,
als wenn nur das vollständig ausgefüllte Zeichen verwendet wird. Man kann mit
ihnen zum Beispiel Balkendiagramme auf eine halbe Zeichenlänge genau anstatt
auf die ganze Zeichengröße genau zeichnen.,
Es gibt sehr viele trickreiche Graphiken, die man auf dem Bildschirm des PC mit
Hilfe seiner Standardzeichen erzeugen kann. Dies schließt alle Graphikzeichen
und auch einige der regulären Zeichen ein (zum Beispiel kann man den Klein­
buchstaben o als Räder eines Zuges verwenden), Mit einiger Phantasie können
Sie auf diese Weise kleine Wunder vollbringen.
Der letzte Teil des erweiterten ASCII-Sonderzeichensatzes besteht aus der wissen­
schaftlichen Zeichengruppe mit den Codes 224 bis 254. Diese enthalten grie­
chische Buchstaben, die gewöhnlich in der Mathematik und Wissenschaft benützt
werden, das Symbol für Unendlich (Code 236), verschiedene besondere Mathe­
matiksymbole, einschließlich zweier Zeichen (244 und 245), die übereinander das
große lntegralzeichen bilden. Es gibt sogar Symbole für das Quadrat und die Qua­
dratwurzel (253 und 251). Obwohl diese Symbole für die Belange von Mathematik,
Wissenschaft und Technik vielleicht nicht ausreichen, so können sie doch den
Großteil davon befriedigen.
1.
Versuchen Sie herauszufinden, wie der Bildschirm und der Drucker Ihres Computers auf die
32 ASCII-Steuerzeichen reagiert. Schreiben Sie ein BASIC-Programm oder benützen Sie
irgend ein anderes Mittel, um diese Zeichen eines nach dem anderen zum Bildschirm und
Drucker zu senden. (Hilfestellung: Wenn Sie vor und nach jedem Steuerzeichen ein X
schreiben, können Sie die Reaktion auf jedes Steuerzeichen besser beobachten.)
2.
3.
Reagieren Ihr Drucker und Ihr Bildschirm auf dieselben Steuerzeichen unterschiedlich? Ver­
suchen Sie zu erklären, warum.
Sehen Sie sich die BASIC-Programme ALL-CHAR und REF-CHAR in Anhang A an, die die
Abbildungen 4-1 und 4-2 auf dem Bildschirm Ihres Computers erzeugen. Finden Sie her­
aus, wie sie die Zeichen auf den Bildschirm schreiben. Warum verwenden sie nicht den nor­
malen PRINT-Befehl?
4.
Wenn ein Programm Daten sortiert, indem es Groß- und Kleinbuchstaben gleich behandelt
(was oft gewünscht ist), behandelt es beide entweder als Klein- oder als Großbuchstaben,
Spielt es eine Rolle, auf welche Weise dies geschieht? Welche Wirkung hat das auf die Inter­
punktion?
5.
Die Gestaltung der Graphikzeichen des PC war durch die Anzahl der verfügbaren Zeichen­
codes beschränkt. Stellen Sie sich vor, es wären noch 50 oder mehr Codes verfügbar.
Welche Art von. zusätzlichen Graphikfähigkeiten wären vielleicht hinzugefügt worden? Ver­
suchen Sie selbst, den Graphikzeichensatz des PC zu erweitern.
44
5
Hardware: Die Komponenten des PC
Wir wollen nun das Innenleben der PC-Familie bzw. die Hardwarekomponenten
unseres Computers betrachten und zwar aus drei Blickwinkeln. Zuerst werden wir
mechanische und elektrische Moduln als die Hauptkomponenten des PC bespre­
chen. Später werden wir diese Komponenten danach untersuchen, welche Mög­
lichkeiten sie uns für die Zusammenstellung verschiedener PC-Konfigurationen
bieten. Zuletzt behandeln wir, auf einem mehr technischem Niveau, die einzelnen
Chips, mit denen der PC arbeitet.
5.1
Die Hauptkomponenten
Wenn wir uns. den PC anschauen, sehen wir drei physikalische Teile. Zuerst ist da
einmal die sogenannte Systemeinheit, die den Großteil des eigentlichen Compu­
ters enthält. Davor sehen wir die Tastatur, auf der wir eintippen. Und schließlich gibt
es noch den Bildschirm, der normalerweise auf die Systemeinheit gestellt wird. So
sieht der PC von außen aus. Das Innenleben des PC ist ebenfalls modular gestal­
tet; der Computer ist in elektronische Komponenten aufgeteilt. Abbildung 5-1 zeigt
ein Schaltbild dieser Komponenten.
Die gestrichelte Linie in Abbildung 5-1 stellt das Gehäuse dar, das die Systemein­
heit umschließt, und Sie sehen, daß sich fast alles innerhalb dieses Gehäuses
befindet. Bei den tragbaren Mitgliedern der PC-Familie, wie zum Beispiel dem
Compaq und dem Portable PC, schließt die Systemeinheit auch noch den Bild­
schirm ein. Damit ändert sich aber bzgl. dem Aufbau des Computers nur ein Detail
und nichts Fundamentales.
Das grundlegende Design des PC ersehen wir aus Abbildung 5-1. Zunächst zeigen
wir, wo jede Komponente, über die wir sprechen, ihren physikalischen Platz hat.
Bei den meisten Hauptmodellen der PC-Familie gibt es dabei keinen Unterschied.
Obwohl vielleicht die physikalische Anordnung variiert (besonders bei einigen der
weiter entfernten Verwandten der Familie), sind die logische Organisation und die
Funktion der Komponenten für alle Mitglieder der PC-Familie identisch. Sie kön­
nen die Teile, die wir besprechen, auch mit dem wirklichen PC, der in Abbildung
5-2 gezeigt wird, vergleichen. Noch besser können Sie der Besprechung folgen,
wenn Sie das Gehäuse Ihrer PC-Systemeinheit öffnen und alles direkt mit Ihrem
eigenen Computer vergleichen.
Auf der rechten Rückseite der Systemeinheit ist der Netzanschluß. Das Netzan­
schlußgerät arbeitet mit Wechselstrom und wandelt ihn in Gleichstromspannung
um, die die Teile des Computers brauchen. Der Netzanschluß liefert vier verschie­
dene Gleichstromspannungen:+ 12 Volt, -12 Volt,+ 5 und -5 Volt. Neben der Um­
wandlung
von
Hochspannungswechselstrom
in
Niederspannungsgleichstrom
glättet das Netzgerät auch den Netzstrom, d.h. es gleicht Schwankungen aus. Die
Kapazität des Netzgerätes beschränkt die Anzahl der Optionen, die im Computer
installiert werden können. Das originale PC-Modell liefert ungefähr 65 Watt Lei­
stung, was nicht sehr viel ist. Spätere Modelle haben mehr, der XT liefert z.B. etwa
130 Watt und der AT etwa 200 Watt Leistung.
5.1
Die Hauptkomponenten
45
Drucker
Speicher
r------- -,
E
... Q)... E
...
1
1
:E
� "fi Q)
Andere
(,) �
III
tll
'8
1
1
Optionen
�·
"C c::
0 ·g_ ::!:
1
1
1
1
1
1
L-
ffi
Cf)
Option Slots
Systemkarte
Netzgerät
1
Modem
Bildschirm
Platte
1
1
1
1
Platten
_______
1
..J
Tastatur
Abb. 5-1:
Die Komponenten des PC
Die wichtigste Komponente des PC ist die Systemkarte. Dies ist eine große Steck­
platte mit gedruckter Schaltung, die die wichtigsten Silikonchips enthält, mit denen
der PC arbeitet. Dazu gehört auch der Mikroprozessor und die zugehörigen Bau­
steine, die·dem Mikroprozessor bei der Ausführung seiner Aufgaben helfen. Zum
Beispiel der „Takt"-Baustein arbeitet wie ein Taktgeber, indem er das Arbeitstempo
des ganzen Computers angibt. Auf der Systemkarte befinden sich auch die ge­
samte Grundausstattung an Arbeitsspeicher und die speziellen Lesespeicher­
chips, die sämtliche eingebauten Programme des Computers enthalten. Die
Systemkarte wird manchmal auch Hauptplatine oder Mutterplatine genannt. Sie
werden diese Ausdrücke auch in der Fachliteratur finden.
Die Systemplatine ist die größte elektronische Einzelkomponente und bei weitem
die größte aller Steckkarten. Sie füllt praktisch den gesamten unteren Teil des
Gehäuses aus. Über der Systemplatine sind alle anderen Komponenten der
Systemeinheit plaziert.
Wenn Sie die Systemeinheit heben, merken Sie, daß sie an der rechten hinteren
Ecke am schwersten ist. Dort ist nämlich das Netzgerät mit seinem schweren
Transformator installiert, der für die Herabsetzung des Spannungsniveaus
gebraucht wird. Beim PCjr ist der Transformatorteil des Netzgerätes in einem sepa­
raten Gehäuse außerhalb der Systemeinheit untergebracht. Das verringert das
Gewicht dieser Systemeinheit und stellt sicher, daß nur Niederspannung dorthin
gelangt.
Neben der Stromversorgung für die restlichen Computerkomponenten liefert das
Netzgerät auch eine außenliegende Netzbuchse, die für den Bildschirm gedacht
ist, und es enthält ein Gebläse für die Kühlung der gesamten Systemeinheit.
46
5 Hardware: Die Komponenten des PC
Abb. 5-2:
Das Innenleben der Systemeinheit
An der rechten Vorderseite der Systemeinheit befinden sich die Plattenlaufwerke.
Die verschiedenen Mitglieder der PC-Familie haben Plattenlaufwerke verschiede­
ner Größe und T ypen, wie wir in Abschnitt 5.2 sehen werden, wo wir die verschie­
denen Optionen im PC erörtern. Ein Grund für die Plazierung der Plattenlaufwerke
an der rechten vorderen Ecke besteht darin, daß die Verbindung zum Netzgerät
kurz und problemlos ist. Die Plattenlaufwerke sind .das einzige mechanische Bau­
teil in der Systemeinheit. Sie brauchen mehr Strom als die meisten elektronischen
Komponenten und haben deshalb ihre eigenen direkten Verbindungen zum Netz­
gerät. Alle anderen Komponenten in der Systemeinheit erhalten ihren Strom indi­
rekt vom Netzgerät über die Systemkarte.
Das Netzgerät und die Plattenlaufwerke nehmen die rechte Seite des Computers
ein. Die linke Seite über der Systemkarte ist für die sog. Erweiterungskarten reser­
viert. Für diese gibt es eine Reihe von Anschlüssen an der linken Rückseite der
Systemplatine.
Diese
Anschlüsse
werden
Steckplätze
oder
Busanschlüsse
genannt und sind ein wichtiges Merkmal des PC, nämlich sein offenes Design.
Die Designer des PC mußten eine Möglichkeit finden, mit der man die verschiede­
nen optionalen Teile wie Drucker, Telefonmodems u.a. anschließen kann. Man
hätte auch spezielle Anschlüsse für jede Option einrichten können, wodurch
jedoch die Flexibilität des PC und die Vielfalt der optionalen Zusatzkomponenten
beschränkt worden wären. Das hätte den PC zu einem geschlossenen System mit
im voraus festgelegten Möglichkeiten gemacht. Das offene Design des PC wird
durch das sog. Bus-Konzept ermöglicht, und es ist so wichtig, daß wir es im fol­
genden besprechen wollen.
5.1
Die Hauptkomponenten
47
Die verschiedenen Silikonchips und andere Bauteile des Computers müssen so
miteinander verbunden werden, daß sie Signale austauschen bzw. miteinander
„sprechen" können. Wenn die Verbindungen durch einzelne Drähte hergestellt
werden, können nur die Teile miteinander kommunizieren, die auch miteinander
verdrahtet sind. Eine andere Art für die Realisierung dieser Verbindungen, bei der
vor allem auch nachträglich eingebaute Komponenten mit jedem vorhandenen
Bauteil in Verbindung treten können, wird durch die Einrichtung eines gemeinsa­
men Übertragungskanals erreicht. Er wird Bus genannt, weil alle Signale darauf
transportiert werden.
Die Anschlüsse auf der Rückseite der PC-Systemkarte sind mit allen Leitungen des
PC-Busses verbunden, so daß alles, was wir an diesen Steckplätzen anschließen,
mit jedem Bauteil des PC, das an den Bus angeschlossen ist, sprechen kann, ein­
schließlich dem Arbeitsspeicher und dem Mikroprozessor. Diese Steckplätze oder
Busanschlüsse ermöglichen eine zusätzliche und frei wählbare Aufrüstung. (Sie
müssen aber wissen, daß aus unerfindlichen technischen Gründen einige Erweite­
rungskarten in besonderen Steckplätzen am besten arbeiten. Theoretisch sind alle
Steckplätze gleichwertige Verbindungen zum Bus.) Mehr technische Informationen
über den Bus erhalten Sie im folgenden Abschnitt „Wie ein Bus aufgebaut ist".
Wie ein Bus aufgebaut ist
Der Bus des PC hat insgesamt 62 separate Leitungen oder Drähte. Sie werden
durch die Codes A1 bis A31 und B1 bis B31 angesprochen. Das Numerierungs­
schema korrespondiert mit der physikalischen Anordnung der Leitungen auf den
Erweiterungskarten. Die A-Seite ist rechts, die B-Seite links, und die Nummern wer­
den jeweils von hinten nach vorne hochgezählt.
Es gibt vielfältige Signale, die in diesen Leitungen transportiert werden. An fünf von
ihnen liegen die vier verschiedenen Versorgungsspannungen an, wobei eine
Spannung doppelt vorkommt. Drei andere werden als Masseleitungen entlang der.
Versorgungsspannungsleitungen verwendet.
Acht Leitungen werden für den Transport der acht Datenbits benützt, so daß der
Bus gleichzeitig ein Datenbyte übertragen kann. Zwanzig Leitungen werden für die
Adressierung verwendet, die angibt, welcher Teil des Computers angesprochen
werden soll. Die Adressierung wird auf zweierlei Art benützt, zum einen als Spei­
cheradresse und zum andern als E/A-Anschlußadresse (die in Kap. 6 besprochen
wird). Unabhängig vom Modus wird die Adresse immer in diesen Leitungen über­
tragen, während die Daten auf den acht Datenleitungen transportiert werden.
48
5 Hardware: Die Komponenten des PC
Die verbleibenden Leitungen des Busses dienen einer V ielzahl von Kontrollzwek­
ken. Eine zeigt an, ob der Bus beschäftigt oder frei ist. Ein anderer Satz an Leitun­
gen steht den sog. Interrupt-Anforderungen zur Verfügung; das sind Hardware­
signale, die anzeigen, daß eine Computerkomponente einen Abruf erfordert. Ein
Paar dieser Interrupt-Leitungen ist zum Beispiel für die Anzeige der Aktivitäten an
der ersten und zweiten seriellen Schnittstelle reserviert, die COM1 und COM2
heißen.
Der Bus des AT benützt den Standardbus des PC und hat noch zusätzlich 36 Lei­
tungen. Die physikalische und elektrische Gestaltung des AT-Busses macht ihn
kompatibel zum PC-Bus, so daß die Klasse der AT-Geräte möglichst viele PC­
Erweiterungskarten verwenden kann. Die 36 zusätzlichen Leitungen sind mit C1 bis
C18 und D1 bis D18 gekennzeichnet, ähnlich der PC-Buskennzeichnung. Diese
Extra-Leitungen stellen acht zusätzliche Datenleitungen zur Verfügung (weil der AT
einen 16-Bit-Datenpfad hat, gegenüber dem 8-Bit-Datenpfad des PC), sowie acht
zusätzliche Adreßleitungen für die Erweiterung des Adreßbereiches und fünf wei­
tere lnterrupt-Anforderungsleitu ngen.
Es gibt selbstverständlich noch mehr technische Details über den Bus, als wir hier
behandeln können, aber das Wichtigste haben wir besprochen.
Zwischen den verschiedenen PC-Modellen gibt es manchmal Unterschiede in der
Anzahl und Größe der Steckplätze und auch im Bustyp. Tatsächlich gibt es drei
verschiedene Bustypen in der PC-Familie. Der wichtigste Bus, auch PC-Bus
genannt, ist der, der im originalen PC, im XT, im Compaq und den meisten anderen
Modellen verwendet wurde. Der Bus des AT ist eine Erweiterung des PC-Busses. Er
enthält genau die gleichen Verbindungsleitungen wie der PC-Bus und noch ein
paar zusätzliche, die für den 286-Mikroprozessor des AT benötigt werden. Er kann
mit den meisten Zusatzkarten, die für den PC-Bus entworfen wurden, arbeiten.
Der dritte Bus ist eine Eigenheit des PCjr. Er ist äquivalent zum PC-Bus, hat aber
noch einige zusätzliche jr-spezifische Eigenschaften, wie zum Beispiel den Tonka­
nal. Die physikalische Form des Jr-Busses ist anders und auch seine Lage. Der
Anschluß des Jr-Busses befindet sich außen an der rechten Seite der Systemein­
heit und nicht innen, wie es bei den anderen PC-Modellen der Fall ist.
Erweiterungskarten für den PC werden über die Bussteckplätze angeschlossen.
Der noch verfügbare Platz in der Systemeinheit bestimmt, wieviele Steckplätze dort
sein können und wie groß jeder sein darf. Der originale PC hatte fünf Steckplätze,
die alle die volle Standardlänge (etwa 33 cm) hatten. Beim XT-Modell wurde die
Anzahl der Steckplätze auf acht vergrößert, teilweise indem sie näher zusammen­
gerückt wurden und teilweise auch dadurch, daß ein Steckplatz neben das Netzge­
rät gesetzt wurde. Weil das Plattenlaufwerk diesem Steckplatz im Weg steht, kön­
nen nur kurze Zusatzkarten von halber Länge in diesen Steckplatz eingepaßt wer­
den. Andere Modelle, wie zum Beispiel der Portable PC, haben auch Steckplätze,
die für normallange Zusatzkarten zu kurz sind.
5.2 Zusätze und Adapter
49
Gemäß der Schaltskizze kommen wir nun in Abschnitt 5.2 zu den Zusatzkarten.
Bevor wir uns die Vielzahl von Erweiterungen ansehen, die in unseren Computern
installiert werden können, soll noch etwas über das Schaltbild in Abbildung 5-1
gesagt werden. Das Schaltbild in Abbildung 5-1 ist zwar logisch schematisch und
zeigt in einem Blockdia,gramm die Hauptkomponenten des PC. Es zeigt aber nicht,
wie ein PC physikalisch aussieht. Dieses Diagramm wurde jedoch so gezeichnet,
daß es sich nicht zu sehr vom echten PC unterscheidet. Wenn Sie das Diagramm
in Abbildung 5-1 mit Abbildung 5-2 vergleichen, können Sie leicht die Überein­
stimmung zwischen den logischen Teilen eines PC und seiner realen physikali­
schen Form feststellen.
5.2
Zusätze und Adapter
Durch die Erweiterungs- und Adapterkarten, die in den Steckplätzen des PC ange­
schlossen werden können, können wir eine große Vielfalt unterschiedlich gestalte­
ter PCs schaffen. Man kann sich damit einen maßgeschneiderten PC ·zusammen­
bauen. In diesem Abschnitt besprechen wir die verschiedenen Erweiterungskarten,
die wir in unserem PC verwenden können, und andere Zusatzausrüstung, z.B. die
verschiedenen Typen von Plattenlaufwerken und Bildschirmen.
Wenn wir über die Zusatzkarten sprechen, die in den Erweiterungssteckplätzen
angeschlossen werden, könnte man dabei vielleicht an zusätzliche, besondere
Möglichkeiten denken, die wir wahlweise in unseren PCs installieren können. Das
erweckt einen falschen Eindruck. In Wirklichkeit gibt es zwei Standardsteckplätze,
die normalerweise in jedem PC eingebaut sind: ein Adapter für das Plattenlaufwerk
und einer für den Bildschirm. Die Adapter für das Plattenlaufwerk und den Bild­
schirm sind wichtige Teile eines PC, und Sie werden beide in Ihrem PC finden.
Der Bildschirmadapter liefert alle notwendigen Steuerschaltungen, die die Befehle
des Computers, etwas auf dem Bildschirm anzuzeigen, umwandeln. Im Wesentli­
chen funktioniert der Bildschirmadapter wie ein Übersetzer, der Computersignale
in Videosignale umwandelt.
Der Bildschirmadapter besteht aus zwei Hauptkomponenten. Die eine ist ein spe­
zieller Silikonchip, der sog. Video-Kontroller, der den Bildschirm steuert. Die
andere Komponente ist ein Speicher. Wie wir noch detaillierter in späteren Kapiteln
sehen werden, muß die Information, die auf dem Bildschirm erscheint, in einem
Speicher festgehalten werden, der nur für diesen Zweck reserviert ist. Obwohl die­
ser Speicher wie der Arbeitsspeicher des Computers arbeitet, hängt seine Größe
(und Adressierung) vom Typ des Bildschirmadapters ab; der Bildschirmspeicher
ist deshalb ein wichtiger Teil des Adapters.
Es gibt viele verschiedene Bildschirmadapter für die PC-Familie. Die fünf Wichtig­
sten stellen wir kurz vor, die Details besprechen wir aber erst in den späteren Kapi­
teln über den Bildschirm.
Die zwei dominierenden Bildschirmadapter sind der Monochrom-Adapter und der
Farb-Graphik-Adapter (CGA für color-graphics adapter), die schon mit dem origi­
nalen PC eingeführt wurden. Der Monochrom-Adapter ist der beliebteste, obwohl
50
5 Hardware: Die Komponenten des PC
seine Möglichkeiten sehr begrenzt sind. Er kann nur Textzeichen (den gesamten
PC-Zeichensatz aus Kapitel 4) darstellen, und das auch nur in einer Farbe (obwohl
er dafür eine Reihe von Möglichkeiten bietet: er kann intensiv helle oder dunklere
Zeichen darstellen, er kann unterstreichen, und es gibt die inverse Darstellung).
Der Monochrom-Adapter ist der beliebteste, weil er die Zeichen auf dem Bild­
schirm deutlicher darstellt als der Farb-Graphik-Adapter. Für den Monochrom­
Adapter gibt es nur den Monochrom-Bildschirm, der extra für den Monochrom­
Adapter hergestellt wurde.
Der Farb-Graphik-Adapter ist der andere originale Bildschirmadapter. Er kann
sowohl Textzeichen als auch Bilder (Graphiken) darstellen, die aus vielen kleinen
Punkten bestehen. Der Farb- Graphik-Adapter kann bis zu 16 Farben darstellen und
er hat mehrere Bildschirmmodi (die wir später behandeln), die eine Vielfalt an
Farbkombinationen und Bildauflösungen ermöglichen. Obwohl der CGA mehr
Fähigkeiten aufzuweisen hat als der Monochrom-Adapter, kann er normale Textzei­
chen nicht so deutlich wie dieser darstellen. Der CGA kann nur mit wenigen Bild­
schirmen arbeiten, einschließlich des normalen Fernsehbildschirms. Gewöhnlich
wird er an spezielle Farbbildschirme angeschlossen, die sog. RGB-Monitore.
Die tragbaren Versionen des PC haben eingebaute Bildschirme, und es gibt des­
halb keine Auswahlmöglichkeit für andere Bildschirmadapter oder Bildschirme.
Der IBM Portable PC hat den Farb- Graphik-Adapter und einen einfarbigen Gra­
phikbildschirm. Der Compaq besitzt einen ähnlichen einfarbigen Graphikbild­
schirm, aber sein Bildschirmadapter kann sowohl den CGA als auch den Mono­
chrom-Adapter simulieren und vereint somit beide Vorzüge.
Neben den beiden originalen Bildschirmadaptern wurden noch andere mit besse­
ren Eigenschaften, besonders einer höheren Auflösung, entwickelt. Der beliebteste
davon ist der Hercules Graphics Adapter, hergestellt von Hercules Computer Tech­
nologies. Er wird, vor allem im Amerikanischen, oft nur „Herc Card" genannt. Die
Herc Card paßt nur zu einem Monochrombildschirm, und sie liefert sowohl die
hohe Qualität der monochromen Textdarstellung, als auch einen sehr hochauflö­
senden einfarbigen Graphikmodus. Sie ist ungefähr mit der Karte des Compaq
vergleichbar, hat aber eine qualitativ bessere Graphik.
Die anderen zwei Bildschirmadapter, die wir erwähnen müssen, sind zwei Weiter­
entwicklungen von IBM. Der erste wird Enhanced Graphics Adapter (oder kurz
EGA) genannt. Das ist eine Allroundkarte, die an einen Monochrombildschirm, an
einen RGB-Farbbildschirm oder an einen speziellen Bildschirm, der Enhanced
Color Display (ECD) genannt wird, angeschlossen werden kann. Der EGA kann
entweder als Monochrom-Adapter agieren oder den Farb- Graphik-Adapter simu­
lieren oder seine eigenen Kunststücke ausführen, inclusive der Monochromgra­
phik (ähnlich der Herc Card) und einer 64- farbigen hochauflösenden Text- und
Graphikdarstellung, wenn er mit dem ECD verwendet wird. Der andere spezielle
Bildschirmadapter ist der hochleistungsfähige und sehr teuere Professional Gra­
phics Adapter, der an ein genauso teueres Professional Graphics Display ange­
schlossen werden kann. Diese Kombination ist für spezielle und professionelle
Arbeiten mit Graphik gedacht, die eine sehr hohe Auflösung und Hunderte von ver­
schiedenen Farben verlangt.
5.2 Zusätze und Adapter
51
Das ist der aktuelle Stand der Graphik-Adapter für die PC-Familie und sie sind
auch die kompliziertesten Zusatzkarten. Ebenfalls kompliziert ist der Adapter für
das Plattenlaufwerk.
Adapter für Plattenlaufwerke liefern dieselbe Dienstleistung für die Laufwerke wie
Bildschirmadapter für die Bildschirme. Sie stellen eine Steuerung zur Verfügung,
die zwischen dem Plattenlaufwerk und den restlichen Computerkomponenten hin­
und herübersetzt. Wie bei den Bildschirmadaptern ist die komplexe Schaltung des
Laufwerkadapters auf einem besonderen Baustein untergebracht, einem eigenen
Disk-Kontroller-Baustein. Im Gegensatz zum Bildschirmadapter braucht der Lauf­
werksadapter keinen besonderen eingebauten Speicher. Es gibt zwei Haupttypen
von Plattenlaufwerken, Disketten und Festplatten, und es gibt dafür drei Arten von
Laufwerksadaptern: Adapter, die nur für den einen oder den anderen Typ geeignet
sind, oder Adapter für beide Typen. Im Gegensatz zu den Bildschirmadaptern gibt
es über die Plattenadapter nicht viel Interessantes zu erzählen; interessant sind
dagegen die zahlreichen verschiedenen Plattenlaufwerke.
Es gibt sehr viele verschiedene Arten von Plattenlaufwerken, die sich in Kategorien
einteilen lassen. Die Diskettenlaufwerke arbeiten meistens mit den biegsamen
(„floppy") 51/4-Zoll-Standarddisketten. (Es gibt noch andere Diskettengrößen, klei­
nere und größere, die in der PC-Familie aber nur selten vertreten sind.) Die Stan­
darddiskettenlaufwerke sind fast bei allen Mitgliedern der PC-Familie enthalten.
Aber sogar hier gibt es zwei Variationen: die inzwischen ausgestorbenen einseiti­
gen Laufwerke (die nur auf einer Diskettenseite aufzeichnen) und doppelseitige
Laufwerke. Diskettenlaufwerke mit hoher Kapazität wurden schließlich mit dem AT
eingeführt und sie können mit Standarddisketten oder mit besonderen Disketten
hoher Kapazität arbeiten. Sie speichern mehr als die dreifache Datenmenge. Die
letzte Kategorie bilden die 31/2-Zoll-Minidisketten. Sie sind kleiner und haben eine
höhere Kapazität als die normalen Disketten und sie haben eine harte (nichtbieg­
same) Hülle, die sie besser schützt.
Die Speicherkapazität von Disketten reicht von mindestens 160 K bei einseitigen
Disketten bis zu 1.200 K bei Disketten mit hoher Kapazität.
Der nächste wichtige Plattentyp ist die Festplatte. Festplatten bestehen aus harten,
unbiegsamen magnetischen Platten und sie können viel mehr Daten speichern
und viel schneller arbeiten als Disketten. Im Gegensatz zu Disketten, die man in
ihre Laufwerke hineinschieben und wieder herausnehmen kann, sind Festplatten
auf Dauer installiert und werden deshalb als Festplatten bezeichnet. Festplatten
haben eine Kapazität, die von mindestens fünf oder zehn Megabytes bis zu vielen
hundert Megabytes reicht. Die üblichen Größen sind 10, 20 and 32 Megabytes. Der
XT hat eine 10-Mega-Platte und der AT eine 20-Mega-Platte.
Es gibt auch einen Mischtyp, den Sie kennen sollten, die Disk Cartridge bzw.
Wechselplatte. Hier kann die Platte wie eine Diskette gewechselt werden, die
jedoch ebenfalls einen festen Mantel hat und fast die gleiche Geschwindigkeit und
Kapazität wie eine Festplatte.
Diese Plattentypen sind für uns sehr wichtig, und wir werden deshalb in mehreren
Kapiteln ihre verschiedenen Details besprechen.
52
5 Hardware: Die Komponenten des PC
Neben den Bildschirm- und Plattenadaptern gibt es noch weitere Arten von
Zusatzkarten.
Wichtig sind vor allem die Speicherkarten. Obwohl die Systemkarte des Compu­
ters die gesamte Grundausstattung an Arbeitsspeicher enthält, könnte der Compu­
ter noch mit mehr Speicher arbeiten. Die Größe des Arbeitsspeichers, die auf einer
Systemkarte untergebracht werden kann, variiert von Modell zu Modell. Sie reicht
von 64K bis 512K. Zusätzlicher Speicher ist mit Hilfe von Speichererweiterungskar­
ten möglich, und die meisten PCs haben auch eine Speichererweiterungskarte.
Zusatzkarten gibt es außerdem für die parallele und serielle Schnittstelle. Die paral­
lele Schnittstelle dient meistens für einen Drucker, die serielle Schnittstelle norma­
lerweise für den Anschluß an eine Telefonleitung (über ein Modem) oder an einen
Drucker. Die meisten Computerdrucker sind entweder für den Anschluß an eine
serielle oder an eine parallele Schnittstelle eingerichtet. Die parallele Schnittstelle
ist auf die Druckersteuerung spezialisiert, die serielle Schnittstelle ist dagegen
mehr verallgemeinert und kann für vielerlei Zwecke eingesetzt werden (Drucker
und Telefone sind allerdings die üblichen Anschlüsse).
Das waren die wichtigsten Erweiterungen, die wir über Zusatzkarten in unseren PC
einbauen können. Daneben gibt es aber auch Lichtgriffel, Spieleadapter (mit einer
Jo ysticksteuerung für Videospiele), Mäuse (kleine Handsteuergeräte, mit denen
man genau auf eine Stelle am Bildschirm zeigen kann) und Modems. Modems
erfordern eine besondere Erwähnung.
Für die meisten Geräteeinheiten (Platten, Drucker, Bildschirme) braucht unser
Computer nur eine Art von Interface-Karten. Um einen Computer an ein Telefon an­
zuschließen, braucht man zwei: eine serielle Schnittstelle (die wir schon erwähnt
haben) und ein Modem. Das Modem wandelt die Computersignale in Telefonsi­
gnale um. Unsere Computer können dafür ein externes Modem verbunden mit
einer seriellen Schnittstelle oder aber ein internes Modem verwenden. Ein einge­
bautes Modem, wie zum Beispiel das (in USA) beliebte Hayes 1200B Modem,
kombiniert eine serielle Schnittstelle mit einem Modemwandler auf einer einzigen
Zusatzkarte, die direkt an einem der Steckplätze des Computers angeschlossen
werden kann.
Aus der Idee des internen Modems (das wirklich eine serielle Schnittstelle und ein
Modem miteinander kombiniert) entstanden die Multifunktionskarten, die wir noch
erwähnen möchten. Die Kombination mehrerer Zusatzeigenschaften auf einer ein­
zigen Karte ist sehr effizient, weil nur ein Steckplatz belegt wird, und natürlich ist es
auch billiger als für jeden Zweck getrennte Karten zu verwenden. Es gibt viele ver­
schiedene Multifunktionskarten. Einige kombinieren einen Bildschirmadapter mit
einer einzelnen parallelen Schnittstelle, andere haben mehrere Schnittstellen, seri­
ell und parallel. Die beliebtesten Arten sind diejenigen, die einen Speicher, serielle
und parallele Schnittstellen, gepufferte Uhren, Spieleadapter und vieles mehr lie­
fern.
Sie haben nun eine grobe Vorstellung von den Erweiterungen, die in den Busan­
schlüssen des PC installiert werden können. In späteren Kapiteln werden wir auf
5.3 Wichtige Bausteine
53
die Funktionsweise dieser Zusatzkomponenten eingehen und was sie für uns lei­
sten können. Wir beenden dieses Kapitel mit einigen technischen Bemerkungen
zu den Bausteinen, die die Hauptarbeit auf der Systemkarte (und auf einigen
Erweiterungskarten) erledigen.
5.3
Wichtige Bausteine
Wenn Sie Einzelheiten über elektronische Schaltungen interessieren oder mehr
über das Innenleben des PC wissen wollen, müssen Sie die wichtigsten Bausteine
der PC-Familie kennen.
Zunächst muß man wissen, daß es nur sehr wenige PC-spezifische Bausteine gibt.
Das war eine der größten Überraschungen für die Elektronikexperten und Compu­
terkenner, als IBM zum ersten Mal den PC vorstellte. Im Wesentlichen ist der PC nur
mit Standardchips gebaut worden, die schon bei anderen Computern eingesetzt
wurden. Das war ein radikaler Wandel für ein IBM�Produkt. IBM geht normaler­
weise immer ihre eigenen Wege. Der PC war jedoch ein völlig anderes Produkt für
IBM, ein Produkt, das auch vieles in der Geschäftspolitik von IBM änderte. Aber
das ist eine eigene Geschichte, auf die wir hier nicht näher eingehen können. Wir
merken uns, daß alle Bauteile, die wir hier behandeln, Standard-Mikrocomputer­
teile sind.
Wir konzentrieren uns jetzt auf die zwei zentralen Modelle der PC-Familie: den ori­
ginalen PC als den Vater des PC-Zweiges und den originalen AT als den ersten der
AT-Serie. Wir beginnen mit den Hauptchips auf den Systemkarten dieser beiden
Geräte, die in den Abbildungen 5-3 und 5-4 dargestellt werden.
Der wichtigste Baustein ist der Mikroprozessor, ein Intel 8088 beim PC (und XT,
Portable PC, Compaq und Compaq Plus sowie fast allen anderen im PC-Zweig)
und ein Intel 80286 beim AT (und bei allen anderen Mitgliedern des AT-Zweiges).
Andere Mikroprozessoren sind der 8086, der 80188 und der 80186, die bei ande­
ren Mitgliedern der Familie eingebaut wurden.
Direkt neben dem Mikroprozessor ist ein Steckplatz für einen 87er-Baustein, den
numerischen Co-Prozessor oder Numeric Data Processor (NDP), mit seinen spe­
ziellen Fähigkeiten für sehr schnelle und besonders genaue Gleitpunktberechnun­
gen. Der numerische Co-Prozessor ist relativ selten installiert, aber fast alle Fami­
lienmitglieder haben einen speziellen Steckplatz dafür vorgesehen.
Das erste Baustein-Paar, für das wir uns interessieren, bezieht sich auf den inter­
nen zeitlichen Ablauf der Operationen im Computer. Der sogenannte Taktgenerator
wird in erster Linie dafür verwendet, den Systemtakt zu erzeugen, der den grundle­
genden Arbeitszyklus des Computers bestimmt. In einem PC ist es der Baustein
8284, in einem AT hat er die Nummer 88284.
54
5 Hardware: Die Komponenten des PC
DD
D
o
D
0
0
0
Abb. 5-3:
0
D
D
oOO
00000
DDDDDDDD'DDDDDDD
00000000 0000000
00000000 DODDDDD
00000000 0°00000
Die Systemplatine des PC
Das Taktgeneratorchip verwendet ein Quarzkristall, wie es auch die „Quarz"uhren
für eine genaue Zeitbestimmung einsetzen. Der Taktgenerator unterteilt den ultra­
schnellen Rhythmus des Kristalles in den schnellen Rhythmus, den der Computer
braucht, und wandelt ihn so um, daß auch andere Bauteile damit arbeiten können.
Nahe verwandt mit dem Taktgenerator ist der programmierbare Zeitgeber (Timer)
mit dem 8253. Der programmierbare Zeitgeber kann andere Zeitsignale für
bestimmte Taktzyklen erzeugen. Die Rate kann verändert werden. Das macht die­
sen Baustein „programmierbar". Wenn der Systemtakt des Computers sechs Mil­
lionen Impulse pro Sekunde beträgt (das ist die wirkliche Taktrate des AT) und wir
möchten, daß etwas sechstausendmal in der Sekunde passiert, können wir den
Zeitgeber auf die Zahl 1000 programmieren. Das bedeutet, daß der programmier­
bare Zeitgeber alle tausend Systemzyklen ein Signal aussendet, das sechs Millio­
nen geteilt durch Eintausend bzw. sechstausendmal pro Sekunde erscheint. Mit
dem Zeitgeber kann man regelmäßige Zeitsignale für viele Zwecke generieren. Un­
ter anderem kann man damit auch Lautsprecher-Töne erzeugen, wie wir in einem
späteren Kapitel sehen werden.
Wir haben bereits erwähnt, wie Informationen auf einem Bus zwischen den Teilen
des PC hin- und herfließen, und wir kennen die wichtigsten Buskanäle. Um den
Verkehr im Bus zu überwachen und den Informationsfluß zu regulieren, haben
5.3 Wichtige Bausteine
Abb. 5-4:
55
Die Systemplatine des AT
unsere Computer einen Bus-Kontroller. Beim PC heißt dieser Baustein 8288, beim
AT 82288. Der Bus-Kontroller muß sicherstellen, daß die Operationen des Busses
reibungslos verlaufen.
Wie wir später noch genauer erfahren werden, können einige Teile des Computers,
besonders das Diskettenlaufwerk, Daten direkt mit dem Arbeitsspeicher austau­
schen, ohne daß die Daten über den Mikroprozessor laufen müssen. Damit kann
der Mikroprozessor für wichtigere Arbeiten freigehalten werden. Dieser Vorgang
wird direkter Speicherzugriff oder DMA (Direct Memory Access) genannt. Es gibt
dafür einen speziellen Baustein, den OMA-Kontroller mit der Nummer 8237.
Ähnlich werden auch Interrupts, eine wichtige Eigenschaft des PC, die wir in Kapitel
6 behandeln, durch einen speziellen Baustein, den 8259, überwacht. In Compu­
tern, wie auch im wirklichen Leben, gibt es Unterbrechungen (Interrupts) von unter­
schiedlicher Wichtigkeit, und eine der Aufgaben des Interrupt-Kontrollers 8259 ist
es, sie nach ihrer Priorität zu ordnen und anstehende Interrupts zu speichern.
56
5 Hardware: Die Komponenten des PC
Ein anderer wichtiger Baustein ist das Programmierbare Peripherie-Interface, PPI,
mit der Bezeichnung 8255. Das PPI überwacht die Operationen einiger einfacher
Peripheriegeräte des Computers, wie zum Beispiel das Kassetten-Interface. Die
meisten Peripheriegeräte sind jedoch zu kompliziert und können von einer so ein­
fachen Schaltung nicht gesteuert werden.
Hierzu gehören die Diskettenlaufwerke. Ein wichtiger Baustein unterstützt die Zu­
sammenarbeit zwischen Computer und den Diskettenlaufwerken: der PD765 Dis­
kettenlaufwerk-Kontroller, allgemein nur FDC (Floppy Disk Controller) genannt. Für
die Bildschirme gibt es den 6845 CRT-Kontroller (Cathode Ray Tube). Sowohl der
Standard-Monochrom-Adapter als auch der originale Farb-Graphik-Adapter (CGA)
enthalten einen 6845. Spätere und weiter entwickelte Bildschirmadapter haben
normalerweise mehr Computertyp-spezifische Komponenten.
Es gibt natürlich noch eine große Anzahl anderer wichtiger Bausteine sowohl auf
der Systemplatine, auf den Erweiterungskarten als auch in den Peripheriegeräten
(wie zum Beispiel in den Diskettenlaufwerken). Aber die Bausteine, die wir kurz
besprochen haben, sind die wichtigsten, und Sie können darüber am leichtesten
weiterführende Literat1..1.r finden.
1.
Warum ist der PC in drei Hauptkomponenten unterteilt: in die Systemeinheit, die Tastatur und
den Bildschirm? Bei einigen Computern ist die Tastatur starr an der Systemeinheit befestigt.
Was sind die Vor- und Nachteile, einen Computer auf diese Art zu bauen? Bei einigen Com­
putern, einschließlich der tragbaren Familienmitglieder, wie zum Beispiel dem Compaq und
dem Portable PC, ist der Bildschirm in die Systemeinheit integriert. Was sind die Vor- und
Nachteile dieser Bauweise?
2.
Die Hauptmitglieder der PC-Familie haben Busanschlüsse für Zusätze, die im Gehäuse des
Computers installiert werden. Der PCjr hat sie an der rechten Außenseite, so daß Zusätze
extern angeschlossen werden. Bei mehreren Zusätzen für den Jr werden diese seriell ange­
schlossen. Worin liegt dabei der Unterschied für den Jr? Was sind die Vor- und Nachteile
der zwei Anschlußarten?
3.
Viele der wichtigen Bausteine, die wir in Abschnitt 5.3 erwähnt haben, werden als „program­
mierbar" bezeichnet. Was bedeutet das? Wodurch wird etwas - z.B. einer dieser Bausteine,
Ihr Fernseher oder irgend etwas anderes - „programmierbar"? Welche Vorteile entstehen
aus der Programmierbarkeit von PC-Bausteinen? Gibt es auch Nachteile?
57
6
Der Mikroprozessor
Der Mikroprozessor leistet die Hauptarbeit in einem Personalcomputer, und wir
müssen uns deshalb, wenn wir unseren PC verstehen wollen, mit der Arbeitsweise
der Mikroprozessoren genauer befassen. Wie wir in Kapitel 1 schon gesehen
haben, basiert die PC-Familie auf der Intel 8086-Mikroprozessorfamilie, und die
meisten Mitglieder der PC-Familie arbeiten insbesondere mit dem 8088-Baustein.
Diesen Mikroprozessor werden wir deshalb ausführlich besprechen.
Was wir über den 8088 erfahren, trifft allgemein fast ganz auf die gesamte 8086Mikroprozessorfamilie zu. In Abschnitt 6.5 schauen wir uns die besonderen Eigen­
schaften des 286-Mikroprozessors an, mit dem der AT-Zweig der PC-Familie
arbeitet.
Wenn Sie die interne Arbeitsweise Ihres Computers verstehen wollen oder mit dem
Befehlssatz eines PC-Assemblers arbeiten wollen, müssen Sie unweigerlich etwas
über die Details des PC-Mikroprozessors wissen. Wenn Sie an solchen techni­
schen Details nicht interessiert sind und sich nie mit einem Assemblerprogramm
beschäftigen werden, wie die meisten PC-Benutzer, ist dieses Kapitel für Sie
eigentlich unwichtig. Sie können aus diesem Kapitel aber eine ganze Menge über
Ihren PC, seine Stärken und Schwächen erfahren.
6.1
Was der Mikroprozessor alles kann
Wir wollen uns zunächst den grundlegenden Befehlssatz des Mikroprozessors an­
schauen, der festlegt, was der Prozessor eigentlich alles kann.
Wenn wir unseren Computer irgendetwas tun lassen, ist das aus der Sicht des
Computers immer eine komplizierte Aufgabe. Was der Computer wirklich macht,
ist die Ausführung einer Reihe von Schritten, die aus dem Befehlssatz des Compu­
ters gebildet werden. Diese Grundbefehle werden Maschinensprache oder Assem­
bler genannt. (Wenn der Programmierer damit umgeht, spricht man von Assem­
bler, aus der Sicht des Computers spricht man von der Maschinensprache. Beides
meint aber dasselbe.) Die Stärke eines Computers versteht man am besten, wenn
man sich seine Maschinenbefehle anschaut (und wie schnell sie sind).
Würden wir sie genauer besprechen, müßten wir uns in langwierige Details verlie­
ren, Details, mit denen Assemblerprogrammierer arbeiten müssen. Das ist nicht
unsere Absicht. Sie sollen lediglich eine ausreichende Vorstellung davon bekom­
men, welche Fähigkeiten der Computer hat. Wir beginnen mit einfacher Arithmetik,
weil Arithmetik die Grundlage für vieles ist, was der Computer für uns leistet.
Der Mikroprozessor kann die vier Grundrechenarten ausführen: addieren, subtra­
hieren, multiplizieren und dividieren. Die Addition und Subtraktion sind die einfach­
sten Operationen und bei weitem die häufigsten, besonders weil sie für viele
Zwecke, neben den offensichtlichen, verwendet werden (wie wir in Kürze sehen
werden). Weil unsere Mikroprozessoren 16-Bit-Prozessoren sind, wissen wir, daß
58
6 Der Mikroprozessor
sie 16-Bit-Zahlen addieren und subtrahieren können. Sie können aber auch mit 8Bit-Zahlen rechnen. Sie werden sich vielleicht fragen, warum unsere Computer
sowohl 8-Bit- als auch 16-Bit-Operationen ausführen können. Da 16-Bit-Operatio­
nen leistungsfähiger sind, warum soll man sich mit 8-Bit-Zahlen abgeben?
Es gibt mindestens drei gute Gründe für die 8-Bit-Arithmetik. Wenn wir z.B. wissen,
daß wir mit Zahlen arbeiten, die nicht größer als eine 8-Bit-Zahl sind, warum soll
dann doppelt soviel Speicherplatz belegt werden als notwendig? Ein anderer
Grund für die Verwendung der 8-Bit-Arithmetik tritt auf, wenn wir mit einzelnen
Bytes arbeiten wollen.
Hier ist ein Beispiel dafür. Manchmal müssen wir Alphabetzeichen in Großbuchsta­
ben umwandeln. Das ist öfter notwendig, als Sie sich vielleicht vorstellen können.
Aus der Besprechung des PC-Zeichensatzes in Kapitel 4 erinnern wir uns, daß
Kleinbuchstaben im ASCII-Zeichensatz 32 Plätze hinter den Großbuchstaben lie­
gen. Ein Programm kann Kleinbuchstaben in Großbuchstaben umwandeln, indem
es einfach 32 von dem Byte abzieht, in dem der Code des Kleinbuchstaben
gespeichert ist. Und das wird mit einer 8-Bit-Subtraktion erledigt. Sie können sich
dies besser verdeutlichen, wenn Sie dieses einfache Kommando in B ASIC formu­
lieren:
PRINT "a", ASC ("a"), ASC ("a") 1 32, CHR$( ASC ("a") 1 32 )
Schließlich gibt es noch einen dritten guten Grund, warum unsere Computer 8-Bit­
Arithmetik zusätzlich zur 16-Bit-Arithmetik beherrschen: sie kann leicht als Bau­
stein für kompliziertere Operationen verwendet werden. Nehmen wir zum Beispiel
an, daß wir Zahlen, die größer als 16-Bit sind, addieren und subtrahieren wollen,
z.B. 24-Bit-Zahlen. Die Arbeitsweise des Computers entspricht dabei der unseri­
gen. Wtr zeigen das am Beispiel 123 plus 456. Wenn wir Zahlen wie diese addie­
ren, addieren wir Ziffer für Ziffer, von rechts beginnend: wir addieren 3 zu 6, erhal­
ten 9, fahren mit der nächsten Stelle links fort. Falls ein Zahlenpaar eine größere
Summe als zehn liefert, übertragen wir eine 1 zur nächsten Stelle. Computer arbei­
ten bei Verwendung der 8-Bit-Arithmetik genauso. Mit Hilfe der 8-Bit-Addition und
- Subtraktion können unsere Computer mit Zahlen beliebiger Größe arbeiten, Byte
für Byte. Überträge (Carries) von einer Byteposition zur nächsten werden durch ein
spezielles Verfahren geregelt (von dem wir gelegentlich hören werden); es ist das
sog. Carry Flag. (Mehr über Flags können Sie im Abschnitt 6.3 „Die Flags des PC"
erfahren.)
Aus der Besprechung der Datenformate in Kapitel 3 wissen wir, daß 8- und 16-Bit­
Zahlen als Zahlen ohne oder mit Vorzeichen behandelt werden können. Die Zahlen
mit Vorzeichen erlaubten auch negative Zahlen und die ohne Vorzeichen ermög­
lichten größere Zahlen. Unsere Mikroprozessoren können bei den Grundrechenar­
ten Addition und Subtraktion variieren, so daß unsere Programme zwischen 8oder 16-Bit-Größe, mit oder ohne Vorzeichen und dem Ignorieren oder der Berück­
sichtigung der Überträge aus vorhergehenden Operationen wählen können. All
diese Operationen betreffen das binäre Zahlensystem des Computers. Es gibt
auch einige Hilfsbefehle, durch die der Computer leicht mit dezimalen Zahlen
arbeiten kann.
6.1
Was der Mikroprozessor alles kann
59
Da unsere Computer mit fast allen möglichen Variationen der Addition und Sub­
traktion umgehen können, ist auch die Multiplikation und Division für sie relativ ein­
fach. Wir können 8- oder 16-Bit-Zahlen (1 Byte oder 1 Wort) multiplizieren und mit
oder ohne Vorzeichen arbeiten. Bei der Division wird immer ein 32-Bit-Dividend
(oder 1 Doppelwort) durch einen 8- oder 16-Bit-Divisor geteilt, mit oder ohne Vor­
zeichen.
Das sind die Grundrechenarten unseres Computers. Komplizierteres Rechnen wie zum Beispiel mit größeren Zahlen oder mit dem Gleitpunktformat - wird von
besonderen Unterprogrammen erledigt, die eine umfangreichere Rechnung aus
einfachen arithmetischen Bausteinen zusammensetzen. Die Arithmetik-Co-Pro­
zessoren, die 87er, können ebenfalls für einige spezielle Rechenarten eingesetzt
werden, wie wir in Abschnitt 6.2 sehen werden.
Das Untersuchen von Code
Wenn Sie mehr über den PC-Befehlssatz erfahren möchten, gibt es dafür verschie­
dene Wege, ohne daß Sie die oft schwierigen und langweiligen Details der Assem­
blerprogrammierung lernen müssen. Es erfordert etwas Intelligenz, die rätselhaften
Codes des Assemblers zu entschlüsseln, aber die Mühe lohnt sich.
Am meisten lernt man aus Assemblerprogrammen, die Kommentare des Program­
mierers enthalten und alles Wissenswerte erklären.
Wir nehmen deshalb ein ausführlich kommentiertes Usting der ROM-BIOS-Pro­
gramme, die im PC eingebaut sind. Diese Listings finden Sie in den Technischen
Handbüchern, die IBM für jedes Modell der PC-Familie herausgibt.
Wenn Sie kein Technisches Handbuch von IBM besitzen, können Sie Programme
auch dekodieren (von der unverständlichen Maschinensprache in die leichter les­
bare Assemblersprache), indem Sie einen „Disassembler" verwenden. Ein grober,
aber brauchbarer Disassembler ist im Programm DEBUG enthalten, das mit DOS
mitgeliefert wird. Ein Beispiel dafür, wie dies gemacht wird, finden Sie am Schluß
dieses Kapitels im Abschnitt „Blick in einen Interrupt-Verwalter".
Die Mikroprozessoren unserer Computer können mehr als Arithmetik, obwohl
Arithmetik ihre wichtigste Aufgabe ist. Andernfalls wären unsere Computer nur
bessere Rechenmaschinen. Was den Computer leistungsfähiger macht, ist eine
Vielzahl von Instruktionen, die als Computerlogik bekannt sind.
Mit Hilfe der logischen Operationen kann der Computer entscheiden, was in einer
bestimmten Situation zu tun ist. Es gibt drei Hauptarten logischer Operationen: Ver­
gleiche, bedingte Verzweigungen und Wiederholungen. Als Beispiel soll der Com­
puter die Rolle eines Parkwächters spielen.
Wenn die Parkgebühren beispielsweise 1 DM pro Stunde betragen, mit 5 DM Maxi­
mum, muß der Parkwächter unsere stündlichen Gebühren berechnen und dann
60
6 Der Mikroprozessor
vergleichen, ob sie über dem Maximum liegen. Der Parkwächter multipliziert 1 DM
mit der Stundenanzahl, die wir geparkt haben, und vergleicht dann mit dem Betrag
von 5 DM. In der Computerlogik ist dieser Vergleich der Test, und das Ergebnis die­
ses Tests wird in einigen besonderen Flags abgelegt, wie zum Beispiel dem Carry
Flag, das wir schon erwähnt haben. Der Test gehört zur Arithmetik (wie der Ver­
gleich von zwei Zahlen als Äquivalent zur Subtraktion einer Zahl von einer anderen,
um zu sehen, welche größer ist oder ob sie gleich groß sind), und die verwendeten
Fla:gs haben eine arithmetische Bedeutung. Das Zero Flag bedeutet, daß das
Ergebnis einer arithmetischen Operation Null (Zero) war oder daß zwei Zahlen, die
verglichen wurden, gleich waren. Ähnlich bedeutet das Vorzeichen-Flag, daß das
Ergebnis negativ war. Diese Flags, die das Ergebnis einer allgemeinen arithmeti­
schen Operation oder einer Vergleichsoperation sind, bilden die Grundlage für den
zweiten Teil der Computerlogik: die bedingten Verzweigungen.
Durch Verzweigungen kann der Computer seine Operationen situationsabhängig
steuern. Eine „Verzweigung" bedeutet einen Wechsel in der Schrittfolge, die der
Computer ausührt. Eine bedingte Verzweigung springt von einem Befehlssatz zu
einem anderen, abhängig von einer „Bedingung", zum Beispiel davon, wie die
Flags gesetzt sind. Unser Parkwächtercomputer berechnet uns, nach dem Ver­
gleich unserer stündlichen Parkgebühren mit dem Maximum von 5 DM, nur die 5
DM, auch wenn die stündlichen Gebühren höher waren.
Bedingte Verzweigungen werden in Programmen auf zwei verschiedene Arten ver­
wendet. Die Anweisung als bedingte Verzweigung kann gleich sein, aber der
Zweck, für den sie verwendet wird, ist ziemlich unterschiedlich. Eine Anwendung,
die wir schon gesehen haben, besteht einfach in der Auswahl zwischen zwei Ope­
rationswegen, z.B. die Überwachung der stündlichen Rate oder der Maximum­
grenze. Daneben kann ein Verzweigungsbefehl Schleifen kontrollieren, bzw. die
Wiederholung von Befehlsfolgen. Unser Parkwächtercomputer wird die Operatio­
nen für das Parken eines Autos so oft wiederholen, solange Parkplätze frei sind
und Parkkunden da sind. Der Parkwächter wird solange die Parkschleife ausführen
oder wiederholen, solange die Vergleiche und Verzweigungen zeigen, daß Autos
zum Parken und freie Parkplätze da sind.
Eine normale bedingte Verzweigung kann für beide Zwecke - die Auswahl zwi­
schen zwei Wegen oder die Schleifenkontrolle - verwendet werden. Da Schleifen
für Computeroperationen sehr wichtig sind, gibt es auch besondere komfortable
Anweisungen speziell für Schleifen, nämlich die Wiederholungsanweisungen.
Manche davon dienen der Wiederholung einer Anweisungsfolge und andere wie­
derholen nur eine einzige Anweisung, eine Verbundanweisung, die mit überra­
schender Schnelligkeit und Effizienz ausgeführt werden kann.
Diese besprochenen Anweisungen sind nur ein kleiner Ausschnitt aus dem ge­
samten Kommandorepertoire, und sie sollten Ihnen nur die Grundbausteine zei­
gen, aus denen unsere Programme zusammengebaut sind. Wir wollen nun sehen,
wie schnell unser Computer diese Anweisungen ausführen kann.
Ein Standard-PC mit dem 8088-Mikroprozessor kann zwei Zahlen in einer million­
stel Sekunde addieren. Das Multiplizieren zweier Zahlen kann er etwa 40.000 mal
6.2 Arithmetikkünstler: die 87er
61
pro Sekunde ausführen. Eine bedingte Verzweigung braucht etwa eine halbe mil­
lionstel Sekunde. Im Durchschnitt kann der Standard-PC circa eine viertel Million
Anweisungen pro Sekunde ausführen. Der wesentlich schnellere AT mit dem 286Mikroprozessor addiert zwei Zahlen zweimillionenmal in der Sekunde, oder unge­
fähr zweimal so schnell wie der PC. Multiplizieren kann er etwa 300.000 mal pro
Sekunde, oder circa siebenmal so schnell wie der PC. Bedingte Verzweigungen
führt er etwa 600.000 mal in der Sekunde aus. Im Durchschnitt leistet der AT viel­
leicht eine halbe Million Instruktionen pro Sekunde, ungefähr fünf- oder sechsmal
soviel wie der Standard-PC.
Egal ob PC oder AT, es sind jedenfalls beeindruckende Rechnerleistungen, die in
einer Sekunde erbracht werden können. Jedoch müssen wir uns bewußt sein, daß
die einfachsten Aufgaben für unseren Computer aus hunderten und tausenden
von einzelnen Detailanweisungen bestehen. Da der Computer Millionen von
Anweisungen in Sekunden bearbeiten kann, sind unsere Aufgaben trotzdem
schnell erledigt.
6.2
Arithmetikkünstler: die 87er
Die Mikroprozessoren der PC-Familie sind so gestaltet, daß ihre Leistungsstärke
durch andere Prozessoren erhöht wird, und zwar auf zweierlei Weise. Beispiels­
weise können, was wir bei der PC-Familie bisher noch nicht gesehen haben, meh­
rere Mikroprozessoren (etwa zwei oder mehrere 8088er) zusammengeschlossen
werden. Oder man kann spezielle „Co-Prozessoren" oder Hilfsprozessoren für Auf­
gaben einbauen, für die der Hauptmikroprozessor nicht besonders geeignet ist. Es
gibt zwei verschiedene Typen von Co-Prozessoren für die PCs. Ein Typ ist auf die
Ein-/Ausgabeverarbeitung spezialisiert und nicht in der PC-Familie vertreten. Der
andere Typ ist auf schnelle und sichere Gleitpunktarithmetik spezialisiert. Dies sind
die „87"er-Bausteine. Der 8087 ist für den normalen PC-Zweig der PC-Familie
gedacht und der 80287 für den AT-Zweig. Die 87er sind Numerische Datenprozes­
soren (NDP von Numeric Data Processor) oder Arithmetik-Co-Prozessoren.
Der Hauptprozessor kann also die Verarbeitung von Zahlen den 87ern überlassen,
sofern ein 87 im PC installiert ist und unsere Software den 87 ansprechen kann.
Fast alle Mitglieder der PC-Familie können mit einem 87 arbeiten, aber er ist nur
selten installiert, nämlich nur dann, wenn er wirklich vorteilhaft eingesetzt werden
kann.
Man kann zwei Kategorien von Programmen unterscheiden, die den 87 anspre­
chen. Das sind einmal Programme, die ohne den 87 gar nicht eingesetzt werden
können, wie etwa die IBM-Version der Programmiersprache APL. Dazu gehören
auch Programme, die mehr für den technischen und wissenschaftlichen Einsatz
konzipiert sind. Die andere Kategorie sind Programme, die den 87 zwar nicht vor­
aussetzen,
aber
vorteilhaft einsetzen
können.
Viele
Tabellenkalkulationspro­
gramme, wie 1-2-3 und Framework, gehören hierzu. Da immer mehr Compiler den
87 unterstützen, ohne daß der Programmierer gefordert wird, sehen wir die Zahl
der Programme wachsen, die aus dem 87 Nutzen ziehen.
62
6 Der Mikroprozessor
Sie sollten nicht erwarten, daß die Installation eines 87 automatisch die Geschwin­
digkeit Ihrer Programme erhöht. Erstens haben viele Programme einfach keine Ver­
wendung für einen 87, zum Beispiel Textverarbeitungsprogramme. zweitens,
haben sogar Programme, von denen wir glauben, daß sie den 87 besonders aus­
nützen, keine umfangreiche Verwendung dafür. Zum Beispiel weiß Framework, wie
man einen 87 einsetzt, aber es verwendet ihn nicht für die normalen Tabellenkal­
kulationen, sondern nur für exotische Belange wie die Exponentialrechnung.
Was kann ein 87-Arithmetikprozessor oder Numerischer Datenprozessor für uns
leisten? Grundsätzlich werden unsere Berechnungen damit sowohl schneller als
auch genauer. Die Geschwindigkeit resultiert aus der Tatsache, daß die 87er ihre
Ergebnisse etwa 50 bis 100 mal schneller produzieren, als Unterprogramme die
gleichen Berechnungen mit den konventionellen Arithmetikbefehlen des regulären
Mikroprozessors anstellen können. (Diese spektakuläre Geschwindigkeitssteige­
rung gilt nur für die reinen Berechnungen selbst. Wenn Sie sie mit den Routinear­
beiten eines Programms kombinieren und mit den Befehlen zur Übermittlung an
den 87, dann schrumpft der Vorteil auf die fünf- bis zwanzigfache Geschwindigkeit.
Das ist zwar weniger, aber noch sehr beeindruckend.)
Die zusätzliche Genauigkeit wird erreicht, weil die 87 sämtliche Berechnungen im
10-Byte-Format anstellen, das wir kurz in Kapitel 3 erwähnt haben. Der Hauptpro­
zessor kann dem 87 Daten in einer Vielzahl von Formaten übermitteln, die wir
schon erwähnt haben: lange und kurze Integer, drei Gleitpunktformate und sogar
ein dezimales Format. Die 87er arbeiten aber tatsächlich im längsten Gleitpunkt­
format von 10 Bytes Länge (das im Fachjargon temporäres Realformat genannt
wird), was bedeutet, daß alle Berechnungen der 87er in höchstmöglicher Genau­
igkeit ausgeführt werden. Oft spielt das im Endeffekt keine Rolle, aber bei kompli­
zierten und langen Berechnungen, die eine hohe Präzision erfordern, kann der 87
genauere Ergebnisse liefern.
Die 87er haben noch einen weiteren Vorzug. Sie bieten einige besondere Eigen­
schaften, die in zweierlei Hinsicht weit über die normalen Grenzen der Gleitpunkt­
arithmetik hinausgehen. Beispielsweise hat der 87 sieben konstante Werte fest
gespeichert, Werte wie etwa Phi, die allgemein bei wissenschaftlichen Berechnun­
gen gebraucht werden. Diese Werte sind für Programmierer bequem und können
sicherstellen, daß Standardwerte von höchster Genauigkeit zur Repräsentation
dieser sieben mathematischen Quantitäten verwendet werden. Die andere beson­
dere Eigenschaft der 87er besteht darin, daß sie neben den vier Standardgrundre­
chenarten (addieren, subtrahieren, multiplizieren und dividieren) noch fünf weitere
sogenannte transzendentale Rechenarten für trigonometrische und logarithmische
Berechnungen beherrschen. Solche Anweisungen reduzieren den Programmier­
aufwand für wissenschaftliche und technische Berechnungen und gewährleisten
Standard und Zuverlässigkeit.
Die 87er werden Co-Prozessoren genannt, weil sie zur Unterstützung des Haupt­
prozessors eingesetzt werden. Es ist interessant, zu wissen, wie dies funktioniert.
Die 87er beginnen nur zu arbeiten, wenn der Mikroprozessor ein besonderes
Signal für sie erzeugt. Der Hauptprozessor benützt eine besondere Anweisung, die
6.2 Arithmetikkünstler: die 87er
63
ESCAPE heißt, um dem 87-Co-Prozessor ein Kommando zu übermitteln. (Ver­
wechseln Sie übrigens dieses besondere ESCAPE-Kommando nicht mit dem
Escape-Zeichen mit dem dezimalen Code 27, das wir in Kapitel 4 als Teil des PC­
Zeichensatzes behandelt haben.) Das ESCAPE-Kommando des Hauptprozessors
beinhaltet den Anweisungscode für eine beliebige Instruktion, die der 87 ausfüh­
ren soll. Wenn der 87 seine Anweisung erhält, beginnt er mit ihrer Ausführung un­
abhängig vom Hauptprozessor (der damit frei bleibt, um entweder auf die Ergeb­
nisse des 87 zu warten oder selbst weitere Arbeiten auszuführen). Die Zusammen­
arbeit der beiden Bausteine geschieht wie folgt:
D Der Mikroprozessor aktiviert den 87 mit einem ESCAPE-Kommando.
D Der 87 beginnt zu arbeiten und gibt den Hauptprozessor frei.
D Der Mikroprozessor fährt mit anderen Arbeiten fort (z.B. mit der A ufbereitung
von Daten für die nächste 87-Anweisung), wenn etwas ansteht; andernfalls fährt
er mit dem nächsten Schritt fort.
D Wenn der Mikroprozessor für die Ergebnisse des 87 bereit ist, führt er eine
FWAIT-Anweisung aus, die auf die Beendigung der T ätigkeiten des 87 wartet
(falls diese noch nicht erfolgt ist).
D Nach dem FWAIT kann der Mikroprozessor die Rechenergebnisse des 87
sicher verwenden.
Diese Schrittfolge erscheint unbequem, aber das sieht nur so aus. Das einzig
Besondere bei solchen Assemblerprogrammen sind die ESCAPE-Anweisungen
anstelle der regulären Arithmetikanweisungen und die FWAIT-Befehle, die einge­
fügt werden müssen, damit die Rechenergebnisse verwendet werden können.
Natürlich müssen sich nur Assemblerprogrammierer mit diesen Details befassen.
Als Anwender solcher Programme brauchen wir uns um den 87 nicht zu kümmern
und können lediglich seine Vorteile genießen.
Die Konstanten und besonderen Rechenfähigkeiten des 87
Wie wir schon erwähnt haben, ist in den 87ern etwas mehr als nur leistungsfähige
Gleitpunktarithmetik eingebaut. Sie verfügen auch über spezielle Konstanten und
transzendentale Operationen, die besonders für die Mathematik und den wissen­
schaftlichen Bereich hilfreich sind, und wir wollen sie im folgenden kurz erwähnen.
Es gibt sieben Konstanten. Zwei sind ganz einfach: 0 und 1. Sie ersparen uns die
Mühe (und den Platz), diese Werte bei den Programmdaten abzuspeichern. Ein
Wert, den jeder kennt, ist Phi, das Verhältnis vom Durchmesser zum Umfang eines
Kreises. Die anderen vier liefern Grundwerte, die für den Logarithmus benötigt wer­
den, entweder in der Basis 10 oder der „natürlichen" Basis, die die Mathematiker e
nennen. Die Werte sind log2 10 (der Logarithmus von 10 zur Basis 2), log2 e, log10 2
und log0 2.
64
6 Der Mikroprozessor
Die besonderen transzendentalen Operationen der 87er werden für die Berech­
nungen von Funktionen benötigt, die nicht aus den gewöhnlichen vier Grundre­
chenarten gewonnen werden können. Transzendentale Funktionen werden norma­
lerweise durch Näherungsformeln berechnet, aber diese eingebauten fünf Funktio­
nen liefern die Grundlage für die Ausführung vieler verschiedener transzendentaler
Funktionen, ohne daß man sich mit Näherungsformeln abmühen muß (die Stan­
dardnäherungen sind in die 87er eingebaut). Dies sind die fünf Funktionen:
1.
partieller Tangens
2.
partieller Arcustangens
3.
2x -1 (2 hoch
4.
Y
5.
Y
*
log2
X
*
log2
(X
x, minus eins)
+ 1)
Diese fünf Funktionen erscheinen den meisten Lesern vielleicht seltsam - auch
denen mit deutlichen Erinnerungen an den Mathematikunterricht -, aber wir kön­
nen versichern, daß sie wirklich den Kern für die wichtigsten transzendentalen
Funktionen darstellen.
6.3
Speicher,
Ein-/Ausgabekanäle, Register und Stacks
Bisher haben wir diejenigen Operationen besprochen, die unser Mikroprozessor
selbst und mit Hilfe des 87-Arithmetikprozessors ausführen kann. In diesem
Abschnitt befassen wir uns mit dem Speicher, Ein-/Ausgabekanälen, Registern und
Stacks, die dem Mikroprozessor bei seiner Arbeit helfen.
Der Mikroprozessor hat nur drei Möglichkeiten, mit den Schaltungen um ihn herum
zu kommunizieren. Eine der drei Möglichkeiten ist die Kommunikation mit den 87Coprozessoren durch das ESCAPE-Kommando, das schon in Abschnitt
6.2
behandelt wurde. Die anderen beiden sind üblicher und spielen eine Schlüssel­
rolle bei den Operationen des Computers. Es sind der Arbeitsspeicher des Com­
puters und die Ein-/Ausgabekanäle.
In Kapitel
2 haben wir gesehen, daß der Arbeitsspeicher der Platz ist, an dem der
Mikroprozessor seine Programmanweisungen und auch seine Daten findet.
Sowohl Daten als auch Anweisungen sind im Arbeitsspeicher gespeichert, und der
Mikroprozessor pickt sie sich von dort heraus. Der Arbeitsspeicher befindet sich in­
tern im Computer, und seine wesentliche Funktion besteht darin, einen Arbeits­
raum für den Mikroprozessor zur Verfügung zu stellen. Da der Speicher so wichtig
ist, werden wir ihn in Kapitel 7 genauer untersuchen.
Wenn der Speicher für den Mikroprozessor so wichtig ist, muß es für ihn auch
einen Weg geben, mit der Welt um ihn herum und seinem Speicher in Verbindung
zu treten, und dafür gibt es die Ein-/Ausgabekanäle. Ein Ein-/Ausgabekanal ist so
6.3 Speicher, Ein-/Ausgabekanäle, Register und Stacks
65
etwas wie eine Telefonleitung, über die der Computer anrufen kann. Jedes Teil der
Schaltungen, mit dem der Mikroprozessor kommunizieren muß, hat eine Ein-/Aus­
gabekanalnummer, und der Mikroprozessor benützt diese Nummer wie eine Tele­
fonnummer. Zum Beispiel wird eine Nummer verwendet, um die Tastatur anzuspre­
chen, eine andere für den programmierbaren T imer, der in Abschnitt 5.3 erwähnt
wurde. Die Steuerung der Diskettenlaufwerke und der Hin- und Hertransport von
Daten wird ebenfalls über Ein-/Ausgabekanäle erledigt. Auch der Bildschirm wird
durch Ein-/Ausgabekanäle gesteuert, aber die Daten, die auf dem Bildschirm
erscheinen, werden vom Arbeitsspeicher und nicht durch Ein-/Ausgabekanäle
behandelt, wie wir in Kapitel 11 sehen werden.
Der Mikroprozessor verfügt über 65.536 Ein-/Ausgabekanalnummern. Nicht alle
davon sind angeschlossen. Die Gestalter eines Mikrocomputers entscheiden,
welche Ein-/Ausgabekanalnummern für welche Zwecke verwendet werden, und
die Schaltungselemente des Computers sind so verdrahtet, daß sie auf diese
Nummern ansprechen. Der Bus des Computers (den wir schon in Kapitel 5 behan­
delt haben) ist einer Telefonvermittlung ähnlich; wenn der Mikroprozessor mit
einem Schaltungsteil sprechen muß, meldet er die Ein-/Ausgabekanalnummer an
den Bus, und das entsprechende Teil antwortet.
Der Mikroprozessor hat zwei spezielle Assemblerkommandos, die für die Kommu­
nikation mit Ein-/Ausgabekanälen eingesetzt werden. Das OUT-Kommando sendet
Daten zu einer Ein-/Ausgabekanalnummer, und das IN-Kommando fordert Daten
von einer Ein-/Ausgabekanalnummer an. Wenn wir normalerweise über Assem­
bleranweisungen sprechen, wie zum Beispiel über diese IN- und OUT-Komman­
dos, können wir mit ihnen nicht experimentieren, außer wir arbeiten direkt mit dem
Assembler. Aber im Falle dieser beiden Anweisungen hat BASIC zwei Komman­
dos, die INP (nicht IN, sondern INP) und OUT heißen, die genau das Gleiche wie
die Assembleranweisungen machen. Wir können durch sie mit den Ein-/Ausgabe­
kanälen des Computers experimentieren, obwohl das nicht sehr einfach ist. Als
Beispiel zeigen wir ein kurzes Programm, das einen Ton des PC einfach durch die
Verwendung der Ein-/Ausgabekanäle ein- und ausschaltet (wir werden in einem
späteren Kapitel mehr darüber erfahren):
10 SOUND 500,1
20 X= CINP (97) MOD 4) * 4
30 PRINT "DRUECKEN SIE EINE BELIEBIGE TASTE, UM DIESES HOELLISCHE
GERAEUSCH ZU BEENDEN"
40 OUT 97, X
+
3 ' Ton einschalten
50 FOR I = 1 TO 250
:
NEXT I ' Laufzeit
60 OUT 97, X ' Ton ausschalten
70 FOR I = 1 TO 250
:
NEXT I ' Laufzeit
80 IF INKEYS = "" THEN GOTO 40
Probieren Sie dieses Programm aus, und Sie werden Ihre ersten Erfahrungen mit
den Ein-/Ausgabekanälen des PC sammeln.
Abgesehen von einigen Spezialfällen müssen wir bei unserer Programmierung
nicht direkt mit Ein-/Ausgabekanälen arbeiten. Ein-/Ausgabekanäle sind fast nur
für die internen Steuerprogramme des Computers, das BIOS, reserviert. Wir müs-
66
6 Der Mikroprozessor
sen in Verbindung mit den Ein-/Ausgabekanälen lediglich verstehen, daß damit
der Mikroprozessor die Kommunikation mit anderen Schaltungselementen des
Computers abwickelt.
Im folgenden wollen wir noch Register und Stacks besprechen. Das sind die Werk­
zeuge, die der Mikroprozessor für die Ausführung seiner Arbeit zur Verfügung hat.
Wir beginnen mit den Registern.
Register sind im Prinzip kleine besondere Speicher, die der Mikroprozessor für
einige spezielle Zwecke einsetzen kann. Register sind dem Hauptspeicher des
Computers in einem Punkt ähnlich. Es handelt sich um Speicherplätze, in denen
Daten gespeichert werden können, solange der Mikroprozessor damit arbeitet. Der
Hauptspeicher des Computers ist dagegen groß. Er liegt außerhalb des Mikropro­
zessors und kann für alles Mögliche verwendet werden. Außerdem wird er durch
Speicheradressen angesprochen. Die Register unterscheiden sich davon in jedem
dieser Punkte.
Die Register sind eine Folge von vierzehn kleinen 16-Bit-Plätzen, in denen Zahlen
gespeichert werden können. Jedes von ihnen ist ein wesentlicher, interner Teil des
Mikroprozessors. Die Register sind eigentlich kleine Notizzettel, auf denen der
Computer Berechnungen anstellt und abspeichert. Einige von ihnen sind einem
besonderen Zweck gewidmet, während andere eine breitere Anwendung haben.
Wir wollen sie in einem kurzen Überblick vorstellen. Details sind nur für den
. Assemblerprogrammierer wichtig.
Die erste Gruppe von Registern wird Allzweckregister genannt, und sie werden
wirklich nur als Schmierzettel für Berechnungen benützt. Es gibt vier davon, die AX,
BX, CX und DX heißen. Jedes von ihnen kann von unseren Programmen als vor­
übergehender Speicherbereich und Schmierzettel für Berechnungen eingesetzt
werden. Jedes dieser Register hat eine Größe von 16 Bits. Wenn wir nur mit der
Hälfte eines solchen Registers arbeiten wollen, ist das kein Problem, weil es in ein
höherwertiges und niederwertiges Byte unterteilt ist, die AH und AL, BH und BL
usw. genannt werden. Ein Großteil der Arbeit, die in unseren Computern erledigt
wird, findet in diesen Allzweckregistern statt.
Die nächste Gruppe von vier Registern hilft dem Mikroprozessor, daß er sich im
Arbeitsspeicher
des
Computers
zurechtfindet.
Sie
werden
Segmentregister
genannt und ermöglichen jeweils den Zugang zu einem Bereich oder Segment
von 64K Größe. Das Codesegment-oder CS-Register zeigt an, wo sich ein Pro­
gramm im Speicher befindet. Das Datensegment- oder OS-Register lokalisiert
Daten, die ein Programm benützt. Das Extrasegment- oder ES-Register ergänzt
das Datensegmentregister. Das Stacksegment- oder SS-Register lokalisiert den
Stack des Computers. In Kapitel 7 befassen wir uns mit diesen Registern genauer.
Während die Segmentregister dem allgemeinen Zugang zu einem 64K-großen
Speicherstück dienen, wird die letzte Gruppe von Registern dazu verwendet, auf
spezielle Bytes im Speicher zu zeigen, und zwar in Verbindung mit einem Seg­
mentregister. Es gibt fünf von diesen Registern, wobei jedes für einen besonderen
Zweck eingesetzt wird. Der Befehlszeiger, IP (von lnstruction Pointer), auch Pro-
6.3 Speicher, Ein-/Ausgabekanäle, Register und Stacks
Abb. 6-1:
AX
AH
AL
BX
BL
ex
BH
CH
CL
DX
DH
DL
67
Die Register des PC
grammzähler genannt, PC (von Program Counter), sagt dem Mikroprozessor, an
welcher Stelle des aktuell laufenden Programms er sich befindet. Der Stackzeiger,
SP (von Stack Pointer), und der Basiszeiger, BP (von Base Pointer), helfen, die fort­
schreitende Arbeit zu verfolgen, die im Stack gespeichert ist (das besprechen wir
in Kürze). Der Quellenindex, SI (von Source Index), und Zielindex, DI (von Destina­
tion Index), unterstützen unsere Programme beim Verschieben größerer Daten­
mengen von einem Platz auf einen anderen.
Schließlich gibt es noch das Flagregister, das die Zustandsflags speichert, über die
wir schon früher gesprochen haben. Die verschiedenen Flags sagen unseren Pro­
grammen, in welchem Zustand sich der Computer gerade befindet, welche Ergeb­
nisse arithmetische Operationen gebracht haben, ob Interrupts erlaubt sind, und
ähnliche Statuszustände.
Die Flags des PC
Die Mikroprozessoren der PCs werden größtenteils durch eine Reihe von 1-Bit­
Flags gesteuert, von denen jedes einen besonderen Zustand im Computer signali­
siert oder setzt. Die Flags arbeiten unabhängig voneinander, aber sie sind der
Bequemlichkeit halber im Flagregister zusammengefaßt. Einzelne Flags können
mit besonderen Anweisungen untersucht und gesetzt werden, und die gesamte
Flaggruppe kann mit einem Anweisungspaar, das das ganze Flagregister liest
oder beschreibt, ausgelesen oder gesetzt werden.
68
6 Der Mikroprozessor
Hier folgt die Beschreibung der einzelnen Flags. Es gibt insgesamt neun Standard­
flags. Sechs zeigen die Ergebnisse von Arithmetik- und Vergleichsoperationen an:
das Zero-Flag, ZF, wird gesetzt, wenn das Ergebnis Null ist (oder ein Vergleich
gleich ausfällt); das Vorzeichenflag, SF (von Sign Flag) zeigt ein negatives Ergeb­
nis an; das Carry-Flag, CF, wird bei einem Übertrag in die nächste Stelle gesetzt;
das Carry-Zusatzflag, AF (von Auxiliary Carry Flag), zeigt einen Übertrag von den
ersten vier Bits an (der für die Simulation dezimaler Operationen benötigt wird);
das Überlauf-Flag, OF (von Overflow Flag), wird bei zu großen Ergebnissen
gesetzt; und schließlich das Paritätsflag, PF, zeigt die gerade oder ungerade Parität
eines Ergebnisses an.
Die anderen drei Flags werden für Steuerzwecke verwendet. Das Richtungsflag,
DF (von Direction Flag), steuert, in welcher Richtung wiederholte Operationen (wie
zum Beispiel eine byteweise Datenbewegung) ablaufen, von rechts nach links
oder von links nach rechts. Das lnterrupt-Flag, IF, kontrolliert, ob Interrupts zugelas­
sen sind oder ob sie nur zeitweilig zurückgehalten werden. Das Trap-Flag, T P, ver­
anlaßt den Computer, einen speziellen „ Trap"-lnterrupt zu generieren, nachdem er
eine einzige Anweisung ausgeführt hat. Dies ermöglicht es, ein Programm in ein­
zelnen Schritten ablaufen zu lassen, so daß man die schrittweisen Ergebnisse
jeder einzelnen Anweisung erhält.
Zusätzlich zu diesen neun Flags hat der weiterentwickelte 286-Mikroprozessor, der
im AT-Zweig der Familie verwendet wird, noch zwei besondere Flags. Eines wird
NT (von Nested Tasks) genannt und für Verschachtelungen verwendet, und das
andere ist ein Zwei-Bit-Flag, das IOPL (von 1/0 Privilege Level) heißt und die privi­
legierte Ebene der Ein-/Ausgabe steuert.
Sie können die Flags und all die anderen Register anschauen und mit ihnen her­
umspielen, indem Sie das R-Kommando des DEBUG-Programms von DOS ver­
wenden. Wenn Sie zum Beispiel DEBUG aufrufen und dann R und »enter« drük­
ken, zeigt DEBUG die aktuellen Registerinhalte und die Besetzungen aller Flags.
Noch ein Werkzeug untersteht dem Kommando des Mikroprozessors und hilft ihm
bei der Ausführung seiner komplizierten Operationen. Wenn der Computer arbei­
tet, vergräbt er sich immer mehr in einem komplizierten Kellerspeicher und er muß
deshalb feststellen können, wo er ist und was er macht. Wenn der Computer zwi­
schen seinen Arbeitsteilen hin- und herwechselt, darf er dabei nicht die Übersicht
verlieren. Der Stack (Kellerspeicher) ist ein spezieller Speicherbereich, der alle
aktuellen Informationen darüber aufzeichnet, was der Computer gerade gemacht
hat. Wenn der Computer in ein Unterprogramm springt oder eine Aufgabe vorüber­
gehend unterbricht, um sich einer anderen zu widmen, wird im Stack notiert, „wo
ich gerade war und was ich gemacht habe", so daß der Computer zur vorherge­
henden Aufgabe ohne Schwierigkeiten zurückkehren kann. Wenn sich der Com­
puter einer neuen Aufgabe zuwendet, wird die Information darüber im obersten Teil
des Stacks gespeichert, der angibt, was aktuell gilt. Wenn der Computer später zur
6.4 Interrupts - die treibende
Kraft
69
vorhergehenden Arbeit zurückkehrt, wird die andere Information aus der Stack­
spitze herausgenommen, und die vorherige Arbeit erscheint nun als erstes im
Stack.
Wir haben nun besprochen, was unsere Mikroprozessoren alles können, ihr
Befehlssatz und einige Werkzeuge, die ihnen bei ihrer Arbeit helfen, wurden
gezeigt, wie z.B. der Arbeitsspeicher, die Stacks usw„ Eine wichtige treibende Kraft
unseres Computers haben wir allerdings noch kaum erwähnt, nämlich die Inter­
rupts.
6.4
Interrupts
-
die treibende Kraft
Eine wichtige Eigenschaft, in der sich Computer von anderen Maschinen unter­
scheiden, ist die Tatsache, daß Computer die Fähigkeit haben, auf eine unvorher­
sehbare Vielfalt von Arbeit einzugehen. Der Schlüssel dazu sind die sogenannten
Interrupts.
Durch die lnterrupteigenschaft kann der Computer eine begonnene Arbeit zurück­
stellen und auf etwas anderes übergehen, das auf dem interruptauslösenden
Moment beruht, wie z.B. das Drücken einer Taste auf der Tastatur.
Durch diese Fähigkeit kann der Computer sehr effektiv arbeiten, was sonst kaum
möglich wäre. Der Computer soll einerseits mit möglichst viel Arbeit ausgelastet
sein, andererseits soll er aber dauernd auf unsere Anforderungen reagieren kön­
nen, wie z.B. auf das Drücken von Tasten auf der Tastatur. Durch die lnterruptfähig­
keit muß der Computer nicht permanent überprüfen, ob z.B. auf der Tastatur eine
Aktivität stattfindet, wofür er seine Arbeit immer wieder unterbrechen müßte. Inter­
rupts ermöglichen es dem Mikroprozessor jedoch, auf Tastenanschläge zu reagie­
ren - oder auf irgendetwas anderes, das Aufmerksamkeit erfordert -, obwohl er
gerade an etwas anderem arbeitet.
Die lnterruptfähigkeit ist in den Mikroprozessor des Computers eingebaut, kombi­
niert mit einem geeigneten Instrument, die unterbrochene Arbeit unter Kontrolle zu
halten, während der Interrupt ausgeführt wird. Der Stack des Mikroprozessors, den
wir schon in Abschnitt 6.3 besprochen haben, wird auf folgende Weise verwendet:
wenn ein Interrupt passiert, wird das, was der Computer gerade macht, im Stack
gespeichert, so daß die Arbeit nach Beendigung der Unterbrechung genau dort
wiederaufgenommen werden kann, wo sie liegengelassen wurde. Dies ist eine der
vielen Anwendungen des Stack und sie ist wichtig. Das ganze lnterruptprinzip
könnte ohne den Stack als Aufbewahrungsort für unterbrochene Arbeit nicht funk­
tionieren.
Jeder Teil des Computers, der Anforderungen an den Mikroprozessor stellen kann,
hat eine eigene lnterruptnummer. Die Tastatur hat ihren eigenen Interrupt, so daß
der Mikroprozessor jedesmal merkt, wenn wir eine Taste drücken (oder, und das ist
interessant, eirie gedrückte Taste auslassen), und auf den Interrupt der Tastatur ein­
geht. Die interne Uhr des PC hat ebenfalls einen eigenen Interrupt, um den Pro­
grammen für die Uhr des Computers jedes „Ticken" mitzuteilen, was etwa 18 mal
70
6 Der Mikroprozessor
pro Sekunde passiert. Das hört sich nach unglaublich vielen Unterbrechungen an,
und wir könnten vielleicht denken, daß 18 Unterbrechungen pro Sekunde den
Computer vollständig blockieren. Der Mikroprozessor kann jedoch Zehntausende
von Anweisungen zwischen jedem Ticken ausführen. Die Uhreninterrupts nehmen
nicht viel von der Zeit des Mikroprozessors in Anspruch. Auch die Plattenlaufwerke
und Drucker unseres Computers haben eigene lnterruptnummern. Die Platten
signalisieren mit ihren Interrupts, daß sie die Arbeit beendet haben, mit der sie ein
Programm beauftragt hat. Die Drucker zeigen damit an, daß sie kein Papier mehr
haben.
Es ist interessant und etwas seltsam, daß Interrupts im ursprünglichen Konzept
eines Computers nicht enthalten waren. In der Tat sind Computer jahrzehntelang
eingesetzt worden, bevor sich die lnterruptfähigkeit durchgesetzt hat. Heute kann
man sich nur schwer vorstellen, daß ein Computer ohne die Interrupts sinnvoll
arbeiten kann.
Obwohl der Mikroprozessor mit Interrupts auf äußere Ereignisse eingehen kann wenn z.B. der Drucker kein Papier mehr hat -, ist das nicht ihre einzige Anwen­
dung. Das lnterruptkonzept ist so nützlich geworden, daß es für eine Vielzahl ande­
rer Zwecke innerhalb des Computers angepaßt wurde. Es gibt im wesentlichen drei
verschiedene lnterruptarten, die im PC eingesetzt werden. Die erste haben wir
schon besprochen: ein Interrupt, der von einem anderen Schaltungselement des
Computers kommt und etwas meldet, das Aufmerksamkeit erfordert, wird Hardwa­
re-Interrupt genannt. Aber es gibt noch zwei weitere lnterruptarten, die sich auf die
Softwareprogrammierung beziehen.
Wenn der Computer eines unserer Programme abarbeitet, kann manchmal etwas
schiefgehen, entweder mit dem Programm selbst oder mit den Programmdaten.
Das läßt sich etwa damit vergleichen, wenn Sie diesen Satz lesen und plötzlich nur
noch Hieroglyphen finden, mit denen Sie nichts anfangen können. Der Mikropro­
zessor könnte sich in Anweisungen verfangen, die keinen Sinn ergeben, oder
Daten erhalten, die ihn durcheinander bringen (wie zum Beispiel die Division
durch Null). Wenn das passiert, erzeugt der Mikroprozessor einen speziellen Inter­
rupt.
Die letzte Kategorie von Interrupts sind die Software-Interrupts. In diesem Fall
signalisieren Programme, daß sie Dienstleistungen von anderen Programmteilen
des Computers brauchen. Die Dienstprogramme des ROM-BIOS haben wir schon
besprochen. Die Anwenderprogramme unseres Computers müssen die Dienstlei­
stungen des BIOS anfordern können, und dazu dienen die Software-Interrupts.
Software-Interrupts funktionieren genauso wie die anderen lnterruptarten. Der ein­
zige Unterschied bei ihnen ist der Auslöser des Interrupts. In diesem Falle werden
die Software-Interrupts absichtlich von unseren Programmen erzeugt und treten
nicht unerwartet auf. Es gibt eine spezielle Assembleranweisung, die INT heißt und
von unseren Programmen dazu benützt wird, einen Interrupt anzufordern. (Im
Abschnitt „lnterruptarten anders gesehen" können Sie mehr über die große Vielfalt
von lnterruptanwendungen erfahren.)
6.4 Interrupts - die treibende Kraft
71
lnterruptarten anders gesehen
Es gibt eine größere Vielzahl von lnterrupttypen und -anwendungen, als Sie sich
vielleicht vorstellen können. Wir haben gerade drei Kategorien von Interrupts vor­
gestellt: Hardware-, Ausnahme- und Software-Interrupts. Aber es gibt noch eine
andere Art, Interrupts zu betrachten, die der Art und Weise, wie sie in der PC-Fami­
lie verwendet werden, näherkommt. Bei dieser Betrachtungsweise gibt es sechs
verschiedene Arten von Interrupts.
Zuerst gibt es die Intel-Hardware-Interrupts. Diese Interrupts sind im Mikroprozes­
sor durch den Hersteller Intel festgelegt. Sie beinhalten den Interrupt für die Divi­
sion durch Null, den wir vorher schon erwähnt haben, einen Interrupt für einen
Spannungsausfall und andere. Diese Interrupts hat jeder Computer, der einen Intel
8088-Mikroprozessor verwendet, ganz egal, wie sehr er sich von der PC-Familie
unterscheidet.
Die nächsten sind die von IBM definierten Hardware-Interrupts für den PC. Diese
Interrupts melden dem Mikroprozessor Hardware-Ereignisse (zum Beispiel „Druk­
ker ohne Papier" oder „Platten-Prozeß beendet"). Die PC-Hardware-Interrupts sind
im wesentlichen in der ganzen PC-Familie zu finden.
Dann gibt es noch die PC-Software-Interrupts. Sie sind ebenfalls von IBM festge­
legt worden und gelten für die ganze PC-Familie. Mit ihnen kann man Teile der ein­
gebauten ROM-BIOS-Software aktivieren, um zum Beispiel eine Nachricht auf
dem Bildschirm auszugeben.
Ferner gibt es auch DOS-Software-Interrupts. Im Gegensatz zu den drei vorher­
gehenden Typen sind diese Interrupts nicht in den Computer eingebaut. Sie
werden durch Software ergänzt, in diesem Fall durch das Betriebssystem DOS.
Da wir normalerweise immer dasselbe Betriebssystem verwenden, sind diese
Interrupts immer vorhanden, obwohl sie nicht grundsätzlich zum eigentlichen
Computer gehören. Diese Interrupts werden durch interne DOS-Routinen definiert
und behandelt (oder durch ein anderes Betriebssystem, das wir verwenden
könnten).
Eine weitere Kategorie sind die Anwender-Software-Interrupts, die vorübergehend
von dem Programm, das wir laufen lassen, festgelegt werden (einschließlich
BASIC, das nur wenige eigene spezielle Interrupts verwendet). Diese Interrupts
werden von den Anwenderprogrammen, die wir einsetzen, definiert (und behan­
delt).
Die sechste und letzte Kategorie ist etwas seltsam, weil sie nicht wirklich einen In­
terrupt auslöst. Es sind die sogenannten Tabellen-Interrupts. Wie wir in Kapitel 7
sehen werden, enthalten Teile des lnterruptmechanismus eine „Vektortabelle", die
die Speicheradressen der Interrupt-Verwalter enthält. Es gibt aber in dieser Tabelle
einige Adressen, die nichts mit Interrupts zu tun haben. Für alle gibt es zwar eine
entsprechende lnterruptnummer, aber eine, die nie verwendet werden kann, weil
es keine Interrupt-Verwaltungsroutine dazu gibt.
72
6 Der Mikroprozessor
Wie funktioniert ein Interrupt? Wir betrachten zunächst den lnterruptmechanismus.
Jeder lnterrupttyp wird durch eine lnterruptnummer identifiziert. Zum Beispiel gibt
es eine lnterruptnummer für die Plattenlaufwerke (alle Platten haben den gleichen
Interrupt). Die Uhr, die Tastatur und die Drucker haben eigene Nummern. Bei den
BIOS-Dienstprogrammen sind sie alle in einer Kategorie gruppiert. Zum Beispiel
gibt es über ein Dutzend verschiedene BIOS-Routinen für unterschiedliche Bild­
schirmoperationen, aber sie haben alle nur eine lnterruptnummer.
Für jede lnterruptnummer gibt es jeweils ein besonderes Programm, das Interrupt­
Verwalter genannt wird und diejenige Arbeit erledigt, die der Interrupt anfordert.
Eine spezielle Tabelle befindet sich ganz am Anfang des Arbeitsspeichers, die die
Lage sämtlicher Interrupt-Verwalter speichert. Wenn ein Interrupt auftritt, wird mit
der lnterruptnummer nach dem entsprechenden Interrupt-Verwaltungsprogramm
gesucht. Bevor jedoch der Interrupt-Verwalter mit seiner Arbeit beginnt, sichert der
Interrupt-verarbeitende Mechanismus des Mikroprozessors einen Satz dessen (in
den Stack), das gerade bearbeitet wurde. Anschließend springt die Mikroprozes­
sorsteuerung zur Interrupt-Verwaltungsroutine über.
Der Interrupt-Verwalter beginnt mit seinen Operationen, wobei er vorübergehend
vor weiteren Unterbrechungen geschützt ist, falls er eine kritische oder schwierige
Aufgabe ausführen muß, die nicht abgebrochen werden darf. Normalerweise
gehören dazu eine Änderung der Segmentregister, die den Speicherzugriff steu­
ern, und das Sichern weiterer Statusinformationen in den Stack, die neben dem,
was normalerweise bei lnterruptbeginn gespeichert wird, benötigt werden. Nach
dieser Arbeit kann der Interrupt-Verwalter gefahrlos weitere Interrupts (eines ande­
ren Typs) reaktivieren und alles, was der Interrupt verlangt, erledigen. Wenn die
Arbeit beendet ist, stellt die Interrupt-Verwaltungsroutine den Status der Maschine
wieder so her, wie er vor dem Autreten des Interrupts war, und schließlich kann der
Computer dort weiterarbeiten, wo er vorher unterbrochen wurde. Einen Ausschnitt
aus einem Interrupt-Verwalter sehen Sie im Abschnitt „Blick auf einen Interrupt-Ver­
walter''.
Blick auf einen Interrupt-Verwalter
Um Ihnen eine Vorstellung davon zu geben, wie der Programmcode eines Inter­
rupt-Verwalters aussieht, zeigen wir hier einen Ausschnitt daraus. Dieses Teilstück
ist „disassembliert" vom ROM-BIOS eines AT-Modells. Der Code, den wir vorstel­
len, stammt vom Anfang einer Routine und behandelt Anforderungen nach Bild­
schirm-Routinen.
Wir beginnen mit dem Aufruf des DEBUG-Programmes:
DEBUG
Dann beauftragen wir DEBUG mit der „Disassemblierung" eines Programmcodes,
die die Maschinensprache des Computers in ein leichter lesbares Assemblertor-
6.4 Interrupts - die treibende Kraft
73
mat übersetzt. Wir befehlen DEBUG, die Routine ab der entsprechenden Hex­
Adresse zu disassemblieren.
U F000:3605
Als Antwort liefert uns DEBUG ein disassembliertes Usting, das so aussieht (wir
werden es gleich im einzelnen erklären):
F000:3605 FB
STI
F000:3606 FC
CLD
F000:3607 06
PUSH
ES
F000:3608 1E
PUSH
DS
F000:3609 52
PUSH
DX
F000:360A 51
PUSH
ex
F000:360B 53
PUSH
BX
F000:360C 56
PUSH
SI
F000:360E 55
PUSH
BP
F000:360F 50
PUSH
AX
F000:3610 8AC4
MOV
AL, AH
F000:3612 32E4
XOR
AH, AH
F000:3614 D1EO
SHL
AX, 1
F000:3616 8BFO
MOV
SI, AX
F000:3618 3D2800
CMP
AX, 0028
Die allererste Spalte (F000:3605 etc.) ist ein Satz von Referenzadressen, den wir
ignorieren können. Die nächste Spalte (FB FC 06) ist der Maschinencode in hex.
Danach folgt das, was uns interessiert: das assemblersprachliche Äquivalent des
Programmcodes, den wir disassembliert haben.
Es beginnt mit der Anweisung STI, die Interrupts aktiviert. Wenn ein Interrupt auftritt,
werden weitere Interrupts verboten, falls der Interrupt-Verwalter eine kritische Auf­
gabe erledigen muß. In unserem Fall gibt es nichts derartiges zu erledigen, so daß
die Behandlung weiterer Interrupts gleich zu Beginn zugelassen wird.
Die nächste Anweisung, CLD, setzt das Richtungsflag (das wir im Abschnitt „Die
Flags des PC" besprochen haben) auf den normalen Vorwärtszustand. Damit ist
gewährleistet, daß alle Datenbewegungen vorwärts ablaufen und nicht rückwärts.
Dies ist keine besonders wichtige Operation für uns, aber es ist interessant, daß
sich der Programmierer die Zeit nahm, abzusichern, daß das Richtungsflag auf
vorwärts gesetzt ist, bevor irgendetwas anderes gemacht wird.
Das folgende ist viel interessanter für uns. Es ist eine Serie von neun PUSH-Anwei­
sungen. Die PUSH-Anweisungen sichern Daten in den Stack des Computers. Man
sieht, daß jede dieser neun PUSH-Anweisungen ein Register (ES, DS etc.) nennt,
das damit gerettet wird. Wenn die Interrupt-Verwaltung abgeschlossen ist, werden
diese Werte vom Stack in die Register zurückgeschrieben, so daß sie in ihren früheren Zustand zurückkehren.
·
Nach den registerrettenden PUSH-Operationen finden wir vier Instruktionen zur
Datenmanipulation (MOV, XOR, SHL, MOV), die eine einfache Aufgabe erledigen.
Sie nehmen eine Zahl und bereiten sie für einen Vergleich auf. Das läßt sich nicht
74
6 Der Mikroprozessor
ohne weiteres auf einen Blick erkennen, aber was hier passiert, ist sehr einfach. Es
gibt zahlreiche Bildschirm-Routinen, die der Interrupt-Verwalter zur Verfügung stel­
len kann, und sie werden durch eine Anforderungscodenummer angesprochen.
Das Programm bringt diese Codenummer zunächst in die Form, wie sie dieses
Programm braucht. Das bewirken diese vier Anweisungen.
Wenn das erledigt ist, muß der Interrupt-Verwalter sicherstellen, daß der angefor­
derte Dienstleistungscode der richtige ist, und dazu dient die letzte Anweisung. Mit
der CMP- (Compare-) Anweisung vergleicht sie die Zahl mit dem Wert 28, der die
höchste Zahl ist, die zu einer entsprechenden Dienstleistungsanforderung gehört.
Danach verzweigt das Programm und führt entweder die geforderte Dienstleistung
aus oder weist eine ungültige Nummer zurück.
Das ist keine besonders gründliche Analyse des Assemblercodes, aber man
erkennt doch, wie ein Assemblercode aussieht und wie man ihn decodiert. Sie
können mit den gleichen Techniken, die hier gezeigt wurden, andere Teile des
ROM-BIOS oder andere Programme untersuchen.
Interrupt-Verwalter gibt es zum größten Teil in den eingebauten ROM-BIOS-Pro­
grammen des Computers oder als Teil eines Betriebssystems wie DOS. Aber sie
sind nicht nur auf solche Systemprogramme beschränkt. Unsere Anwenderpro­
gramme - Textverarbeitungsprogramme, Tabellenkalkulationsprogramme u. ä. können ebenfalls ihre eigenen Interrupt-Routinen haben, falls dies notwendig ist.
Jedes Programm kann einen Interrupt-Verwalter einrichten und damit entweder
einen Standard-Interrupt-Verwalter ersetzen oder eine neue lnterruptart erzeugen.
In der Überschrift dieses Abschnitts wurden die Interrupts als treibende Kraft des
PC beschrieben. Das ist tatsächlich eine sehr gute Charakterisierung. Modeme
Computer, wie unsere PCs, die für Interrupts konzipiert sind, werden in der Termi­
nologie der Schaltungsdesigner als „Interrupt-getrieben" bezeichnet. Der Grund
dafür ist, daß die Interrupts als Mittel eingesetzt werden, um den Computer mit sei­
ner Außenwelt (auch mit uns) zu verbinden. Interrupts treiben den Computer an,
weil die gesamte Arbeit, mit der der Computer beauftragt wird, immer irgendwie in
Form von Interrupts zu ihm gelangt. Noch wichtiger ist es, daß die ganze interne
Organisation des Computers auf Interrupts als Steuermechanismus aufbaut, der
bestimmt, wohin der Mikroprozessor seine Aufmerksamkeit wenden soll. Da die In­
terrupts die Aufmerksamkeit des Computers lenken, kann man sie mit Recht als
die treibende Kraft hinter der ganzen Maschine bezeichnen.
Wir haben nun alle Grundlagen, die die Mikroprozessoren unserer PCs betreffen,
durchgegangen. Die wichtigsten Eigenschaften wurden besprochen, die bei den
Mitgliedern der Intel 8086-Mikroprozessorfamilie, auf der unsere PC-Familie auf­
baut, gleich sind. Wie wir bereits erwähnt haben, verwendet der AT-Zweig der PC­
Familie den Intel 286-Mikroprozessor, das am weitesten entwickelte Mitglied der
8086-Familie, und der 286 hat einige besondere Fähigkeiten, die der 8088-Mikro­
prozessor des Standard-PC nicht vorweisen kann. Wir wollen zuletzt noch sehen,
welche Besonderheiten der 286-Baustein besitzt.
75
6.5
Besondere Eigenschaften des 286
Der Intel 286-Mikroprozessor, mit dem alle Mitglieder des AT-Zweiges der PC­
Familie arbeiten - einschließlich des IBM/AT und des Compaq DeskPro-286 - hat
zwei Gesichter, und das ist der Schlüssel zu seiner besonderen Leistungskraft. Er
kann einmal wie ein 8088-Mikroprozessor agieren, mit dem der Standard-PC
arbeitet. Darüberhinaus verfügt der 286 aber über zusätzliche Leistungen und
Eigenschaften. Man unterscheidet deshalb zwischen dem reellen Modus und dem
geschützten Modus.
Im „reellen" Modus arbeitet der 286 praktisch wie der 8088-Mikroprozessor. (Der
286 funktioniert wie ein 8088, obwohl er mit einem externen 16-Bit-Speicherbus
arbeitet und nicht mit einem 8-Bit-Bus, was der Unterschied zwischen dem 8088
des PC und dem 8086 des DeskPro ist. Das ist nur ein unbedeutender Punkt. Der
Hauptpunkt im reellen Modus des 286 ist, daß er die gleichen Eigenschaften hat
und Programme auf die gleiche Weise ausführt wie der 8088 des Standard-PC.) Im
reellen Modus bleiben die besonderen Eigenschaften und die besondere Lei­
stungsfähigkeit des 286 versteckt, so daß ein Computer mit einem 286, der im
reellen Modus läuft, voll kompatibel zu einem normalen PC ist.
Glauben Sie nicht, daß der 286 im reellen Modus nicht interessant ist. Der 286 ist
im reellen Modus natürlich schon viel leistungsfähiger als ein 8088, weil er einfach
Programme sehr viel schneller abarbeiten kann, und zwar aus zwei Gründen.
Erstens ist seine interne Gestaltung rationeller, so daß er seine Anweisungen mit
weniger Schritten bzw. weniger Taktzyklen ausführen kann. Zum Beispiel benötigt
eine einfache Multiplikation etwa 120 Taktzyklen bei einem 8088, aber nur 20
Zyklen bei einem 286, ein gewaltiger Unterschied. Der 286 arbeitet intern wesent­
lich effizienter und erledigt somit seine Arbeit schneller. Der andere Grund für seine
höhere Geschwindigkeit ist einfach der, daß der 286 mit einem schnelleren Taktzy­
klus laufen kann. Ein Standard-PC hat einen Takt von 4,77 Mhz. Das heißt, daß der
Takt, mit dem der Mikroprozessor läuft, 4,77 Millionen mal in der Sekunde einen
Zyklus auslöst. Ein 286 kann dagegen schneller laufen. Beim IBM/AT-Modell
beträgt die Taktgeschwindigkeit 6 Mhz. Dies ist eine etwa um 25 Prozent höhere
Taktgeschwindigkeit als beim PC. Der Compaq DeskPro-286 kann sogar mit
einem Takt von 8 Mhz laufen, 67 Prozent schneller als der PC. Wenn wir die grö­
ßere Effizienz des 286 bei der Ausnützung von Taktzyklen mit einem schnelleren
Takt kombinieren, erhalten wir eine wesentlich höhere Gesamtgeschwindigkeit.
Durch den Einsatz von Leistungstestprogrammen, die ein Teil des Norton Utilities­
Programmpaketes sind, erfährt man, daß ein Mitglied der PC-Familie, das mit
einem 286 arbeitet, etwa 5 bis 8 mal schneller als ein Standard-PC ist.
Wir wissen also, daß der 286-Mikroprozessor im reellen Modus nicht zu verachten
ist. Aber er bietet darüberhinaus nichts anderes (außer der größeren Geschwindig­
keit) als der 8088 des Standard-PC. Die zusätzlichen Eigenschaften erhalten wir
mit dem geschützten Modus.
Im geschützten Modus liefert der 286 eine Reihe von zusätzlichen Eigenschaften,
womit die Anzahl der Programme, die der Computer gleichzeitig ausführen kann,
76
6 Der Mikroprozessor
vergrößert werden kann. Dies wird durch vier wichtige Einrichtungen erreicht:
Schutz (der dem geschützten Modus seinen Namen gibt), Speichererweiterung,
virtueller Speicher und Multi-Tasking.
Durch den Schutz kann das Betriebssystem (z.B. DOS) Barrieren errichten, um ein
Programm vor der Unterbrechung durch Operationen anderer Programme oder
des Betriebssystems selbst zu schützen. Beim Standard-PC oder beim 286 im
reellen Modus kann ein außer Kontrolle geratenes Programm das Betriebssystem
oder ein anderes Programm, das gerade läuft, durcheinanderbringen, oder es
kann den Computer sogar völlig blockieren. Durch den geschützten Modus des
286 kann das Betriebssystem verhindern, daß ein Programm den Computer
abstürzen läßt oder auf einen Teil des Arbeitsspeichers zugreift, in dem es nichts zu
suchen hat. Wenn wir auf einem Computer nur ein Programm laufen lassen, macht
es wenig aus, wenn ein Programm außer Kontrolle gerät und den Computer sperrt.
Bei mehreren simultan laufenden Programmen wird es aber viel wichtiger, die
Tätigkeiten des Computers vor verirrten Programmen zu schützen. Die Schutzei­
genschaft macht dies möglich.
Wie wir in Kapitel 7 genauer sehen werden, kann der Standard-PC nur mit einem
MB Arbeitsspeicher arbeiten (und etwa 40 Prozent davon ist speziellen Zwecken
gewidmet und nicht für die allgemeine Verwendung verfügbar). Eine Million Bytes
hören sich vielleicht nach viel an (und sind es auch), aber bei Computern braucht
man immer mehr. Der geschützte Modus des 286 liefert mehr Speicher und zwar
über zwei Wege. Erstens können mit einer Speichererweiterung bis zu sechzehn
Millionen Bytes Arbeitsspeicher installiert werden. Zweitens kann der 286 mit
einem virtuellen Speicher noch wesentlich mehr Arbeitsspeicher simulieren. Mit
dem virtuellen Speicher kann der Computer einem Programm eine Milliarde Bytes
(im Fachjargon ein Gigabyte) zur Verfügung stellen. Das ist eine ganze Menge.
Schließlich kann der 286 mit Hardware-unterstütztem Multitasking zwischen meh­
reren Programmen, die zur gleichen Zeit laufen, hin- und herspringen. Multitasking
wird eingesetzt, wenn ein Computer mit mehreren Programmen (oder an mehreren
Aufgaben, englisch: task) gleichzeitig arbeitet. In Wirklichkeit führt der Computer
immer nur die Anweisungen eines Programms aus, aber mit Multitasking bleiben
alle Programme aktiv, vergleichbar mit einem Jongleur, der gleichzeitig mehrere
Bälle in der Luft halten .kann. Jeder Computer kann Multitasking versuchen, aber
ohne einige besondere Hardware-Eigenschaften (wie zum Beispiel dem Arbeits­
speicherschutz) ist Multitasking nicht sicher. Der geschützte Modus des 286 liefert
viele Eigenschaften, die Multitasking praktisch erst ermöglichen.
Obwohl diese speziellen Eigenschaften des 286 sehr wichtig sind und das Lei­
stungsvermögen unserer Computer entscheidend gesteigert haben, bringen sie
nicht die erwarteten Vorteile. Das liegt hauptsächlich daran, daß der geschützte
Modus eine kooperative Zusammenarbeit der Programme verlangt. Da die Eigen­
schaften des geschützten Modus im Standard-PC nicht zur Verfügung standen,
wurden die meisten beliebten Programme für die PC-Familie ohne die Berücksich­
tigung der Grundregeln für den geschützten Modus geschrieben. Viele der wichtig­
sten Programme setzen einen exklusiven Anspruch des Computers für sich alleine
6.5 Besondere Eigenschaften des 286
77
voraus und basieren auf Programmiermethoden, die unzulässig sind, wenn meh­
rere Programme simultan auf einem Computer laufen sollen. Außerdem wurde das
verbreitete Betriebssystem für den PC, nämlich DOS, nicht für den geschützten
'
Modus des 286 entworfen.
Das alles bedeutet, daß die bekannten Programme und Betriebssysteme nicht
wirklich mit dem geschützten Modus des 286 kompatibel sind, und in vielen Fällen
wird es nicht einfach sein, sie für den „protected mode" anzupassen. Solange die
überwiegende Mehrheit der Programme für die PC-Familie nicht kompatibel mit
dem geschützten Modus sind, wird es ernste Hinderungsgründe für eine breite
Anwendung des geschützten Modus mit all seinen Vorteilen geben.
1.
Wir haben besprochen, wie die Mikroprozessoren unserer PCs sowohl 8- als auch 16-Bit­
Arithmetik ausführen können. Sind beide wirklich notwendig? Welche Vorteile oder Kosten
entstehen, wenn man sich zwischen beiden entscheiden müßte? Was könnten die Vorteile
oder Kosten sein, wenn man die 24-oder 32-Bit-Arithmetik hinzufügt?
2.
Wir haben bei der Arithmetik und den logischen Schleifenanweisungen des PC einige Wie­
derholungen gesehen, nämlich eine Vielzahl von Anweisungen, die auf weniger Anweisun­
gen reduziert werden könnten. Welches sind die Vor- und Nachteile - sowohl für die Gestal­
ter des Computers als auch für die Programmierer -, einen Computer mit einem großen
Befehlssatz zu versehen (wodurch sich dasselbe Ziel über verschiedene Wege erreichen
läßt) oder mit einem komprimierten Befehlssatz (der für ein Ziel nur einen Lösungsweg
zuläßt)?
3.
Nur in wenigen PCs ist der Numerische Datenprozessor 87 installiert, und nur wenige Pro­
gramme können die Vorteile des 87 ausnutzen. Woran liegt das?
4.
Schreiben Sie ein Programm für die Ein-/Ausgabekanäle des PC unter Verwendung der
BASIC-Kommandos INP und OUT. Finden Sie etwas Interessantes?
5.
Im Abschnitt „Blick auf einen Interrupt-Verwalter" zeigen wir, wie man das DEBUG-Disas­
sembler-Kommando U (von unassemble) verwendet. Probieren Sie es mit dem eingebau­
ten BASIC des PC aus, das ab Speicheradresse F600:0 beginnt. (Achtung: Dies funktioniert
nur auf IBM-Modellen der PC-Familie, aber nicht auf den Kompatiblen.)
78
7
Der Arbeitsspeicher
In diesem Kapitel wollen wir den Arbeitsspeicher unseres Computers kennenler­
nen und sehen, was der Arbeitsspeicher eigentlich ist und wie dort Daten gespei­
chert werden. Außerdem befassen wir uns im einzelnen damit, wie unsere Pro­
gramme mit dem Arbeitsspeicher arbeiten. Wir werden sehen, wie die Gestalter
des PC den Arbeitsspeicher für verschiedene Zwecke unterteilt haben, und zuletzt
besprechen wir noch die zwei verschiedenen Arten von Speichererweiterungen für
den PC.
7.1
Überblick
Die Prinzipien, die dem Arbeitsspeicher zugrundeliegen, kennen wir bereits. Das
Wichtigste wollen wir noch einmal kurz zusammenfassen, damit wir die folgenden
Einzelheiten über den Arbeitsspeicher besser verstehen.
Der Arbeitsspeicher des Computers fungiert als Notizzettel, auf dem Informationen
bzgl. Programmen als auch Daten aufgezeichnet werden, solange der Computer
damit arbeitet. Der Arbeitsspeicher enthält größtenteils solche temporären Arbeits­
informationen (eine Ausnahme bildet der Lesespeicher (ROM), über den Sie am
Ende dieses Kapitels mehr erfahren).
Der Arbeitsspeicher des Computers ist in Byteeinheiten organisiert, von denen
jede aus acht Bits besteht. Mit acht Bits in einem Byte können jeweils 256 ver­
schiedene Werte dargestellt werden. Egal, welche Art von Information wir im
Arbeitsspeicher speichern, sie wird in Bitgruppen codiert, die je nach Datenart ent­
sprechend interpretiert werden müssen. Dieselben Bitgruppen können als Zahlen
oder Buchstaben oder als maschinensprachliche Anweisung gelten, je nach Inter­
pretation.
Da der Arbeitsspeicher in Bytes organisiert ist, können die Bytes beliebig zu grö­
ßeren Informationseinheiten kombiniert werden. Wichtig ist dabei das Maschinen­
wort, das aus zwei Bytes besteht, die zusammen eine 16-Bit-Zahl bilden (mehr dar­
über erfahren Sie im Abschnitt „Wie Wörter gespeichert werden"). Wenn wir eine
Reihe von Bytes als alphabetischen Text interpretieren, heißt das Zeichenkette oder
String. Es gibt viele Möglichkeiten, Bytes zu bedeutungstragenden Daten zu kom­
binieren, und dies waren nur einige der wichtigsten Datenarten.
Damit man mit dem Arbeitsspeicher des Computers arbeiten kann, hat jedes Byte
des Speichers eine Adresse, eine Zahl, die es eindeutig identifiziert. Das Haupt­
thema dieses Kapitels sind tatsächlich die verschiedenen Aspekte der Speicher­
adressierung. Die Speicheradressen sind aufsteigend durchnumeriert und begin­
nen mit Null als erste Adresse. Die gleichen Zahlen, die als Daten fungieren, kön­
nen auch Speicheradressen spezifizieren, und der Computer kann deshalb seine
Arithmetikmöglichkeiten auch für die Arbeitsspeicheradressierung einsetzen. Mit
dieser Integration von Arithmetik, Daten und Speicheradressierung erhält der Com­
puter für uns eine erstaunlich kompakte und flexible Leistungsfähigkeit.
Im folgenden wollen wir uns nun mit der Arbeitsweise des Arbeitsspeichers unse­
rer PC-Familie im einzelnen befassen.
7.1
Überblick
79
Wie Wörter gespeichert werden
Wenn Sie den Arbeitsspeicher erforschen wollen oder mit dem Assembler arbeiten
oder einfach über I hren Computer Bescheid wissen wollen, müssen Sie etwas
kennen, das seltsamerweise Back-Words-Speicherung genannt wird.
Wenn wir Zahlen oder Namen schreiben, beginnen wir zuerst mit dem Element,
das die wichtigste Rolle dabei spielt, wenn wir Namen oder Zahlen ordnen. Bei der
Zahl „1776" ist die „1" der wichtigste oder höherwertige Teil. Beim Namen „Kalifor­
nien" ist das „K" der bedeutsamste Buchstabe.
Bei unserem PC funktioniert das nicht ganz genauso. Zeichenketten, in denen z.B.
Namen wie „Kalifornien" gespeichert werden, werden mit dem signifikantesten
Buchstaben zuerst im am weitesten links liegenden Byte (dem Byte mit der nied­
rigsten Adresse) abgespeichert, so wie auch wir Namen schreiben. Zahlen werden
jedoch anders herum abgespeichert. Bei Zahlen, die mehr als ein Byte belegen
(z.B. eine 16-Bit-, 2-Byte-Wort-Zahl), wird das niederwertigste Byte zuerst abge­
speichert. Im Endeffekt wird dann die Zahl, die wir als 1776 kennen, als „6771" im
Computer gespeichert. (Dieses Beispiel dürfen Sie allerdings aus Gründen, die wir
in Kürze erfahren werden, nicht zu wörtlich nehmen.)
Diese Art, Zahlen zu speichern, heißt „back-words", und bedeutet, daß ein Wort
(ein 16-Bit-, 2-Byte-lnteger) rückwärts gespeichert ist, umgekehrt zu der Weise, die
wir erwartet hätten. Das gilt nicht nur für 2-Byte-Wörter, sondern auch für längere
lntegerformate, wie 32-Bit-, 4-Byte-„lange" Integer sowie für die Darstellung von
Gleitpunktzahlen.
Obwohl unser PC mit jedem numerischen Format arbeiten kann, wird in der Regel
das Wortformat vel'Wendet, das zwei Bytes beansprucht. Der Grund dafür ist, daß
bei der Speicheradressierung grundsätzlich 16-Bit-Wörter benützt werden (wie wir
in Abschnitt 7.2 noch genauer sehen werden) und daß 16-Bit-Wörter die größten
Zahlen sind, mit denen der Befehlssatz des PC umgehen kann.
Die Back-Words-Speicherung wollen wir anhand unseres Beispiels der (dezima­
len) Zahl 1776 erklären, die back-words als 6771 geschrieben wird. Aber das
erklärt uns noch nicht genau das Verfahren. Die Back-Words-Speicherung betrifft
binäre Zahlen, die in umgekehrter Reihenfolge Byte für Byte abgespeichert wer­
den. Wenn wir uns binäre Zahlen anschauen, sehen wir eine Hex-Notation mit zwei
Hex-Ziffern für jedes Byte. Unsere Dezimalzahl 1776 heißt hex 06FO, wenn wir sie
vorwärts schreiben. Um dieselbe Hex-Zahl back-words zu schreiben, drehen wir
nicht die Reihenfolge der einzelnen Hex-Ziffern um, sondern lediglich die Bytes
(die von Ziffernpaaren dargestellt werden). Hex 06FO ist mit den beiden umgekehr­
ten Hex-Paaren (06 und FO) back-words F006.
Die Back-Words-Speicherung ist für uns nicht nur einfach ein intellektueller Spaß.
Immer wenn wir mit Daten arbeiten, die hexadezimal dargestellt werden, müssen
wir aufpassen, ob die Zahlen vorwärts geschrieben sind (in der Art, wie wir sie
schreiben) oder back-words (in der Weise, wie sie wirklich gespeichert sind).
Wenn also Daten für unsere Zwecke formatiert werden, geschieht dies in Vorwärts­
reihenfolge; wenn sie dagegen so gezeigt werden, wie sie in der Maschine abge-
80
7 Der Arbeitsspeicher
speichert sind, sehen wir sie in Back-Words-Reihenfolge. Wir müssen aufpassen,
daß wir mit der Art der Darstellung nicht durcheinanderkommen.
Hier folgt ein Beispiel dafür, wie uns eine lahl in beiden Formaten gezeigt werden
kann. Wenn wir mit der Assemblersprache arbeiten, indem wir sowohl DEBUG als
auch den Assembler benützen, und wir eine Anweisung haben, die den Hex-Wert
1234 in das AX-Register bringen soll, sehen wir folgendes:
88 3412
MOV
AX,1234H
Auf der rechten Seite sehen wir die Zahl in unserer gewohnten Form, also vorwärts
(1234). Auf der linken Seite sehen wir die Zahl so, wie sie wirklich abgespeichert
wird: back-words.
7.2
Speicherzugriff
Im Mikroprozessor des PC gibt es ein kleines Problem, das den Zugriff auf den
Arbeitsspeicher für unsere Programme schwierig macht. Das Problem liegt in der
16-Bit-Arith metik.
Wie wir schon gesehen haben, arbeitet der Mikroprozessor des PC am besten mit
16-Bit-Zahlen, die maximal bis 65.536 bzw. 64K reichen. Da der Computer nume­
rische Adressen für seinen Speicher verwendet, drängt sich der Gedanke auf, daß
der Arbeitsspeicher nicht größer als 64K sein kann. 64K sind jedoch lächerlich
wenig Speich·er für einen ernsthaften Computereinsatz. Wie wir wissen, sind viele
unserer Computer mit der zehnfachen Speichermenge ausgestattet, also mit
640K. Wie können wir also auf einen größeren Speicher zugreifen und trotzdem
nur 16-Bit-lahlen für seine Adressierung verwenden?
Die Lösung von Intel für die 8086-Mikroprozessorfamilie sind die sogenannten
segmentierten Adressen. Segmentierte Adressen bestehen aus zwei 16-Bit-Wör­
tern, die so kombiniert werden, daß sie 1.048.576 (oder etwa eine Million) Bytes
Speicher adressieren können. Um das Verfahren zu verstehen, betrachten wir zwei
Dinge: die Arithmetik, die für die Kombination der zwei Wörter einer segmentierten
Adresse benötigt wird, und die Art, wie diese Adressen im Mikroprozessor behan­
delt werden.
Die Arithmetik enthält etwas, das wir „versetzte Addition" nennen. Damit lassen
sich aus zwei 16-Bit-Zahlen 20-Bit-große Binärzahlen erzeugen (die bis 1.048.578
reichen). Angenommen, wir haben zwei 16-Bit-Wörter, mit den hexadezimalen
Werten ABCD und 1234. Erinnern Sie sich daran, daß jede Hex-Ziffer vier Bits
repräsentiert; vier Hex-Ziffern ( ABCD oder 1234) stellen also zusammen 16 Bits dar.
Wir nehmen eine dieser zwei lahlen, z.B. ABCD, und fügen eine Null an: ABCDO.
Damit wird die Zahl um eine Hex-Stelle verschoben, oder wir können auch sagen,
daß der Wert der lahl mit sechzehn multipliziert wird. Die lahl ist nun fünf Hex-Zif­
fern (oder 20 Bits) lang und kommt damit, wie beabsichtigt, in den Millionenbe-
7.2 Speicherzugriff
83
Die Antwort liegt im sogenannten Speichermodell und hängt davon ab, wie ein
Programm die Segmentregister manipulieren kann.
Wenn ein Programm im Computer läuft, muß es sowohl seine Programmteile als
auch seine Daten finden. Ein Programm verwendet deshalb das CS-Code-Seg­
mentregister, um die Position von Programmteilen ausfindig zu machen, und das
OS-Daten-Segmentregister für die Position der Daten. Während das Programm
läuft, können diese Register unabhängig voneinander als fest oder veränderbar
behandelt werden. Wenn eines davon fest ist (das bedeutet, daß es nicht durch das
Programm verändert werden kann, solange dieses läuft), dann kann diese Kompo­
nente (Programmcode oder Daten) nicht größer als 64K sein, die ein solcher Seg­
mentwert adressieren kann. Kann dagegen ein Register während der Laufzeit des
Programmes dynamisch verändert werden, dann gibt es keine solche Größenbe­
grenzung für diese Komponente. Wenn beide Register fest sind, liegt das kleine
Speichermodell vor, das ein Programm auf 64K Code und weitere 64K für Daten
beschränkt. Das große Speichermodell ohne diese Begrenzungen liegt vor, wenn
beide Register veränderbar sind. Dazwischen gibt es zwei weitere Modelle mit
einem festen und einem veränderbaren Segment.
Der Vorteil, der durch das Verändern der Segmentregister entsteht, ist klar (keine
64K-Grenzen). Der Preis dafür ist nicht offensichtlich, aber er muß bezahlt werden.
Wenn ein Programm die Segmentregister manipulieren will, nimmt es sowohl
zusätzliche Ladearbeit auf sich (die die Operation verlangsamt) als auch ein höhe­
res Maß an Speicherverwaltung (die die Logik des Programmes komplizieren
kann). Hier muß genau abgewogen werden zwischen Geschwindigkeit, Größe und
Einfachheit auf der einen Seite und Leistungsfähigkeit auf der anderen.
Wie sich herausstellt, ermöglicht die Gestaltung des Befehlssatzes unserer Mikro­
prozessoren eine relativ einfache und effektive Manipulation des CS-Registers, das
den Programmcode kontrolliert, dagegen eine relativ schwerfällige Manipulation
des OS-Registers. Es gibt deshalb eine große Anzahl von Programmen, die selbst
größer als 64K sind, aber nur mit 64K Daten arbeiten können.
Glücklicherweise werden die Programmierbarkeit des PC und die Programmier­
sprachen immer besser, so daß die 64K-Grenze zunehmend verschwindet.
Und wie sieht es mit BASIC aus? Warum gibt es hier eine Grenze von 64K insge­
samt für Programm und Daten zusammen? BASIC ist ein besonderer Fall. Wenn
wir BASIC verwenden, ist das Programm, das wirklich im Computer läuft, der
BASIC-Interpreter. Der BASIC-lnterpretef greift auf unser BASIC-„Programm" und
seine Daten mit einem 64K-Datensegment zu. Das ist der Grund, warum BASIC
dieser besonderen Art von Größenbeschränkung unterliegt.
84
7.3
7 Der Arbeitsspeicher
Die Organisation des Arbeitsspeichers
Es ist sehr hilfreich, zu wissen, wie der Arbeitsspeicher organisiert ist und funktio­
niert. Man versteht dann besser, wie der PC arbeitet und welche Grenzen ihm bei
seiner Arbeit gesetzt sind. Außerdem lernen wir dadurch die Arbeitsweise des
Bildschirmes und auch die Grundlage für die oft erwähnte, aber wenig verstande­
ne Speichergrenze von 640K kennen u.v.m.
Wir wissen bereits, wie der PC seinen Speicher durch Segmentregister adressiert,
daß es deshalb eine grundsätzliche Grenze für den Bereich von Speicheradressen
gibt, mit denen der PC arbeiten kann: eine Million verschiedener Adressen, von
denen jede ein bestimmtes Speicher-Byte repräsentiert. Das bedeutet, daß der PC
einen Adreßbereich von einer Million Bytes hat.
Der Adreßbereich eines Computers ist lediglich die potentielle Speichergröße und
nicht die tatsächliche Speichergröße des Computers. Der grundsätzliche Adreßbe­
reich liefert jedoch einen Rahmen für die Organisation der Arbeitsweise eines
Computers. Da das Schema für den Adreßbereich eine sehr wichtige Rolle spielt,
wollen wir uns jetzt ansehen, wie die Gestalter des PC den Adreßbereich angelegt
haben.
Am besten unterteilt man hierzu den gesamten 1-Megabyte-Adreßraum in 16
Blöcke von 64K-Größe. Wir können jeden dieser Speicherblöcke durch die vorder­
ste Hex-Ziffer identifizieren, die bei allen Adressen in einem Block gleich ist. So
können wir die ersten 64K Speicher den 0-Block nennen, weil alle Adressen in
diesem Block in der fünfziffrigen absoluten Adreßschreibweise die Form Oxxxx
oder in der segmentierten Adreßschreibweise die Form Oxxxx:xxxx haben. Analog
ist der zweite Block der 1-Block, weil alle Adressen in diesen 64K mit einer 1 begin­
nen. Im Adreßbereich von 1 Meg gibt es 16 Blöcke mit 64K, die wir als 0-Block usw.
bis F-Block bezeichnen.
Zwischen diesen Blöcken gibt es allerdings keine echten Grenzen. Speicheradres­
sen bzw. Daten fließen in ununterbrochener Reihenfolge durch den ganzen Spei­
cher und über die künstlichen Grenzen, die diese Blöcke trennen, hinweg. Wir
behandeln sie als getrennte Blöcke, nicht nur, weil es bequem ist, sondern haupt­
sächlich, weil das Gesamtschema für den 1-Megabyte-Speicher in Form dieser
Blöcke organisiert ist.
Die spezielle Organisation des unteren Speicherbereiches
Der unterste Teil des Arbeitsspeichers unseres Computers ist für einige wichtige
Zwecke reserviert, die für die Arbeit des Computers fundamental sind. Es gibt drei
Hauptunterteilungen für diese spezielle Verwendung des unteren Speicherbe­
reichs.
Die erste ist die Interrupt-Vektor-Tabelle, die festlegt, wo sich die Interrupt-Verwal­
tungsroutinen befinden. Die ersten 1024 Bytes des Speichers gehören der Inter­
rupt-Vektor-Tabelle, die 256 verschiedene Interrupts aufnehmen kann. Das ist
etwas mehr, als normalerweise benötigt wird. Die Tabelle beansprucht die absolu-
7.3 Die Organisation des Arbeitsspeichers
85
ten Speicheradressen 0 bis hex 400 (vgl. hierzu den Abschnitt „Die Interrupt-Vek­
tor-Tabelle" am Ende dieses Kapitels).
Der zweite Bereich wird als Arbeitsplatz für die ROM-BIOS-Routinen verwendet.
Das ROM-BIOS kontrolliert die fundamentale Arbeit des Computers und seiner
Hardware-Komponenten und braucht dafür einen eigenen Speicherbereich. Das
ist der ROM-BIOS-Datenbereich, einer der wichtigsten Bereiche des Arbeitsspei­
chers. Hier werden in einem Puffer die Tastatureingaben solange zwischengespei­
chert, bis ein Programm sie verarbeiten kann. Ferner gibt es dort einen Vermerk
darüber, wieviel Arbeitsspeicher der Computer hat, einen Vermerk über die instal­
lierten Hauptkomponenten des Computers und auch ein Kennzeichen für den Bild­
schirmmodus, den wir in einem späteren Kapitel behandeln werden. Das Pro­
gramm ALL-CHAR in Anhang A analysiert den Bildschirmmodus und wertet ihn
aus.
Der ROM-BIOS-Datenbereich umfaßt 256 Bytes mit den absoluten Speicheradres­
sen von hex 400 bis 500. Wenn Sie mehr darüber lernen möchten, verweisen wir
auf drei Veröffentlichungen: das ROM-BIOS-Usting, das im Technischen Hand­
buch über den PC abgedruckt ist, der „Programmer's Guide to the PC Family" von
Peter Norton, in dem nahezu jedes Byte behandelt wird, sowie Brett Salter's „Peeks
'n' Pokes".
Der dritte Teil des speziellen unteren Speicherbereiches ist der Arbeitsbereich für
DOS und BASIC, der sich über 256 Bytes von den absoluten Speicheradressen
hex 500 bis 600 erstreckt. Dieser Bereich wird von DOS und BASIC als Arbeitsbe­
reich verwendet, ähnlich dem vorausgehenden ROM-BIOS-Datenbereich. Mehr
darüber erfährt man aus denselben o.g. Quellen, allerdings sind die Informationen
nicht so vollständig wie für das ROM-BIOS.
Der untere Speicherbereich ist also sehr interessant, und jeder, der mehr über sei­
nen PC wissen will, kann aus der Analyse dieses Speicherbereichs eine Menge
lernen.
Der größte Bereich des Speichers ist der Teil, der unseren Programmen und ihren
Daten zur Verfügung steht. Dieser Bereich wird aus den ersten zehn Blöcken gebil­
det, den Blöcken 0 bis 9. Dieser Bereich wird manchmal auch Anwenderspeicher­
bereich genannt, um ihm vom Rest des Adreßbereiches zu unterscheiden, der
dem Computer selbst für spezielle Zwecke dient. Wenn von der Größe des Arbeits­
speichers die Rede ist, meint man in Wirklichkeit die Größe des Anwenderspei­
chers, der in diesem Bereich installiert ist. Er könnte theoretisch 16K klein (ein Vier­
tel des ersten 64K-Blocks) oder 640K groß sein (d.h. alle zehn Blöcke des instal­
lierten Speichers). Unabhängig davon, wieviel Speicherplatz in unserem Computer
eingebaut ist, besteht dieser immer aus einem zusammenhängenden Bereich
vom 0-Block bis zum Ende des Speichers.
Es gibt viele verschiedene Speicherarten (über die wir später noch mehr erfahren),
und die hier installierte Art ist ein üblicher Schreib-/Lesespeicher mit Direktzugriff,
meist einfach RAM genannt (von Random Access Memory). Zwei Dinge charakteri­
sieren einen RAM-Speicher: Erstens können aus ihm Daten gelesen und in ihn
86
7 Der Arbeitsspeicher
Daten geschrieben werden. zweitens handelt es sich um einen temporären Spei­
cher, was bedeutet, daß die Daten in ihm maximal solange aufbewahrt werden, wie
der Computer eingeschaltet ist.
0-Block
1.
64K
Normaler Anwenderspeicher bis
1-Block
2.
64K
Normaler Anwenderspeicher bis 128K
2-Block
3.
64K
Normaler Anwenderspeicher bis 192K
3-Block
4.
64K
Normaler Anwenderspeicher bis 256K
4-Block
5.
64K
Normaler Anwenderspeicher bis 320K
5-Block
6.
7.
64K
64K
Normaler Anwenderspeicher bis 384K
Normaler Anwenderspeicher bis 448K
Normaler Anwenderspeicher bis 512K
6-Block
64K
?-Block
8.
64K
8-Block
9.
64K
Normaler Anwenderspeicher bis 576K
9-Block
10.
64K
Normaler Anwenderspeicher bis 640K
A-Block
11.
64K
Bildschirmspeichererweiterung
B-Block
12.
64K
Standard-Bildschirmspeicher
C-Block
13.
64K
ROM-Erweiterung CXT, EGA, 3270 PC)
D-Block
14.
64K
Andere Verwendung CPCjr Cartridges)
E-Block
F-Block
15.
16.
64K
64K
Andere Verwendung CPCjr Cartridges)
System ROM-BIOS und ROM-BASIC
Abb. 7-1:
Die Speicherblöcke des PC
Hier werden unsere Programme und Daten gespeichert, solange der Computer
damit arbeitet. Die RAM-Speichergröße bestimmt den Umfang und den Rahmen
der Aufgaben, die unser Computer übernehmen kann.
In der Grundausstattung sind bei den Mitgliedern der PC-Familie nur zehn der ins­
gesamt sechzehn Blöcke im Adreßraum für den Hauptarbeitsbereich des Spei­
chers reserviert. Das sind nur etwas über 60 Prozent des gesamten Speicherbe­
reichs. Heute scheint dieser Bereich von 640K viel zu klein für die Probleme, die
unsere Computer verarbeiten sollen, aber zu der Zeit, als der PC entworfen wurde,
hielt man das für eine ganze Menge. Zu dieser Zeit waren Personalcomputer in der
Regel auf 64K oder 128K Gesamtspeicher begrenzt, und die 640K des PC mach­
ten deshalb einen großen Eindruck. (Dieser Fehler, den Bedarf nach Erweiterbar­
keit zu unterschätzen, passiert in der Computerei sehr häufig.)
Der 640K-Anwenderspeicherbereich läßt sich auf einfache Art erweitern, indem
man in den darauf folgenden Systembereich eindringt. Das ist allerdings nicht zu
empfehlen, weil die Speicherblöcke, die dem 640K Anwenderbereich folgen, für
einige spezielle Zwecke reserviert sind, wie wir bald sehen werden.
Nicht jedes einzelne Bit des Anwenderspeicherbereichs ist wirklich für unsere Pro­
gramme verfügbar. Der erste Teil davon, der mit der Speicheradresse 0 beginnt, ist
für wichtige Arbeitsnotizen des Computers reserviert. Wir erklären das im Abschnitt
„Die spezielle Organisation des unteren Speicherbereichs", und nähere technische
Informationen über einen bestimmten Teil dieses Speicherbereichs erhalten Sie im
Abschnitt „Die Interrupt-Vektor-Tabelle". Aber abgesehen von diesem kleinen (und
interessanten) Teil steht der gesamte Speicherbereich von 640K unseren Program­
men zur Verfügung, und darüber gibt es eigentlich nicht viel zu sagen. Anders ver­
hält es sich mit den restlichen Speicherblöcken.
7.3 Die Organisation des Arbeitsspeichers
87
Die Interrupt-Vektor-Tabelle
In Kapitel 6 wurde schon erklärt, daß der lnterruptmechanismus ein aktuell laufen­
des Programm stoppt, wenn ein Interrupt-Verwaltungsprogramm aktiviert wird. Der
Mikroprozessor braucht ein einfaches und direktes Verfahren, um herauszufinden,
wo sich der Interrupt-Verwalter befindet, und dafür gibt es die Interrupt-Vektor­
Tabelle. Es handelt sich um eine sehr einfache Tabelle, die aus den Adressen der
Interrupt-Verwaltungsroutinen besteht und beginnend mit dem Vektor für Interrupt
Nummer 0 an der Speicherstelle 0 abgespeichert ist. Jede Vektoradresse ist vier
Bytes lang. Der Vektor für irgendeine lnterruptnummer x ist ganz einfach an der
Speicherstelle x mal 4 zu finden.
Die „Vektoren" sind einfach die vollständigen, in segmentierter Form vorliegenden
Speicheradressen der Routine, die aktiviert werden soll, wenn der Interrupt auftritt.
Eine segmentierte Adresse besteht aus einem Paar von 2-Byte-Wörtern. Das ist der
Grund, warum die Vektoren vier Bytes lang sind.
Sie können die Interrupt-Vektor-Tabelle Ihres Computers ganz leicht mit DEBUG
untersuchen. Mit dem Display-Kommando D 0:0 wird der Anfang des Speichers
ausgegeben. DEBUG zeigt Ihnen die ersten 128 Bytes, oder 32 Vektoren, die etwa
so aussehen:
0000:0000
ES 4E 9A 01 00 00 00 00-C3 E2 00 FO 00 00 00 00
0000:0010
FO 01 70 00 54 FF 00 F0-05 1S 00 FO 05 1S 00 FO
0000:0020
2C OS 51 17 DO OA 51 17-AD OS 54 OS ES 05 01 2F
0000:0030
FA 05 01 2F 05 1S 00 F0-57 EF 00 FO FO 01 70 00
0000:0040
90 13 C7 13 4D FS 00 F0-41 FS 00 FO 3E OA 51 17
0000:0050
SC 00 87 25 59 FS 00 FO-E2 OA 51 17 9C 00 87 25
0000:0060
00 00 00 F6 SE 00 DE 09-6E FE 00 FO F2 00 78 09
0000:0070
27 OS 51 17 A4 FO 00 F0-22 05 00 00 00 00 00 FO
Die Vektoren werden back-words gespeichert, der Offset gefolgt vom Segment.
Zum Beispiel können die ersten vier Bytes, die DEBUG oben zeigt (ES 4E 9A 01), in
die segmentierte Adresse 019A:4EE8 übersetzt werden.
Es gibt generell drei Adreßarten in der Vektortabelle. Die einen zeigen auf das
ROM-BIOS und können durch ein führendes hex F in der Segmentnummer identi­
fiziert werden. Andere zeigen in den Hauptspeicher, wie unser Beispiel 019A:4EE8.
Diese zeigen vielleicht auf Routinen von DOS oder auf ein residentes Programm
(zum Beispiel Sidekick oder Prokey) oder z.B. auch auf DEBUG selbst (weil
DEBUG eine vorübergehende Kontrolle über den Interrupt benötigt). Schließlich
können die Vektoren ganz 0 sein, wenn die lnterruptnummer zur Zeit nicht besetzt
ist. Sie sehen oben, daß der zweite Interrupt-Vektor (für Interrupt Nummer 1) genau
diese Form hat.
88
7 Der Arbeitsspeicher
Wenn Sie wollen, können Sie jede Interrupt-Verwaltungsroutine aufsuchen, indem
Sie zuerst den jeweiligen Interrupt-Vektor dekodieren (wie wir es oben gezeigt
haben) und dann die segmentierte Adresse an das Disassemblerkommando U
von DEBUG weitergeben, um den Programmcode des Interrupt-Verwalters zu un­
tersuchen.
Direkt nach dem Anwenderspeicherbereich folgt ein Bereich von 128K, der aus
den Blöcken A und B besteht und für die Bildschirme reserviert ist. Die Daten, die
auf den Bildschirmen unserer Computer erscheinen, müssen irgendwo gespei­
chert werden, und der beste Platz dafür ist erwiesenermaßen ein eigener Speicher­
adreßbreich in unserem Computer. Der Grund dafür, warum sich diese Idee
bewährt hat, ist, daß Programme damit sehr schnell und einfach die Bildschirmda­
ten manipulieren können. Der Bereich von 128K in den A- und B-Blöcken ist also
ausschließlich für die Daten des Bildschirmes reserviert. (In den Kapiteln 11-14 wer­
den wir uns genauer mit den Bildschirmen befassen und wie sie mit diesem Spei­
cher umgehen. Bis dahin müssen wir nur wissen, daß das, was auf unseren Bild­
schirmen erscheint, in diesem Teil des Speichers abgelegt wird.)
Beim originalen PC wurde nur ein Teil des B-Blockes wirklich für den Bildschirm
benützt. Der A-Block war zwar dafür reserviert, wurde aber nicht verwendet. Das ist
der Grund, warum einige PCs zusätzliche 64K für den Anwenderspeicher haben
können. Sie dringen in den A-Block ein. Dies hat sich bisher noch nie als sehr klug
erwiesen, weil damit eine wichtige Gestaltungsregel der PC-Familie durchbrochen
wird. Die erste offizielle Verwendung des A-Blocks geschah durch den IBM Enhan­
ced Graphics Adapter, der mehr Arbeitsspeicher für den Bildschirm brauchte als
die vorhergehenden Bildschirmadapter.
Der Speicher für den Bildschirm arbeitet genauso, wie der normale R AM-Anwen­
derspeicher. In der Regel besitzt er eine zusätzliche Eigenschaft, die die Arbeit des
Computers beschleunigen hilft. Es gibt zwei Schaltungseingänge in ihn hinein, so
daß sowohl unsere Programme (die den Mikroprozessor benützen) als auch der
Bildschirm simultan damit arbeiten können, ohne einander zu behindern.
Nach dem Bildschirmbereich kommen drei Blöcke, C bis E, die für besondere
Zwecke reserviert sind. Sie werden einfach „ROM-Erweiterungsbereich" genannt.
Es gibt keine eindeutige Zuordnung dieses Speicherbereichs. Statt dessen wird er
für vielerlei Zwecke verwendet, die sich im laufe der Geschichte der Pc-Familie
entwickelt haben. Eine Anwendung, die diesem Bereich seinen Namen gibt, ist die
Erweiterungsmöglichkeit für den letzten Teil des Speichers, das ROM-BIOS, das
den F -Block belegt. Wenn die PC-Familie mit neuen zusätzlichen Komponenten
ausgestattet wird und dafür eingebaute Software-Unterstützung benötigt wird, wer­
den die zusätzlichen ROM-BIOS-Programme hier eingefügt. So wurde zum Bei­
spiel bei der Integration der Festplatte des XT ein kleiner Teil des C-Blocks benützt.
Eine andere Verwendung des ROM-Erweiterungsbereiches, die wir nur beim PCjr
gesehen haben, ist die als langfristiger Speicher für austauschbare Cartridges. Auf
7.3 Die Organisation des Arbeitsspeichers
89
Cartridges sind Programme gespeichert und wenn sie in den Computer gescho­
ben werden, müssen diese irgendwo im Speicher erscheinen. Beim PCjr werden
die Blöcke D und E für diesen Zweck verwendet.
Eine dritte Anwendung des ROM-Erweiterungsbereiches, die im übrigen nicht von
IBM stammt, ist die Unterstützung von „Speichererweiterungen", die wir in
Abschnitt 7.4 behandeln werden.
Der letzte Teil des Speicheradreßbereichs der PC-Familie ist der F-Block, der die
eingebauten ROM-BIOS-Programme des Computers speichert. Der Speicher, der
hierfür (und für die Cartridges des PCjr) verwendet wird, ist eine besondere Art, die
als Lesespeicher oder ROM (von Read-Only-Memory) bekannt ist. Der ROM-Spei­
cher ist ein Dauerspeicher, der durch unsere Programme nicht beschrieben oder
verändert werden kann, und er ist nicht temporär, so daß das Ausschalten des
Computers nicht stört. Damit unterscheidet sich der ROM erheblich vom RAM, den
wir früher schon besprochen haben, obwohl man ihre Namen sehr leicht durchein­
anderbringen kann.
Das ROM-BIOS enthält ein wichtiges Programmpaket, das die gesamte Arbeit des
Computers wesentlich unterstützt. Es gibt drei Hauptteile bei den ROM-BIOS-Pro­
grammen. Der erste Teil wird nur benützt, wenn der Computer eingeschaltet wird.
Dies sind Prüf-und Initialisierungsprogramme, die sicherstellen, daß der Computer
arbeitstechnisch in einwandfreiem Zustand ist. Die Verzögerung, wenn wir den
Computer einschalten bis zu dem Moment, in dem er wirklich arbeitsbereit ist, wird
hauptsächlich durch die Operationen dieser Test- und Initialisierungsprogramme
hervorgerufen, die manchmal POST (Power-On Seif-Test) genannt werden.
Der zweite und interessanteste Teil des ROM-BIOS sind die Routinen, die treffend
Basic Input/ Output Services bzw. BIOS heißen, was übersetzt soviel wie Grundle­
gende Ein-/Ausgabe-Dienstprogramme bedeutet. Diese Programme liefern die
grundsätzliche Steuerung der verschiedenen Komponenten des Computers,
besonders der peripheren Ein-/Ausgabegeräte, wie z.B. der Plattenlaufwerke, die
sehr genau kontrolliert werden müssen (einschließlich detaillierter Fehlerkontrol­
len). Um die gesamte Arbeit des Computers zu unterstützen, liefert das ROM-BIOS
zahlreiche Dienstprogramme, die sowohl dem Betriebssystem des Computers
(DOS) als auch unseren Anwenderprogrammen zur Verfügung stehen. Auf diesen
Teil des ROM-BIOS werden wir im Verlaute dieses Buches immer wieder zu spre­
chen kommen.
Der dritte Teil des ROM-BIOS bei den IBM-Mitgliedern der PC-Familie ist das ein­
gebaute ROM-BASIC (das auch Kassetten-BASIC genannt wird). Dies ist der Kern
der Programmiersprache BASIC und er kann entweder alleine verwendet werden
oder (ohne daß wir es merken) als Teil des BASIC von DOS dienen.
Alle diese ROM-BIOS-Routinen sind in sehr kompakter Weise in diesem 64K-gro­
ßen F-Block des Speichers enthalten. Die Größe dieses Blocks variiert in der PC­
Familie von Modell zu Modell, da einige von ihnen mehr Programmunterstützung
erfordern als andere. Zum Beispiel drängt sich beim PCjr wahrscheinlich in diesem
Bereich das umfangreichste Programmpaket, weil der Jr für seine Arbeit billige
Software verwendet, während andere Modelle für die gleiche Arbeit teuerere Hard-
90
7 Der Arbeitsspeicher
ware einsetzen. A llgemein kann man sagen, daß je komplizierter ein Modell ist,
desto mehr Software in das ROM-BIOS gepackt wird. So hat der weiterentwickelte
AT erheblich mehr ROM-BIOS-Software als der originale PC.
Mit etwas Vorsicht können wir alle Bereiche des Speichers erforschen oder mit
ihnen experimentieren. Zum Beispiel weiß ich zufällig, daß das ROM-BASIC bei
allen
IBM-Modellen
der
PC-Familie
an der
segmentierten
Speicheradresse
F600:0000 beginnt. Damit können wir mit dem DEBUG-Programm einen Teil des
Programmcodes auf dem Bildschirm ausgeben lassen und uns die Informationen
ansehen, die in BASIC versteckt sind. Zu diesem Zweck starten wir DEBUG und
geben das Kommando D F600:0000 ein. Daraufhin wird uns der erste Teil des
BASIC-Codes gezeigt. Wenn wir dann nur noch das DEBUG-Kommando D einge­
ben (ohne weiteren Zusatz), erhalten wir die nachfolgenden Stücke des BASIC­
Codes, bis uns das gesamte BASIC vorliegt.
Wir können auch ein kurzes BASIC-Programm schreiben, das das ganze ROM­
BIOS durchforscht und nach Informationen sucht. In Anhang A finden Sie ein
Listing für ein kurzes Programm, das MSG_SUCH heißt, den ganzen F-Block
durchläuft und nach einem String aus fünf Buchstaben oder Interpunktionszeichen
in einer Reihe sucht. Wenn es fündig wird, wird die Information auf dem Bildschirm
ausgegeben und die Jagd geht weiter. Wenn Sie mehr darüber wissen wollen, was
im ROM-BIOS Ihres Computers zu finden ist, machen Sie einen Versuch mit MSG_
SUCH.
Schließlich ist noch etwas sehr interessant, was man über das ROM-BIOS wissen
sollte. IBM setzt ein Erstellungsdatum an das Ende von BIOS. Wir können das
Datum anschauen, wenn wir wollen. Es ist interessant, weil es uns im Wesentlichen
sagt, wann das ROM-BIOS für unser Gerät fertiggestellt wurde. Man kann damit
auch feststellen, ob das ROM-BIOS überarbeitet wurde, was IBM in seltenen Fällen
macht. Das folgende einfache Programm sucht den Datumseintrag heraus, und
zeigt ihn, falls er vorhanden ist:
10
20
30
40
50
60
70
80
' Ausgabe des ROM-BIOS-Datums
DEF SEG
DATE.$
FOR I
=
=
=
DATE.$
&HFFFF
""
5 TO 12
=
DATE.$
+
CHRSCPEEKCI
NEXT
IF PEEK
(7) <> ASCC"/") THEN DATE.$
=
"nicht vorhanden"
PRINT "Das ROM-BIOS-Datum ist ";DATE.$
Während alle IBM-Mitglieder der PC-Familie diesen Datumseintrag haben, ist er
bei den meisten anderen Mitgliedern nicht vorhanden, einschließlich der Compaq­
Modelle. Jedoch werden Sie feststellen, daß einige Hersteller der PC-kompatiblen
Computer so freundlich waren, den Datumseintrag bei ihren Geräten ebenfalls mit­
zuliefern. Der Senior-Partner von Panasonic ist ein solcher Computer.
Zusätzlich zum Datumseintrag gibt es noch einen ID-Code, der von Programmen
verwendet werden kann, die wissen müssen, ob sie auf einem der abweichende­
ren Modelle der Familie laufen.
7.4 Zugriff auf Speichererweiterungen
91
Das folgende einfache BASIC-Programm gibt das ID-Byte aus:
10 ' Ausgabe des Geraete-ID-Bytes
20 DEF SEG
30 ID
=
=
&HFFFF
PEEK C14)
40 PRINT "Das ID-Byte ist ";ID;"hex "; HEXSCID)
Das originale PC-Modell hatte ein ID-Byte von hex FF. Der Code FE wird manch­
mal als XT-Code bezeichnet, aber er kann bei einer Vielzahl von Modellen gefun­
den werden, einschließlich des XT und des Portable PC. Der abweichende PCjr hat
das ID-Byte FD. Der PCjr unterscheidet sich soweit von den anderen Modellen, daß
manche Programme über das ID-Byte des Jr ihre Operationen auf den Jr ausrich­
ten. Ähnlich wird das AT-Modell durch den Bytecode FC identifiziert.
Da jedes Computermodell seine eigenen Charakteristiken aufweist, sollten sich
Programme entsprechend automatisch anpassen können, was mithilfe des ID­
Codes möglich ist. In dieser Hinsicht ist es bedauerlich, daß die wichtigsten Mit­
glieder der Familie, die nicht von IBM hergestellt werden, weder durch ein Modell­
ID-Byte noch durch das ROM-BIOS-Datum leicht identifiziert werden können.
7.4
Zugriff auf Speichererweiterungen
Während die regulären Mitglieder der PC-Familie durch das grundsätzliche Design
ihres 8088-Mikroprozessors auf die Adressierung von nur einem Megabyte Spei­
cher beschränkt sind, kann der AT-Zweig der Familie, der den 286-Mikroprozessor
verwendet, mit sehr viel mehr Speicher arbeiten.
Wie wir am Ende des Kapitels 6 schon erwähnt haben, können Computer mit dem
286 bis zu 16 Megabytes an realem Speicher haben. Interessant ist, daß genau die
gleiche Speichergrenze viele Jahre lang für die großen millionenteueren Rechen­
anlagen von IBM galt. Es ist eine überraschende Vorstellung, daß die mächtigen
Großrechenanlagen von IBM keine höhere Kapazität als· unsere kleinen Mikropro­
zessoren hatten.
Zusätzlich zu einem größeren realen Arbeitsspeicher bietet der 286 des AT auch
noch einen riesigen virtuellen Speicher, der einen größeren Speicherumfang simu­
liert, als wirklich vorhanden ist. (Näheres können Sie im Abschnitt „Wie der virtuelle
Speicher funktioniert" nachlesen.) Der virtuelle Speicher des AT kann einem Pro­
gramm bis zu einem Gigabyte (1024 Megabytes) Arbeitsspeicher zur Verfügung
stellen.
Man muß bedenken, daß der potentielle Adreßbereich eines Mikroprozessors und
die spezifische Fähigkeit des Computers, diesen Adreßbereich zu nutzen, zwei ver­
schiedene Dinge sind. Während der 286 bis zu 16 Megs Speicher erlaubt, hat das
IBM AT-Modell eine offizielle Grenze von 3 Megs an realem Speicher.
Die volle Ausnützung der Speichererweiterung des AT oder des virtuellen Spei­
chers erfordert eine geeignete Betriebssystemkonfiguration (und die zugehörigen
Programme). Da der originale PC und sein wichtigstes Betriebssystem, DOS, nicht
im Hinblick auf Speichererweiterungen und den virtuellen Speicher entwickelt wur-
92
7 Der Arbeitsspeicher
den, wird das Potential dieser Eigenschaften größtenteils ungenützt bleiben, bis wir
eine neue Generation von Betriebssystemen und Anwendersoftware bekommen,
die für den AT gemacht ist.
Ein Programm kann jedoch durchaus bereits Nutzen aus der Speichererweiterung
des AT ziehen. Normalerweise arbeitet ein Programm mit einigen Dienstprogram­
men, die das eingebaute ROM-BIOS zur Verfügung stellt. Eines dieser Dienstpro­
gramme überträgt Datenblöcke zwischen dem erweiterten Speicher und dem kon­
ventionellen Speicher in jeder gewünschten Größe. Ein Programm kann auch den
286- Mikroprozessor vom reellen Modus (in dem er wie ein normaler 8088 arbeitet)
in den geschützten Modus umschalten. Ein solches Programm muß dann schon
hochentwickelt sein, wenn es den geschützten Modus erfolgreich manipulieren
will. Wenn ein Programm nur Vorteil aus dem erweiterten Speicher ziehen will, muß
es lediglich das BIOS-Dienstprogramm für den Speichertransfer verwenden und
kann alle Komplikationen, die aus dem geschützten Modus entstehen, vermeiden.
Wir haben ein fertiges Beispiel eines Programmes zur Hand, das das BIOS-Über­
tragungsdienstprogramm für die Speichererweiterung des AT nutzt. Es ist das vir­
tuelle Disk-Dienstprogramm, kurz VDISK genannt, das seit Version 3.0 in DOS ent­
halten ist. Wenn VDISK mit dem erweiterten Speicher aktiviert wird, transportiert es
mit dem BIOS-Übertragungsprogramm Daten in und aus dem erweiterten Spei­
cher, ohne daß VDISK im geschützten Modus arbeiten oder direkt den erweiterten
Speicherbereich manipulieren muß. Aus dem Assemblerlisting des Programmes,
das mit den DOS-Disketten geliefert wird, können Sie sehen, wie VDISK auf den
erweiterten Speicher zugreift und ihn verwaltet.
Wie ein virtueller Speicher funktioniert
Der virtuelle Speicher beruht auf einem Verfahren, das eine ganz exakte Zusam­
menarbeit zwischen dem Mikroprozessor, einem Hilfsprogramm für den virtuellen
Speicher und der Platte des Computers erfordert. Im Wesentlichen funktioniert das
auf folgende Weise.
Wenn ein Programm aktiviert wird, erzeugt das Betriebssystem einen „virtuellen
Speicherbereich", ein Modell für den Speicherumfang und die Speicheradressen,
auf die ein Programm zugreifen kann. Anschließend wird ein Teil des „realen" bzw.
physikalischen Speichers einer Operation übergeben, die der Kern des virtuellen
Speicherkonzeptes ist.
Mit Hilfe einer Eigenschaft des 286-Mikroprozessors beauftragt das Hilfsprogramm
für den virtuellen Speicher, das im Betriebssystem enthalten ist, den 286 damit,
den realen Speicher, der dem Programm zugewiesen wurde, auf eine andere
Adresse zu verlagern, auf die virtuelle Adresse, die das Programm benützen wird.
Eine „speicherabbildende" Eigenschaft im 286 läßt den realen Speicher so
erscheinen, als verwende er zum Arbeiten andere Speicheradressen als seine
echten realen Adressen.
7.4 Zugriff auf Speichererweiterungen
Programm,
das den
virtuellen
Speicher
benützt
93
REALER SPEICHER
Enthält die aktiven Teile
des virtuellen Speichers
CJ
�
PLATTE
speichert Teile
des virtuellen
Speichers
Abb. 7-2:
Der virtuelle Speicher
Was wir bisher beschrieben haben, ist nur ein Trick, der einen Teil des realen Spei­
chers scheinbar auf andere virtuelle Adressen verlagert. Der wichtigste Teil des vir­
tuellen Speichers kommt mit dem nächsten Schritt, wenn unsere Programme ver­
suchen, mehr virtuellen Speicher zu verwenden, als realer Speicher vorhanden ist.
Ein Programm startet mit einem Teil seines (großen) virtuellen Speicherbereichs,
der in einem Teil des (kleineren) realen Speichers des Computers abgebildet ist.
Solange das Programm nur mit diesem Teil des virtuellen Speichers arbeitet, funk­
tioniert alles gut. Das Programm arbeitet in Wirklichkeit mit anderen Speicherplät­
zen, als es glaubt, aber das macht nichts. Was passiert, wenn das Programm ver­
sucht, ein Stück des großen virtuellen Speicher zu verwenden, der nicht einem Teil
des kleineren realen Speichers zugeordnet ist? In diesem Fall bemerkt die Abbil­
dungstabelle des Mikroprozessors, daß das Programm eine Adresse benützen will,
die im Moment nicht existiert. Der Mikroprozessor erzeugt dann einen sogenannten
Seitenfehler.
Wenn ein Seitenfehler auftritt, der anzeigt, daß ein Programm versucht, eine vir­
tuelle Adresse zu verwenden, die nicht aktiv im realen Speicher abgebildet ist,
dann tritt ein spezielles Hilfsprogramm für den virtuellen Speicher in Aktion. Es hält
das Programm vorübergehend an, solange es die Krise behandelt. Das Hilfspro­
gramm wählt einen Teil des virtuellen Speichers, der zur Zeit im realen Speicher ist,
und sichert seinen Inhalt vorläufig auf die Platte. Dieser Vorgang wird Auslagern
genannt. Der Teil des realen Speichers wird wiederhergestellt, um erneut als Teil
des virtuellen Speichers zu dienen. Wenn der ausgelagerte Teil des Speichers wie­
der benötigt wird, wird er wieder eingelagert, indem er von der Platte zurückkopiert
wird.
94
7 Der Arbeitsspeicher
Wie Sie sehen können, wird die Platte des Computers als Lagerraum benützt, um
die Teile des virtuellen Speichers aufzubewahren, die im Moment nicht benötigt
werden.
Abhängig davon, wie sich die Dinge entwickeln, können die Operationen des vir­
tuellen Speichers entweder ganz reibungslos verlaufen oder soviele Ein- und Aus­
lagerungen in den und aus dem Speicher enthalten, daß durch das Warten auf den
Datenaustausch zwischen Speicher und Platte zuviel Zeit vergeudet wird. Dieser
Vorgang wird Überlastung genannt. Wenn ein virtuelles Speichersystem überlastet
ist, wird sehr wenig Arbeit erledigt.
Ein virtuelles Speichersystem kann einen sehr sensiblen Balanceakt enthalten, das
sogenannte Systemtuning. Unsere Mikrocomputer können von einer angemesse­
nen und sorgfältigen Verwendung des virtuellen Speichers profitieren, aber sie
sind zu klein und zu langsam, um dieses leistungsfähige Konzept ganz ausnützen
zu können.
7.5
Speicherbänke und Zusatzspeicher
Während die Zukunft der PC-Familie dem AT-Zweig der Familie mit dem 286Mikroprozessor gehört, werden Vergangenheit und Gegenwart noch durch die Mil­
lionen von PCs mit dem 8088 bestimmt. Die ATs werden vielleicht auf riesige Spei­
chererweiterungen zugreifen können, aber ein PC ist auf die Adressierung von nur
einer Million Bytes an Speicher und nur 640K für Programme und Daten begrenzt.
Für größere Aufgaben ist das viel zu wenig Speicher.
Die Speicherbegrenzung des PC kann jedoch durch eine Idee gelöst werden, die
Speicherbankumschaltung heißt.
Durch die Speicherbankumschaltung kann der Computer in Wirklichkeit mehr
Speicher haben, als dafür Platz im 1-Megabyte großen Adreßraum des Mikropro­
zessors ist. Der Speicher ist physikalisch im Computer installiert, aber er ist nicht
fest irgendeinem Platz im Adreßraum des Mikroprozessors zugeordnet. Statt des­
sen befindet sich der Speicher in einer Art „Rumpelkammer", ohne Adresse und
für unsere Programme unerreichbar, bis er angeschlossen wird.
Die Speicherkarten für diese besondere Art von Speicherbankumschaltung kön­
nen die Adressierung des Speichers beliebig ein- und ausschalten und einsetzen.
Eine Speicherbankumschaltung kann z.B. acht Speicherbänke enthalten, von
denen jede 64K (insgesamt 512K) faßt. Alle diese 64K-Blöcke teilen sich einen ein­
zigen 64K-Adreßblock im Speicher des Computers. Es kann immer nur eine der
acht Bänke aktiv sein und Zugriff auf ihre Daten erlauben, während die anderen
gesperrt sind.
Der Vorteil der Speicherbankumschaltung besteht darin, daß mehr Arbeitsspei­
cher im Computer installiert werden kann. Um eine Speicherbank anzuschließen,
muß lediglich an die Speicherkarte ein Kommando gesendet werden, daß sie die
Speicherbankadressierung ändern soll. Die Speicherbank ist völlig ohne Verzöge­
rung genauso schnell angeschlossen, wie eine Instruktion ausgeführt werden
kann.
7.5 Speicherbänke und Zusatzspeicher
95
Es gibt aber auch Komplikationen bei der Verwendung von Speicherbankum­
schaltungen. Im Gegensatz zum konventionellen Speicher des Computers erfor­
dert der bankgeschaltete Speicher eine aktive Verwaltung, um sicherzustellen, daß
die richtigen Teile zur richtigen Zeit verfügbar sind. Die Notwendigkeit dieser Ver­
waltung und eines entsprechend geeigneten Standardverfahrens hatten den Ein­
satz der Speicherbankumschaltung lange verzögert bis der Softwaregigant Lotus
und die Mikroprozessor-Hersteller Intel zusammen einen Standard für die Arbeit
mit dem bankgeschalteten Speicher festlegten. Offiziell wird diese Speicherbank­
umschaltungsmethode die Lotus/Intel/Microsoft Expanded Memory Specification
genannt, aber oft wird auch der Name der Intel-eigenen Speicherkartengestaltung
für diese Spezifikation gebraucht: „Above Board".
(Um einer Begriffsverwechslung vorzubeugen, sei darauf hingewiesen, daß Spei­
cherbankumschaltungen, über die wir hier reden, Zusatzspeicher heißen, während
der spezielle Speicher des AT, der über 1 Megabyte hinausreicht, Speichererweite­
rung heißt. Die beiden Begriffe der Speichererweiterung und des Zusatzspeichers
kann man leicht verwechseln, also passen Sie auf.)
Im folgenden beschreiben wir, wie der Zusatzspeicher funktioniert. Der Zusatzspei­
cher arbeitet mit drei Teilen: ein Teil Hardware (die bankgeschaltete Speicherkarte)
und zwei Teile Software (die Zusatzspeicherverwaltung EMM (von expanded
memory manager) und das Anwenderprogramm, das den Speicher benützt). Die
bankgeschaltete Speicherkarte - die die Above Board von Intel oder eine andere
ähnliche Speicherkarte sein kann - liefert einen Speicher von 64K bis zu 8 Mega­
bytes, der in kleine 16K-Seiten unterteilt ist, die individuell durch die Speicherbank­
umschaltung wiederadressiert werden können.
Das EMM-Speicherverwaltungsprogramm wird aktiviert, wenn der Computer ein­
geschaltet wird, und es liefrt die Grundlage für die Operationen des Zusatzspei­
chers. Seine Hauptaufgabe besteht darin, einen unbenutzten Teil im Speicherbe­
reich des PC zu finden, in den es den bankgeschalteten Speicher abbilden kann.
Es braucht einen Arbeitsbereich von ganzen 64K, der Seitenrahmen heißt, aber die
Lage des Seitenrahmens ist flexibel. Wie wir schon durch einen Blick auf die allge­
meine Speicherbelegung sehen können (siehe Abb. 7-1), sind die Speicherblöcke
D und E offensichtlich besonders gute Kandidaten. Das EMM kann jedoch den Sei­
tenrahmen auch genauso gut in Block C plazieren. Seine genaue Lage hat nichts
zu bedeuten, solange er nicht mit einer anderen Anwendung des Speicheradreß­
bereichs in Konflikt kommt. Auch muß der 64K-Seitenrahmen nicht an einer Spei­
cherblockgrenze liegen. Zum Beispiel kann er bei der Segmentadresse C400 be­
ginnen und sich über den Rest des Blockes C bis in die ersten 16K des Blockes D
erstrecken.
Sobald das EMM festgelegt hat, wo sich sein 64K-Seitenrahmen befinden wird, teilt
es den Seitenrahmen in vier 16K-Unterbereiche (Windows). Danach ist es arbeits­
bereit und kann ein Anwenderprogramm versorgen, das weiß, wie man es samt
der Ein- und Auslagerung von Speicherdaten in die und aus den 16K-Unterberei­
chen benützt.
96
7 Der Arbeitsspeicher
SPEICHERZUSATZ
HAUPT­
SPEICHER
0
Abb. 7-3:
640K
Windows
Der Zusatzspeicher
Um den Zusatzspeicher verwenden zu können, teilt ein Anwenderprogramm dem
EMM mit, daß es einen oder mehrere der vier verfügbaren Unterbereiche benötigt.
Das Anwenderprogramm kann die EMM-Überwachung veranlassen, ihm mehr
Speicherseiten zuzuweisen und dann diese Seiten durch Speicherbankumschal­
tung in die Unterbereiche zugänglich zu machen. Da das Anwenderprogramm mit
unterschiedlichen Datenseiten von 16K arbeiten muß, beauftragt es das EMM
damit, unterschiedliche Seiten an diese Stelle zu schalten. Abbildung 7-3 zeigt, wie
dies funktioniert.
Obwohl dieses Schema sehr leistungsfähig und auch sehr schnell ist, hat es doch
offensichtliche Grenzen. Zum einen kann es nur für Programmdaten eingesetzt
werden und nicht für den Programmcode selbst. DOS muß noch genügend Raum
im konventionellen Speicherbereich finden, um große Programme zu speichern,
aber sobald diese Programme im konventionellen Speicher laufen, können sie den
Zusatzspeicher nutzen, um mit mehr Daten zu arbeiten als im konventionellen
Speicher untergebracht werden können. Ein anderer deutlicher Nachteil des
Zusatzspeichers ist, daß ein Programm wissen muß, wie man mit der Zusatzspei­
cherverwaltung, EMM, zusammenarbeitet, damit es den Speicher verwenden kann,
und es muß auch wissen, wie man richtig mit den Daten arbeitet, die in 16K-Seiten
zerlegt sind. Innerhalb dieser Einschränkungen kann das Zusatzspeichersystem
die Fähigkeit unseres Computers, mit großen Datenmengen zu arbeiten, enorm
erweitern.
Dieses Zusatzspeichersystem kann bei jedem normalen Mitglied der PC-Familie,
einschließlich des AT-Zweiges der Familie, eingebaut werden. Obwohl die ATs ihre
eigene Speichererweiterung haben, die über die 1-Mega-Grenze des PC hinaus­
reicht, können sie auch den Zusatzspeicher innerhalb des regulären 1-Mega­
Adreßbereichs verwenden.
7.5 Speicherbänke und Zusatzspeicher
97
1.
Erklären Sie, warum sich die segmentierten Adressen 1234:0005, 1230:0045, 1200:0345,
und 1000:2345 alle auf den gleichen Speicherplatz beziehen. Welche der folgenden Adres­
sen spricht eine andere Speicherstelle an als die anderen zwei: A321:789A, A657:453A und
A296:824A? Gibt es ein ideales Verfahren, die zwei Hälften einer segmentierten Adresse
aufzuteilen?
2.
Verwenden Sie das Disassemblerkommando U von DEBUG und disassemblieren Sie einen
Teil des ROM-BIOS ihres Computers (zum Beispiel so: U FOOO:AOOO L 100). Finden Sie
dann die Beispiele für die Back-Words-Speicherung heraus.
3.
Wie könnte ein BASIC-Programm aussehen, das mit experimentellen Mitteln herausfindet,
wieviel Speicher im Computer installiert ist? Kann diese Operation den Computer stören?
Schreiben Sie so ein Programm und beobachten Sie, was passiert. (Eine schnelle Version
eines solchen Tests gibt es im „System lnformation"-Programm, das ein Teil des Norton-Utili­
ties-Programmpaketes ist.)
4.
Was sind Ihrer Meinung nach die Vorteile und Grenzen des Above-Board-Zugriffs auf die
Speicherbankumschaltung? Was muß ein Programm tun, um sie vorteilhaft zu nutzen?
Welche Probleme könnte ein Programm haben, wenn es mit Datenbereichen von je 16K
Größe arbeitet?
5.
Wenn Sie mit dem MSG_SUCH-Programm das ROM-BIOS nach Informationen durchsu­
chen, werden Sie feststellen, daß es einige falsche Meldungen bringt. Zum Beispiel ist eine
„Meldung", die es in meinem Computer entdeckt hat, „t'<.u". Dies ist nichts Faszinierendes
oder Wichtiges, sondern es liegt daran, daß das Programm alles vom Leerzeichen bis zum
Kleinbuchstaben z als mögliche Informationszeichen akzeptiert. Damit können wir die Inter­
punktion in einer Information herausfinden, aber wir erhalten auch seltsame Informationen,
wie die oben genannte, die hauptsächlich aus Interpunktionszeichen bestehen. Welchen
Test können wir dem Programm hinzufügen, um diesen Unsinn herauszufiltern? Versuchen
Sie so einen Filter in MSG_SUCH einzubauen und experimentieren Sie mit verschieden
strengen Regeln für akzeptierbare Meldungen. Sehen Sie sich dann das Ergebnis an.
98
8
Platten
-
Teil 1: Grundlagen
Wir beginnen hier mit drei Kapiteln über die Platten unseres Computers. Nur eine
andere Komponente unseres Computers (der Bildschirm) hat ebenso vielfältige
und faszinierende Aspekte wie die Platten.
Da alles, was wir mit dem Computer bearbeiten, - alle unsere Programme und
Daten - letztendlich auf den Platten gespeichert wird, ist es sehr wichtig für uns, die
Plattenspeicherung des Computers zu verstehen, und sie ist daneben auch sehr
interessant.
Wir behandeln das Thema der Platten in drei Kapiteln. Dieses Kapitel liefert
zunächst Grundkenntnisse darüber, was Platten überhaupt sind. Da wir mit unse­
ren Platten unter der Steuerung von DOS, dem Disk Operating System, arbeiten,
werden wir in Kapitel 9 die Platten aus der DOS-Perspektive betrachten. In Kapitel
10 besprechen wir schließlich einige Details.
8.1
Das Prinzip der Plattenspeicherung
Die Plattenspeicherung unseres Computers basiert auf zwei Dingen: einer Auf­
zeichnungstechnik und einem Verfahren für schnellen Zugriff.
Die Technik ist die magnetische Aufzeichnung. Es ist die gleiche Methode, die
grundsätzlich bei Magnetbändern verwendet wird und uns z.B. von Musikkasset­
ten- oder Videorecordern (VCR) bekannt ist. Die Grundlage der magnetischen Auf­
zeichnung liegt in der Tatsache, daß Eisen und einige andere Materialien magneti­
siert werden können. Vielleicht erinnern Sie sich noch aus Ihrem Physikunterricht,
wie Eisen magnetisiert wird, wenn es sich in einem Magnetfeld befindet. Das Ma­
gnetfeld wird, im weiteren Sinne, auf dem Eisen aufgezeichnet, und die ganze
hochentwickelte Magnetaufzeichnung ist nichts anderes als eine Verfeinerung die­
ser einfachen Technik.
Die Magnetaufzeichnung wurde hauptsächlich für die Aufnahme von T önen
benützt, die eine analoge Form von Information sind. Erst später wurde die Magnet­
aufzeichnung für die Digitalaufzeichnung, die unsere Computer erfordern, ange­
paßt. Das ist eine kleine Ironie, weil die Magnetaufzeichnung in ihrem Wesen binär
(magnetisiert oder nicht) bzw. digitaler Natur ist.
Die Digitalmagnetaufzeichnung findet auf der Oberfläche von magnetisch emp­
findlichem Material statt, das normalerweise eine Form von Eisenoxid ist, das dem
magnetischen Material seine charakteristische rostbraune Farbe verleiht. Die Ma­
gnetschicht ist ziemlich dünn. Tatsächlich funktioniert sie sogar umso besser, je
dünner sie ist. Sie ist auf einem Trägermaterial aufgetragen, das bei Magnetbän­
dern und Disketten normalerweise aus biegsamen Mylar-Plastik besteht und bei
den sogenannten Festplatten aus harten Aluminiumplatten.
Egal, ob wir über Bänder oder Platten sprechen, die Art, wie die Information auf der
magnetischen Oberfläche aufgezeichnet wird, ist die gleiche. Die Oberfläche wird
8.1
Das Prinzip der Plattenspeicherung
99
Drehbewegungen
der Platte
:EJ�: �· ·�
-
Bewegungen
Schreib-/Lesekopfes
Abb. 8-1:
•...
··
·.
..
•
.
·.
--...... „
. . .. �
. ··;.;.;···
··;,;;.
··��---�
Direkter Plattenzugriff
wie ein Bereich aus Punktpositionen behandelt, von denen jede als ein Bit betrach­
tet wird, die auf das magnetische Äquivalent von 0 oder 1 gesetzt werden kann. Da
die Lage dieser Punktpositionen nicht genau festgelegt ist, beinhaltet das Aufzeich­
nungsschema einige „Anpassungsmarkierungen", die dem Aufzeichnungsgerät
helfen, die Aufzeichnungsposition zu finden und sich darauf einzustellen. Die Not­
wendigkeit dieser Synchronisierungsmarken begründet zum Teil, warum unsere
Platten „formatiert" werden müssen, bevor wir sie verwenden können.
Das ist das Wesen der Aufzeichnungstechnik, von der gesagt wurde, daß sie eines
der zwei Dinge ist, die die Grundlage der Plattenspeicherung darstellen. Die
andere Sache ist das Schnellzugriffsdesign einer Platte.
Ein Magnetband verhält sich linear, weil Information von vorne nach hinten auf­
gezeichnet werden muß. Es gibt keinen schnelleren Weg, um in die Mitte des Ban­
des zu springen, als die ganze Länge bis zur gesuchten Information abzufahren.
Bei einer sich drehenden Platte ist das jedoch anders.
Bei einer Platte kann man zwei typische Eigenschaften ausnützen, um schnell an
eine beliebige Position der Oberfläche zu gelangen. Zunächst einmal dreht sich
die Platte, und eine Umdrehung vollzieht sich in kürzester Zeit. Eine Platte dreht
sich schneller, als man vielleicht denkt. Eine Diskette dreht sich mit 300 RPM (Um­
drehungen pro Minute), das bedeutet eine Fünftelsekunde pro Umdrehung. Bei
einer Festplatte sind es etwa 3600 RPM, oder eine Sechzigstelsekunde pro Dre­
hung.
Die andere typische Eigenschaft ist die Bewegung des Magnetkopfes, der dem
Tonarm eines Plattenspielers entspricht. Sie verläuft von außen nach innen über
die Platte. Bei einer Diskette dauert es durchschnittlich etwa eine Sechstelsekunde,
um zu einer gewünschten Position zu gelangen, bei einer Festplatte etwa 1/25
einer Sekunde.
Wenn wir diese zwei Faktoren kombinieren - die Bewegung des Schreib-/Lese­
kopfes über die Plattenoberfläche und die Drehung der Platte unter der Position
des Kopfes - sehen wir, daß wir sehr schnell jeden Teil der Platte erreichen. Das ist
der Grund, warum die Platten des Computers als Speicher mit Direktzugriff (engl.:
random access) bezeichnet werden, weil wir direkt auf Daten zugreifen können,
d.h. wahlfrei (random), ohne den ganzen Informationssatz der Reihe nach passie­
ren zu müssen, wie wir es bei einem Magnetband tun müßten.
100
8 Platten - Teil 1: Grundlagen
Spuren
Sektoren
Abb. 8-2:
Die Spuren und Sektoren einer Platte
Die Analogie von Platte und Plattenspieler vermittelt nur eine vage Vorstellung
davon, wie die Speicherung von Daten auf einer Platte funktioniert. Es gibt aller­
dings einige wichtige Unterschiede.
Bei einer Schallplatte werden die T öne in einer fortlaufenden spiralförmigen Rille
aufgezeichnet. Damit ist sie, genauso wie ein Band, eigentlich ein lineares
Medium, obwohl wir leicht von einem Teil der Schallplatte zu einem anderen sprin­
gen können. Bei unseren magnetischen Platten ist die Aufzeichnung andererseits
wirklich in einer Reihe von konzentrischen Kreisen angeordnet, die nicht miteinan­
der verbunden sind.
In der Fachterminologie heißt ein solcher konzentrischer Kreis einer Platte Spur.
Die Plattenoberfläche ist in diese Spuren/Kreise unterteilt, beginnend am Außen­
rand der Platte mit der ersten Spur bis zur innersten Spur. Die Anzahl der Spuren
variiert je nach Plattentyp. Konventionelle Disketten, vom Typ mit doppelter
Schreibdichte (double-density), haben 40 Spuren. Disketten mit vierfacher
Schreibdichte (quad-density), einschließlich der hochkapazitativen Disketten des
AT, haben 80 Spuren. Festplatten haben normalerweise etwa 300 bis 600 Spuren.
Die Spuren, egal wieviele es sind, werden durch Nummern identifiziert, beginnend
mit Spur Null als äußerste Spur.
Die Spuren belegen nur eine überraschend kleine F läche einer Platte. Bei Disket­
ten mit doppelter und mit vierfacher Schreibdichte beträgt der Raum zwischen der
ersten und letzten Spur etwas über ein dreiviertel Zoll (bzw. fast genau 2 cm). Tech­
nisch ausgedrückt heißt das, daß bei einer Diskette mit doppelter Schreibdichte
mit 48 Spuren pro Zoll aufgezeichnet wird und bei einer mit vierfacher Schreib­
dichte mit 96 Spuren pro Zoll. (In der Fachliteratur wird Spuren pro Zoll oft mit TPI
(von tracks per inch) abgekürzt. Wenn Sie also diesem Ausdruck begegnen, wis­
sen Sie, was dahinter steckt.)
8.1 Das Prinzip der Plattenspeicherung
101
Seite O
Seite 1
Seite 2
Abb. 8-3:
Die Seiten einer Platte
Genauso wie die Diskettenoberfläche in Spuren eingeteilt wird, wird auch eine
Spur wieder unterteilt, wobei die Teile Sektoren heißen. Der Plattentyp und sein
Format bestimmen, wieviele Sektoren es in einer Spur gibt. Bei den üblichen Dis­
ketten sind es acht oder neun, bei hochkapazitativen Disketten 15 und bei Festplat­
ten 17, wie sie in der Regel in der PC-Familie verwendet werden.
Sektoren haben immer eine feste Größe. Unser PC kann mit verschiedenen Sek­
torgrößen arbeiten, angefangen von 128 Bytes pro Sektor bis zu 1024 Bytes. Der
Standard sind derzeit 512-Byte-Sektoren.
Lesen und Schreiben von Daten vollzieht unser Computer immer in Form von gan­
zen Sektoren. Wie wir später sehen werden, können unsere Daten beliebig groß
sein und sie werden so aufbereitet, daß sie genau in die feste Speichergröße von
Sektoren passen. Aber die tatsächliche Plattenein-/ausgabe erfolgt nur in vollen
kompletten Sektoren.
Die Sektoren in einer Spur werden wie die Spuren einer Plattenseite durch Num­
mern identifiziert, die ihnen zugewiesen werden. Aber sie beginnen nicht mit Null,
sondern mit Eins (Sektor Nummer Null jeder Spur ist für ldentifizierungszwecke
reserviert, nicht für die Speicherung unserer Daten).
Die letzte Dimension einer Platte, die wir bis jetzt noch nicht erwähnt haben, ist die
Anzahl der Seiten. Eine Diskette kann auf zwei Seiten oder nur auf einer Seite
beschrieben werden (mehr darüber erfahren Sie in Abschnitt 8.2). Während eine
Diskette, wie alles, was flach ist, nur zwei Seiten hat, enthalten Festplattensysteme
oft mehr als einen Teller und können deshalb mehr als zwei Seiten haben. Die Sei­
ten einer Platte werden ebenfalls wieder durch eine Zahl identifiziert. Wie bei den
Spuren beginnt die Numerierung mit Null für die erste Seite.
Wenn wir all diese Dimensionen kombinieren, erhalten wir die Größe oder Spei­
cherkapazität einer Platte. Wir erhalten die gesamte Anzahl von Sektoren pro Platte,
102
8 Platten - Teil 1: Grundlagen
wenn wir die Anzahl der Seiten mit der Anzahl der Spuren pro Seite und der Anzahl
der Sektoren pro Spur multiplizieren. Multiplizieren wir dieses Ergebnis mit der
Anzahl der Bytes pro Sektor, die normalerweise 512 Bytes oder 1/2K beträgt, so
erhalten wir die Gesamtkapazität der Platte. Natürlich ist ein Teil der Gesamtkapazi­
tät, wenn wir mit der Platte arbeiten, für verschiedene Verwaltungszwecke reser­
viert, wie wir in Kapitel 9 sehen werden, aber die Anzahl, die wir auf diese Weise
berechnen, ist im wesentlichen die Speicherkapazität der Platte. Sie sollte die
gleiche sein oder nahe an der Kapazität liegen, die uns durch das DOS-Dienstpro­
gramm CHKDSK (check-disk) mitgeteilt wird.
Wenn Sie mehr über die Dimensionen Ihrer Platten lernen wollen und wenn Sie die
Norton-Utilities-Programme haben, können Sie sich mit dem Programm NU die
vollständigen Dimensionen Ihrer Platten anschauen. Gehen Sie zum Menü 2.2 Dis­
play Disk Technical Information und Sie erhalten die vier Dimensionen der Platten­
speicherung (zusammen mit einigen auf DOS bezogenen Informationen, über die
wir in Kapitel 9 sprechen werden).
In diesem Abschnitt über das Prinzip der Plattenspeicherung sollten wir auch
besprechen, wie die Platten physikalisch aussehen, wie sie verpackt und geschützt
sind. Aber das variiert je nach Plattentyp, und wir verschieben dieses Thema des­
halb, bis wir die wichtigsten Plattentypen besprochen haben.
8.2
Verschiedene Plattentypen
Es scheint mehr Plattentypen für unsere PC-Familie zu geben, als wir überhaupt
überblicken können. Wtr wollen uns hier nur die grundlegenden Typen ansehen,
auf eher exotische Varianten werden wir kurz hinweisen, die wichtigsten Typen
werden wir näher betrachten. Wtr müssen zunächst wissen, daß der graduelle Un­
terschied zwischen den Typen stark variiert. Einige Unterschiede sind fundamental,
andere sind wichtig, aber nicht grundlegend. Schließlich gibt es noch einige kleine
Variationen.
(Denken Sie daran, daß sich die Plattenspeichertechnik ziemlich schnell entwickelt
und Platten dauernd weiterentwickelt werden. Es ist durchaus möglich, daß die PC­
Familie in der Zeitspanne, in der dieses Buch geschrieben wird, neue Plattenfor­
mate hinzugewonnen hat. Es ist jedenfalls sicher, daß es in der Zukunft weitere
geben wird.)
Wir beginnen mit dem gebräuchlichsten Plattentyp, der 5 l/4-Zoll-Diskette. Sie
sehen ein Bild davon in Abbildung 8-4.
Es gibt eine Menge Variationen von dieser Diskette. Wtr wollen uns zunächst mit
den allgemeinen Charakteristiken dieses Diskettentyps befassen. Die eigentliche
Diskette ist aus einem weichen biegsamen Material, Mylar-Plastik mit einer ma­
gnetisch empfindlichen Eisenoxidschicht. Die Schicht ist auf beiden Seiten gleich,
sogar bei den „einseitigen" Disketten, die nur auf einer Seite aufzeichnen. Die
zweite Seite einer einseitigen Diskette wird bei der Herstellung u. U. lediglich nicht
überprüft, aber sie hat die gleiche Schicht. Viele Leute wissen übrigens nicht, daß
die erste Seite einer Diskette, die Aufzeichnungsseite einer einseitigen Diskette, die
untere Seite ist, nicht die obere etikettierte Seite.
8.2 Verschiedene Plattentypen
103
Die Diskette hat zwei Öffnungen. Eine ist die Drehnabe, in die das Diskettenlauf­
werk greift. Diese Nabe kann einen Verstärkungsring haben, um sicherzustellen,
daß die Diskette genau zentriert wird. Die andere Öffnung ist außerhalb der Dreh­
nabe. Sie liefert einen Bezugspunkt, der den Anfang einer Spur festlegt.
Die runde Diskette ist in eine schützende Diskettenhülle eingeschweißt, die
gewöhnlich schwarz ist. Auf der Innenseite der Hülle ist, fast völlig unsichtbar, ein
weißer Filzeinsatz. Der Einsatz wurde besonders dafür entworfen, daß die Diskette
ruhig gleitet und gleichzeitig gesäubert wird. Ein großer ovaler Schlitz stellt die Öff­
nung zur Verfügung, durch die der Schreib-/Lesekopf des Diskettenlaufwerks mit
der Diskette in Berührung kommt. Die zwei schmalen Einschnitte zu beiden Seiten
der Schreib-/Leseöffnung heißen Dehnungskerben. Sie sichern ab, daß sich die
Hülle nicht wirft. Neben der Nabenöffnung ist ein Index-Loch, durch das das Dis­
kettenlaufwerk auf das Index-Loch der Diskette zugreifen kann. Und schließlich ist
auf einer Seite dort eine Schreibschutzkerbe. Wenn diese Kerbe verschlossen ist,
können Sie die Diskette nicht beschreiben.
Bezüglich der Öffnungen und Kerben in der Diskettenhülle werden Ihnen vielleicht
einige Variationen begegnen. Manche Disketten haben keine Schreibschutzöff­
nung, was bedeutet, daß sie immer gegen Überschreiben geschützt sind. Diese
Disketten werden für die Originalkopien von Programmen benützt, die wir kaufen,
und ein Beispiel ist die Diskette, auf der DOS gespeichert ist. Vielleicht werden Sie
auch Disketten finden, die zwei Schreibschutzkerben und zwei Index-Löcher
haben. Das sind „flippies", die man umdrehen kann (einfach umdrehen und die
andere Seite verwenden).
Wir kommen nun zu den zahlreichen, völlig verschiedenen Diskettentypen, die alle
ganz gleich aussehen. Wir beginnen mit einseitigen und doppelseitigen Disketten.
In den frühen Tagen der PC-Familie wurden Disketten nur auf einer der beiden Sei­
ten beschrieben, wodurch ein kleiner Teil der Kosten für das Diskettenlaufwerk ein­
gespart wurde (dafür aber die potentielle Speicherkapazität halbiert wurde). Heute
wäre es unmöglich, wenn ein Computer nur einseitige Diskettenlaufwerke hätte.
Allerdings werden Programme üblicherweise immer noch auf einseitigen Disketten
geliefert. Das wollen wir noch etwas erläutern.
Ein einseitiges Diskettenlaufwerk kann nur
Disketten im einseitigen Format
beschreiben oder lesen. Andererseits kann ein doppelseitiges Laufwerk beide
Arten, ein- oder zweiseitig, lesen oder beschreiben. Eine Diskette, die als doppel­
seitig hergestellt ist, kann ebenfalls auf beide Arten verwendet werden. Eine Dis­
kette, die als einseitig hergestellt wird, kann nur als solche benützt werden. Jedoch
kann eine einseitige Diskette oft trotzdem ohne Probleme als zweiseitige Diskette
formatiert und verwendet werden, und das ist für viele verwirrend.
Wir nehmen an, daß wir doppelseitige Disketten und Laufwerke haben. Was
bestimmt, ob wir sie wirklich einseitig oder doppelseitig verwenden? Das ist eine
Software-Angelegenheit. Wenn eine Diskette formatiert wird, markiert das FORMAT­
Programm sie so, wie sie verwendet werden soll. Danach wird immer, wenn mit der
Diskette gearbeitet wird, diese Markierung überprüft.
104
8 Platten - Teil 1 : Grundlagen
Schutzmantel
Drehnabe
Schreibschutz­
kerbe
©5
Diskette
Schreib-/Leseöffnung
Abb. 8-4:
Eine 5 l/4-Zoll-Diskette
Wir können dies besser an einem Beispiel verstehen. Eine neue Diskette entspricht
einem leeren Blatt Papier. Stellen wir uns vor, daß wir auf dieses Blatt Papier nicht
schreiben können, bis es liniert ist. Wenn wir eine Diskette formatieren, zeichnen
wir etwas darauf auf, das diesen Schreiblinien sehr ähnlich ist und einen Rahmen
dafür liefert, was später auf die Diskette geschrieben wird. Zusätzlich gibt es beim
Formatieren einer Diskette ein zweites Element, das man mit einer Notiz auf dem
oberen Rand eines Blattes vergleichen kann, die besagt, ob man das Blatt umdre­
hen und die andere Seite verwenden kann oder nicht. Am Anfang der Diskette
zeichnet das FORMAT-Programm auf, wie die Diskette benützt werden kann, ein­
oder doppelseitig.
Im Gegensatz zu einem Stück Papier kann eine Diskette immer wieder formatiert
werden. Bei jeder Formatierung wird die vorhergehende Information gelöscht, und
auch der Formatierungstyp kann dabei geändert werden.
Nach diesen Grundinformationen können wir nun mehr über die zahlreichen For­
mate erfahren, die für eine 51/4-ZOll-Diskette möglich sind. Zunächst kann eine Dis­
kette ein- oder doppelseitig sein. Dann kann sie entweder mit acht oder neun Sek­
toren pro Spur formatiert sein. Daraus ergeben sich bereits vier verschiedene mög­
liche Formate. Das einseitige 8-Sektor-Format war das originale PC-Format und
nur damit konnte die erste Version von DOS, Version 1.0, arbeiten. Da das einsei­
tige 8-Sektor-Format das erste Format war, hat es die zweifelhafte Ehre, der klein­
ste gemeinsame Nenner zu sein, der universell für alle PC-Modelle und alle Versio­
nen von DOS gilt. Das ist der Grund, warum Software häufig noch in diesem
8.2 Verschiedene Plattentypen
Schreibschutz­
kerbe
105
Schutzmantel
D
Schreib-/LeseOffnung
Abb. 8-5:
Eine 3 112-Zoll-Mikrodiskette
Format geliefert wird, obwohl dieses Format schon längst überholt ist. Die DOS­
Version 1.10 fügte das doppelseitige 8-Sektor-Format hinzu. Bei DOS 2.0 hielt man
dann acht Sektoren pro Spur für überaus bescheiden und man beschloß, daß
neun Sektoren pro Spur sicher und zuverläßlich verwendet werden konnten. So
wurden mit DOS 2.0 die ein- und doppelseitigen 9-Sektor-Formate eingeführt.
Das sind zwar die vier Standardformate für 51/4-Zoll-Disketten, aber es gibt noch
mehr. Obwohl IBM nur double-density-Standarddiskettenlaufwerke (40 Spuren,
doppelte Schreibdichte) verwendet, hat man auch quad-density-Laufwerke (80
Spuren, vierfache Schreibdichte) in PCs installiert. Darüberhinaus gibt es noch
eine Vielzahl von (nicht standardgemäßen) quad-density-Formaten.
Weitere Varianten wurden mit dem hochkapazitativen Format des AT eingeführt.
Die Disketten mit hoher Aufzeichnungsdichte haben eine besondere magnetische
Schicht, die bis zu 15 Sektoren pro Spur ermöglicht. Zusätzlich erlangen diese
hochkapazitativen Laufwerke vierfache Schreibdichte, was 80 Spuren auf einer
Diskettenseite bedeutet. Es gibt glücklicherweise nur ein Format mit hoher Auf­
zeichnungsdichte, bis jetzt jedenfalls, so daß der ganze einseitige und doppelsei­
tige Unsinn etc. entfällt.
Es ist jedoch nicht ganz richtig, das hochkapazitative Format nur als zusätzliche
fünfte Ergänzung zu den vier Standardformaten für 51/4-Zoll-Disketten zu betrach­
ten, weil Disketten mit hoher Aufzeichnungsdichte eine spezielle magnetische
Schicht haben müssen.
106
8 Platten - Teil 1: Grundlagen
Die vier 5 l/4-Zoll-Standardformate kann man als Variationen der gleichen Disket­
tenart bezeichnen, während das hochkapazitative Format eine besondere (und
sehr viel teuerere) Diskette erfordert, obwohl sie wie die anderen Disketten aus­
sieht.
Damit wollen wir die Besprechung der Variationen der 5 1/4-Zoll-Disketten been­
den, aber bevor wir zu anderen Plattenarten übergehen, sollte noch kurz erwähnt
werden, daß es noch andere Diskettengrößen gibt, die allerdings in der PC-Familie
selten benützt werden. Es gibt das 8-Zoll-Format, das hauptsächlich von der älte­
ren Generation von Personal- und Textverarbeitungscomputern verwendet wurde.
Daneben gibt es noch die weniger bekannten 3 112-Zoll-Disketten, die wie eine Min­
iaturversion der 5 1/4-ZOll-Disketten aussehen.
Eine 3112-Zoll-Mikrodiskette ist in Abbildung 8-5 dargestellt.
Mikrodisketten sind viel kleiner als F loppy-Disketten und sie sind von einer festen
Hülle umschlossen. Dank des kleineren Formats und der harten Ummantelung
sind sie wesentlich leichter und sicherer zu versenden und zu transportieren (sie
passen gut in eine Tasche). In einer Mikrodiskette ist das gleiche biegsame Plastik
mit einem Metallnabenstück. Die Ummantelung ist hart und schützt die Diskette vor
Beschädigungen von außen. Die Nabenöffnung ist fast vollständig durch ein
Nabenstück verdeckt, und die Schreib-/Leseöffnung ist durch einen Metallschutz,
der mit Federkraft geöffnet wird, verschlossen. Es gibt noch einen weiteren Unter­
schied. Schreibschutz wird durch ein verschiebbares Plastiketikett hergestellt,
nicht durch Verschließen einer Kerbe.
Standardmikrodisketten werden mit vierfacher Schreibdichte beschrieben und
haben damit genau doppelt soviel Speicherkapazität wie die konventionellen Dis­
ketten. Wegen ihres kleinen Formats, ihres Schutzmantels und der höheren Spei­
cherkapazität werden sie von neueren Computern verwendet (z.B. vom Macintosh
von Apple und von zahlreichen japanischen Geräten). Tradition und die Probleme
der Inkompatibilität sowie die riesigen Investitionen der PC-Anwender in konventio­
nelle 5 l/4-Zoll-Disketten haben allerdings den Einsatz dieses verbesserten Disket­
tenformates innerhalb der PC-Familie verzögert.
Damit kommen wir zu den Festplatten (hard disks), die deshalb so heißen, weil die
magnetisch-beschichteten Disks selbst feste Platten sind, die aus einer Alumi­
niumlegierung bestehen. Wegen mehrerer Faktoren, darunter auch die viel höhere
Geschwindigkeit und die höhere Aufzeichnungsdichte, müssen Festplatten sorg­
fältig gegen Staub und andere Verunreinigungen geschützt werden. Die Festplat­
ten sind deshalb im Plattenlaufwerk versiegelt und können nicht wie eine Diskette
gewechselt werden.
Es gibt eine große Vielfalt von Festplatten, die sich in der Anzahl der Plattenteller
und aktiven Aufzeichnungsseiten, der Anzahl der Zylinder, der Anzahl der Sektoren
pro Spur, in der Geschwindigkeit und anderen Charakteristiken unterscheiden. Sie
gehören alle in die gemeinsame Kategorie der Festplatten. Zwei Variationen sind in
der PC-Familie am meisten vertreten.
8.2 Verschiedene Plattentypen
107
Die erste ist die 10-Megabyte-Platte, die beim XT-Modell, beim Compaq Plus und
vielen anderen ähnlichen PC-Familienmitgliedern verwendet wird. Die Platte des
XT hat vier Seiten, 305 Zylinder (wie die Spurlagen bei Festplatten genannt wer­
den) und 17 Sektoren pro Spur. Die zweite Variation der Festplatte ist diejenige, d.ie
mit den AT-Modellen eingeführt wurde. Diese Platte hat vier Seiten, 615 Zylinder, 17
Sektoren pro Spur und eine Kapazität von 20 Megabytes. Diese beiden sind
jedoch nur typische Vertreter der vielen Variationen von Festplatten, die in der PC­
Familie eingesetzt werden können. Das AT-Modell allein kann von sich aus an nicht
weniger als 14 verschiedene Festplatten adaptiert werden und es können noch
andere ohne weiteres hinzugefügt werden.
Es gibt noch eine grundsätzliche Variation der Plattenspeicherung, die wir kennen
sollten: die Cartridge Disks. Diese sind ein Mischtyp, der die Charakteristiken von
Festplatten (besonders die hohe Speicherkapazität) und Disketten kombiniert. Es
gibt zahlreiche Variationen von Cartridge Disks, aber die vielleicht bekannteste ist
die „Bernoulli box" der IOMega Corporation. Cartridge Disks haben normalerweise
eine Kapazität von fünf oder zehn Megabytes und arbeiten mit einer Geschwindig­
keit, die der einer konventionellen versiegelten Festplatte ähnlich ist. Cartridge
Disks können jedoch gewechselt werden, d.h. Daten können ausgetauscht, per
Post verschifft oder einfach aus Sicherheitsgründen eingeschlossen werden.
Im nächsten Kapitel wollen wir erläutern, wie DOS die Platten sieht.
1.
Es ist rätselhaft, warum der originale PC einseitige statt doppelseitige Diskettenlaufwerke
hatte. Es wird nicht von Ihnen erwartet, daß Sie einen Grund dafür wissen, aber versuchen
Sie, mögliche Theorien aufzustellen. Aus dieser Übung können Sie eine Menge über die Re­
alität der Personalcomputerei lernen.
2.
In einem der Technischen Handbücher von IBM steht, daß ein reguläres Diskettenlaufwerk
mit 40 Spuren für die Bewegung des Schreib-/Lesekopfes fünf Millisekunden pro Spur
braucht. Die durchschnittliche Zugriffszeit dauert 81 Millisekunden. Warum? Was sagt uns
das?
3.
Es gibt Festplatten, die die gleiche Kapazität wie alle anderen haben, aber anders gebaut
sind. Zum Beispiel ist unter den Plattentypen, mit denen der AT arbeiten kann, eine mit vier
Seiten und 614 Zylinder und eine andere mit acht Seiten und 307 Zylinder. Die Kapazität der
beiden ist gleich. Gibt es einen Unterschied zwischen ihnen?
108
9
Platten
-
Teil 2: Die DOS-Perspektive
In diesem zweiten der drei Kapitel über Platten betrachten wir die Platten unseres
Computers aus der Perspektive von DOS und wie DOS damit arbeitet. Unsere Plat­
ten sind zunächst nichts anderes als unvermessenes Land. Erst wenn ein Betriebs­
system, wie DOS, einen Plan erstellt, wie sie benützt werden sollen, nehmen die
Platten eine verwendbare Form an. Jedes Betriebssystem - und die PC-Familie
hat theoretisch viele - hat seinen eigenen Plan dafür, wie sich das ungepflügte
Land einer Platte in produktive Felder verwandeln soll. Da DOS das einzige Be­
triebssystem ist, mit dem die meisten PC-Anwender in Berührung kommen,
besprechen wir nur, wie DOS eine Platte organisiert.
Zuerst besprechen wir die Grundlagen, wie DOS eine Platte organisiert, und später
technische Details einer DOS-Platte. Außerdem untersuchen wir die wichtigsten
Eigenschaften von DOS-Dateien, damit wir den eigentlichen Inhalt unserer Platten
besser verstehen. Besonders werden wir auf das universellste Datenformat, die
ASCII-Textdateien, eingehen.
Dieses Kapitel wird uns das Wichtigste, das wir über unsere Platten wissen müs­
sen, vermitteln. Was hier fehlt, wird in Kapitel 10 behandelt, dem letzten Teil unserer
Kapitel-Serie über die Platten.
9 .1
Wie DOS eine Platte sieht und formatiert
In Kapitel 8, als wir die Grundlagen der Platten besprochen haben, wurde gezeigt,
daß eine Platte eigentlich ein drei- oder vierdimensionales Objekt ist. Die drei
Dimensionen umfassen Spur oder Zylinder - die Radialdimension -, die Seiten die horizontale Dimension -, und die Sektoren in einer Spur - die Kreisdimension.
Sie legen die Position eines jeden Sektors einer Platte fest. Die Größe jedes Sek­
tors, wieviele Daten darin gespeichert werden können, ist die vierte Dimension.
Durch die Multiplikation der ersten drei Dimensionen erhalten wir die Gesamtan­
zahl der Sektoren auf einer Platte, die DOS zur Verfügung hat, wenn es eine Platte
benützt. Die Multiplikation der Sektoranzahl mit der Sektorgröße liefert uns die
Speicherkapazität der Platte, die Anzahl von Bytes, in denen DOS Daten verstauen
kann.
Die Sektoren einer Platte sind die Grundeinheiten bei Plattenzugriffen. Das
Beschreiben und Lesen einer Platte erfolgt immer in ganzen Sektoren und nicht in
irgendeiner kleineren Datenmenge. Wenn man verstehen will, wie DOS eine Platte
sieht, muß man wissen, wie DOS Sektoren behandelt. Zunächst wird von DOS die
dreidimensionale Form einer Platte ignoriert. Um die Sektoren wirklich lesen und
beschreiben zu können, muß DOS mit Sektoren in Form von den drei Dimensionen
arbeiten, die jeden Sektor lokalisieren und identifizieren. Das geschieht jedoch nur,
um sich der physikalischen Natur der Platten anzupassen. Für DOS selbst ist eine
Platte ein eindimensionales Objekt.
Das bedeutet, daß DOS die Sektoren einer Platte nur als sequentielle Liste von
Sektoren behandelt, vom ersten Sektor einer Platte bis zum letzten. Dies wird in
9.1 Wie DOS eine Platte sieht und formatiert
109
beliebiger Sektor
aus der Sicht
von DOS
Abb. 9-1:
Eine dreidimensionale Platte trifft auf ein eindimensionales DOS
Abbildung 9-1 dargestellt. DOS numeriert für sich die Sektoren einer Platte der
Reihe nach durch, beginnend mit 0 (für den ersten Sektor auf der ersten Seite des
ersten Zylinders einer Platte), dann 1 (für den zweiten Sektor auf der ersten Seite)
und so weiter bis zum letzten Sektor (das ist der letzte Sektor auf der letzten Seite
des letzten Zylinders). DOS selbst arbeitet also grundsätzlich in Form dieser
sequentiellen Sektorennummern. Erst im letzten Moment, wenn wirklich Informa­
tion auf die Platte geschrieben oder daraus gelesen wird, übersetzt DOS zwischen
seiner internen Schreibweise (der sequentiellen Numerierung) und der dreidimen­
sionalen Notation der Platte.
Dieser lineare, sequentielle Zugriff auf eine Platte vereinfacht die Organisation einer
Platte erheblich. Aber er hat seinen Preis. DOS kann nämlich die Tatsache nicht
ausnützen, daß das Wechseln von einem Sektor zu einem anderen länger dauert,
wenn sie auf verschiedenen Zylindern liegen, als wenn sie sich auf dem gleichen
Zylinder befinden. Diese Zeitverzögerung resultiert daraus, daß der Schreib-/Lese­
kopf des Plattenlaufwerkes bewegt werden muß, um den Zylinder zu wechseln.
DOS weiß im Grunde nicht, welche Sektoren auf dem gleichen Zylinder liegen, weil
es die Einteilung der Platte in Zylinder ignoriert. Außerdem beschränkt das traditio­
nelle Verfahren von DOS die Größe der Platten, die wir mit unseren PCs verwenden
können. Mehr darüber erfahren Sie im Abschnitt „Die 32-Megabyte-Grenze".
Die 32-Megabyte-Grenze
Der lineare, sequentielle Zugriff, den DOS für die Organisation von Platten verwen­
det, führt zu einer Beschränkung, die in den frühen Tagen von DOS nicht erwartet
wurde. Die maximale Plattengröße von DOS ist auf 32 Megabyte begrenzt.
110
9 Platten - Teil 2: Die DOS-Perspektive
Diese Begrenzung ist das Resultat aus zwei einfachen Faktoren. Erstens beträgt
die Standardgröße eines Plattensektors bei DOS 512 Bytes. zweitens numeriert
DOS Diskettensektoren sequentiell und speichert diese Nummern als 16-Bit-lnte­
gers. Es gibt nur 64K (oder 65.536) verschiedene 16-Bit-Zahlen. DOS kann also
nicht mit mehr als 64K verschiedenen Sektoren arbeiten, weil es dieses System
verwendet. Wenn die Sektoren 512 Bytes groß sind, liegt die Grenze bei 32 Mega­
bytes (64K mal 512, etwa 32 Millionen) als größte Platte, die dieses System ver­
arbeiten kann.
In den frühen Tagen von DOS und der PC-Familie konnte man sich kaum vorstel­
len, daß jemand eine größere Platte wünschen würde. Eine Binsenweisheit der
Computerei besagt allerdings, daß etwas nie groß genug sein kann.
Es gibt Wege, diese Grenze zu umgehen: Sektoren kann man größer machen (zum
Beispiel 1024 Bytes groß), oder DOS könnte mehr Bits verwenden, um die Sekto­
ren zu numerieren. Auf die eine oder andere Art wird die „32-Mega-Barriere" natür­
lich bewältigt werden und das vielleicht schon bald, da die PC-Familie dauernd
wächst und sich erweitert. Aber das ursprüngliche Design von DOS wurde mit die­
ser Beschränkung entworfen.
Bei der Speicherung von Daten auf die Platte verhält sich DOS ähnlich. Wie wir
schon erwähnt haben, wird das Lesen und Schreiben von Daten auf eine Platte
immer in Form von ganzen Sektoren erledigt. Wenn unsere Programme mit Daten
arbeiten, können sie jedoch in beliebiger Größe gelesen oder geschrieben wer­
den. Wir können mit unseren Plattendaten byteweise arbeiten oder wir können
DOS riesige Mengen auf einmal transportieren lassen. Dies deutet auf eine wich­
tige Aufgabe hin, die DOS bei der Verwaltung unserer Platten erledigt. Es fungiert
als Übersetzer zwischen der Art, wie Platten mit Daten arbeiten (was in Sektoren
von 512 Bytes auf einmal geschieht), und der Art, wie wir damit arbeiten wollen. Die
Plattenverwaltungsroutinen von DOS führen die Umwandlung aus zwischen den
Dateneinheiten, die wir wollen, und den Dateneinheiten, die die Platte speichert. Im
Endeffekt erreicht DOS dies durch eine Umlagerungsoperation. Es packt und ent­
packt unsere Daten, so daß sie in Mengen mit der richtigen Größe gebündelt sind:
in der von uns gewünschten Größe und in der Größe von Sektoren, wenn sie auf
die Platte übertragen werden.
·
Physikalische und logische Formatierung
Die Formatierung einer Platte beinhaltet in Wirklichkeit zwei Teile, die man als phy­
sikalische und logische Formatierung bezeichnen könnte, und wenn wir genau
wissen wollen, was gerade mit den Platten geschieht, muß uns der Unterschied
bewußt sein.
9.1 Wie DOS eine Platte sieht und formatiert
111
Programm
Daten
DOS-Puffer
Platten­
sektoren
Abb. 9-2:
DOS packt Daten um zwischen Platten und unseren Programmen
Die physikalische Formatierung erzeugt die Sektoren auf einer Platte und deren
Adreßmarken (die wie Namensschilder verwendet werden, um die Sektoren nach
der Formatierung zu identifizieren) und sie bestimmt die Datenmenge eines Sek­
tors (des Teiles, den wir und unsere Programme kennen), die angelegt und mit ei­
nigen Scheindaten aufgefüllt wird. Eine neue, unbenützte Diskette wird uns norma­
lerweise ohne die physikalische Formatierung geliefert, während eine neue Fest­
platte schon physikalisch formatiert sein wird.
Die logische Formatierung ist im Grunde die Anpassung einer Platte an den Stan­
dard unseres Betriebssystems. Beim Formatieren einer Platte für DOS wird die
DOS-gemäße logische Struktur der Platte erzeugt (die wir in Abschnitt 9.2 behan­
deln werden). Die logische Formatierung ist die Straßenkarte, die DOS oder
irgendein anderes Betriebssystem für die Navigation durch die Platte verwendet.
Im Falle der physikalischen und logischen Formatierung arbeitet das FORMAT­
Kommando von DOS auf Disketten und Festplatten unterschiedlich, weshalb es so
wichtig ist, den Unterschied zwischen der physikalischen und logischen Formatie­
rung zu kennen. Da die logische Formatierung für die Verwendung von Platten un­
ter DOS wesentlich ist, erledigt diese natürlich immer das FORMAT-Kommando.
Unterschiedlich zwischen Disketten und Festplatten ist jedoch, ob die physika­
lische Formatierung von DOS durchgeführt wird oder nicht.
Bei einer Diskette wird die physikalische und die logische Formatierung vom FOR­
MAT-Kommando erledigt. Das liegt daran, daß eine Diskette völlig zum Betriebssy­
stem, das sie formatiert, „gehört", während eine Festplatte in Bereiche aufgeteilt
werden kann, die zu verschiedenen Betriebssystemen gehören können (wir wer-
112
9 Platten - Teil 2: Die DOS-Perspektive
den in Kapitel 10 mehr darüber erfahren). Bei einer Festplatte wäre die physika­
lische Formatierung durch das FORMAT-Kommando riskant, sogar in einem
Bereich, der DOS „gehört", weil dieser den Rest der Platte stören könnte.
Weil uns DOS kein Programm liefert, um eine Festplatte physikalisch zu formatie­
ren, finden Sie ein solches auf der IBM Advanced Diagnostics Diskette. Es gibt ei­
nige ungewöhnliche Situationen, in denen wir einen völligen Neuaufbau einer
Festplatte wünschen könnten, und deshalb muß man das Programm für die physi­
kalische Formatierung kennen.
Das DOS-FORMAT-Programm benützt ein spezielles BIOS-Kommando (siehe
Kapitel 18), um Disketten Spur für Spur zu formatieren.
Der Mechanismus der physikalischen Formatierung erfordert, daß die Formatie­
rung für alle Sektoren in einer Spur in einer koordinierten Operation erfolgt. Diese
Eigenschaft, Disketten spurweise zu formatieren, kann als Grundlage für ein
Kopierschutzsystem verwendet werden, wie wir in Kapitel 10 sehen werden.
Wenn FORMAT eine Diskette formatiert, setzt es die Sektordaten in jedem Byte auf
einen Fehlerwert, hex F6. Da das FORMAT-Kommando jedes Byte der Diskette
überschreibt, werden alle alten Daten völlig und unwiederbringlich ausgelöscht.
Jedoch überschreibt FORMAT die alten Daten einer Festplatte nicht, so daß es
möglich ist, Daten von einer wiederformatierten Festplatte zurückzuerlangen.
Bevor DOS eine Platte verwenden kann, muß sie formatiert werden, d.h. sie muß so
markiert und organisiert sein, wie DOS mit dieser Platte arbeiten soll. Das erreichen
wir mit dem DOS-Dienstprogramm FORMAT. Anschließend legt FORMAT auf der
Platte die DOS-Struktur an, die festlegt, wie und wo Dateien gespeichert werden
können. Wir werden in Abschnitt 9.2 sehen, wie das funktioniert.
9 .2
Die Struktur einer DOS-Platte
Für die Organisation unserer Platten unterteilt DOS sie in zwei Teile. Ein Teil ist ein
kleiner Systembereich, den DOS benützt, um wichtige Informationen über die
Platte zu erfahren. Der andere Teil ist der eigentliche Datenbereich, in dem unsere
Daten gespeichert werden. Der Systembereich beansprucht nur einen ziemlich
kleinen Teil einer Platte. Meistens sind es nur zwei Prozent des Gesamtvolumens
(das gilt für die kleinsten 160K-Disketten), und bei einer Festplatte ist es noch viel
weniger, zum Beispiel nur 3/10 eines Prozents bei der 20-Megabyte-Festplatte des
AT.
Der Systembereich von DOS ist selbst wieder in drei Teile unterteilt: Boot, FAT und
Hauptinhaltsverzeichnis. Wir werden sie im folgenden erklären.
Der Boot oder Boot-Record ist der erste Teil einer DOS-Platte. Er beinhaltet ein
sehr kurzes Programm, das nur ein paar hundert Bytes lang ist und die Aufgabe
9.2 Die Struktur einer DOS-Platte
Anfang
System-Bereich
Daten-Bereich
113
Ende
Hauptinhalts­
verzeichnis
BOOT
FATS
Abb. 9-3:
Die Teile einer DOS-Diskette
hat, mit dem Laden von DOS in den Arbeitsspeicher des Computers zu beginnen.
Dieser Startvorgang wird Booten genannt (weil der Computer „sich selbst in die
Schuhe hilft" - er bedeutet das Laden von Programmen, die der Computer unbe­
dingt braucht, um überhaupt arbeiten zu können). Wenn wir eine DOS-System­
platte haben (die mit der /S-Systemoption formatiert wurde), enthält die Platte eine
vollständige Kopie von DOS. Die Arbeit dieses Boot-Record-Programmes besteht
darin, den Start von DOS von einer Platte her einzuleiten, indem es den ersten Teil
von DOS von der Platte in den Arbeitsspeicher liest. Interessant ist, daß der Boot­
Record nicht nur auf einer systemformatierten Platte enthalten ist, sondern auf
jeder Platte, und er meldet einen Fehler, wenn wir versuchen, von einer Platte zu
booten, die nicht systemformatiert ist (und deshalb keine Kopie von DOS enthält).
Der Boot-Teil einer Platte ist sehr klein, nur ein einziger 512-Byte-Sektor, so daß er
praktisch den Speicherplatz einer Platte nicht verkleinert. Gelegentlich gibt es ei­
nige sehr interessante Informationen, die in Boot-Records mancher Platten auf­
gezeichnet sind. Wrr werden dies in Kapitel 10 betrachten, wenn wir auf ein paar
eher technische Informationen über unsere Platten eingehen.
Der nächste Teil des Systembereichs einer Platte wird die Dateibelegungstabelle
oder kurz FAT (von File Allocation Table) genannt. DOS muß irgendwie wissen,
welche Datenbereiche einer Platte schon vergeben und welche für die Speiche­
rung neuer Daten noch verfügbar sind. Die FAT speichert den Status sämtlicher
Teile der Platte. Um den Datenbereich einer Platte zu verwalten, teilt DOS ihn in
logische Einheiten ein, die Speicherbereichsgruppen (Cluster) genannt werden.
Bei der Speicherung einer Datei im Datenbereich unserer Platten wird der Platten­
bereich der Datei in diesen Speicherbereichsgruppen zugeordnet. Die Größe einer
Speicherbereichsgruppe variiert je nach Plattenformat. Sie kann so klein wie ein
einzelner Sektor sein oder viel größer. Auf einseitigen Disketten ist jeder Sektor
seine eigene Speicherbereichsgruppe. Bei doppelseitigen Disketten umfassen
Speicherbereichsgruppen zwei Sektoren, 1024 Bytes. Die 10-Megabyte-Platte des
XT hat normalerweise Speicherbereichsgruppen mit einer Größe von 8 Sektoren,
4096 Bytes. Hier liegt offensichtlich ein Schema vor. Allgemein gilt: je größer die
Platte, desto größer die Speicherbereichsgruppen. Eine feste Regel ist das aller­
dings nicht. Bei der größeren 20-Megabyte-Platte des AT beträgt die Größe der
Speicherbereichsgruppen nur halb soviel wie bei der Platte des XT, nämlich vier
Sektoren oder 2048 Bytes.
114
9
Platten - Teil 2: Die DOS-Perspektive
Wie groß auch immer die Speicherbereichsgruppen sind, DOS teilt den Datenbe­
reich der Platte in diese relativ kleinen Speicherbereichsgruppen ein und weist sie
als Speichereinheit den Dateien zu. Diese Zuteilung wird durch die Verwendung
der Dateibelegungstabelle erreicht. Die FAT ist einfach eine Tabelle aus Zahlen mit
allen Speicherbereichsgruppen der Platte. Die Zahl, die im FAT-Eintrag einer Spei­
cherbereichsgruppe aufgezeichnet wird, zeigt an, ob die Speicherbereichsgruppe
schon durch eine Datei belegt wird oder für neue Daten verfügbar ist. Eine Null im
FAT-Eintrag der Speicherbereichsgruppe bedeutet, daß die Speicherbereichs­
gruppe frei ist. Jede andere Zahl zeigt an, daß sie schon belegt ist (und die Zahl
wird dazu verwendet, die verschiedenen Speicherbereichsgruppen zu verbinden,
die die Daten einer Datei bilden; mehr über diese technischen Details erfahren wir
in Kapitel 10).
Mit der FAT verfügt DOS also über einen eigenen und separaten Platz, um die Ver­
teilung des Datenbereichs der Platte zu verfolgen. Dies isoliert die platz- und spei­
chererhaltende Funktion, die sie vor einer möglichen Zerstörung schützt. Wenn Sie
darüber nachdenken, werden Sie sehen, warum die FAT der kritischte Teil einer
Platte ist, der am meisten geschützt werden muß. In der Tat ist die FAT so kritisch,
daß DOS normalerweise zwei getrennte Kopien der FAT auf jeder Diskette spei­
chert. Nur die erste Kopie wird wirklich benützt, während die zweite Kopie lediglich
angelegt wird, um Behelfsreparaturen auf einer beschädigten Platte zu ermögli­
chen.
Der letzte Teil des Plattensystembereichs ist das Hauptinhaltsverzeichnis. Das ist
das Dateieninhaltsverzeichnis, das jede Platte hat. Es ist das grundlegende, einge­
baute Inhaltsverzeichnis jeder Platte. (Platten können auch zusätzlich untergeord­
nete Inhaltsverzeichnisse haben, aber untergeordnete Inhaltsverzeichnisse sind
ein optionaler Teil einer Platte, den wir bei Bedarf erzeugen können. Das Hauptin­
haltsverzeichnis ist kein optionaler Teil der Platte.)
Das Inhaltsverzeichnis erfaßt natürlich die Dateien, die auf der Platte gespeichert
sind. Für jede Datei gibt es einen Eintrag im Inhaltsverzeichnis, der den 8 Zeichen
langen Namen der Datei enthält, den 3 Zeichen langen Zusatz zum Dateinamen,
die Größe der Datei und eine Datums- und Zeitangabe, die protokolliert, wann die
Datei zum letzten Mal geändert wurde. Alle diese Teile des Inhaltsverzeichniseintra­
ges einer Datei sind uns bekannt, weil wir sie aus dem DIR-Usting kennen. Es gibt
noch zwei weitere Informationen über eine Datei, die in ihrem Inhaltsverzeichnis­
eintrag festgehalten werden. Eine ist die sogenannte „starting cluster number", die
anzeigt, welche Speicherbereichsgruppe im Datenbereich der Platte den ersten
Teil der Datei enthält. Außerdem gibt es im Inhaltsverzeichniseintrag das Datei­
Attribut. Hier werden verschiedene Informationen über eine Datei aufgezeichnet.
Untergeordnete Inhaltsverzeichnisse haben zum Beispiel eine besondere Markie­
rung im Inhaltsverzeichnis-Attribut. Die sogenannten Systemdateien von DOS
haben ein spezielles Attributpaar für „system" und „hidden". Es gibt noch zwei
Attribute, die in der Praxis wichtiger sind: das „read-only"-Attribut schützt unsere
Dateien vor Veränderungen oder Löschen. Das Archiv-Attribut läßt erkennen,
welche Dateien unserer Platte eine Siherheitskopie haben oder brauchen.
9.2 Die Struktur einer DOS-Platte
Abb. 9-4:
3
4
6
2
3
4
5
7
END
6
7
8
115
9
Die Speicherverteilung einer Datei in der FAT
Das Hauptinhaltsverzeichnis einer Platte hat je nach Plattenformat eine feste Größe,
wie die anderen Teile im Systembereich einer Platte. Diese Größe bestimmt die
maximale Anzahl der Einträge für Dateien in das Hauptinhaltsverzeichnis. Jeder
Inhaltsverzeichniseintrag beansprucht 32 Bytes, so daß 16 davon in einen einzel­
nen Sektor passen. Das kleinste Diskettenformat, das einseitige 160K-Format,
reserviert vier Sektoren für das Hauptinhaltsverzeichnis und hat somit Platz für 64
Dateien. Eine doppelseitige Diskette hat sieben Inhaltsverzeichnissektoren, also
Platz für 112 Dateien. Festplatten haben mehr. Die 20-Mega-Platte des AT hat zum
Beispiel 32 Sektoren, womit 512 Dateien in das Dateieninhaltsverzeichnis eingetra­
gen werden können.
Es wurde zuvor erwähnt, daß die FAT benützt wird, um eine Liste zu verketten, die
angibt, wo die Daten einer Datei gespeichert sind. Wir zeigen nun, wie das funktio­
niert. Wie wir gesehen haben, enthält der Inhaltsverzeichniseintrag jeder Datei ein
Feld, das die Nummer einer Speicherbereichsgruppe angibt, in der der erste Teil
der Daten einer Datei gespeichert ist. Die FAT hat einen Nummerneintrag für jede
Speicherbereichsgruppe. Wenn wir im FAT-Eintrag für die erste Speicherbereichs­
gruppe einer Datei nachsehen, enthält sie die Nummer der nächsten Speicherbe­
reichsgruppe dieser Datei, und der FAT-Eintrag für diese Speicherbereichsgruppe
zeigt wieder auf die nächste. Auf diese Art sind die FAT-Einträge miteinander ver­
kettet, um DOS eine Möglichkeit zur Verfügung zu stellen, den gesamten Inhalt
einer Datei aufzuspüren. Wenn das Ende der Datei erreicht ist, enthält der FAT-Ein­
trag der letzten Speicherbereichsgruppe keine Nummer einer anderen Speicher­
bereichsgruppe, sondern eine spezielle Codenummer, die das Ende der Datei
markiert.
Das beendet unseren Überblick über den Systembereich einer Platte. Wir kommen
nun zum größten Teil der Platte, dem Datenbereich. Die Grundlagen zu diesem Teil
der Platte sind uns schon bekannt. Der Datenbereich speichert den aktuellen
Dateninhalt der Plattendateien.
Der Datenbereich ist, wie wir schon gesehen haben, in Einheiten unterteilt, die
Speicherbereichsgruppen heißen (die aus einem oder mehreren Sektoren beste­
hen; auf einer Platte haben die Speicherbereichsgruppen alle die gleiche Größe,
aber zwischen den Plattenformaten variieren die Größen der Speicherbereichs­
gruppen). Die Daten einer Datei sind in einer oder mehreren Speicherbereichs­
gruppen gespeichert (und die Aufzeichnung der Speicherbereichsgruppen und
deren Reihenfolge wird in der Dateibelegungstabelle der Platte festgehalten). Es ist
116
9 Platten - Teil 2: Die DOS-Perspektive
erwähnenswert, daß die Daten einer Datei in unzusammenhängenden Speicherbe­
reichsgruppen über die ganze Datei verstreut sein können. DOS versucht zwar, die
Daten einer Datei in aufeinanderfolgenden Speicherbereichsgruppen zusammen­
zuhalten, aber durch die verschiedenen Aktivitäten bei der Speicherverteilung der
Platte können Dateien gegebenenfalls auf unterschiedliche Teile der Platte ver­
streut gespeichert werden.
Wtr haben die untergeordneten Inhaltsverzeichnisse (subdirectories) schon er­
wähnt. Ein untergeordnetes Inhaltsverzeichnis ist eine Mischung aus Datendateien
und dem Hauptinhaltsverzeichnis der Platte. In Bezug auf die Art, wie ein unterge­
ordnetes Inhaltsverzeichnis auf der Platte gespeichert wird, unterscheidet es sich
nicht von den anderen Dateien der Platte. Das untergeordnete Inhaltsverzeichnis
wird im Datenbereich der Platte gespeichert, und seine Lage wird in die FAT einge­
tragen, genau wie bei einer anderen Datei. Der Inhalt eines untergeordneten
Inhaltsverzeichnisses wird jedoch wie beim Hauptinhaltsverzeichnis verwendet. Es
enthält eine Liste der Dateien und weiterer untergeordneter Inhaltsverzeichnisse,
die auf der Platte gespeichert sind. DOS arbeitet mit den untergeordneten Inhalts­
verzeichnissen genauso wie mit dem Hauptinhaltsverzeichnis. Es gibt zwei große
Unterschiede zwischen untergeordneten Inhaltsverzeichnissen und dem Hauptin­
haltsverzeichnis. Einmal gibt es nur ein Hauptinhaltsverzeichnis auf einer Platte,
aber beliebig viele untergeordnete Inhaltsverzeichnisse. Außerdem hat ein Haupt­
inhaltsverzeichnis eine feste Größe und Kapazität, während untergeordnete Inhalts­
verzeichnisse wie Dateien auf eine beliebige Größe anwachsen können, die die
Platte aufnehmen kann.
Wtr wissen jetzt über die Grundstrukturen einer DOS-Platte Bescheid. Weiterge­
hende technische Details werden wir in Kapitel 10 besprechen.
9.3
Wichtiges über Dateiformate
Jede Datei, die wir auf unserer Platte gespeichert haben, kann ihr eigenes speziel­
les Datenformat haben. Das ist die Struktur der Daten, die in einer Datei auf­
gezeichnet wird. Man könnte meinen, qaß es nur wenig über das Format unserer
Plattendateien zu sagen gibt, und in mancher Hinsicht ist das wahr. Jedoch gibt es
eine Reihe wichtiger Beobachtungen bzgl. unserer Dateien, die unser Verständnis
für das, was auf unseren Platten vorgeht, vertiefen.
Zuerst sollten wir darauf hinweisen, daß der drei Zeichen lange Erweiterungsteil
eines Dateinamens oft das Format und die Verwendung einer Datei anzeigt. Einige
dieser Dateiname-Erweiterungen sind Standard und müssen verwendet werden,
damit der Dateityp korrekt identifiziert wird. Die meisten sind jedoch nicht obligato­
risch, sondern entsprechen einer Konvention.
Die obligatorischen Erweiterungen haben meistens etwas mit Programmen zu tun.
DOS verlangt, daß alle Programme in einem von zwei speziellen Programmforma­
ten gespeichert sind, die durch die Standard-Erweiterungsnamen COM und EXE
angegeben werden müssen. Stapelkommandodateien müssen außerdem BAT
9.3 Wichtiges über Dateiformate
117
genannt werden. Die meisten anderen Dateiname-Erweiterungen sind optional,
aber jedes Anwenderprogrammsystem ist normalerweise so gestaltet, daß es
seine eigenen Standard-Erweiterungsnamen verwendet. Zum Beispiel erwartet der
BASIC-Interpreter, daß BASIC-Programmdateien SAS genannt werden. Andere
Programmiersprachen erwarten ähnliches. Pascal verlangt Programmquelldateien
mit dem Namen PAS usw. Das Gleiche gilt für Programme, wie 1-2-3, Word u.a.
Der Inhalt von normalen Dateien kann sehr interessant für uns sein, aber um in
unsere Dateien hineinsehen zu können, müssen wir besondere Tools wie DEBUG
oder NU verwenden, die beide in Kapitel 22 beschrieben sind, und oft wird es
schwer sein, die Dateien zu decodieren und Sinnvolles aus ihrem Inhalt herauszu­
lesen.
Es gibt einen sehr guten Grund dafür, sich mit den Datenformaten unserer Pro­
gramme zu beschäftigen: wenn wir nämlich eine Reparatur auf unseren Platten
vornehmen müssen, um zum Beispiel gelöschte Dateien zurückzuholen. Wenn wir
lernen, wie unsere Daten vorher aussehen, haben wir eine größere Chance, sie im
Notfall wiederzuerkennen.
Dateien, die durch unsere Programme erzeugt werden, haben grundsätzlich eine
interne Struktur, die für das menschliche Auge ein völliges Durcheinander ist.
Manche Teile lassen sich ohne weiteres identifizieren. Zeichentextdaten, wie zum
Beispiel Namen und Adressen in der Adreßliste einer Datenbank, sind leicht zu
erkennen. Aber die Teile der Daten, die Zahlen und Formatinformationen enthalten,
die beschreiben, wie die Daten angelegt sind, werden normalerweise in einer Form
gespeichert, die äußerst rätselhaft aussieht und nur durch die Programme, die mit
den Daten arbeiten, entschlüsselt werden kann.
Ein besonderer Dateityp hat ein bestimmtes Schema, das wir sehr leicht erkennen
können. Dies sind die Dateien aus sogenannten „Datensätzen mit festen Längen",
ein sich wiederholendes Datenmuster, bei dem der Inhalt der Daten variiert, aber
jedes Element die gleiche Länge hat, so daß wir ein spezielles Muster erkennen
können, sogar wenn die echten Daten selbst nicht zu entschlüsseln sind. Diesen
Dateityp verwendet BASIC für seine Random-Dateien. Da die Datensätze bei die­
sem Dateityp alle die gleiche Länge haben, kann BASIC den Weg zu jeder beliebi­
gen Satznummer berechnen, ohne die Datei von Anfang an durchsuchen zu müs­
sen.
Aus der Analyse der Daten unserer Dateien können wir sehr viel darüber lernen,
wie unsere Computer und Programme mit Plattendaten arbeiten.
118
9.4
9
Platten - Teil 2: Die DOS-Perspektive
ASCII-Textdateien
Es gibt ein besonderes Dateiformat, das jeder PC-Anwender kennen muß: das
ASCII-Textdateiformat. ASCII-Textdateien, die auch ASCII-Dateien oder kurz Textda­
teien genannt werden, kommen in der PC-Familie einem universellen Datenformat
am nähesten. Obwohl die meisten Programme Daten in einem speziellen Format
speichern, stellen ASCII-Textdateien ein Format dar, das von allen Programmen
verwendet werden kann und auch von vielen benützt wird.
ASCII-Textdateien dienen der Speicherung gewöhnlicher Textdaten, wie die Wörter,
die Sie hier lesen. Viele einfache Texteditierprogramme (wie das EDLIN-Editorpro­
gramm, das ein Teil von DOS ist) verwenden ASCII-Textdateien, und einige Textver­
arbeitungsprogramme arbeiten auch direkt mit ASCII-Textdateien. Die meisten Pro­
gramme, einschließlich Textverarbeitungsprogramme, B ASIC-Interpreter, Tabellen­
kalkulationsprogramme und viele andere benützen jedoch das ASCII-Textdateifor­
mat als Alternative zu ihren eigenen Datenformaten. Diese Programme können mit
ASCII-Textdateien arbeiten, einfach deshalb weil das ASCII-Textdateiformat eine
Datenübertragung von einem Programm zu einem anderen problemlos zuläßt. Oft
ist das der einzige Weg, um Daten von hier nach dort zu bewegen.
Als darauf hingewiesen wurde, daß die meisten Programme ihre eigenen speziel­
len Datenformate haben, die sich von ASCII-Textdateien unterscheiden, waren in
erster Linie Anwendungsprogramme wie zum Beispiel Datenbanken, Tabellenkal­
kulationsprogramme u. ä. gemeint. Es gibt aber viele Programme, die nur mit dem
einfachen Format der ASCII-Textdateien arbeiten. Die Compiler verschiedener Pro­
grammiersprachen und Assembler lesen ihren Programmquellcode von reinen
ASCII-Textdateien. Einige andere Programme sind ebenfalls in erster Linie auf
ASCII-Textdateien ausgerichtet, wie zum Beispiel das Rechtschreibkontrollpro­
gramm WordProof von IBM. Programme, die in irgendeiner Hinsicht mit Textverar­
beitung zu tun haben, lassen sich in einfache Programme unterscheiden, die auf
ASCII-Textdateien basieren, und in komplexe, die ihre eigenen Datenformate
haben (wie die meisten Textverarbeitungsprogramme). Schließlich gibt es noch
eine weitere und sehr wichtige Verwendung für ASCII-Textdateien, die erwähnt wer­
den muß. Es sind Stapelkommandodateien, mit denen DOS eine Reihe von Kom­
mandos zusammen als eine Einheit ausführen kann. Diese Stapeldateien werden
im Textdateiformat aufgezeichnet.
Die Daten in einer Textdatei sind aus zwei Zeichentypen zusammengesetzt. Ein Typ
sind die normalen ASCII-Textzeichen, Buchstaben des Alphabets und so weiter,
die wir in Abschnitt 4.2 besprochen haben, und der andere Typ sind die ASCII­
Steuerzeichen, die in Abschnitt 4.3 behandelt wurden. Die regulären Textzeichen
sind die eigentlichen Daten in einer ASCII-Textdatei, während die ASCII-Steuerzei­
chen sagen, wie der Text formatiert wird. Sie markieren seine Einteilung in Zeilen
und Abschnitte etc.
Es gibt keine strenge Definition, wie unsere Programme ASCII-Textdateien verwen­
den sollen. Alle Programme, die mit ASCII-Textdateien arbeiten, verwenden die
grundlegendsten Elemente dieses Dateiformats, und manche Programme gehen
weiter und setzen einige weniger gebräuchliche Fo�matiersteuerzeichen ein. Wir
beginnen mit der Beschreibung der bekanntesten Elemente.
9.4 ASCII-Textdateien
119
D Zwei ASCII-Steuerzeichen werden dafür verwendet, das Ende einer Zeile zu
markieren: die Zeichen Wagenrücklauf und Zeilenvorschub (in der ASCII-Termi­
nologie als CR und LF bekannt; sie haben die Zeichencodes 13 und 10 oder
hex OD und O A). Dieses Paar markiert zusammen standardmäßig ein Zeilen­
ende im Text.
D Ein ASCII-Steuerzeichen markiert das Ende der Textdatei. Es ist das Control-Z­
Zeichen mit dem Code 26 oder hex 1A. In den meisten ASCII-Steuerzeichen­
Tabellen wird es SUB genannt, aber hier bedeutet es End-Of-File, Dateiende,
bzw. EOF.
D Das Tab-Zeichen wird als Code für Tabulatorsprünge verwendet. Sein Zeichen­
code ist 9, und der ASCII-Ausdruck dafür ist HT, die Kurzform für horizontaler
Tabulator. Tab ist in vielen ASCII-Dateien enthalten, sogar obwohl keine univer­
selle Übereinkunft über die Tabulatorpositionen existiert. Die meisten Pro­
gramme (aber leider durchaus nicht alle) behandeln Tabulatoren unter der
Annahme, daß alle acht Zeichen eine Tabulatorposition ist (in der 9., 17. etc.,
Spalte).
D Das Form-Feed-Zeichen markiert das Ende einer Seite und den Anfang der
nächsten. Sein Zeichencode ist 12, hex OC, und der ASCII-Name lautet FF. Die­
ses Steuerzeichen heißt auch Seitenvorschub.
Eine ASCII-Textdatei kann sämtliche Steuerzeichen enthalten, die Sie in Abschnitt
4.2 gesehen haben (sie sind in Tabelle 4-1 zusammengefaßt), aber meistens wer­
den nur die fünf verwendet, die gerade beschrieben wurden. In vielen Fällen wird
sogar auf die letzten zwei verzichtet - Tab und Form-Feed -, um den Code mög­
lichst einfach zu halten.
Es gibt viele allgemein übliche Codierungen für die Einteilung von Textdaten in
Absätze. Die verbreitetste Form markiert das Ende jeder Textzeile mit einem
Wagenrücklauf/Zeilenvorschub-Paar. In dieser Form erwarten Compiler ihre Pro­
grammquellcodes. Wenn diese Form für die Markierung von Wörtern, Sätzen und
Absätzen verwendet wird, wird das Ende eines Absatzes üblicherweise mit einer
Leerzeile gekennzeichnet (dies sind zwei Paare von Wagenrücklauf/Zeilenvor­
schub-Zeichen, ohne irgendwelche Daten dazwischen). Manchmal sehen wir
ASCII-Textdateien, in denen jeder Absatz wie eine einzige, sehr lange Zeile behan­
delt wird, mit einem Wagenrücklauf/Zeilenvorschub-Paar am Ende des Absatzes.
Textverarbeitungsprogramme erzeugen ASCII-Textdateien häufig in dieser Art.
Da also ASCII-Textdateien je nach Programm unterschiedlich aufgebaut sein kön­
nen, kann es oft zu Schwierigkeiten kommen, wenn wir versuchen, ASCII-Textda­
teien zwischen solchen Programmen auszutauschen. Wenn wir zum Beispiel
ASCII-Textdateien zwischen verschiedenen Textverarbeitungsprogrammen austau­
schen, könnte vielleicht das eine Programm etwas nur als Zeilen eines Absatzes
betrachten, was vom anderen Programm als einzelne Absätze angesehen wird.
Dieser Unsinn kann sehr ärgerlich sein. Dennoch sind ASCII-Textdateien für unsere
Computer einer universellen Sprache am nähesten, die jedes Programm sprechen
kann. Deshalb stoßen wir öfter auf ASCII-Textdateien, als man vielleicht erwartet.
120
9 Platten - Teil 2: Die DOS-Perspektive
Normalerweise enthalten ASCII-Textdateien entweder Wörter, wie die Sätze und
Absätze, die Sie hier lesen, oder Programmquellcode, wie die Programmierbei­
spiele in diesem Buch. Jedoch können alle Daten in ein ASCII-Textformat übersetzt
werden. So finden wir vielleicht Textdateien, die nur aus Zahlen bestehen, die als
ASCII-Zeichen geschrieben sind. Dies ist die Art, in der Programme ASCII-Textda­
teien verwenden können, um Daten auszutauschen, die nicht aus Wörtern beste­
hen. Das Data lnterchange File, oder DIF, benützt ASCII-Textdateien, um Daten zwi­
schen Tabellenkalkulationsprogrammen und anderen Programmen zu übertragen,
die wissen, wie „DIF"-Daten interpretiert werden. Diese DIF-Dateien sind einfache
ASCII-Textdateien, deren Text zum Beispiel den Inhalt eines Tabellenkalkulations­
programmes beschreibt, der ganz in ASCII-Textzeichen ausgedrückt ist und nicht
im internen codierten Format, das das Tabellenkalkulationsprogramm für sich
selbst benützt.
Um eine genauere Vorstellung davon zu bekommen, wie eine ASCII-Textdatei aus­
sieht, wollen wir ein Beispiel erfinden. Nehmen wir an, daß wir eine aus folgenden
zwei Zeilen bestehende Textdatei haben:
Columbus sailed the ocean blue
In fourteen hundred and ninety two.
In einer ASCII-Textdatei sieht dann unser zweizeiliger Reim so aus:
Columbus sailed the ocean blue<CR><LF>
In fourteen hundred and ninety two.<CR><LF><EOF>
Je mehr Sie mit Ihrem Computer arbeiten, desto öfter werden Sie ASCII-Textda­
teien analysieren. In diesem Fall sollten Sie über eine Unregelmäßigkeit, über die
Sie stolpern könnten, Bescheid wissen. Sie hat etwas mit der Art zu tun, wie ASCII­
Textdateien beendet werden und mit der Größe der Datei.
Es wurde früher schon erwähnt, daß das Control-Z-Zeichen, Code 26, normaler­
weise für die Markierung des Datenendes einer Textdatei benützt wird. Es gibt viele
Variationen, wie dies gemacht wird. In der genauesten Form wird das Control-Z­
Dateiende-Zeichen rechts hinter der letzten Textzeile gespeichert (so wie es im vor­
hergehenden Beispiel gezeigt wurde). Die Länge der Datei, wie sie im Plattenin­
haltsverzeichnis gespeichert wird, schließt das Dateiendezeichen mit ein. So
erscheint eine Datei manchmal größer, gemäß den Angaben, die im Platteninhalts­
verzeichnis eingetragen sind. Das liegt daran, daß manche Programme nicht byte­
weise mit Textdateien arbeiten, sondern in größeren Einheiten, z. B. mit 128 Bytes
auf einmal. Wenn solche Programme eine Textdatei erzeugen, zeigt das Control-Z­
Dateiendezeichen, wo das wahre Ende der Datei ist, aber der Platteninhaltsver­
zeichniseintrag der Datei gibt eine Länge an, die zum nächsthöheren Vielfachen
von 128 aufgerundet wird. In solchen Fällen ist die wirkliche Länge der Datei etwas
kleiner als wir auf Grund der Größe im Inhaltsverzeichnis erwarten würden. Eine
ASCII-Textdatei könnte uns noch auf eine andere Weise seltsam erscheinen. Sie
könnte abgespeichert werden, ohne daß ein Control-Z-Zeichen das Dateiende
kennzeichnet. In diesem Fall gibt die im Inhaltsverzeichnis eingetragene Datei-
9.4 ASCII-Textdateien
121
größe die wahre Größe der Datei an, und es gibt keine Dateiendemarkierung auf
Grund der Annahme, daß keine benötigt wird, weil die Größe uns sagt, wo die Datei
zu Ende ist. Wenn wir ASCII-Textdateien analysieren oder ein Programm schreiben,
das sie lesen soll, müssen wir auf Variationen der Dateiende-Markierung vorberei­
tet sein.
1.
Wenn Sie das NU-Programm haben, können Sie damit die Dimensionen Ihrer Platten unter­
suchen und die Größe der Speicherbereichsgruppen ansehen, die DOS auf Ihrer Platte
erzeugt. Die Informationen über die Speicherbereichsgruppen werden in der Menüoption
2.2 von NU angezeigt.
2.
Warum ist die FAT der kritischte Teil einer Platte? Warum ist sie wichtiger als der Bereich des
Inhaltsverzeichnisses? Es gibt ein DOS-Dienstprogramm zur Wiederherstellung von Dateien,
RECOVER genannt, das ein Platteninhaltsverzeichnis wiedererzeugen kann, wenn das
Inhaltsverzeichnis zerstört ist, jedoch nicht die FAT. Wie, 'glauben Sie, ist das möglich?
Könnte es ein ähnliches Programm geben, das eine zerstörte FAT wiedererstellen kann,
wenn das Inhaltsverzeichnis intakt ist?
3.
Geben Sie ein kurzes BASIC-Programm ein (nur ein oder zwei Zeilen irgendeines BASIC­
Programms), um zu sehen, wie BASIC seine Programmdateien in zwei Formaten speichern
kann, im eigenen codierten Format von BASIC oder im ASCII-Textdateiformat, und sichern
Sie beide Formate auf Platte, indem Sie diese Kommandos verwenden: SAVE „BASFORM"
und SAVE „TEXTFORM",A. Sehen Sie sich dann die Unterschiede zwischen den beiden
Dateien an. Vergleichen Sie ihre Größe, indem Sie das DIR-Kommando benützen. Verwen­
den Sie das TYPE-Kommando, um sie auf dem Bildschirm Ihres Computers auszugeben,
und untersuchen Sie, wie sich ihre Inhalte unterscheiden. Wenn Sie wissen, wie man mit
DEBUG oder NU Dateien untersucht (schauen Sie in Kapitel 23 nach, wenn Sie es nicht wis­
sen), überprüfen Sie die Inhalte der beiden Dateien mit einem dieser beiden Tools.
122
10
Platten
-
Teil 3: Details
In diesem letzten Kapitel über die Plattenspeicherung der PC-Familie wollen wir
uns einige der mehr technischen Details ansehen, wie unsere Computer mit ihren
Platten arbeiten. Wir werden auch die Besonderheiten von Festplatten behandeln
und Details besprechen, wie DOS mit unseren Platten umgeht, als Fortsetzung
dessen, was wir in Kapitel 9 erörtert haben. Wir beenden das Kapitel mit einigen
besonderen Platteneigenheiten, einschließlich Kopierschutz und nichtstandardge­
mäße Plattenformate.
Wie Sie bisher gesehen haben, ist dieses Buch auf eine unkonventionelle Art in
zwei Teile eingeteilt, wobei die mehr technischen Informationen separat gekenn­
zeichnet sind und von Lesern, die ihren PC nur oberflächlich verstehen wollen,
leicht übersprungen werden können. Der größte Teil dieses Kapitels fällt in diese
Kategorie, aber es gibt einen Teil, den Sie nicht auslassen sollten: die Bespre­
chung der Festplatten und besonders der Festplatteneinteilung. Wenn Sie die
wichtigsten praxisrelevanten Dinge über die PC-Familie verstehen wollen, müssen
Sie über Festplatten genau Bescheid wissen.
10.l
Eigenschaften und abgetrennte Speicherbereiche
von Festplatten
Festplatten stellen an die Designer von Computern einige besondere Anforderun­
gen, die nicht auf die Disketten zutreffen. Zunächst unterscheiden sich Festplatten
von Disketten durch ihre Speicherkapazität, die viel größer ist als bei einer Diskette.
Bei fast allen Dingen im Leben kommt ein Punkt, an dem ein quantitativer Unter­
schied zu einem qualitativen Unterschied wird. Das gilt auch für die Festplatten
unseres Computers. Ihre Speicherkapazität ist um so vieles größer als die einer
Diskette, daß sie auch anders als bei einer Diskette behandelt werden muß. Die
größere Kapazität einer Festplatte und auch ihre viel höhere Geschwindigkeit sind
ein Teil dessen, was das Besondere einer Festplatte ausmacht, aber seltsamer­
weise ist es nicht der entscheidende Unterschied. Worin die Festplatten sich von
den Disketten unterscheiden, ist, daß man sie nicht herausnehmen kann.
Ich verwende den Ausdruck Festplatte, weil fast jeder sie so bezeichnet. Dieser
Name betont die Tatsache, daß eine Festplatte im Gegensatz zu einer Diskette in
das Gerät eingebaut ist und nicht ausgewechselt werden kann.
(Wir sollten hier anmerken, daß es einige Festplattensysteme gibt, die heraus­
nehmbare Disk Cartridges haben und damit also nicht fest eingebaut sind. Sie
können wie eine Diskette gewechselt werden. Eine bekannte Marke für ein Cartrid­
ge-Disk-System ist die Bernoulli Box. Dieser Plattentyp kombiniert die Größe und
Geschwindigkeit einer konventionellen Festplatte mit der Flexibilität einer Diskette.
Die folgenden Bemerkungen über Festplatten treffen größtenteils nicht auf diese
Cartridge-Festplattensysteme zu.)
Die Tatsache, daß eine Festplatte fest eingebaut ist, ist ein besonderes Problem.
Wir stecken mit der Platte in unserem Computer, wir können sie nicht durch eine
10.1
Ei genschaften und abgetrennte Speicherbereiche von Festplatten
123
andere mit einem anderen Format ersetzen oder sie für ein weiteres Betriebs­
system einrichten. Obwohl die meisten von uns ausschließlich mit DOS arbeiten,
ist DOS nicht das einzige mögliche Betriebssystem. Es gibt z.B. CP/M-86, das
UCSD p-System, Xenix und PC-IX (zwei Betriebssysteme, die auf das bekannte
UNIX-System zurückgehen) und andere.
Eine Diskette macht normalerweise keine Probleme bzgl. der Zugehörigkeit zu
einem Betriebssystem, Zugehörigkeit in dem Sinne, daß die Diskette ein Format
und eine logische Struktur hat, die nur auf das Programm (DOS), das mit der Dis­
kette arbeitet, zutrifft. Genauso ist es kein grundlegendes Problem für ein Spielpro­
gramm, sein eigenes besonderes Diskettenformat zu verwenden (was viele Spiele
aus Kopierschutzgründen tun). Obwohl seltsame Diskettenformate ein Ärgernis für
uns sein können, sind sie kein fundamentales Problem bei der Arbeit mit unseren
PCs, einfach weil unsere Geräte nicht dazu gezwungen sind, immer diese seltsa­
men Formate zu benützen, da wir unsere Disketten wechseln, herausnehmen und
eine andere hineinschieben können.
Bei einer Festplatte ist die Situation völlig anders. Wenn eine Festplatte einem Be­
triebssystem „zugehörig" ist (zum Beispiel unserem DOS), dann können wir sie
nicht mit einem anderen Betriebssystem verwenden (zum Beispiel eines dieser
immer beliebter werdenden UNIX-verwandten Systeme). Da fast alles, was wir mit
unseren PCs machen, auf DOS beruht, sind wir versucht zu sagen: „Was soll's?".
Aber das wäre sehr kurzsichtig. Die Welt der Computerei ändert sich immer wieder,
und es ist gut möglich, daß das Betriebssystem, das wir jetzt für unsere Computer
verwenden, nicht das gleiche ist, das wir in ein paar Jahren einsetzen werden. So­
gar heute gibt es PC-Anwender, die noch weitere Systeme neben DOS benützen.
Wie können wir unterschiedliche Betriebssysteme auf einer Festplatte einrichten?
Die Antwort heißt natürlich Aufteilung: die Unterteilung einer Festplatte in Bereiche,
die zu verschiedenen Betriebssystemen gehören. Innerhalb eines Bereichs kann
die Platte formatiert und logisch strukturiert werden, je nach den Anforderungen
des Betriebssystems, das diesen Bereich „besitzt".
Diese Einrichtung ermöglicht eine große Flexibilität in der Verwendung unserer
Festplatten, die allerdings auf einigen Standards beruht, denen jedes Programm,
das die Platte benützt, folgen muß. Es muß ein vielseitiges Hauptformat auf der
Platte vorhanden sein, innerhalb dem alle Betriebssysteme auf der Platte leben
müssen. Ein Teil dieser gemeinsamen Basis ist die wirkliche physikalische Forma­
tierung der Platte, die unter anderem die Sektorgröße bestimmt, die in allen Berei­
chen der Platte verwendet wird. Dies zeigt den Unterschied zwischen physikali­
scher und logischer Formatierung, den wir in Kapitel 9 erörtert haben. Aber eine
gemeinsame Sektorgröße reicht als gemeinsame Basis für die Koexistenz ver­
schiedener Betriebssysteme noch nicht aus. Es muß auch ein Standardverfahren
geben, um die Grenzen eines Plattenbereichs zu markieren. Jedes Betriebs­
system, das auf einer aufgeteilten Platte läuft, muß innerhalb seiner eigenen Gren­
zen bleiben und darf nicht in das Territorium eines anderen Bereichs eindringen.
Wir wollen sehen, wie man dies erreicht. Der erste Sektor einer Festplatte ist für
einen besonderen Mastersatz reserviert, der die Einteilungstabelle enthält, die
beschreibt, wie die Platte angelegt ist. Diese Tabelle zeigt die Dimensionen der
124
10 Platten - Teil 3: Details
=11 11111
Bereich
1
Abb. 10-1:
Bereich
2
Bereich
3
unbenOtzt
Die abgetrennten Bereiche einer Festplatte
Platte und wieviele Bereiche es gibt, welche Größe jeder hat und wo er liegt. Eine
Platte muß nicht in mehrere Bereiche unterteilt werden. Normalerweise gibt es nur
einen Bereich, eine DOS-Partition, die die ganze Platte belegt. Egal wieviele
Bereiche auf der Platte sind, von eins bis vier, und ob sie die ganze Platte belegen
oder einen Teil für zukünftige Anwendungen übriglassen, dieser Mastersatz auf
dem ersten Sektor der Platte zeigt an, wieviele Bereiche es gibt und wo sie auf der
Festplatte liegen. Abbildung 10-1 macht das deutlich.
In der Regel werden von den Benutzern die zusätzlichen Möglichkeiten und die
Komplexität, die die Platteneinteilung mit sich bringt, ignoriert. Statt dessen gene­
rieren die meisten von uns einfach einen einzigen DOS-Bereich, der die ganze
Festplatte für DOS beansprucht. Das ist in der Tat sehr vernünftig. Solange Sie
keine weitere Partition brauchen, gibt es keinen Grund, Platz auf der Festplatte für
den Fall zu reservieren, daß Sie vielleicht in der Zukunft einen anderen abgetrenn­
ten Bereich benötigen. Wir werden auf dieses Problem noch zu sprechen kommen.
DOS verfügt über ein Programm für den Umgang mit den abgetrennten Bereichen
auf unseren Festplatten, das FDISK heißt und die Daten der Bereiche anzeigen und
ändern kann. Abbildung 10-2 demonstriert eine typische Anzeige von Bereichsda­
ten, für eine Platte, die völlig von DOS beansprucht wird. Es können bis zu vier ab­
getrennte Bereiche in einer Liste von FDISK auftreten. Jeder hat seinen eigenen
Anfang und sein Ende sowie seine Größe in Plattenzylindern. Zusammen können
sie die ganze Platte belegen (wie in Abbildung 10-2) oder Teile der Platte frei las­
sen.
Mit dem FDISK-Programm können wir die Plattenbereiche manipulieren, solange
wir mit DOS arbeiten. Wenn wir andere Betriebssysteme einsetzen, braucht man
äquivalente Programme. Mit FDISK von DOS können wir einen DOS-eigenen
Bereich erzeugen oder löschen, aber es erlaubt uns nicht, einen Bereich, der zu
einem anderen Betriebssystem gehört, zu entfernen. Dies ist eine gute Sicherheits­
maßnahme, aber sie hat Nachteile. Wenn wir einen unerwünschten Bereich eines
anderen Systems eliminieren wollen, können wir ihn nicht mit DOS löschen, und
das kann damit enden, daß wir einen unbenützbaren Bereich behalten müssen.
Nehmen wir an, daß wir unsere gesamte Platte DOS gewidmet haben und nun
einen Teil des Platzes für einen anderen Bereich räumen wollen. Können wir den
Platz einfach übergeben? Leider nicht. In der Art, wie DOS seine Plattenbereiche
strukturiert, kann es nicht einfach den Bereich verkleinern. Wenn wir die Größe
10.1 Eigenschaften und abgetrennte Speicherbereiche von Festplatten
125
Display Partition Information
Partition
1
Status
A
Type
DOS
Start
0
End
613
Slze
614
Total dlsk space ls 614 cyllnders.
PrHs Esc to return to FDISK Options
Abb. 10-2:
Daten eines abgetrennten Festplattenbereiches
eines DOS-Bereiches ändern wollen, müssen wir den ganzen Inhalt des Bereiches
umspeichern
(zum Beispiel
mit dem DOS-Dienstprogramm BACKUP),
den
Bereich löschen (mit FDISK), einen neuen Bereich erzeugen, ihn formatieren (mit
FORMAT) und dann die Daten dort wieder abspeichern (mit RESTORE). Das kann
ein langwieriger Vorgang sein, den wir vermeiden können, indem wir Platz für neue
Bereiche übriglassen, wenn wir zum ersten Mal unsere Festplatten einrichten. Wir
können Platz frei lassen, aber ich empfehle es nicht. Wir sollten besser DOS den
gesamten Platz der Festplatte zur Verfügung stellen, solange wir nicht sicher wis­
sen, daß wir andere Bereiche brauchen und damit die mühevolle Arbeit der Neu­
einteilung in Kauf nehmen, wenn die Notwendigkeit besteht.
In Abbildung 10-2 werden Sie bemerken, daß ein einziger Bereich mit dem Status
„A" gekennzeichnet ist. Das bedeutet, daß es der aktive Bereich ist. Auf jeder
geteilten Platte ist nur ein Bereich gleichzeitig als aktiv markiert. Das hat mit dem
Start- oder Boot-Vorgang zu tun. Wir wissen, daß jede normale Platte ein Boot-Pro­
gramm auf ihrem ersten Sektor hat, das den Startvorgang oder das Booten des
Betriebssystems einleitet. Das triffl auch auf eine geteilte Festplatte zu, aber es gibt
einen zusätzlichen Satz. Der erste Sektor einer geteilten Festplatte enthält ein
„HauptJBoot-Programm" zusammen mit der Tabelle, die die abgetrennten
Bereiche beschreibt. Das Haupt-Boot-Programm schaut in der Einteilungstabelle
nach, welcher Bereich aktiv ist. Dann ruft es das Boot-Programm für diesen
Bereich auf. Jeder Bereich hat sein eigenes Boot-Programm (so wie jede Diskette
ihren eigenen Boot-Satz hat), das auf die Bedürfnisse des besonderen Betriebssy­
stems, dem dieser Bereich gehört, zugeschnitten ist. Der Haupt-Boot-Satz erledigt
die Aufgabe, den richtigen Bereichs-Boot-Satz zu finden und ihn laufen zu lassen.
Wir haben über Plattenbereiche gesprochen, die zu verschiedenen Betriebssyste­
men gehören, aber das ist nicht immer der Fall. Offiziell kann nur ein DOS-Bereich
auf einer Festplatte sein, aber manchmal sind es in Wirklichkeit zwei oder mehr,
und das aus einem wichtigen Grund. Wie wir in Kapitel 9 gesehen haben, setzt
126
10
Platten - Teil 3: Details
DOS der Größe seiner Platten eine 32-Megabyte-Grenze. Was ist, wenn wir eine
größere Platte haben, zum Beispiel eine 70-Mega-Platte? Der DOS-Bereich, den
wir auf so einer Platte erzeugen; kann normalerweise nicht größer als 32 Mega­
b ytes sein, und damit ist der Rest der Platte für DOS nicht verfügbar. Wir können
jedoch weitere DOS-Bereiche auf der Platte erzeugen und auf sie durch ein spe­
zielles DOS-Steuerungsprogramm zugreifen. Wenn wir diesen Trick verwenden,
können wir die ganze Platte für DOS-Daten benützen, obwohl sie in separate
Bereiche aufgeteilt ist (die wir so behandeln, als wären sie separate Platten).
Sie können daraus ersehen, daß abgetrennte Bereiche den großen Speicherplatz
einer Festplatte für uns flexibler einsetzbar machen, was nicht auf unsere Disketten
zutrifft. Mit dieser enormen Größe und höheren Flexibilität tritt ein zusätzliches Maß
an Komplexität auf, das wir bewältigen müssen, wenn wir die Festplatten unserer
Computer vollkommen ausnützen wollen.
Wir betrachten nun die Struktur, die DOS auf unseren Platten anlegt, und einige
technische Details, wie DOS unsere Platten verwaltet.
'
10.2
Details der Plattenstruktur
In diesem Abschnitt beschäftigen wir uns damit, wie DOS eine Platte strukturiert,
damit wir besser verstehen können, was auf unseren Platten passiert. Das hilft uns
bei unserem täglichen Umgang mit Platten und vielleicht können wir damit zukünf­
tig auch Schwierigkeiten beseitigen, wenn etwas schiefgeht.
Wie wir in Kapitel 9 gesehen haben, teilt DOS jede Platte in zwei Teile: den System­
teil, der für die Speicherzwecke von DOS benützt wird, und den Datenteil, wo
unsere Dateien gespeichert werden. Der Systembereich selbst hat drei Teile: den
Boot-Satz, die FAT (File Allocation Table) und das Hauptinhaltsverzeichnis. Nun
werden wir genauer betrachten, was dort jeweils gespeichert ist.
Der Boot-Satz ist immer der erste Teil einer Platte. Wie wir schon gelernt haben,
wird er für die Speicherung eines kurzen Programmes verwendet, das den Start­
vorgang (das „Booten") von DOS einleitet. Der Boot-Record ist auf jeder Platte vor­
handen, sogar auf solchen, mit denen wir nicht booten können (weil sie keine
Kopie der DOS-Systemdateien enthalten).
Das Boot-Programm ist so klein, daß es leicht in einen einzigen Plattensektor paßt,
so daß der Boot-Bereich nicht mehr als einen Sektor belegen muß. Aber für den
Fall, daß zukünftig aus irgendwelchen Gründen ein größeres Boot-Programm
gebraucht wird, ermöglicht die Methode, mit der DOS Platten behandelt, daß der
Boot-Bereich größer werden könnte.
Es gibt noch mehr Interessantes innerhalb des Boot-Satzes einer Platte, als Sie
sich vielleicht vorstellen. Wir können das DEBUG-Programm von DOS verwenden,
um den Inhalt eines Boot-Satzes zu untersuchen. Dazu braucht man nur zwei ein-
10.2
Details der Plattenstruktur
127
fache DEBUG-Kommandos: L 0 0 0 1, das den Boot-Satz einer Platte in Laufwerk A
in den Arbeitsspeicher liest, und D 0 L 200, das die Daten des Boot-Satzes in hex
und ASCII auf dem Bildschirm ausgibt. Abbildung 10-3 zeigt, wie diese Information
für die DOS-Version 3.10 aussieht.
Wenn wir diesen Boot-Satz betrachten, ist vieles offensichtlich. Die Fehlermel­
dungen und die Namen der beiden DOS-Systemdateien (IBMBIO.COM und
IBMDOS.COM) geben uns eine Vorstellung von den Dingen, die während des
Boot-Vorganges falsch laufen können, und sie sagen uns auch indirekt, daß das
Boot-Programm diese beiden Namen im Platteninhaltsverzeichnis überprüft, um
zu sehen, daß es eine Systemplatte ist. Sie können auch kurz nach dem Anfang
eine Versionskennzeichnung entdecken, die sich „IBM 3.1" liest. Diese Versions­
markierung ist nur das erste Element in einer Tabelle, in die DOS die Charakteristi­
ken der Platte schreibt.
2B3S:0000
EB 29 90 49 42 40 20 20-33 2E 31 00 02 02 01 00
. ) . IBM
2B3S:0010
02 70 00 00 02 FD 02 00-09 00 02 00 00 00 00 00
.p..............
3.1.....
2B3S:0020
00 00 00 00 OF 00 00 00-00 01 00 FA 33 CO SE DO
............3...
2B3S:0030
BC 00 7C 16 07 88 7S 00-36 CS 37 lE S6 16 S3 BF
„l. .. x.6.7.V.S.
2B3S:0040
20 7C B9 OB 00 FC AC 26-SO 30 00 74 03 26 SA OS
l.....&.:.t.&..
2B3S: ooso
AA SA C4 E2 Fl 06 lF S9-47 02 C7 07 20 7C FB CD
........ G.... 1..
.rg.. 1..&. I ... 1.
2B3S:0060
13 72 67 AO 10 7C 9S F7-26 16 7C 03 06 lC 7C 03
2B3S:0070
06 OE 7C A3 34 7C A3 2C-7C BS 20 00 F7 26 11 7C
2B3S: ooso
SB lE OB 7C 03 C3 4S F7-F3 01 06 2C 7C 88 00 OS
2B3S: 0090
Al 34 7C ES 96 00 BS 01-02 ES AA 00 72 19 SB FB
.41„
2B3S:OOAO
B9 OB 00 BE BE 7D F3 A6-7S 00 SO 7F 20 BE C9 7D
„„.} .. u„. ..}
2B3S:OOBO
B9 OB 00 F3 A6 74 lS BE-SF 7D ES 61 00 32 E4 CD
.„„t.. _).a.2..
2B3S: ooco
16 SE lF SF 04 SF 44 02-CD 19 BE AS 7D EB EB Al
.
2B3S: 0000
lC OS 33 02 F7 36 OB 7C-FE CO A2 31 7C Al 2C 7C
„3„6.1.„11.,1
2B3S:OOEO
A3 32 7C 88 00 07 Al 2C-7C ES 40 00 Al lS 7C 2A
.21.... ,l.@ ... I•
2B3S:OOFO
06 30 7C 40 SO ES 4E 00-SS 72 CF 28 06 31 7C 76
[email protected]. (.llv
283S:Ol00
OC 01 06 2C 7C F7 26 OB-7C 03 OS EB D9 SA 2E lS
„.,l.&. I „....
283S:Ol10
7C SA 16 lE 7C SB lE 32-7C EA 00 00 70 00 AC OA
1. ..l„21...p.
2B3S:Ol20
CO 74 22 B4 OE 88 07 00-CD 10 EB F2 33 02 F7 36
.t• .........3..6
2B3S:Ol30
lS 7C FE C2 SS 16 30 7C-33 02 F7 36 lA 7C SS 16
.1..„ 013..6. 1..
2B3S:0140
lF 7C A3 2E 7C C3 B4 02-SB 16 2E 7C Bl 06 02 E6
.l„1„„„1„ ..
283S:OlSO
OA 36 30 'JC SB CA S6 E9-SB 16 lE 7C CD 13 C3 00
.601„.„.. 1....
.Non-Systemdisk
.. l.41.,1. ..&. I
„
.1..H„..,1„.
•
.
.
„
.
.
.....r...
0..... } ...
.
„
2B3S:0160
OA 4E 6F 6E 20 S3 79 73-74 6S 60 20 64 69 73 6B
2B3S:0170
20 6F 72 20 64 69 73 6B-20 6S 72 72 6F 72 00 OA
or disk error..
2B3S:OlSO
S2 65 70 6C 61 63 65 20-61 6E 64 20 73 74 72 69
Replace and stri
2B35: 0190
6B 6S 20 61 6E 79 20 6B-6S 79 20 77 6S 6S 6E 20
ke any key when
2B35:OlAO
72 6S 61 64 79 00 OA 00-00 OA 44 69 73 6B 20 42
ready.....Oisk B
2B3S: OlBO
6F 6F 74 20 66 61 69 6C-7S 72 6S 00 OA 00 49 42
oot failure... IB
2B3S:OlCO
40 42 49 4F 20 20 43 4F-40 49 42 40 44 4F S3 20
11810
2B3S:0100
20 43 4F 40 00 00 00 00-00 00 00 00 00 00 00 00
2B3S: OlEO
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
...... .........
2B3S:OlFO
00 00 00 00 00 00 00 00-00 00 00 00 00 00 SS AA
.............. u.
Abb. 10-3:
Der Inhalt eines Boot-Satzes
COMIBMDOS
COM............
.
128
10 Platten - Teil 3: Details
Die Tabelle enthält wichtige Informationen, wie zum Beispiel die Anzahl der Bytes
pro Sektor, der Sektoren pro Spur usw. (die physikalischen Dimensionen der
Platte) und auch die Größe der FAT und des Inhaltsverzeichnisses (die logischen
Dimensionen der DOS-Struktur auf einer Platte). Diese Tabelle und auch ein Kenn­
zeichen am Ende des Satzes, (hex 55 AA), sind auf allen Platten enthalten, ausge­
nommen auf jenen, die für Versionen formatiert wurden, die vor Version 2.0 heraus­
kamen.
DOS muß alle Charakteristiken einer Platte identifizieren, mit der es arbeitet. In den
früheren Versionen von DOS, als es nur wenige Plattenformate gab, wurden diese
Charakteristiken in DOS eingebaut, und alles, was DOS von einer Platte benötigte,
war der ein Byte lange ID-Code (der in der FAT gespeichert ist), um alles Notwen­
dige über eine Platte zu wissen. Dieses Verfahren ist allerdings nicht flexibel
genug, und deshalb erhält DOS heute alle Informationen über eine Platte von der
Informationstabelle im Boot-Satz.
Wenn Sie das Boot-Programm decodieren wollen, können Sie das Disassembler­
kommando U von DEBUG verwenden. Vollständig sehen Sie es nur, wenn Sie es
stückweise disassemblieren, und die Adressen verfolgen, die in einem „Sprung"­
Kommando vorkommen, um herauszubekommen, wo andere Teile des Pro­
grammcodes beginnen. Den Anfang des Boot-Satzes von Abbildung 10-3 erhalten
Sie mit diesen zwei Disassembler-Kommandos: U 0 L 2 und U 2B.
Unmittelbar nach dem Boot-Satz folgt auf der Platte die Dateibelegungstabelle
oder FAT, die den Speicherplatz auf der Platte verwaltet. Wie wir in Kapitel 9
besprochen haben, ist der Datenbereich einer Platte in Segment-Speicherbe­
reichsgruppen unterteilt, und die Speicherbereichsgruppen sind die Einheiten, die
den Dateien zugewiesen werden. Jede Speicherbereichsgruppe wird durch eine
sequentielle Nummer identifiziert, beginnend mit Nummer 2 für die erste Speicher­
bereichsgruppe einer Platte (die Speicherbereichsgruppen Nummer 0 und 1 sind
für DOS reserviert). Ungeachtet ihrer Größe (die ein Sektor oder acht Sektoren oder
mehr betragen kann) hat jede Speicherbereichsgruppe einen Eintrag in der FAT,
der ihren Status enthält.
Der FAT-Eintrag einer Speicherbereichsgruppe enthält die Identifikationsnummer
einer anderen Speicherbereichsgruppe, und damit legt die Gesamtanzahl der
Speicherbereichsgruppen fest, wie groß die Einträge einer FAT sein müssen.
Ursprünglich wurden die FAT-Einträge als 12-Bit-Zahlen gespeichert, die Zahlen bis
zu 4K darstellen konnten. Das begrenzte die mögliche Anzahl der Speicherbe­
reichsgruppen auf etwa 4.000. Die Gestaltung der 20-Mega-Festplatte des AT ver­
langte jedoch über 10.000 Speicherbereichsgruppen und damit eine größere FAT .
So gibt es jetzt zwei FAT-Formate: eines für kleinere Platten mit 12 Bit großen Einträ­
gen und eines mit 16 Bit großen Einträgen. Der Unterschied zwischen den beiden
liegt nur darin, wie die FAT selbst gespeichert ist. Die Art, wie die FAT benützt wird,
ist für beide Größen die gleiche.
Wenn ein FAT-Eintrag Null ist, zeigt das an, daß die entsprechende Speicherbe­
reichsgruppe nicht verwendet wird. Sie ist für die Zuweisung an eine Datei frei, die
10.2 Details der Plattenstruktur
129
sie benötigt. Bei Speicherbereichsgruppen, die Daten von Dateien speichern, ent­
hält der FAT-Eintrag entweder die Identifikationsnummer der nächsten Speicherbe­
reichsgruppe oder eine spezielle Nummer, die das Ende einer Speichervertei­
lungskette für eine Datei markiert. Die SpeicherbereichsgrUppen, in denen eine
Datei gespeichert ist, sind durch die numerischen Verweise, die in der FAT auf­
gezeichnet sind, miteinander „verkettet". Der Inhaltsverzeichniseintrag der Datei
zeigt die Nummer der ersten Speicherbereichsgruppe an, und jede Speicherbe­
reichsgruppe zeigt auf die nächste oder auf das Ende der Kette (die Endemarkie­
rung ist bei einer 12-Bit-FAT hex FFF, bei einer 16-Bit-FAT hex FFFF). Damit kann
DOS die Lage der Daten einer Datei schrittweise von vorne nach hinten feststellen.
Teile einer Platte, die defekt sind und nicht benützt werden sollten - sogenannte
„bad tracks"-Bereiche - werden durch den FAT-Eintrag FF? (oder FFF7 bei einer
16-Bit-FAT ) gekennzeichnet. Andere FAT-Codes, FFO bis FFF oder FFFO bis FFFF,
sind für zukünftige Belange reserviert.
Sie werden bemerken, daß die besonderen FAT-Codes die 16 höchsten Werte sind
(in jedem FAT-Format), so daß es soviele Nummern für Speicherbereichsgruppen
gibt, wie überhaupt möglich sind: bis zu 4.078 bei 12-Bit-FAT s und 65.518 bei 16Bit-FATs. Wie wir wissen, wird die Zahl 0 für verfügbare Speicherbereichsgruppen
verwendet, und auch die Zahl 1 ist aus einem technischen Grund reserviert.
Die 12-Bit- und 16-Bit-FAT s werden zwar gleich benützt, aber jeweils speziell auf­
gezeichnet, um dem Unterschied in der Größe der Einträge Rechnung zu tragen.
Es ist nichts Besonderes dabei, wie eine 16-Bit-FAT gespeichert wird. 16-Bit-Zahlen
sind ein Teil des natürlichen PC- Systems, und so werden die Zahlen in einer 16-Bit­
FAT einfach als eine Liste von 2-Byte-Wörtern abgespeichert. Bei 12-Bit-FAT s ist es
etwas komplizierter. Die Mikroprozessoren des PC haben keine geeignete Möglich­
keit, Zahlen zu speichern, die 1 1/2 Bytes lang sind. Um dieses Problem zu behe­
ben, sind die FAT-Einträge paarweise gespeichert, so daß zwei FAT-Einträge drei
Bytes belegen, ohne Platz zu verschwenden. Die Methode, zwei 12-Bit-Zahlen in
drei Bytes zu codieren, ist so gut gelöst, wie das mit Assembleranweisungen
erreicht werden kann, dagegen ist es ziemlich schwierig für uns, etwas Sinnvolles
aus dem Hex-Code einer solchen FAT herauszulesen.
Jede FAT- Tabelle beginnt mit dem Eintrag für die Speicherbereichsgruppe mit der
Nummer 0, obwohl die erste wirkliche Nummer 2 ist. Die ersten zwei FAT-Einträge
sind Dummies (Scheineinträge) und sie liefern Platz für die Speicherung eines ID­
Bytes, aus dem DOS das Plattenformat erkennen kann. Das erste Byte der FAT ent­
hält diesen Code. Der hex Code FE ist zum Beispiel das Kennzeichen für das origi­
nale einseitige 160K-Diskettenformat des PC.
Um die FAT besser zu sichern, kann DOS mehr als eine Kopie der FAT anlegen.
Normalerweise sind auf Platten zwei Kopien der FAT gespeichert, obwohl es auch
möglich ist, daß eine Platte nur eine Kopie hat oder mehr als zwei. In jedem Fall
sind sämtliche Kopien der FAT hintereinander gespeichert. Meines Wissens ver­
wendet DOS die zweite Kopie der FAT nicht, obwohl es sie jedesmal sorgfältig auf­
zeichnet, wenn sich die FAT ändert.
130
10 Platten - Teil 3: Details
Das nächste und letzte Element des Systembereichs einer Platte ist das Hauptin­
haltsverzeichnis, das direkt hinter der FAT der Platte gespeichert wird. Das Inhalts­
verzeichnis arbeitet wie eine einfache Tabelle aus 32-Byte-Einträgen, die die
Dateien auf der Platte beschreiben (und andere Inhaltsverzeichniseinträge wie den
Plattenkennsatz).
Die Inhaltsverzeichniseinträge enthalten, wie wir aus Kapitel 9 wissen, den 8-Byte­
Dateinamen, die 3 Byte lange Dateiname-Erweiterung, die Dateigröße, den
Datums- und Zeitstempel, die Nummer der ersten Speicherbereichsgruppe der
Datei und die Datei-Attribut-Codes. Es gibt auch noch ein unbenütztes 10-Byte­
Feld in jedem Inhaltsverzeichniseintrag, der für zukünftige Zwecke eingesetzt wer­
'
den kann. Es lassen sich eine Menge interessanter Dinge in diesen Inhaltsver­
zeichniseinträgen entdecken. Zum Beispiel gibt es im Dateinamenfeld zwei beson­
dere Codes im ersten Byte des Dateinamens. Wenn dieses Byte Null ist, zeigt das
an, daß der Inhaltsverzeichniseintrag (und die folgenden Einträge in diesem
Inhaltsverzeichnis) noch nie verwendet worden sind. Daraus erkennt DOS sofort
alle aktiven Inhaltsverzeichniseinträge, ohne daß es ein Inhaltsverzeichnis bis zum
Ende durchsuchen muß. Ein anderer Code, ES, wird für die Markierung von Einträ­
gen benützt, die gelöscht worden sind. Wenn wir mit gelöschten Dateien arbeiten
(indem wir das UnErase-Programm der Norton Utilities oder ein ähnliches verwen­
den), sehen wir das erste Zeichen des gelöschten Dateinamens nicht. Der Grund
dafür ist, daß bei gelöschten Dateien das erste Zeichen des Dateinamens mit die­
sem Löschcode hex ES überschrieben wird. Wenn eine Datei gelöscht wird (oder
ein untergeordnetes Inhaltsverzeichnis entfernt wird), wird übrigens nichts anderes
im Inhaltsverzeichniseintrag geändert. Die gesamte Information bleibt erhalten. Es
wird lediglich der Dateiname als gelöscht markiert und die Speicherzuteilung der
Datei in der FAT freigegeben.
Noch etwas sollte man über Dateinamen- und Erweiterungsfelder wissen. Bei
Dateien und untergeordneten Inhaltsverzeichnissen werden diese beiden als
getrennte Felder behandelt. Aber wenn der Inhaltsverzeichniseintrag als Platten­
kennsatz verwendet wird, werden die zwei zu einem 11-Zeichen-Feld zusammen­
geschlossen. Wenn der Kennsatz einer Platte angezeigt wird (mit dem DIR- und
CHKDSK-Kommando), wird der Kennsatz nicht wie die Dateinamen mit einem
Punkt angegeben.
Die Größe einer Datei wird im Inhaltsverzeichniseintrag der Datei als ein 4-Byte­
lnteger abgespeichert, womit Dateigrößen möglich sind, die viel größer sind als
irgendeine Datei, die wir verwenden könnten. Das garantiert, daß unsere Dateien
nicht durch die Größe begrenzt werden, die in einem Inhaltsverzeichnis aufge­
nommen werden kann. Die Dateigröße wird übrigens nur für echte Dateien auf­
gezeichnet. Bei anderen Typen von Inhaltsverzeichniseinträgen wird die Datei­
größe mit 0 angegeben. Das ist für den Inhaltsverzeichniseintrag sinnvoll, der als
Kennsatz dient, aber es ist bei untergeordneten Inhaltsverzeichnissen etwas über­
raschend. Obwohl untergeordnete Inhaltsverzeichnisse genauso wie die Dateien
im Datenbereich der Platte gespeichert werden und eine Größe haben, wird diese
nicht im Inhaltsverzeichniseintrag der untergeordneten Inhaltsverzeichnisse ein­
getragen.
10.2
Details der Plattenstruktur
131
Der Datums- und Zeitstempel in einem Inhaltsverzeichniseintrag ist so formatiert,
daß ein Datum vom 1. Januar 1980 bis Ende 2099 aufgezeichnet werden kann. Der
Zeitstempel hat eine Genauigkeit von zwei Sekunden, obwohl uns DOS die Zeit nur
auf die Minute genau ausgibt, wenn es uns den Zeitstempel zeigt. Das Datum und
die Zeit sind separat in zwei benachbarten 16-Bit-Wörtern gespeichert und sind
jeweils gemäß eigenen Formeln codiert. Durch die Art, wie sie gespeichert sind,
können jedoch beide zusammen als ein 4-Byte-Feld behandelt werden, das mit
einer einzigen Assembleranweisung verglichen werden kann, um festzustellen, ob
ein Stempel früher oder später als ein anderer eingetragen wurde. Das Datum und
die Zeit sind in 2-Byte-Zahlen durch folgende Formeln codiert:
DATUM
ZEIT
=
=
TAG
+
32
MONAT
*
SEKUNDEN/2
+
32
*
+
512
*
MINUTEN
(JAHR
+
1024
-
1980)
*
STUNDEN
Der letzte interessante Punkt für uns in einem Inhaltsverzeichniseintrag ist das
Datei-Attribut-Byte. Dieses einzelne Byte wird wie eine Reihe von acht Flags
behandelt, von denen jedes durch ein einzelnes Bit kontrolliert wird. Sechs von
den acht werden laufend benützt, während die anderen zwei für zukünftige Verwen­
dungen zur Verfügung stehen. Zwei der sechs sind spezielle Attribute und werden
unabhängig von den anderen Bits gesetzt. Eines markiert den Kennsatzeintrag im
Inhaltsverzeichnis der Platte. Das andere kennzeichnet den Eintrag für ein unterge­
ordnetes Inhaltsverzeichnis, damit DOS weiß, daß es dieses nicht als Datei, son­
dern wie ein untergeordnetes Inhaltsverzeichnis behandeln muß. Die übrigen vier
Attribute werden für die Markierung von Dateien eingesetzt und sie können belie­
big kombiniert werden. Eines markiert eine Datei als „read-only"-Datei, damit sie
nicht versehentlich verändert oder gelöscht werden kann, ein anderes kennzeich­
net eine Datei als geändert. Es wird durch das BACKUP-Programm (und ähnliche
Programme) verwendet, um anzuzeigen, von welchen Dateien noch Sicherungsko­
pien gemacht werden müssen. Die letzten beiden Attribute werden „Hidden" (dt.
„Geheim") und „System" genannt. Damit kann eine Datei für die meisten DOS­
Kommandos unsichtbar gemacht werden. Es gibt im wesentlichen keinen Unter­
schied zwischen dem Hidden- und dem Systemstatus. Die zwei DOS-Systemda­
teien, die auf jeder Boot-Platte enthalten sind, sind sowohl als Hidden- als auch als
Systemdatei markiert. Merkwürdig ist, daß Hidden- oder Systemdateien für die
DOS-Kommandos DIR, COPY und DEL unsichtbar sind, aber vom TYPE-Kom­
mando gesehen werden. Sie können das selbst überprüfen, indem Sie das Kom­
mando TYPE IBMDOS.COM auf einer Systemplatte eingeben.
Wie die anderen Elemente des Systembereichs einer Platte hat das Hauptinhalts­
verzeichnis eine feste Größe, so daß DOS genau weiß, wo es den Anfang des
Inhaltsverzeichnisses findet und den Anfang des Datenbereichs, der ihm folgt. Das
bedeutet, daß das Hauptinhaltsverzeichnis nur soviele Einträge enthalten kann, wie
diese feste Größe zuläßt. Untergeordnete Inhaltsverzeichnisse haben dieses Pro­
blem dagegen nicht. Obwohl die untergeordneten Inhaltsverzeichnisse im wesent­
lichen wie die Hauptinhaltsverzeichnisse arbeiten, sind sie im Datenbereich der
Platte wie gewöhnliche Dateien gespeichert und können auf jede Größe anwach-
132
10 Platten - Teil 3: Details
sen, die die Platte aufnehmen kann. Untergeordnete Inhaltsverzeichnisse, die mit
der DOS-Version 2.00 eingeführt wurden, vermeiden jede willkürliche Begrenzung
der Anzahl von Dateien, die eine Platte speichern kann.
Wie wir schon erwähnt haben, hat jedes Element des Systembereichs einer Platte
eine feste Größe für ein bestimmtes Plattenformat. Der Boot-Satz belegt immer
einen Sektor. Die FAT variiert von zwei Sektoren für eine 160K-Diskette bis zu um­
fangreicheren Größen, wie die 82 Sektoren auf der 20-Mega-Festplatte des AT. Das
Hauptinhaltsverzeichnis variiert ebenfalls. Auf einer 160K-Diskette hat es 64 Ein­
träge und beansprucht vier Sektoren, auf einer 20-Mega-Platte hat es 512 Einträge
und füllt 32 Sektoren.
Menu 1.5
Select Disk Seetor
You may select a sector numbered from 0 through 319
Enter sector number:
Press Esc or Enter to return to Top Level Menu
Outline of Seetor Usage on This Disk
0
1
3
7
-
-
-
Boot Area (used by DOS)
2
6
319
FAT Area (used by DOS)
Directory Area (used by DOS)
Data Area (where files are stored)
Currently selected:
Drive B:
Abb. 10-4:
No file or disk sector selected
Directory: root directory
Anzeige für Größen von Plattenbereichen
Wenn Sie das NU-Programm haben, können Sie die Größe eines Plattenbereichs
anschauen, indem Sie die Menüoption 1.5 benützen. Abbildung 10-4 zeigt ein Bei­
spiel für diese Information auf einer 160K-Standard-Diskette.
Der letzte und größte Teil einer Platte ist der Datenbereich. Wie Sie sich vorstellen
können, gibt es nicht so viel Interessantes über diesen Teil zu entdecken, vergli­
chen mit dem Systemteil. Wir wissen, daß unsere Dateidaten jede beliebige Länge
haben können, aber die Daten werden immer auf ganzen 512-Byte-Plattensekto­
ren gespeichert und die Sektoren werden Dateien in ganzen Speicherbereichs­
gruppen zugeteilt. So bleibt am Ende der meisten Dateien ein unbenützter Rest im
letzten verwendeten Sektor, und es könnten sogar auch völlig unbenützte Restsek­
toren am Ende der letzten Speicherbereichsgruppe einer Datei zugewiesen wer­
den.
10.3 Nichtstandardgemäße Formate und Kopierschutz
133
Wenn DOS Dateidaten auf die Platte schreibt, unternimmt es nichts, um diese Rest­
bereiche zu säubern. Alle Restsektoren bleiben unverändert und enthalten das,
was vorher dort gespeichert war. Falls am Ende des letzten Sektors einer Datei rest­
liche Bytes vorhanden sind, übernehmen wir das, was im Speicherbereich des
Computers gespeichert war, in dem DOS die Daten des Sektors zusammengefügt
hat. Normalerweise ist es ein kleines Bruchstück von anderen Plattendaten, ein Teil
einer anderen Datei oder ein Teil eines Inhaltsverzeichnisses. Wenn Sie den Rest­
bereich am Ende einer Datei untersuchen, finden Sie solche Restinformationen.
10.3
Nichtstandardgemäße Formate und Kopierschutz
Fast alles, was wir bisher über unsere Platten gelernt haben, bezieht sich auf das
Standardverfahren, mit dem DOS eine Platte formatiert und strukturiert. Aber die
Platten unseres Computers sind nicht an die Regen gebunden, denen DOS folgt.
Es gibt viele andere mögliche Arten, eine Platte zu behandeln.
Einige der Verfahren, denen wir begegnen könnten, haben mit anderen Betriebs­
systemen zu tun, wie wir schon erwähnt haben, mit Betriebssystemen wie CP/M-
86, dem p-System und anderen. Ferner gibt es ein paar Programme, die ihre
eigene Betriebssystemumgebung für ihre speziellen Bedürfnisse erzeugen. Wenn
Sie den Grund wissen wollen, betrachten Sie einmal die Beschränkungen, die
DOS Dateinamen auferlegt. Es dürfen nicht mehr als 11 Zeichen einschließlich der
Erweiterung sein. Falls ein Programm längere Namen für seine Dateien verwenden
möchte, muß es die DOS-Konvention verlassen. Und das ist einer der Gründe,
warum wir manchmal Programme finden, die ihr eigenes spezielles Plattenformat
verwenden.
Wenn wir jedoch nichtstandardgemäßen Plattenformaten begegnen, geschieht das
normalerweise aus einem Grund: Kopierschutz. Ein Programm, das mit besonde­
ren Plattenformaten arbeitet, ist dann zumindest bis zu einem gewissen Grad
gegen unerlaubtes Kapieren geschützt. Leider stellen uns nichtstandardgemäße
Plattenformate vor spezielle Probleme bei der Verwendung und beim Sichern
unserer Programme und Daten, was wenig mit Kopierschutz zu tun hat. Wir können
mit unserer Diskussion hierüber nur sehr wenig dazu beitragen, die Schwierigkei­
ten zu verringern, die Kopierschutz hervorrufen kann. Man sollte aber eine Vorstel­
lung davon haben, was mit diesen nichtstandardgemäßen Formaten passiert,
damit wir möglichst wenig Schwierigkeiten mit ihnen haben.
Als erstes müssen wir wissen, daß es zwei verschiedene Kategorien von nichtstan­
dardgemäßen Platten gibt. Eine Kategorie unterscheidet sich vollkommen vom
DOS-Format, und die andere Kategorie könnten wir als frisiert bezeichnen, ist aber
ansonsten im DOS-Format.
Einige kopiergeschützte Programme haben wirklich nichts mit den üblichen
Anwendungen unserer Computer gemein und müssen keine Daten mit anderen
Programmen austauschen, die unter DOS arbeiten. Dazu gehören die meisten
Spielprogramme, wie zum Beispiel das Flugsimulatorprogramm. Solche Pro­
gramme sind normalerweise so gestaltet, daß sie sich selbst von der Platte laden
134
10
Platten - Teil 3: Details
können. Sie booten auf die gleiche Weise, wie DOS bootet. Aber während sich
DOS aktiviert, um eine Umgebung zu schaffen, mit deren Hilfe andere Programme
laufen können, werden diese selbstladenden Programme nur gebootet, um sich
selbst laufen zu lassen. Da solche Spielprogramme keine Daten mit anderen Pro­
grammen austauschen müssen, brauchen sie nicht auf Standard-DOS-Platten
gespeichert werden. Sie können darauf gespeichert sein, müssen aber nicht, und
durch ihr spezielles selbstladendes Format sind sie gegen normale Kopierbemü­
hungen geschützt.
Im Gegensatz dazu gibt es Programme, die kopiergeschützt sind und trotzdem mit
DOS arbeiten müssen. Dazu gehört auch der Austausch von Datendateien, die
gemäß der DOS-Konvention aufgezeichnet sind. Das bekannteste Beispiel für die­
sen Programmtyp ist 1-2-3 von Lotus. Diese Programme arbeiten vollständig mit
der Standard-Plattenformatierung von DOS, mit einer Ausnahme, die die Basis
ihres Kopierschutzes bildet. Typischerweise verwenden diese Programme eine
Masterdiskette, die einige besondere Markierungen hat; um konventionelle Kopier­
versuche zu verhindern. Wenn wir mit einem solchen Programm zu arbeiten begin­
nen, sucht das Programm auf der Masterdiskette nach der speziellen kopierresi­
stenten Markierung. Falls es diese spezielle Markierung nicht findet, weigert sich
das Programm, mit der Arbeit fortzufahren.
Wie lassen sich solche nichtstandardgemäßen Formate erzeugen, und was macht
sie kopiergeschützt? Wie wir in Kapitel 8 gesehen haben, können unsere Platten
mit einer Vielzahl von Sektorgrößen, Sektoren pro Spur etc. formatiert werden. DOS
verwendet nur sehr einfache Plattenformate. Zum Beispiel benützt DOS nur Sekto­
ren mit 512 Bytes, obwohl unsere Platten Sektoren in verschiedenen Größen haben
können. Die Standard-Kopierroutinen von DOS, einschließlich der COPY- und
DISKCOPY-Kommandos, arbeiten nur mit den Standardformaten. Alles Unübliche,
wie ein Sektor von ungewöhnlicher Größe, ein außergewöhnlich numerierter Sek­
tor, ein fehlender Sektor, ein zusätzlicher Sektor usw., kann von DOS nicht richtig
behandelt werden. Ein intelligentes Programm kann jedoch mit diesen Unregelmä­
ßigkeiten arbeiten und damit einen Kopierschutz erzeugen. Spezielle Kopierpro­
gramme können den Kopierschutz fast immer überwinden, nicht aber die Stan­
dard-DOS-Operationen.
Wenn wir einem Plattenformat begegnen, das völlig anders ist als das DOS-Format
- z.B. eine kopiergeschützte Platte oder eine Platte eines anderen Betriebssytems
-, können wir schon ganz einfache Operationen auf einer solchen Platte nicht mehr
durchführen (zum Beispiel erhalten wir mit dem DIR-Kommando keine Liste der
Dateien auf der Platte). Andererseits können Platten, wie die 1-2-3-Masterdiskette,
die größtenteils im DOS-Format gespeichert sind, im Großen und Ganzen wie jede
andere unserer Platten behandelt werden. Wir können ein Usting des Inhaltsver­
zeichnisses der Platte erhalten, wir können Dateien kopieren (aber nicht den spe­
ziellen kopiergeschützten Teil der Platte) usw.
Wir müssen jetzt noch erfahren, wie der Kopierschutz auf einer Festplatte angelegt
wird. Bei den meisten kopiergeschützten Programmen müssen die originalen Dis­
ketten im Plattenlaufwerk unseres Computers geladen sein, sogar wenn wir die
Programme auf unsere Festplatten kopieren können. Solche Programme suchen
10.3
Nichtstandardgemäße Formate und Kopierschutz
135
auf ihren Masterdisketten nach dem Kopierschutz. Das ist natürlich sehr störend
und beeinträchtigt einen der größten Vorteile der Festplatte, der darin liegt, das
Herumspielen mit Disketten zu vermeiden. Es gibt allerdings einige kopierge­
schützte Programme, die ihre Kopierschutzsysteme auf Festplatten übertragen
können, so daß wir nicht mit einer Masterdiskette umständlich hantieren müssen.
Wie funktioniert das?
Glücklicherweise wird das nicht durch Herumbasteln am Format unserer Festplat­
ten erreicht, ähnlich der Art, wie ein kopiergeschütztes Programm ein speziell zu­
sammengestelltes Format erhält. Statt dessen basieren diese Festplattenkopier­
schutzsysteme auf besonderen Dateiformaten. Solche Methoden können z.B.
geheime Dateien (die gewöhnlich nicht kopiert werden können) und bestimmte
verschlüsselte Daten beinhalten, die wichtige Informationen über den Computer, in
dem sie geladen sind, enthalten (so daß der Kopierschutz ihre Übertragung auf
einen anderen Computer, der nur ein wenig anders ist, entdecken kann).
Es gibt so viele verschiedene Verfahren und Besonderheiten um einen Kopier­
schutz anzulegen, daß wir hier nicht alle erklären oder Ihnen irgendwelche Tips für
den Umgang mit dem Kopierschutz geben können. Wenn Sie das Wesentliche des
Kopierschutzes und der nichtstandardgemäßen Plattenformate verstanden haben,
hilft Ihnen das hoffentlich, mit irgendwelchen Besonderheiten zurechtzukommen,
die Ihnen und Ihrem Computer begegnen.
1.
Können Sie erklären, warum ein DOS-Bereich auf einer Festplatte in seiner Größe nicht ver­
ändert werden kann, ohne ihn neu zu formatieren? Könnte man ein Programm schreiben,
das einem Bereich eine neue Größe zuordnet? Beschreiben Sie die Schritte, die enthalten
sein müßten?
2.
Untersuchen Sie mit Hilfe der Techniken aus Abschnitt 10.2 einen Boot-Satz auf einer Ihrer
eigenen Platten und vergleichen Sie ihn mit dem dort gezeigten. Beschaffen Sie sich dann
mit dem Disassemblerkommando U von DEBUG ein Assemblerlisting des Boot-Program­
mes und untersuchen Sie, wie es funktioniert.
3.
Formatieren Sie eine Diskette in jedem Diskettenformat, das Ihr Computer erlaubt (einseitig,
doppelseitig etc.), und untersuchen Sie dann die Diskette, um zu sehen, worin sich der
Boot-Satz und andere Elemente unterscheiden.
4.
Benützen Sie das NU-Programm, falls Sie es haben, um den Restbereich am Ende Ihrer
Plattendateien zu untersuchen. Gehen Sie zu Menü 1.3, um eine Datei auszuwählen, und
fahren Sie dann mit Menü 2.5 fort, um die Daten der Datei auszugeben. Drücken Sie die
End-Taste, um zum Ende der Datei zu springen und sehen Sie, was sie finden können.
136
11
Bildschirm - Teil 1: Ein Überblick
Bis zu einem gewissen Grad könnte man sagen, daß der einzige Teil unseres
Computers, auf den es wirklich ankommt, der Bildschirm ist. Dieser Eindruck
könnte entstehen, weil uns bei unserer Computerarbeit hauptsächlich die Ergeb­
nisse interessieren, die auf dem Bildschirm erscheinen, und nicht die Einzelheiten
darüber, wie diese Ergebnisse zustande kamen.
In diesem Kapitel und in den nächsten beiden werden wir zeigen, wie der Bild­
schirm unseres Computers funktioniert, und wir werden erfahren, was er kann und
was er nicht kann. Zunächst wollen wir in diesem Kapitel die grundsätzliche
Arbeitsweise des Bildschirms verstehen lernen, so daß wir im wesentlichen wis­
sen, was er für uns tun kann. Anschließend behandeln wir in den nächsten beiden
Kapiteln die Besonderheiten der beiden grundsätzlichen Bildschirmmodi Textmo­
dus und Graphikmodus.
11.l
Wie der Bildschirm funktioniert
Zunächst ist festzustellen, daß die Informationen, die auf dem Bildschirm unseres
Computers angezeigt werden, irgendwo aufgezeichnet werden müssen. Um maxi­
male Flexibilität und Geschwindigkeit zu erreichen, speichert der PC die Daten, die
auf dem Bildschirm gezeigt werden, im Computer und nicht im Bildschirm. Das
steht im Gegensatz zur Funktionsweise vieler Computerterminals. Betrachten Sie
zum Beispiel die Terminals, die von Reisebüros benützt werden. Dort sind die Bild­
schirme meilenweit von den Computern entfernt, die sie füttern. Sie müssen ihre
eigenen Daten enthalten, die angezeigt werden, und treten mit dem weit entfernten
Computer nur in Verbindung, wenn neue Daten benötigt werden. Das ist ein Zugriff,
der die Antwort auf dem Bildschirm langsam gestaltet. Im Gegensatz dazu sind die
Bildschirme unserer PCs so nahe, daß der Bildschirm und der Computer sehr eng
zusammenarbeiten können.
Dies wird dadurch erreicht, daß der Speicher, der die Bildschirm-Daten enthält, im
Computer plaziert ist. Der Speicher befindet sich im doppelten Sinne im Computer.
Er ist physikalisch dort, weil sich die Speicherbausteine in der Systemeinheit des
Computers befinden, aber er ist auch im logischen Sinne dort, weil die Bildschirm­
daten in einem wesentlichen Teil des Arbeitsspeichers aufgezeichnet werden. In
Kapitel 7 haben wir besprochen, wie unsere PCs einen Speicherbereich von einer
Million Bytes adressieren können. Der gesamte Speicher, den der Bildschirm für
die Aufzeichnung seiner Daten benötigt, ist ein Teil des Adreßbereichs, so daß der
Bildschirmspeicher sehr eng mit dem Computer verbunden ist und keine größeren
Verzögerungen beim Zugriff auftreten.
Der Bildschirmspeicher unterscheidet sich vom restlichen Arbeitsspeicher, weil er
zwei Herren dienen muß. Einerseits muß er für den Mikroprozessor und die Pro­
gramme des PC wie jeder andere Teil des Arbeitsspeichers zugänglich sein. Ande­
rerseits muß auch der Bildschirm auf die Informationen zugreifen können, die er
ausgeben soll.
11.1 Wie der Bildschirm funktioniert
137
Der Bildschirmspeicher des PC hat deshalb eine spezielle Schaltung. Er ist sozu­
sagen ein Raum mit zwei Türen. Der Rest des Arbeitsspeichers hat nur eine „Tür",
eine einzige Möglichkeit für den Zugriff, weil nur der Mikroprozessor diesen Spei­
cher benützt. Dagegen arbeiten zwei Komponenten des Computers mit dem Bild­
schirmspeicher. Der Mikroprozessor legt dort Daten ab, um sie sichtbar zu
machen, und der Bildschirm schaut nach diesen Daten, um zu wissen, was er aus­
geben soll. Seide Komponenten greifen auf den Bildschirmspeicher zu, und jede
Komponente hat ihren eigenen „Eingang" in den Speicher, damit sich die beiden
nicht gegenseitig behindern.
Die Programme, die im Mikroprozessor unseres Computers laufen, müssen auf
den Bildschirmspeicher nur dann zugreifen, wenn sie das ändern müssen, was
gezeigt werden soll. Der Bildschirm liest dagegen den Bildschirmspeicher ständig
und erzeugt dauernd eine Ausgabe, die den Inhalt des Bildschirmspeichers wie­
dergibt. Etwa 50 mal pro Sekunde liest die elektronische Schaltung des Bild­
schirms den Bildschirmspeicher und malt ein neues Bild auf den Bildschirm, um
wiederzugeben, was im Speicher aufgezeichnet ist. Dadurch daß der Bildschirm
so oft ausgibt, können neue Daten fast sofort erscheinen. Ein Programm muß also
neue Informationen lediglich im Bildschirmspeicher ablegen, die dann direkt auf
dem Bildschirm angezeigt werden.
Die elektronische Arbeit hinter all diesem wird in einem optionalen Teil des Com­
puters, dem Bildschirmadapter, erledigt. Um die PC-Familie möglichst vielseitig zu
gestalten, wurde der Bildschirmadapter als auswechselbares Teil konzipiert, das in
den Erweiterungs-Steckplätzen in der Systemeinheit angeschlossen wird. Damit
können wir den Bildschirmadaptertyp auswechseln. Wir können sogar mehr als
einen Typ installieren und mit mehreren Bildschirmtypen zugleich arbeiten. In
Abschnitt 11.2 werden wir verschiedene Bildschirmadapter für die PC-Familie vor­
stellen und sehen, was sie für uns leisten.
Die Idee, die Bildschirme der PC-Familie auswechselbar zu machen, basiert
hauptsächlich auf den zahlreichen Bildschirmmodi, wie Daten auf dem Bildschirm
präsentiert werden können. Jeder Bildschirmadapter hat sein eigenes Repertoire
an Bildschirmmodi. Die Bildschirmmodi legen fest, welche Art (und Qualität) von
Information wir auf dem Bildschirm ausgeben können. Wir wählen die Bildschirm­
adapter-Hardware für unsere PCs deshalb gemäß den Bildschirmmodi aus, mit
denen wir arbeiten wollen. Kapitel 11.2 enthält eine Übersicht über die verschiede­
nen Bildschirmmodi. In den beiden folgenden Kapiteln wollen wir sehen, wie diese
Bildschirmmodi arbeiten und was sie für uns leisten.
Da jeder Bildschirmadapter seine eigenen Bildschirmmodi verwendet und jeder
Modus seine besonderen Anforderungen an den Speicher stellt, liegt der Bild­
schirmspeicher unserer Computer physikalisch auf der Bildschirmadapterkarte.
Wenn wir also von einem Adapter zu einem anderen wechseln, wechseln wir auch
den Speicher. Auf diese Art bekommen wir automatisch die richtige Größe und Art
eines Bildschirmspeichers, wenn wir einen Bildschirmadapter in unsere Computer
installieren.
Die Bildschirme selbst arbeiten ganz ähnlich wie Fernseher. Das System ist als
Raster Scan bekannt und funktioniert auf folgende Weise. Der Bildschirm wird
138
11 Bildschirm - Teil 1: Ein Überblick
dauernd durch einen Elektronenstrahl „bemalt", der schrittweise seinen Weg über
den ganzen Bildschirm verfolgt, ähnlich der Art, wie wir lesen. Er fängt oben links
an, schreibt die erste Zeile des Bildes von links nach rechts, wobei die darzustel­
lenden Punkte am Bildschirm aufleuchten, und springt zurück nach links, um die
nächste Zeile durchzugehen. Er fährt von oben nach unten fort und zeichnet dabei
das ganze Bild. Während der Elektronenstrahl über den Schirm wandert, liest die
Schaltung des Bildschirmadapters fortwährend Daten aus dem Bildschirmspei­
cher und übersetzt die Datenbits in Signale, die den Elektronenstrahl steuern. Um
das Flimmern auf dem Bildschirm zu minimieren, wird das Bild in Wirklichkeit im
Zeilensprungverfahren ausgegeben. Es wird nur jede zweite Zeile von oben nach
unten gezeichnet, und die verbleibenden Zeilen werden in einem zweiten Durch­
gang dargestellt. Nach zwei schnellen Durchgängen ist das Bild vollständig. Fern­
seher verwenden das gleiche Zeilensprungverfahren.
Der Bildschirm und seine Randfläche
Es gibt eine Randfläche im Bildschirm unseres Computers, der den aktiven Teil
des Schirms, wo die Daten ausgegeben werden, umgibt. Dieser Randbereich ist
ein passiver Bereich des Schirms, und unsere Programme können dort keine Infor­
mationen ausgeben. Aber das bedeutet nicht, daß die Randfläche notwendiger­
weise leer ist.
Der Elektronenstrahl, der den aktiven Teil des „Raster Scan" im Bildschirm durch­
wandert, läuft auch über den Arbeitsbereich hinaus in einen sogenannten „over­
scan", den Randbereich des Bildschirms.
Obwohl wir keine Daten in die Grenzfläche schreiben können, ist es gelegentlich
möglich, die Farbe des Randes zu bestimmen. Die Ergebnisse davon variieren
zwischen den verschiedenen Bildschirmadaptern und Bildschirmen. Der Mono­
chrom-Adapter erzeugt keinen veränderbaren Randbereich, der Farb-Graphik­
Adapter dagegen schon und auch der Compaq-Adapter (manchmal nicht sehr
zufriedenstellend). Der Enhanced-Graphics-Adapter macht es manchmal und
manchmal nicht, sogar wenn er wie der Farb-Graphik-Adapter arbeitet.
Die ROM-BIOS- Software des PC liefert ein Dienstprogramm, das die Randfläche
farbig erzeugt, sofern das möglich ist. Mit BASIC können wir auf dieses Dienstpro­
gramm durch die COLOR-Anweisung zugreifen. Das folgende kleine Programm
demonstriert die Randflächenfarben, wenn sie aktiv sind:
10 SCREEN 0,1 : WIDTH 80 : CLS
20 FOR BORDER.COLOR = 0 TO 15
30
COLOR ,,BORDER.COLOR
PRINT "Die Randflaechenfarbe ist "; BORDER.COLOR
40
PRINT "Druecken Sie eine Taste
"
50
WHILE INKEYS = " : WEND
60
70 NEXT
• • •
"
Man verwendet die Randflächenfarbe hauptsächlich, um sie mit der Hintergrund­
farbe abzustimmen. Das kann den Bildschirm für die Augen erträglicher machen.
Ein Programm sollte eine Hintergrundfarbe in der Regel nicht benützen, wenn sie
nicht durch eine Randfarbe angeglichen werden kann.
11.2
Überblick über die verschiedenen Bildschirmmodi
139
Das sind die Grundprinzipien, die hinter der Arbeitsweise der Bildschirme unserer
Computer stecken. Die Grundlagen sind sehr einfach, und die interessanten Teile
liegen in den Details der Arbeit, die unsere Bildschirme für uns verrichten können.
Wir beginnen mit diesen Details, indem wir einen Blick auf die verschiedenen Bild­
schirmmodi werfen.
11.2
Überblick über die verschiedenen Bildschirmmodi
Wenn wir die verschiedenen Kunststücke verstehen wollen, die unsere Bildschirme
beherrschen, müssen wir uns mit den zahlreichen Bildschirmmodi beschäftigen, in
denen unsere Bildschirme operieren können.
Hierbei gibt es zwei Teile. Zuerst müssen wir verstehen, über welche Modi der Bild­
schirm unseres Computers verfügt. Wir benötigen eine Antwort auf die Frage
„Welche Tricks kann mein Computer?". zweitens müssen wir sämtliche mögliche
Bildschirmmodi kennen. Wir brauchen eine Antwort auf die beiden Fragen
„Welche Tricks beherrscht die PC-Familie?" und „Möchte ich meinem Gerät neue
Tricks beibringen?". Wir müssen wissen, was unsere Geräte tun können und was
sie tun könnten, wenn wir sie mit den verschiedenen Optionen ausrüsten würden.
Und dann müssen wir beurteilen, ob wir überhaupt richtig ausgerüstet sind.
Zunächst zeigen wir die grundlegenden Unterschiede zwischen den Bildschirm­
modi. Anschließend listen wir alle Modi auf und prüfen, welche Modi mit welchen
Bildschirmadaptern verwendet werden können.
Die erste große Unterteilung zwischen den Bildschirmmodi betrifft den Textmodus
und den Graphikmodus. Im Textmodus (und es gibt viele verschiedene Textmodi)
kann der Bildschirm nur den Basiszeichensatz der PC-Familie zeigen, den wir in
Kapitel 4 vorgestellt haben. Nur solche Zeichen können ausgegeben werden und
weiter nichts. Hier sollte man sich noch einmal erinnern, daß der Zeichensatz des
PC viele Möglichkeiten liefert, mehr als nur geschriebenen Text auf dem Bildschirm
zu zeigen. Mit den Zeichen für Umrahmungslinien und anderen, die wir in Kapitel 4
gesehen haben, können eindrucksvolle, auf Zeichen basierende Bilder auf dem
Bildschirm erzeugt werden. Aber trotzdem können im Textmodus nur diese 256
PC-Zeichen ausgegeben werden. In den Textmodi ist der Bildschirm in spezifische
Zeichenpositionen unterteilt. Normalerweise sind das 80 Zeichen pro Zeile und 25
Zeilen von oben nach unten. Kapitel 12 behandelt die Einzelheiten darüber, wie
unsere Computer mit den Textmodi arbeiten.
Die Alternative zu den Textmodi sind die Graphikmodi. In den Graphikmodi wird
der Bildschirm wie ein Feld von winzigen Punkten behandelt, die Pixels genannt
werden (eine Abkürzung für Bildelemente, engl.: picture elements), und alles, was
auf dem Bildschirm erscheint, wird aus diesen Punkten sozusagen gezeichnet. Die
verschiedenen Graphikmodi unterscheiden sich in der Anzahl der Punkte auf dem
Bildschirm, was die Auflösung genannt wird. Ein typischer hochauflösender Modus
hat 640 Pixelpositionen in der Bildschirmbreite und 200 Pixels in der Höhe. Alle
Arten von Zeichnungen können aus diesen Pixels gefertigt werden, einschließlich
den Zeichnungen der Textzeichen, wie z.B. der Buchstabe A. Die eingebauten
140
11
Bildschirm - Teil
1:
Ein Überblick
ROM-BIOS-Programme des PC erledigen die Arbeit des Abbildens von Zeichen
punktweise, so daß Programme, die im Graphikmodus laufen, nicht diese. lästige
Arbeit übernehmen müssen, wenn sie nicht unbedingt wollen (wenn Zeichen auf
besondere Weise abgebildet werden sollen, zum. Beispiel in Kursivschrift, ist das
nötig). In Kapitel 13 werden die Details besprochen, wie unsere Computer mit den
Graphikmodi arbeiten.
Text gegenüber Graphik ist eine Dimension der Bildschirmmodi. Farbe ist die
andere Hauptdimension. Es gibt Modi, die überhaupt keinen Farbbereich haben.
Dies sind Schwarz-Weiß- oder zweifarbige Modi. Dann gibt es noch wirkliche Farb­
modi, die uns wenigstens vier oder sogar 64 Farben zur Auswahl anbieten.
Schließlich gibt es noch die Monochrom-Modi, die zwar keine Farbe haben, aber
dafür Bildschirmattribute. Die Monochrom-Bildschirmattribute beinhalten normale
und helle Intensität, inverse Darstellung (dunkle Zeichen auf einem hellen Hinter­
grund), unterstrichene Zeichen usw. Es gibt Farb- und Schwarz-Weiß-Bildschirm­
modi sowohl für Text- als auch für Graphikmodi.
Innerhalb der vier Hauptmöglichkeiten, die diese zwei Dimensionen beschreiben Text oder Graphik, farbig oder nicht-, gibt es eine Anzahl untergeordneter Dimen­
sionen, d.h. weniger Variationen im Bereich der Bildschirmmöglichkeiten. Zu die­
sen Variationen gehören die Auflösung (wieviele Punkte oder Zeichen der Bild­
schirm enthält), der Farbbereich usw. Wir behandeln sie bei den Details der Bild­
schirmmodi.
Als nächstes müssen wir die Bildschirmmodi der PC-Familie aus dem Blickwinkel
der Hardware betrachten. Dabei behandeln wir die verschiedenen Bildschirm­
adapter (und die Bildschirme, die zu ihnen passen), die bestimmen, welche Mög­
lichkeiten der Bildschirmmodi bei unserem Computer eingesetzt werden können.
Wir betrachten die vier wichtigsten Bildschirmadapter für die PC-Familie (und
erwähnen daneben auch noch ein paar andere).
Die ersten beiden Bildschirmadapter, die für die PC-Familie herauskamen, und zu­
gleich die wichtigsten sind der IBM-Monochrom-Adapter und der IBM-Color-Gra­
phics-Adapter (CGA). Der Monochrom-Adapter war als Standardoption für Profis
gedacht, als Bildschirmadapter der PC-Familie für die „ernsthafte" Arbeit. Es ist ein
Bildschirmadapter nur für Texte, der sehr klare, leicht lesbare Zeichen erzeugt. Als
„monochrome" Option zeigt er nur eine wirkliche Farbe, aber der Bildschirmmo­
dus für diesen Adapter und diesen Bildschirm beinhaltet die Bildschirmattribute,
die wir vorher schon erwähnt haben. Das waren Unterstreichen, helle Intensität
usw. Der Monochrom-Adapter arbeitet nur mit dem Monochrom-Bildschirm von
IBM oder einem Kompatiblen. Der IBM-Monochrom-Bildschirm zeigt ein sanftes
Grün, aber es gibt auch kompatible bernstein-farbige Bildschirme. Der Mono­
chrom-Adapter hat nur einen einzigen Bildschirmmodus.
Der andere der beiden originalen Bildschirmadapter für den PC ist der Farb-Gra­
phik-Adapter. Der Farb-Graphik-Adapter arbeitet sowohl in den Textmodi als auch
in farbigen oder farblosen Modi mit unterschiedlichen Auflösungen, insgesamt in
sieben Bildschirmmodi. Er arbeitet auch mit vier verschiedenen Typen von Bild-
11.2 Überblick über die verschiedenen Bildschirmmodi
141
schirmen, im Gegensatz zu nur einem Typ, der mit dem Monochrom-Adapter ver­
wendet werden kann. Durch diese einfachen Spezifikationen scheint es so, als ob
der Farb-Graphik-Adapter besser als der Monochrom-Adapter ist, und oberfläch­
lich betrachtet ist das wahr. Alle Fähigkeiten des Monochrom-Adapters beherrscht
auch der Farb-Graphik-Adapter und zusätzlich kann er noch Farbe und Graphik.
Allerdings hat der Farb-Graphik-Adapter ein paar erhebliche Nachteile, was dazu
führte, daß die meisten PCs mit dem Monochrom-Adapter ausgerüstet wurden.
Das Hauptproblem beim CGA ist seine relativ schlechte Bildschirmqualität. Seine
Bildschirmanzeigen sind nicht annähernd so deutlich und klar wie die des Mono­
chrom-Adapters. In der Tat glauben viele, ich eingeschlossen, daß der Farb-Gra­
phik-Adapter für die Augen ergonomisch nicht akzeptabel ist, zumindest wenn
man längere Zeit damit arbeiten muß. Aber trotz aller Nachteile liefert der Farb­
Graphik-Adapter Farbe, Graphik, verschiedene Auflösungen und eine viel größere
Auswahl an Bildschirmen als für den Monochrom-Adapter.
Wie schon erwähnt, kann der Farb-Graphik-Adapter mit vier verschiedenen Bild­
schirmtypen arbeiten. Einer, der nicht oft benützt wird, ist ein Fernseher. Die Bild­
qualität eines Fernsehers ist schlecht und er erfordert außerdem eine zusätzliche
Ausrüstung, einen RF-Modulator, der die Signale des Farb-Graphik-Adapters in
TV-Signale umwandelt. Der beste Typ wird RGB-Monitor genannt, weil er die Rot­
Grün-Blau-Anzeigesignale des Bildschirmadapters akzeptiert und die bestmög­
liche Bildqualität erzeugt. Der IBM-Standard-Farbbildschirm ist ein RGB-Monitor.
Zwischen einem Fernseher und einem RGB-Monitor gibt es die anderen beiden
Typen, die als Composite-Monitore bekannt sind . Sie arbeiten mit Anzeigesignalen
von niederer Qualität, die vom Farb-Graphik-Adapter kommen, und deshalb pro­
duzieren sie kein so gutes Bild wie ein RGB-Monitor. Es gibt zwei Arten von Com­
posite-Monitoren, farbig und monochrom. Die monochromen Composite-Monitore
akzeptieren ein Farbsignal, aber sie zeigen Farben in Form von Schatten in der
Farbe, die der Bildschirm zeigen kann.
Es gibt eine spezielle Variation beim Farb-Graphik-Adapter, die wir kennen sollten,
obwohl sie nicht zur Hauptlinie der PC-Familie gehört. Das ist der Bildschirmadap­
ter, der mit einem Compaq-Computer geliefert wird. Dieser Compaq-Bildschirm­
adapter funktioniert wie der Farb-Graphik-Adapter mit seinen sämtlichen Bild­
schirmmodi, aber er hat eine besondere Eigenschaft, die das Hauptproblem des
Farb-Graphik-Adapters, seine verschwommenen Textzeichen, löst.
Wenn der
Compaq-Bildschirmadapter im Standardtextmodus arbeitet, kann er seine Zei­
chen mit derselben Klarheit und zeichnerischen Feinheit darstellen wie der Mono­
chrom-Adapter. Der Compaq-Bildschirmadapter kombiniert sowohl die Vorzüge
des Farb-Graphik-Adapters als auch des Monochrom-Adapters. Allerdings gibt es
den Compaq-Adapter nur für die Compaq-Mitglieder der PC-Familie. Manche
Anwender ziehen aus diesem Grund diese Modelle den anderen Mitgliedern der
PC-Familie vor. Der Compaq-Adapter kann mit denselben vier Bildschirmtypen
arbeiten wie der Farb-Graphik-Adapter. Im wesentlichen trifft alles, was es über
den Farb-Graphik-Adapter zu sagen gibt, auch auf den Compaq-Adapter zu. Man
kann einen Compaq-Computer als spezielle und leicht verbesserte Version des
Farb-Graphik-Adapters betrachten.
142
11
Bildschirm - Teil 1: Ein Überblick
Der nächste Bildschirmadapter, den wir kennen sollten, ist der Hercules-Graphik­
Adapter, oft einfach als Herc-Card bezeichnet, und seine Kompatiblen. Es gibt gro­
ße Ähnlichkeiten zwischen der Herc-Card und dem Compaq-Adapter. Während
der Compaq-Adapter im wesentlichen ein Farb-Graphik-Adapter inklusive der
wichtigsten Vorzüge des Monochrom-Adapters ist (deutlichere Textzeichen), ist die
Herc-Card ein Monochrom-Adapter, der die Hauptvorteile des CGA enthält (Gra­
phik). Die Herc-Card funktioniert genauso wie ein Monochrom-Adapter, aber sie
hat einen zusätzlichen Bildschirmmodus, der eine hochauflösende Monochrom­
Graphik liefert, die sich für die wichtigsten Graphik-Anwendungen gut eignet. Der
Graphik- Modus der Herc-Card ist aus IBM-Sicht ein extrem nichtstandardgemä­
ßes Bildschirmformat, das nicht ernst genommen werden kann. Die Herc-Card hat
sich jedoch allgemein derart durchgesetzt, daß wir sie als einen wichtigen Teil der
Ausrüstung für die PC-Familie betrachten und als einen der vier wichtigsten Bild­
schirmadapter in diesem Kapitel und den folgenden beiden behandeln werden.
Die Herc-Card arbeitet wie der Monochrom-Adapter nur mit dem Monochrom­
Bildschirm oder einem Kompatiblen. Obwohl der Graphik-Modus der Herc-Card
kein Standard-Graphikmodus ist (d.h. gemäß dem IBM-Standard), ist er weithin
von den Software-Entwicklern akzeptiert worden, so daß die wichtigste graphik­
orientierte Software mit der Herc-Card arbeitet.
Der letzte der vier wichtigsten Bildschirmadapter ist der IBM-Enhanced-Graphics­
Adapter (EGA). Der Kombinierte Graphik-Adapter ist der Versuch von IBM, die
zahlreichen Bildschirmadapter in einem zu vereinigen und die PC-Familie um
neue Technologien zu erweitern. Der Kombinierte Graphik-Adapter vereint im
wesentlichen alle Eigenschaften des Monochrom-Adapters, des Farb-Graphik­
Adapters und der Herc-Card zusammen mit neuen Bildschirmmodi, die mit Farb­
monitoren von höherer Qualität verwendet werden können, wie zum Beispiel dem
IBM-Enhanced-Color-Display, das eine technologisch fortgeschrittenere Version
eines RGB- Monitors ist. Der Kombinierte Graphik-Adapter wird langsam die Karte
schlechthin, ein einziger Bildschirmadapter, der alle Vorteile der anderen Karten in
sich vereint und alle anderen überflüssig macht. Der Kombinierte Graphik-Adapter
wäre ein kompletter Ersatz für die beiden originalen Bildschirmadapter von IBM,
wenn er nicht doppelt so teuer wäre. Er wäre auch ein Ersatz für die Herc-Card,
wenn sich der monochrome Graphik- Modus des EGA kompatibel zur Herc-Card
verhielte. Außerdem wird es noch eine Zeit lang mehr Herc-Software als EGA-Soft­
ware geben, weil der EGA erst relativ spät auf den Markt kam.
Während diese vier die, meiner Ansicht nach, wichtigsten Bildschirmadapter für
die PC-Familie sind, gibt es auch noch andere. Wir haben schon einen kennenge­
lernt, den Compaq-Bildschirmadapter. Sie sollten auch den eingebauten Bild­
schirmadapter des PCjr kennen, der sehr ähnlich wie der Farb-Graphik-Adapter
funktioniert, aber zusätzlich zu den Fähigkeiten des CGA noch einige extra Gra­
phikmodi hat. Dann gibt es noch den sehr speziellen IBM-Professional-Graphics­
Adapter für besonders hohe Anforderungen. Der Professional-Graphik-Adapter ist
so speziell, daß er einen eigenen, eingebauten Mikroprozessor hat, der sogar lei­
stungsfähiger ist als der, der im PC installiert ist. Da die besonderen Fähigkeiten
des Graphik-Adapters für den PCjr und des Professional-Graphik-Adapters von der
eigentlichen PC-Familie weit entfernt sind, wollen wir nicht näher darauf eingehen.
11.2
Überblick über die verschiedenen Bildschirmmodi
143
Die meisten PC-Computer enthalten einen einzigen Bildschirmadapter, es lassen
sich aber auch zwei Bildschirmadapter im selben Gerät installieren und verwen­
den. Bevor wir alle Bildschirmmodi zusammenfassen, die diese Bildschirmadapter
liefern, wollen wir einen Blick darauf werfen, welche Kombinationen von Bild­
schirmadaptern wir benützen können und welche nicht.
Der Monochrom-Adapter und der Farb-Graphik-Adapter können zusammen ver­
wendet werden, und jeder von ihnen kann mit dem EGA kombiniert werden. Es
können also immer zwei von diesen dreien zusammen im selben Gerät sein. Die
Herc-Card kann mit keinem von diesen drei IBM-Bildschirmadaptern kombiniert
werden, aber Hercules stellt ein Äquivalent zum Farb-Graphik-Adapter von IBM
her, das mit der Herc-Card zusammen benützt werden kann (so wie der CG A mit
dem Monochrom-Adapter von IBM kombiniert werden kann).
Wie können wir nun etwas Vernünftiges aus all den Möglichkeiten machen, die
diese zahlreichen Bildschirmadapter uns bieten? Wenn wir sie auflisten, halten wir
uns am besten an die Technischen Handbücher von IBM und die Nummern der
Bildschirmmodi, über die sie identifiziert werden. Wir werden zunächst kurz auf ei­
nige interessante Details eingehen und die Hauptaspekte der verschiedenen Modi
behandeln. Anschließend erfahren Sie, wie Sie den Modus für Ihren Computer
bestimmen können und wie Sie entsprechende Untersuchungen anstellen können.
Die ersten sieben Modi mit den Nummern 0 bis 6 gelten für den Farb-Graphik­
Adapter und alle äquivalenten Bildschirmadapter (einschließlich dem Kombinier­
ten Graphik-Adapter, dem Compaq-Adapter und dem eingebauten Bildschirm­
adapter des PCjr). Hier folgt eine Auflistung:
Modus
Typ
Farbe?
0
Text
1
Text
2
Text
Nein
80
80-Spalten-Text, keine Farbe
3
Text
16
80
80-Spalten-Text, mit Farbe
4
Graphik
4
Breite
Beschreibung
Nein
40
40-Spalten-Text, keine Farbe
16
40
40-Spalten-Text, mit Farbe
320
Graphik von mittlerer
Auflösung, mit Farbe
5
Graphik
Nein
320
Graphik von mittlerer
Auflösung, keine Farbe
6
Graphik
2
640
Hochauflösende Graphik,
keine Farbe
Es gibt bei diesen sieben Modi ein paar leicht erkennbare Gruppen. Sie werden
bemerken, daß die ersten sechs Modi paarweise angeordnet sind, ein Modus mit
Farbe, der andere ohne. Bei diesen farblosen Modi erscheinen Farben als Grau­
schattierungen, wenn sie mit einem Fernseher oder einem Composite-Monitor
eingesetzt werden (bei einem RGB-Monitor wird Farbe ausgegeben). Sie stellen
144
11
Bildschirm - Teil 1: Ein Überblick
außerdem eine Unregelmäßigkeit in der Anordnung des farbigen und farblosen
Modus bei den Bildschirmmodi 4 und 5, den Graphikmodi, fest. Bei all diesen
Modi, die mehr als zwei Farben haben, ist eine farblose Variation sinnvoll. Modus 6
hat nur zwei Farben (schwarz und weiß), so daß es keinen Unterschied zwischen
einer farbigen und farblosen Variation dieses Modus gibt. Bei den Textmodi gibt es
zwei Breiten (40 und 80 Zeichen breit). Der 40-Spalten-Modus wurde für ein deutli­
cheres Bild eingerichtet, wenn ein Fernseher als Bildschirm verwendet wird, aber
nur wenige PCs benützen einen Fernseher bzw. diesen Modus. Die meisten wichti­
gen Programme für die PC-Familie sind nicht für den 40-Spalten-Modus konzi­
piert. Alle Textmodi haben 25 Zeilen auf dem Bildschirm. Bei den Graphikmodi gibt
es auch zwei Breiten und zwei Auflösungen. Der hochauflösende Modus ist 640
Punkte breit und der Modus mit mittlerer Auflösung ist 320 Punkte breit. Diese drei
Graphikmodi haben alle 200 Zeilen. Sie sehen auch die unterschiedliche Anzahl
verfügbarer Farben: 16 bei den Textmodi, 4 bei Graphik mit mittlerer Auflösung und
2 (oder genau genommen keine) bei hochauflösender Graphik.
Sämtliche sieben Modi werden alle vom Farb-Graphik-Adapter verwendet, und
von allen anderen kompatiblen Adaptern, einschließlich vom Kombinierten Gra­
phik-Adapter. Dagegen hat der Monochrom-Adapter nur einen einzigen Bild­
schirmmodus, der sich nur für Textanwendungen eignet:
Modus
Typ
Farbe?
Breite
Beschreibung
7
Text
Keine
80
Monochrom-Text
Dieser monochrome Textmodus, Bildschirmmodus 7, ist dem 80-Spalten-Textmo­
dus ähnlich, den der Farb-Graphik-Adapter liefert, mit 80 Zeichenspalten horizon­
tal und 25 Zeilen vertikal. Es gibt zwei wichtige Unterschiede. Einer besteht darin,
daß die Zeichen besser lesbar gezeichnet werden (Details werden wir in Kapitel 12
behandeln). Der andere Unterschied liegt darin, daß der Monochrom-Adapter ein
spezielles „Farb"-Konzept hat, das Zeichen in vielfältiger Weise ausgeben kann:
unterstrichen, invers usw. Der Monochrom-Adapter arbeitet nur mit dem Mono­
chrom-Bildschirm, der speziell dafür entworfen wurde.
Die nächsten drei Bildschirmmodi wurden mit dem PCjr eingeführt und gelten nur
für ihn. Es ist möglich, daß wir sie auch bei einigen zukünftigen Adaptern finden
werden, aber das ist nicht sehr wahrscheinlich, weil sie auch beim Kombinierten
Graphik-Adapter von IBM nicht berücksichtigt wurden. Es handelt sich um spe­
zielle Graphikmodi, die den Graphikbereich erweiterten, den der Farb-Graphik­
Adapter liefert.
Modus
Typ
Farbe?
Breite
8
Graphik
16
1 60
Graphik mit niedriger Auflösung
9
Graphik
16
320
Graphik mit mittlerer
Beschreibung
Auflösung
10
Graphik
4
640
Hochauflösende Graphik
11.2
Überblick über die verschiedenen Bildsch,irmmodi
145
Modus 8 liefert eine niedrige Auflösung (160 Punkte breit). Die Modi 9 und 10 liefern
für mittel- und hochauflösende Modi mehr Farben. Der eingebaute Bildschirm­
adapter des PCjr arbeitet mit vier verschiedenen Bildschirmarten (Fernseher,
farbiger und monochromer Composite-Monitor und RGB).
Nach diesen Bildschirmmodi fehlen die Modusnummern 11 und 12. Sie gehören
wahrscheinlich zu den Modi, die IBM für die PC-Familie zwar definiert hat, dann
aber beschlossen hat, sie nicht einzuführen. Es gibt wenig über sie zu sagen,
außer daß sie vielleicht in einem späteren IBM-Produkt auftauchen könnten.
Der Kombinierte Graphik-Adapter arbeitet in allen der ersten neun Standardmodi
(aber nicht in den drei speziellen Modi des PCjr). Er hat zusätzlich folgende vier
Modi:
Modus
Typ
Farbe?
Breite
Beschreibung
13
Graphik
16
320
Mittlere Auflösung, Farben
14
Graphik
16
640
Hohe Auflösung, Farben
15
Graphik
Nein
640
Monochrom-Graphik, 350 Zeilen
16
Graphik
64
640
Hohe Auflösung, 350 Zeilen
Diese vier neuen Modi sind spezieller, als aus dieser kurzen Übersichtstabelle
direkt ersichtlich ist, wie zum Beispiel die Bildschirme, für die sie geeignet sind. Die
ersten zwei, 13 und 14, arbeiten mit den vier Standardtypen der Farb-Graphik-Bild­
schirme. Diese Modi sind den mittel- und hochauflösenden Modi 9 und 10 des PCjr
ähnlich, aber der hochauflösende Modus hier, Modus 14, liefert sämtliche 16 Far­
ben des PC, nicht nur 4. Diese zwei neuen Graphikmodi haben, wie alle, die wir bis
jetzt gesehen haben, 200 Zeilen vertikal, aber die zwei folgenden Modi, 15 und 16,
haben fast doppelt soviele, nämlich 350 Zeilen. Modus 15 ist der monochrome
Graphik-Modus von IBM, der nur mit dem Monochrom-Bildschirm verwendet wird.
Modus 16 ist ein spezieller vielfarbiger, hochauflösender Modus, der nur mit dem
besonderen Kombinierten Farbbildschirm benützt werden kann, der speziell für
den Kombinierten Graphik-Adapter entwickelt wurde. Bei der Verwendung des
Kombinierten Farbbildschirms kann Modus 16 die höchste Auflösung liefern, die
wir bis jetzt kennengelernt haben (640 breit, 350 lang), und viel mehr Farben
-
64
, als irgendein anderer Modus zur Verfügung stellen kann.
-
Schließlich sollten wir noch den monochromen Graphikmodus kennen, der vom
Hercules-Graphik-Adapter benützt wird. Da dieser Modus nicht zum Design von
IBM gehört, hat er keine IBM-Bildschirmmodusnummer. Wir nennen ihn den Herc­
Modus. Er ist dem monochromen Graphikmodus von IBM ähnlich (Modus 15), aber
er hat andere Dimensionen und eine etwas höhere Auflösung:
Modus
Typ
Farbe?
Breite
Beschreibung
Herc
Graphik
Nein
720
Monochrom-Graphik, 348 Zeilen
146
11
Bildschirm - Teil
1:
Ein Überblick
Man sieht, daß die zwei monochromen Graphikmodi, der 640-mal-350-Modus von
IBM und der 720-mal-348-Modus von Hercules, fast äquivalent sind. Der Modus
von IBM hat den Vorteil des „IBM-Standards" und wird durch das ROM-BIOS un­
terstützt. Hercules hat eine 17-prozentige höhere horizontale Auflösung und hat
einstweilen noch den Vorteil, daß er weithin verwendet wird und durch zahlreiche
Software unterstützt wird.
Wir wollen nun ein wenig mit den Bildschirmmodi experimentieren.
11.3
Wie
man
die Bildschirmmodi untersucht
Es ist relativ leicht, die meisten Bildschirmmodi ausfindig zu machen und mit ihnen
herumzuspielen.
Zunächst wollen wir zeigen, wie wir den Bildschirmmodus entdecken können, den
unser Computer benützt. Wie wir in Kapitel 7 im Abschnitt „Die spezielle Organisa­
tion des unteren Speicherbereiches" gesehen haben, benützen die ROM-BIOS­
Programme des PCs einen unteren Speicherbereich, der an der hex Adresse 400
beginnt, um Informationen zu speichern, die das ROM-BIOS zur Steuerung benö­
tigt. Ein Teil dieser Information sind aktuelle Statusinformationen über den Bild­
schirm, einschließlich des Bildschirmmodus. Der Modus ist in einem einzelnen
Byte an der hex Adresse 449 gespeichert. Jedes Dienstprogramm, mit dem wir
Daten im Speicher untersuchen können, kann uns den Bildschirmmodus zeigen.
Wir erreichen das leicht mit BASIC oder mit DEBUG.
In BASIC brauchen wir dafür zwei einfache Kommandos. Das erste veranlaßt
BASIC, den unteren Speicherbereich zu inspizieren: DEF SEG
0. Das zweite
Kommando holt das Byte, in dem der Bildschirmmodus aufgezeichnet ist, und gibt
es auf dem Bildschirm aus: PRINT PEEK(&H449). Versuchen Sie es selbst, starten
Sie BASIC und geben Sie diese zwei Kommandos ein.
=
Das Gleiche erreicht man bei DEBUG mit diesem Kommando: D 0:449 L 1. Das be­
auftragt DEBUG mit der Ausgabe (D von display) eines Bytes (L 1) aus der Adresse,
an der wir interessiert sind. DEBUG wird uns den Modus in hex Form etwa so
anzeigen:
0000:044007
Das ist in unserem Beispiel der Bildschirmmodus 7, der Standard-Monochrom­
Adapter-Modus.
Mit Hilfe solcher Experimente erfahren Sie, welcher Modus dauernd in Ihrem Com­
puter eingestellt ist. Es ist auch möglich, den Modus zu ändern und dann zu unter­
suchen. Wir können nur einige der möglichen Modi sehen, weil die Tools, die wir
verwenden - DOS, BASIC, und DEBUG -, nur in bestimmten Bildschirmmodi
arbeiten. Ein Programm, wie zum Beispiel Lotus 1-2-3, kann den Modus beliebig
ändern, aber die Tools, mit denen wir experimentieren, arbeiten nur in bestimmten
Modi. Natürlich können Sie auch nur die Modi sehen, für die der Computer ausge-
11.3 Wie man die Bildschirmmodi untersucht
147
rüstet ist. Wenn Ihr Computer nur den Standard-Monochrom-Adapter hat, ist der
einzige Modus, den Sie sehen können, Modus 7. Obwohl wir nicht jeden Modus
sehen können, erhalten Sie aus den Experimenten, die ich hier beschreibe, ein
Gefühl für das, was wahrscheinlich von den verschiedenen Modi der Bildchirme
gesteuert wird.
Es gibt zwei Wege, wie wir den Modus ändern können, genauso wie es zwei Mög­
lichkeiten gibt, den Modus zu entdecken, mit dem wir arbeiten. Einer ist das DOS­
Kommando MODE, das wir auch zusammen mit DEBUG verwenden können, um
den Modus auszugeben. Die andere Methode benützt BASIC, sowohl um den
Modus zu setzen als auch zu zeigen.
Wir beginnen mit MODE und DEBUG. Diese zwei Kommandos arbeiten gemäß
DOS- Standard nur in den Textmodi, so daß wir damit keine Graphikmodi untersu­
chen können.
Für dieses Experiment geben wir ein MODE-Kommando ein, um den Modus zu
setzen, und benützen dann DEBUG, wie wir es gerade gesehen haben, um den
Modus auszugeben. Wir wechseln also mit dem MODE-Kommando zu einem
neuen Modus und verwenden dann DEBUG, um nachzusehen, ob wir wirklich dort
angekommen sind. Wir setzen den Modus etwa so: MODE X, wobei wir für X
MONO, C080, BW80, C040, BW40, 40 oder 80 einsetzen. Danach starten wir
DEBUG, um zu sehen, in welchem Modus wir wirklich sind.
Mit BASIC können wir das gleiche Experiment ausführen, aber wir können in die­
sem Fall auch die Graphik-Modi ausprobieren. Das folgende Beispiel liefert uns
einen Graphikmodus mit mittlerer Auflösung (wenn unser Computer dafür ausge­
rüstet ist):
10 SCREEN 1
20 DEF SEG
=
0
30 PRINT PEEK C&H449)
Sie können mit diesem Programm in Zeile 10 jeden beliebigen Bildschirmmodus
einstellen, der für das BASIC Ihres Computers erlaubt ist. (Lassen Sie sich übri­
gens nicht von den Modusnummern verwirren, die BASIC im SCREEN-Kommando
benützt; es sind nicht dieselben wie die Bildschirmmodusnummern, die wir in die­
sem Kapitel benützt haben). Falls BASIC beim Versuch, das SCREEN-Kommando
auszuführen, einen Fehler meldet, gilt dieser Modus nicht für Ihren Computer.
Eine ausführlichere Version dieses Programmes finden Sie in Anhang A unter dem
Namen VID-MODE. Lassen Sie dieses Programm laufen, wenn Sie mehr von den
Bildschirmmodi sehen wollen, oder studieren Sie nur das Programm, um mehr
darüber zu lernen, wie sich BASIC und die Bildschirmmodi der PC-Familie gegen­
seitig beeinflussen.
Nach diesen Grundlagen über unsere Bildschirme kommen wir nun zu den
Details. Wir beginnen in Kapitel 12 mit den Textmodi.
148
11 Bildschirm - Teil 1: Ein Überblick
1.
Probieren Sie alle MODE-Kommandos aus, die in Abschnitt 11.3 vorgeschlagen wurden.
Überprüfen Sie auch Ihr DOS-Handbuch, um zu sehen, ob es dort andere MODE-Komman­
dos gibt, die auf Ihren Bildschirm zutreffen. Es könnten weitere hinzugekommen sein.
2.
Überprüfen Sie das BASIC-Handbuch Ihres Computers, um zu sehen, ob es neue Bild­
schirmmodi gibt, außer denen, die wir hier behandelt haben. Sie können das herausfinden,
indem Sie die Beschreibung der SCREEN-Kommando-Optionen mit den SCREEN-Kom­
mandos im VID-MODE-Listing in Anhang A vergleichen.
149
12
Bildschirm
-
Teil 2: Textgrund.lagen
In diesem Kapitel untersuchen wir die interne Arbeitsweise der Bildschirmtextmodi
des PC. Obwohl immer mehr Graphikdarstellungen verwendet werden, wird weit­
aus das meiste auf unseren PCs vollkommen im Textmodus erledigt, bei dem
nichts anderes auf dem Bildschirm erscheint als der Textzeichensatz der PC-Fami­
lie. Deshalb sind auch die meisten PCs nur mit dem IBM-Monochrom-Adapter
ausgerüstet, der lediglich Textzeichen zeigen kann und nichts anderes.
Auch wenn Sie ein Graphik-Fan sind, der Textmodus des PC ist sehr wichtig. Wir
zeigen deshalb, wie er funktioniert, was er kann und welche Einschränkungen er
hat. Wir beginnen mit einem Überblick über die Organisation der Textmodi und
über die Grundlagen ihrer Arbeitsweise. Anschließend behandeln wir technische
Details, denen die Textmodi unterliegen. Zuletzt zeigen wir ein paar trickreiche Ver­
fahren, die sich bei der Programmierung im Textmodus einsetzen lassen.
12.1
Beschreibung der Textmodi
Die Textbildschirmmodi der PC-Familie unterliegen einer Einteilung des Bild­
schirms in einzelne Zeichenpositionen, die in einem Zeilen- und Spalten-Raster
angeordnet sind. Jede Zeichenposition hat zwei separate Komponenten: die Daten,
die auf dem Bildschirm ausgegeben werden, und ihr Attribut, das festlegt, wie
diese Zeichen erscheinen müssen (in Farbe, blinkend usw.).
In den Textmodi steuern unsere Programme sowohl die Daten als auch die Attri­
bute vollkommen, so daß sie genau spezifizieren können, welche Zeichen in wel­
chen Zeichenpositionen und in welcher Form bzw. mit welchen Farbattributen aus­
gegeben werden sollen. Allerdings können unsere Programme keine weiteren
Details steuern, zum Beispiel die Schriftart oder pixel-genaue Zeichenpositionen.
Solche Dinge werden vom Bildschirmadapter und dem Bildschirm bestimmt. (Im
Gegensatz dazu können wir dies alles durch unsere Programme steuern, wenn
Zeichen im Graphikmodus verwendet werden, wie in Kapitel 13 noch deutlich wird.)
Kurz gesagt bedeutet das, daß unsere Programme in den Textmodi innerhalb eines
festen Rahmens arbeiten, der bestimmt, was auf dem Bildschirm gezeigt werden
kann. Dieser vordefinierte Rahmen befreit unsere Programme von sehr viel Arbeit,
die sie andernfalls direkt oder indirekt übernehmen müßten.
Die Zeichenpositionen eines Bildschirms sind in 25 Zeilen und normalerweise in
80 Spalten organisiert, aber, wie wir in Kapitel 11 gesehen haben, gibt es zwei Text­
modi, die horizontal nur 40 Spalten haben. Diese 40-Spalten-Modi wurden entwik­
kelt, damit ein Fernseher als Bildschirm eines PC verwendet werden kann, da die
schlechte Auflösung und Bildqualität eines Fernsehschirms keine 80 Zeichen
deutlich darstellen kann. Wie z.B. der Kassettenrecorderanschluß wurde auch der
40-Spalten-Modus für den PC entwickelt, weil man glaubte, daß viele Käufer nach
einem preiswerten minimal ausgerüsteten PC suchen würden. Wie sich heraus-
150
12 Bildschirm - Teil 2: Textgrundlagen
,.
„. '4
. .
!'.
�
ili
1
.'1J
,·
� '. '
·,
.:
,
;,"r ,r���t�:
Abb. 12-1:
�,\:
.,
�
''"/„
)f•.$
'flir'«I'·
:.
•
Oie Spalten und Zeilen eines Bildschirms
stellte, werden die 40-Spalten-Modi selten verwendet und von den meisten Pro­
grammen nicht unterstützt. Abbildung 12-1 zeigt, wie der Bildschirm in Spalten und
Zeilen bei 40- oder 80-Spalten Breite organisiert ist
Unsere Programme können den Bildschirm entweder so behandeln, als wäre er in
Zeilen eingeteilt, oder sie können ihn auch als eine einzige zusammenhängende
Zeichenkette mit 2000 Zeichen (oder 1000 beim 40-Spalten-Modus) behandeln.
Der Textmodus der PC-Familie kann problemlos in beiden Arten arbeiten. Unsere
Programme können ihre Ausgabe ganz einfach in einer bestimmten Zeile und
Spaltenposition erscheinen lassen. Falls unsere Programme andererseits nur
Daten auf dem Bildschirm zeigen wollen, werden sie hintereinander vom Anfang
einer Zeile bis zum Anfang der nächsten Zeile geschrieben. Der Bildschirm des PC
ist in beiden Fällen sehr einfach und flexibel zu programmieren.
Unsere Bildschirme können den gesamten Zeichensatz des PC zeigen, den wir in
Kapitel 4 besprochen und in den Programmen ALL-CHAR und REF-CHAR demon­
striert haben (siehe Anhang A). Bei manchen Zeichen werden jedoch spezielle
Techniken gebraucht, wie zum Beispiel die POKE -Anweisungen, die in diesen bei­
den Programmen benützt wurden. Der Grund liegt darin, daß die ASCII-Steuerzei­
chen, Codes 0 bis 31, besondere Bedeutungen haben, mit denen man das
Erscheinungsbild der Ausgabe beeinflußt, wie zum Beispiel Sprung auf eine neue
Zeile. Falls einige dieser Steuerzeichen zum Bildschirm geschickt werden, zum
Beispiel mit der PRINT-Anweisung in B ASIC, agieren sie im allgemeinen als Steu­
erzeichen, aber sie könnten auch einfach als gewöhnliche PC-Zeichen erscheinen.
Die Ergebnisse variieren in Abhängigkeit davon, welche Zeichencodes geschrie­
ben werden oder auch, welche Programmiersprache verwendet wird.
Außer diesen ASCII-Steuerzeichen kann der gesamte Textzeichensatz der PC­
Familie auf dem Bildschirm problemlos dargestellt und in jeder beliebigen Zei­
chenposition des Bildschirms plaziert werden.
12.1
Beschreibung der Textmodi
151
Das Zeichen, das in einer Position erscheint, ist die Datenkomponente der Zei­
chenposition. Es gibt auch noch eine Attributkomponente, die das Erscheinungs­
bild des Zeichens steuert, zum Beispiel seine Farbe.
Grundsätzlich gibt es zwei verschiedene Sätze von Attributcodes: einen für den
Monochrom-Adapter und einen für den Farb-Graphik-Adapter, aber die beiden
Systeme verhalten sich weitgehend kompatibel. Zuerst wollen wir uns die Attribute
des Farb-Graphik-Adapters ansehen.
Beim Farb-Graphik-Adapter hat das Attribut einer Zeichenposition drei Teile. Einer
spezifiziert die Vordergrundfarbe (die Farbe des Zeichens selbst). Der zweite Teil
steuert die Hintergrundfarbe (die Farbe um oder „hinter" dem Zeichen) und ob das
Zeichen blinkt oder nicht. Es gibt16 Vordergrundfarben, numeriert von 0bis15 , wie
in Abbildung 12-2 gezeigt wird. Die Farben bestehen aus den drei Komponenten­
teilen rot, grün und blau. Die verschiedenen Kombinationen dieser drei Elemente
liefern uns acht Hauptfarben, und mit einer normalen und helleren Variation dieser
acht Farben sind es insgesamt sechzehn. Außerdem gibt es acht Hintergrundfar­
ben, nämlich die acht Hauptfarben ohne ihre helleren Variationen. Der letzte Teil
der Farbattribute ist ein Schalter, durch den das Vordergrundzeichen ggf. blinken
kann.
Code
Farbe
0
Schwarz (nichts)
2
Grün
3
Zyano (blau und grün)
4
Rot
Blau
5
Magenta (blau und rot)
6
Gelb oder Braun (grün und rot)
7
Weiß (blau und grün und rot)
8
Grau (nur hell)
9
Hellblau (blau und hell)
10
Hellgrün (grün und hell)
11
Hellzyano (blau und grün und hell)
12
Hellrot (rot und hell)
13
Heilmagenta (blau und rot und hell)
14
Hellgelb (grün und rot und hell)
15
Hellweiß (blau und grün und rot und hell)
Abb. 12-2:
Farbattribute
Das sind die normalen Farbattribute, aber einige der besseren Bildschirmadapter
können mit Variationen dieses Systems arbeiten. Der eingebaute Adapter des PCjr
kann zum Beispiel helle Hintergrundfarben blinken lassen und hat 16 Hintergrund­
farben. Der Adapter des PCjr und der Kombinierte Graphik-Adapter können die
152
12 Bildschirm - Teil 2: Textgrundlagen
Farbpalette neu einteilen. Wenn wir also den Code für eine Farbe verwenden (zum
Beispiel 1 für blau), erscheint in Wirklichkeit eine andere Farbe. Solche Eigenschaf­
ten sind interessant und man kann sie brauchen, aber sie gehören nicht zum Stan­
dardrepertoire der PC-Familie.
Der Monochrom-Adapter kann ebenfalls mit Attributen das Erscheinungsbild sei­
ner Zeichen steuern, aber in anderer Weise. Der Monochrom-Adapter verfügt über
keine Farbe, aber er kann seine Zeichen in heller und normaler Intensität ausge­
ben, blinkend, unterstrichen oder in inverser Darstellung (schwarze Zeichen auf
einem hellen Hintergrund). Sie finden die verschiedenen Möglichkeiten in Abbil­
dung 12-3 aufgelistet. Nicht alle Kombinationen dieser Eigenschaften sind erlaubt,
zum Beispiel gibt es invers unterstrichen nicht.
Code
Funktion
0
Unsichtbar
unterstrichen
7
Normal
Hell unterstrichen
9 (8+1)
15 (8+7)
Hell normal
1 12
Invers
129 (128+1)
Blinkend unterstrichen
135 (128+7)
Blinkend normal
137 (128+8+1)
Blinkend hell unterstrichen
143 (128+8+7)
Blinkend hell normal
240 (128+112)
Blinkend invers
Abb. 12-3:
Monochrom-Attribute.
Das sind die wesentlichen Eigenschaften der Textbildschirmmodi des PC. Was
man noch über sie lernen kann, sind die technischen Details, wie die Bildschirm­
daten im Speicher angelegt werden, wie die Attribute codiert sind und andere inter­
essante Details. Wir behandeln das als nächstes in einem mehr technischen
Abschnitt.
12.2
Details des Textmodus
Jeder Bildschirmadapter hat seine eigenen Speicherchips, die die Daten spei­
chern, die auf dem Bildschirm ausgegeben werden. Ein spezieller Teil des PC­
Adreßraumes ist für den Zugriff auf diesen Bildschirmspeicher reserviert. Ein Spei­
cherblock von 128K steht den Bildschirmadaptern zur Verfügung, der die A- und B­
Blöcke des Speichers füllt (siehe Abschnitt 7.3).
12.2 Details des Textmodus
153
Der B-Block ist der Standard-Bildschirmspeicherbereich sowohl für den Mono­
chrom-Adapter als auch für den Farb-Graphik-Adapter. Der Monochrom-Adapter
hat seinen Speicher am Anfang des B-Blocks und beginnt bei der Segment­
adresse hex BOOO. Der Speicher des Farb-Graphik-Adapters beginnt in der Mitte
von Block B, mit der Segmentadresse hex B800. (Sie finden diese Adressen in ei­
nigen Listings von Anhang A.)
Jeder dieser beiden Adapter benützt nur einen Teil der 32K Speicher, die für ihn
reserviert sind. Der Monochrom-Adapter hat nur 4K Speicher, der Farb-Graphik­
Adapter 16K. Jeder hat genug für die Information, die auf dem Bildschirm ausgege­
ben wird.
Der Monochrom-Adapter braucht 4K, weil der Bildschirm 2000 Zeichenpositionen
hat (80 Spalten mal 25 Zeilen), und jede Position benötigt zwei Bytes. Eines spei­
chert die Zeichendaten und eines die Bildschirmattribute. Genau 4000 Bytes für
die Bildschirmdaten und weitere unbenützte 96 Bytes ergeben die Summe einer
runden binären Zahl, nämlich 4096 oder exakt 4K. Der Farb-Graphik-Adapter
benötigt auch 4000 Bytes für seinen Textmodus, aber noch mehr braucht er für
seinen Graphikmodus, wie wir in Kapitel 13 sehen werden. Der CGA hat deshalb
16K Speicher. In Abschnitt 12.3 werden wir sehen, wie dieser zusätzliche Speicher
eingesetzt wird.
Die anderen Bildschirmadapter sind diesen beiden ursprünglichen ähnlich. Der
Compaq-Adapter arbeitet wie der Farb-Graphik-Adapter, und der Hercules-Adap­
ter funktioniert im Textmodus wie der Monochrom-Adapter. Beide haben den glei­
chen Speicherumfang und die gleiche Speicheradressierung wie die Adapter, die
sie nachahmen. Der eingebaute Bildschirmadapter des PCjr agiert wie ein Farb­
Graphik-Adapter, und sein Bildschirmspeicher scheint wie beim CGA an der Spei­
cheradresse B800 zu liegen. In Wirklichkeit benützt der PCjr einen Teil seines Stan­
dardspeichers für den Bildschirm, und spezielle Adressierungsschaltungen lassen
diesen normalen Speicher an der Adresse B800 erscheinen.
Der Kombinierte Graphik-Adapter kann sogar mehr Speicher haben, je nachdem,
wieviel in ihm installiert ist. Da der EGA entweder als Monochrom-Adapter oder als
Farb-Graphik-Adapter fungieren kann (oder seine eigenen speziellen Bildschirm­
modi verwenden kann), muß er mit den Speicheradressen flexibel umgehen. Nor­
malerweise läßt der EGA seinen Speicher in einer der zwei Standardpositionen,
BOOO oder B800, erscheinen. Wenn der EGA in einige seiner speziellen Modi
wechselt, verwendet er auch den A-Block der Speicheradressen. Wenn er jedoch
in einem normalen Modus arbeitet, erscheint keiner der Bildschirmspeicher des
EGA in A-Block-Adressen. Wir können ihn deshalb nicht mit Tools zur Speicherun­
tersuchung entdecken, zum Beispiel mit DEBUG oder dem SI- System-Information­
Programm der Norton-Utilities.
Obwohl für den Bildschirmspeicher des Monochrom-Adapters und des Farb-Gra­
phik-Adapters verschiedene Startadressen verwendet werden, ist die Gestaltung
dieses Speichers die gleiche. Der Speicher wird in Paaren von Bytes benützt, mit
zwei Bytes für jede Textposition auf dem Bildschirm. Das erste Byte des Bild-
154
12 Bildschirm - Teil 2: Textgrundlagen
Abb. 12-4:
Bildschirmspeicher und Bildschirm im Textmodus
schirmspeichers enthält die Zeichendaten für die Bildschirmposition ganz links
oben, und das nächste Byte speichert das Bildschirmattribut für diese Position.
Das folgende Bytepaar ist für die zweite Spalte in der ersten Zeile usw., bis wir die
letzte Position auf dem Bildschirm erreichen. (Siehe Abbildung 12-4.)
Im Bildschirmspeicher wird der Bildschirm wie eine kontinuierliche Kette von 2000
Bytepaaren behandelt, und nichts zeigt die Unterteilung des Bildschirmes in Zeilen
an. Wenn also Information im Speicher einfach Byte für Byte abgelegt wird,
erscheint sie auf dem Bildschirm automatisch in Zeilen eingeteilt. Im Falle, daß die
Zeilen- und Spaltenpositionen für unsere Programme wichtig sind, berechnen sie
die relative Position der betreffenden Bytes und legen ihre Daten dort ab.
Wir können die relativen Speicherpositionen des Bildschirms mit einfachen For­
meln berechnen. Wenn wir die Zeilen und Spalten des Bildschirms, beginnend mit
0 (nicht mit 1), durchnumerieren, dann ergibt folgendes die Position eines Daten­
bytes:
Position = (Zeile * 80 +Spalte) * 2
Diese Position ist relativ zum Anfang des Bildschirmspeichers, und die Formel gilt
für einen 80-Spalten-Modus. Für einen 40-Spalten-Modus des Farb-Graphik­
Adapters würden wir die Zeile mit 40 multiplizieren, nicht mit 80. Die Lage des Attri­
but-Bytes für die gleiche Bildschirmposition ist nur um eins höher.
Damit Information auf dem Bildschirm erscheint, muß sie von einem Programm im
Bildschirmspeicher abgelegt werden. Dies kann entweder direkt durch die Pro­
gramme geschehen, die wir laufen lassen, oder es kann von den eingebauten
ROM-BIOS-Dienstprogrammen des Computers erledigt werden. Es gibt dafür zwei
Prinzipien. Falls ein Programm seine Daten direkt in den Bildschirmspeicher pla­
ziert, sind Bildschirmausgaben sehr effizient und schnell. Die meisten bzw. alle
schnellen Programme, die Sie benützen, arbeiten so. Wenn unsere Programme auf
12.2 Details des Textmodus
155
diese Weise arbeiten, müssen sie wissen, wie der Bildschirmspeicher angelegt ist,
und sie müssen die Funktionsweise der Bildschirmadapter kennen. Solche Pro­
gramme könnten nicht mit einem Bildschirmadapter arbeiten, der andere Bild­
schirmspeicheradressen verwendet. Wenn unsere Programme dagegen die ROM­
BIOS-Programme verwenden, um Daten im Bildschirmspeicher abzulegen, kön­
nen Bildschirmmodifikationen problemlos berücksichtigt werden, egal ob neue
Bildschirmspeicheradressen verwendet werden, oder ein Fensterrahmen wie Top­
View, das Information auf dem Bildschirm herumschieben kann. Die ROM-BIOS­
Dienstprogramme machen unsere Programme von den Eigenheiten des Bildschir­
mes unabhängig, und können damit leichter an kompatible Computer angepaßt
werden.
Von diesem Standpunkt aus gesehen, sollten alle unsere Programme die ROM­
BIOS-Dienstprogramme für Bildschirmausgaben verwenden, um eine maximale
Flexibilität zu erhalten. Die ROM-BIOS-Dienstprogramme haben jedoch einen er­
heblichen Nachteil. Sie brauchen überraschend lange für ihre Arbeit. (Falls Sie die
Norton-Utilities haben, können Sie sich das selbst ansehen, weil das NU-Pro­
gramm beide Methoden für die Bildschirmausgabe benützt. Starten Sie das Pro­
gramm mit der „/DO"-Option für die direkte Bildschirmausgabe und mit der „/D1"0ption, um festzustellen, wieviel langsamer es läuft, wenn es die ROM-BIOS­
Dienstprogramme einsetzt.) Wegen dieses großen Nachteils des ROM-BIOS
schreiben so viele Programme ihre Bildschirmausgabe direkt in den Bildschirm­
puffer.
IBM wollte offensichtlich, daß alle unsere Programme ihre Bildschirmdaten durch
das ROM-BIOS leiten, aber die Entwicklung lief anders. Sehr viele Programme
machen ihre eigene Bildschirmausgabe und verwenden die zwei wichtigen Bild­
schirmadapter-Speicheradressen BOOO und B800, so daß es für IBM unmöglich
wurde, eine radikale Änderung des Bildschirmspeichers in Betracht zu ziehen, am
wenigsten bei den Textmodi. Darum hat IBM nun bekanntgegeben, daß alle
zukünftigen Bildschirmadapter, die für die PC-Familie entwickelt werden, die Kom­
patibilität zu den beiden originalen Adaptern beibehalten und weiterhin diese bei­
den Adressen benützen werden. Diese Verpflichtung wurde z.B. beim Kombinier­
ten Graphik-Adapter bereits eingehalten.
Wir können vielleicht den Eindruck bekommen, daß zwischen dem Cursor und der
Information, die auf dem Bildschirm ausgegeben wird, eine enge Beziehung
besteht, da die Information nur erscheinen kann, wenn sie durch den Cursor dort
hingeschrieben wird. Wir wissen aber jetzt, daß das nicht richtig ist. Welche Infor­
mation auch immer im Bildschirmspeicher abgelegt wird, sie erscheint auf dem
Bildschirm völlig unabhängig vom Cursor. Der Cursor ist einfach eine bequeme
Methode, um anzuzeigen, wo der aktive Teil des Bildschirmes ist, was für einen
Benützer sehr hilfreich sein kann.
Aus diesem Grund arbeiten die ROM-BIOS-Dienstprogramme, die für unsere Pro­
gramme Information auf dem Bildschirm ausgeben, mit der Cursorpositionierung
eng zusammen. Der Cursor ist nicht nur eine sichtbare Schreibmarke für den
Benutzer, sondern auch ein Mittel zur Koordination zwischen dem Bildschirm, dem
156
12 Bildschirm - Teil 2: Textgrundlagen
ROM-BIOS und dem Programm, das Information erzeugt. Durch den Cursor hat
sowohl das Programm als auch das ROM-BIOS eine einheitliche Möglichkeit, um
anzuzeigen, wo Information erscheinen soll. Mehr Informationen über den Cursor
finden Sie im folgenden Abschnitt „Der Cursor".
Der Cursor
Der blinkende Cursor, den wir normalerweise auf unserem Bildschirm sehen, ist
eine Hardware-Eigenschaft der Bildschirmadapter des PC und gilt nur für die Text­
modi, die wir hier behandeln, und nicht für die Graphikmodi.
Der blinkende Cursor wird durch den Bildschirmadapter erzeugt, der u.a. die Fre­
quenz steuert, in der der Cursor blinkt. Die Blinkfrequenz kann nicht verändert wer­
den, aber die Position und die Größe des Cursors, und es gibt im PC eingebaute
ROM-BIOS-Dienstprogramme, die den Cursor für unsere Programme steuern.
Normalerweise blinkt der Cursor am Fuße eines Zeichens in den letzten beiden
Scan-Zeilen. Aber die Zeilen, in denen der Cursor erscheint, können mit einem
Hardware-Kommando geändert werden, das durch das ROM-BIOS ausgeführt
wird. Wir können mit der LOCATE-Anweisung von BASIC experimentieren, wenn
wir die Größe des Cursors verändern wollen. Wir können den Cursor in einem
beliebigen Paar von Scan-Zeilen anfangen und enden lassen (Zeilen 0-13 beim
Monochrom-Adapter, 0-7 beim Farb-Graphik-Adapter). Einen kuriosen zweigeteilt
blinkenden Cursor erhalten wir, wenn wir den Cursoranfang auf eine höhere Zei­
lennummer legen als das Cursorende. Sie können das mit folgender BASIC­
Anweisung ausprobieren:
LOCATE „,6, 1
Der blinkende Cursor, den wir beschrieben haben, ist ein Hardware-Cursor und
damit ein integraler Teil eines Bildschirmadapters. Ein Hardware-Cursor ist für viele
Zwecke nicht geeignet, und Programme erzeugen deshalb oft ihren eigenen logi­
schen Cursor, wobei sie meistens die lnversdarstellung verwenden, um den Cur­
sorbereich sichtbar zu machen. Einer der Hauptgründe dafür, warum Programme
ihren eigenen Cursor erzeugen, besteht darin, daß der Cursor auf mehr als eine
Zeichenposition erweitert werden muß (zum Beispiel bei Tabellenkalkulationspro­
grammen, bei denen die gesamte Breite eines Elements invertiert wird). Technisch
ist ein solcher Cursor völlig verschieden von einem Hardware-Cursor, aber die
Funktion aller Cursorarten ist die gleiche: uns zu zeigen, wo der aktive Teil des
Bildschirmes ist. Wenn Programme ihre eigenen logischen Cursor erzeugen, las­
sen sie normalerweise den Hardware-Cursor verschwinden, indem sie ihn ent­
weder nicht aktivieren oder ihn auf eine Position außerhalb des Bildschirmes pla­
zieren.
Als nächstes wollen wir uns die Codierung eines Attribut-Bytes ansehen, womit
das Erscheinungsbild eines Textzeichens auf dem Bildschirm gesteuert wird.
Obwohl die Attribute des Farb-Graphik-Adapters und des Monochrom-Adapters
12.2
Details des Textmodus
157
ziemlich verschieden sind, gibt es ein gemeinsames Konzept, dem jedes System
unterliegt. Wir beginnen mit dem gemeinsamen Teil und gehen dann über zu den
Eigenheiten sowohl des Farb-Graphik-Adapters als auch des Monochrom-Adap­
ters.
Die acht Bits jedes Attributes sind in vier Felder unterteilt:
7 6 5 4 3 2 1 0
B
•
•
•
•
R G B
•
•
•
•
•
•
•
•
•
•
•
I
•
•
•
•
•
R G B
Blinken Cdes Vordergrundes)
Hintergrundfarbe
Intensitaet Cdes Vordergrundes)
Vordergrundfarbe
Wie wir sehen können, steuern die rechtesten vier Bits die Vordergrundfarbe. Drei
Bits (RGB) spezifizieren die Hauptkomponenten Rot-Grün-Blau der Farbe, und ein
lntensitätsbit (1) macht die Farbe hell oder dunkel. Die anderen vier Bits steuern in
ähnlicher Weise die Hintergrundfarbe, aber das Bit, das erwartungsgemäß die Hin­
tergrundintensität steuern sollte, ist statt dessen für das Blinken des Vordergrundes
zuständig (wie wir in Abschnitt 12.1 gesehen haben, kann es der PCjr zurückholen
und damit 16 Hintergrundfarben darstellen). Alle möglichen Bitkombinationen wer­
den gemäß diesem Schema erzeugt. Sie können sie alle mit dem Programm
COLORTXT aus Anhang A demonstrieren. Jede Kombination ist möglich, egal wie
benutzerfreundlich sie ist. Einige Farbkombinationen sind sehr angenehm, wie
zum Beispiel Hellgelb auf Blau (eine meiner Lieblingskombinationen). Andere
haben einen überraschenden Effekt, wie zum Beispiel blinkendes Hellblau auf Rot
mit dem Attribut hex C9, in Bits 11001001. Wenn Sie einen Farbbildschirm haben,
können Sie diese Kombination in BASIC mit dem Kommando COLOR
suchen.
25,4 ver­
Der Farb-Graphik-Adapter benützt diese Attribut-Bits genau gemäß dieser Tabelle.
Der Monochrom-Adapter paßt sich diesem Schema möglichst nahe an. Der nor­
male Bildschirmmodus, helle Zeichen auf schwarzem Hintergrund, ist hex 07
codiert (in Bits 00000111), was den Farbattributen von Weiß auf Schwarz entspricht.
Die lnversdarstellung ist umgekehrt codiert, hex 70, als Äquivalent zu Schwarz auf
Weiß. Der Code für Unterstreichen ist hex 01, was das monochrome Unterstrei­
chungsattribut äquivalent zur Vordergrundfarbe Blau macht. Der unsichtbare oder
nicht angezeigte Modus des Monochrom-Adapters ist hex 00 codiert, als Äquiva­
lent zu Schwarz auf Schwarz. Wir könnten erwarten, daß der Code für Weiß auf
Weiß, hex 77, uns einen anderen unsichtbaren Modus liefert, bei dem der gesamte
Bildschirmbereich hell leuchtet, aber das ist nicht der Fall. Der Monochrom-Adap­
ter hat nur eine Handvoll Attributmodi, die in Abbildung 12-3 aufgelistet sind. Wir
erhalten nicht alle Attributkombinationen des Monochrom-Adapters, die wir viel­
leicht erwarten. Zum Beispiel gibt es keinen inversen unterstrichenen Modus. Der
Monochrom-Adapter zeigt nur die Kombinationen, die in Abbildung 12-3 gezeigt
werden.
Obwohl der Monochrom-Adapter nur eine begrenzte Anzahl verschiedener Bild­
schirmattribute hat, arbeitet er richtig, egal wie die Attribut-Bits gesetzt sind. Unab-
158
12 Bildschirm - Teil 2: Textgrundlagen
hängig von den gesetzten Bits stellt der Monochrom-Adapter Zeichen in einer
Standardart dar. In den meisten Fällen zeigt er die Zeichen auf normale Weise, als
wären die Attribute auf hex 07 gesetzt. Wenn Sie einen Monochrom-Adapter in
Ihrem Computer haben, können Sie mit dem COLORTXT-Programm nachprüfen,
wie er auf alle möglichen Kombinationen von Attribut-Bits reagiert; mit demselben
Programm können wir die Farben des Farb-Graphik-Adapters demonstrieren.
Die Attribute steuern das Erscheinungsbild der Zeichen auf dem Bildschirm, wie
wir es besprochen haben: farbig, blinkend, und so weiter. Was sie nicht regeln, ist
die wirkliche Erscheinung oder Form der Zeichen, für die der Bildschirmadapter
zuständig ist. Mehr darüber können Sie im Abschnitt „Der Zeichensatzgenerator"
erfahren.
Der Zeichensatzgenerator
In den Textmodi werden die Zeichen, die wir auf dem Bildschirm unseres Compu­
ters sehen, vom Bildschirmadapter dargestellt, nicht von der Software des PC (wie
das bei den Graphikmodi der Fall ist, was wir in Kapitel 13 sehen werden). Die Qua­
lität der ausgegebenen Zeichen variiert bei den verschiedenen Bildschirmadap­
tern, weil es Unterschiede im sogenannten Zeichensatzgenerator gibt.
Der Zeichensatzgenerator ist der Rahmen, innerhalb dem die Zeichen unseres PC
ausgegeben werden. Die Zeichen werden immer durch eine rechteckige Punktma­
trix dargestellt, auch wenn das auf dem Bildschirm nicht direkt zu erkennen ist.
Beim IBM-Monochrom-Adapter - und allen ähnlichen Adapter-Modi - besteht der
Zeichensatzgenerator aus neun Punkten in der Breite und 14 in der Höhe, womit
ein deutliches Zeichen erzeugt werden kann. Beim Farb-Graphik-Adapter ist der
Zeichensatzgenerator 8 mal 8 und erlaubt damit nur eine grobe Zeichendarstel­
lung. Bei einigen der speziellen Modi des Kombinierten Graphik-Adapters ist der
Zeichensatzgenerator 8 mal 14, fast so gut wie der des Monochrom-Adapters.
Es ist relativ leicht, die vertikale Dimension des Zeichensatzgenerators festzustel­
len, indem man einfach die Helligkeit unserer Bildschirme verstärkt. Da sich die
Scan-Zeilen des Bildschirms nicht völlig überlappen, können wir sehen, wo sie
sich befinden. Die horizontale Auflösung läßt sich allerdings schwieriger feststel­
len. Die Pixelpunkte überlappen sich und verschwimmen ineinander, so daß wir sie
nicht einzeln sehen können. Wir können nur durch genaues Betrachten und Ver­
gleichen der Zeichen schätzen, wieviele Punkte unsere Zeichen breit sind.
Der Zeichensatzgenerator definiert nur den Rahmen, innerhalb dem die Zeichen
gezeichnet werden. Nicht der ganze Generator wird für die eigentlichen Zeichen
verwendet. Teile sind für den Raum zwischen den Zeichen reserviert. Wir zeigen
das am Beispiel des
Zeichensatzgenerators des Monochrom-Adapters.
Der gesamte Zeichensatzgenerator des Monochrom-Adapters ist 9 mal 14. Von
den neun Spalten in der Breite sind die erste und die letzte Spalte als Zwischen­
raum zwischen den Zeichen reserviert, so daß unsere Zeichen in Wirklichkeit sie­
ben Punkte breit dargestellt werden. Von den 14 Zeilen in der Höhe werden die
obersten zwei und die unterste ebenfalls als Zwischenraum zwischen den einzel-
12.3 Textmodus-Tricks
159
nen Bildschirmzeilen benützt, so daß noch 11 Zeilen für die Darstellung des Zei­
chens vorhanden sind. Zwei dieser Zeilen sind für Unterlängen bestimmt, wie sie
bei den Kleinbuchstaben p,g oder y vorkommen. Damit verbleiben neun Zeilen für
den Hauptteil der Zeichen. Die Zeichen des Monochrom-Adapters werden deshalb
als sieben mal neun bezeichnet, wobei man sich auf den Hauptteil des Zeichen­
satzgenerators bezieht, den Teil, den ein großes X ausfüllt. Das ist der eigentliche
Arbeitsbereich des Zeichensatzgenerators, einschließlich der zwei Zeilen für Unter­
längen ist er sieben mal elf.
Die Teile, die für die Zwischenräume reserviert sind, - eine Spalte auf jeder Seite,
zwei Zeilen oben und eine Zeile unten - gelten nur für konventionelle Zeichen. Die
speziellen Graphikzeichen - wie das Füllzeichen, Code 219, oder die Zeichen für
Umrahmungslinien, die wir im Programm BOXES erwähnt und demonstriert haben
- benützen diese Teile des Zeichensatzgenerators, damit sie ohne Zwischenraum,
aneinander grenzen können.
Je feiner ein Zeichensatzgenerator ist, desto detaillierter kann die Darstellung eines
Zeichens sein. Deshalb können die Zeichen des Monochrom-Adapters Haarstriche
haben, die feinen Teile an den Zeichenenden, mit denen sie verziert und deutlicher
dargestellt werden können.
Das waren die wichtigsten technischen Details, die den Textmodi unserer PC­
Familie zugrundeliegen. In Abschnitt 12.3 erfahren wir noch einige Textmodus­
Tricks.
12.3
Tuxtmodus-Tricks
Zu den Textmodi unseres Computers gehören einige besondere Eigenschaften
und Tricks, mit denen man die Arbeit von Programmen erweitern und manche
Spezialeffekte erzielen kann. Natürlich ist der gesamte Umfang an Tricks nur durch
unsere Phantasie und Intelligenz begrenzt, und ich kann nicht alles vorstellen und
erklären, was machbar ist. Es gibt jedoch einige grundlegende Möglichkeiten und
Tricks, die uns helfen, die Arbeitsweise des Textmodus zu verstehen. Sie sind das
T hema dieses Abschnitts. Wir beginnen mit der Verwendung des überflüssigen
Bildschirmspeichers.
Während der Monochrom-Adapter gerade genug Bildschirmspeicher hat, um die
gesamte Information, die auf dem Bildschirm erscheint, auf einmal zu speichern,
verfügen der Farb-Graphik-Adapter und der Kombinierte Graphik-Adapter über
mehr Speicher, als für eine Textausgabe pro Bildschirm benötigt wird. Das ist so,
weil die Graphikmodi dieser Adapter mehr Bildschirmspeicher als die Textmodi
erfordern. Um diesen Speicher nicht zu verschwenden, können dort viele vonein­
ander unabhängige Informationen gespeichert werden, die in den Bildschirm gela­
den werden. Diese separat geladenen Bildschirminformationen werden Bild­
schirmseiten genannt.
160
12 Bildschirm - Teil 2: Textgrundlagen
...
16K Speicher
4K
Seite 0
Nicht Aktiv
Abb. 12-5:
4K
Seite 1
Aktiv
4K
Seite 2
Nicht Aktiv
4K
Seite 3
Aktiv
Vier Bildschirmseiten
Abbildung 12-5 zeigt, wie das beim Farb-Graphik-Adapter funktioniert, wenn er
sich in einem 80-Spalten-Textmodus befindet. Bei einem 80-spaltigen Text werden
nur 4000 Bytes benötigt, um die Bildschirminformation zu speichern (genau die
Speichergröße des Monochrom-Adapters). Der Farb-Graphik-Adapter hat jedoch
16K Speicher und kann damit in vier unabhängige Bildschirmseiten von jeweils
4000 Bytes unterteilt werden.
Jede dieser Bildschirmseiten kann aktiviert werden und ihre Information unmittel­
bar auf dem Bildschirm erscheinen lassen. Der Bildschirmadapter kann ohne jede
sichtbare Verzögerung von einer Seite auf eine andere schalten. Obwohl nur eine
Seite auf einmal auf dem Bildschirm erscheint, können unsere Programme immer
auf sämtliche Daten in allen Bildschirmseiten zugreifen.
Während ein Programm vielleicht ziemlich lange braucht, um Informationen für den
Bildschirm zu erzeugen, kann die Information unmittelbar auf dem Bildschirm
erscheinen, indem von einer Seite zu einer anderen gesprungen wird. Während wir
eine Bildschirmseite ansehen, kann das Programm unsichtbar eine andere Bild­
schirmausgabe in einem anderen Seitenpuffer erzeugen, die dann ohne Verzöge­
rung ausgegeben werden kann.
Die Anzahl der verfügbaren Bildschirmseiten variiert je nach Bildschirmadapter
und Bildschirmmodus. Wie wir gesehen haben, hat der Monochrom-Adapter nur
eine Seite, so daß kein Seitenwechsel möglich ist (mehr darüber in Kürze). Der
Standard-Farb-Graphik-Adapter liefert vier Seiten für einen 80-Spalten-Text oder
acht Seiten für einen 40-Spalten-Text. Der Kombinierte Graphik-Adapter, der mit
unterschiedlichen Speichergrößen ausgerüstet werden kann, stellt sogar noch
mehr Seiten zur Verfügung.
12.3 Textmodus-Tricks
161
Diese mehrfachen Bildschirmseiten können für alles mögliche verwendet werden.
Sie enthalten vielleicht völlig neue Information oder nur leicht veränderte Daten.
Wenn wir vier oder acht Versionen einer auf Zeichen basierenden Zeichnung
anfertigen, können wir sie schnell seitenweise durchblättern und damit einen Effekt
wie ein Zeichentrickfilm erzeugen.
Programme wechseln zwischen diesen Seiten durch ein einfaches Kommando an
den Bildschirmadapter, eine andere Bildschirmseite des Bildschirmspeichers aus­
zugeben. Bei BASIC können wir mit mehrfachen Bildschirmseiten arbeiten und
zwar mit Hilfe der SCREEN-Anweisung. Sie können damit experimentieren, vor­
ausgesetzt, ihr Computer hat einen Farb-Graphik-Adapter oder einen äquivalenten
Adapter. Der dritte Parameter der BASIC- SCREEN-Anweisung, apage, ist die
„aktive Seite" (active page) und er steuert, mit welcher Seite das Programm arbei­
tet (d.h. welche Bildschirmseite vom Programm geändert wird, wenn das Pro­
gramm Informationen auf den „Bildschirm" schreibt. Der vierte Parameter der
SCREEN-Anweisung, vpage, ist die „sichtbare Seite" (visible page), und sie steu­
ert, welche Seitenausgabe derzeit auf dem Bildschirm erscheint.
Während BASIC uns die Grundaufgaben der Bildschirmseitensteuerung abnimmt,
müssen Programme, die in anderen Sprachen geschrieben sind, dies selbst
machen, mit der Unterstützung einiger ROM-BIOS-Funktionen. Das ROM-BIOS
liefert z.B. eine separate Cursorposition für jede Seite. Ob unsere Programme nun
in BASIC geschrieben sind, oder die ROM-BIOS-Möglichkeiten einsetzen oder die
gesamte Bildschirmseitensteuerung selbst erledigen, die Möglichkeiten der mehr­
fachen Bildschirmseiten sollten jedenfalls eingesetzt werden.
Letztendlich verwenden nur wenige Programme wirklich dieses Seitenumschalten,
weil es doch nicht so vorteilhaft ist, wie wir glauben könnten. Zum einen funktioniert
es nicht auf Computern, die mit dem Monochrom-Adapter ausgerüstet sind, und
das ist die Mehrheit der PCs. Wenn ein Programm ohne die Vorteile des Bild­
schirmseitenumschaltens auskommt, ist es vielleicht den zusätzlichen Program­
mieraufwand nicht wert, um ein Programm zu bekommen, das je nach Bildschirm­
adapter Seiten verwendet oder nicht.
Obwohl der Monochrom-Adapter keine mehrfachen Bildschirmseiten hat, können
Programme die Idee des Seitenumschaltens trotzdem übernehmen - und das wird
häufig praktiziert. Zu diesem Zweck wird ein Teil des konventionellen Programm­
speichers als Bildschirmseite reserviert, in dem eine komplette Bildschirmausgabe
aufgebaut werden kann. Wenn die Daten vollständig sind, werden sie durch eine
schnelle Assembleroperation in den wirklichen Bildschirmspeicher transportiert.
Die Technik unterscheidet sich von dem, was beim wirklichen Bildschirmseitenum­
schalten passiert. Bei den wirklichen Seiten werden die Bildschirmdaten nicht
bewegt. Statt dessen springt der Bildschirmadapter von einer Seite des Speichers
zu einer anderen, während bei dieser Pseudo- Seitenumschalt-Operation die Daten
wirklich von einem anderen Ort in den Bildschirmspeicher transportiert werden.
Das Verschieben aller Daten einer gesamten Bildschirmseite benötigt nur einen
winzigen Bruchteil einer Sekunde. Deshalb scheint diese Technik genauso schnell
wie das wirkliche Seitenumschalten.
162
12 Bildschirm - Teil 2: Textgrundlagen
Falls eines der Programme, die Sie verwenden, ungewöhnlich schnelle Bild­
schirmanzeigen ausgibt, wird wahrscheinlich diese „Seitenumschalt"-Technik ver­
wendet. Mein eigenes NU-Programm macht das auch.
Mit der Bildschirmanzeige kann man mehr machen, als nur Daten hineinzuschie­
ben oder herauszuholen. Es ist mit Assembler-Tricks auch möglich, die Daten auf
dem Bildschirm mit Leerzeichen zu überschreiben oder die Bildschirm-Attribute
bzw. die Farben zu ändern. Der langsame und mühsame Weg, Daten auf dem
Bildschirm zu verändern, ist die zeichenweise Methode, d.h. jede Position auf dem
Bildschirm einzeln abzuändern. Aber es gibt schnellere und effizientere Möglich­
keiten.
Wenn wir zum Beispiel den ganzen Bildschirm löschen wollen, können wir das mit
wenigen Assembleranweisungen erreichen. Zu diesem Zweck wollen wir jedes
Datenbyte durch ein Leerzeichen ersetzen (Code 32, hex 20) und jedes Attribut­
Byte auf „normale" Farbe setzen (normalerweise 7, hex 07). Wir können die erste
Bildschirmposition auf leer-normal setzen, indem wir mit der Assembleranweisung
ein Zwei-Byte-Wort im Speicher plazieren. Das Wort wäre hex 20 07, das das Leer­
zeichen (20) mit dem normalen Farbattribut (07) kombiniert. Eine Variation der
Anweisung, die ein einzelnes Wort in den Speicher transportiert, kann die Opera­
tion bei nachfolgenden Wörtern des Bildschirmspeichers wiederholen, so daß die
gleichen Daten über den ganzen Schirm verbreitet werden.
Mit einer Variante desselben Tricks kann man nur die Farbattribute ändern und die
Daten unverändert lassen, oder umgekehrt. Dies wird mit den Assembleranwei­
sungen erreicht, die Daten „Unden" (AND) und „Odem" (OR), so daß wir Bits an­
und ausschalten können. Mit diesen Tricks können ein paar Anweisungen den
ganzen Bildschirm mit einer neuen Farbe übermalen, schneller als das Auge
erfassen kann.
Zusätzlich zu diesen Tricks, die unsere Programme selbst ausführen können, ent­
hält das ROM-BIOS Dienstprogramme für viele Anwendungen, einschließlich eini­
ger Verfahren, die Sie selten finden werden. Mit einem dieser ROM-BIOS-Dienst­
programme können wir ein rechteckiges Fenster irgendwo auf dem Bildschirm
definieren und innerhalb dieses Fensters können wir Informationen anzeigen und
aus dem Fenster rollen lassen, ohne andere Daten außerhalb des Fensters zu stö­
ren. Dieses Dienstprogramm wird z.B. in Kapitel 17 behandelt.
Bevor wir nun zu neuen Themen übergehen, müssen wir uns noch mit den Gra­
phikmodi beschäftigen, eine spezielle Dimension neben dem Textmodus, den wir
schon besprochen haben.
12.3
Textmodus-Tricks
163
1.
Schreiben Sie ein Programm in BASIC oder in einer anderen Programmiersprache, das die
32 ASCII-Steuerzeichen, Codes 0 bis 31, auf dem Bildschirm ausgibt. Schauen Sie, was
passiert, und passen Sie auf, welche Codes als PC-Zeichen erscheinen und welche als
Steuerzeichen fungieren. Vergleichen Sie Ihre Ergebnisse mit der Information über diese
Steuerzeichen in Kapitel 4.
2.
Berechnen Sie die Speicheradressen für die vier verschiedenen Bildschirmseiten, die ein
Farb-Graphik-Adapter hat, wenn er im 80-Spalten-Modus arbeitet, und die der acht Seiten
im 40-Spalten-Modus.
3.
Warum hat der Monochrom-Adapter 4.096 Bytes Bildschirmspeicher, wenn er nur 4.000
benötigt? Warum könnte es für ein Programm ein Risiko sein , wenn es die übrigen 96 Bytes
im Bildschirmspeicher verwendet?
4.
Wenn Ihr Computer einen Farb-Graphik-Adapter hat (oder irgendeinen anderen Adapter,
einschließlich dem des PCjr oder des Compaq, der mehr als eine Bildschirmseite hat), soll­
ten Sie mit Bildschirmseiten experimentieren, indem Sie das SCREEN-Kommando von
BASIC verwenden, um Seiten zu wechseln, und das PRINT-Kommando, um Informationen in
jede Seite zu schreiben.
164
13
Bildschirm - Teil 3: Graphikgrundlagen
In diesem Kapitel befassen wir uns mit den Charakteristiken und Fähigkeiten der
Graphikmodi. Wir beginnen mit den wichtigsten Eigenschaften der Graphikmodi
und vergleichen dabei die Graphikmodi mit den Textmodi, um die Unterschiede
zwischen ihnen herauszustellen. Dann sehen wir uns die V ielzahl der verschiede­
nen Modi an, die uns zur Verfügung stehen. Schließlich beenden wir unsere Erläu­
terungen mit einem Blick auf einige technische Details, die der Arbeitsweise der
Graphikmodi zugrundeliegen.
13.1
Wie die Graphikmodi funktionieren
In allen Graphikmodi ist der Bildschirm unseres PC grundsätzlich in eine Reihe von
Punkten unterteilt, die Pixels genannt werden. Die Pixels sind in einem rechtecki­
gen Gitter von Zeilen und Spalten angeordnet, und jedes Pixel kann einzeln auf
eine Farbe gesetzt werden, innerhalb des Farbbereichs, den dieser besondere
Modus erlaubt. In dieser Hinsicht unterscheiden sich die Graphikmodi nicht grund­
legend von den Textmodi. Und obwohl es sehr viel mehr Pixelpunkte in den Gra­
phikmodi gibt als Zeichen in den Textmodi - z.B. 320 Pixels in der Breite und 200
in der Höhe, verglichen mit 80 Zeichen horizontal und 25 vertikal -, ist das eher ein
gradueller Unterschied, aber kein fundamentaler.
Was den Graphikmodus wirklich unterscheidet, ist die Tatsache, daß ein Pixel auf
dem Bildschirm einfach ein kleiner Lichtfleck ist, der keine eigene Form hat. Bei
den Textmodi kann jede Position auf dem Bildschirm verschiedenste Formen
annehmen. Sie enthält ein Zeichen mit seiner typischen Form, und die Form wird
durch den Kontrast zwischen den beiden Farben sichtbar gemacht, die den Vor­
dergrund und den Hintergrund der Zeichenposition ausfüllen. Bei den Pixels in den
Graphikmodi haben wir jedoch nur einen Lichtpunkt, ohne jeweils typische Form
und Trennung zwischen Vordergrund und Hintergrund. In den Textmodi hat jede
Bildschirmposition drei Elemente. Da sind zum einen die zwei Hauptelemente
Daten (welches Zeichen ausgegeben wird) und Attribut (wie das Zeichen gezeigt
wird). Dann wird der Attributteil noch einmal in zwei Teile unterteilt, die Vorder­
grundfarbe und die Hintergrundfarbe, so daß wir insgesamt drei separate Elemente
für jede Bildschirmtextposition erhalten. Im Gegensatz dazu hat ein Pixel in den
Graphikmodi nur ein Element, nämlich die Farbe, auf die das Pixel gesetzt wird. In
den Graphikmodi gibt es keine „Daten" (in dem Sinne, daß jede Textmodusposition
ein Datenelement hat) und es gibt keine Hintergrundfarbe, nur die Farbe eines
Pixels.
Wenn wir die Graphikmodi verstehen wollen, ist es wichtig für uns, die Bedeutung
des „Hintergrundes" zu kennen. In den Textmodi gibt es wirklich etwas, das Hinter­
grundfarbe genannt wird, und jede Zeichenposition hat eine. Dagegen hat in den
Graphikmodi jedes Pixel einfach selbst eine Farbe, kein Vordergrund, kein Hinter­
grund, nur eine einzige Farbe. Was wir uns in einem Graphikmodus als Hinter­
grundfarbe vorstellen, ist einfach die Farbe, die wir den Pixels geben, die wir nicht
für die eigentliche Bildschirmausgabe benützen. Die „Hintergrundfarbe" in einem
13.1 Wie die Graphikmodi funktionieren
165
Graphikmodus ist die Standardfarbe, auf die wir alle Pixel setzen, so daß sie im
Kontrast zur Farbe (oder zu den Farben) stehen, mit denen wir die Ausgabe gestal­
ten. Das ist eine praktische Konvention, mit der wir Bilder erzeugen können. Das
ganze hat jedoch nichts mit der grundlegenden Arbeitsweise der Graphikmodi zu
tun. In den Textmodi ist die Hintergrundfarbe eine technische und auch eine sicht­
bare Realitiät. Bei den Graphikmodi ist die Hintergrundfarbe nur eine sichtbare
Konvention, die nichts mit der technischen Arbeitsweise der Graphikmodi zu tun
hat.
Es gibt noch eine andere Sache, die die Graphikmodi im Vergleich zu den Text­
modi nicht aufweisen: das Blinken. Bei den Textmodi blinkt normalerweise der
Cursor, und außerdem gibt es das Blinkattribut für Zeichen. Die Graphikmodi
haben beides nicht. Bei den Graphikmodi gibt es keinen blinkenden Cursor und
im technischen Sinne sogar überhaupt keinen Cursor. (Mehr darüber können Sie
im Abschnitt „Der Graphik-Cursor" erfahren.) Zusätzlich blinkt ein Aspekt der „Far­
ben", die im Textmodus verfügbar sind. Natürlich ist Blinken eigentlich keine
Farbe, aber in den Textmodi kann man Zeichen blinken lassen, wie wir in Kapitel 12
gesehen haben, und die Blinkeigenschaft wird auf die gleiche Weise gesteuert wie
die tatsächlichen Farben. Sie ist also eine besondere Art von Farbe. Die normalen
Graphikmodi erlauben kein Blinken. (Es gibt jedoch eine Ausnahme im Graphik­
modus 15, die wir später sehen werden.) Software ermöglicht fast alles, und des­
halb können unsere Programme auf dem Bildschirm etwas blinken lassen, indem
sie einfach die Bildschirmausgaben in einem bestimmten Zeitintervall ändern.
Eine eingebaute (und hardware-unterstützte) Blinkeigenschaft gibt es jedoch in
keinem der Graphikmodi.
Der Graphik-Cursor
Bei der Aktivierung von BASIC sehen wir auf dem Bildschirm den üblichen blin­
kenden Cursor. Wenn wir in einen Graphikmodus wechseln - zum Beispiel mit
dem Kommando SCREEN 1 -, haben wir scheinbar immer noch einen Cursor auf
dem Bildschirm, obwohl wir bei genauerer Untersuchung bemerken, daß der Cur­
sor als fester Block erscheint, nicht in der normalen blinkenden Form.
Was geschieht hier? Ein Trick!
Aus der Sicht der Hardware gibt es im Graphikmodus keinen Cursor. Der blin­
kende Standardcursor ist, wie wir in Kapitel 12 gesehen haben, eine eingebaute
Eigenschaft der Bildschirmadapter, die nur für die Textmodi gilt. Dieser Hardware­
Cursor blinkt und erscheint jeweils nur in einer Zeichenposition. Normalerweise
soll er die aktuelle Position auf dem Bildschirm markieren und wird durch die
Hardware-Schaltung des Bildschirmadapters erzeugt. Das verlangt keine beson­
dere Anstrengung von unserer Software (außer dem Kommando für die Positionie­
rung des Cursors). Dieser Hardware-Cursor existiert einfach nicht in den Graphik­
Modi.
Was wir in den Graphikmodi als Cursor sehen, ist ein durch Software erzeugter
Effekt, der die Rolle eines Cursors spielt (und den aktiven Teil des Bildschirms
anzeigt). Funktionell gesehen, unterscheidet er sich nicht vom Hardware-Cursor,
aber technisch wird er völlig anders erzeugt.
166
13 Bildschirm - Teil 3: Graphikgrundlagen
Wenn ein Programm - wie z.B. BASIC im Graphikmodus - einen Cursor auf dem
Bildschirm erzeugen will, produziert es den gewünschten Effekt selbst. Normaler­
weise bedeutet das lediglich ein Ändern der Hintergrundfarbe dort, wo der Cursor
gezeigt werden soll. Auf dieselbe Art kann man im Textmodus den blinkenden
Hardware-Cursor ergänzen oder völlig ersetzen. Wir kennen diesen Software­
generierten Cursor von Tabellenkalkulationsprogrammen, die einen Cursor auf das
aktuelle Element positionieren, indem sie das Element invers darstellen.
Im Textmodus haben Programme die Wahl, den Hardware-Cursor zu verwenden
oder ihren eigenen Software-Cursor zu erzeugen. Im Graphikmodus gibt es keine
Wahlmöglichkeit, weil es dort keinen Hardware-Cursor gibt.
Sie können in erster Linie zwei Verfahren für die Anzeige eines Cursors im Graphik­
modus finden. Das alte Standardverfahren, das bei BASIC verwendet wird, markiert
die Cursorposition durch Ändern der Hintergrundfarbe. Ein neuerer Standard, der
vom Apple-Macintosh eingeführt wurde und immer öfter in Software für unsere PC­
Familie benützt wird, zeigt den Cursor als dünne vertikale Linie, die ggf. blinkt (das
Blinken ist ein Software-erzeugter Effekt). Dieser Linien-Cursor ist vielleicht schwer
zu sehen, aber er hat den Vorteil, daß er überall erscheinen kann, sogar zwischen
Zeichen und nur nicht am Kopf eines Zeichens.
Egal wie es aussieht: alles, was als Cursor in einem der Graphik-Modi fungiert, ist
einfach ein visueller Effekt, der durch unsere Software erzeugt wird, und dient den
gleichen Zwecken, wie der Hardware-Cursor der Textmodi.
Die Graphikmodi verfügen über eine Palette von Farben, auf die jede Pixelposition
des Bildschirms gesetzt werden kann. Jeder Graphikmodus hat sein eigenes
Repertoire an Farben. Das und die Anzahl der Pixelpositionen macht den Unter­
schied zwischen den verschiedenen Modi aus. Was alle Graphikmodi gemeinsam
charakterisiert, ist das Gitter aus Punkten und die Fähigkeit, jeden Punkt auf eine
bestimmte Farbe zu setzen, die aus einer Farbpalette ausgewählt wird.
Wenn Ihnen das einfach und primitiv erscheint, haben Sie den wesentlichen Cha­
rakter der Graphikmodi verstanden. Sie sind einerseits grober und andererseits lei­
stungsfähiger als die Textmodi. Grober, weil sie nur farbige Punkte darstellen kön­
nen. leistungsfähiger, weil wir aus diesen Punkten komplizierte Zeichnungen und
Bilder anfertigen können, die man mit dem spezialisierteren Textmodus nicht
erzeugen könnte. Die Graphikmodi stellen im Unterschied zu den Textmodi ein
sehr einfaches Werkzeug zur Verfügung, mit dem wir eine größere Vielfalt an Din­
gen erzeugen können. Allerdings erfordert das mehr Arbeit, weil alles Punkt für
Punkt gezeichnet werden muß, sozusagen „hart" programmiert. Das betrifft übri­
gens auch alle Textzeichen, die wir auf dem Bildschirm ausgeben wollen. (Mehr
darüber im Abschnitt „Text im Graphikmodus".)
Text im Graphikmodus
Die ROM-BIOS-Routinen für die Graphikmodi liefern Dienstprogramme für das
Schreiben von Textzeichen auf dem Bildschirm, analog zu den Textmodi. Der
Grund dafür ist einfach. Wenn das ROM-BIOS schon Dienstprogramme für die Zei-
13.1 Wie die Graphikmodi funktionieren
167
chendarstellung liefert, sollte das für alle Modi gelten. Dafür gibt es noch einen wei­
teren wichtigen Grund. Ein Programm sollte eine Fehlermeldung auf dem Bild­
schirm ausgeben können, falls es in Schwierigkeiten gerät. Mit universellen Text­
ausgabe-Routinen im ROM-BIOS, die in jedem Modus arbeiten, können alle Pro­
gramme solche Meldungen ausgeben.
In den Textmodi schreiben Programme, auch das ROM-BIOS, Meldungen auf den
Bildschirm, indem sie den ASCII-Zeichencode ausgeben, und die Bildschirm­
adapter-Hardware übernimmt die Aufgabe, ein lesbares Zeichen zu produzieren.
Aber in den Graphikmodi können Zeichen auf dem Bildschirm nur erscheinen,
wenn sie wie jedes andere Bild gezeichnet werden.
Das ROM-BIOS erledigt das standardmäßig mit kleinen Zeichenschablonen, die
für jedes darstellbare Zeichen existieren. Deshalb ist eine Tabelle der Zeichenab­
bildungen im Speicherbereich des ROM-BIOS gespeichert. Während einige der
neueren Graphikmodi, z.B. die des Kombinierten Graphik-Adapters ihre eigenen
spezifischen Zeichentabellen erfordern, kann eine Standardtabelle in den meisten
PCs an der Speicherstelle FOOO:FA6E gefunden werden. Diese Tabelle beruht auf
dem acht mal acht Zeichensatzgenerator und wird in den Graphikmodi des Farb­
Graphik-Adapters verwendet.
Die Bits in dieser Tabelle zeigen die Pixelzustände an, gesetzt oder nicht, die für die
Darstellung eines Zeichens benützt werden. In der Standardtabelle repräsentieren
acht Bytes ein Zeichen. Die Bits des ersten Bytes geben die acht Pixelzustände für
die erste Scan-Zeile an usw. In Anhang A finden Sie ein Programm GRAPHTXT, das
diese Tabelle decodiert .und jedes Zeichen in vergrößerter Form ausgibt, so daß wir
untersuchen können, wie ein Zeichen dargestellt wird. Sie können das GRAPHTXT­
Programm mit jedem Bildschirmadapter verwenden, weil es die Bilder mit Zeichen
erstellt; Sie brauchen also für den Einsatz von GRAPHTXT keinen Graphikbild­
schirm, um zu sehen, wie Graphikzeichen erzeugt werden.
Wenn unsere Programme mit den ROM-BIOS-Dienstprogrammen Zeichen in
einem Graphikmodus ausgeben, schaut das ROM-BIOS in dieser Tabelle nach,
wie die Zeichen abgebildet werden, und benützt die Bits dieser Tabelle als Code,
um die entsprechenden Bits im Bildschirmspeicher zu setzen, so daß eine Abbil­
dung des Zeichens auf dem Bildschirm erscheint. Die Technik ist ungefähr die
gleiche, wie sie unser Demonstrationsprogramm GRAPHTXT einsetzt.
Bei der Gestaltung des originalen PC waren in dieser Tabelle nur die ersten 128
ASCII-Zeichen enthalten. Dazu gehörten die wichtigsten Zeichen, besonders die
Buchstaben des Alphabets, aber nicht der gesamte Umfang des PC-Zeichensat­
zes. Abbildungen der oberen 128 Zeichen können durch unsere Programme
erstellt werden, und das ROM-BIOS kann damit arbeiten, vorausgesetzt, daß wir
das BIOS darüber informieren, indem wir die Adresse der Tabelle im lnterruptvek­
tor für Interrupt 31 angeben.
Spielprogramme und andere derartige Programme, die Graphik verwenden, arbei­
ten normalerweise bei der Ausgabe von Textinformationen immer mit den ROM­
BIOS-Dienstprogrammen. Arbeitsintensive Programme, zum Beispiel 1-2-3 oder
Framework, verwenden dagegen in der Regel ihre eigenen Zeichendaten, wenn
168
13 Bildschirm - Teil 3: Graphikgrundlagen
sie in einem Graphikmodus arbeiten, da diese Programme spezielle Anforderun­
gen daran stellen, wie Zeichen erscheinen sollen. Mit ihrer eigenen Zeichenaus­
gabe können sie die Größe, den Typ und Eigenschaften (wie fett oder kursiv) der
Zeichen steuern. Dasselbe gilt für Textverarbeitungsprogramme, die im Graphik­
modus arbeiten können.
Egal, welchen Zugriff ein Programm benützt - selbstgemacht oder über das ROM­
BIOS -, alle Textzeichen, die in einem Graphikmodus ausgegeben werden, werden
Pixel für Pixel softwaremäßig auf dem Bildschirm erzeugt und nicht durch Hard­
ware wie in den Textmodi.
Wir wissen nun das Wichtigste über die Graphikmodi. Im folgenden wollen wir die
verschiedenen Graphikmodi und ihre unterschiedlichen Möglichkeiten betrachten.
13.2
Ein Streifzug durch die Graphikmodi
Es gibt nicht weniger als 11 Graphikmodi, die wir betrachten werden und die wir
schon in der kurzen Zusammenfassung von Kapitel 11 gesehen haben. Zur Erinnerung zeigen wir noch einmal die Tabelle aus Kapitel 11 (die Modusnummern in der
ersten Spalte der Tabelle sind die Nummern, die vom ROM-BIOS zur Identifikation
eines Modus verwendet werden):
Modus
Typ
4
Graphik
Farbe?
4
Breite
320
Beschreibung
Graphik in mittlerer
Auflösung, mit Farbe
5
Graphik
Keine
320
Graphik in mittlerer
Auflösung, ohne Farbe
6
Graphik
2
640
Hochauflösende Graphik,
keine Farbe
8
Graphik
16
160
Geringauflösende Graphik
9
Graphik
16
320
Graphik in mittlerer
Auflösung
10
Graphik
4
640
Hochauflösende Graphik
13
Graphik
16
320
Mittlere Auflösung, hochfarbig
14
Graphik
16
640
Hohe Auflösung, mehr Farben
15
Graphik
Keine
640
Monochrom-Graphik,
350 Zeilen
16
Graphik
64
640
Hohe Auflösung, 350 Zeilen
Herc
Graphik
Keine
720
Monochrom-Graphik, 348 Zeilen
13.2 Ein Streifzug durch die Graphikmodi
169
Dies sind die 11 Hauptmodi für unsere PC-Familie. Es gibt noch andere Modi, z.B.
für besonders hohe Qualität, die von dem sehr teueren und sehr spezialisierten
IBM-Professional-Graphik-Adapter geliefert werden, aber diese 11 sind die wichtig­
sten und vielleicht die einzigen, denen die meisten von uns begegnen werden, da
sie von mehreren verschiedenen Bildschirmadaptern zur Verfügung gestellt wer­
den und wir nur einen oder zwei in einem Computer installieren können.
Wir wollen zunächst prüfen, welche Modi mit welchen Adaptern möglich sind.
Der IBM-Farb-Graphik-Adapter - einer der beiden originalen Bildschirmadapter
für die PC-Familie - liefert uns die ersten drei Graphikmodi mit den Nummern 4 bis
6. Diese Modi werden wir besonders ausführlich behandeln, weil sie am weitesten
verbreitet sind und uns ein Modell für die anderen Modi liefern, die meist nur eine
Variation davon sind, was diese drei zur Verfügung stellen. Diese Modi gelten nicht
ausschließlich für den Farb-Graphik-Adapter, wie wir sehen werden.
Der spezielle eingebaute Bildschirmadapter des PCjr simuliert den Farb-Graphik­
Adapter und liefert somit ebenfalls die ersten drei Graphikmodi. Zusätzlich wurden
noch drei Modi für den PCjr geschaffen, die Modi 8 bis 10. Diese PCjr-Modi werden
von anderen Bildschirmadaptern nicht unterstützt und gelten nur für den PCjr.
Der Kombinierte Graphik-Adapter (EGA) von IBM enthält, wie der PCjr, die drei
CGA-Standard-Graphikmodi sowie seine eigenen Modi mit den Nummern 13 bis
16. Man sollte wissen, daß zwei dieser vier, wie alle anderen Modi, die wir bis jetzt
behandelt haben, mit dem Standard-RGB oder mit Monitoren für Composite­
Videosignale benützt werden. Von den beiden anderen zusätzlichen Modi wird
einer mit dem Monochrom-Bildschirm und der andere mit dem speziellen Kombi­
nierten Farbbildschirm (ECD) verwendet.
Schließlich liefert der Hercules-Adapter einen speziellen Graphikmodus für den
Monochrom-Bildschirm. Während andere Graphik-Adapter, die wir besprochen
haben, mehrere Graphikmodi anbieten, hat der Hercules nur diesen einen. (Er lie­
fert auch den Standard-Monochrom-Textmodus.)
Wir kommen nun zu den besonderen Eigenschaften der verschiedenen Modi.
Der Bildschirmmodus 4 ist ein 4-Farben-Modus mit mittlerer Auflösung. Er verwen­
det ein Pixelgitter, das 320 Punkte breit und 200 Zeilen lang ist. Alle Standard-Gra­
phikmodi haben 200 Zeilen. Die Variation in der Auflösung zeigt sich nur in der
horizontalen Dimension: 160 Punkte in der Breite wird niedrige Auflösung genannt,
320 Punkte ist die mittlere Auflösung, 640 ist hochauflösend. Sie erwarten viel­
leicht, daß es nicht gut funktioniert, wenn man die gleiche vertikale Auflösung mit
drei verschiedenen horizontalen Auflösungen benützt, aber im Großen und Gan­
zen ist das ganz akzeptabel. Technische Beschränkungen förderten die Verwen­
dung einer gemeinsamen vertikalen Dimension von 200 Zeilen.
Da der Bildschirmmodus 4 vier Farben benützt, arbeitet er nur mit einem Teil des
16-farbigen Standard-Farbrepertoires der PC-Familie. Die verfügbaren Farben sind
eine kuriose Kombination aus freier Auswahl und Vorselektion. Eine der vier Far­
ben kann frei aus den 16 Grundfarben gewählt werden. Die anderen drei Farben
sind von IBM vorgegeben, aber wir können aus zwei verschiedenen Sätzen der
170
13 Bildschirm - Teil 3: Graphikgrundlagen
drei Farben auswählen. Ein Satz, als Palette 0 bekannt, enthält die Farben Grün,
Rot und Braun (bzw. Dunkelgelb). Palette 1 hat die Farben Zyano (das ist Blau­
Grün, falls Sie das Wort nicht kennen sollten), Magenta und Weiß. Wir können diese
Paletten nicht mischen oder verändern. Sie sind vordefiniert und von IBM festge­
legt (eine Ausnahme werden wir gleich besprechen). Unsere Programme können
jedoch frei zwischen den Paletten hin- und herwechseln und die andere Farbe frei
besetzen, einschließlich einer der Farben, die im festen Teil der Palette verwendet
werden.
Wenn ein Programm diese vier Farben benützt, spricht es sie durch eine Nummer
an, die Nummern 0 bis 3. 0 selektiert die frei gewählte Farbe, während 1, 2 und 3
Grün, Rot und Braun von Palette 0 oder Zyano, Magenta und Weiß von Palette 1
ansprechen. Man sollte erwähnen, daß diese Selektionen alle relativ sind. Wenn
ein Programm ein Bild mit Farbe 0 ausgibt und dann die Selektion für Farbe 0
ändert, wird alles, was mit 0 gezeichnet wurde, sofort und automatisch auf die neue
Farbe geändert. Dasselbe gilt, wenn wir unsere Palettenauswahl ändern. Dieser
Trick kann für schöne Graphik-Effekte eingesetzt werden. Ein Bild kann man zum
Beispiel erscheinen und verschwinden lassen, indem man seine Farbe ändert, um
einen Kontrast zum Hintergrund oder die gleiche Farbe wie der Hintergrund zu
erhalten. Oder wir können den Bildschirm so erscheinen lassen, als würde er heftig
geschüttelt, indem wir schnell zwischen den Paletten hin- und herwechseln.
Sie finden eine Demonstration dessen, was mit Farbe im Bildschirmmodus 4
gemacht werden kann, im Programm COLOR-4, das in Anhang A aufgelistet ist.
(Um COLOR-4 verwenden oder mit dem hier vorgestellten Beispiel experimentie­
ren zu können, müssen Sie natürlich einen Computer haben, der für Farb-Graphik
ausgerüstet ist.)
Eine schnellere Einführung in die Farbmöglichkeiten von Bildschirmmodus 4
erhalten Sie mit den folgenden BASIC-Anweisungen: SCREEN 1 bringt Sie in Bild­
schirmmodus 4. COLOR, 0 wählt die vordefinierte Palette 0 aus, während COLOR, 1
die Palette 1 selektiert. Die folgenden Anweisungen demonstrieren, was geschieht,
wenn wir die eine frei wählbare Farbe ändern:
10 FOR CHOICE
=
0 TO 15
20
COLOR CHOICE
30
PRINT "Dies ist Farbnummer"; CHOICE
40 NEXT CHOICE
Die Farbpaletten, über die wir gesprochen haben, sind vordefiniert. Zwei unserer
Bildschirmadapter, der des PCjr und der Kombinierte Graphik-Adapter, können
jedoch die Farbauswahl neu einteilen. Wenn in diesem Fall ein Programm eine
bestimmte Farbe verlangt - zum Beispiel Rot-, könnte eine andere Farbe erschei­
nen, zum Beispiel Blau. Das wird über ein Hardware-Register erledigt, das uns
erlaubt, die Bedeutung der Nummern neu zu definieren, die für die Identifizierung
der Farben eingesetzt werden. Wenn wir das können, können wir die vier Farben
frei wählen, die in diesem Bildschirmmodus 4 verwendet werden. Statt an die zwei
Standardpaletten gebunden zu sein, können wir die Farbnummern neu einteilen,
so daß uns die Standardpaletten jede gewünschte Farbe liefern. Dieser Trick funk-
13.2 Ein Streifzug durch die Graphikmodie
171
tioniert jedoch nur mit diesen zwei speziellen Bildschirmadaptern. Er trifft nicht auf
den standardgemäßen Farb-Graphik-Adapter oder irgendeinen äquivalenten
Adapter (z.B. den Compaq-Adapter) zu.
Modus 4 hat 200 Zeilen mit je 320 Punkten bzw. insgesamt 64.000 Pixels. Bei vier
Farbmöglichkeiten pro Pixel brauchen wir zwei Speicherbits, um die vier mögli­
chen Farben zu speichern. Damit benötigt dieser Bildschirmmodus 128.000 Spei­
cherbits bzw. 16.000 Bytes. Da der Bildschirmspeicher des Farb-Graphik-Adapters
16K Speicher liefert, gibt es genug Speicherplatz für diesen Modus. (In Abschnitt
13.3 werden wir sehen, wie dieser Speicher benützt wird.)
Die meisten Punkte, die wir bei Modus 4 besprochen haben, treffen auch auf die
anderen Modi zu, und wir wissen deshalb bereits das Wichtigste über die Stan­
dard-Graphikmodi.
Modus 5 ist eine spezielle farbunterdrückende Version von Modus 4. Er arbeitet wie
die zwei farbunterdrückenden Textmodi (Modus 0 und 2). Modus 5 ist in seiner
Arbeitsweise identisch mit Modus 4, aber das Signal, das aus dem Composite­
Bildschirmstecker kommt, enthält kein Farbsignal und die vier Farben erscheinen
somit mehr oder weniger als vier Grauschattierungen. Dies trifft jedoch nur auf den
Composite-Bildschirmstecker zu. Die Signale, die aus dem RGB-Anschluß des
Bildschirmadapters kommen, sind so farbig wie immer. Da dieser Modus analog
zu Modus 4 organisiert ist, hat er den gleichen Speicherbedarf.
Modus 6 ist ein hochauflösender 2-Farben-Modus. Als hochauflösender Modus
hat er 640 Pixel in der Breite (und ist standardgemäß 200 Zeilen lang). Zwei Far­
ben sind in Modus 6 verfügbar. Sie sind vordefiniert und festgelegt als die Farben
Schwarz und Weiß. Man kann natürlich darüber diskutieren, ob wir das als Farb­
Modus bezeichnen sollen. Im technischen Sinn hat dieser Modus jedenfalls Far­
ben. Es stehen zwei zur Auswahl (genau wie Modus 4 vier Farben zur Auswahl hat)
und sie gehören zu den 16 Standard-Farben des PC. Andererseits werden die mei­
sten von uns sagen, daß Schwarz und Weiß „Schwarz-Weiß" ist und keine Auswahl
aus zwei Farben. Nennen Sie es, wie Sie wollen, solange Sie verstehen, was uns
dieser Bildschirmmodus liefert: die zweifache Auflösung und die Hälfte der Farben
von Modus 4.
Die Farben Schwarz und Weiß aus Modus 6 können neu eingeteilt werden, wie bei
den Farben von Modus 4, wenn wir einen PCjr oder einen Kombinierten Graphik­
Adapter benützen. Diese Neueinteilung erhöht nicht die Anzahl der Farben, die
gleichzeitig ausgegeben werden können. Sie ist bei Modus 6 auf nur zwei Farben
festgelegt. Damit ist die Verwendung „wirklicher Farben" anstelle des farblosen
Schwarz und Weiß möglich.
Modus 6 hat doppelt soviele Pixel wie Modus 4, 640 mal 200, also insgesamt
128.000. Aber da nur halb soviele Farbauswahlmöglichkeiten gespeichert werden
müssen, genügt nur ein Bit für jedes Pixel. So ist der gesamte Speicherbedarf für
diesen Modus derselbe wie für die Modi 4 und 5, nämlich 16K.
Diese Modi, 4 bis 6, sind die wichtigsten, gemeinsamen Graphikmodi für die PC­
Familie, weil sie auf jeden Standard-Graphik-Bildschirmadapter (außer auf den
Hercules-Adapter) zutreffen. Im allgemeinen finden wir Modus 4 bei relativ einfa-
172
13 Bildschirm - Teil 3: Graphikgrundlagen
chen Programmen, wie zum Beispiel Spiele und Lernprogramme, während Modus
6 von komplexeren Programmen für berufliche Anwendungen, wie 1-2-3, benützt
wird. Spiele verwenden Modus 4, um mehr Farbe zu bekommen, und opfern dabei
eine detailliertere Bildauflösung. Programme für berufliche Anwendungen benüt­
zen Modus 6, um eine hohe Auflösung zu erhalten, und verzichten auf Farbe. Diese
Modi verlangen einen Kompromiß, im Unterschied zu einigen der weiterentwickel­
ten Graphikmodi, die wir im folgenden betrachten.
Die nächsten drei Modi, 8 bis 10, gelten speziell für den PCjr und sie liefern ein
paar naheliegende Erweiterungen zum Grundumfang der Graphikmodi, wobei sie
deren offensichtliche Mängel weitgehend beseitigen.
Modus 8 ist ein16-Farben-Modus mit niedriger Auflösung. Er ist eine Brücke von
Modus 4, in die entgegengesetzte Richtung von Modus 6. In diesem Modus mit
niedriger Auflösung gibt es nur160 Pixel pro Zeile, halb soviel wie bei den Modi mit
mittlerer Auflösung. Es gibt mehr Farben, als Sie vielleicht erwarten, aber nicht
doppelt soviele, sondern viermal soviele, nämlich 16 Farben, also der gesamte
Farbbereich des PC.
Weil Modus 8 alle16 Farben auf einmal verwenden kann, gibt es hier keine ärgerli­
chen Beschränkungen. Da der PCjr Farben neu einteilen kann, können die Farben
gewechselt und manipuliert werden. In Modus 4 mit einer begrenzten Auswahl von
Farben, besteht ein guter Grund, diese Möglichkeit einzusetzen und damit die Aus­
wahl der verfügbaren Farben zu vergrößern. Aber in diesem Modus (und dem fol­
genden Modus 9) bringt die Neueinteilung der Farben kaum Vorteile. Man kann sie
für spezielle Effekte verwenden, zum Beispiel wenn man Teile eines Bildes erschei­
nen und verschwinden lassen will (indem man gleichfarbigen Hintergrund ein­
blendet).
Obwohl dieser Modus mehr Farben liefert als irgendeiner der bereits erwähnten
Modi, ist die Bildqualität bei diesem niederauflösenden Modus so ärmlich, daß es
wenige Anwendungen dafür gibt. Wenn Sie einen PCjr haben, können Sie mit dem
BASIC-Kommando SCREEN 3 selbst die unzureichende Auflösung sehen.
Dieser Modus benützt genauso viel Speicher wie Modus 4, 16K, weil er nur halb
soviele Pixel hat - 160 mal 200, insgesamt 32.000 - und vier Bits (doppelt soviel)
benötigt, um die Farben für jedes Pixel zu spezifizieren. Die vier Bits pro Pixel lie­
fern 16 Werte für die Farbauswahl. Hier bekommen wir die vierfache Farbauswahl
bei nur doppelt soviel Speicher. Das wäre ein wirklicher Pluspunkt, wenn dieser
Bildschirmmodus nützlicher wäre.
Modus 9 ist der zweite unserer speziellen PCjr-Modi. Er hat eine mittlere Auflösung,
bietet aber die gesamten 16 Farben. Dieser Modus bricht aus der 16K-Speicher­
form aus, mit Hilfe einiger spezieller Tricks, mit denen der PCjr seinen Bildschirm­
speicher verwaltet. Dies ist einer der günstigsten Graphikmodi, weil er mittlere Auf­
lösung, 320 Punkte breit, mit dem gesamten PC-Farbumfang kombiniert. Für die­
sen Modus werden 32K Bildschirmspeicher benötigt, und jedes Programm, das in
diesem Modus arbeitet, muß wissen, wie einige spezielle jr-spezifische Tricks aus­
geführt werden, um soviel Bildschirmspeicher zu reservieren. In BASIC erreichen
wir dies mit der Anweisung CLEAR„,32768, um den Speicher bereitzustellen, und
dann mit SCREEN 5, um in diesen Bildschirmmodus zu gelangen.
13.2 Ein Streifzug durch die Graphikmodi
173
Modus 10 ist der dritte und letzte der jr-spezifischen Modi. Er ist eine Variation von
Modus 9. Modus 10 ist ein hochauflösender Modus mit vier Farben. Dieser Modus
benötigt 32K Speicher wie Modus 9, doppelt soviel wie die 16K der Standard-Gra­
phik. BASIC schaltet auf diesen Modus mit der Anweisung SCREEN 6 nach
CLEAR„,32768 für die Reservierung von ausreichend Speicher. Im Gegensatz zu
Modus 8, ist dieser, wie Modus 9, wegen der Kombination von hoher Auflösung
und vier Farben ein sehr leistungsfähiger und nützlicher Graphikmodus. Die vier
Farben sind die gleichen wie Palette 1 von Modus 4. Die erste Farbe ist frei wählbar,
und die anderen Farben sind auf Zyane, Magenta und Weiß gesetzt. Aber da es
sich um einen PCjr-Modus handelt, kann die Palette mit beliebigen Farben belegt
werden.
Die nächsten Graphikmodi betreffen den Kombinierten Graphik-Adapter. Sie bieten
eine Vielzahl spezieller Graphikmöglichkeiten, die fast alles überbieten, was in den
anderen Spezialadaptern zur Verfügung steht.
Modus 13 ist ein 16-Farben-Modus mit mittlerer Auflösung. Er gleicht im wesentli­
chen Modus 9 des PCjr. Wie Modus 9 verlangt er 32K Bildschirmspeicher. (BASIC
unterstützt diesen Modus oder andere EGA-Modi nicht, so daß sich diese Modi
nicht ohne weiteres demonstrieren lassen, sogar auf einem Computer, der für sie
ausgerüstet ist.) Die Farben können neu eingeteilt werden, wie wir es beim PCjr
oder dem EGA gewöhnt sind. Wenn dieser oder ein anderer EGA-Modus mit dem
speziellen Kombinierten Farbbildschirm des EGA verwendet wird, können die
Farben dieses Modus zusätzlich nicht nur in den 16 Farben umfassenden Basisbe­
reich eingeteilt werden, sondern auch in den erweiterten 64-Farben-Satz des ECD.
Modus 14 ist ein hochauflösender 16-Farben-Modus. Er gleicht Modus 10 des PCjr,
bietet aber alle sechzehn Farben, nicht nur vier. Das erfordert 64K Bildschirmspei­
cher.
Alle Graphikmodi, die wir bis jetzt gesehen haben, sind für die Standard-Farb-Gra­
phik-Bildschirme gedacht, die in der PC-Familie benützt werden. Dies sind RGB­
Monitore, Farbbildschirme für Composite-Videosignale, Fernseher usw. Der
nächste spezielle EGA-Modus ist nur für den Monochrom-Bildschirm gedacht, der
normalerweise mit dem Monochrom-Adapter verwendet wird. Das ist Modus 15,
die IBM-Version eines Monochrom-Graphikmodus. Er hat ein Pixelraster von 640
Spalten in der Breite und 350 Zeilen in der Länge. Die gesamte Anzahl der Zeilen
korrespondiert mit der Gesamtzahl der Scan-Zeilen des normalen Monochrom­
Modus, wo es 25 Zeichenzeilen gibt und jedes Zeichen mit 14 Scan-Zeilen darge­
stellt wird. 14 mal 25 ergibt 350, die Anzahl der Graphikzeilen in diesem Modus. Es
gibt eine Besonderheit bei diesem Modus. Durch ein spezielles Verfahren erlaubt
er Blinken. Jedes Pixel in diesem Modus hat vier mögliche Attribute: Aus
(Schwarz), An, Blinkend und Hell. Der Hauptgrund für diese ungewöhnliche Kom­
bination von Pixelattributen ist, daß damit dieser monochrome Graphikmodus die
Eigenschaften des monochromen Standard-Textmodus abbilden kann (inklusive
Blinken und helle hochintensive Eigenschaften) und gleichzeitig neue Graphik­
Möglichkeiten besitzt. Da es vier mögliche Attribute für jeden Punkt auf dem Bild­
schirm gibt, beträgt der Speicherbedarf zwei Bits für jedes Pixel, insgesamt
448.000 Bits oder 56.000 Bytes.
174
13 Bildschirm - Teil 3: Graphikgrundlagen
Der nächste Modus und zugleich der letzte der speziellen EGA-Modi verlangt
ebenfalls einen besonderen Bildschirm und zwar den Kombinierten Farbbild­
schirm, der insgesamt 64 verschiedene Farben zeigen kann, viermal soviel wie die
16 Standardfarben des PC. Dieser Modus 16 hat die gleiche besonders hohe Auf­
lösung wie Modus 15, 640 breit und 350 lang. Jedes Pixel kann auf eine der 64
Farben gesetzt werden, was sechs Bits pro Pixel erfordert bzw. 1.344.000 Bits oder
168.000 Bytes Bildschirmspeicher. Das ist eine ganze Menge Speicher! Aber wenn
wir sämtliche Farben verwenden möchten, muß dieser Preis bezahlt werden.
Zuletzt wollen wir noch den Bildschirmmodus des weit verbreiteten Hercules-Gra­
phik-Adapters betrachten, der nicht von IBM stammt. Der Hercules-Adapter
machte als erster Graphik für den Monochrom-Bildschirm möglich, indem er einen
ähnlichen Modus anbot, den der EGA später mit seinem Modus 15 zur Verfügung
stellte. Es gibt keine IBM-Modusnummer für diesen Modus, weil er nicht von IBM
unterstützt wird. Für ldentifizierungszwecke nennen wir ihn einfach den Herc­
Modus. Obwohl dieser Modus dem Modus 15 des EGA ähnelt, sind die Details ver­
schieden. Er hat horizontal eine etwas höhere Auflösung, 720 Pixel, nicht 640. Ver­
tikal hat er zwei Zeilen weniger, nämlich 348 statt 350. Die Zahl 348 ist seltsam,
weil derselbe Adapter 350 Scan-Zeilen liefern muß, wenn er im monochromen
Textmodus arbeitet, aber so ist es eben. Dieser Bildschirmmodus benötigt
250.560 Bits (eines für jedes Pixel) bzw. 31.320 Bytes. Das liegt etwas unter den
32K. Sie werden feststellen, daß der Herc-Modus eine schöne, klare Monochrom­
Graphik bietet, die keine besonderen Eigenschaften des Monochrom-Textmodus
beinhaltet (das bedeutet, daß er weder helle Intensität noch Blinken als „Farbe"
hat). Im Gegensatz dazu hat der monochrome Graphik-Modus mit der Nummer 15,
der von der IBM-EGA-Karte geliefert wird, diese beiden speziellen Eigenschaften.
Damit sind wir am Ende unserer 11 Hauptgraphikmodi. Im folgenden Abschnitt
besprechen wir noch ein paar Details, wie die Graphikmodi ihren Speicher verwen­
den.
13.3
Graphik-Details
Das Verfahren, mit dem die Graphikmodi ihren Bildschirmspeicher verwenden, ist
wesentlich komplizierter als bei den Textmodi.
Das Design des Bildschirmspeichers für die Graphikmodi gleicht im wesentlichen
dem, was wir bei den Textmodi-Layouts gelernt haben, aber es kommen noch ei­
nige neue Schwierigkeiten hinzu, die den Arbeitsumfang beträchtlich vergrößern,
den ein Programm erledigen muß, um Daten im Bildschirmspeicher zu plazieren.
Während in den Textmodi die Bildschirmdaten in einem zusammenhängenden
Block angelegt sind, besteht bei den Graphikmodi die Hauptschwierigkeit darin,
daß die Daten in entweder zwei oder vier sich überlappenden Blöcken unterteilt
sind.
13.3 Graphik-Details
Ungerade Bank
Gerade Bank
0
1
•• • • • • • • •
• • • • • • • • • • • • • „„.
• •• •• •• •
2
•••
3
4
. ••••••
••••••••
:
Abb. 13-1:
•••••••
••••••••••
0
1
:::::::: 2
•• •
5
197
198
199
175
3
4
5
: 19 7
198
199
••••••••• ••••
• • • • • • ••• • • •
••••••••
••••••••
Graphik-Speicherblöcke
In Bildschirmmodus 4, dem 4-Farben-Modus mit mittlerer Auflösung, sind zum
Beispiel die 200 Pixelzeilen in zwei Blöcke unterteilt, die aus den geraden und un­
geraden Zeilennummern bestehen. Der erste Block enthält die Daten für Zeile
Nummer 0 (die erste Zeile), gefolgt von den Zeilen 2, 4 usw. bis Zeile 198, die letzte
der geradzahlig numerierten Zeilen. Ein separater Speicherblock enthält die unge­
radzahlig numerierten Zeilen, 1, 3, 5 usw. bis zur letzten Zeile, Nummer 199. Abbil­
dung 13-1 zeigt, wie das organisiert ist.
Es gibt zwei Variationen zu dieser blockverarbeitenden Operation. Eine unterteilt
die horizontalen Zeilen der Graphikpixel in zwei Blöcke und die andere in vier
Blöcke. Die originalen drei Graphikmodi 4 bis 6 arbeiten mit zwei Blöcken, auch
der Bildschirmmodus 8 des PCjr. Die anderen zwei PCjr-Modi mit den Nummern 9
und 10 und der Hercules-Modus unterteilen ihre Zeilen in vier Blöcke. Abbildung
13-2 zeigt, wie sich die Zeilen in den Blöcken überlappen.
Innerhalb eines Blocks sind die Graphikdaten sehr kompakt angelegt, so wie bei
den Textmodi. Die Daten der ersten Zeile in einem Block stehen in aufeinanderfol�
genden Bytes vom Anfang des Blocks an, und die zweite Zeile in einem Block folgt
lückenlos direkt nach der ersten. Es gibt jedoch eine kleine Lücke zwischen den
Blöcken, wie zwischen den verschiedenen Bildschirmseiten in den Textmodi.
Jeder Block beansprucht etwas weniger als 8K Speicher und jeder Block beginnt
auf einer geraden 8K-Adreßgrenze, mit einem kleinen unbenützten Restbereich
zwischen den Blöcken.
Modi mit zwei Bloecken:
Block 0: 0,
6,
8,
2,
4,
9,
3,
1,
Block 1:
7,
5,
...
Modi mit vier Bloecken:
0,
8,
Block 0:
4,
9,
Block 1:
1,
5,
2,
6,
Block 2:
3,
Block 3:
7,
•••
...
...
Abb. 13-2:
Blockzeilenüberlappung
• • •
176
13 Bildschirm - Teil 3: Graphikgrundlagen
Diese Organisation der Graphikdaten in Blöcken erfolgt im wesentlichen aus Hard­
ware-Gründen. Da die Ausgabe eines Bildschirms in zwei Durchgängen erfolgt,
wobei sich die Zeilen eines Durchgangs überlappen, wird der Graphikspeicher so
angelegt, daß die Graphikdaten derart aus dem Speicher geholt werden können,
wie sie vom Bildschirm benötigt werden. Das reduziert die Verwaltungsarbeiten bei
der Ausgabe eines Graphikbildes auf dem Bildschirm.
Allerdings erhöht sich dadurch die Arbeit unserer Software zur Erzeugung eines
Graphikbildes, weil die Adreßberechnungen für die Positionierung eines Pixels
komplizierter sind. Der Unterschied ist nicht enorm. Schließlich muß Arithmetik
ausgeführt werden, um die Position zu berechnen, ob die Zeilen nun aufeinander­
folgen (wie in den Textmodi) oder in Blöcken unterteilt sind (wie in den Graphik­
modi). Diese Blockaufteilung erhöht jedoch den Umfang der Berechnungen, die
angestellt werden müssen, um mit dem Graphik-Bildschirmspeicher arbeiten zu
können.
Obwohl die Gestaltung des Graphik-Bildschirmspeichers für alle Modi im
wesentlichen gleich ist, die wir besprochen haben (Modi 4-6, 8-10 und der Herc­
Modus) und sich nur darin unterscheidet, ob es zwei oder vier Blöcke für sich
überlappende Zeilen gibt, ist die Zusammensetzung der Pixeldaten innerhalb der
Zeilen zwischen den Modi schon unterschiedlicher. Die verschiedenen Modi brau­
chen nämlich verschieden große Datenmengen für ein Pixel. Außerdem gibt es
noch eine besondere Schwierigkeit bei einem der PCjr-Modi, wie wir bald sehen
werden.
Bei den 2-farbigen Modi, Modus 6 und der Herc-Modus, gibt es nur ein Bit für
jeden Pixelpunkt. Das Datenschema ist in diesem Fall erwartungsgemäß einfach.
Jedes nachfolgende Byte im Bildschirmspeicher enthält die Daten für acht Pixel.
Das vorderste Bit des Bytes (Bit Nummer 7) ist für das erste Pixel usw. Bei den 4farbigen Standardmodi, Modi 4 und 5, gibt es zwei Bits pro Pixel. Naheliegender­
weise enthält jedes Byte die gesamten Daten für vier Pixel, wobei die Bits paar­
weise angeordnet sind. Die ersten zwei Bits eines Bytes, Bits 7 und 6, enthalten die
Daten für den ersten der vier Pixel usw.
Beim anderen 4-Farben-Modus, dem Modus 10 des PCjr, sind die Bits jedoch ganz
anders codiert. Hier wird der Bildschirmspeicher in Bytepaaren verwendet, wobei
ein Paar die Bits für acht Pixel zusammen liefert. Das erste der acht Pixel bekommt
seine Datenbits jeweils von den beiden vordersten Bits in den zwei Bytes. Das
nächste Pixel erhält seine beiden Bits vom jeweils nächsten Bit aus den beiden
Bytes usw. Dieses seltsame Schema wurde so gestaltet, damit die langsame
Arbeitsgeschwindigkeit des PCjr mit dem schnellen Datenbedarf dieses Modus
mithalten kann. Es funktioniert, weil der PCjr zwei Speicherschaltungen hat, die ein
weiteres Speicherbyte unterstützen. Durch das Zugreifen und Decodieren von
Daten in Bytepaaren kann der Speicher des PCjr doppelt so schnell arbeiten.
Die 16-Farben-Modi, die PCjr-Modi Nummer 8 und 9, benützen schließlich 4 Bits
pro Pixel. Bei diesem Modi enthält jedes Bildschirmspeicherbyte zwei Pixel. Die
vier vordersten Bits liefern die Daten für das erste der zwei Pixel, und die hinteren
Bits sorgen für das andere Pixel.
13.3 Graphik-Details
177
Wenn unsere Software ein Bild malen will, muß sie nicht nur die Speicheradressen
der Daten berechnen, sondern auch sorgfältig die entsprechenden Bits setzen und
die anderen Bits unverändert lassen. Falls das Programm ein ganzes Bild ausgibt,
kann es die Pixeldaten in Gruppen von 2 oder 4 oder 8 Pixel auf einmal zusam­
menfassen und zusammen positionieren, was eine relativ schnelle Operation ist.
Aber wenn das Programm die Pixel unabhängig steuert, dann müssen die Daten
für die Pixel, die ein Byte miteinander teilen, mit den Bit-manipulierenden Opera­
tionen des Mikroprozessors, den Unds, Oders, Schiebeoperationen usw., verwaltet
werden. Wenn viele Bits gesetzt werden, kann der Vorgang ziemlich lang dauern
und das ist einer der Hauptgründe, warum Graphik-orientierte Programme im Ver­
gleich zu Text-orientierten Programmen langsam laufen. Das eingebaute ROM­
BIOS des PC stellt Dienstprogramme für die Manipulation von einzelnen Pixel zur
Verfügung, aber das beschleunigt die Operation in keiner Weise. Es erspart den
Programmierern nur die Arbeit, diese Dienstprogramme selbst zu entwickeln.
Es ist relativ leicht, die bisher besprochenen Graphikmodi zu programmieren.
Ganz anders ist das aber bei den speziellen Modi des Kombinierten Graphik­
Adapters, die so kompliziert sind, daß man für ihre Erläuterung mindestens meh­
rere Kapitel aufwenden müßte. So kompliziert und verdreht sind die EGA-Modi! Wir
wollen hier nur zusammenfassen, was diese Modi so abartig macht.
Zunächst brauchen die speziellen EGA-Modi soviel Speicherplatz, daß der ent­
sprechende Teil des PC-Adreßraumes nicht mehr ausreicht. (Der verfügbare Teil ist
der 64K große A-Block des Speichers. Obwohl insgesamt 128K in zwei Speicher­
blöcken für den Bildschirmspeicher reserviert sind, könnte der B-Block von einem
anderen Bildschirmadapter verwendet werden. So muß der EGA für seine speziel­
len Modi mit den 64K des A-Blocks auskommen.)
Das bedeutet, daß der aktive Bildschirmspeicher je nach Bedarf in und aus dem
Adreßraum geschaltet werden muß. Während der normale PC-Speicher und der
konventionelle Bildschirmspeicher in seiner Adressierungsart fest ist, erscheint
und verschwindet der Speicher des EGA im Adreßraum, so daß der Mikroprozes­
sor und unsere Programme auf seine sämtlichen Informationen zugreifen können,
obwohl das viel mehr sind, als in den für diesen Zweck bestimmten Adreßraum auf
einmal passen.
Das Ganze wird noch komplizierter, weil der EGA mit verschiedenen Speichermen­
gen installiert werden kann, im Gegensatz zu den anderen Bildschirmadaptern, die
mit einem festen Speicherumfang geliefert werden, mit genau der Menge, die sie
benötigen und nicht mehr. Dagegen ist der EGA so vielseitig, daß es keinen spe­
ziellen Speicherumfang für ihn gibt. Aber je nach Speicherumfang, der in einem
EGA installiert ist, ändern sich nicht nur die Modi, die er verwenden kann, oder die
Anzahl der Bildschirmseiten, die in diesen Modi verfügbar sind; es ändern sich
auch der Umfang des benützten Speichers und die Art, wie er adressiert wird.
Die Schaltung des EGA macht beachtliche Kunststücke mit dessen Speicher, weil
sie die Arbeitsweise der Karte, den installierten Speicherumfang und die verwen­
deten Bildschirmmodi aufeinander abstimmen muß und den Speicher im Adreß-
178
13 Bildschirm - Teil 3: Graphikgrundlagen
raum je nach Situation entsprechend erscheinen und verschwinden läßt. Alle Pro­
gramme, die mit dem EGA in diesen zusätzlichen Bildschirmmodi arbeiten, müs­
sen einen Tanz aufführen, um sich den Eigenheiten des EGA anzupassen und um
dem EGA Kommandos zu geben, die die Speicheradressierung steuern.
Wenn Sie begriffen haben, daß es für ein Programm, das bloß die Standard-Gra­
phikmodi verwendet, schon kompliziert ist, die zwei (oder vier) Zeilenblöcke der
Graphikdaten richtig zu adressieren, können Sie sich vorstellen, um wieviel kompli­
zierter die Zusammenarbeit mit dem EGA ist.
1.
Experimentieren Sie mit dem GRAPHTXT-Programm aus Anhang A. Das Programm endet
mit Zeichencode 127. Was passiert, wenn wir weitergehen würden? Dieses Programm setzt
voraus, daß die Tabelle, die es zeigt, an einer bestimmten Speicherstelle (FOOO:FA6E) ist.
Können Sie sich einen vernünftigen Weg vorstellen, eine derartige Tabelle zu finden, wenn
wir danach suchen müßten?
2.
Wenn Sie ehrgeiziger sind, sollten Sie GRAPHTXT als Ausgangspunkt verwenden und ein
Programm schreiben, daß Ihnen erlaubt, ihre eigenen Zeichenbilder in großem Umfang zu
erzeugen.
3.
Stellen Sie sich vor, daß Sie Vorgaben an die Hardware-Ingenieure des PC liefern sollen und
den Farb-Graphikmodi einen Cursor und die Blinkeigenschaft hinzufügen wollen. Wie
würde das bei Ihnen funktionieren? Können Sie die Gründe herausfinden, warum die Gra­
phikmodi kein Blinken oder keinen Cursor haben? Können Sie sich Wege ausdenken, um
diese Probleme zu lösen?
179
14
Tricks mit der Tastatur
Im Anschluß an die Besprechung der Bildschirme der PC-Familie ist unser näch­
stes Thema die Tastatur, unsere andere Schnittstelle zum Computer. Meistens
arbeiten wir über die Tastatur und den Bildschirm mit unserem Computer zusam­
men, so daß wir das Innen- und Außenleben der Tastatur kennen sollten.
Es sollte uns in den letzten drei Kapiteln klar geworden sein, daß der Bildschirm ein
sehr komplexes T hema ist. Dagegen ist die Tastatur unseres Computers ver­
gleichsweise einfach. Unter der Oberfläche ist die Tastatur jedoch wesentlich kom­
plexer, als Sie vielleicht denken.
Den Grund dafür erfahren Sie in diesem Kapitel, und Sie werden dann verstehen,
wie flexibel Programme mit der Tastatur umgehen können.
14.1
Die Funktionsweise der Tastatur
Wenn wir die Tastatur unseres Computers verstehen wollen, müssen wir zwei wich­
tige Dinge begreifen. Erstens, daß sie nicht das ist, was sie zu sein scheint, und
zweitens, daß die Tastaturinformationen mehrfach umgewandelt werden, bis sie in
der gewünschten Form auf dem Bidschirm auftauchen.
Das gelingt mit Hilfe einiger Tricks. Zunächst wollen wir erklären, warum die Tasta­
tur so indirekt arbeitet, und anschließend werden wir uns mit ihrer Arbeitsweise ge­
nauer befassen.
Wir erwarten von der Tastatur ein'e sehr simple Arbeitsweise. Wir drücken Taste A,
und die Tastatur sagt zum Computer „A" und sonst nichts. Sie funktioniert jedoch
nicht so. Der Grund ist ganz einfach. Wenn die Tastatur die Aufgabe hätte, der
Taste A die Bedeutung des Buchstabens „A" zu geben, dann wäre die Tastatur
dauernd damit beschäftigt, unseren Aktivitäten auf der Tastatur eine Bedeutung
zuzuweisen. Zweierlei ist daran falsch. Zum einen ist es nicht die Aufgabe der
Computerhardware unsere Aktivitäten gemäß ihrer Bedeutung zu interpretieren.
Hardware ist nichts anderes als eine leere Tafel, auf die man etwas schreiben kann.
Erst die Software soll Leben in die Hardware des Computers bringen, indem sie
Aktivitäten eine Bedeutung beimißt. Wir dürfen also nicht glauben, daß für die
Tastatur A die Bedeutung des Buchstaben „A" hat und die Hardware eine Arbeit
erledigt, die zum Aufgabenbereich der Software gehört.
Wenn die Tastatur der Taste A die Bedeutung des Buchstabens „A" gäbe, wäre der
zweite Fehler der, daß die Tastatur damit zu unflexibel würde. Wir können es viel­
leicht nicht gleich verstehen, daß die Taste A irgendetwas anderes als A bedeuten
können sollte, aber ein Computer sollte möglichst flexibel und anpassungsfähig
sein. Und deshalb legt die Hardware unseres Computers für unsere Tastaturaktio­
nen keine Bedeutung fest.
Das ist der Hintergrund für die etwas seltsame Beziehung zwischen der Tastatur
und unserem Computer (bzw. seinen eingebauten ROM-BIOS-Programmen).
180
14 Tr;clra m;t der Tastator
Im folgenden beschreiben wir, was geschieht, wenn man eine Taste auf der Tastatur unseres Computers drückt. Die Tastatur merkt, daß wir eine Taste gedrückt
haben und notiert sie sich. (Jede Taste hat eine ldentifizierungsnummer, die Scan­
Code genannt wird, und diese notiert sich die Tastatur. In Abbildung 14-1 sehen Sie
die Scan-Code-Nummern für die Standardtastatur des
„
PC.)
F1 lF2
F3 B
F6
F7
F1�
F8
F8
F9
Abb. 14-1:
Die Tasten und Scan-Codes der Tastatur
Nachdem die Tastatur die Tatsache zur Kenntnis genommen hat, daß wir eine Taste
gedrückt haben, teilt sie dem Computer mit, daß etwas passiert ist. Sie sagt jedoch
nicht was, sie sagt nur, daß etwas auf der Tastatur geschehen ist. Dafür gibt es
einen Hardware-Interrupt. Die Tastaturschaltung sendet dem Mikroprozessor einen
Interrupt, und verwendet dabei die spezielle lnterruptnummer für die Tastatur. Es ist
die lnterruptnummer 9. Diese lnterruptnummer teilt dem Computer einfach mit, daß
sich auf der Tastatur etwas getan hat. Wte wir in Kapitel 6 gelernt haben, veranlas­
sen Interrupts, daß der Mikroprozessor seine momentane Arbeit unterbricht und in
ein Interrupt-Verwaltungsprogramm springt. In diesem Fall gehört dieses Pro­
gramm zur ROM-BIOS-Software.
An diesem Punkt beginnt der Tastatur-Interrupt-Verwalter des ROM-BIOS mit sei­
ner Arbeit und findet heraus, was auf der Tastatur passiert ist, indem er ein Kom­
mando zur Tastatur sendet, das berichten soll, was geschehen ist. Die Tastatur ant­
wortet und teilt dem ROM-BIOS mit, welche Taste gedrückt wurde. (Das Kom­
mando und die Antwort laufen über die E/A-Kanäle des
PC, die wir ebenfalls in
Kapitel 6 besprochen haben. Das ROM-BIOS gibt seine Kommandos, indem es
einen Kommandocode zu einer E/A�Kanal-Adresse sendet, auf den die Tastatur
antwortet. Die Tastatur antwortet mit dem Scan-Code der Taste oder sendet eine
andere E/A-Kanal-Adresse, die das ROM-BIOS liest.) Wtr werden gleich sehen, was
das ROM-BIOS mit dieser Information macht, aber zuerst müssen wir noch zu
Ende besprechen, was in der Tastatur selbst stattfindet.
Die Tastatur muß natürlich aufzeichnen, welche Taste gedrückt wurde, und warten,
bis das ROM-BIOS danach verlangt. (Sie muß nicht lange warten, normalerweise
etwa eine zehntausendste! Sekunde. Aber für die Computerhardware ist das eine
Wartezeit.) Dafür hat die Tastatur einen kleinen Speicher, und dieser Speicher ist
groß genug, um 20 Tastaturaktionen festzuhalten, für den Fall, daß der Mikropro-
1
l
14.1
Die Grundfunktion der Tastatur
181
zessor nicht gleich auf die Tastatur-Interrupts antwortet und mehrere Tasten
gedrückt werden. Das kommt selten vor, aber die Tastatur läßt es immerhin zu.
Nachdem die Tastatur die Details über eine Tastaturaktion berichtet hat, wird der
entsprechende Scan-Code aus dem speziellen kleinen Speicher der Tastatur eli­
miniert und Platz für neue Scan-Codes gemacht.
zweierlei sollten wir noch über die Tastatur wissen. Die erste Sache ist sehr kritisch.
Die Tastatur bemerkt nicht nur, wenn wir eine Taste drücken, sie merkt auch, wenn
wir die Taste wieder auslassen. Sowohl das Drücken als auch das Auslassen einer
Taste wird von der Tastatur bemerkt, und jede separate Tastenbetätigung wird von
ihr festgehalten, in einen Interrupt verwandelt und dem ROM-BIOS auf Kommando
zugesandt. Für das Drücken und Auslassen einer Taste gibt es unterschiedliche
Scan-Codes (die Codes der gedrückten Tasten werden in Abbildung 14-1 gezeigt;
die Codes der ausgelassenen Tasten errechnen sich, indem man zu diesen noch
128, hex 80, addiert).
Das bedeutet, daß das ROM-BIOS entgegen unseren Erwartungen doppelt so viele
Interrupts braucht, um etwas über die Tastaturaktionen zu erfahren. Ferner bedeu­
tet es auch, daß das ROM-BIOS weiß, ob eine Taste noch gedrückt ist oder schon
ausgelassen wurde. Und damit erfährt das ROM-BIOS auch, wann wir zum Bei­
spiel Großbuchstaben eintippen, weil dann die Shift-Taste niedergedrückt wird.
Was wir noch über die Tastatur wissen sollten, ist die Wiederholfunktion der Tasta­
tur-Hardware. Die Tastatur-Hardware zeichnet auf, wie lange eine Taste gedrückt
wird, und wenn die „Wiederholungsschwelle" (etwa eine halbe Sekunde) erreicht
wird, wiederholt die Tastatur den Scan-Code der gedrückten Taste in einem
bestimmten Zeitintervall, so als hätten wir die Taste erneut gedrückt. Diese Tasten­
wiederholungssignale sind für das ROM-BIOS normale Tastensignale. Bei Bedarf
kann das ROM-BIOS durch das Fehlen der entsprechenden Scan-Codes für aus­
gelassene Tasten zwischen einzelnen und wiederholten Tastenaktionen unter­
scheiden.
In diesem Sinne funktioniert die Standardtastatur des PC, aber die Tastatur des
PCjr und des AT arbeiten etwas anders. Worin sie sich unterscheiden, können Sie
im Abschnitt „Tastatur-Unterschiede" erfahren. Als nächstes wollen wir untersu­
chen, wie das ROM-BIOS mit den Scan-Codes der Tastatur arbeitet und ihnen eine
Bedeutung zuweist.
Tastatur-Unterschiede
Was wir oben beschrieben haben, gilt für die Standardtastatur des PC, die die
Grundlage aller Tastaturen der PC-Familie bildet. Einige Modelle haben Tastaturen,
die sich von der des PC unterscheiden, und sie umgehen die Unterschiede bei
ihrer Arbeit, um volle PC-Kompatibilität zu bewahren. Dies wird durch die verschie­
denen Stationen ermöglicht, die die Tastaturdaten des Computers passieren müs­
sen.
Beim PCjr hat die Tastatur weniger Tasten und kann die Tastaturaktionen nicht puf­
fern und somit nicht warten, bis der Mikroprozessor sie anfordert. Die Tastatur des
182
14 Tricks mit der Tastatur
PCjr überträgt die Aktionen mit jr-spezifischen Tasten-Scan-Codes über einen
anderen Interrupt als den Standardinterrupt Nummer 9. Da der Jr nicht warten
kann, signalisiert er eine Tastenbetätigung durch den nichtmaskierbaren Interrupt
Nummer 2. Der entsprechende Interrupt-Verwalter liest schnell die Tastaturdaten,
sobald sie übertragen sind, und übersetzt dann die Scan-Codes des Jr in die äqui­
valenten Standard-Scan-Codes des PC. Danach löst er einen Interrupt Nummer 9
aus, um diese den regulären ROM-BIOS-Routinen zu übergeben (oder einem Pro­
gramm, das sich vor das ROM-BIOS gestellt hat und das Standard-Scan-Codes
erwartet, nicht die PCjr-Codes).
Der PCjr geht ziemlich weit, um seine nichtstandardgemäße Tastatur und seine
Scan-Codes so erscheinen zu lassen, als wären sie mit dem PC-Standard iden­
tisch. Er erreicht das über relativ komplizierte Programmiertricks. Andere Tastatu­
ren, die sich von der des Standard-PC unterscheiden, wie die des AT, benützen
ähnliche Methoden, müssen aber nicht so weit gehen.
Bei der Tastatur des Standard-PC sind die steuernden Faktoren der Tastenwieder­
holung - die Zeitschwelle, bevor sie beginnt, und das Zeitintervall für die Wieder­
holung - festgelegt. Sowohl beim PCjr als auch beim AT können sie verändert wer­
den. Beim AT ist die Tastenwiederholung eine Hardware-Eigenschaft, wie beim PC.
Aber die Tastatur-Hardware des AT ist programmierbar, so daß wir die Schwelle
und das Zeitintervall ändern können. Beim PCjr wird die Tastenwiederholung von
der ROM-BIOS-Software erzeugt und kann verändert oder sogar völlig ausge­
schaltet werden.
Wenn der Tastatur-Interrupt-Verwalter des ROM-BIOS zu arbeiten beginnt, erhält er
einen Scan-Code von der Tastatur und muß dann entscheiden, was die Taste
bedeutet. Das ROM-BIOS durchläuft schnell verschiedene Stationen der Analyse,
um festzustellen, wie es die gedrückte Taste interpretieren und was es daraufhin
machen soll. Zuerst untersucht es, ob die gedrückte Taste eine Umschalt-Taste ist
(wie die Shift-Tasten auf der rechten und linken Seite der Tastatur oder die ALT­
Taste oder die CTRL-Taste). Wenn das der Fall ist, notiert sich das ROM-BIOS den
Umschalt-Status, weil er die Bedeutung der nachfolgenden Tasten bestimmt. Als
nächstes prüft das ROM-BIOS, ob die gedrückte Taste eine Spezialtaste ist (wie die
CAPSLOCK-Taste, NUMLOCK, SCROLL-LOCK oder INS). Die Spezialtasten bestim­
men, wie die Umschalt-Tasten, die Bedeutung von nachfolgenden Tasten, werden
jedoch anders betätigt. Die Umschalt-Tasten wirken nur, solange sie gedrückt wer­
den, und die Spezialtasten wirken in Abhängigkeit davon, ob sie auf „Ein" oder
„ Aus" gestellt sind.
Sowohl bei den Umschalt-Tasten als auch bei den Spezialtasten muß das ROM­
BIOS den aktuellen Status aufzeichnen. Das geschieht in zwei Bytes des unteren
Speicherbereichs, an den hex Adressen 417 und 418. Jedes der Bits in diesen zwei
Bytes speichert separat einen Teil des Tastaturstatus, entweder um festzuhalten, ob
eine Taste länger gedrückt wird oder ob ein Spezialstatus an- oder ausgeschaltet
ist. Sie können diese Tastaturstatusbits untersuchen und mit ihnen spielen, indem
Sie das Programm KEY-BI T S verwenden, das in Anhang A aufgelistet ist. KEY-BI TS
demonstriert, wie der Tastaturstatus gespeichert wird, und zeigt, welche lnformatio-
14.1
Die Grundfunktion der Tastatur
183
nen das ROM-BIOS überwacht. Sie werden einige Dinge sehen, die Sie nicht
erwartet hätten, zum Beispiel daß zwischen rechter und linker Shift-Taste unter­
schieden wird, oder daß notiert wird, ob die Spezialtasten gedrückt werden. Durch
Experimentieren mit KEY-BITS erfahren Sie eine Menge darüber, wie das ROM­
BIOS mit der Tastatur zusammenarbeitet.
(Damit Sie möglichst viel von KEY-BITS lernen, gebe ich Ihnen hier zwei Tips. Das
Programm braucht etwas Zeit, um die Tastaturbits zu decodieren und sie auf dem
Bildschirm auszugeben. Bedenken Sie bei Ihren Experimenten, daß sich die
Tasten gegenseitig beeinflußen. Wenn Sie im Shift-Status sind und die Ins-Taste
drücken, wird das nicht als Ins-Taste interpretiert, sondern als Null-Taste.)
Nachdem sich das ROM-BIOS um die Shift- und Spezialtasten gekümmert hat,
muß es einige besondere Tastenkombinationen überprüfen, zum Beispiel die
CTRL-ALT-DEL-Kombination für Neubooten des Computers. Eine andere spezielle
Kombination ist CTRL-NUMLOCK, die den Computer eine Pause einlegen läßt.
Mehr Information erhalten Sie im Abschnitt „CTRL-NUMLOCK, Print-Screen und
andere Tastaturkombinationen".
CTRL-NUMLOCK, Print-Screen und andere Tastaturkombinationen
Die ROM-BIOS-Tastatur-Routinen machen mehr, als nur die rohe Tastatureingabe
zu überwachen und sie in die entsprechenden Tastenzeichen umzusetzen. Sie
kontrollieren auch einige eingebaute Fähigkeiten der PC-Familie. Dazu gehören
vor allem das Neubooten des Systems (hervorgerufen durch die CTRL-ALT-DEL­
Kombination), Print-Screen (Linkes-Shift-Sternchen) und Systempause (CTRL­
NUMLOCK).
Sowohl das Neubooten als auch Print-Screen sind Dienstprogramme, die immer
für jedes Programm verfügbar sind, das sie anfordern will. Print-Screen wird zum
Beispiel einfach angefordert, indem man einen Interrupt Nummer 5 auslöst. Im Fall
dieser beiden Dienstprogramme können wir als Anwender mit Hilfe der Tastatur­
Routinen einfach ein Dienstprogramm verwenden, was normalerweise nur für ein
Programm möglich ist.
Die CTRL-NUMLOCK-Pause ist jedoch eine besondere Eigenschaft des ROM­
BIOS. Wenn die Tastatur-Routinen diese Tastenkombination feststellen, geht das
ROM-BIOS in eine Endlosschleife, die nichts tut, und stellt sämtliche Operationen
eines gerade laufenden Programmes zurück. Bei diesem Pausenstatus ist das
Gerät nicht ausgeschaltet und reagiert weiterhin auf alle Hardware-Interrupts, die
auftreten, zum Beispiel Platten- und Zeitgeber-Interrupts. Wenn jedoch diese Inter­
rupts abgeschlossen sind, wird die Steuerung wieder der Tastatur-Routine überge­
ben und diese weigert sich, die Steuerung dem unterbrochenen Programm zu­
rückzugeben. Erst wenn wir eine der normalen Tasten drücken, setzt das ROM­
BIOS das Pausenbit zurück und veranlaßt den Mikroprozessor, seine Aktivitäten
wieder aufzunehmen. Sie können das Pausenbit sehen, mit dem das ROM-BIOS
diesen Status überwacht, wenn Sie das KEY-BITS-Programm laufen lassen. KEY­
BITS kann das Pausenbit jedoch nicht zeigen, wenn es gesetzt ist, weil dann kein
Programm läuft, einschließlich KEY-BITS.
184
14 Tricks mit der Tastatur
Dlsplaylng tha keyboard control blts; press Enter to stop
To see the changes In actlon, press these keys:
Both 1hlft keya, Ctrl, Alt, C.p1Lock, Numlock, Scrolllock, 1n1
01100010 Ol Ol1 l1 OI OLi
l
(not used) oft
-+ (not used) oft
PCJr cllck atate oft
-+ Hold atate actlve oft
Scroll lock presaed ON
Num Lock preased ON
Capa Lock pressed oft
Ins preHed oft
Rlght shlft pressed off
Left shlft pressed ON
Ctrl pressed off
-+Alt pressed off
Scroll Lock state off
Num Lock state ON
Caps Lock state ON
Insert state off
Abb. 14-2:
Beispiel für einen Bildschirm aus KEY-BITS
Bei einigen Mitgliedern der PC-Familie gibt es andere spezielle Dienstprogramme,
die der ROM-BIOS-Teil der Tastatur überwacht. Bei den Compaq-Modellen steuern
spezielle Tastenkombinationen den besonderen Compaq-Bildschirmmodus und
regeln die Lautstärke des Tastaturanschlaggeräusches. In den Compaq-286-Modi
steuert eine andere Tastaturkombination auch die Laufgeschwindigkeit. Auch beim
PCjr wird das Tastaturgeräusch durch eine Tastenkombination geregelt.
Wenn eine gedrückte Taste anstandslos durch diese gesamte Spezialbehandlung
gelangt, muß es eine normale Taste sein, der eine Bedeutung zugeordnet werden
kann. Das gilt auch, wenn eine Taste gedrückt und nicht ausgelassen wird. Das
Auslassen einer Taste bedeutet normalerweise nichts, wenn es nicht eine der Um­
schalt- oder Spezialtasten ist. Wenn wir eine normale Taste drücken, kann das
ROM-BIOS das feststellen, weil ein normaler Tastaturcode produziert wird, zum
Beispiel für die A-Taste. Um einer normalen Taste eine Bedeutung zu geben, muß
das ROM-BIOS die Taste in ihren Zeichencode übersetzen. Das ist der Punkt, an
dem die A-Taste zum Buchstaben „A" wird. In diesem Übersetzungsvorgang wer­
den die Shift-Zustände mitgerechnet, um den Buchstaben „a" von „A" zu unter­
scheiden.
Wenn ein Tastenanschlag in seine Bedeutung übersetzt wird, gibt es zwei Sätze
von Bedeutungen bzw. zwei Typen von Tastaturzeichen. Der erste Satz sind die
normalen ASCII-Zeichen, zum Beispiel „A" oder Control-A (ASCII-Code 1). Der
zweite Satz gehört zu den speziellen Tasten des PC. Zu diesen Tasten gehören die
Funktionstasten, Cursor-Tasten, die Horne-Taste usw. Sie haben spezielle Codes,
die sie von den normalen ASCII-Zeichentasten unterscheiden.
14.1
Die Grundfunktion der Tastatur
185
Der ALT-Zahlen-Trick
Es gibt noch einen weiteren besonderen Trick, den die ROM-BIOS-Routinen aus­
führen können und den die meisten PC-Anwender nicht kennen. Ich nenne ihn den
ALT-Zahlen-Trick.
Das meiste, was wir in unsere Computer eintippen wollen, können wir auf der
Tastatur direkt sehen: die Buchstaben des Alphabets usw. Die exotischeren Dinge
können eingetippt werden, indem man die CTRL-Taste zusammen mit den alpha­
betischen Tasten drückt. CTRL-Z ergibt ASCII-Code 26, der als Dateiendemarkie­
rung bei Textdateien verwendet wird. Aber wir können nicht jeden Code des PC­
Zeichensatzes auf diese Art eintippen. Wenn wir zum Beispiel die Zeichen für Um­
rahmungslinien, die wir in Kapitel 4 gesehen haben, eintippen wollen, wäre das
damit nicht möglich.
Das ROM-BIOS erlaubt einen speziellen Weg, über den wir jedes der Zeichen mit
den ASCII-Codes 1 bis 255 eingeben können. (Seltsamerweise können wir ASCII­
Code 0 auf diese oder eine andere Weise nicht eintippen.)
Wir erreichen das, wenn wir die ALT-Shift-Taste drücken und dann den gewünsch­
ten ASCII-Code dezimal eingeben. Wir müssen die Zahlentasten auf der rechten
Seite der Tastatur verwenden, nicht die Zahlentasten der oberen Tastaturreihe.
Wenn wir etwas auf diese besondere Weise eintippen, bemerkt dies das ROM­
BIOS, berechnet die eingetippte Codenummer und erzeugt, wenn wir die ALT-Taste
auslassen, ein ASCII-Zeichen, als hätten wir nur eine Taste gedrückt, die dieses
ASCII-Zeichen repräsentiert. Sie können das z.B. mit dem ASCII-Code für das gro­
ße A ausprobieren, Code 65. Drücken Sie die ALT-Taste, drücken Sie dann die 6
und die 5 des rechten Tastaturblocks. Der Buchstabe A sollte nun auf Ihrem Bild­
schirm erscheinen, genauso als hätten Sie ein großes A eingetippt.
Dieses spezielle Verfahren funktioniert meistens, aber nicht immer. Es funktioniert
nicht mit BASIC, weil BASIC die Tastaturoperation ändert. Dasselbe gilt ggf. bei der
Verwendung von Tastatur-Erweiterungsprogrammen.
Das ROM-BIOS zeichnet die Tastenzeichen in Bytepaaren auf, damit sowohl die
reinen ASCII-Codes als auch die speziellen PC-Codes verarbeitet werden können.
Wenn das Zeichen ein ASCII-Zeichen ist, dann ist das erste der zwei Bytes nicht
Null, sondern enthält das ASCII-Zeichen selbst. (In diesem Fall kann das zweite
Zeichen ignoriert werden. Normalerweise enthält es den Scan-Code der gedrück­
ten Taste.) Die speziellen PC-Zeichen werden durch eine Null im ersten Byte identi­
fiziert. Wenn das erste Byte Null ist, enthält das zweite Byte den Code des speziel­
len Zeichens.
BASIC erlaubt uns einen sehr einfachen Zugriff auf diese Zwei-Byte-Tastaturcodes
mit der INKEY$-Funktion. Damit können wir die Tastaturcodes untersuchen. Das
folgende kleine Programm zeigt die Vorgehensweise. L assen Sie dieses Programm
laufen und drücken Sie dann irgendwelche Tasten (die Enter-Taste beendet das
Programm):
186
14 Tricks mit der Tastatur
100 FOR I
110 KS
120 L
=
=
1 TO 10 : KEY I, "" : NEXT
=
INKEYS
LEN CKS)
130 IF L
=
1 THEN PRINT "ASCII-Zeichen
";ASCCLEFTS CKS,1))
140 IF L
=
2 THEN PRINT "Spezieller Tastencode
II
150 IF KS
=
;ASC (RIGHTSCKS, 1))
CHRSC13) THEN SYSTEM ELSE 110
Nachdem ein „echter" Tastenanschlag festgestellt und in seine Zwei-Byte-Bedeu­
tung übersetzt wurde, wird er im eigenen Tastaturpuffer des ROM-BIOS gespei­
chert - zuerst im internen Speicher der Tastatur und jetzt im Speicherbereich des
ROM-BIOS. Der Puffer des ROM-BIOS kann 15 Zeichen speichern. Wenn er über­
läuft, gibt das ROM-BIOS ein Warnsignal über den Lautsprecher aus, an das erfah­
rene PC-Anwender gewöhnt sind, und nimmt keine weiteren Tastaturdaten an.
Sobald unsere Tastenbetätigungen aufgenommen und in bedeutungstragende
Zeichen übersetzt worden sind, stehen sie für unsere Programme zur Verfügung.
Unsere Programme können sie entweder direkt vom ROM-BIOS erhalten, indem
sie die ROM-BIOS-Tastatur-Dienstprogramme verwenden, oder von DOS, indem
sie die DOS-Tastatur-Dienstprogramme benützen, die die Zeichen indirekt vom
ROM-BIOS übernehmen.
14.2
Tastatur-Tricks
Durch das Design des PC können unsere Programme auf verschiedene Arten mit
der Tastatur arbeiten. Sogar wenn unsere Programme nichts Exotisches tun, kann
zwischen zwei Arten gewählt werden, mit denen Tastaturdaten übernommen wer­
den sollen. Man kann sie entweder direkt vom ROM-BIOS oder durch die DOS­
Dienstprogramme bekommen. Aber das ist sicher nicht der einzige Weg für ein
Programm.
Aus vielen Gründen ist hier keine umfassende Aufzählung aller Tastatur-Tricks
möglich. Ein Grund ist, daß geniale Programmierer dauernd neue Tastatur-Tricks
entdecken. Der Hauptgrund ist jedoch, daß dieses Thema in diesem Rahmen viel
zu technisch wäre. Es sind wirklich nur Tricks für erfahrene Programmierer und sie
haben nichts mit dem Ziel dieses Buches zu tun. Immer öfter werden wir jedoch
solche Programme verwenden, die auf Tastatur-Tricks aufbauen, und man sollte
deshalb ihr Grundprinzip verstehen, damit wir nicht glauben, daß hier schwarze
Magie vor sich geht.
Ein Programm kann auf unterschiedliche Weise Antworten geben. Eine davon wird
indirekt im Programm KEY-BITS demonstriert. Jedes unserer Programme kann,
wenn es will, die Tastatur-Statusbits überprüfen und dementsprechend handeln.
Hier folgt ein einfaches Beispiel dafür:
10 DEF SEG
=
0
20 PRINT "Bitte druecken Sie beide Shift-Tasten gleichzeitig!"
30 IF PEEK C&H417) MOD 4 <>3 THEN 30
40 PRINT "Danke!"
14.2 Tastatur-Ticks
187
Damit kann ein Programm die Umschalt-Tasten besonders behandeln. Beispiels­
weise wollen die Gestalter von Spielprogrammen oft ganz spezielle Tricks ein­
bauen, was besonders die Shift-Tasten betrifft. Zum Beispiel verwendet das „Night
Mission Pinball"-Programm - das von Bruce Artwick entwickelt wurde, der auch
den Microsoft-Flugsimulator geschrieben hat - die Shift-Tasten, um die Spielauto­
maten zu steuern. Dazu muß das Programm feststellen, wenn eine der Shift-Tasten
gedrückt wird und das ist durch die Überprüfung der Tastatur-Statusbits leicht
möglich.
Einer der interessantesten Programmtypen, die wir auf unseren PCs verwenden,
sind residente Programme, wie das bekannte Sidekick-Programm, das untätig im
Speicher unseres Computers sitzt, bis wir es mit einer speziellen Tastenkombina�
tion aktivieren. Nun sehen wir einige Verfahren an, wie das gemacht werden kann.
Sie wissen sicher noch aus Kapitel 6, daß der PC eine interne Uhr hat, die etwa 18
mal pro Sekunde „tickt". Das Uhrticken wird sozusagen durch einen speziellen
Uhrtick-Interrupt mit der Nummer 8 hörbar gemacht. Normalerweise erhält das
ROM-BIOS diesen Interrupt und benützt ihn nur, um seinen Tageszeiteintrag auf
den aktuellen Stand zu bringen. Aber das ROM-BIOS stellt das Ticken der Uhr
auch unseren Programmen zur Verfügung, indem es einen anderen Interrupt, Num­
mer 28, erzeugt, der nichts tut, wenn nicht eines unserer Programme einen lnter­
ruptvektor gesetzt hat, um diesen Interrupt zu erhalten. In diesem Fall wird das Pro­
gramm 18 mal pro Sekunde aktiviert.
Betrachten wir, wie Sidekick diese Technik einsetzen könnte, um aktiviert zu wer­
den. Das normale Signal, mit dem wir Sidekick mitteilen, daß es zu arbeiten begin­
nen soll, ist, daß wir gleichzeitig die CTRL- und die ALT-Taste drücken. Sidekick
könnte dafür einfach den T imer-lnterrupt benützen, um möglichst oft die Tastatur­
Statusbits überprüfen zu können und damit festzustellen, wenn wir diese beiden
Tasten drücken (in ähnlicher Weise, wie unser vorhergehendes BASIC-Beispiel­
programm die beiden Shift-Tasten überprüft). Falls Sidekick die Bits nicht gesetzt
vorfindet, erhält es die Steuerung einfach vom T imer-lnterrupt zurück, wobei nur
sehr wenig Zeit verschwendet wurde. Aber wenn Sidekick feststellt, daß die Signal­
bits gesetzt sind, kann es mit seiner Arbeit weitermachen.
In diesem Beispiel stört der Timer-lnterrupt den normalen Tastaturdatenfluß in kei­
ner Weise. Statt dessen wird der Timer-lnterrupt dafür eingesetzt, damit unsere Pro­
gramme den Status der Shift-Tasten feststellen können.
Das ist jedoch bei weitem nicht der einzige Weg, mit dem ein Programm die Tasta­
tur für spezielle Zwecke verwenden kann. Ein Programm kann etwa mitten in den
Tastaturdatenfluß postiert werden, so daß es die Information sofort überwachen und
möglicherweise verändern kann. Genau das machen Tastatur-Erweiterungspro­
gramme, wie Prokey und Superkey.
Wenn ein Programm die Tastatur vollkommen steuern oder zumindest alles wissen
will, was in der Tastatur vorgeht, kann dafür einfach ein Interrupt-Vektor plaziert wer­
den, der auf das Programm an der Position des Standardvektors zeigt, der Tastatur­
interrupts zum ROM-BIOS leitet. Wenn dann die Tastatur einen Hardware-Interrupt
auslöst, „sehen" unsere Programme den Interrupt und nicht das ROM-BIOS.
188
14 Tricks mit der Tastatur
Zwei wichtige Dinge kann ein derartiges Programm erledigen. Es kann die ge­
samte Steuerung der Tastaturdaten übernehmen, so daß das ROM-BIOS diese nie
sieht. Das macht ein Programm, das die gesamte Steuerung vorbehaltlos an sich
reißen will. Die meisten Programme, die sich in den Tastaturdatenprozeß einmi­
schen, sind nicht daran interessiert, den Informationsfluß von der Tastatur zum
ROM-BIOS zu stoppen. Sie wollen ihn lediglich überwachen und, wenn nötig, ver­
ändern. Solche Programme überprüfen die Tastaturdaten, wie sie kommen, erlau­
ben aber im allgemeinen den Fortgang des normalen Informationsflusses, der die
üblichen Stationen durchläuft. So funktionieren die meisten Tastatur-Erweiterungs­
programme, wie Prokey. Sie greifen ein, um die Tastaturdaten zu überwachen und
zu verändern. Dazu müssen sie vielleicht sogar die ROM-BIOS-Programme durch
eigene Programmschritte erset:z;en, aber sie stoppen die Verarbeitung der Tastatur­
daten nicht in der Art, wie es das ROM-BIOS normalerweise macht.
Wenn wir die große Vielfalt an Programmen betrachten, die für unsere PC-Familie
verfügbar sind, finden wir viele Arten, in denen Programme die Tastatur auf beson­
dere Weise behandeln, und unter ihrer Oberfläche finden wir verschiedene Grade,
was die Kompliziertheit der Programmierung angeht. Was wir in Zusammenhang
mit Sidekick und Prokey angesprochen haben, repräsentiert den Extremfall. Es gibt
natürlich weniger radikale Methoden, mit denen die Tastatur auf l:lesondere Weise
behandelt werden kann.
Als Beispiel nehmen wir Framework. Framework benützt die Plus- und Minus­
Tasten des rechten Tastaturblocks für spezielle Zwecke und unterscheidet sie von
den Plus- und Minus-Tasten in der obersten Reihe der Tastatur. Framework ver­
wendet sie für eine spezielle Operation, die auf ein bestimmtes logisches Niveau
innerhalb des Framework-Datenschemas führt. Man könnte vermuten, daß Frame­
work sich für diese Unterscheidung der Tasten an den Tastaturdaten zu schaffen
macht (zum Beispiel wie Prokey), aber das ist nicht notwendig.
Wenn das ROM-BIOS unseren Programmen Tastaturdaten übergibt, geschieht das
als Zwei-Byte-Code, wobei das erste Byte den ASCII-Code eines Zeichens enthält.
Wenn wir eine der Plus-Tasten drücken, steht in diesem Byte immer das gleiche,
nämlich ASCII-Code Nummer 43. Das zweite Byte, das das ROM-BIOS unseren
Programmen zur Verfügung stellt, teilt jedoch den Scan-Code der gedrückten Taste
mit, und es ist deshalb sehr einfach für ein Programm wie Framework, die Unter­
schiede zwischen den beiden Tasten zu erkennen. Es bemerkt auch, wenn wir den
Plus-Code durch das ALT-Zahlen-System erzeugen, das wir zu Beginn des Kapitels
besprochen haben.
Framework muß also für die Unterscheidung von Tasten keine besonderen Zau­
berkunststücke vollbringen oder sich in die ROM-BIOS-Operation oder den Tasta­
turinformationsfluß einmischen.
Wir sehen, daß es keiner besonderen Kunstgriffe bedarf, wenn man besondere
Operationen in ein Programm einbauen und über Tastatur steuern will, und daß wir
die Standardkonventionen nicht verlassen müssen, die einen reibungslosen
Betrieb unseres PC gewährleisten.
14.2 Tastatur-Tricks
189
Übungen
1.
Bei den Spezialtasten, z.B. der Capslock-Taste, verfolgt das ROM-BIOS nicht nur den aktu­
ellen Status, sondern auch, ob die Taste gedrückt ist. Obwohl unsere Programme normaler­
weise keine Verwendung für diese Information haben, gibt es einen einfachen logischen
Grund, warum das ROM-BIOS diese Information festhält. Können Sie den Grund herausfin­
den?
2.
Das System, mit dem die speziellen Zeichencodes von den ASCII-Codes unterschieden
werden, funktioniert ziemlich gut, aber es hat einen technischen Fehler. Können Sie ihn ent­
decken? Wie würden Sie ihn korrigieren?
3.
Es gibt einige (abwegige) Möglichkeiten für ein Programm, den Tastatur-Pausenstatus fest­
zustellen, den wir im Abschnitt über CTRL-NUMLOCK besprochen haben. Können Sie sich
eine Möglichkeit vorstellen?
190
15
KolD.IIlunikation,Drucker
und weitere Komponenten
In diesem Kapitel beenden wir die Besprechung der Hardware-Komponenten
unserer PC-Familie. Wir sehen uns die parallelen und seriellen E/A-Kanäle an, die
für Drucker und Fern-Kommunikation verwendet werden. Zuletzt zeigen wir, wie
der PC T öne erzeugen, mit einer Maus arbeiten, Kassettenbänder benützen kann
uvm.
16.l
Drucker: Die parallele Schnittstelle
Ein Standardanschluß an unseren PC ist die sogenannte parallele Schnittstelle. Sie
werden kaum einen PC finden, der sie nicht hat, und die meisten Zusatzkarten, die
wir in unseren Computern installieren, haben eine parallele Schnittstelle. Zu diesen
Zusatzkarten gehören die IBM-Monochrom-Adapterkarte, viele Speichererweite­
rungskarten und fast jede Multijunktionskarte. Die Schnittstelle ist bei den Zusatz­
karten so verbreitet, daß viele PCs zwei oder sogar drei parallele Anschlüsse
haben.
Eine parallele Schnittstelle ist ein spezieller Datenanschluß, der nur für den Druk­
ker gedacht ist. Einen Drucker kann man sowohl durch eine parallele als auch
durch eine serielle Schnittstelle an unseren Computer anschließen. Die parallele
Schnittstelle, unser Thema hier, wurde speziell nur für Drucker entworfen. Die seri­
elle Schnittstelle, die wir in Abschnitt 15.2 besprechen werden, kann dagegen für
viele Zwecke benützt werden, und der Drucker ist nur einer davon.
Sie werden feststellen, daß es für die sogenannte parallele Schnittstelle viele
Bezeichnungen gibt und Sie sollten sich davon nicht verwirren lassen. IBM
bezeichnet sie normalerweise als parallelen Drucker-Adapter. Sie heißt parallel
wegen ihrer Art, Daten zu übertragen (mehr darüber erfahren wir in Kürze). Drucker
bedeutet dabei, daß sie sich nur für die Übermittlung von Daten zum Drucker eig­
net. Wir bezeichnen sie als Adapter oder Karte, wie wir wollen. Im allgemeinen
spricht man einfach von einer Schnittstelle (wie ich) und meint damit eigentlich
„Datenanschluß". Hier bedeutet das Wort Schnittstelle etwas anderes als die
Bezeichnung E/A-Kanal in Kapitel 6. Dort war es eine besondere Eigenschaft des
PC-Mikroprozessors, die für die Kommunikation zwischen dem Mikroprozessor
und anderen Teilen der Hardware (einschließlich dem parallelen Drucker-Adapter)
zuständig ist. Hier verwenden wir das Wort Schnittstelle etwas freier. Im Englischen
wird für beides das gleiche Wort, nämlich „port", verwendet, aber die gleichen
Ausdrücke haben nicht die gleiche Bedeutung. Übrigens wird die parallele Druk­
kerschnittstelle gelegentlich auch als Centronix-lnterface bezeichnet, nach der
Firma, die diesen Kommunikations-Standard zwischen Computer und Drucker
eingeführt hat.
Dieses Drucker-Interface wird parallel genannt, weil es für die byteweise Übertra­
gung von Daten entworfen wurde, wobei alle acht Bits eines Byte gleichzeitig zum
Drucker ausgegeben und durch acht getrennte parallele Leitungen übermittelt
werden.
15.1
Drucker: Die parallele Schnittstelle
191
Das Interface zwischen dem Computer und dem Drucker, das in einer parallelen
Schnittstelle verwendet wird, ist nicht besonders kompliziert und ermöglicht nur die
Übertragung weniger spezieller Statussignale zwischen Drucker und Computer.
Grundsätzlich kann der Computer nur zwei Dinge senden: die Daten, die gedruckt
werden sollen, und ein spezielles Initialisierungssignal, das ein Drucker für seinen
Reset verwenden soll. Natürlich können alle möglichen speziellen Signale in den
Druckerdaten mitenthalten sein. Die meisten Drucker haben einen umfangreichen
Satz von Steuercodes, die zusammen mit den Daten zu ihnen gesendet werden
können. Aber diese Steuercodes sind für jeden Drucker spezifisch und sie betref­
fen fast ausschließlich die Formatierung der gedruckten Daten (wie zum Beispiel
die Auswahl zwischen Breitschrift oder Unterstreichen etc.). Im Design der paralle­
len Schnittstelle selbst gibt es nur ein spezielles Signal, das der Computer dem
Drucker senden kann, und das ist das Initialisierungssignal.
Umgekehrt gibt es ebenfalls nicht viel, was der Drucker dem Computer mitteilen
kann. Es sind in erster Linie drei Dinge. Eines ist eine einfache Bestätigung, mit der
der Drucker meldet, daß er die Daten korrekt erhalten hat. Ferner gibt es ein Signal,
mit dem er anzeigt, daß er beschäftigt ist. Der Drucker teilt damit dem Computer
mit, daß er keine weiteren Daten mehr senden soll, bis der Drucker wieder welche
bearbeiten kann. Das dritte ist das einzige wirklich Drucker-spezifische Signal (da
alle anderen für jede Datenübertragung gelten können), nämlich das Papier-Ende­
Signal. Alle Standard-Computerdrucker haben einen Sensor, der feststellt, wenn
der Drucker kein Papier mehr hat, und die parallele Druckerschnittstelle stellt einen
speziellen Kanal nur dafür zur Verfügung, daß der Drucker dieses Signal zum
Computer senden kann. Dieses Papier-Ende-Signal gilt ausschließlich für parallele
Druckerschnittstellen und ist nicht verfügbar bei Drückern, die die serielle Schnitt­
stelle benützen, die wir in Abschnitt 15.2 besprechen werden.
Das Design der parallelen Druckerschnittstelle ist nichts Spezifisches unserer PC­
Familie, sondern wird in allen informationsverarbeitenden Bereichen eingesetzt.
Einen PC-spezifischen Punkt gibt es allerdings und wir wollen ihn kennen. Durch
die Architektur der Drucker-Adapter für den PC (und der unterstützenden ROM­
BIOS-Routinen) können bis zu drei unabhängige parallele Schnittstellen in einem
PC installiert werden.
Das bedeutet, daß bis zu drei parallele Drucker gleichzeitig an unsere Computer
angeschlossen werden können. Mit entsprechender Software können unsere PCs
zwei oder drei Drucker auf einmal betreiben, wenn wir den Computer als eine Art
Drucker-Motor verwenden würden, als eine Zentrale für die Ausgabe von sehr vie­
len Ausdrucken. Das wäre jedoch eine sehr spezialisierte Anwendung des PC, und
die meiste PC-Software, einschließlich DOS, ist nicht dafür gedacht. Wenn an
einem PC mehr als ein Drucker angeschlossen ist, können wir zwar normalerweise
einen Drucker auswählen, aber nur jeweils einen benützen. Manche PC-Anwender
haben ihre Systeme so aufgebaut. Eine typische Konstellation ist dabei, daß ein
Drucker sehr schnell ist und ein grobes Druckbild hat, also für Entwurfsfassungen
benützt wird, und der andere langsamer und besser ist und deshalb für die End­
fassungen gedacht ist.
192
15 Kommunikation, Drucker und weitere Komponenten
In Zusammenhang mit den mehrfachen Druckeranschlüssen kann noch am Rande
erwähnt werden, daß DOS ein paar Möglichkeiten liefert, unsere Standard-Druk­
kerausgabe von einem Drucker auf einen anderen umzuschalten. Das MODE­
Kommando kann teilweise dafür verwendet werden, und mit dem PRINT-Spool­
kommando kann man direkt auf verschiedenen Geräten drucken.
Die meisten Drucker für unsere PCs werden mit der parallelen Schnittstelle betrie­
ben. Einige gibt es jedoch in zwei Modellen, eines für die parallele Schnittstelle
und das andere für die serielle Schnittstelle, während nur wenige Drucker - zum
Beispiel der Hewlett Packard LaserJet-Drucker - ausschließlich mit serieller
Schnittstelle angeboten werden.
Während die parallele Schnittstelle speziell für den Drucker gedacht ist, kann die
serielle Schnittstelle für viele Zwecke eingesetzt werden, wie wir in Abschnitt 15.2
sehen werden.
15.2
Kommunikationsleitungen: Die Serielle Schnittstelle
Der andere Hauptpfad für die Daten unseres Computers ist die sogenannte serielle
Schnittstelle. IBM bezeichnet sie als den asynchronen Kommunikations-Adapter
und zwar aus verschiedenen Gründen, die wir bald erfahren werden.
Die parallele Schnittstelle, die wir in Abschnitt 15.1 besprochen haben, ist grund­
sätzlich eine Einbahnstraße für die Übertragung von Daten zum Drucker. Wie wir
gesehen haben, ist die Verbindung nicht ausschließlich einbahnig, da Bestäti­
gungs-, Beschäftigt-und Papier-Endesignale zurückgesendet werden können.
Aber für die Übertragung ganzer Datenmengen ist bei der parallelen Schnittstelle
nur die Ausgabe möglich. Die serielle Schnittstelle ist dagegen immer eine zwei­
bahnige Verbindung, die der Schlüssel zu vielen unserer Anwendungen ist.
Die serielle Schnittstelle bzw. das serielle Interface unseres Computers basiert auf
einem Standard, der in der informationsverarbeitenden Industrie weit verbreitet ist
und RS-232 genannt wird. RS-232 ist eine Standardkonvention für die Übertra­
gung zweibahniger, asynchroner serieller Daten. Der Pfad ist zweibahnig, so daß
Daten hin- und zurückgesendet werden können. Asynchron bedeutet, daß die
Übermittlung der Daten nicht auf vordefinierten Zeitintervallen beruht. Sie werden
in unregelmäßigen Zeitintervallen gesendet, und beide Seiten können mit diesen
Unregelmäßigkeiten umgehen. (Es gibt andere Arten der Kommunikation, die bei
Personalcomputern üblicherweise nicht benützt werden und synchron sind, was
bedeutet, daß sie auf einem Standardzeitsignal basieren.) Die Übertragung ist seri­
ell. Dies bedeutet, daß die Daten bitweise gesendet werden. (Wir werden bald auf
die Schwierigkeiten eingehen, die damit verbunden sind.)
Während die parallele Schnittstelle nur für sehr einfache und gut kontrollierbare
Zwecke gedacht ist, kann das serielle Interface für die verschiedensten Anwendun­
gen eingesetzt werden. Sie muß deshalb sehr flexibel sein und hat dafür verwir­
rend viele Parameter und Variationen, die je nach Zweck entsprechend festgelegt
werden können.
15.2
Kommunikationsleitungen: Die Serielle Schnittstelle
193
Die Kommunikationsparameter legen also fest, wie eine serielle Schnittstelle arbei­
ten soll. Jedes Interface, einschließlich dieses, hat zwei Enden, und die Ausrüstung
an jedem Ende muß mit den Kommunikationsparametern übereinstimmen, damit
sie ihre gegenseitigen Signale austauschen können. Da für unsere PCs jede Kom­
bination der Parameter möglich ist, häufig nicht jedoch für diejenige Geräteeinheit,
die am anderen Ende hängt, muß die ganze Arbeit normalerweise unser Computer
erledigen bzw. wir selbst. Im Prinzip ist das nicht schwer, aber es setzt voraus, daß
wir wissen, wie die Parameter gesetzt sein müssen. Für einen erfahrenen PC­
Benutzer ist das keine große Leistung, aber relativ neue PC-Benutzer können
dabei vor große Probleme gestellt werden.
Im folgenden wollen wir zeigen, welche Kommunikationsparameter es gibt. Wir
besprechen jedoch keine technischen Einzelheiten, die in ein spezielles Buch über
Kommunikation gehören.
Die seriellen Kommunikationsparameter beginnen mit einer Baudrate, die
bestimmt, wie schnell die Schnittstelle überträgt; dieses Maß heißt Baud oder Bits
pro Sekunde. Baudraten reichen von 110 bis 9600. Die üblichen Raten für die PCs
sind 300 (für langsame Telefonkommunikation) oder 1200 (mit schnelleren
Modems). Niedrigere Raten sind selten, höhere gibt es öfter. Für Telefonanwendun­
gen etablieren sich zunehmend 2400-Baud-Modems, und einige Drucker - wie
der Hewlett Packard LaserJet - akzeptieren ein Rate von 9600 Baud. Die Baudrate
kann man in eine praktischere Form umschreiben, indem wir die letzte Stelle weg­
streichen und damit ungefähr die übertragenen Zeichen (oder Bytes) pro Sekunde
erhalten. Denn die Übertragung eines Datenbyte braucht zusammen mit den Hea­
der-Bits der seriellen Kommunikation normalerweise zehn Bits.
Nach der Baudrate kommt die Anzahl der Datenbits für ein Zeichen. Man kann zwi­
schen zwei Möglichkeiten wählen, 7 oder 8 Bits. Natürlich sind die Zeichen unse­
res PC acht Bit lang, und wir müssen mit 8-Bit-Zeichen arbeiten, wenn wir den ge­
samten PC-Zeichensatz übertragen wollen. Aber meistens läuft die serielle Kom­
munikation nur über die wichtigsten ASCII-Zeichen, die lediglich sieben Bits lang
sind.
Der nächste Parameter ist die Parität bzw. Fehlermelde-Codierung. Bei einer RS232-Kommunikation sind drei verschiedene Zustände möglich: ungerade oder
gerade (zwei verschiedene Arten, um ein Paritätsprüfbit zu berechnen) oder keine
Paritätsprüfung (was sich auf die Header-Information der Kommunikation aus­
wirkt). Der Paritätstyp wird normalerweise durch seinen ersten Buchstaben
gekennzeichnet, mit E (für gerade, engl.: even), 0 (für ungerade, engl.: odd) oder N
(keine Parität, engl.: none). Zum Schluß kommt die Anzahl der Stopbits. Jedes Zei­
chen der Übertragungsdaten ist von Start- und Stopbits umgeben. Wir können ent­
weder ein oder zwei Stopbits festlegen.
Natürlich ist der gesamte Umfang der Kommunikationsparameter, einschließlich
der Paritätsprüfungen, in Wirklichkeit viel komplizierter, als hier zusammengefaßt
wurde, aber die Hauptpunkte haben wir genannt. Es sollte klar geworden sein, daß
die Kommunikationsparameter ziemlich kompliziert sind und richtig gesetzt wer­
den müssen, damit beide Enden der seriellen Kommunikation einander verstehen
194
15 Kommunikation, Drucker und weitere Komponenten
können. Manchmal müssen wir diese Parameter selbst setzen und deshalb müs­
sen wir zumindest die Namen und üblichen Werte der Parameter kennen, um
damit umgehen zu können.
Es gibt zwei Hauptanwendungen für serielle Schnittstellen in unseren PCs. Eine,
die wir schon erwähnt haben, ist die alternative Verbindung zu unseren Druckern.
Das geht natürlich nur mit Druckern, die für serielle Kommunikation eingerichtet
sind, und das ist ein relativ kleiner Teil der Drucker für PCs, obwohl es viele serielle
Drucker gibt.
Die andere und bei weitem häufigste Verwendung betrifft die Kommunikation, wie
wir sie uns allgemein vorstellen, nämlich die Verbindung unserer Computer mit
einem Telefonnetzwerk. Dazu benötigen wir neben einer parallelen Schnittstelle
noch ein paar andere Elemente. Wir brauchen ein Modem, das Computersignale in
Telefonsignale umwandelt, wobei es die Computerbits in äquivalente Schallwellen
moduliert (das mo von Modem) und die Telefonschallwellen in Computerbits
demoduliert (das dem von Modem). Wir brauchen außerdem eine Telefonleitung
zum Anschließen und etwas, das den Computer kennt, der am anderen Ende der
Telefonleitung ist, zum Beispiel Informationsdienste (wie the Source oder Compu­
serve) oder einen elektronischen Postdienst (wie MCI Mail) oder einen anderen
Computer, zum Beispiel einen PC, der wie ein schwarzes Brett funktioniert.
Drucker und Telefone sind jedoch nicht das einzige, was wir an den seriellen
Schnittstellen unserer PCs anschließen können, sie werden nur am meisten ver­
wendet. Wir können mit der seriellen Schnittstelle auch andere Ausgabegeräte
anschließen, zum Beispiel Plotter (die Zeichnungen zu Papier bringen). Die serielle
Schnittstelle kann auch für andere Eingabeverfahren benützt werden. Einige Maus­
geräte (die wir noch einmal kurz in Abschnitt 15.4 behandeln werden) werden an
die serielle Schnittstelle angeschlossen. Auch wenn PCs mit wissenschaftlichen
Instrumenten verbunden werden - entweder um Daten aufzunehmen oder um
Kommandos auszugeben -, bieten sich serielle Schnittstellen an, da sie auf einem
allgemeinen Standard beruhen, mit dem elektronische Geräte leicht ausgestattet
werden können.
Wie wir in Abschnitt 15.1 gesehen haben, erlaubt das Design des PC bis zu drei
parallele Drucker-Interfaces. Von den seriellen Schnittstellen dürfen nur zwei ein­
gebaut werden. Das ist merkwürdig, weil die seriellen Schnittstellen viel flexibler
sind und vielseitiger verwendet werden können. Wir haben deshalb wahrscheinlich
einen größeren Bedarf an seriellen Schnittstellen als an parallelen. In der Praxis
wollen fast alle PC-Anwender wesentlich mehr Geräte anschließen, als seriell mög­
lich ist.
195
15.3
Töne
Eine der interessantesten Fähigkeiten unseres PC ist das Erzeugen von T önen und
zwar in einem überraschend großen Umfang. Im folgenden zeigen wir ein sehr ein­
faches Beispiel dafür, wie der PC Tonleitern spielen kann:
10 FREQ= 130.81
20 FOR OCTAVE= 1 TO 4
30
FOR NOTE= 1 TO 7
40
SOUND FREQ,3
50
DIFF = 1.1225
60
IF NOTE= 3 OR NOTE= 7 THEN DIFF = 1.0595
70
FREQ= FREQ
80
NEXT NOTE
*
DIFF
90 NEXT OCTAVE
Wenn Sie dieses einfache Programm auf Ihrem PC ausprobieren, erhalten Sie
schnell eine Vorstellung davon, wie der PC fast jeden gewünschten Ton spielen
kann. Es vermittelt Ihnen auch eine Vorstellung von der groben, aber wirkungsvol­
len Tonqualität des kleinen eingebauten Lautsprechers.
Die meisten von uns glauben, daß T öne hauptsächlich nur für Spielprogramme
verwendet werden. „Ernsthafte" PC-Programme haben mit T önen normalerweise
nichts zu tun, außer dem Piepsen, wenn etwas nicht stimmt. Trotzdem gibt es bei
ernsthaften Programmen durchaus sinnvolle Anwendungen für T öne. Eines der
besten Beispiele dafür ist das Programm TopView von IBM. TopView setzt die Ctrl­
Taste dafür ein, um zwischen zwei Tastaturmodi hin- und herzuwechseln. Damit wir
den Unterschied bemerken, erzeugt TopView zwei verschiedene T öne, wenn es
:Zwischen den Modi hin-und herspringt. Der eine ist eine Art „Boop-Beep"-Ton und
der andere umgekehrt ein „Beep-Boop"-Ton. Der Effekt ist eindeutig und leicht ver­
ständlich. Es ist ein sehr schönes Beispiel dafür, wie unsere Programme T öne pro­
duktiv einsetzen können und nicht nur einfache Piepstöne.
Andere Anwendungen für Töne
Die eingebauten Lautsprecher unserer PCs können auch noch anderen Zwecken
dienen, als nur unseren Programmen zu ermöglichen, daß sie uns Töne ausgeben.
Sie können auch für die Unterstützung der Hardware benützt werden.
Ein Beispiel dafür ist ein „Tastatur-Klicker". Die Tastaturen des Standard-PC von
IBM erzeugen ein Klicken, wenn wir Tasten drücken und wieder auslassen.
Manche PC-Benutzer mögen das, andere nicht. Dieses Klicken soll uns mitteilen,
daß die Tasten funktionieren. Das kann sehr hilfreich sein, aber manchen Benut­
zern geht es auf die Nerven.
Wir können aber eine mechanische Eigenschaft einer solchen Tastatur in keiner
Weise ändern. Einige Mitglieder der PC-Familie haben jedoch andere Tastaturen.
Der PCjr und alle von Compaq hergestellten Mitglieder der PC-Familie haben leise
Tastaturen, die kein mechanisches Geräusch erzeugen. Das Klicken kommt in die-
196
15 Kommunikation, Drucker und weitere Komponenten
sem Fall aus dem Lautsprecher. Dieser Ton ist nicht so zufriedenstellend wie das
mechanische Klicken der Standard-IBM-Tastaturen, aber er kann dafür verändert
werden.
Das Tastaturklicken des PCjr kann durch Drücken der Ctrl-Alt-CapsLock-Tasten­
kombination ein- und ausgeschaltet werden. Dadurch wird das Klick-Bit gesetzt
und wieder zurückgesetzt, das wir bei den Tastatur-Statusbits in Kapitel 14 gese­
hen haben. Die Compaq-Modelle bieten eine viel bessere Steuerung des Tastatur­
geräusches. Wir können die Lautstärke des Tones einstellen, indem wir die Ctrl-Alt­
Rechts-Plus- und -Rechts-Minus-Tasten verwenden. Das kann ein echter Vorteil
sein.
Die Lautsprecher unserer Computer dienen auch noch anderen Hardware-Zwek­
ken. Beim Power-On Seif-Test (bzw. der POST-Routine) meldet der Lautsprecher
beispielsweise alle gefundenen Fehler, was sehr hilfreich sein kann, wenn der Bild­
schirm nicht funktioniert. In ähnlicher Weise signalisieren bei den Compaq-Model­
len zwei kurze Piepstöne, wenn der Computer in einen langsamen oder schnellen
Modus umschaltet.
Das Verfahren, wie unsere Computer T öne erzeugen können, ist sehr einfach. Im
Computer ist ein kleiner Lautsprecher mit der Schaltung des PC verbunden. Ein
Lautsprecher erzeugt T öne, indem er ein elektrisches Signal erhält, das entspre­
chend dem gewünschten Ton verändert werden kann. Der Lautsprecher wandelt
das in Schallwellen um, die wir hören. In einem Hi-Fi-System werden die elektri­
schen Signale aus Tonaufzeichnungen generiert. Bei unseren Computern erzeugt
die Schaltung die elektrischen Signale unter der Steuerung unserer Programme.
Die Schaltungen des PC bringen die Lautsprechermembran zum Schwingen und
erzeugen damit Töne. Unsere Programme regulieren die Tonhöhe oder Frequenz,
indem sie die Geschwindigkeit steuern, mit der Impulse zum Lautsprecher gesandt
werden.
Beim PC gibt es keine Lautstärkenregelung. Sie werden feststellen, daß die Laut­
stärke des Lautsprechers in Abhängigkeit von der gesendeten Tonfrequenz variiert.
Sie können das selbst hören, indem Sie die Tonleitern des vorhergehenden Pro­
grammes ausprobieren oder das folgende Programm verwenden, das einen höhe­
ren Frequenzbereich hat:
10 PLAY "MF"
20 FOR FREQ
=
100 TO 10000 BY 100
30
PRINT "Frequenz ",!NT CFREQ)
40
SOUND FREQ,5
50 NEXT FREQ
Unsere Programme steuern den Lautsprecher des Computers durch einen der Ein­
/Ausgabekanäle des Mikroprozessors. Wir wissen bereits einiges davon aus Kapi­
tel 6, als wir Ein-/Ausgabekanäle besprochen haben. Werfen wir noch einmal
einen Blick auf dieses Programm:
15.3 Töne
197
10 SOUND 500, 1
20 X = CINP C97) MOD 4) * 4
11
30 PRINT Druecken Sie eine beliebige Taste, um dieses hoellische
Geraeusch abzustellen!"
40
50
60
70
80
OUT 97, X + 3
' Ton einschalten
1 TO 250 : NEXT I ' Laufzeit
OUT 97, X ' Ton abschalten
FOR 1 = 1 TO 250: NEXT 1 ' Laufzeit
1111
THEN GOTO 40
IF INKEYS =
FOR I
=
Der Lautsprecher wird durch die letzten zwei Bits des E/A-Kanals 97 (hex 61)
gesteuert. Im obigen Programm sehen Sie, daß die Daten gelesen werden, die in
Kanal 97 gespeichert sind (durch die !NP-Anweisung). Der Grund dafür ist, daß die
weiteren Bits dieses Kanals für andere Zwecke verwendet werden, und wir wollen
sie unverändert lassen. Um den Ton einzuschalten, setzen wir die zwei letzten Bits
des E/A-Kanals 97. Zum Ausschalten des Tones setzen wir sie zurück. Mit MOD 4 * 4
schalten wir diese Bits aus, um sicherzustellen, daß sie noch nicht gesetzt sind.
Die zwei Kanalbits, die den Ton regulieren, steuern außerdem zwei verschiedene
Aspekte, wie die Töne erzeugt werden. Das höhere Bit mit dem Wert 2 schaltet ein­
fach den Lautsprecher an und aus. Wenn wir dieses Bit periodisch setzen und zu­
rücksetzen würden, erhielten wir einen Ton, dessen Frequenz dadurch festgelegt
wird, wie schnell das Programm dem Lautsprecher Impulse sendet, indem dieses
Bit an- und ausgeschaltet wird. Das andere Bit steuert die eigentliche Tonerzeu­
gung. Es bestimmt, wann der Lautsprecher ein Signal vom programmierbaren Zeit­
geber des PC erhält.
Der programmierbare Zeitgeber des PC - der 8253-Timer-Baustein, den wir in
Kapitel 5 gesehen haben - kann so programmiert werden, daß er einen großen
Umfang an regelmäßig gesendeten Signalen erzeugt. Er kann in Wirklichkeit zwei
verschiedene Signale produzieren. Eines davon wird für die Generierung der „Uhr­
Tick"-lnterrupts verwendet, 18.2 mal pro Sekunde. Das andere wird für die Erzeu­
gung von Tönen auf dem Lautsprecher benützt. Um einen regelmäßigen Ton zu
erzeugen, programmieren wir zuerst den Timer so, daß er die gewünschte Fre­
quenz produziert, und dann setzen wir die Bits in Kanal 97, um die Timerimpulse
zum Lautsprecher zu senden und den Lautsprecher zu aktivieren.
Sie finden diesen Vorgang im vorhergehenden kleinen Programm dargestellt. Mit
Zeile 10 SOUND 500,1 stellt BASIC die Timerfrequenz ein (notwendig für die Aus­
führung der SOUND-Anweisung). Sobald die Timerfrequenz gesetzt ist, können wir
den Ton hörbar machen, indem wir die Kanalbits setzen. Hätten wir nur das Bit mit
dem Wert 2 gesetzt, würden wir nur ein winziges Klick beim Einschalten des Laut­
sprechers hören. Setzen wir beide Bits, wird der Lautsprecher mit den Impulsen
des Timers gefüttert, und der Lautsprecher läuft mit der Frequenz, auf die der Timer
eingestellt ist.
Ein Programm braucht den programmierbaren Timer für die Erzeugung von Tönen
nicht unbedingt. Es kann Töne produzieren, indem es einfach das Bit, das den
Lautsprecher aktiviert, aus- und einschaltet. Auf diese Art kann ein Programm sehr
198
15
Kommunikation, Drucker und weitere Komponenten
komplizierte Töne erzeugen, indem es den Zeitabschnitt zwischen dem Ein- und
Ausschalten des Lautsprechers variiert. Das erfordert jedoch die dauernde Auf­
merksamkeit des Programmes und beschäftigt den Mikroprozessor fortlaufend.
Wenn wir den Timer benützen, können unsere Programme einen Ton einschalten,
und der Ton wird ohne weiteres Zutun des-Programmes weiterklingen. Der Mikro­
prozessor kann deshalb in der Zwischenzeit eine andere Arbeit ausführen. Wenn
das Programm den Ton schließlich ausschalten will, kann es einfach die Kanalbits
zurücksetzen oder die Timerfrequenz für einen neuen Ton ändern. So kann BASIC
Musik im „Hintergrund" spielen, Musik, die spielt, während BASIC etwas anderes
erledigt.
Besondere Töne des PCjr
Die Möglichkeiten der Tonerzeugung, die wir in diesem Kapitel besprochen haben,
haben alle Mitglieder der PC-Familie gemeinsam. Der PCjr hat jedoch noch einige
besondere Fähigkeiten, die weit darüber hinausreichen. Da der PCjr für vielerlei
Anwendungen zu Hause und in Schulen gedacht war, wo Töne eine größere
Bedeutung haben, verfügt er über eine stark erweiterte Tonkapazität.
Der Kern dieser besonderen Fähigkeiten ist ein spezieller Baustein, der von Texas
Instruments entwickelt und hergestellt wird. Dieser Tl-Sound-Chip kann Töne von
größerer Reinheit und Vielfalt erzeugen als die einfachen T imerschaltungen des
PC. Die Haupteigenschaft des T l-Sound-Chips ist, daß er drei unabhängige „Stim­
men" hat, was bedeutet, daß er drei separate Töne auf einmal erzeugen kann und
somit Mehrstimmigkeit erlaubt. Darüberhinaus verfügt der T l-Sound-Chip über
eine Lautstärkenregelung, womit er die Lautstärke der einzelnen Stimmen bestim­
men kann. Außerdem kann der T l-Sound-Chip „Geräusche" produzieren, z.B.
Motorgeräusche, Explosionen usw.
Der T l-Sound-Chip ist nicht die einzige Besonderheit des PCjr. Zusätzlich hat der
PCjr eine Ton-„Durchlaß"-Eigenschaft, mit der er die von ihm erzeugten Töne mit
Ton-Signalen anderer Quellen kombinieren kann, zum Beispiel mit einem Kasset­
tenrecorder. Mit dieser Eigenschaft kann man Tonaufzeichnungen in Lernpro­
gramme einbauen. Ein Programm für Fremdsprachen könnte zum Beispiel mit
einer Tonaufnahme demonstrieren, wie die Sprache wirklich ausgesprochen wird,
mit Hilfe des Computers Abschnitte wiederholen oder überspringen lassen.
15.4
Weitere Hardware-Komponenten
Wir haben bisher die wichtigsten Hardware-Komponenten des PC kennengelernt.
Zuletzt wollen wir noch ein paar weitere Bauteile der PC-Familie besprechen.
Wenn ein Computer, wie der PC, entwickelt wird, müssen seine Designer möglichst
weit in die Zukunft schauen und voraussehen, was wir mit unseren PCs tun wollen.
Es ist natürlich unmöglich, alles richtig vorauszusehen. So hielt man manches für
wichtig, was jetzt kaum benützt wird. Und manches wurde übersehen und erst spä­
ter hinzugefügt. In diesem Abschnitt werden wir einiges davon sehen.
15.4 Weiter Hardware-Komponenten
199
Eine der bemerkenswertesten Eigenschaften des PC ist sein Kassetten-Interface.
Die Designer des PC dachten, daß viele PCs ohne Plattenlaufwerke gekauft würden
(auch wenn uns das jetzt ganz unverständlich erscheinen mag). Einige der frühen,
billigen Homecomputer hatten keine Plattenlaufwerke und arbeiteten nur mit Kas­
settenbändern, um Programme und Daten zu speichern. Bei IBM glaubte man, daß
PC-Benutzer das auch wünschen könnten, und deshalb wurde der PC mit einem
Kassetten-Interface ausgerüstet.
Das Kassetten-Interface wurde nie für ernsthafte Zwecke benützt, und bei den wei­
terentwickelten Modellen des PC, dem XT und AT, hat man darauf ganz verzichtet.
Beim unseligen PCjr hat man sie beibehalten, für den Fall, daß das Interesse an
der Kassettenein-/ausgabe stieg.
Über das Kassetten-Interface kann man Daten, relativ langsam, vom Kassettenre­
corder lesen oder dorthin schreiben, wenn dieser an einen speziellen Adapter
angeschlossen ist. Der Computer kann Daten lesen und schreiben, den Kassetten­
motor an- und ausschalten, aber er kann grundlegende Funktionen, z.B. das Zu­
rückspulen der Kassette, nicht steuern, weil billige Kassettenrecorder manuell auf
Zurückspulen geschaltet werden müssen. Bei BASIC werden Kassetten-Funktio­
nen z.B. mit den Anweisungen MOTOR oder OPEN „CAS1 :" gesteuert.
Während das Kassetten-Interface fast vollständig ignoriert wurde, hat man für zwei
andere Eigenschaften aus dem originalen PC-Design spezielle Anwendungen
gefunden, obwohl auch sie nicht weit verbreitet sind und die meisten PC-Benutzer
sie genauso wie die Kassetten-Schnittstelle nicht zur Kenntnis nehmen. Gemeint
sind Joysticks und Lichtgriffel.
Joysticks sind ein besonderes Eingabegerät, das aus einem beweglichen Hebel dem Stick - und zwei Knöpfen - den „Auslösern" - besteht. Joysticks werden
hauptsächlich für Spielprogramme verwendet, und da der PC kein Spiele-orientier­
ter Computer ist, sind nur wenige PCs damit ausgerüstet. Für einen Joystick muß
eine spezielle Joystick-Adapterkarte installiert werden, genauso wie der Joystick
selbst. Da der PCjr als Heim-und Spielcomputer gedacht war, ist bei ihm das Äqui­
valent zu einer Joystick-Adapterkarte bereits eingebaut, und auf der Rückseite des
PCjr sind zwei Anschlüsse für Joysticks.
Abb. 15-1:
Ein typischer Joystick
200
15 Kommunikation, Drucker und weitere Komponenten
Abb. 15-2:
Ein typischer Lichtgriffel
Der Hebel eines Joysticks erlaubt zweidimensionale Bewegungen, und unsere
Programme können die Hebelposition in Form von X- und Y-Koordinaten lesen
und damit der Bewegung des Hebels folgen. Die Auslöserknöpfe können ebenfalls
gelesen werden, d.h. es kann festgestellt werden, ob sie gedrückt werden. Wie ein
Programm mit einem Joystick arbeiten kann, zeigen die BASIC-Anweisungen
ST ICK und STRIG.
Auch Lichtgriffel werden nur selten eingesetzt. Ein Lichtgriffel ist eine handliche
Sonde, mit der der Bildschirm berührt werden kann. Durch Kombination von Hard­
ware und ROM-BIOS-Software weiß der Computer genau, wo der Lichtgriffel den
Bildschirm berührt.
Die Bezeichnung Lichtgriffel läßt vermuten, daß der Stift Information schreibt, in
Wirklichkeit ist aber das Gegenteil der Fall. Er liest Information, insbesondere die
Position auf dem Bildschirm, an die der Lichtgriffel hingehalten wird. Wenn wir
natürlich den Griffel mit einer Ausgabesoftware kombinieren, die den Bewegungen
des Stiftes über den Bildschirm folgt, erscheint es, als ob der Stift auf den Bild­
schirm schreibt. Aber Lichtgriffel sind in Wirklichkeit nur Abtastgeräte.
Lichtgriffel können für vielerlei Zwecke verwendet werden, am meisten im Bereich
des sogenannten CAD/CAM - Computer Aided Design und Computer Aided Ma­
nufactoring. Zu Deutsch bedeutet das Computer-unterstützter Entwurf und Compu­
ter-unterstützte Produktion. Durch den Lichtgriffel können wir mit einem CAD/CAM­
Programm auf den Bildschirm zeichnen, aus einem Menü auswählen, indem wir
einfach mit dem Stift auf die gewünschte Option zeigen, wir können Teile einer
Zeichnung „herausgreifen" und verschieben usw.
Die Hard- und Software des PC kann nur erfühlen, wo der Lichtgriffel auf den Bild­
schirm gedrückt wird, wenn das Phosphor des Bildschirms sehr schnell aufleuch­
tet und wieder verschwindet. Das Phosphor des IBM-Monochrom-Bildschirmes ist
sehr stabil und deshalb für die Augen erträglicher, aber für die Arbeit mit einem
Lichtgriffel ist es damit ungeeignet. (Wenn Sie einen Monochrom-Bildschirm
haben, ist Ihnen vielleicht schon aufgefallen, daß es ein paar Sekunden dauert, bis
die Ausgabe vom Bildschirm verschwunden ist, eine Folge des hochstabilen
Phosphors.)
15.4 Weitere Hardware-Komponenten
Abb. 15-3:
201
Eine typische Maus
Für Lichtgriffel muß, wie bei den Joysticks, eine Adapterkarte installiert werden,
sowie der Lichtgriffel selbst, außer beim PCjr, der einen eingebauten Lichtgriffel­
Adapter hat. Die PEN-Anweisung von BASIC unterstützt den Lichtgriffel, und von ihr
erfährt man das Wichtigste darüber, wie Lichtgriffel arbeiten.
Sowohl Joysticks als auch Lichtgriffel sind besondere Eingabegeräte, durch die wir
den Computer mit Informationen über Positionen füttern können, aber nicht mit
Textinformationen des Bildschirms. Diesen Hardwaretyp nennt man allgemein Zei­
gegeräte. Joysticks und Lichtgriffel sind die zwei Zeigegeräte, die IBM in den Com­
puter eingebaut hat, weil man eine breite Anwendung vermutete. Statt dessen ist
inzwischen ein völlig anderes Zeigegerät verbreitet: die Maus.
Im abstrakten Sinn unterscheidet sich die Maus nicht von einem Lichtgriffel oder
einem Joystick. Tatsächlich gibt es sogar eine große Ähnlichkeit zwischen einem
Joystick und einer Maus, da beide sich frei in zwei Dimensionen bewegen können
und Auslöserknöpfe haben. Aber dann könnte man auch sagen, daß es keinen Un­
terschied gibt zwischen einer Tastatur, deren Tasten in der normalen Reihenfolge
angeordnet sind (QWERTY, wie es im Englischen genannt wird), und einer Tastatur,
deren Tasten in alphabetischer Reihenfolge angeordnet sind. Ihre Funktion ist
äquivalent, und der Unterschied besteht darin, daß die QWERTY-Tastatur ein ver­
breiteter Standard ist.
So ist es auch mit der Maus. Trotz der Tatsache, daß es andere Zeigegeräte gibt
und IBM den Lichtgriffel und den Joystick unterstützte (im ROM-BIOS), ist die Maus
zu einem weitverbreiteten Zeigegerät für unsere Programme geworden.
Es gibt eine große Vielfalt von Maustypen, manche mit zwei oder drei Knöpfen,
manche, die optisch funktionieren (und eine spezielle Unterlage erfordern, über die
sie laufen), andere funktionieren mechanisch, einige haben eigene Adapterkarten
und andere arbeiten mit einer seriellen Standardschnittstelle.
Trotz der großen Vielfalt - die einer weiten Anwendung der Maus eher entgegen­
wirken müßte - ist die Maus sehr beliebt geworden, und immer mehr wichtige PC-
202
15 Kommunikation, Drucker und weitere Komponenten
Programme benützen sie. (Ich habe dieses Buch mit dem Word-Programm von
Microsoft geschrieben, das eine Maus verwendet. Nachdem ich mich lange ge­
sträubt hatte, mit einer Maus zu arbeiten, entdeckte ich, daß sie sehr hilfreich
sein kann.)
Für die Verwendung einer Maus brauchen wir auf jeden Fall die Unterstützung
durch das BIOS, genauso wie das ROM-BIOS andere Geräte unterstützt. In einigen
Fällen (zum Beispiel bei TopView von IBM) beinhaltet das Programm, das mit der
Maus arbeitet, die gesamte BIOS-Unterstützung. In anderen Fällen (zum Beispiel
bei der Microsoft-Maus) wird die Maus mit ihrem eigenen Speicher-residenten Pro­
gramm geliefert, das BIOS-Unterstützung für alle Programme enthält, die die Maus
verwenden. Die zweite Kategorie hält es mehr mit der allgemeinen Philosophie,
nach der die BIOS-Unterstützung für ein Gerät durch das Gerät identifiziert werden
und separat zu den Programmen gehören sollte, die damit arbeiten.
Damit sind wir am Ende unserer Besprechung der PC-Hardware-Komponenten.
Unser nächstes Thema ist die eingebaute ROM-BIOS-Software des PC.
· �:.�Ai
Y"'UUßen
1.
Glauben Sie, daß es wichtige Vor- oder Nachteile bei der Verwendung von parallelen oder
seriellen Schnittstellen für den Drucker gibt?
2.
Wieviele Anwendungen können Sie noch für die serielle Schnittstelle finden, außer den hier
genannten?
3.
Schreiben Sie ein Programm, das mit den zwei Kanalbits experimentiert, die den Lautspre­
cher des Computers steuern. Sie können dabei von den kleinen Programmen dieses Kapi­
tels ausgehen. Versuchen Sie den Lautsprecher ein- und auszuschalten, ohne das Timer-Bit
zu verwenden. Prüfen Sie, wie schnell Sie mit einem BASIC-Kommando einen Impuls zum
Lautsprecher senden können, um einen möglichst hohen Ton zu erzeugen.
203
16
Das eingebaute BIOS
-
Teil 1: Grundlagen
In diesem Kapitel besprechen wir die Grundidee des eingebauten ROM-BIOS des
PC. Wir sollen die Philosophie des ROM-BIOS verstehen, wie es organisiert ist und
welche Aufgabe es erfüllt. Auf dieser Grundlage beschäftigen wir uns in Kapitel 17
mit den Details der Dienstprogramme des ROM-BIOS.
Bevor wir fortfahren, muß noch etwas klargestellt werden. Es gibt zwei Dinge in
unserem Computer, die BIOS genannt werden. Eines ist das ROM-BIOS, eine im
Computer fest eingebaute Software-Unterstützung. Das ist das Thema dieses und
des nächsten Kapitels. Das andere ist das DOS-BIOS, das als Teil von DOS ähn­
liche Funktionen anbietet (aber auf einem völlig anderen Niveau).
16.l
Die Ideen hinter dem BIOS
Das ROM-BIOS hat einen ungeschickten Namen, der nur andeutet, um was es
geht. ROM-BIOS ist die Abkürzung für Read-Only Memory Basic Input/Output
System, was zu Deutsch soviel wie grundlegendes Ein-/Ausgabesystem im ROM­
Speicher heißt. Ignorieren Sie den Namen und konzentrieren Sie sich darauf, was
es für uns leistet. Das ROM-BIOS ist ein im Computer eingebautes Programm­
paket, das die grundlegendsten, maschineabhängigen Kontrolloperationen für den
Computer erledigt.
Software funktioniert am besten, wenn sie in Ebenen aufgeteilt ist, wobei jede
Ebene bestimmte Aufgaben ausführt und die anderen übergeordneten Ebenen
von solchen Aufgaben entlastet. Gemäß dieser Philosophie ist das ROM-BIOS die
unterste Ebene, die der gesamten anderen Software und allen anderen Operatio­
nen im Computer zugrundeliegt. Die Aufgabe des ROM-BIOS ist es, sich um die
direkten Hardware-Belange zu kümmern und alle anderen Programme vor den
Details zu verschonen, wie die Hardware arbeitet.
Im Grunde ist das ROM-BIOS eine Schnittstelle zwischen der Hardware des Com­
puters und den Softwareprogrammen, die wir auf unseren Computern laufen las­
sen. Genauer gesagt, ist das ROM-BIOS einfach ein Programm wie jedes andere.
Aber wenn wir das ROM-BIOS verstehen wollen, sollten wir es uns besser als eine
Mischung aus Hardware und Software vorstellen. Funktional ist es nämlich eine
Brücke zwischen der Hardware des Computers und unserer Software.
Was ist das Besondere am ROM-BIOS? Was macht es zum Mittelding zwischen
Hardware und Software?
Die Antwort liegt in den Aufgaben des ROM-BIOS und wie es sie ausführt. Das
ROM-BIOS muß direkt die Hardware steuern und auf alle Anforderungen der Hard­
ware eingehen. Das geschieht größtenteils durch Verwendung der Ein-/Ausgabe­
kanäle, die wir in Kapitel 6 besprochen haben. Alle Komponenten des PC werden
hauptsächlich dadurch gesteuert, daß ihnen Kommandos oder Parameterzustände
durch die E/A-Kanäle gesendet werden, wobei alle Komponenten spezielle E/A­
Kanalnummern haben, über die sie angesprochen werden können.
204
16 Das eingebaute BIOS
-
Teil 1: Grundlagen
Wir wissen bereits, daß es viele wichtige Aspekte der Hardware gibt, die nicht über
E/A-Kanäle funktionieren, zum Beispiel die Speicheradressen, die die Bildschirm­
ausgabe steuern. Mit solchen Ausnahmen müssen unsere Programme meistens
direkt arbeiten. Es sind genau die Hardware-Komponenten, die das ROM-BIOS
nicht für uns überwachen muß.
Es darf jedoch nicht der Eindruck entstehen, daß sich das ROM-BIOS nur mit E/A­
Kanälen beschäftigt. Aber E/A-Kanäle zeigen am besten das Besondere des ROM­
BIOS. Es ist die Software, die am engsten mit der Hardware zusammenarbeitet und
alle Hardware-Details (wie E/A-Kanäle) erledigt, um die sich unsere Programme
nicht mehr zu kümmern brauchen.
Das Besondere am BIOS
Das Besondere am ROM-BIOS ist seine enge Zusammenarbeit mit der Hardware,
und das bedeutet, daß es eine Menge an Wissen über die Arbeitsweise der Hard­
ware enthält. Es ist nicht immer deutlich, was dieses Wissen ausmacht.
Wenn wir die ROM-BIOS-Listings studieren, die IBM für den PC herausgibt, können
wir bereits deutlich das Besondere an der BIOS-Programmierung erkennen, näm­
lich mit den richtigen E/A-Kanälen das richtige Kommando zu den Schaltungen
des PC zu senden. Was nicht so deutlich herauskommt, ist die Tatsache, daß dabei
auch ganz ordentlich getrickst wird.
Nicht alles, was notwendig ist, um die Computerschaltungen richtig arbeiten zu
lassen, läßt sich so ohne weiteres erkennen. Es gibt auch einige Feinheiten, zum
Beispiel Zeiterwägungen oder wie sich Fehler in der Praxis tatsächlich auswirken.
Zum Beispiel können manche Schaltungen ein Kommando jederzeit akzeptieren,
aber sie brauchen eine kurze Zeitspanne zwischen den Kommandos, um ein Kom­
mando zu verarbeiten, bevor sie ein weiteres annehmen können. In anderen Fällen
müssen vielleicht zwei separate Schritte mit möglichst wenig Unterbrechungszeit
ausgeführt werden. Im ROM-BIOS sind derart heikle Faktoren versteckt. Wir sehen
vielleicht eine Folge von Kommandos, die uns ganz einfach erscheint, die aber ein
verstecktes Element beinhaltet, eben zum Beispiel die sorgfältig ausgearbeiteten
Zeitfaktoren.
Dies ist ein Teil der Besonderheit der BIOS-Programmierung und der Grund,
warum viele Programmierer die BIOS-Programmierung als eine Kunst betrachten eine Kunst, die nicht nur die logischen Schritte enthält, aus denen alle Programme
bestehen, sondern auch die enge Zusammenarbeit zwischen den Programmen
und der Hardware.
205
16.2
Wie das ROM-BIOS arbeitet
Obwohl die sämtlichen Details über die ROM-BIOS-Arbeitsweise wirklich nur für
erfahrene Assembler-Programmierer interessant sind, sollten wir die Grundlagen
seiner Organisation und seiner Arbeitsweise verstehen, damit wir unsere Geräte
besser begreifen.
Zunächst ist das ROM-BIOS grob in drei funktionale Einheiten eingeteilt, die in
Abbildung 16-1 dargestellt sind.
Der erste Teil des ROM-BIOS sind die Start-Routinen, die unseren Computer zum
Laufen bringen, wenn wir ihn einschalten. Es gibt zwei Hauptteile bei den Start­
Routinen, nämlich einmal die. Routinen für den Selbsttest nach dem Einschalten
(oder POST-Routinen von Power-On Seif-Test), die prüfen, ob der Computer ein­
wandfrei funktionsfähig ist. Sie testen den Arbeitsspeicher auf Defekte und führen
weitere Tests durch, die sicherstellen, daß der Computer keine Funktionsstörungen
hat. Der andere Teil der Startprozedur ist die Initialisierung.
Zur Initialisierung gehören Dinge wie das Erzeugen von Interrupt-Vektoren, damit
der Computer zur entsprechenden Interrupt-Verwaltungsroutine springt, wenn ein
Interrupt auftritt. Die Initialisierung beinhaltet auch das Bereitmachen der Compu-
Start-up
Post
-
Initialisierung
Platten-Routine
Hardware­
interrupt­
Verwaltung
Dienstprogramm­
Verwaltung
Abb. 16-1:
Die Organisation des ROM-BIOS
�
Erweiterungsinitialisierung
206
16 Das eingebaute BIOS
-
Teil 1: Grundlagen
terausrüstung. Viele Komponenten des Computers verlangen, daß Register gesetzt
und Parameter geladen werden uvm., um sie in ihren funktionsfähigen Zustand zu
versetzen. Das ROM-BIOS kennt alle möglichen Zusatzausrüstungen, die ein PC
haben kann, und ist für ihre Initialisierung zuständig. Eingeschlossen in diese Initia­
lisierung sind Schritte, die dem ROM-BIOS mitteilen, welche Ausrüstung vorhan­
den ist. Einiges davon wird durch das Prüfen von Sehalterzuständen im Computer
festgestellt (beim originalen PC-Modell) oder durch das Lesen eines Permanent­
speichers, der die vorhandene Ausrüstung des Computers gespeichert hat (beim
AT-Modell). In manchen Fällen kann das ROM-BIOS einfach feststellen, welche
Ausrüstung installiert ist, indem es Geräteeinheiten elektronisch anzusprechen ver­
sucht und auf eine Antwort überprüft. (Der PCjr informiert sich auf diese Weise über
seine zusätzliche Ausrüstung.) Wie auch immer, das ROM-BIOS prüft und initiali­
siert die gesamte Ausrüstung, die es kennt.
Natürlich können wir unsere PCs mit weiteren Geräteeinheiten ausstatten, und dies
wird auch häufig praktiziert. Manche davon sind Standards (zum Beispiel die Spei­
chererweiterungen oder serielle und parallele Schnittstellen), aber das gilt nicht
immer. Einige Zusatzausrüstungen werden nicht von den Standard-ROM-BIOS­
Routinen versorgt und brauchen ihre eigene spezielle ROM-BIOS-Unterstützung.
Das ROM-BIOS ist deshalb darauf eingerichtet, nach BIOS-Zusätzen zu suchen.
Wie man das ROM-BIOS erweitert
Das ROM-BIOS in unseren PCs ist ein fester Bestandteil der Computerausrüstung,
was zu einem grundlegenden Problem führt. Wie können wir das ROM-BIOS um
neue Optionen erweitern? Es gibt eine Eigenschaft, die Erweiterungen des ROM­
BIOS erlaubt.
Das Verfahren ist einfach. ROM-BIOS-Erweiterungen werden als solche gekenn­
zeichnet, damit das Standard-ROM-BIOS sie entdecken kann und diese sich dann
selbst in das Standard-ROM-BIOS integrieren können.
So wie das eigentliche ROM-BIOS im Speicher an einer bestimmten Stelle plaziert
ist (dem oberen Teil des Speichers, im 64K großen F-Block), ist für die Zusätze
ebenfalls ein Standard-Speicherbereich reserviert, nämlich die Blöcke C, D und E.
Jede neue Ausrüstung, die spezielle ROM-BIOS-Unterstützung erfordert, - zum
Beispiel die Festplatte des XT oder die speziellen Bildschirmeigenschaften des
Kombinierten Graphik-Adapters - plaziert ihren BIOS-Lesespeicher irgendwo in
diesem Block und setzt darin eine besondere Markierung, hex 55 AA, in den ersten
zwei Byte. Das ROM-BIOS kann nicht einfach irgendwo positioniert sein. Es muß
eine besondere Position sein, die nicht in Konflikt mit irgendwelchen anderen
ROM-BIOS-Erweiterungen gerät, und sie muß auf einer 2K-Speichergrenze begin­
nen.
Das Standard-ROM-BIOS durchsucht, als Teil seiner Start-Routinen, den ROM­
BIOS-Erweiterungsbereich nach der Kennung 55 AA. Wenn es eine solche findet,
übergibt es die Steuerung an den Anfang der ROM-BIOS-Erweiterung. Dadurch
kann die ROM-BIOS-Erweiterung seine Ausrüstung initialisieren und sich selbst in
16.2 Wie das ROM-BIOS arbeitet
207
den Rest des ROM-BIOS integrieren. Beispielsweise könnte eine ROM-BIOS­
Erweiterung für einen neuen Bildschirmadapter (wie den Kombinierten Graphik­
Adapter) den Interrupt-Vektor für Bildschirmdienstprogramme so ändern, daß er
auf die ROM-BIOS-Erweiterung verweist und nicht auf die alten ROM-BIOS-Bild­
schirmroutinen.
Eine ROM-BIOS-Erweiterung führt die Start- und Initialisierungsarbeiten aus, wenn
das Standard-ROM-BIOS ihr die Steuerung während der Startprozeduren überge­
ben hat. Ist die ROM-BIOS-Erweiterung initialisiert, gibt es die Steuerung an das
Standard-ROM-BIOS zurück, und der Computer arbeitet wie gewohnt weiter.
Übrigens gelten auch die Software-Cartridges des PCjr als BIOS-Erweiterungen.
Sie werden dem Speicher hinzugefügt wie jede andere BIOS-Erweiterung und
haben die gleiche Kennung, über die sie vom Standard-BIOS identifiziert werden.
Die einzige Besonderheit an ihnen ist, daß sie ausgewechselt werden können,
während andere BIOS-Erweiterungen normalerweise fest installiert sind und an
ihrem Platz bleiben.
Der letzte Teil der Start-Routinen im ROM-BIOS ist die „Boot"-Routine, die DOS
startet oder irgendein anderes Betriebssystem, das wir in unserem Computer
haben. Beim sogenannten „Boot-Strap"-Vorgang versucht das ROM-BIOS einen
Boot-Satz am Anfang einer Platte zu lesen. Das BIOS probiert es zuerst mit Lauf­
werk A und, wenn es dort keinen Erfolg hat und der Computer ein Festplatten-Lauf­
werk C hat, wiederholt es die Prozedur bei der Festplatte. Wenn keine der Platten
gelesen werden kann, springt das ROM-BIOS in seinen plattenlosen Modus (bei
den IBM-Modellen wird dann das eingebaute BASIC aktiviert; bei anderen Model­
len, wie den Compaq-Geräten, wird eine Meldung ausgegeben, die mitteilt, daß
der Computer eine Boot-Platte braucht).
Normalerweise kann das ROM-BIOS einen Boot-Satz auf der Platte lesen und
übergibt die Steuerung des Computers dem kurzen Programm im Boot-Satz. Wie
wir in Kapitel 9 und 10 besprochen haben, beginnt das Boot-Programm damit,
DOS (oder ein anderes Betriebssystem) in unseren Computer zu laden.
Nachdem die Start-Routinen beendet sind, ist unser Computer einsatzbereit. Die
anderen beiden Teile des ROM-BIOS bilden die eigentliche Computerarbeit. Es
handelt sich um die Hardware-Interrupt-Verwaltung und die Dienstprogramm-Ver­
waltung. Sie funktionieren unabhängig voneinander, arbeiten aber eng zusammen.
Die Dienstprogramm-Verwaltungsroutinen dienen unseren Programmen (und
DOS), indem sie alle Dienstprogramme ausführen, die unsere Programme brau­
chen. In Kapitel 17 werden wir diese Dienstprogramme genauer behandeln. Solche
Dienstleistungen können beispielsweise darin bestehen,
den Bildschirm zu
löschen oder den Bildschirm vom Textmodus in den Graphikmodus umzuschalten
oder Informationen von der Platte zu lesen oder Informationen auf dem Drucker
auszugeben. Hauptsächlich beziehen sich die ROM-BIOS-Dienstprogramme, die
die Dienstprogramm-Verwaltungsroutine ausführt, auf die Hardware des Compu­
ters, den Bildschirm, die Tastatur, die Platten, die Drucker usw. Das sind die grund­
legenden Ein-/Ausgabe-Dienstprogramme, die dem BIOS seinen Namen geben.
208
16 Das eingebaute BIOS
-
Teil 1: Grundlagen
Aber es gibt auch andere Dienstprogramme, die das ROM-BIOS ebenfalls aus­
führt, und die nicht die Ein- oder Ausgabe betreffen. Zum Beispiel verfolgt das
ROM-BIOS die Tageszeit, und eines seiner Dienstprogramme kann unseren Pro­
grammen die Zeit mitteilen.
Um die Dienstprogramm-Anforderungen unserer Programme ausführen zu kön­
nen, muß das ROM-BIOS direkt mit den Ein-/Ausgabegeräten des Computers zu­
sammenarbeiten, und das ist der eigentliche trickreiche Teil des BIOS. Wie schon
erwähnt, schließt das auch die Verwendung von E/A-Kanälen ein, über die Kom­
mandos ausgegeben und Daten übertragen oder empfangen werden können und
zwar von verschiedensten Geräten wie Druckern, Platten usw. Die Hauptaufgabe
des ROM-BIOS ist es hier, unseren Programmen die umständlichen Details dieser
Arbeit zu ersparen. Unsere Programme brauchen nicht zu wissen, über welchen
E/A-Kanal man Daten zum Drucker sendet. Statt dessen beauftragen sie das ROM­
BIOS damit, Daten zum Drucker zu senden, und. das BIOS kümmert sich um die
Einzelheiten. Unsere Programme müssen somit nicht über die Funktionsweise
eines Druckers Bescheid wissen und, was sogar noch wichtiger ist, sie müssen
sich auch nicht um die schwierigen Probleme der Fehlerbehandlung kümmern.
Die Ausrüstung unseres Computers arbeitet überraschend oft fehlerhaft und funk­
tioniert gelegentlich nicht richtig. Ein Teil der ROM-BIOS-Arbeit ist es, auf Fehler zu
überprüfen und Operationen zu wiederholen, um festzustellen, ob das Problem nur
vorübergehend auftrat (was oft der Fall ist), und nur bei hartnäckigen Fehlern das
Problem unseren Programmen zu melden.
Manche Hardware-Komponenten unseres Computers verlangen nur dann eine
ROM-BIOS-Leistung, wenn wir wollen, daß sie aktiv werden (d.h. wenn unsere Pro­
gramme ein Dienstprogramm vom BIOS anfordern). Dagegen können andere
Komponenten eine Überwachung erfordern, die völlig separat ist von dem, was
unsere Programme tun. Wir kennen bereits einige Beispiele dafür. Wir wissen, daß
die Tastatur einen Interrupt erzeugt, wenn wir eine Taste drücken, und damit die
Aufmerksamkeit des ROM-BIOS verlangt. Ebenso erzeugt die interne Uhr des PC
bei jedem Ticken einen Interrupt, nämlich 18 mal pro Sekunde. Es gibt auch noch
andere Hardware-Interrupts. Zum Beispiel verwenden die Platten einen Interrupt,
wenn sie eine Leistung des ROM-BIOS benötigen. Solche Bedürfnisse der Hard­
ware befriedigt der letzte Teil des ROM-BIOS, die Hardware-Interrupt-Verwaltung.
Die Hardware-Interrupt-Verwaltung kümmert sich um die unabhängigen Bedürf­
nisse der Hardware. Sie arbeitet zwar unabhängig, aber in enger Kooperation mit
der Dienstprogramm-Verwaltung. In Kapitel 14, in dem wir die Tastatur besprochen
haben, haben wir an einem Beispiel gesehen, wie das funktioniert. Die Tastatur­
Verwaltungsroutinen sind in zwei getrennte, aber verwandte Teile eingeteilt, die zu­
sammenarbeiten. Der Hardware-Interrupt-Teil der Tastatur-Verwaltung reagiert auf
unsere Tastaturaktionen, speichert sie und liefert die entsprechenden Tastaturzei­
chen bei Bedarf an unsere Programme. Der Dienstprogramm-Verwaltungsteil der
Tastatur-Routinen empfängt die Anforderungen unserer Programme nach Tastatur­
daten und übergibt ihnen die Tastaturzeichen, die der Interrupt-Verwalter erhalten
hat. Diese beiden Teile blicken in verschiedene Richtungen - einer zur Hardware,
der andere zu unseren Programmen - und dienen verschiedenen Bedürfnissen.
Zusammen lassen sie die Tastatur sinngerecht funktionieren.
16.2 Wie das ROM-BIOS arbeitet
209
Wir wissen nun das Wichtigste über die Prinzipien und die Organisation des ROM8108. Auf dieser Grundlage können wir in Kapitel 17 besprechen, welche Art von
Dienstprogrammen das ROM-BIOS für unsere Programme ausführen kann.
1.
Wenn Sie die Norton Utilities haben, können Sie mit dem SI-System-Information-Programm
nach der BIOS-Kennung suchen, die die BIOS-Erweiterungen kennzeichnet. Lassen Sie es
auf Ihrem Computer laufen und sehen Sie, was Sie finden.
2.
Untersuchen Sie, wie die Interrupt- und Dienstprogramm-Verwaltungsteile der ROM-BIOS­
Routinen für die Tastatur miteinander arbeiten. Wie würden Sie die Details gestalten, damit
diese beiden Teile sicher und erfolgreich zusammenarbeiten können?
3.
Was sind nach Ihrer Meinung die besonderen Anforderungen, wenn eine ROM-BIOS-Erwei­
terung initialisiert werden soll? Wie kann sich eine Erweiterung in das BIOS integrieren, ohne
eine Störung zu verursachen?
210
17
Das eingebaute BIOS
-
Teil 2: Details
In diesem Kapitel besprechen wir genauer, was das eingebaute ROM-BIOS der
PC-Familie für unsere Programme leistet. Wir wollen hauptsächlich eine Liste der
Standard-Dienstprogramme aufstellen, die das BIOS liefert, ohne uns dabei zu
sehr in Einzelheiten zu verlieren - das würde die Lektüre ziemlich langweilig
gestalten. Statt dessen sollen Sie ein Gefühl dafür erhalten, was das BIOS für uns
prinzipiell leisten kann, damit Sie gemäß dem Ziel dieses Buches den PC ver­
stehen lernen.
Zunächst müssen wir uns einige Prinzipien und Probleme ansehen, die den
Dienstprogrammen zugrundeliegen.
17.1
Arbeitsprinzipien und Geräteprobleme
Wenn Sie die Arbeitsweise des ROM-BIOS und vor allem auch die Liste der BIOS­
Dienstprogramme und Kommentare verstehen wollen, die in Abschnitt 17.2 folgen,
sollten Sie einige der Prinzipien kennen, die der Arbeitsweise und Organisation
des BIOS zugrundeliegen, sowie die wichtigsten Designprobleme, die für eine so
empfindliche Software wie das ROM�BIOS typisch sind.
Das BIOS muß mit maximaler F lexibilität operieren, Programme, die es benützen,
möglichst wenig belasten und größtmögliche Sicherheit bieten.
Wir haben bereits gesehen, wie das Design des BIOS dieses Ziel zu erreichen ver­
sucht, als wir einen der BIOS-Interrupt-Verwalter in Kapitel 6 betrachtet haben. Die
BIOS-Routinen dürfen deshalb Interrupts möglichst wenig unterdrücken, vor allem
weil Interrupts die treibende Kraft des Computers sind. Bei unserem Interrupt-Ver­
walter aus Kapitel 6 wurden Interrupts aus diesem Grund immer sofort wieder reak­
tiviert. Manchmal ist das allerdings nicht möglich. Und manchmal ist es notwendig,
einige kritische Schritte auszuführen, die nicht unterbrochen werden dürfen, aber
auch in solchen Fällen hält das BIOS diese Schritte möglichst kurz.
Da das BIOS Interrupts fast immer zuläßt, können andere BIOS-Dienstprogramme
über Interrupts aktiviert werden, während das BIOS gerade eine frühere Dienstpro­
gramm-Anforderung ausführt. Um zu vermeiden, daß Störungen auftreten bzw.
sich die Dienstprogramme gegenseitig behindern, muß das ROM-BIOS speziell
programmiert sein; man nennt dies reentrantfähige Codierung. Reentrantfähige
Programme, wie das ROM-BIOS, sind so gestaltet, daß alle Arbeitsdaten und
Statusinformationen, die zu jeder Dienstprogramm-Anforderung gehören, getrennt
gespeichert werden. Dazu werden alle Daten entweder im Stack aufbewahrt oder
in Registern, die (durch Programmierkonventionen) in den Stack gerettet werden,
wenn ein anderer Interrupt auftritt.
Obwohl diese reentrantfähige Codierung nicht schwierig ist, muß sie sorgfältig
ausgeführt werden und sie schränkt die Wege ein, auf denen Informationen zwi­
schen dem BIOS und einem Programm transportiert werden können, das Dienst­
programme vom BIOS anfordert. Ein Großteil des BIOS-Designs resultiert aus
dieser Reentrantfähigkeit.
17.1
Arbeitsprinzipien und Geräteprobleme
211
Wie wir in Abschnitt 17.2 sehen werden, wenn wir die Details der BIOS-Dienstpro­
gramme besprechen, sind diese modular in Gruppen organisiert. Zum Beispiel
sind sämtliche verschiedenen Dienstprogramme für den Bildschirm unter einer ln­
terruptnummer zusammengefaßt, und andere BIOS-Dienstprogramme benützen
diesen Interrupt nicht.
Diese modulare Organisation in Gruppen und Interrupts hat zwei offensichtliche
Vorteile. Erstens können durch diese Gruppierung Programme, die die BIOS­
Dienstprogramme benützen, leichter mit diesen umgehen. Zweitens kann bei
Bedarf ein bestimmtes BIOS-Dienstprogramm relativ unkompliziert geändert wer­
den, indem einfach ein Interrupt-Verwalter ersetzt wird (zum Beispiel die Änderung
der Bildschirmroutinen, um die besonderen Eigenschaften eines neuen Bild­
schirmadapters wie des Kombinierten Graphik-Adapters anzupassen).
Eine Schwierigkeit ist bisher nicht sehr gut im ROM-BIOS gelöst worden. Es sind
die Probleme, die durch die verschiedenen Eigenschaften der unterschiedlichen
PC-Modelle hervorgerufen werden (das gilt besonders für den PCjr, den PC-AT und
den 3270-PC) als auch durch die Charakteristiken der verschiedenen PC-Optio­
nen (zum Beispiel die zahlreichen Kombinationen möglicher Bildschirmadapter).
Jedes Hauptmodell der PC-Familie hat spezielle Variationen in den ROM-BIOS­
Dienstprogrammen, und dasselbe gilt auch für einen Großteil der Zusatzausrüstun­
gen. Für uns als PC-Anwender bzw. für unsere Programme ist es jedoch oft sehr
schwierig, mit den vielen möglichen Variationen in den BIOS-Dienstprogrammen
umzugehen, die mit all diesen Modellen und der Zusatzausrüstung geliefert
werden.
Die Angelegenheit wird noch komplizierter, da IBM über zukünftige Entwicklungen
keine Auskunft gibt, und somit kann der Programmierer zukünftige Änderungen
nur schwer berücksichtigen. Die Technischen Handbücher für die verschiedenen
PC-Modelle tragen noch zur Verwirrung bei, weil sie nur ein bestimmtes Gerät und
nicht die ganze PC-Familie berücksichtigen. Ein Programmierer, der ein Techni­
sches Handbuch studiert, kann nicht sagen, ob die in diesem Handbuch beschrie­
benen Dienstprogramme auf jedes PC-Modell zutreffen. Man muß die Handbücher
vergleichen, um festzustellen, was gleich ist. Wir behandeln deshalb in diesem
Kapitel nur die universellen ROM-BIOS-Dienstprogramme, da wir uns nicht auf die
Eigenheiten der verschiedenen Modelle einlassen können.
Technisch gesehen gibt es noch viel mehr über das Design und die Arbeitsweise
des ROM-BIOS zu sagen, aber für unsere Zwecke reichen die bisherigen Ausfüh­
rungen aus.
Die folgende Besprechung der universellen ROM-BIOS-Dienstprogramme ist
mehr technischer Art und einige Leser wollen das vielleicht überspringen; es gibt
allerdings zwei gute Gründe, sich damit zu beschäftigen. Erstens erfahren Sie,
welche Dienstprogramme das ROM-BIOS unseren Programmen zur Verfügung
stellt und wie Ihre Programme von diesen Dienstprogrammen profitieren können.
zweitens erhalten Sie ein Gefühl dafür, auf welchem Niveau zwischen sehr einfa­
chen oder komplexen Programmen ROM-BIOS-Dienstprogramme angesiedelt
sind.
212
17 Das eingebaute BIOS - Teil 2: Details
17.2
Die BIOS-Dienstprogramme
Auch wenn der Abschnitt mit „Technischer Hintergrund" überschrieben ist, bedeu­
tet das nicht, daß das, was wir hier besprechen, besonders technisch oder schwie­
rig zu verstehen ist.
Die ROM-BIOS-Dienstprogramme sind in Gruppen organisiert, wobei jede Gruppe
ihren eigenen, für sie reservierten Interrupt hat. In Abbildung 17-1 finden Sie eine
Übersichtstabelle. Wir werden die Gruppen nacheinander behandeln und mit der
kompliziertesten
und
interessantesten
beginnen:
den
Bildschirm-Dienstpro­
grammen.
Interrupt
5
16
Dienstprogrammgruppe
Bildschirm-Hardcopy
Bildschirm-Dienstprogramme
17
Hardware-Konfiguration
18
Speichergröße
19
Platten-Dienstprogramme
20
Dienstprogramme für die serielle Schnittstelle (RS-232)
21
Dienstprogramme für das Kassetten-Interface
22
Tastatur-Dienstprogramme
23
Dienstprogramme für die parallele Schnittstelle
(Drucker)
24
ROM-BASIC
25
Boot-Strap
26
Zeit-Dienstprogramme
Abb. 17-1:
Die Interrupts der ROM-BIOS-Dienstprogramme
Es gibt 16 separate Bildschirm-Dienstprogramme in der Grundausstattung des
ROM-BIOS. Das ist eine ziemlich große Anzahl und sie schließt nicht einmal alles
ein, was für besondere Modelle (PCjr, AT) oder weiterentwickelte Bildschirm­
adapter, wie den Kombinierten Graphik-Adapter, entwickelt wurde. Diese 16 sind
die Originalausstattung des ersten PC-Modells und sie bilden die Basis der Bild­
schirm-Dienstprogramme für alle Mitglieder der Familie. Die Dienstprogramme
sind von 0 bis 15 durchnumeriert.
Das erste Dienstprogramm, Nummer 0, ändert den Bildschirmmodus. Bei PCs, die
nur den Standard-Monochrom-Adapter haben, besteht überhaupt keine Auswahl.
Es gibt nur den monochromen Modus (Modus 7). Bei PCs, die mit dem Farb­
Graphik-Adapter ausgestattet sind, stehen sieben Modi zur Auswahl: vier Textmodi
17.2 Die BIOS-Dienstprogramme
und drei Graphikmodi, wie wir in Kapitel
213
11 besprochen haben. Dieses Dienst­
programm wird von unseren Programmen verwendet, um den Bildschirm in den
gewünschten Modus umzuschalten. Wie wir später sehen werden, gibt es ein
weiteres Dienstprogramm, das unseren Programmen den aktuellen Modus mit­
teilen kann.
Das Bildschirm-Dienstprogramm 1 steuert die Größe und Art des Cursors. Es setzt
die Scan-Zeilen, auf denen der Cursor erscheint, wie wir ebenfalls in Kapitel
11
behandelt haben. Dieses ROM-BIOS-Dienstprogramm liegt der BASI C-Anweisung
LOCATE„,X,Y zugrunde.
Das Dienstprogramm
2 bestimmt die Position des Cursors auf dem Bildschirm,
entsprechend der BASIC-Programmanweisung LOCATE X,Y.
Das Bildschirm-Dienstprogramm
3 teilt unseren Programmen mit, wo sich der
Cursor befindet und wie er aussieht. Dieses Dienstprogramm ist das Gegenstück
zu den Dienstprogrammen
1 und 2. Damit können unsere Programme den aktu­
ellen Cursor-Status verfolgen, so daß er wieder zurückgesetzt werden kann, wenn
das Programm beendet ist. Wie nützlich das sein kann, werden wir an einem
Beispiel sehen, wenn wir das Hardcopy-Dienstprogramm besprechen.
Dienstprogramm 4 ist das einzige Dienstprogramm, das den Lichtgriffel unterstützt.
Wenn ein Programm dieses Dienstprogramm aktiviert, meldet das BI OS, ob der
Stift angeschlossen ist und wo er den Bildschirm berührt. Interessanterweise
meldet es die Stiftposition auf zwei verschiedene Arten: in Form des Rasters aus
Textzeichenpositionen und in Form von Graphik-Pixel-Positionen, damit alle Pro­
gramme die Lichtgriffelposition leicht interpretieren können.
Das Bildschirm-Dienstprogramm 5 wählt aus, welche Bildschirmseite bei den Bild­
schirmmodi aktiv ist (d.h. auf dem Bildschirm gezeigt wird), die über mehr als eine
Bildschirmseite verfügen (mehr darüber in Kapitel
Mit den Dienstprogrammen
11).
6 und 7 kann man Fenster rollen lassen. Man kann
damit ein rechteckiges „Fenster" auf dem Bildschirm definieren und die Daten im
Fenster von unten nach oben (Dienstprogramm
6) oder von oben nach unten
rollen lassen (Dienstprogramm 7). Beim sogenannten Scrollen werden Leerzeilen
oben oder unten eingefügt, in die unsere Programme neue Informationen schrei­
ben können. Der Zweck dieser Dienstprogramme ist es, daß unsere Programme
bequem Informationen auf einen bestimmten Bildschirmausschnitt schreiben kön­
nen, ohne den restlichen Bildschirminhalt zu zerstören.
Die nächsten drei Bildschirm-Dienstprogramme arbeiten mit Textzeichen. Dienst­
programm 8 liest das aktuelle Zeichen (und dessen Attribut) vom Bildschirm (bzw.
aus dem Bildschirmspeicher). Dieses Dienstprogramm kann sogar im Graphik­
modus die Pixeldarstellung eines Zeichens in den Zeichencode umrechnen.
Dienstprogramm 9 ist das Gegenstück zu Dienstprogramm 8. Es schreibt ein Zei­
chen mit dem von uns angegebenen Bildschirm-Attribut auf den Bildschirm.
Dienstprogramm
10 schreibt ebenfalls ein Zeichen, aber es verwendet das jewei­
lige aktuelle Ausgabe-Attribut, das für eine Bildschirmposition vorliegt.
214
17 Das eingebaute BIOS
-
Teil 2: Details
Die nächsten drei Dienstprogramme liefern Operationen für die Graphikmodi. Das
Bildschirm-Dienstprogramm 11 legt die Farbpalette fest. Dienstprogramm 12 gibt
einen einzelnen Punkt auf dem Bildschirm aus, und Dienstprogramm 13 liest einen
Punkt vom Bildschirm.
Das Bildschirm-Dienstprogramm 14 ist eine Variation von Dienstprogramm Num­
mer 8, das ein Zeichen ausgibt. Dieses Dienstprogramm schreibt ein Zeichen auf
den Bildschirm und bewegt den Cursor zur nächsten Schreibposition des Bild­
schirmes. (Bei anderen Dienstprogrammen muß der Cursor mit einer separaten
Operation weiterbewegt werden.) Mit diesem Dienstprogramm können unsere
Programme den Bildschirm bequem wie einen Drucker benützen und Informatio­
nen mit einem Minimum an Aufwand ausgeben. Aus diesem Grund wird es „Fern­
schreiber'' (engl.: teletype) genannt.
Das letzte Dienstprogramm, Nummer 15, ist das Gegenstück zum ersten. Es teilt
unseren Programmen den aktuellen Bildschirmstatus mit, damit sie ihre Operatio­
nen dem Bildschirmmodus anpassen oder den aktuellen Modus aufzeichnen und
nach dem Ändern des Modus dorthin zurückschalten können. Mit diesem Dienst­
programm läßt sich am besten feststellen, ob ein Computer einen Monochrom­
Adapter oder einen Farb-Graphik-Adapter verwendet. Sogar solche Programme,
die die gesamte Bildschirmausgabe selbst erledigen, ermitteln damit den jewei­
ligen Bildschirmadapter, um so ihre Ausgaben auf den richtigen Bildschirmspei­
cheradressen zu plazieren.
Diese Bildschirm-Dienstprogramme für Lesen und Schreiben sind zwar eigentlich
der bequemste Weg für unsere Programme, Informationen auf dem Bildschirm
auszugeben. Sie haben den Vorteil, daß der Ausgabe-Header für den Bildschirm
standardisiert behandelt wird und automatisch an neue Hardware angepaßt wer­
den kann (z.B. an den Kombinierten Graphik-Adapter oder neue Bildschirmzu­
sätze). Viele Programme arbeiten jedoch nicht mit diesen Dienstprogrammen, weil
sie eine Menge an langwieriger Verwaltung beinhalten und deshalb für viele
Zwecke zu langsam sind.
Damit sind wir am Ende der universellen Bildschirm-Dienstprogramme. Es gibt
noch mehr, aber keine universell gültigen für die gesamte PC-Familie. Die zusätz­
lichen Dienstprogramme, die nur auf wenige Modelle oder einige spezielle Bild­
schirmadapter zutreffen, unterscheiden sich in ihren Prinzipien nicht von denen,
die wir behandelt haben.
Als nächstes betrachten wir ein ziemlich spezielles Dienstprogramm, das Hard­
copy-Dienstprogramm. Es unterscheidet sich von allen anderen. Die meisten
ROM-BIOS-Dienstprogramme unterstützen ein ganz bestimmtes Peripheriegerät,
z.B. den Bildschirm oder die Tastatur. Die restlichen Dienstprogramme vermitteln
spezielle Informationen, z.B. die Tageszeit oder die im Computer installierte Spei­
chergröße. Dieses Hardcopy-Dienstprogramm verhält sich dagegen völlig anders.
Das Hardcopy-Dienstprogramm (Print-Screen) soll den angezeigten Bildschirmin­
halt auf Drucker ausgeben. Wir können diese Funktion direkt mit der PRTSC-Taste
auslösen. Was dieses Dienstprogramm so besonders interessant macht, ist die Tat-
17.2 Die BIOS-Dienstprogramme
215
sache, daß es gänzlich aus anderen ROM-BIOS-Dienstprogrammen besteht und
eigentlich nichts Selbstständiges leistet.
Print-Screen beginnt seine Arbeit mit Bildschirm-Dienstprogramm 3, um die aktu­
elle Cursorposition festzustellen, und anschließend mit Dienstprogramm 15, um die
Dimensionen des Bildschirms zu ermitteln. Es speichert die Cursorposition, damit
später die ursprüngliche Position wiedereingenommen werden kann, und bewegt
dann den Cursor Zeile für Zeile über sämtliche Positionen des Bildschirms. Bei
jeder Position wird mit Dienstprogramm 8 ein Zeichen vom Bildschirm gelesen
und mit einem Drucker-Ausgabeprogramm, das wir später kennenlernen werden,
auf den Drucker kopiert. Wenn dieser Vorgang abgeschlossen ist, plaziert es den
Cursor wieder auf seine ursprüngliche Position und gibt dann die Steuerung an
das Programm zurück, das es aufgerufen hat.
Viele stellen sich das Hardcopy-Dienstprogramm als eine Art Beigabe zur Tastatur
vor, die durch die PRTSC-Taste ausgelöst wird. Das entspricht jedoch nicht den Tat­
sachen. Print-Screen ist ein Standard-ROM-BIOS-Dienstprogramm, das durch ein
Programm aufgerufen werden kann und wie jedes andere Dienstprogramm akti­
viert wird: mit einer !NT-Interrupt-Anweisung (in diesem Fall Interrupt 5). Die PRTSC­
Taste funktioniert dadurch, daß die ROM-BIOS-Tastaturroutinen die Tastaturaktivitä­
ten prüfen und, wenn PRTSC festgestellt wird, mit Interrupt 5 das Hardcopy-Dienst­
programm anfordern. Dasselbe kann auch durch eines unserer Programme
geschehen.
Wir kommen nun zu den weiteren Hardware-unterstützenden Dienstprogrammen
und besprechen zuletzt die Informations-Dienstprogramme.
Die Platten-Dienstprogramme werden durch Interrupt-Nummer 19 aufgerufen. Es
gibt sechs grundlegende Dienstprogramme, die von 0 bis 5 numeriert sind. Das
erste mit Nummer 0 setzt das Plattenlaufwerk und seinen Controller zurück. Es ist
ein lnitialisierungs- und Fehlerbehandlungs-Dienstprogramm, das von Dienstpro­
gramm Nummer 1 unterstützt wird, das den Status des Plattenlaufwerkes an die
Fehlerbehandlungs- und Steuerroutinen meldet.
Das Platten-Dienstprogramm 2 liest Plattensektoren in den Speicher. Die Sektoren
müssen nicht einzeln gelesen werden, sondern es können beliebig viele aufeinan­
derfolgende Sektoren auf eine Spur gelesen werden. Platten-Dienstprogramm 3
schreibt in gleicher Weise auf Sektoren.
Das Platten-Dienstprogramm 4 überprüft die auf eine Platte geschriebenen Daten,
ob sie richtig aufgezeichnet worden sind. Dieses Dienstprogramm liegt der DOS­
Option „VERIFY ON" zugrunde, die wir beim VERIFY-Kommando und der VERIFY­
Möglichkeit in der DOS-Konfigurationsdatei (CONFIG.SYS) finden. Diese Überprü­
fung wird häufig mißverstanden. Sie überprüft nicht die auf der Platte gespeicher­
ten Daten, um festzustellen, ob es korrekt die gleichen Daten wie im Speicher sind
(Daten, die wir gerade gelesen oder geschrieben haben). Dieses Dienstprogramm
überprüft lediglich, ob die Plattendaten richtig aufgezeichnet worden sind und zwar
durch Testen auf Paritätsfehler und andere Aufzeichnungsfehler. Damit ist im allge­
meinen gewährleistet, daß unsere Daten korrekt sind, aber es ist keine Garantie.
216
17 Das eingebaute BIOS
-
Teil 2: Details
Wenn wir falsche Daten haben, die aber richtig aufgezeichnet sind, meldet uns die­
ses Überprüfungs-Dienstprogramm, daß alles in Ordnung ist.
Das Platten-Dienstprogramm 5, das letzte der Gruppe, formatiert eine Spur auf
einer Platte. Das ist die physikalische Formatierung, die der logischen Formatie­
rung einer Platte durch DOS zugrundeliegt (vgl. dazu den entsprechenden
Abschnitt von Kapitel
9). Dieses Formatierungs-Dienstprogramm ist interessant,
weil es für jede Spur einzeln die Anzahl der Sektoren definiert, wie die Sektoren
durch Sektornummern gekennzeichnet sind, wie die Sektoren angeordnet sind
und wie groß jeder Sektor ist. Normalerweise haben alle Sektoren auf einer Spur
die gleiche Größe (512 Bytes). Sie sind sequentiell, mit 1 beginnend, durchnume­
riert, und bei Disketten sind sie physikalisch in numerischer Reihenfolge angeord­
net (bei Festplatten ist das nicht der Fall). Das Verändern einiger dieser Standard­
charakteristiken ist die Basis vieler Kopierschutzsysteme. Sogar wenn man nur die
Reihenfolge ändert, in der die Sektoren auf die Platte geschrieben werden, kann
man das als Kopierschutz verwenden, weil 'die Standard-DOS-COPY- und DISK­
COPY-Kommandos die unübliche Sektorenanordnung nicht übertragen, und ein
kopiergeschütztes Programm kann die Zeitdifferenz feststellen, die die Anordnung
der Sektoren mit sich bringt.
Die Dienstprogramme für die serielle Schnittstelle (RS-232, Kommunikationslei­
tung) werden durch Interrupt 20 aktiviert. Die serielle Schnittstelle läßt sich ziemlich
einfach verwenden - alles ist einfach im Vergleich zum Bildschirm und den Plat­
tenlaufwerken; es werden nur vier Dienstprogramme benötigt. Dienstprogramm
Nummer 0 initialisiert die Kommunikations-Schnittstelle, indem es die grundlegen­
den Parameter setzt, die wir in Kapitel 15 besprochen haben (Baudrate etc.).
Dienstprogramm 1 schickt ein Byte zur Schnittstelle, Dienstprogramm 2 liest ein
Byte. Durch Nummer 3, das letzte Dienstprogramm, erhält man eine Statusinforma­
tion, die zum Beispiel angibt, ob Daten bereitstehen.
Es folgt nun ein Satz von Dienstprogrammen für das Kassetten-Interface des PC,
eine Eigenschaft des originalen PC, die wenig benützt und bei der Gestaltung der
weiterentwickelten Modelle der Familie weggelassen wurde. Dafür gibt es vier
Dienstprogramme, die in zwei symmetrischen Paaren angeordnet sind und durch
Interrupt 21 aufgerufen werden. Die Dienstprogramme 0 und 1 schalten den Kasset­
tenbandmotor ein und aus. Die Dienstprogramme 2 und 3 lesen und schreiben
256-Byte-große Datenblöcke. Das ist alles.
Die drei Tastatur-Dienstprogramme werden durch Interrupt 22 angesprochen.
Dienstprogramm 0 liest das nächste Zeichen aus dem Tastatureingabepuffer. Die
Zeichen werden in ihrer ganzen 2-Byte-Länge behandelt, wie wir schon in Kapitel
14 besprochen haben. Wenn ein Zeichen durch Dienstprogramm 0 gelesen wurde,
wird es aus dem Tastatureingabepuffer eliminiert. Bei Nummer 1 ist das anders.
Dienstprogramm 1 meldet, ob eine Tastatureingabe fertig ist. In diesem Fall liefert
das Dienstprogramm das Zeichen auf die gleiche Weise wie Dienstprogramm 0,
aber das Zeichen verbleibt im Tastaturpuffer, bis es offiziell mit Dienstprogramm 0
ausgelesen wird. Das letzte Tastatur-Dienstprogramm, Nummer 2, liefert die Tasta­
turstatus-Bits, die den Status der Shift-Tasten etc. angeben (die wir in Kapitel 14
17.2 Die BIOS-Dienstprogramme
217
behandelt und mit dem KEY-BITS-Programm von Anhang A demonstriert haben).
Auch wenn wir wissen, an welcher Position diese Information im unteren Speicher­
bereich zu finden ist, ist dieses Dienstprogramm die einfachste Methode für unsere
Programme, den Tastaturstatus abzufragen.
Die letzten der Hardware-unterstützenden Dienstprogramme dienen der parallelen
Druckerschnittstelle und werden mit Interrupt 23 aufgerufen. Es sind drei einfache
Dienstprogramme. Nummer 0 schickt ein einzelnes Byte zum Drucker, Nummer 1
initialisiert den Drucker, Nummer 2 meldet den Druckerstatus, zum Beispiel, wenn
der Drucker kein Papier mehr hat.
Damit sind wir am Ende der ROM-BIOS-Dienstprogramme, die direkt für die Unter­
stützung der E/A-Peripheriegeräte des PC verwendet werden. Man sollte noch
erwähnen, daß es noch zwei weitere E/A-Geräte im Standardrepertoire des PC gibt,
die durch das ROM-BIOS nicht unterstützt werden: der Lautsprecher und Joy­
sticks. Joysticks sind, wie die Lichtgriffel, bisher wenig eingesetzt worden, aber
trotzdem ist es erstaunlich, daß diese Geräte und vor allem der Lautsprecher über­
haupt nicht durch die ROM-BIOS-Dienstprogramme unterstützt werden.
Die restlichen ROM-BIOS-Dienstprogramme kontrollieren Informationen oder ver­
ursachen große Veränderungen im PC.
Mit Interrupt 17 erhält man die offizielle (und jetzt schon ziemlich überholte) Auf­
listung der Hardware-Konfiguration. Die dort genannten Konfigurationsmöglichkei­
ten beziehen sich noch auf den originalen PC und wurden bisher nicht um die
neuen Zusatzausrüstungen erweitert, die zur PC-Familie hinzugekommen sind.
Bislang war das vielleicht noch nicht notwendig. Die Konfigurationsliste gibt an,
wieviele Diskettenlaufwerke der Computer hat (0 bis 4), meldet aber keine Fest­
platten oder andere Plattentypen. Sie enthält die Anzahl der parallelen (bis zu drei)
und seriellen Schnittstellen (bis zu zwei). Ferner wird gemeldet, ob es einen Spie­
leadapter gibt (das ist die Zusatzkarte für Joysticks), dagegen werden Lichtgriffel
ignoriert. (Das ist merkwürdig, da es für den Lichtgriffel BIOS-Dienstprogramme
gibt, nicht aber für den Spieleadapter.)
Ein weiteres Dienstprogramm, das sich auf die Hardware-Konfiguration bezieht,
gibt an, wieviel Speicher der Computer hat. Es wird mit Interrupt 18 angefordert. Die
Speichergröße wird in K-Byte angegeben.
Die beiden letzten von denjenigen Dienstprogrammen, die nur Informationen lie­
fern, sind Dienstprogramme für die Uhr und verwenden Interrupt Nummer 26.
Nummer 0 liest die aktuelle Uhrzeit, und Nummer 1 stellt die Uhr. Die BIOS-Uhr
wird in Form von 4-Byte-langen lntegers gespeichert, wobei jede Zahl ein Ticken
der Uhr darstellt.
Die Hardware-Uhr des PC „tickt", indem ein Uhren-Interrupt 18.2 mal pro Sekunde
erzeugt wird und der Interrupt-Verwalter für die Uhr jedesmal eine Uhrenzahl hinzu­
fügt. Die Uhrenzahl soll die Anzahl des Uhrtickens seit Mitternacht repräsentieren.
Sie zeigt nur dann die richtige Zeit (das heißt die richtige Zahl), wenn sie richtig
gestellt wurde. Dies kann zum Beispiel durch das DOS-TIME-Kommando oder
eine Hardware-Echtzeituhr geschehen, die beispielsweise im AT oder auf den Mul-
218
17
Das eingebaute BIOS - Teil 2: Details
tifunktionskarten eingebaut ist. Wenn wir den Computer einschalten, fängt die Uhr
mit 0 zu zählen an, als wäre zu diesem Zeitpunkt Mitternacht, bis die richtige Uhr­
zeit/-zahl eingestellt wird. DOS wandelt die Uhrenzahl in die Tageszeit in Stunden,
Minuten, Sekunden und Hundertstel Sekunden um und zwar durch eine einfache
Arithmetik. Die BIOS-Routinen, die die Uhr auf den neuesten Stand bringen, prü­
fen, ob die Zahl erreicht ist, die 24 Stunden darstellt. In diesem Fall wird die Uhr auf
0 gestellt und ein Signal gespeichert, daß „Mitternacht überschritten wurde". Wenn
DOS dann das nächste Mal die BIOS-Uhr liest, findet es dieses Signal und aktuali­
siert das Datum.
Zum Schluß gibt es noch zwei weitere interessante Interrupts für BIOS-Dienstpro­
gramme. Diese Dienstprogramme übergeben die Steuerung an eine von zwei spe­
ziellen BIOS-Routinen: an das ROM-BASIC (das sog. „Kassetten-BASIC") bzw. an
das Boot- Strapping oder die Startroutinen. (Allerdings haben nur die IBM-Modelle
der PC-Familie das eingebaute BASIC. Andere Familienmitglieder, wie die Com­
paq-Computer, haben es nicht.} Wir kennen bereits die normalen Wege, um diese
zwei speziellen Routinen zu aktivieren. Wir booten, indem wir die Tastenkombina­
tion Ctrl-Alt-Dei drücken, und wir gelangen ins ROM-BASIC, indem wir unsere
Computer booten, ohne eine Platte im Gerät zu haben. Ein beliebiges Programm
kann diese Routinen ebenfalls aktivieren, indem es einfach die entsprechenden In­
terrupts auslöst. Es gibt eine Besonderheit bei diesen beiden Routinen. Im Gegen­
satz zu den normalen Dienstprogrammroutinen, die etwas für unsere Programme
erledigen und dann die Steuerung an die Programme zurückgeben, die sie auf­
gerufen haben, geben diese beiden Dienstprogramme die Steuerung nicht mehr
zurück.
Damit sind wir am Ende unserer Besprechung des ROM-BIOS, das die unterste
bzw. Hardware-nächste Software-Unterstützung liefert. In den drei folgenden Kapi­
teln werden wir uns genauer mit DOS befassen.
1.
Welchen Effekt hätte es, wenn wir alle ROM-BIOS-Dienstprogramme in einem Interrupt kom­
binieren würden? Oder wenn jedes Dienstprogramm einen eigenen separaten Interrupt
hätte?
2.
Können Sie begründen, warum der Boot-Strap-Lader und das eingebaute ROM-BASIC des
PC durch Interrupts aufgerufen werden? Liegt der Grund darin, damit sie für alle Programme
verfügbar sind oder damit sie nur leichter von den eigenen Systemprogrammen von IBM
verwendet werden können?
3.
Am Ende von Abschnitt 17.2 wurde empfohlen, die BIOS-Dienstprogramme zu studieren, um
ihr Niveau zu verstehen. Überlegen Sie, ob das Niveau der Dienstprogramme höher oder
niedriger sein könnte. Nehmen Sie ein Beispiel aus den Dienstprogrammen und prüfen Sie,
wie Sie seine Definition ändern könnten, damit es ein höheres oder niedrigeres Niveau
erhält. Untersuchen Sie die Bildschirm-Dienstprogramme und gliedern Sie sie nach ihrem
Niveau auf.
219
18
Die Rolle von DOS
Im letzten Teil über den PC beschäftigen wir uns mit DOS. Die beiden folgenden
Kapitel zeigen, wie wir direkt mit DOS arbeiten können und wie unsere Programme
damit umgehen. Zunächst wollen wir aber in diesem Kapitel einige Hintergrundin­
formationen über DOS liefern. Zuerst besprechen wir den generellen Zweck von
Betriebssystemen. Anschließend befassen wir uns mit der Geschichte von DOS
und betrachten die Ideen, auf denen das Design von DOS beruht. Zuletzt zeigen
wir, wie DOS intern aufgebaut und erweitert werden kann (zum Beispiel durch
Gerätetreiber) als auch extern (zum Beispiel durch Visual Shells).
18.1
Die Aufgabe eines Betriebssystems
Unser DOS, mit dem wir auf unseren PCs arbeiten, ist nur ein Beispiel für eine
Klasse von Computerprogrammen, die als Betriebssysteme bezeichnet werden.
Betriebssysteme, wie DOS, sind wahrscheinlich die kompliziertesten und schwie­
rigsten Computerprogramme, die jemals entwickelt wurden. Die grundsätzliche
Aufgabe eines Betriebssystems besteht darin, die Arbeit des Computers zu über­
wachen und zu steuern.
Die Leistungsfähigkeit und Flexibilität unserer Computer gründet im wesentlichen
darauf, daß sie nicht nur Arbeiten für uns erledigen können, sondern sogar in der
Lage sind, sich selbst bzw. ihre eigenen Operationen zu überwachen. Und es
erscheint auch etwas paradox, daß diese intelligenten Programme nicht dafür
gedacht sind, direkt für uns Arbeiten zu erledigen, sondern sich um die Arbeit des
Computers zu kümmern. Computer sind die leistungsfähigsten Werkzeuge, die die
Menschen je geschaffen haben. Sie sind in der Tat so leistungsfähig, daß wir sie
nicht direkt selbst benützen können. Statt dessen verwenden wir den Computer
über ein Betriebssystem, damit wir überhaupt mit ihm arbeiten können. Wir über­
tragen unseren Computern die Aufgabe, sich selbst zu steuern und müssen uns
deshalb nicht mit den schwierigen Problemen belasten, die die Arbeit eines
Computers beinhaltet.
Als wir das Thema der Interrupts in Kapitel 6 behandelt haben, bekamen wir eine
Vorstellung davon, wie anspruchsvoll die Aufgabe sein kann, einen Computer zu
steuern. Jedes einzelne Bauteil des Computers muß gesteuert werden und einige
davon ganz besonders. Zum Beispiel verlangt die Uhr des PC 18 mal pro Sekunde
die Aufmerksamkeit des Computers. Wie wir in Kapitel 14 gesehen haben, braucht
die Tastatur jedesmal seine Aufmerksamkeit, wenn eine Taste gedrückt oder aus­
gelassen wird. Wenn wir das Wort „Tastatur" eintippen, wird der Computer 16 mal
unterbrochen, nur damit er die Tastenanschläge zur Kenntnis nimmt. Und nach­
dem die Tastenanschläge gespeichert sind, geht die Arbeit für ihn erst richtig los.
Ein Betriebssystem, wie DOS, hat die Aufgabe, den riesigen Umfang an Ereignis­
sen, die in unserem Computer auftreten, zu koordinieren und zu überwachen.
220
18 Die Rolle von DOS
Wozu dient also unser DOS? Im wesentlichen erledigt es drei umfangreiche Kate­
gorien von Aufgaben: es verwaltet Hardware-Einheiten, steuert Programme und
verarbeitet Kommandos.
Die Verwaltung der Geräteeinheiten - Drucker, Platten, Bildschirme, Tastaturen etc.
- beinhaltet alles, was für die exakte Arbeitsweise der Bauteile des Computers not­
wendig ist. Auf der untersten Ebene bedeutet das, daß Kommandos zu den Gerä­
teeinheiten gesendet werden und auf deren Fehlermeldungen geachtet werden
muß. Genau diese Aufgabe erledigt das ROM-BIOS des PC. Im weitesten Sinne
enthält jedes Betriebssystem, das es für unsere PCs gibt, das ROM-BIOS als eine
seiner Hauptkomponenten. Auf einer höheren Ebene ist das Betriebssystem ein
wichtiger Organisator für die Geräteeinheiten des PC. Das wird besonders bei den
Platten deutlich. Eine der wichtigsten Aufgaben des Betriebssystems ist es, Daten
nach einem bestimmten Verfahren auf unseren Platten zu speichern. Dazu gehört
die Verwaltung des Plattenspeichers, die effiziente Speicherung von Daten und ein
schneller und zuverläßlicher Zugriff.
Die zweite Aufgabe von DOS ist die Steuerung von Programmen. Es muß Pro­
gramme von der Platte laden, die Bedingungen für die Ausführung eines Program­
mes schaffen und Dienstprogramme zur Verfügung stellen (mehr darüber in Kapi­
tel 20). Auf größeren Computersystemen gehören zur Steuerung von Programmen
Aufgaben, die auf einem PC nicht möglich sind. Zum Beispiel darf ggf. ein Pro­
gramm nur auf einen begrenzten Arbeitsspeicher- und Plattenspeicherbereich
zugreifen. Derartige Beschränkungen für ein Programm müssen entsprechend ver­
waltet werden, aber nicht bei unseren relativ einfachen PCs.
Die dritte wichtige Aufgabe von DOS ist die Kommandoverarbeitung. Das ist der
einzige direkte Kontakt zwischen DOS und einem Benutzer. Wenn wir auf das
DOS-Promptzeichen A> antworten, wird die Kommandoverarbeitung von DOS
tätig. Bei DOS verlangen unsere Kommandos im wesentlichen nach der Ausfüh­
rung eines Programmes. In komplizierteren Betriebssystemen können unsere
Kommandos eine weitere Bedeutung haben und zum Beispiel die Arbeit des Be­
triebssystems selbst steuern.
Insgesamt ist das der Kern, was ein Betriebssystem und besonders unser DOS
macht. Wir kommen nun zur Geschichte von DOS und den Ideen, die der Arbeits­
weise von DOS zugrundeliegen.
18.2
Die Geschichte und das grundlegende
Konzept von DOS
Die Geschichte von DOS beginnt mit den Planungen von IBM-Personalcomputern
und mit dem Betriebssystem, das bis dahin von Personalcomputern verwendet
wurde.
Der PC wurde geplant und entwickelt, als die meisten Personalcomputer noch
einen 8-Bit-Mikroprozessor benützten. Das dominierende Betriebssystem für diese
18.2 Die Geschichte und das grundlegende Konzept von DOS
221
Geräte hieß CP/M (eine Abkürzung für Control Program for Microcomputers).
Obwohl IBM den PC als viel leistungsfähigeren 16-Bit-Computer konzipierte, sollte
die Erfahrung und Beliebtheit von CP/M genutzt werden. Obwohl sich der PC völlig
von 8-Bit-Rechnern unterscheidet und 8-Bit-CP/M-Programme nicht direkt auf
dem PC verwendet werden hätten können, wäre es wesentlich leichter gewesen,
Programme (und die Erfahrungen der Anwender) an das neue Gerät anzupassen,
wenn das Betriebssystem des PC ähnlich wie CP/M gestaltet worden wäre.
Zunächst plante IBM eine aktualisierte 16-Bit-Version von CP/M-86 als Betriebssy­
stem des PC, aber das scheiterte. Eine Version der Geschichte über die Hinter­
gründe enthält der Abschnitt „Die Bruchlandung von CP/M". Auf jeden Fall
beschloß IBM letztendlich, ein neues Betriebssystem für den PC von Microsoft ent­
wickeln zu lassen, und dieses Betriebssystem war DOS.
Die Bruchlandung von CPIM
Es gibt eine interessante Geschichte, die erklären soll, warum der PC mit dem Be­
triebssystem DOS eingeführt wurde, statt mit der 16-Bit-Version des bereits existie­
renden und beliebten CP/M-Systems. Allerdings weiß man nicht, ob die
Geschichte wahr ist.
Als IBM CP/M einkaufen wollte, ließ Gary Kildall, der Mann, der CP/M entwickelte,
angeblich die Beauftragten von IBM absichtlich warten und wütend werden, wäh­
rend er stundenlang mit seinem Flugzeug in der Luft umherflog. Kildall soll angeb­
lich die Nase über IBM als Kunden gerümpft haben, während Bill Gates, der Chef
von Microsoft, den roten Teppich für IBM ausrollte. Gates zog sogar seine selten
getragenen Büroanzüge für die Verhandlungen mit IBM an, um zu zeigen, daß er
ernsthaft an Geschäften mit IBM interessiert ist.
Bei den 8-Bit-Computern dominierte Microsoft bei den Programmiersprachen und
Digital Research von Kildall bei den Betriebssystemen. IBM wollte daran nichts
ändern, sondern beide Firmen entsprechend ihrer Stärke engagieren. Aber Kildall
gab vor, schwer erreichbar zu sein, sogar noch, nachdem IBM Bill Gates einschal­
tete, um Kildall zur Mitarbeit zu bewegen.
Schließlich beauftragte IBM Microsoft mit der Entwicklung eines Betriebssystems
und auch mit Programmiersprachen. Microsoft lieferte das Gewünschte kurzfristig,
indem es ein bereits existierendes, aber wenig bekanntes CP/M-ähnliches Be­
triebssystem verwendete und dieses entsprechend den Anforderungen von IBM
verbesserte. Dieses Betriebssystem wurde das DOS, mit dem heute fast jeder PC­
Benutzer arbeitet.
Gleichzeitig war das das Ende des Höhenflugs von Gary Kildall bzw. von CP/M.
DOS war zwar das offizielle, aber nicht das einzige Betriebssystem, das IBM mit
dem PC einführte. Zwei andere Betriebssysteme mit eigener Unterstützungsbasis
wurden ebenfalls offiziell von IBM vorgestellt: CP/M-86, das wir bereits erwähnt
haben, und das UCSD p-System, ein Betriebssystem, das sich stark an den
Bedürfnissen der Programmiersprache Pascal orientiert. Niemand will mehr als ein
222
18 Die Rolle von DOS
Betriebssystem verwenden, weil es sehr unbequem ist, zwischen den Betriebssy­
stemen hin- und herzuwechseln, und es fast unmöglich ist, Daten, Programme
oder die Routine des Benutzers auf die verschiedenen Betriebssysteme zu über­
tragen. Damit konnte nur ein Betriebssystem gewinnen, und dieser Gewinner war
DOS.
Obwohl DOS mit CP/M konkurrierte, hielt sich sein Design eng an CP/M angelehnt.
Dafür gibt es einen wichtigen Grund. Computeranwender, die bereits mit CP/M
vertraut sind, sollten sich möglichst bequem in DOS einarbeiten können. Außer­
dem sollte die Anpassung von 8-Bit-CP/M-Programmen erleichtert werden.
Die Nähe zu CP/M wird schon aus dem Kommandoprompt A> deutlich und es gibt
dafür noch zahlreiche andere Beispiele, was den Dialog mit dem Benutzer anbe­'
trifft oder wie DOS mit unseren Programmen zusammenarbeitet.
Während die Ähnlichkeiten zwischen den Benutzeroberflächen von DOS und
CP/M offensichtlich sind, ist die Verwandschaft der grundlegenden Konzepte nicht
direkt erkennbar. Das gilt vor allem für den Anwendungsbereich, für den DOS von
Anfang an geplant war. DOS verfolgte das einfachste Konzept für Personalcompu­
ter. Dazu gehört die Voraussetzung, daß nur eine Person den Computer benützt
und den Computer nur jeweils mit einer Aufgabe beauftragt (zum Beispiel sollte
nicht eine Datei ausgedruckt und gleichzeitig etwas anderes berechnet werden
können, weil das die gleichzeitige Ausführung zweier Aufgaben bedeutet). DOS
war als Ein-Benutzer-/Single-Tasking -System gedacht, das einfachste Konzept. Es
wurde so gestaltet, weil es von einem Betriebssystem für 8-Bit-Geräte abstammt,
die nicht für komplexere Anwendungen geeignet sind.
Unsere PC-Familie verfolgt jedoch ehrgeizigere Ziele, und die Restriktionen aus
dem CP/M-Erbe hätten DOS dafür unbrauchbar gemacht. Andererseits gab es
bereits das Betriebssystem UNIX, das wegen seiner umfangreichen Fähigkeiten
bewundert wurde, und Microsoft sammelte Erfahrungen mit UNIX, indem es XENIX
entwickelte, eine Variation von UNIX. In den Folgeversionen von DOS wurden des­
halb viele Konzepte von UNIX/XENIX in DOS integriert.
Der Einfluß von UNIX zeigt sich in der Einführung der untergeordneten Inhaltsver­
zeichnisse und noch mehr in der internen Struktur von DOS und den Dienstpro­
grammen, die DOS unseren Programmen zur Verfügung stellt. Ein wichtiges Bei­
spiel dafür sehen wir in Kapitel 20, wenn wir zwei Verfahren behandeln, die DOS
unseren Programmen für die Arbeit mit Dateien anbietet. Es ist eine alte CP/M­
Methode und eine neue UNIX-Methode.
Die Version von DOS, die wir heute verwenden, ist eine Mischung aus CP/M und
UNIX. Obwohl DOS viele Eigenschaften von UNIX beinhaltet, krankt es noch an vie­
len Beschränkungen aus seinen frühen Tagen. Da DOS ursprünglich einem Pro­
gramm die gesamte Steuerung des Computers und des Arbeitsspeichers über­
gab, ist es für DOS sehr schwierig, zwei gleichzeitig laufende Programme in unse­
rem Computer zu verwalten. In Abschnitt 18.4 werden wir einige der Versuche
sehen, die unternommen wurden, um solche Beschränkungen aufzuheben. Vorher
müssen wir aber erst noch besprechen, was die Flexibilität von DOS ausmacht.
223
18.3
Installierbare Treiber und flexible Betriebsmittel
In der ersten Version von DOS waren alle Geräteeinheiten, Plattenformate u.ä. ge­
nau festgelegt. Diese DOS-Version Nummer 1 basierte ausschließlich auf dem
Modell von CP/M und konnte nicht selbstständig an neue Geräteeinheiten oder
neue Plattenformate angepaßt werden.
Aber als die PC-Familie wuchs, wurde es wichtig, daß DOS an die verschiedenen
Computer und Benutzerwünsche angepaßt werden und neue Peripheriegeräte un­
terstützen konnte, besonders die vielen Plattentypen, die mit PCs verwendet wur­
den. Eine der wichtigsten Änderungen der DOS-Version 2.0, die auch bereits viele
UNIX-Konzepte enthielt, war die Anpassungsfähigkeit mit Hilfe einer Konfigu­
rationsdatei.
Wenn DOS mit seiner Arbeit beginnt, sucht es nach einer Datei auf unserer
Systemplatte, die den Namen CONFIG.SYS trägt. DOS liest die Datei und erfährt
dabei, an welche Systemkonfiguration es sich anpassen soll. In Abbildung 18-1
sehen sie ein Beispiel für eine Konfigurationsdatei. Es ist die aktuelle CONFIG.SYS
meines Computers.
Es gibt zwei wichtige Teile, wie DOS angepaßt, verändert und konfiguriert werden
kann, wie auch aus Abbildung 18-1 ersichtlich ist. Der erste Teil steuert Informatio­
nen bezüglich Einheiten, die DOS schon kennt. Zum Beispiel bestimmt die zweite
Zeile in Abbildung 18-1, wieviele Plattensektorpuffer verwendet werden können. Die
Anzahl der Plattenpuffer hat einen einfachen Effekt: je mehr Puffer, desto weniger
muß DOS auf Information warten, die von der Platte gelesen wird; aber desto weni­
ger Speicher bleibt dann für unsere Programme übrig. Von sich aus würde DOS
nur zwei oder drei Plattenpuffer wählen. Nach einigen Experimenten fand ich her­
aus, daß mein Computer viel besser arbeitete, wenn ich DOS mehr Puffer überließ,
insgesamt 64. Dieses Beispiel zeigt, wie sich einige der Parameter für Betriebs­
mittel steuern lassen, zum Beispiel die Anzahl der Plattenpuffer.
BREAK=ON
BUFFERS=64
FILES=20
LASTDRIVE=E
COUNTRY=001
DEVICE=MOUSE.SYS
DEVICE=ANSI.SYS
DEVICE=VDISK.SYS /E 384
Abb. 18-1:
Eine Konfigurationsdatei
Der andere Hauptteil der DOS-Konfigurationsdatei beinhaltet Programme, die in
DOS integriert werden können und als installierbare Gerätetreiber bezeichnet wer­
den. DOS bietet natürlich Programmunterstützung für alle Standard-Peripheriege­
räte der PC-Familie. Wenn wir DOS weitere, eher exotischere Komponenten hinzu­
fügen wollen, ermöglichen das die installierbaren Gerätetreiber.
224
18 Die Rolle von DOS
Diese Treiber sind Programme, durch die DOS besser mit der Peripherie des Com­
puters arbeiten kann. Die Gerätetreiber folgen strengen Richtlinien, durch die sie
eng mit DOS zusammenarbeiten können, ohne andere Teile von DOS bei der
Arbeit zu stören. In Abbildung 18-1 sehen Sie drei Beispiele für derartige installier­
bare Treiber und 'ZWar in den Zeilen, die mit dem Wort DEVICE= beginnen. DOS
findet den Dateinamen des Treibers, der im DEVICE=-Kommando angegeben ist,
und integriert das unter diesem Namen gespeicherte Programm. Bei unserem Bei­
spiel sind zwei Treiber optionale Teile von DOS: der ANSl.SYS-Treiber, der spezielle
Bildschirm- und Tastatursteuerungen zur Verfügung stellt, und der VDISK.SYS-Trei­
ber, der eine „virtuelle" oder RAM-Platte im Arbeitsspeicher einrichtet. Der dritte
Treiber MOUSE.SYS unterstützt die sog. Maus. Der Maustreiber ist ein typisches
Beispiel dafür, wie DOS mit Hilfe der installierbaren Treiber mit Hardware arbeiten
kann, die ursprünglich dafür gar nicht vorgesehen war.
DOS kann auch noch auf andere Weise erweitert und verändert werden, aber das
geschieht nicht innerhalb von DOS, und wir beschäftigen uns damit in Abschnitt
18.4.
18.4
Visual Shells: 'IbpView und andere
DOS hat, wie wir aus eigener Erfahrung wissen, ein bestimmtes Benutzer-Interface,
das auf dem einfachen Kommandoprompt !.:> basiert. Wir müssen also die Kom­
mandos auf der Tastatur eintippen, und DOS kann dann jeweils ein Programm für
uns laufen lassen. Wir haben keine Möglichkeit, mehr als eine Sache gleichzeitig
erledigen zu lassen (abgesehen von einigen Ausnahmen, wie dem PRIN T-Kom­
mando, das auch ausdruckt, während wir mit anderen Programmen arbeiten, und
wir können ein Programm auch nicht mitten in seiner Operation unterbrechen, ein
anderes Programm laufen lassen und dann zum ersten zurückkehren.
Wenn DOS derartiges nicht beherrscht, heißt das noch lange nicht, daß es nicht
wünschenswert oder möglich ist. Das Arbeiten mit DOS läßt sich durch eine Kate­
gorie von Programmen ändern, die allgemein Visual Shells genannt werden
(obwohl das nur einen Ausschnitt dessen beschreibt, was durch diese Programme
ermöglicht wird).
Visual Shells sind Programme, die sich sozusagen um DOS legen und verschiede­
ne Möglichkeiten liefern, die DOS nicht bietet. Vor allem zwei der zahlreichen Mög­
lichkeiten sind in'ZWischen weit verbreitet: eine komfortablere Benutzeroberfläche
für die Eingabe von Kommandos und das sog. Multitasking, das das gleichzeitige
Betreiben mehrerer Programme erlaubt.
Die besten Programme dieses Typs sind TopView von IBM und Windows von
Microsoft. Wir wollen sie kurz vorstellen, damit Sie verstehen, warum über diese Art
von Programmen so viel diskutiert wird, warum so energisch an ihnen gearbeitet
wird und warum sie bisher nur mäßigen Erfolg hatten. Diese beiden sind repräsen­
tativ für die gesamte Kategorie von Shellprogrammen, von denen es in nächster
Zeit immer mehr geben wird.
18.4
Visual Shells: TopView und andere
225
Die große Nachfrage nach Visual Shells begründet sich durch die spartanische
Benützeroberfläche von DOS. Um ein Programm mit DOS laufen lassen zu können,
müssen wir den Namen des Programmes wissen und zusammen mit den benötig­
ten Parametern eintippen. Visual Shellprogramme, wie TopView und Windows,
können uns dagegen eine Liste aller Kommandos zeigen, und wir brauchen aus
dieser Liste nur das gewünschte Kommando auswählen, ohne daß man deren
Namen eintippen muß. Mit den Cursortasten oder einer Maus können wir einfach
auf das Kommando zeigen, das ausgeführt werden soll und es mit einem einzigen
Druck auf die Entertaste oder auf einen Mausknopf starten.
Die Benutzeroberfläche kann darüber hinaus visuell unterstützt werden, indem die
Kommandonamen auf dem Bildschirm durch Zeichnungen bzw. durch sog. Ikonen
ersetzt werden, die die Funktion des Kommandos repräsentieren.
Die komfortablere Kommandoeingabe ist aber nicht der eigentliche Grund dafür,
warum so großes Interesse an den Visual Shells besteht. Wichtiger ist, daß einige
von ihnen mehr als ein Programm gleichzeitig bearbeiten können. Dafür gibt es
verschiedene Verfahren und jedes stellt spezielle technische Anforderungen. Ei­
nige können wirklich mehrere Programme gleichzeitig laufen lassen, z.B. TopView,
andere Verfahren unterbrechen Programme, wenn andere Aufgaben erledigt wer­
den sollen und kehren dann zum unterbrochenen Programm zurück, ohne daß es
völlig neu gestartet werden muß.
Obwohl großes Interesse an diesen Programmen besteht, mit denen sich viele
Beschränkungen von DOS umgehen lassen, scheint es, als ob die Zeit für diese
Art von Programmen noch nicht reif ist. Ein wichtiger Grund ist einfach, daß der
Hauptprozessor des PC, der 8088, nicht die Einrichtungen aufweist, die DOS oder
ein Shellprogramm vor außer Kontrolle geratenen Programmen schützen können.
Allerdings verfügt der 80286, mit dem das AT-Modell arbeitet, über die Schutzein­
richtungen, mit denen ein Programm wie TopView mehrere Programme laufen las­
sen kann, ohne daß sie einander stören oder mit TopView oder direkt mit DOS in
Konflikt geraten. Bis es Shellprogramme dieses Typs gibt, die die Schutzmöglich­
keiten des 286 tatsächlich einsetzen, glaube ich nicht, daß diese Shellprogramme
oder ähnliche Erweiterungen, die in DOS integriert werden könnten, eine breite
Verwendung finden werden.
Übungen
1.
Warum kann der Hauptprozessor des PC, der 8088, nicht mehrere Programme gleichzeitig
sicher laufen lassen? Wie kann ein Programm wie TopView versuchen, einige dieser Pro­
bleme zu lösen?
2.
Wenn Sie eine „Visual Shell" für DOS entwerfen müßten, um die Kommandoeingabe für PC­
Anwender zu erleichtern, wie würde das bei Ihnen aussehen? Überlegen Sie, welche Kom­
promisse sie vielleicht eingehen müßten, um den verschiedenen Bedürfnissen gerecht zu
werden.
226
19
DOS und der Benutzer
In diesem Kapitel zeigen wir, wie DOS direkt mit dem Benutzer zusammenarbeitet
(in Kapitel 20 werden wir sehen, welche Dienstprogramme DOS unseren Program­
men zur Verfügung stellt).
Zunächst behandeln wir, wie der Befehlsprozessor von DOS funktioniert. Anschlie­
ßend sehen wir, wie die Befehlsverarbeitung durch die Stapeldateiverarbeitung
komplexer gestaltet werden kann.
19 .1
Befehlsverarbeitung
Von allem, was DOS bei der Überwachung unserer Computer erledigt, wird uns
nur die sogenannte Befehlsverarbeitung direkt bewußt - die Fähigkeit von DOS,
Befehle anzunehmen und auszuführen. Für diese Befehlsverarbeitung ist das Pro­
gramm COMMAND.COM zuständig.
COMMAND.COM gibt die kurze Befehlsanforderung (Prompt) A> aus. (Bei Fest­
platten erscheint es normalerweise als C>.) Wenn wir das Promptzeichen sehen,
wartet DOS (oder genauer der COMMAND.COM-Befehlsprozessor) auf die Ein­
gabe eines Befehls, den DOS ausführen soll.
Aber was ist ein Befehl? Der Befehl, den wir geben - das erste Wort, das wir in die
Befehlszeile eintippen - ist einfach der Name eines Programmes, das DOS für uns
laufen lassen soll. Wenn wir zum Beispiel den Befehl
FORMAT A: /S /V
geben, dann beauftragen wir DOS, ein Programm mit dem Namen „FORMAT" zu
finden und es zu aktivieren. Was wir sonst noch in die Befehlszeile eintippen (in
diesem Fall „A:/S/V"), sind einfach einige weitere Instruktionen an das Programm.
Es sind Parameter für das Programm, und DOS reicht sie einfach an das Programm
weiter. Für DOS haben sie keine Bedeutung, und der Befehlsprozessor beachtet
sie nicht.
Die Programme, die der Befehlsprozessor für uns ausführen kann, gehören zu vier
Kategorien. Es ist wichtig, ihre Eigenarten und ihre Funktionsweise zu verstehen, da
die Leistungsfähigkeit unseres Computers wesentlich davon abhängt, wie gut uns
diese Programme zur Verfügung gestellt werden. Die vier Kategorien von Kom­
mandos sind entweder interne Befehle oder gehören zu drei Typen von externen
Befehlen:
COM-Programmen,
EXE-Programmen
und
BAT-Stapelkommandos.
Zunächst besprechen wir die Unterteilung zwischen den internen Befehlen und
den drei anderen Typen von externen Befehlen.
Meistens sind unsere Programme - die Befehle, die DOS für uns ausführen kann separate Einheiten, die auf unseren Platten in Dateien gespeichert werden. Jedoch
nicht alle Befehle funktionieren so bzw. sind in eigenen Plattendateien gespeichert.
Der COMMAND.COM-Befehlsprozessor enthält bereits die wichtigsten Befehlspro-
19.1 Befehlsverarbeitung
227
gramme und muß in solchen Fällen keine Programmdatei von der Platte holen.
Man spricht deshalb von internen Befehlen.
Die Liste der internen Befehle variiert von DOS-Version zu DOS-Version. Typische
interne Befehle sind: CLS, COPY, DATE, DEUERASE, DIR, REN/RENAME, T I ME
und TYPE. Weniger bekannt sind: BREAK, CD/CHDIR, ECHO, MD/MKDIR, PAT H,
PROMPT, RD/RMDIR, SET, VER, VERIFY und VOL.
Der Befehlsprozessor enthält eine Tabelle dieser internen Befehle und ihren Pro­
grammcode. Wenn wir DOS einen Befehl geben, sucht COMMAND.COM zuerst in
seiner Tabelle nach dem Befehlsnamen, um festzustellen, ob wir einen internen
Befehl verlangen. In diesem Fall kann COMMAND.COM den Befehl sofort ausfüh­
ren. Andernfalls muß COMMAND.COM auf unseren Platten nach der Datei suchen,
die das externe Befehlsprogramm enthält.
Der Befehlsprozessor identifiziert die Dateien, die externe Befehle enthalten, durch
zwei Eigenschaften. Erstens ist der Dateiname der Plattendatei zugleich der Name
des Befehls. zweitens kennzeichnet die Dateiname-Erweiterung die Datei als einen
der drei externen Kommandotypen: als COM-Datei, als EXE-Datei oder als BAT­
Stapelkommandodatei.
Da der Dateiname der Programmdatei den Namen des Befehls definiert, können
wir unsere Befehlsnamen beliebig ändern (nicht allerdings die Dateiname-Erweite­
rung), oder eine Kopie der Befehlsdatei unter einem anderen Namen anlegen,
damit der Befehl sowohl über seinen ursprünglichen Befehlsnamen als auch über
andere Namen verfügbar ist. Das ist sehr praktisch und wird hauptsächlich dafür
genutzt, um die Namen der Befehle abzukürzen, die am meisten verwendet wer­
den. Zum Beispiel kann ich das Textverarbeitungsprogramm, mit dem ich dieses
Buch geschrieben habe, unter seinem regulären Namen WORD oder unter dem
ein Zeichen langen Kommando W aufrufen.
Bei den internen Befehlen des Befehlsprozessors ist das jedoch nicht erlaubt (au­
ßer wir versuchen radikal an der Tabelle der Befehlsnamen in COMMAND.COM
herumzubasteln).
Von den drei Arten der externen Befehle sind die COM- und EXE-Dateien Variatio­
nen des gleichen Prinzips, während die BAT-Datei etwas völlig anderes ist. Sowohl
COM- als auch EXE- sind Programmdateien, die der Befehlsprozessor lädt und
ausführt.
Für den Anwender, der Programme durch den Befehlsprozessor aktiviert, haben
die Unterschiede zwischen COM- und EXE-Programmdateien keine praktische
Bedeutung, aber trotzdem ist es interessant, den Unterschied zu kennen. Grund­
sätzlich besteht der Unterschied darin, daß COM-Dateien ein einfaches schnell zu
ladendes Format haben, während EXE-Dateien komplizierter sind. Eine COM-Datei
wird manchmal auch „Abbildungs"-Datei genannt, was bedeutet, daß auf der
Platte eine exakte Abbildung des Programmes gespeichert ist, wie es im Arbeits­
speicher geladen und ausgeführt wird. Eine COM-Datei benötigt keine weitere Ver­
arbeitung oder Umwandlung durch DOS, um lauffähig zu sein. Sie wird nur in den
Arbeitsspeicher kopiert und sofort ausgeführt.
228
19 DOS und der Benutzer
Viele Programme benötigen jedoch noch eine besondere Vorbereitung, bevor sie
ausgeführt werden können. Was man nicht im Voraus wissen kann, wenn ein Pro­
gramm geschrieben wird, ist die Speicheradresse, auf die das Programm kopiert
wird. Im allgemeinen haben die verschiedenen Teile eines Programmes starke
Querverbindungen. Die verschiedenen Abschnitte des auszuführenden Codes
kennen die Position der anderen (so daß sie einander „aufrufen" können) und der
Programmcode weiß, wo die sämtlichen Datenbits im Speicher sind, die zum Pro­
gramm gehören. Obwohl jedes Programm die relative Lage seiner Teile kennt,
kann kein Programm im Voraus über die absoluten Speicheradressen dieser Teile
Bescheid wissen. Wohin ein Programm in den Speicher geladen wird, hängt auch
davon ab, wieviel Speicher von DOS und von residenten Programmen (wie Side­
kick oder Prokey) benützt wird, und das kann sich ändern.
Ein Programm kann sich selbst automatisch dort einpassen, wo es im Speicher
plaziert werden soll. Genau das machen COM-Programme. Mit Hilfe der Segment­
register und strenger Programmierkonventionen braucht man COM-Programme
nicht auf ihre Position im Speicher einstellen. Das ist aber nicht bei allen Program­
men möglich. Das COM-Format enthält viele Beschränkungen und viele Pro­
gramme können damit einfach nicht arbeiten. Zum Beispiel können COM-Pro­
gramme unter normalen Umständen nicht größer als 64K sein - und das reicht für
intelligentere Programme nicht aus. Das EXE-Format dient also für Programme, die
nicht einfach als reine Speicherabbildung geladen werden können.
Wenn DOS ein EXE-Programm in den Speicher lädt, muß es das Programm erst
noch für die Ausführung vorbereiten. In erster Linie müssen die Speicheradressen,
auf die das Programm geladen wird, in den entsprechenden Programmteilen ein­
gesetzt werden. Dazu enthält das EXE-Dateiformat eine Tabelle der Programmteile,
die verändert werden müssen und wie es gemacht werden soll. Das ist nicht die
einzige spezielle Arbeit, die für EXE-Programme ausgeführt werden muß. Es muß
zum Beispiel auch der Arbeitsstack gesetzt werden (COM-Programme erledigen
das selbst).
COM- und EXE-Programme werden auf unterschiedliche Weise geladen, und es
gibt auch Unterschiede in der Art, wie sie geschrieben werden. Etwas unterschied­
liche Programmierkonventionen entscheiden, wie sie geladen und geschrieben
werden. Programmierer verwenden außerdem unterschiedliche Schritte, um diese
Programme vorzubereiten (wie wir in Kapitel 21 kurz sehen werden). Alles in allem
ist dies jedoch nur eine technische Angelegenheit für Programmentwickler. Für
den Anwender besteht kein Unterschied zwischen COM- und EXE-Programmen.
Wenn DOS unsere Programme startet, entweder als COM- oder als EXE-, findet der
Befehlsinterpreter das Programm auf Platte, lädt es in den Speicher (bereitet EXE­
Dateien auf) und überläßt die Steuerung des Computers dann dem Programm.
Nach Beendigung des Programmes gibt es die Steuerung an DOS zurück, und
DOS reaktiviert den COMMAND.COM-Befehlsprozessor. Während der Kern von
DOS permanent im unteren Speicherbereich aufbewahrt wird, befindet sich der
Großteil des Befehlsprozessors im oberen Speicherbereich, den unsere Pro­
gramme für ihre Daten verwenden können. Damit soll vermieden werden, daß
dauernd eine Menge Speicher vom Befehlsinterpreter belegt wird. Falls ein Pro-
19.2 Stapelverarbeitung
229
gramm den Speicherbereich benötigt, in dem sich der Befehlsinterpreter befindet,
benützt es ihn einfach (ohne überhaupt zu bemerken, daß es den Befehlsinterpre­
ter überschreibt). Wenn ein Programm beendet ist und die Steuerung an DOS zu­
rückgibt, prüft DOS, ob der Befehlsinterpreter noch intakt ist. Wenn ja, benützt es
ihn einfach wieder; andernfalls lädt es eine neue Kopie von der Platte. Darum brau­
chen wir manchmal für PCs, die keine Festplatte haben, eine Kopie von COM­
MAND.COM auf unseren Arbeitsdisketten zusätzlich zu der Kopie auf der DOS­
Systemdiskette, mit der wir den Computer starten.
Neben den internen Befehlsprogrammen und den Befehlsprogrammen vom COM­
oder EXE-Typ, die auf Platte gespeichert sind, gibt es noch einen weiteren Befehls­
typ, den DOS für uns ausführen kann: das Stapeldateikommando.
19.2
Stapelverarbeitung
Mit Stapeldateien kann DOS für uns Befehle wesentlich bequemer ausführen. Sie
sind die letzte der vier Befehls-Kategorien. Eigentlich sind Stapeldateien gar keine
vierte Programmart, im gleichen Sinne, wie die internen DOS-Befehle und COM­
und EXE-Dateien Programme sind. Stapelkommandodateien sind lediglich Samm­
lungen konventioneller Programmbefehle, die DOS für uns ausführen kann, wobei
alle Schritte als eine Einheit behandelt werden, die wir vom Befehlsinterpreter
durch die Eingabe eines einzigen Kommandos ausführen lassen können.
Stapeldateien (engl.: batch files) werden durch die Dateiname-Erweiterung BAT
gekennzeichnet. Eine Stapeldatei ist eine normale ASCII-Textdatei. Jede Zeile der
Textdatei ist ein Befehl, den der Befehlsinterpreter auszuführen versucht.
Die einfachste Art einer Stapeldatei ist einfach eine Reihe konventioneller Pro­
grammbefehle, die in einer Stapeldatei zusammengefaßt sind. Aber die Stapel­
dateiverarbeitung kann noch viel mehr.
Beispielsweise kann man Parameter bei Stapeldateien verwenden, wie bei norma­
len Programmen. Der Befehlsinterpreter kann die Parameter übernehmen, die wir
mit dem Stapelkommando eingeben, und sie an die Programme in der Stapeldatei
weiterreichen. Außerdem gibt es eine eigene Stapelkommandosprache, durch die
der Befehlsinterpreter logische Schritte ausführen kann, z.B. Programme wieder­
holen oder Schritte überspringen kann und zwar in Abhängigkeit von aufgetrete­
nen Fehlern, angegebenen Parametern oder, ob die benötigten Dateien wirklich
existieren.
Wir können in diesem Rahmen nicht näher auf die Stapelkommandosprache ein­
gehen, aber wir wollen ihre Nützlichkeit ausdrücklich betonen. Erfahrene DOS­
Anwender lassen praktisch alles in ihren Computern durch Stapeldateien erledi­
gen, weil man damit die wiederholte Eingabe von Befehlsfolgen vermeiden oder
die Standardparameter bequem angeben kann, die ein Programm benötigt. Ich
selbst habe insgesamt 145 Stapeldateien angelegt! Das sind vielleicht viel mehr,
als Sie benötigen (ich glaube, daß es auch mehr sind, als ich brauche), aber es
verdeutlicht Ihnen, wie wichtig Stapeldateien für mich bei der Arbeit mit meinem
Computer sind.
230
19 DOS und der Benutzer
Wenn Sie die Verwendung von Stapeldateien noch nicht beherrschen, empfehle
ich Ihnen dringend, daß Sie sich die Zeit dafür nehmen, dies nachzuholen. Fortge­
schrittenere Möglichkeiten der Stapelkommandosprache können anfangs ziemlich
verwirrend sein. Arbeiten Sie also zunächst nur mit einfachen Stapeldateien und
prüfen Sie nach und nach, ob Sie für die fortgeschrittenen Möglichkeiten eine Ver­
wendung haben.
1.
Untersuchen Sie mit einem verfügbaren Tool (wie DEBUG oder den Norton Utilities) das
COMMAND.COM Ihres Computers und finden Sie die Tabelle mit den Namen der internen
Befehle. Stellen Sie irgendetwas Ungewöhnliches fest? Was muß, außer den Befehlsnamen,
in der Tabelle enthalten sein? (Wie Sie DEBUG oder die Norton Utilities verwenden, finden
Sie in Kapitel 22.)
2.
Wie kann sich ein COM-Programm selbst im Arbeitsspeicher einpassen, wenn es von DOS
geladen wird? Wo liegen einige der Probleme, die gelöst werden sollten, und wie kann ein
Programm sie beseitigen?
3.
Wenn Sie mit der Stapelkommandosprache von DOS vertraut sind, untersuchen Sie die
nach Ihrer Meinung starken und schwachen Seiten. Suchen Sie besonders nach den Teilen,
die schwierig für uns sind. Versuchen Sie, Ihre eigene Stapelkommandosprache zu entwik­
keln.
231
20
DOS und unsere Programme
In diesem Kapitel behandeln wir, wie DOS mit unseren Programmen zusammenar­
beitet. Dieses Kapitel ist eine Parallele zu Kapitel 17, in dem wir die Zusammenar­
beit der ROM-BIOS-Dienstprogramme mit unseren Programmen besprochen
haben. Die Ähnlichkeiten sind natürlich groß, aber trotzdem wollen wir zunächst
die zwei wichtigsten Unterschiede aufzeigen. Wie wir in Kapitel 19 gesehen haben,
besteht ein Unterschied darin, daß DOS direkt mit dem Benutzer zusammenarbei­
ten kann, was beim ROM-BIOS nicht der Fall ist. Der andere wichtige Unterschied
ist, daß das ROM-BIOS Dienstprogramme für unsere Programme auf einem sehr
niedrigen Niveau liefert, während viele Dienstprogramme von DOS kompliziert und
auf einem relativ hohen· Niveau sind. Das ist eines der Hauptthemen in diesem
Kapitel.
20.l
DOS-Dienstprogramme und die DOS-Philosophie
Die Dienstprogramme, die DOS unseren Programmen liefert, sind das Ergebnis
einiger Auseinandersetzungen, die für ihre teilweise widersprüchliche Natur ver­
antwortlich sind.
Während die ROM-BIOS-Dienstprogramme, die wir in Kapitel 17 besprochen
haben, als Einheit entwickelt und ständig neu optimiert wurden, hat es diese Vor­
gehensweise bei den DOS-Dienstprogrammen nie gegeben.
Vier wesentliche Einflüsse haben die DOS-Dienstprogramme geformt. Zwei davon
sind andere Betriebssysteme, nach deren Vorbild DOS gestaltet wurde.
Das erste Betriebssystem war CP/M, wie wir in Kapitel 18 gelernt haben. Da CP/M
das dominierende Betriebssystem für die 8-Bit-Generation der Computer war und
weil es soviel CP/M-Software gab, wurde DOS vorsichtshalber möglichst CP/M­
ähnlich gestaltet, damit relativ leicht alte CP/M-Programme an den PC und DOS
angepaßt werden konnten. Das erforderte identische oder fast identische Betriebs­
systemroutinen und auch eine ähnliche Philosophie bezüglich der Gestaltung der
Plattenarchitektur. Die weitgehende Imitation von CP/M war der erste große Einfluß
auf DOS.
Der zweite wichtige Einfluß kam später mit UNIX. Gleich nachdem DOS und der PC
herauskamen, zeigte sich, daß CP/M zu beschränkt war und nicht die Zukunft des
PC sein konnte. Das Betriebssystem UNIX wurde dagegen sehr geschätzt, und
Microsoft, als Autor von DOS, hatte bereits Erfahrung damit gesammelt, indem mit
X ENIX ein eigenes UNIX-Derivat entwickelt wurde. Als DOS für eine neue Version
überarbeitet wurde, erhielt es viele UNIX-Eigenschaften.
Zwei weitere Faktoren spielten eine große Rolle bei der Entwicklung von DOS. Zum
einen sollte DOS möglichst hardwareiunabhängig gestaltet werden, damit es nicht
an Computer und an Peripheriegeräte gebunden ist. Einige der zentralen Funk­
tionsteile von DOS müssen spezifisch an Hardware-Eigenschaften angepaßt wer-
232
20
DOS und unserer Programme
den, aber diese sind in einem speziellen geräteabhängigen Teil isoliert, der DOS­
BIOS genannt wird (als Gegensatz zum eigenen ROM-BIOS des Computers). Au­
ßerhalb des DOS-BIOS hat DOS mit den besonderen Charakteristiken eines Com­
puters nichts zu tun. Das ist vorteilhaft, weil es DOS und speziell die Programme,
die DOS-Dienstprogramme verwenden, geräteunabhängig macht. Aber es gibt
auch einige Nachteile, vor allem weil viele der nützlichsten Geräteeigenschatten
von den DOS-Dienstprogrammen nicht unterstützt werden.
Besonders nachteilig wirkt sich das bei der Bildschirm-Programmierung aus. Die
DOS-Dienstprogramme bieten keine Möglichkeit, Informationen auf dem Bild­
schirm zu positionieren. Man steht also vor der Wahl, entweder den Bildschirm wie
eine Art Fernschreiber zu benützen oder die Geräteunabhängigkeit aufzugeben,
die nur diese Dienstprogramme bieten. Das macht es den meisten leistungsfähi­
gen Programmen unmöglich, automatisch auf jedem DOS-Computer zu funktio­
nieren, also sogar auf Computern, die nicht ganz PC-kompatibel sind.
Den letzten wichtigen Einfluß auf DOS bilden die nachträglich notwendig geworde­
nen Eigenschaften, die die neuen Möglichkeiten unterstützen mußten, die IBM der
PC-Familie hinzugefügt hat. Allgemein läßt sich sagen, daß bei DOS die Eigen­
schaften bei Bedarf fallweise hinzuentwickelt wurden und deshalb nicht einheitlich
gestaltet sind. Es gibt deshalb DOS-Versionen, die zum Beispiel zuerst überhaupt
keine Speicherverwaltungs-Dienstprogramme hatten, und dann versuchte man
nachträglich, schnell eine Speicherverwaltung hinzuzufügen. Das Gleiche trifft auf
die Dienstprogramme für gemeinsame Quellen, Netze, Multi-Programming und
Multi-Tasking zu.
Aus diesen vier Einflußquellen resultiert das DOS, das wir heute verwenden. Dieses
Gemisch von Dienstprogrammen wollen wir in Abschnitt 20.2 näher betrachten.
�
R
Technischer Hintergr,rtmd
20.2
Die DOS-Dienstprogramme
Wir können in diesem Abschnitt nicht sämtliche DOS-Dienstprogramme (meist
DOS-Funktionen genannt) einzeln behandeln. Wir begnügen uns mit einem Über­
blick, der uns das Wichtigste über die DOS-Dienstprogramme mitteilt.
Die DOS-Funktionen werden alle durch eine gemeinsame Interrupt-Anweisung
aufgerufen: Interrupt Nummer 33 (hex 21). Die einzelnen Dienstprogramme werden
durch ihre ID-Nummer angefordert, indem einfach die Dienstprogrammnummer in
eines der Register des Mikroprozessors geladen wird, genauso wie bei den ROM­
BIOS-Dienstprogrammen (zum Beispiel innerhalb der Bildschirmgruppe).
Die DOS-Dienstprogramme sind ebenfalls in Gruppen verwandter Dienstpro­
gramme organisiert, aber nicht so exakt. Wir behandeln sie gruppenweise in ihrer
numerischen Reihenfolge. Man sollte wissen, daß im Gegensatz zu den ROM­
BIOS-Dienstprogrammen, die relativ statisch sind, die Liste der DOS-Dienstpro-
20.2 Die DOS-Dienstprogramme
233
gramme mit jeder neuen DOS-Version weiterwächst. Das ist sowohl gut wie
schlecht. Es ist gut, weil neue Möglichkeiten hinzugefügt werden, aber es ist auch
schlecht, weil nur ein Teil der PC- Anwender mit der letzten DOS-Version auf dem
neuesten Stand bleibt. Dies schaffi Probleme für Programme, die die neuesten
DOS-Eigenschaften einsetzen wollen, da viele PCs ältere DOS-Versionen benüt­
zen. Im Verlaufe dieses Abschnitts werden wir die wichtigsten Abhängigkeiten in
den DOS-Versionen aufzeigen.
Wtr beginnen mit der elementarsten Gruppe von DOS-Dienstprogrammen für die
sogenannte „Konsolenein-/ausgabe" bzw. für die Zusammenarbeit mit dem
Benutzer. Die Eingabe-Dienstprogramme lesen von der Tastatur, und die Ausgabe­
Dienstprogramme geben Informationen auf dem Bildschirm aus, indem sie den
Bildschirm einfach wie einen Drucker behandeln und nur Informationen ausdruk­
ken, ohne irgendwelche Positionierungen auf dem Bildschirm zu beachten. Diese
Dienstprogramme wurden von CP/M übernommen. Sie sind völlig geräteunabhän­
gig konzipiert und berücksichtigen keine Eigenschaften eines speziellen Bild­
schirms (darum können die Bildschirm-Dienstprogramme Informationen nicht auf
bestimmte Bildschirmpositionen plazieren).
Als Teil des CP/M-Erbes sind diese Dienstprogramme ein verrücktes Durchein­
ander. Obwohl es zum Beispiel ein einfaches Tastatureingabe-Dienstprogramm
gibt und eine einfache Bildschirmausgabe-Routine, existiert ein weiteres Dienst­
programm, das als Eingabe oder Ausgabe fungiert oder beides kombiniert, je
nach dem auf welche Weise Sie es benützen. All diese CP/M-artigen Dienstpro­
gramme sollen es relativ leicht machen, CP/M-Programme mit minimalem Auf­
wand nach DOS zu portieren. Denn in den frühen Tagen des PC war es für diesen
wichtig, daß er die große Menge der CP/M-Software nutzen konnte, da es noch
kaum PC-Software gab. Inzwischen ist dieser Grund längst hinfällig, aber diese
Dienstprogramme sind geblieben.
Ebenfalls zur Gruppe elementarer DOS-Routinen gehören Dienstprogramme, die
eine Ausgabe zum Drucker senden und Daten aus der Kommunikationsleitung
(der seriellen Schnittstelle) lesen und in sie schreiben.
Alle DOS-Dienstprogramme, die in diese Kategorie fallen, haben im ROM-BIOS
ähnliche oder in manchen Fällen sogar identische Routinen. Warum sollte DOS
Dienstprogramme kopieren, die das ROM-BIOS bereits liefert? Die Antwort liegt in
der Theorie, daß sich alle Programme mit ihren Anforderungen an DOS wenden
sollen, damit sie nicht an die besonderen Eigenschaften eines Gerätes gebunden
sind. Mit Hilfe der DOS-Dienstprogramme können unsere Programme leichter auf
andere DOS-Computer portiert werden. Sie erlauben außerdem eine flexiblere
Behandlung der Ein-/Ausgabe, zum Beispiel durch das MODE-Kommando von
DOS. Wir können damit Druckerausgaben zur seriellen Schnittstelle umleiten. Ver­
wenden unsere Programme die ROM-BIOS-Drucker-Dienstprogramme, ist das
nicht möglich.
Leider bewährt sich dieses Prinzip nur bei sehr einfachen Ein-/Ausgabeoperatio­
nen mit dem Drucker, der seriellen Schnittstelle, der Tastatur und mit dem Bild­
schirm nur dann, wenn uns egal ist, wie unsere Daten auf dem Bildschirm erschei-
234
20 DOS und unsere Programme
nen. Die meisten Programme stellen aber besonders bei der Bildschirmausgabe
wesentlich anspruchsvollere Anforderungen. Da DOS keine Routinen für die Bild­
schirm-Positionierung zur Verfügung stellt, können wir es für solche Zwecke nicht
verwenden.
Während diese erste Gruppe der DOS-Dienstprogramme im wesentlichen nichts
anderes liefert als das ROM-BIOS, bildet die nächste Gruppe den eigentlichen
DOS-Bereich. Es sind Platten-Dienstprogramme auf hohem Niveau, besonders die
Dateiein-/ausgabe.
Diese Gruppe von Dienstprogrammen ist ebenfalls mit CP/M verwandt, und sie
basieren auf einem Zugriff, der durch neue Entwicklungen in DOS hinfällig wurde.
Diese älteren Datei-Dienstprogramme werden in der DOS-Terminologie die „tradi­
tionellen Datei-Dienstprogramme" genannt und arbeiten mit einem sogenannten
Datei-Steuerblock (engl.: F ile Control Block oder FCB). Unsere Programme erfah­
ren aus den FCBs den Namen und die Kennung von Dateien, außerdem speichert
der FCB Statusinformationen, wenn eine Datei bearbeitet wird. Falls unsere Pro­
gramme diese traditionellen Datei-Dienstprogramme verwenden, ermittelt DOS,
was im FCB steht. Das macht sie für unkontrollierte Aktionen unserer Programme
verwundbar. (Neuere Datei-Dienstprogramme, die wir in Kürze sehen werden,
speichern
die
DOS-Steuerinformation
getrennt
von
unseren
Programmen,
wodurch eine bessere Sicherheit ermöglicht wird.)
Wir wollen nun sehen, was diese FCB-orientierten traditionellen Datei-Dienstpro­
gramme alles für uns tun können. Zunächst gibt es ein Paar von Dienstprogram­
men, mit dem man Dateien finden kann, deren Dateinamen die Zeichen „?" und „*"
einschließen. Eines davon beginnt den Suchvorgang, und das andere setzt die
Suche fort. Unsere Programme können sie verwenden, um entweder nur den
ersten passenden Dateinamen oder die ganze Liste der Dateien zu finden, die der
Spezifikation gerecht werden.
Andere traditionelle Datei-Dienstprogramme „öffnen" eine Datei (bereiten sie für
das Lesen oder Schreiben von Daten vor) und „schließen" sie später. Dann gibt es
noch Dienstprogramme, um eine Datei sequentiell vom Anfang bis zum Ende zu
lesen oder zu beschreiben, und für direktes Lesen oder Schreiben, wenn man an
eine beliebige Stelle in einer Datei springen will.
Die Konsolen-Dienstprogramme, die wir zuerst erwähnten, und die traditionellen
Datei-Dienstprogramme bilden den Großteil der universellen DOS-Dienstpro­
gramme, die in der längst vergessenen ersten DOS-Version 1.00 verfügbar waren.
Es gibt noch ein paar weitere Dienstprogramme in dieser universellen Gruppe, die
das Datum und die Zeit lesen oder setzen, ein Programm beenden, die Plattenveri­
fikation ein- oder ausschalten und noch ein paar andere, die weniger interessant
sind.
Da diese universellen Dienstprogramme von Anfang an verfügbar waren, können
sie bei jeder Version von DOS benützt werden. Die DOS-Dienstprogramme, die wir
im folgenden besprechen, kamen bei späteren DOS-Versionen hinzu, hauptsäch­
lich ab Version 2.00, und können erst ab der entsprechenden DOS-Version ver­
wendet werden.
20.2 Die DOS-Dienstprogramme
235
Das erste davon - nun offensichtlich ein wichtiges Dienstprogramm - meldet, unter
welcher DOS-Version ein Programm läuft. Damit können unsere Programme her­
ausfinden, ob die benötigten Dienstprogramme vorhanden sind. Wenn das nicht
der Fall ist, kann sich ein Programm selbst an die Version anpassen oder zumin­
dest melden, daß es eine andere DOS-Version benötigt. Da dieses Dienstpro­
gramm erst mit DOS 2.00 eingeführt wurde, kam es vielleicht etwas spät. Frühere
DOS-Versionen melden sich mit Versionsnummer „O", wenn ein Programm dieses
Dienstprogramm benützt. Das ist nicht ganz korrekt, aber zumindest zeigt es eine
Vorgängerversion von DOS 2.00 an.
DOS 2.00 und alle späteren Versionen bieten für Dateioperationen eine Alternative
zu den FCB-orientierten traditionellen Datei-Dienstprogrammen. Diese neuen
Datei-Dienstprogramme arbeiten mit einem sogenannten „handle", der einfach
aus einer Zwei-Byte-Zahl besteht und jede Datei identifiziert, die von einem Pro­
gramm verwendet wird. Wenn ein Programm eine Datei öffnet und dabei diese
neuen Datei-Dienstprogramme benützt, übergibt DOS die Zwei-Byte-Zahl an das
Programm, mit dem die Datei für alle folgenden Dateioperationen identifiziert wird,
bis sie wieder geschlossen wird. Durch den Einsatz dieses „handle" kann DOS die
kritische Dateisteuerinformation sicher und getrennt von unseren Programmen
abspeichern, was sie vor Beschädigung oder Veränderung schützt. Diese „hand­
le"-orientierten Dienstprogramme bieten die gleichen Möglichkeiten wie die FCB­
orientierten, aber sauberer. Unseren Programmen stehen zahlreiche Standard­
handle zur Verfügung - einer für die Ausgabe normaler Information auf dem Bild­
schirm, ein anderer für Fehlermeldungen (die auf dem Bildschirm erscheinen, so­
gar wenn der Anwender DOS damit beauftragt, Bildschirmausgaben zu senden)
usw.
Zusätzlich liefern alle DOS-Versionen ab 2.00 Dienstprogramme, die mit der
besonderen logischen Struktur von DOS-Platten umgehen können. Mit diesen
Dienstprogrammen kann man Inhaltsverzeichnisse erzeugen und löschen, das Un­
terinhaltsverzeichnis ändern, den Inhaltsverzeichniseintrag einer Datei von einem
Inhaltsverzeichnis zu einem anderen transportieren usw.
Ferner gibt es Dienstprogramme, durch die unsere Programme enger mit den
Geräten des Computers zusammenarbeiten können, ohne daß sie aus dem Rah­
men von DOS ausbrechen müssen. Vorher konnten unsere Programme Geräte,
z.B. Platten, mit DOS nur sehr primitiv verwalten oder aber sehr elegant, wenn sie
ohne DOS arbeiteten. Diese neuen Gerätesteuerungs-Dienstprogramme schließen
diese Lücke. Zum Beispiel können unsere Programme mit diesen neuen Dienst­
programmen feststellen, ob eine bestimmte Platte fest installiert (wie eine Fest­
platte oder RAM-Platte) oder auswechselbar ist (wie eine Diskette), und im Fall von
Disketten-Laufwerken kann das Laufwerk feststellen, ob wir Platten gewechselt
haben (das können z.B. die hochkapazitativen Diskettenlaufwerke des AT). Durch
solche Möglichkeiten können unsere Programme mit dem Computer intelligenter
umgehen.
Es gibt auch Dienstprogramme für den Speicher. Normalerweise darf ein Pro­
gramm, das unter DOS läuft, exklusiv den ganzen Arbeitsspeicher des Computers
236
20 DOS und unsere Programme
für sich beanspruchen, aber diese Dienstprogramme erlauben eine weitreichen­
dere Aufteilung des Speichers.
Weitere Dienstprogramme ab DOS 2.00 und späteren Versionen bieten Möglich­
keiten, mit denen ein Programm Unterprogramme und Programm-Overlays laden
und starten kann.
Die meisten Zusatzfunktionen kamen mit der Version 2.00, aber einige Funktionen
wurden erst in späteren Versionen integriert. Version 3.00 enthielt zusätzlich erwei­
terte Fehlercodes. Unsere Programme erhalten damit viel detailliertere Erklärungen
über Fehlerursachen. Die wichtigsten neuen Funktionen in DOS 3.00 und 3.10
beschäftigen sich jedoch mit den speziellen Problemen bei der Verwendung von
Netzwerken. Mit diesen neuen Dienstprogrammen kann man den Zugriff auf alle
Teile einer Datei sperren und entsperren, was notwendig ist, wenn mehrere Com­
puter (durch ein Netzwerk) auf die gleiche Datei zugreifen, ohne einander zu stö­
ren. Ähnliche, auf Netzwerke bezogene Dienstprogramme existieren auch für die
Steuerung und Umleitung von Druckerausgaben.
Das waren die wichtigsten DOS-Dienstprogramme, aber es gibt noch ein paar
andere, die ziemlich interessant und nützlich sind. Die faszinierendsten sind viel­
leicht diejenigen, mit denen unsere Programme sich selbst im Speicher des Com­
puters laden und dort verbleiben können, während DOS andere Programme laufen
läßt.
Das sind die residenten Programme, die heute die meisten PC-Benutzer kennen,
zum Beispiel Prokey oder Sidekick und die residenten Teile von DOS wie die
MODE- und PRINT-Kommandos. Dieser Programmtyp benützt zwei residente
Dienstprogramme - ein altes, das zu den universellen DOS-Dienstprogrammen
gehört, und ein neues, das mit DOS 2.00 eingeführt wurde. Unabhängig davon,
welches verwendet wird, können unsere Programme damit in einem Teil des
Arbeitsspeichers resident bleiben, der nicht durch die nachfolgenden Programme
benützt wird, die DOS aktiviert.
Ein DOS-Dienstprogramm bezieht sich auf die Ausführung dieser Programme. Ein
residentes Programm kann damit melden, wenn es sicher einsatzbereit ist. In Kapi­
tel 17 haben wir besprochen, daß die ROM-BIOS-Programme reentrantfähig sein
müssen, damit sie ohne Schwierigkeiten unterbrochen und wiederaktiviert werden
können. DOS arbeitet jedoch nicht immer mit dieser Reentrant-Technik. Das
bedeutet, daß zu bestimmten Zeiten ein Programm eine andere DOS-Routine nicht
anfordern kann, wenn DOS mitten in einer Operation ist. Ein spezielles DOS­
Dienstprogramm meldet, ob sich DOS in diesem gefährlichen Zustand befindet
oder nicht. Falls Sie das Sidekick-Programm verwenden und es Ihnen jemals
etwas „vorgepiepst" hat, war das der Grund dafür. Wenn wir versuchen, Sidekick
zu aktivieren, aber Sidekick feststellt, daß DOS in diesem „Unterbrich-mich-nicht"­
Status ist, meldet es dies durch einen Piepsten.
Ein anderes interessantes DOS-Dienstprogramm wird für landesabhängige Infor­
mationen verwendet, zum Beispiel für das Währungssymbol (das Dollarzeichen,
Pfundzeichen, etc.), das verwendet werden sollte, oder für die Interpunktion von
20.2 Die DOS-Dienstprogramme
237
Zahlen (zum Beispiel so: „12,345.67" oder so „12 345,67"). DOS ist so gestaltet,
daß es verschiedenen nationalen Konventionen gerecht wird, und es kann unseren
Programmen die landesspezifischen Informationen mitteilen, damit sie sich bei
Bedarf automatisch anpassen können. Unsere Programme können die landesab­
hängige Information von DOS nicht nur erfahren, sondern sie können DOS auch
anweisen, den Landescode zu ändern, mit dem es arbeitet.
Wir könnten noch mehr DOS-Dienstprogramme besprechen, aber Sie sollten hier
nur eine Vorstellung von den wichtigsten DOS-Dienstprogrammen erhalten und ei­
nige Besonderheiten dieser Dienstprogramme erfahren. Im nächsten Kapitel ler­
nen wir, wie ganze Programme entworfen werden.
238
21
Wie man Programme schreibt
Wenn man sich schon mit dem PC oder seiner Programmierung beschäftigt, sollte
man auch die Techniken der Programmgenerierung kennen, auch wenn wir nicht
selbst Programme entwickeln und nur wissen wollen, was hinter den von uns ver­
wendeten Programmen steckt.
Natürlich können wir hier nur einen kurzen Blick darauf werfen, wie Programme
generiert werden, damit wir ein Gefühl dafür bekommen, was alles dazu gehört.
Wenn Sie die Schritte der Programmentwicklung besser verstehen möchten, gibt
es spezielle Bücher für die Programmierung der PC-Familie, einschließlich meines
Buches „The Peter Norton Programmer's Guide to the IBM PC".
21.l
Programmiersprachen
Im Endeffekt führen unsere Computer nur Anweisungen der sogenannten „absolu­
ten" Maschinensprache aus. Aber niemand schreibt Programme in Maschinen­
sprache, sondern wir schreiben Programme in Programmiersprachen. Program­
miersprachen sind die Werkzeuge für Programmierer, genauso wie Schriftsteller in
Englisch und anderen Sprachen Bücher schreiben.
Wenn wir Programmiersprachen verwenden wollen, müssen wir über sie Bescheid
wissen, vor allem auch, auf welche Art sie in die Maschinensprache des Compu­
ters umgewandelt werden. Dieser Abschnitt behandelt die Charakteristiken von
Programmiersprachen. In Abschnitt 21.2 zeigen wir, wie die Programmiersprachen
in die Maschinensprache des Computers umgesetzt werden.
Zunächst sollte man wissen, daß es einen Unterschied zwischen der Assembler­
sprache und allen anderen Programmiersprachen gibt (die zusammengefaßt als
höhere Programmiersprachen bezeichnet werden).
Die Assemblersprache stellt im wesentlichen die Maschinensprache des Compu­
ters dar, die jedoch in einer Form ausgedrückt wird, mit der wir leichter arbeiten
können. Der Kernpunkt bei der Assemblersprache ist, daß der Programmierer
detailliert nacheinander alle Anweisungen aufschreiben muß, die der Computer im
einzelnen bei einem Programm ausführen soll. Wir sind schon einige Male kurz mit
der Assemblersprache in Berührung gekommen, zum Beispiel im Abschnitt „Blick
auf einen Interrupt-Verwalter" in Kapitel 6. Ein weiteres Beispiel sehen Sie in Abbil­
dung 21-1, wo ein Unterprogramm in Assemblersprache gezeigt wird, das ich in
meinen Programmen verwende. Es löscht den Tastaturpuffer (eine wichtige Opera­
tion, die notwendig ist, bevor ein Programm sicherheitshalber fragt „Soll diese
Datei wirklich gelöscht werden?"; das Löschen des Tastaturpuffers schützt vor
einer Antwort, die eingetippt wurde, bevor die Frage gestellt worden ist). Wenn Sie
wissen wollen, wie ein Assembler-Unterprogramm aussieht, können Sie das Wich­
tigste darüber in Abbildung 21-1 sehen.
Die Assemblersprache ist das Äquivalent des Programmierers zur Maschinen­
sprache des Computers, weil jede einzelne maschinensprachliche Anweisung mit
21.1
Programmiersprachen
2:39
wenigen assemblersprachlichen Codes erzeugt werden kann. Während maschi­
nensprachliche Anweisungen fast unleserlich hexadezimal codiert sind, sind
Assemblercodes für erfahrene Programmierer leicht verständlich. Mit etwas Praxis
können wir ein Assemblerprogramm zumindest teilweise lesen. Die erste echte
Anweisung in Abbildung 21-1 ist zum Beispiel MOV AH,11, die dem Computer sagt,
daß er die Zahl 11 in das Register AH bringen (MOVen) soll. Natürlich ist die Bedeu­
tung von MOV AH,11 nicht für jeden offensichtlich, aber Sie können sehen, daß
man das Lesen und sogar Schreiben in Assembler durchaus lernen kann.
Um die Assemblerprogrammierung zu verstehen, müssen Sie wissen, das es im
wesentlichen drei Teile gibt. Der erste Teil ist das, was wir hauptsächlich als
Assemblersprache betrachten: einzelne Maschinenanweisungen, in einer Form
geschrieben, die Programmierer verstehen (wie MOV AH,11). In diesem Teil der
Assemblersprache wird jede Zeile des Programmcodes direkt in eine einzelne
Maschinenanweisung übersetzt.
; FLUSHKEY - Loescht den DOS-Tastaturpuffer
DOS generic
PROG
FLUSHKEY
PGROUP
GROUP PROG
PUBLIC
FLUSHKEY
SEGMENT BYTE PUBLIC 'PROG'
ASSUME
CS:PROG
PROC
NEAR
TEST:
MOV
AH,11
INT
33
OR
AL,AL
JZ
RETURN
; wenn null
dann zurueck ins aufrufende Programm
;
MOV
AH,7
INT
33
JMP
TEST
; prueft den Tastaturstatus
Funktionsaufruf
Liest ein Byte
Funktionsaufruf
RETURN:
RET
FLUSHKEY
ENDP
PROG
ENDS
END
Abb. 21-1:
Ein Unterprogramm in Assemblersprache
240
21 Wie man Programme schreibt
Der zweite Teil der Assemblerprogrammierung besteht aus Befehlen, die im
wesentlichen den Status für den wirklich arbeitenden Teil des Programmes setzen.
In Abbildung 21-1 ist alles, was vor MOV AH,11 steht - zum Beispiel die Zeile
ASSUME CS:PROG - Teil dieser Statusvorbereitung. Im Falle von ASSUME
CS:PROG gibt sie an, was mit dem CS-Code-Segmentregister passiert, das wir in
Kapitel 6 kennengelernt haben.
Der dritte Teil der Assemblersprache ist eine arbeitssparende Einrichtung. Wenn
eine Reihe von Anweisungen wiederholt werden soll, erlaubt die Assembler­
sprache dem Programmierer, viele Anweisungen in Form einer „Makro-Anwei­
sung" bzw. eines Makros abzukürzen. Abbildung 21-1 enthält keine Makros, aber
es wären Makros möglich. Sie werden bemerken, daß ein Paar von Anweisungen
(MOV AH,X und INT 33) doppelt erscheint, wobei nur ein leichter Unterschied zwi­
schen ihnen besteht (die MOV-Anweisung beinhaltet eine andere Zahl). Diese
Anweisungen können durch ein Makro ersetzt werden, das das Paar von Anwei­
sungen in einer einzigen Zeile darstellt. (Die Makroeinrichtung in der Assembler­
sprache kann dem Unterschied zwischen den Anweisungspaaren gerecht werden,
indem sie einen Parameter durch die jeweilige Zahl ersetzt. Makros erlauben die­
sen Trick und sogar noch viel kompliziertere.) Diese drei Elemente, d.h. Programm­
anweisungen, die in Maschinensprache umgewandelt werden, Verwaltungsbefehle
und Makroabkürzungen, sind der Kern der Assemblersprache.
Das Schreiben eines Assemblerprogrammes ist ein ausgesprochen langwieriger
Vorgang. Eine Vorstellung davon, wieviele Anweisungen in einem Programm ent­
halten sind (nicht in einem derart kurzen Unterprogramm, wie in Abbildung 21-1),
liefert Ihnen als Beispiel für ein Programm von mittlerer Größe das NU-Programm,
das der Kern der Norton Utilities ist und etwa 20.000 Maschinenanweisungen ent­
hält. Ein komplexes Programm, wie Lotus 1-2-3 oder Framework von Ashton-Tate,
kann leicht über 150.000 einzelne Maschinenanweisungen beinhalten. Falls
solche Programme in Assemblersprache geschrieben werden, muß der Program­
mierer sämtliche Befehle für den Computer schreiben, wobei jeder Befehl kompli­
ziert ist und eine mögliche Fehlerquelle darstellt, wenn irgendeine Kleinigkeit
falsch gemacht wird. Wenn ich dieses Buch schreibe und einige Wörter flasch
buchtsabiere, ist das Buch trotzdem noch nützlich - aber ein winziger Fehler in
einem Programm kann möglicherweise ein Programm wertlos machen. Und wenn
ein Assemblerprogramm 150.000 oder auch nur 20.000 Anweisungen (auch
Codezeilen genannt) hat, sind die Fehlermöglichkeiten enorm.
Höhere Sprachen - das sind alle Computersprachen außer der Assemblersprache
- sollen das langwierige und fehlerträchtige Programmieren in der Assembler­
sprache vermeiden helfen, indem sie den Computer möglichst viele Maschinenan­
weisungen selbst erzeugen lassen. Sie beruhen im wesentlichen auf zwei Ideen:
zum einen sollen viele Maschinenanweisungen in einer einzigen Programmanwei­
sung zusammengefaßt werden, wie bei den Assemblermakros, aber noch wesent­
lich mehr. Zum anderen soll von den Details der Arbeitsweise des Computers
abstrahiert werden - zum Beispiel, welche Register wofür in der Maschinen­
sprache verwendet werden.
21.1
Programmiersprachen
241
Wenn ein Programm drei Zahlen addieren soll, arbeitet es mit einem der Allzweck­
register des Computers, zum Beispiel mit AX, BX, CX oder DX (wie wir in Kapitel 6
gelernt haben), das hat jedoch wirklich nichts mit unserer Zielsetzung zu tun.
Assemblerprogrammierer müssen sich mit sinnlosen Details befassen, zum Bei­
spiel mit der Auswahl der Register (und mit deren konsistenter Verwendung). Bei
höheren Programmiersprachen bleibt einem diese Mühe erspart. Höhere Program­
miersprachen erzeugen typischerweise für jede Programmanweisung eine Menge
Maschinencode (womit menschliche Arbeit eingespart wird) und schützen uns vor
unnötigen Details (z.B. vor der Spezifikation der Register und Speicheradressen).
Sowohl die Assemblersprache als auch die höheren Programmiersprachen haben
ihre Vor- und Nachteile. Einige Nachteile der Assemblersprache wurden bereits
angesprochen, hauptsächlich die Tatsache, daß mehr Arbeit bzw. mehr Pro­
grammzeilen erforderlich sind, um das gleiche Ergebnis zu erzielen, und daß
wegen der vielen Details mehr Fehlermöglichkeiten bestehen. Zu den weiteren
Nachteilen gehört, daß mehr Wissen verlangt wird als bei den meisten höheren
Programmiersprachen. Vorteilhaft ist dagegen, daß Assemblerprogramme norma­
lerweise kürzer sind und schneller laufen, weil Assemblerprogrammierer möglichst
effizientere Wege für die Ausführung eines Schrittes zu finden versuchen, während
höhere Programmiersprachen solche Detailarbeit immer gleich erledigen. Außer­
dem können wir mit der Assemblersprache sämtliche Fähigkeiten des Computers
ausreizen, während das bei höheren Programmiersprachen nicht möglich ist. Grob
ausgedrückt, können wir sagen, daß wir durch höhere Programmiersprachen 90
Prozent der potentiellen Fähigkeiten des Computers ausnützen können, mit der
Assemblersprache dagegen 100 Prozent, sofern wir die Sprache beherrschen.
Bis jetzt haben wir die höheren Programmiersprachen als eine gemeinsame Kate­
gorie betrachtet. Sie haben zwar viele gemeinsame Merkmale, besonders im
Gegensatz zur Assemblersprache, aber es gibt auch wichtige Unterschiede zwi­
schen ihnen. Die Unterschiede sehen wir am Besten, wenn wir über die Sprachen
reden, die für die Programmierung der PC-Familie wichtig sind. Von den vielen ver­
fügbaren Programmiersprachen besprechen wir nur BASIC, Pascal, C und dBASE,
durch die alle höheren Programmiersprachen im wesentlichen repräsentiert sein
sollen.
BASIC stellt am ehesten eine universelle Programmiersprache für Personal Com­
puter dar. Nahezu jeder Personal Computer wird komplett mit der einen oder ande­
ren Form von BASIC geliefert, und bei den IBM Personal Computern ist das BASIC
sogar in den ROM-Programmen eingebaut, damit wir es auf den IBM-PCs ohne
Platten benützen können.· In diesem Buch haben Sie viele Programmbeispiele
gesehen, die fast alle in BASIC geschrieben sind.
BASIC ist keine professionelle Programmiersprache, aber man kann mit ihr gut
herumexperimentieren (das ist einer der Hauptgründe, warum wir sie in unseren
Beispielen eingesetzt haben) und sie reicht für viele Programmanwendungen aus,
die nicht zu anspruchsvoll sind. Zwei Programme, die ich regelmäßig verwende,
sind in BASIC geschrieben: mein Buchhaltungsprogramm und mein Kommunika­
tionsprogramm (PC-Talk) für den On-Line-Zugriff.
242
21 Wie man Programme schreibt
Die Stärke von BASIC liegt darin, daß die Sprache leicht erlernbar ist und Eigen­
schaften enthält, durch die wir auf die meisten speziellen Möglichkeiten der PC­
Familie zugreifen können; zum Beispiel ist die Programmierung von Musik bzw.
des Lautsprechers ganz einfach. (Die meisten anderen höheren Programmierspra­
chen verfügen nur über allgemeine Eigenschaften, die auf jedem Computer ver­
wendet werden können. Für spezielle Möglichkeiten des PC muß man bei solchen
Programmiersprachen spezielle Methoden anwenden und das bedeutet normaler­
weise die Verwendung der Assemblersprache. Mehr darüber erfahren Sie später.)
BASIC hat einige wichtige Beschränkungen, die Sie kennen sollten. Es läuft viel
langsamer als andere höhere Programmiersprachen und ist hinsichtlich der Pro­
grammgröße und der Datenmenge, die bearbeitet werden kann, sehr beschränkt.
Außerdem lassen sich in BASIC kaum übersichtliche, strukturierte Programme
schreiben.
Im Gegensatz dazu sind die Sprachen Pascal und C sehr gut für die professionelle
Programmierung geeignet. Mit beiden Sprachen kann man sehr gut übersichtlich
und strukturiert programmieren. Beispiele für beide Sprachen sehen Sie in Abbil­
dung 21-2 und 21-3.
(* Dieses Pascal-Programm zaehlt Woerter *)
programm zaehler (output, input_file>;
var
input_file
i
text;
: word;
tausende
word;
einheiten
word;
zeile
lstring (255>;
alpha
boolean;
aktiv
boolean;
procedure report;
var
i, x : word;
begin
write CchrC13));
if tausende
=
0 then
write Ceinheiten:7)
else
begin
write Ctausende:3);
write (','>;
x := einheiten;
for i
:=
1 to 3 do
begin
write (x div 100 : 1>;
x
end;
end;
erid;
:=
(x mod 100) * 10;
21.1 Programmiersprachen
procedure weiterzaehlen;
begin
einheiten := einheiten
1;
+
if einheiten >= 1000 then
begin
einheiten := einheiten
-
tausende := tausende
1;
+
1000;
end;
if Ceinheiten mod 100) = 0 then
report;
end;
begin
:= O;
tausende
einheiten := O;
reset Cinput_file>;
while not eof Cinput_file) do
begin
aktiv := false;
readln Cinput_file, zeile>;
for i := 1 to zeile.Len do
begin
if aktiv then
begin
if zeile [i] = ' ' then
aktiv := false;
end
else
if zeile [i] in ['a'
• •
'z','A'
begin
aktiv := true;
weiterzaehlen;
end;
end;
end;
report;
write C' Woerter.');
end.
Abb. 21-2:
Beispiel für ein Pascal-Programm
• •
'Z'J then
243
244
21
Wie man Programme schreibt
/*Dieses C-Programm gibt eine doppelte Umrahmungslinie aus */
box ()
{
dzeile =
O; dspal = 1.
vdup (205,78>;
,
dzeile = 24; dspal = 1; vdup (205,78>;
for Cdzeile = 1; dzeile < 24; dzeile++)
{
dspal =
O; vdup (186,1);
dspal = 79; vdup (186,1);
}
dzeile =
O; vdup C201,1>;
dspal = 79; vdup C187,1);
dzeile - 24; dspal = O; vdup C200,1>;
dspal = 79; vdup C188,1>;
if (TEST>
{
if Cswtchset ("X"))
{
i;
int
unsigned x;
char s [40J;
int
sl;
for Ci = 1;
< 24; i++)
{
sl = O;
decint Cs,&sl,i,3);
dzeile = i;
dspal = 77;
vstr Cs>;
}
dzeile = 24; dspal = 3;
x = spstart - splowest;
decintO Cs,x);
vstr (" ");
vstr
Cs);
vstr (" benuetzter Stack ">;
dspal += 2;
decintO Cs,poolleft>;
vstr (" ");
vstr
Cs>;
vstr (" freier Pool ");
dspal += 2;
x = pool - poolsave;
21.1 Programmiersprachen
245
decintO Cs,x>;
vstr (" ");
vstr
Cs>;
vstr (" benuetzter Pool,");
dspal += 2;
x = poolends - poolend;
decintO Cs,x>;
vstr (" ">;
vstr
Cs>;
vstr (" benuetzter Heap ");
}
}
}
Abb. 21-3:
Beispiel für ein C-Programm
Pascal und C haben viele Ähnlichkeiten, einschließlich ihrer strukturierenden
Eigenschaften, die eine gute Programmierung unterstützen. Beide sind für den pro­
fessionellen Einsatz bei der Erstellung größter und anspruchsvollster Programme
bestens geeignet. Pascal wird häufig in der Schule gelernt und gerne für den Infor­
matikunterricht eingesetzt; tatsächlich war sie ursprünglich auch als Schulsprache
gedacht und nicht für die professionelle Anwendung. Seine weite Verbreitung wird
nicht zuletzt durch den preiswerten und sehr beliebten Turbo-Pascal-Compiler un­
terstützt. C wird von Programmierern bevorzugt, die sehr effizient programmieren
wollen und deren Programme leicht portierbar sein sollen (z.B. auf das UNIX­
Betriebssystem, das stark an den Konventionen von C orientiert ist).
Auch die beliebten Norton Utilities wurden zuerst in Pascal geschrieben und später
in C übersetzt. Ich mag beide Sprachen. Einzeln gesehen, betrachte ich Pascal als
die bessere Sprache, sauberer und weniger fehlerträchtig. Andererseits eignet sich
C besonders gut für Programme, die kompakt und effizient sein müssen und eng
mit dem BIOS und mit DOS zusammenarbeiten sollen. Ebenso erwähnenswert ist,
daß ich sowohl bei den Pascal- als auch bei den C-Versionen meiner Programme
mit Assemblerunterprogrammen arbeiten mußte, um Aufgaben auszuführen, die in
höheren Programmiersprachen nicht erledigt werden konnten. Das Assemblerun­
terprogramm in Abbildung 21-1 ist eines davon. Dies verdeutlicht einen wichtigen
Punkt bei der Erstellung professioneller Programme: oft wird primär in einer höhe­
ren Programmiersprache (wie Pascal oder C) programmiert und die Assembler­
sprache als Hilfsmittel eingesetzt, um die Beschränkungen der höheren Program­
miersprachen zu umgehen.
Welche Programmiersprache für die Erstellung eines bestimmten Programmes
verwendet werden sollte, richtet sich oft nach sehr pragmatischen Gesichtspunk­
ten, nämlich einfach danach, welche Sprachen der Programmierer schon kennt
(oder leicht lernen kann) und wie gut sich die Eigenschaften der Programmier­
sprache für die Bedürfnisse des Programmes eignen. Persönlicher Geschmack
oder Bequemlichkeit spielt eine große Rolle bei der Auswahl einer Programmier­
sprache - warum auch nicht?
246
21
Wie man Programme schreibt
Eine letzte Gruppe von Programmiersprachen sollten wir noch betrachten, die wir
Anwendersprachen nennen. Diese Programmiersprachen gehören zu Anwender­
programmen, wie zum Beispiel dBASE II und III, Rbase 5000, Framework (mit sei­
ner Programmiersprache „Fred") usw. Man bezeichnet sie manchmal auch als
sehr hohe Programmiersprachen, weil sie noch einen Schritt weiter gehen und im
Rahmen der Anwendung (als Datenbanksystem o. ä.) eine sehr komfortable Pro­
grammierung erlauben. Einzeln betrachtet, ist jede dieser Anwendersprachen eine
ganze Welt für sich, wobei eine Ähnlichkeit zur üblichen Programmierung kaum
noch erkennbar ist. Anders als bei der Gruppe der höheren Programmiersprachen
haben sie auch untereinander kaum Ähnlichkeiten hinsichtlich ihrem Anwen­
dungszweck und ihrem Programmierstil.
Die wahrscheinlich bekanntesten Anwendersprachen sind die Tabellenkalkula­
tionsprogramme, wie das berühmte 1-2-3-Programm. Tabellenkalkulationen sind
im Grunde Programmiersprachen, weil sie uns die Möglichkeit geben, Befehle auf­
zuheben und zu speichern, damit sie immer wieder benützt werden können - was
ja das Wesen einer Programmiersprache ist. Die Programmiersprache für eine
Tabellenkalkulation ist viel spezialisierter als die meisten Programmiersprachen.
Sie ist im Rahmen des Anwendungszwecks leistungsfähiger auf Grund der in dem
Tabellenkalkulationsprogramm eingebauten Funktionen, andererseits in ihren
Möglichkeiten aber begrenzter, weil sie nur für die Tabellenkalkulation verwendet
werden kann.
Generell können Anwenderprogrammiersprachen in zwei Gruppen unterteilt wer­
den. Eine Gruppe, die durch 1-2-3 und andere Tabellenkalkulationsprogramme
repräsentiert wird, hat einen sehr begrenzten Anwendungsbereich. Die Mitglieder
dieser Gruppe sind nur teilweise programmierbar. Die andere Gruppe, die durch
dBASE III oder die Fred-Sprache von Framework repräsentiert wird, ist erheblich
leistungsfähiger und fast so allgemein und flexibel wie normale Programmierspra­
chen (z.B. BASIC). Die Mitglieder dieser Gruppe sind im wesentlichen vollwertige
Programmiersprachen für bestimmte Anwendungszwecke (z.B. für die Datenbank­
verwaltung).
Nach dieser allgemeinen Charakterisierung behandeln wir im folgenden, wie die
verschiedenen Programmiersprachen implementiert werden und wie brauchbare
Maschinenanweisungen für unsere PCs erzeugt werden.
21.2
Das Übersetzen von Programmen
Um ein Programm, das in irgendeiner Programmiersprache geschrieben wurde,
auf unseren PCs wirklich ausführen zu können, muß es in Maschinenanweisungen
übersetzt werden. Diese Übersetzung kann auf drei verschiedene Weisen gesche­
hen: durch Interpretation, Assemblierung und Compilierung. Die Grundlagen die­
ser drei Programmübersetzungsverfahren sollten wir verstehen, um zu begreifen,
was in unseren Computern vorgeht; außerdem erklärt es wichtige Beschränkungen
für unsere Programme und, warum einige Programme schnell und andere ziemlich
langsam laufen.
21.2
Das Übersetzen von Programmen
247
Die Interpretation ist eine besondere Art der Übersetzung, bei der unsere Pro­
gramme erst dann in Maschinensprache übersetzt werden, wenn das Programm
ausgeführt wird. Es ist vergleichbar mit der Simultanübersetzung auf internationa­
len Konferenzen oder bei den Vereinten Nationen.
Bei der Interpretation eines Computerprogrammes geschieht grundsätzlich folgen­
des: das zu interpretierende Programm - wir nennen es Programm-P - wird von
einem lnterpreterprogramm überarbeitet, dem Interpreter-!. Wenn wir Programm-P
verwenden, läßt der Computer in Wirklichkeit den Interpreter-! laufen, und Interpre­
ter-! führt die Schritte aus, die Programm-P verlangt. Interpreter-! verarbeitet den
Text von Programm-P und erledigt schrittweise die Arbeit von Programm-P. Im
Endeffekt übersetzt der Interpreter-! das Programm-P Wort für Wort, Schritt für
Schritt, und führt es während des Laufs aus - genauso arbeiten die simultanen
Übersetzer bei den Vereinten Nationen.
Die Interpretation ist daher ein langsamer und ineffizienter Vorgang, aber flexibel.
Sie ist langsam, weil die Übersetzung gleichzeitig mit der Ausführung des Pro­
grammes erfolgt und damit Zeit für zwei Aufgaben anstatt für eine verbraucht wird.
Sie ist ineffizient, weil die Übersetzung immer wieder erfolgt - nicht nur jedesmal,
wenn das Programm läuft, sondern auch jedesmal, wenn ein Schritt des Program­
mes wiederholt wird. Da ein Großteil der Leistungsfähigkeit von Programmen auf
der Wiederholung von Schritten basiert (Programmschleifen), gibt es viel wieder­
holte Übersetzungen, wenn ein Programm interpretiert wird. Andererseits ist die In­
terpretation besonders flexibel, weil ein interpretiertes Programm während des
Laufs modifiziert werden kann. Da die Übersetzung eines interpretierten Program­
mes fortwährend geschieht, können Änderungen sofort an Ort und Stelle vor­
genommen werden.
Interpretierte Programme begegnen uns häufig. Das BASIC unserer PCs und prak­
tisch alle programmierbaren Anwendungen - Tabellenkalkulationen wie 1-2-3, und
Datenbanken wie dBASE - werden interpretiert.
Wenn wir ein interpretiertes Programm, z.B. eines der BASIC-Programme aus
Anhang A, laufen lassen, halten wir es für das eigentliche Programm, das im Com­
puter läuft. Aus der Sicht des Computers und des Betriebssystems (DOS) ist das
ausgeführte Programm jedoch der Interpreter (BASIC oder 1-2-3 o. ä.) und, was wir
als Programm betrachten, sind nur Daten, mit denen der Interpreter arbeitet. Bei
einem BASIC-Programm läuft in Wirklichkeit das Programm BASIC.COM, und
unser „Programm", zum Beispiel LABYRINT.BAS, sind nur Daten für das Pro­
gramm. Natürlich sind diese „Daten" eine ganz besondere Datenart, die die
Schritte beschreiben, die der Computer für uns ausführen soll. Und genau das
macht für uns ein Programm aus. Meistens spielt diese technische Unterscheidung
keine Rolle, aber manchmal treffen wir auf einige ihrer Grenzen. Da der BASIC­
Interpreter zum Beispiel nur ein einziges 64K-Datensegment bearbeiten kann (er­
innern Sie sich an unsere Besprechung des Speichers und der Datenadressierung
in Kapitel
7), dürfen interpretierte BASIC-Programme insgesamt nicht größer als
64K sein, was sowohl das „Programm" (das für den Interpreter Daten darstellt) als
auch die eigentlichen Daten des Programms einschließt.
248
21
Wie man Programme schreibt
Obwohl BASIC, Tabellenkalkulationsprogramme und dBASE-Programme norma­
lerweise interpretiert werden, gibt es dafür inzwischen auch Compiler. Wir werden
später darauf zurückkommen.
Bei den anderen zwei Arten der Programmübersetzung - Assemblierung und
Compilierung - werden Programme nur einmal übersetzt, d.h. in die Maschinen­
sprache des Computers konvertiert. Assemblierung und Compilierung haben
mehr Gemeinsamkeiten als Unterschiede, und wir werden diese zuerst behandeln.
Assemblierte und compilierte Programme werden durch den Programmentwickler
im Voraus in die Maschinensprache übersetzt, bevor jemand das Programm
benützt. Bei diesen Programmen ist die Übersetzung ein Teil der Programment­
wicklung. Das bedeutet, daß der Anwender des Programmes keine Zeit mit dessen
Übersetzung verschwenden muß und auch nicht die Übersetzungssoftware dazu
benötigt. Solche Programme sind unmittelbar betriebsbereit. Im Gegensatz dazu
können interpretierte Programme nur benützt werden, wenn wir auch den Interpre­
ter haben. Wir können BASIC-Programme nur laufen lassen, wenn wir den BASIC­
Interpreter (die Programmdatei BASIC.COM) haben.
Wer einen Assembler oder einen Compiler für eine Programmiersprache entwirft,
muß viele Entscheidungen darüber treffen, wie der Übersetzer arbeiten soll und
welche Eigenschaften die Programmiersprache haben soll. Eine Programmier­
sprache, wie Pascal, ist eigentlich eine Kombination aus zwei Elementen: die allge­
meine Form der Programmiersprache (d.h. ihre Syntax und prinzipiellen Eigen­
schaften) und die spezifische Implementierung (spezifische Eigenschaften und der
Modus Operandi). Beim Beispiel von Pascal gibt es einen sehr grundlegenden Un­
terschied zwischen dem eigenen Pascal-Compiler von IBM und dem Turbo-Pas­
cal-Compiler von Borland. Dazu gehört zum Beispiel, wie der Compiler mit Zei­
chenstringdaten arbeitet (eine Spracheigenschaft) und ob Programme aus separat
compilierten Teilen zusammengesetzt werden können (ein Modus-Operandi­
Aspekt).
Deshalb wird ein Programm in Wirklichkeit nicht in einer allgemeinen Program­
miersprache geschrieben, sondern entsprechend den Charakteristiken einer spe­
zifischen Implementierung einer allgemeinen Programmiersprache. Programme
werden also nicht in „Pascal" oder „C" geschrieben, sondern in Turbo Pascal oder
Lattice C.
Die meisten Compiler und Assembler für die PC-Familie folgen einem bestimmten
Standard, der als Teil der Gesamtorganisation von DOS geschaffen wurde. Ent­
sprechend diesem Standard konvertiert der Übersetzer unsere Programme von der
Sprache, in der sie geschrieben wurden, in die Maschinenanweisungen des Com­
puters, aber das bedeutet nicht, daß die übersetzte Version auch bereits einsatzbe­
reit ist. Normalerweise ist sie das nicht. In Abschnitt 21.3 sehen wir die Gründe
dafür - und die zusätzlichen notwendigen Schritte. Allerdings arbeiten nicht alle
Programmiersprachenübersetzer in dieser Art. Einige folgen ihren eigenen Regeln
und haben eigene Konventionen dafür, wie ein Programm letztendlich ablauffähig
gemacht wird. Das bekannteste Beispiel dafür ist Turbo Pascal. Bei Turbo Pascal
kann ein Programm sofort ausgeführt werden, nachdem es übersetzt ist. Der Vorteil
21.2 Das Übersetzen von Programmen
249
davon ist offensichtlich, aber es gibt auch ernsthafte Nachteile. Solche Übersetzer
gehen ihren eigenen Weg und passen nicht so gut in die Welt von DOS wie kon­
ventionelle Übersetzer.
Im ersten Abschnitt dieses Kapitels haben wir den Unterschied zwischen der
Assemblersprache und allen höheren Programmiersprachen (Pascal, C, BASIC
etc.) erwähnt. Bei der Assemblersprache muß der Programmierer alle Maschinen­
anweisungen aufschreiben, die das fertige Programm ausführen wird. In einer
höheren Programmiersprache kann der Programmierer in größeren Schritten
arbeiten, wobei jeder in viele einzelne Maschinenanweisungen übersetzt wird. Die
Übersetzer für die Assemblersprache werden Assembler genannt und die Über­
setzer für höhere Programmiersprachen Compiler. Der Unterschied zwischen ihnen
kann entweder wichtig oder belanglos sein. Zunächst einmal tun beide das
gleiche: sie konvertieren ein Programm (den Quellcode) in Maschinenanweisun­
gen (den Objektcode), und dabei gibt es keinen Unterschied zwischen einem
Compiler und einem Assembler.
Andererseits hat ein Compiler die sehr anspruchsvolle Aufgabe, zu entscheiden,
welche Maschinenanweisungen verwendet werden sollen, und wie die Werkzeuge
und Betriebsmittel des Computers eingesetzt werden müssen (zum Beispiel wofür
die Register benützt werden). Im Gegensatz dazu übersetzt ein Assembler rein
mechanisch und völlig unkreativ die Programmiereranweisungen in die exakten
äquivalenten Maschinenanweisungen. Aus dieser Perspektive betrachtet ist ein
Compiler eine sehr komplexe Sache, und die Compiler können sich deshalb in
ihrer Qualität enorm unterscheiden (ein Compiler kann beispielsweise einen sehr
effizienten Code erzeugen, während andere einen schlechteren Code produzie­
ren). Derartige Unterschiede gibt es bei Assemblern nicht.
Wenn ein Programmierer mit einem Compiler oder Assembler arbeitet, wird der
Übersetzer mit dem Quellcode gefüttert, der Quellcode wird auf Fehler überprüft
und, falls er in funktionsfähiger Form vorliegt, ist das Ergebnis der maschinen­
sprachliche Objektcode. Objektcodedateien erkennt man an ihrer Dateiname­
Erweiterung OBJ. Der Objektcode wird schließlich im letzten Schritt in ein fertiges,
ausführbares Programm umgewandelt. Der Compiler oder Assembler meldet Feh­
ler im Programm (keine logischen Fehler - Bugs-, für die der Programmierer ver­
antwortlich ist, sondern syntaktische Fehler, wie falsch geschriebene Schlüssel­
wörter oder fehlende Interpunktion u. ä.).
Da ein Assemblerprogrammierer sehr eng mit einem Computer (d.h. mit seinen
Maschinenanweisungen) zusammenarbeiten muß, liefert ein Assembler dem Pro­
grammierer eine Menge technischer Informationen über die Ergebnisse einer
Assemblierung. Eine Vorstellung davon erhalten Sie aus Abbildung 21-4, die das
Assemblerlisting für das assemblersprachliche Programm von Abbildung 21-1 ent­
hält. Ein Assemblerlisting zeigt dem Programmierer unter anderem die exakten
Maschinenanweisungen, die hexadezimal dargestellt werden. Normalerweise lie­
fert ein Compiler dem Programmierer nicht annähernd soviele technische Informa­
tionen. Es ist sogar einer der Hauptgründe für die Verwendung höherer Program­
miersprachen, die Arbeit mit ungewohnten technischen Details zu vermeiden. Aber
250
21 Wie man Programme schreibt
falls ein Programmierer mehr über den Maschinencode wissen möchte, den ein
Compiler erzeugt, können die meisten Compiler ein assemblersprachliches Äqui­
valent zum erzeugten Objektcode ausdrucken. Anhand dieses Objektcodelistings
kann der Programmierer die Qualität des Codes beurteilen, den der Compiler
erzeugt, und es kann bei der Entscheidung behilflich sein, welche Art der Pro­
grammerstellung am effizientesten ist.
Beide, Compiler und Assembler, haben also die Aufgabe, die Anweisungen von
Programmierern so zu übersetzen, daß Computer sie ausführen können. Im letzten
Schritt muß schließlich ein Programm noch zu einer funktionsfähigen Einheit zu­
sammengebunden werden.
; FLUSHKEY - loescht den DOS-Tastaturpuffer
;
0000
DOS generic
PROG
PGROUP
GROUP PROG
PUBLIC
FLUSHKEY
SEGMENT BYTE PUBLIC 'PROG'
ASSUME
CS:PROG
PROC
NEAR
0000 B4 OB
MOV
AH,11
; prueft den
Tastaturstatus
0002 CD 21
INT
33
0004 OA eo
OR
AL,AL
; Funktionsaufruf
; wenn null
0006 74 06
JZ
RETURN
; dann zurueck ins
aufrufende
0008 B4 07
MOV
AH,7
OOOA CD 21
INT
33
; liest ein Byte
; Funktionsaufruf
OOOC EB F2
JMP
TEST
0000
FLUSHKEY
0000
TEST:
Programm
OOOE
RETURN:
RET
OOOE C3
OOOF
FLUSHKEY
ENDP
OOOF
PROG
ENDS
END
21.3 Wie man Programme zusammenfügt
251
Segments and Groups:
N a m e
PGROUP
•
PROG
•
•
•
•
•
•
Size
•
•
•
•
•
•
•
•
•
•
•
•
•
•
align
combine class
DOOF
BYTE
PUBLIC
Type
Value
Attr
GROUP
•
'PROG'
Symbols:
N a m e
FLUSHKEY
•
N PROC 0000
PROG
L NEAR OOOE
PROG
L NEAR 0000
PROG
Global Length
=DOOF
RETURN
•
TEST
•
•
Warning Severe
Errors
Errors
0
0
Abb. 21-4:
21.3
Ein Assemblerlisting
Wie
man
Programme zusammenfügt
Ein wichtiges Prinzip in der Programmierung ist das Teilen und zusammenfügen.
Jede Aufgabe wird übersichtlicher, wenn sie in verschiedene Teile aufgeteilt wird.
Bei der Programmentwicklung wird deshalb ein Programm in funktionelle, modu­
lare Teile zerlegt und später das ganze Programm aus seinen Einzelteilen zusam­
mengefügt. Die Mechanismen, wie Programme aus Teilen zusammengesetzt wer­
den können und wie diese Mechanismen funktionieren, sind das Thema dieses
Abschnitts.
Die modulare Programmierung basiert auf drei Elementen: den Unterprogrammen,
dem Linker und Programmbibliotheken.
Unterprogramme sind, wie wir wissen, relativ selbständige Programmteile. Sie füh­
ren einen bestimmten Teil der insgesamt zu erledigenden Arbeit aus. Einer der
Hauptgründe für die Erzeugung von Unterprogrammen ist, daß die Aufgabe der
Programmerstellung aufgeteilt und somit auch vereinfacht wird.
Wenn wir uns einmal entschlossen haben, ein Programm in logische Einheiten auf­
zuteilen und daraus separate Unterprogramme zu bilden, ist es naheliegend, diese
Unterprogramme völlig aus dem Hauptprogramm herauszulösen. Wir nehmen die
Unterprogramme aus einem Programm heraus und behandeln sie eigenständig,
was getrenntes Compilieren oder Assemblieren einschließt. Zu diesem Zweck wird
der Quellcode solcher Unterprogramme (den der Programmierer schreibt) in eige­
nen Plattendateien abgelegt und diese werden als separate Einheiten compiliert
(oder im Fall der Assemblersprache assembliert).
252
21 Wie man Programme schreibt
Daraus ergeben sich zwei wichtige Vorteile. Zum einen wird der Quellcode eines
Hauptprogramms kürzer und übersichtlicher. Zum anderen sind solche Unterpro­
gramme für andere Programme leicht verfügbar. Wenn wir unsere Unterpro­
gramme in ein Hauptprogramm integrieren, müßten wir bei der Erstellung eines
neuen Programmes, das bereits bestehende Unterprogramme verwenden könnte,
den Quellcode der Unterprogramme erst aus dem alten Hauptprogramm in das
neue Programm übertragen. Eigenständige (und separat compilierte) Unterpro­
gramme sind für jedes Programm direkt verfügbar, das wir erstellen. Wtr sparen
außerdem Zeit und vermeiden Schwierigkeiten, weil wir ein Unterprogramm nur
einmal compilieren müssen und nicht jedesmal wieder, wenn wir ein Programm
erstellen oder überarbeiten, in dem das Unterprogramm benützt wird.
Die getrennte Compilierung von Unterprogrammen erfordert jedoch eine Möglich­
keit, die verschiedenen Teile eines Programmes wieder zu einem Stück zusam­
menzufügen. Diesen Vorgang nennt man Binden, und er wird von einem Pro­
gramm ausgeführt, das LINK (deutsch: Binder) heißt und ein Teil von DOS ist. Ein
Programm, das ein Unterprogramm mit dem Namen X benötigt, enthält sozusagen
eine entsprechende Markierung X, und die Aufgabe des Linkers ist es, die beiden
zu einer Einheit zusammenzufügen. Sogar wenn in einem Programm keine Unter­
programmverbindungen hergestellt werden müssen, übersetzen Standard-DOS­
Compiler und -Assembler ihre Programme in das Objektcodeformat, einfach weil
es die Standardarbeitsweise ist.
Hier sollten wir anmerken, daß wir über den Standard von DOS bzgl. der Pro­
grammgenerierung sprechen, die von den meisten Programmiersprachenversio­
nen verwendet wird. Aber nicht jede Programmiersprache folgt dem DOS-Stan­
dard. Der beliebte Turbo Pascal Compiler geht zum Beispiel seinen eigenen Weg
und vermeidet die Verwendung von Objektcode und Linker. Statt dessen erzeugt
Turbo Pascal (und seine Verwandten) direkt ausführbare Programme, wobei Com­
pilierung und Binden in einem Schritt kombiniert werden. Das hat den Vorteil, daß
der Prozeß der Programmentwicklung vereinfacht und beschleunigt wird, aber es
nimmt auch viel von der Flexibilität, die durch separates Compilieren und Linken
entsteht.
Wenn wir im laufe unserer Praxis viele Unterprogramme erzeugen, können wir
leicht den Überblick über die vielen separaten Objektcodedateien verlieren. Es ist
nicht ungewöhnlich, wenn ein Programmierer Dutzende von Unterprogrammen
entwickelt, und bei einem großen Projekt oder bei einer Programmiersprache, die
mit eingebauten Unterprogrammen freizügig umgeht, kann die Anzahl leicht bis in
die Hunderte gehen. Meine Norton Utilities bestehen zum Beispiel aus etwa 175
Unterprogrammen und Programm-Moduln - das sind zu viele, um sie noch sinn­
voll zu verwalten.
Die Lösung dieses Problems sind die sogenannten Objektmodulbibliotheken. Eine
Objektbibliothek ist eine einzelne Plattendatei, die den Objektcode für eine belie­
bige Anzahl von Unterprogrammen enthalten kann. Nachdem ein Unterprogramm
geschrieben ist, compiliert (oder assembliert) der Programmierer das Unterpro-
21.3 Wie man Programme zusammenfügt
253
gramm in eine separate Objektcodedatei und benützt dann ein spezielles DOS­
Programm, LIB, das den Objektcode nimmt und ihn zusammen mit anderen Unter­
programmen in einer Bibliothek ablegt. Sie können Objektbibliotheken an ihrer
Dateiname-Erweiterung LIB erkennen.
Wir haben nun alle Einzelschritte gesehen, wie Programme generiert werden. An
einem kleinen Beispiel wollen wir noch einmal alle wichtigen Schritte des Vor­
gangs zeigen.
Wir beginnen mit dem assemblersprachlichen Unterprogramm, das wir am Anfang
dieses Kapitels vorstellten. Es heißt FLUSHKEY. Nachdem FLUSHKEY vom Pro­
grammierer geschrieben wurde, wird der Quellcode in einer Datei mit dem Namen
FLUSHKEY.ASM gespeichert. Jede Programmiersprache hat ihre eigene Standard­
Dateiname-Erweiterung für den Quellcode. Bei der Assemblersprache heißt sie
ASM. Um FLUSHKEY zu assemblieren, benützen wir das Assemblerprogramm mit
dem Namen MASM (eine Abkürzung für Macro-Assembler) mit folgendem Kom­
mando:
MASM FLUSHKEY
Dies liefert uns eine Objektdatei mit dem Namen FLUSHKEY.OBJ. Wir können nun
FLUSHKEY in unsere Objektbibliothek aufnehmen, die wir OURLIB nennen:
LIB OURLIB+FLUSHKEY
DEL FLUSHKEY.OBJ
Sie werden bemerken, daß die Befehlszeile für LIB ein Pluszeichen (+) enthält.
Damit teilen wir LIB mit, daß FLUSHKEY in die Bibliothek aufgenommen werden
soll. Es gibt noch andere Operationen, die LIB für uns ausführen kann. Weiter
sehen Sie, daß wir die Objektdatei gelöscht haben, nachdem FLUSHKEY in die
Bibliothek aufgenommen wurde, weil wir sie nicht mehr brauchen.
So arbeiten wir im allgemeinen mit Unterprogrammen. Der nächste Schritt zeigt,
wie wir ein Hauptprogramm compilieren und binden. Als Beispiel betrachten wir
ein Programm, das in der Programmiersprache C geschrieben wurde und NU
heißt. Die Quellcodedatei für dieses Programm wird NU.C genannt, wobei C die
Standard-Dateiname-Erweiterung für ein C-Programm ist. Bei unserem C-Compi­
ler gibt es zwei Schritte, die MC1 und MC2 heißen. Das NU-Programm würden wir
also folgendermaßen compilieren:
MC1 NU.C
MC2 NU
Nachdem diese beiden Compilerschritte beendet sind, haben wir eine Objektdatei
mit dem Namen NU.OBJ. Mit dem LINK-Programm binden wir sie zu einem ferti­
gen Programm. Unser Beispiel zeigt beide Arten, in denen der Linker die Teile fin­
den kann, die er zusammenbinden muß. Er kann, wie wir schon erwähnt haben,
eine Bibliothek benützen (in diesem Fall die Bibliothek OURLIB). Oder man kann
LINK die Namen der Objektdateien mitteilen, die es zusammenfügen muß (in die-
254
21 Wie man Programme schreibt
sem Fall sind es zwei: die NU.OBJ-Objektdatei und die Standardobjektdatei, die
für alle C-Programme benützt wird und C.OBJ heißt):
LINK C+NU,NU,,OURLIB
In diesem kurzen Überblick haben wir nicht alle Einzelheiten, aber doch die
wesentlichen Schritte gesehen, wie Programme generiert und zusammengebun­
den werden.
In Kapitel 22 stellen wir zuletzt noch einige Programme vor, mit denen wir unseren
Rechner und seine Komponenten untersuchen und verschiedene Experimente
anstellen können.
1.
In diesem Kapitel haben wir kurz die Funktionen des Programmes LIB erwähnt. Um eine
Bibliothek gut zu verwalten, muß LIB viele Funktionen haben. Welche sind das? Stellen Sie
eine Liste der Funktionen auf, über die LIB Ihrer Meinung nach verfügen muß.
2.
Stapelkommandodateien sind der Schlüssel zur Kombination von Programmschritten, z.B.
jener, die wir hier bei der Programmgenerierung erwähnt haben. Versuchen Sie, eine Sta­
peldatei für das Assemblieren eines Programmes zu schreiben, und nehmen Sie es in eine
Objektbibliothek auf. Schreiben Sie eine weitere Stapeldatei für das Compilieren und Linken
eines Programmes. Wenn Sie wissen, wie man Stapeldateilogik verwendet, lassen Sie Ihre
Stapeldateien alle Fehler verwalten, die auftreten könnten.
255
22
Erforschen und Experimentieren
An der Oberfläche des PC gibt es nicht viel zu entdecken. In diesem Kapitel wollen
wir jedoch zwei Tools vorstellen, mit denen wir in das Innere des PC eindringen und
sein Innenleben untersuchen können.
22.l
Warum wir erforschen und experimentieren
Es gibt viele gute Gründe, warum man wissen sollte, wie man unsere PCs erforscht
und mit ihnen experimentiert. Der beste Grund dafür ist, daß es keinen unmittelba­
ren, direkten Vorteil gibt. Solche Experimente erweitern und vertiefen aber unser
Wissen über die PC-Familie und machen aus uns routinierte PC-Benutzer, die den
gesamten Bereich der Leistungsfähigkeit des PC besser nutzen können und Pro­
bleme mit dem PC leichter lösen können.
Unter anderem können wir durch Experimentieren mit unserem PC feststellen, wie
die Daten auf unseren Platten organisiert sind. Das umfaßt sowohl die Struktur der
Platte selbst als auch die interne Struktur der Datendateien, mit denen unsere Pro­
gramme arbeiten. In ähnlicher Weise können wir eine Menge darüber entdecken,
wie unsere Programme arbeiten, wie sie ihre Daten, den Arbeitsspeicher und
andere Teile des Computers verwalten. In Programmen sind oft Geheimnisse ver­
steckt, besonders einige sehr interessante Meldungen, die wir damit ausfindig
machen können.
Experimentieren liefert auch ein paar direkte Vorteile. Wenn Platten oder die Daten
einer Datei beschädigt werden und ein Programm mit diesen Daten nicht mehr
arbeiten kann, können wir manchmal durch unsere Experimentiererfahrungen den
Schaden beheben, natürlich nicht immer.
Für das Experimentieren mit unserem PC oder für seine Erforschung gibt es viele
Tools, aber wir werden uns auf zwei konzentrieren, die am leichtesten verfügbar
sind und die ein großes Spektrum an Möglichkeiten liefern: das DEBUG-Pro­
gramm von DOS und das NU-Programm aus meinen Norton Utilities.
DEBUG ist leistungsfähiger und auch schwerer anwendbar, was sich oft gegensei­
tig bedingt. leistungsfähige Eigenschaften erfordern fast zwangsläufig komplexere
und schwerer anwendbare Befehle. Aber das ist nicht der einzige Grund, warum
DEBUG das anspruchsvollere Tool ist, und wir wollen das kurz erklären.
Jedes Programmtool - von 1-2-3 bis zu denen, die wir hier besprechen - ist für
einen bestimmten Zweck gedacht. DEBUG sollte den technischen Anforderungen
fortgeschrittener Programmierer dienen. Als Programm, das kostenlos mit DOS
mitgeliefert wird, kann DEBUG keine Luxus-Bedieneroberfläche haben, sondern
sollte nur ein gutes grundlegendes Tool für Programmierer sein. Die Befehlsstruk­
tur und Benutzeroberfläche von DEBUG ist deshalb ziemlich grobschlächtig, aber
sie erfüllt ihre Aufgaben.
256
22 Erforschen und Experimentieren
Mein NU-Programm ist dagegen einfacher, aber dafür auch weniger leistungsfä­
hig. NU wurde so gestaltet, daß es für (relativ) unerfahrene PC-Benutzer möglichst
leicht anwendbar ist. Die meisten Programmiertools wurden von Spitzenprogram­
mierern für andere Spitzenprogrammierer entwickelt, und die Bedürfnisse dieser
„hohen" Anwender werden auch befriedigt, aber die restlichen Anwender werden
vernachlässigt. Darum habe ich mich mit meinem NU-Programm auf Klarheit und
leichte Anwendung konzentriert.
22.2
Wie
man
mit DEBUG arbeitet
Wie im letzten Abschnitt schon erwähnt wurde, ist DEBUG ein technisch-orientier­
tes Tool, das für die Bedürfnisse von Programmierern und anderen Benutzern
geschaffen wurde, die problemlos mit dem Drumherum eines Mikroprozessors
arbeiten können. Wir müssen also gut mit hexadezimalen Zahlen und segmentier­
ten Adressen umgehen können. Bei DEBUG müssen wir unsere Befehle fast
immer in hex eingeben und wir müssen mit segmentierten Adressen hantieren (die
ebenfalls in hex angegeben sind). Falls Ihnen das zu kompliziert ist, sollten Sie die­
sen Abschnitt überspringen und gleich zum nächsten Abschnitt über das einfa­
chere Tool NU übergehen.
DEBUG ist viel leistungsfähiger, als wir hier erklären wollen. Einen Eindruck erhiel­
ten wir bereits beim Disassembler-Kommando U von DEBUG, mit dem man die
Hexadezimalform der absoluten Maschinenanweisungen in das verständlichere
assemblersprachliche Format decodieren kann. Diese Eigenschaft von DEBUG
sahen wir, als wir in Kapitel 6 die lnterrupttreiber betrachteten. Wir können aber
auch das Gegenteil erreichen (mit dem Assemblerkommando A, das als grober
Assembler fungiert und die assemblersprachlichen Anweisungen in Maschinen­
code umwandelt), und wir können ein Programm schrittweise ablaufen lassen und
dabei die Ergebnisse eines jeden Schritts beobachten. Solche Befehle sind
äußerst leistungsfähig, aber es sind zu viele und wir können sie hier nicht alle vor­
stellen.
Wir beschränken uns auf einige DEBUG-Befehle, mit denen wir den PC erforschen
können.
Das DEBUG-Programm arbeitet mit einer minimalen Benutzeroberfläche (und bie­
tet uns nur eine minimale Hilfe}, und wir müssen uns deshalb erst an den Umgang
mit ihm gewöhnen. Wenn wir das Programm mit dem einfachen Befehl DEBUG
starten, antwortet es mit der Ausgabe des Kommandoprompts, ähnlich dem Kom­
mandoprompt von DOS. Der Prompt von DEBUG besteht nur aus einem Binde­
strich:
Wenn wir den DEBUG-Kommandoprompt sehen, ist DEBUG für die Eingabe eines
Befehls bereit. Alle Befehle von DEBUG werden mit einem einzigen Buchstaben
abgekürzt. Der Befehl, mit dem wir DEBUG beenden und zu DOS zurückkehren,
heißt: Q (für Quit).
22.2 Wie man mit DEBUG arbeitet
257
Das Ausgabekommando D (für Display) ist eines der wichtigsten Kommandos, das
wir bei unseren Experimenten brauchen. D teilt DEBUG mit, daß es einen Teil des
Arbeitsspeicherinhalts anzeigen soll. DEBUG zeigt ihn in einer Form, die das hexa­
dezimale und das Zeichenformat kombiniert. Das folgende Beispiel demonstriert,
was der Befehl D uns zeigen könnte:
2868:0100
2868:0110
2868:0120
2868:0130
2868:0140
2868:0150
2868:0160
2868:0170
66 7F 06 06 OF 00 00 00-0A OE 00 00 7F 60 60 60
7E
7E
OC
3E
03
63
18
63
3F 03
00 00
00 00
03
63
18
63
03
18
18
63
63
18
63
06
18
18
3E
3E
18
3E
3C
00
30
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00-0A
00-0A
00-0A
00-0A
00-0A
00-0A
00-0A
OE
OE
OE
OE
OE
OE
OE
00
00
00
00
00
00
00
00
00
00
00
00
00
00
1C
7F
3E
3E
00
00
06
30
63
63
63
18
18
OC
60
03
63
63
18
18
18
f
1 1 1
60
c>
O''
c
06 - ccc>
63
>ccc
63 >ccc>
>ccc
>
00 ?
00
30 ....o..........o
• • • • • • • • • • • •
-
• •
• • • • • • • •
• • • • • • • •
• •
• • • • • • • • • • • •
• • • • • • •
• • •
• • • • • • • • • • •
Diese Ausgabeinformation hat drei Teile: links sind die Speicheradressen der
Daten, in der Mitte sind die Daten im hex Format und rechts sind die entsprechen­
den Zeichen. DEBUG gibt nur die normalen Textzeichen aus. Das hat Vor- und
Nachteile. Wir können nicht alle interessanten Zeichen sehen, die in unseren Daten
versteckt sind, aber es stellt sicher, daß wir die Daten auf einen Drucker kopieren
können, ohne zufällig einen Steuercode zu senden, der den Drucker stoppt. (Im
Gegensatz dazu zeigen die Datenausgaben des NU-Programms, das wir in
Abschnitt 22.3 behandeln werden, jedes Zeichen, aber wir können sie wahrschein­
lich nicht auf Drucker ausgeben.)
DEBUG zeigt alle Daten im Arbeitsspeicher, und das kann alles mögliche sein. Wie
wir in Kapitel 6 gesehen haben, stehen in den unteren Speicherbereichen zum
Beispiel die Interrupt-Vektoren oder in den oberen Speicherbereichen die ROM­
BIOS-Routinen. In der Mitte befindet sich der normale Programmdatenbereich.
Das ist der Bereich, in dem wir DEBUG Programme von Platte laden lassen oder
andere Plattendaten, damit wir sie untersuchen können.
Falls wir zum Beispiel mit DEBUG den Kommandointerpreter COMMAND.COM
von DOS untersuchen wollen, können wir DEBUG befehlen, COMMAND.COM in
den Speicher zu laden und dann den Anfang von COMMAND.COM anzuzeigen.
Das funktioniert etwa so:
DE8UG COMMAND.COM
-D
258
22 Erforschen und Experimentieren
Damit erhalten wir folgende Ausgabe (wir sind allerdings gleich auf einen Teil von
COMMAND.COM gesprungen, mif dem wir etwas anfangen können) :
V
D
2B82:118D
C4 D6 56 88 F2 C7 44 D1-DD DD SE CF DD DD DD DD
••
2B82:119D
DD DA DD DA 54 68 65 2D-49 42 4D 2D SD 65 72 73
••••
•••
•••A •••••
The IBM Pers
2B82:11AD
6F 6E 61 6C 2D 43 6F 6D-7D 75 74 65 72 2D 44 4F
onal Computer DO
2B82:11BD
53 DD DA 56 65 72 73 69-6F 6E 2D 33 2E 31 3D 2D
S
2B82:11CD
28 43 29 43 6F 7D 79 72�69 67 68 74 2D 49 6E 74
CC)Copyright Int
••
Version 3.1D
2B82:11DD
65 72 6E 61 74 69 6F 6E-61 6C 2D 42 75 73 69 6E
ernational Busin
2B82:11ED
65 73 73 2D 4D 61 63 68-69 6E 65 73 .2D 43 6F 72
ess Machines Cor
2B82:11FD
7D 2D 31 39 38 31 2C 2D-31 39 38 35 DD DA 2D 2D
p 1981, 1985
••
Das DEBUG-Kommando D zeigt uns 128 Bytes des aktuellen Arbeitsspeichers.
Wenn wir einen anderen Bereich sehen wollen, können wir dessen Adresse mitein­
geben, zum Beispiel so: D 1180 (mit diesem Kommando wurde der obige Teil von
COMMAND.COM ausgegeben) , oder so: D 0:0 (diesen Befehl müssen wir für die
Ausgabe des untersten Speicherbereichs verwenden) . Soll DEBUG mehr als 128
Byte auf einmal zeigen, müssen wir den Buchstaben L (für Länge) hinzufügen und
in hex angeben, wieviele Bytes angezeigt werden sollen. Zum Beispiel zeigt der
Befehl D F800:0 L 300 hex 300 (oder 768) Bytes und beginnt im ROM-BIOS­
Bereich des Speichers.
Allein mit diesem D-Kommando kann man schon einen großen Teil des Arbeits­
speichers und der Plattendaten erforschen, aber es gibt noch weitere DEBUG­
Befehle, mit denen wir noch mehr finden können.
Mit einem DEBUG-Befehl können wir nach bestimmten Meldungen bzw. Daten
suchen. Wenn wir den Text einer Meldung kennen und mit DEBUG danach suchen,
finden wir wahrscheinlich den Bereich, wo auch andere Meldungen gespeichert
sind, und aus diesen Meldungen können wir eine ganze Menge herauslesen.
Dazu dient das Suchkommando S. Wir geben das Suchkommando mit seinem
ersten Buchstaben S ein, gefolgt von der Speicheradresse und Länge, die wir
durchsuchen wollen. Wir können das Suchkriterium entweder in hex oder als Zei­
chenkette in Anführungszeichen eingeschlossen eingeben, zum Beispiel:
S FDDD:D L FFFF „179D"
Dieser Befehl wurde verwendet, als einer meiner Nachbarn seinen PC/AT einschal­
tete und die Fehlermeldung Nummer 1790 ausgegeben wurde, ohne daß ihre
Bedeutung ersichtlich war. Da die Meldung beim Einschalten des Geräts ausgege­
ben wurde, wußte ich, daß sie zu den Selbsttestroutinen beim Einschaltvorgang
(den sog. POST-Routinen) gehörte, die im ROM-BIOS gespeichert sind. Um zu
sehen, ob wir mehr über die Bedeutung dieser Meldung erfahren konnten, verwen­
dete ich DEBUG. Mit dem oben genannten Befehl stellte ich fest, wo die Meldung
lag, und durchsuchte deshalb den ganzen ROM-BIOS-Bereich nach dem Text
„1790" (von Adresse FOOO:O mit Länge hex F F F F, also die gesamten 64K des
ROM-BIOS-Bereichs) . DEBUG fand die Meldung und teilte folgende Adresse mit:
FDDD:E3DB
25 9
22.3 Wie man mit NU arbeitet
Mit dem Ausgabekommando D konnten wir uns dann die ganze Meldung ansehen
und auch die Informationen darum herum. Ich gab DEBUG eine Startadresse, die
etwas vor der Position von „1790" lag, damit wir mehr von den benachbarten Mel­
dungen sehen konnten. Nach der Eingabe des Befehls D FOOO:E390 zeigte
DEBUG folgendes:
FOOO:E390
72 OD OA 31 37 38 30 2D-44 69 73 68 20 30 20 46
r
FOOO:E3AO
61 69 6C 75 72 65 OD OA-31 37 38 31 2D 44 69 73
ailure
FOOO:E380
68 20 31 20 46 61 69 6C-75 72 65 OD OA 31 37 38
k 1 Failure
FOOO:E3CO
32 2D 44 69 73 68 20 43-6F 6E 74 72 6F 6C 6C 65
2-Disk Controlle
FOOO:E3DO
72 20 46 61 69 6C 75 72-65 OD OA 31 37 39 30 2D
r Failure
FOOO:E3EO
44 69 73 68 20 30 30 45-72 72 6F 72 OD OA 31 37
Disk 0 Error
FOOO:E3FO
39 31 2D 44 69 73 68 20-31 30 45 72 72 6F 72 OD
91-Disk 1 Error.
FOOO:E400
OA 32 01 04 00 00 80 00-00 00 00 00 00 31 01 11
.2
••
1780-Disk 0 F
••
1781-Dis
••
••
178
1790••
•••••••••••
17
1
••
Als mein Bekannter den gesamten Text dieser Meldungen sah, wußte er nun ge­
nauer, was in seinem Gerät schiefgelaufen war.
Das ist nur ein Beispiel dafür, wie uns DEBUG helfen kann und wie wir damit
unseren Computer untersuchen können.
Wenn Sie mehr mit DEBUG anstellen wollen, müssen Sie sich auf einige tech­
nische Details einlassen, aber DEBUG wird Ihre Bemühungen belohnen. In diesem
Rahmen wollen wir nun die wichtigsten DEBUG-Befehle auflisten. Wir haben
bereits die Befehle D-Display und S-Search gesehen. Daten ändern kann man mit
den Kommandos E-Enter und F-Fill und, wenn man Daten lesen und schreiben
will, die auf unseren Platten gespeichert sind, muß man die Kommandos L-Load
und W-Write kennen.
Im nächsten Abschnitt wollen wir uns jetzt mit einem anderen Tool befassen, das
zwar nicht so leistungsfähig, aber dafür umso benutzerfreundlicher ist.
22.3
Wie man mit NU arbeitet
Mit NU können wir, wie mit DEBUG, eine Menge über die Plattendaten unseres PC
erfahren. NU beschränkt sich bei seiner Arbeit ausschließlich auf Platten. Man
kann damit also nicht den Arbeitsspeicher des PC untersuchen, und es gibt auch
keine Disassembler- und Assemblerkommandos wie bei DEBUG. Aber für Platten
gibt es wahrscheinlich nichts Besseres als NU.
\
Mit NU arbeitet man ganz einfach über seine Menüs, aus denen man mit Hilfe von
Funktions- oder Zifferntasten die gewünschte Option auswählt. Mit der Esc-Taste
springt man zum jeweils vorhergehenden Menü zurück. Innerhalb einer Bild­
schirmausgabe kann man sich mit den üblichen Cursorpfeiltasten bewegen.
Obwohl NU, wie die meisten Programme, viele Eigenschaften hat, ist der für uns in­
teressanteste Teil in seinem Menü 2 zu finden. Wir beginnen mit einem Blick auf
die Menüauswahl 2.2, die technische Information über eine Platte ausgibt. In Abbil­
dung 22-1 sehen Sie ein Beispiel dafür.
22
260
Erforschen und Experimentieren
Menu 2.2
Display Disk Technical Information
Drive C:
Basic storage capacity:
20 million characters (megabytes)
17% of disk space is free
Logical dimensions:
Seetors are made up of 512 bytes
Tracks are made up of 17 sectors per disk side
There are 4 disk sides
The disk space is made up of 614 cylinders
Space for files is allocated in clusters of 4 sectors
There are 10,405 clusters
Each cluster is 2,048 bytes
The disk's root directory can hold 512 files
Press any key to continue •
Currently selected:
No file or disk sector selected
Drive C:
22-1:
Abb.
• •
Directory:
PROGRAMS
Beispiel einer technischen Information über eine Platte
Menu 2.3
Map of Space Usage for the Entire Disk
17% of disk space is free
Proportional Map of Disk Space
•
••••••••••••••••••••••••••••••••••••••••••••••••••
B
represents
••••••••••••••••••••••••••••••••••••••••••••••••••
represents
space
in use
Hi !
•••••• •••••••••••
•••••••••••••••••••••••••••••••
••••••••••••••••••••••••••••••••••••••••••••••••••
B
HHHH
••••••••••••••••••••
••••••••••••
BB
••••
•••••••••••••••
B B
•
•••••••••••
··················••
B•••••••
•...........................•.....................
.•...................••.......•.....•.............
Press any key to continue •
Currently selected:
Drive C:
Abb.
22-1:
• •
No file or disk sector selected
Directory: PROGRAHS
Beispiel für die Abbildung eines Plattenspeicherbereichs
bad
sectors
22.3 Wie man mit NU arbeitet
261
Menu 2.4
Display Information about a File
Name: IBHBIO.COM
Attributes: Read-Only Hidden System
Date and time: Thursday, March 7, 1985, 1:43 pm
Starting cluster number: 2 (sector numbe� 115)
Size: 9,564 bytes, occupying 5 clusters
in 1 area of the disk
Each position represents l/500th of the total disk space
Press any key to continue
Abb. 22-3:
•
•
•
Beispiel für eine einzelne Dateiabbildung
Was wir in Menü 2.2 sehen, ist eine Zusammenfassung aller Grundinformationen
über eine Platte. Dazu gehört die gesamte Speichergröße und der noch verfügbare
Speicherplatz und die logischen Dimensionen der Platte, die wir in Kapitel 8 ken­
nengelernt haben: die Sektorgröße, die Anzahl der Sektoren pro Spur usw. Menü
2.2 zeigt auch die wichtigsten DOS-spezifischen Informationen, zum Beispiel, wie
groß die DOS-Cluster sind (wichtig für die Effizienz der Plattennutzung) und ande­
res, zum Beispiel, wieviele Dateieinträge das Hauptinhaltsverzeichnis der Platte
aufnehmen kann. Mit Menü 2.2 können wir also feststellen, wie eine Platte struktu­
riert ist.
Noch viel interessanter als die technischen Platteninformationen ist die Abbildung
des Plattenbereichs mit der Menüoption 2.3. In Abbildung 22.2 sehen Sie ein Bei­
spiel dafür.
Die Abbildung des Plattenbereichs zeigt uns bildlich, wie der gesamte Speicher­
bereich auf der Platte verwendet wird. Jede Position in der Abbildung repräsentiert
einen kleinen Teil des gesamten Speicherbereichs. (Bei Disketten oder Platten, auf
denen weniger als 500 Cluster sind, wird jedes Cluster einzeln exakt in der Abbil­
dung dargestellt. Wenn es mehr als 500 Cluster sind, repräsentieren die Positionen
in der Abbildung nur näherungsweise Teile des Speicherbereichs.) Die schraffier­
ten Teile der Abbildung zeigen den unbenützten freien Platz auf der Platte, während
die kleinen Quadrate den belegten Platz kennzeichnen. Falls die Platte „fehler­
hafte" Bereiche hat, werden sie ebenfalls ausgegeben, wie Sie in Abbildung 22-2
sehen.
262
22 Erforschen und Experimentieren
Die Abbildung zeigt den Zustand der ganzen Platte, aber wir können auch eine
ähnliche Abbildung erhalten, die die relative Position einer einzelnen Datei auf der
Platte anzeigt (oder eines Unterinhaltsverzeichnisses, das wie eine Datei gespei­
chert wird). Damit erfahren wir, wo eine Datei liegt (interessant, aber eigentlich
nutzlos) und ob sie zusammenhängend gespeichert oder über die Platte verstreut
ist, oder wir können uns einfach einen schnellen Eindruck von der Größe einer
Datei verschaffen. Sie finden eine solche einzelne Dateidarstellung in Abbildung
22-3.
Die Platteninformationen, die mit der Menüoption 2.4 gezeigt werden, sind mehr
als nur eine Abbildung von der Lage einer Datei, wie Sie in Abbildung 22-3 sehen
können. Sie listet auch die gesamte Information auf, die aus dem Inhaltsverzeich­
niseintrag für eine Datei verfügbar ist. Dazu gehören Dateiname, Größe, Datum und
Zeitstempel, aber auch ein paar Informationen, an die man sonst nicht heran­
kommt, zum Beispiel die IDs des Sektors und des Clusters, wo der Anfang der
Datei gespeichert ist.
Falls wir uns den Inhalt einer Datei ansehen wollen, oder Sektordaten (egal, ob sie
mit einer Datei verbunden sind oder nicht), zeigt NU das mit der Menüoption 2.5. In
Abbildung 22-4 sehen Sie ein Beispiel dafür.
TREED.COM sectors 27,559-27,562
Cursor at offset O, hex 0
E9B7020D OA444F53 20547265 65204469 73706C61 790DOA28 i7
•
•
•
00S Tree Display
•
•
(
63292043 6F707972 69676874 20496E74 65726E61 74696F6E c) Copyright Internation
616C2042 7573696E 65737320 4D616368 696E6573 20436F72 al Business Machines Cor
706F7261 74696F6E 20313938 340DOA62 7920526F 62657274 poration 1984
by Robert
•
20412E20 466C6176 696E2020 20524942 4FODOA1A 00770000
A. Flavin
•
RIBO
w..
•
.
•
.
00000000 00000000 00000000 00000000 00000000 00000000
•
•
•
•
.
.
•
•
•
.
•
•
.
•
•
.
.
•
•
.
.
.
•
•
00000000 00000000 00000000 00000000 00000000 00000000
•
•
•
•
•
.
.
.
•
.
•
•
•
.
•
•
.
.
.
•
•
.
•
.
00000000 00000000 00000000 00000000 00000000 00000000
.
•
•
•
.
•
•
•
.
.
•
•
•
.
•
•
.
•
•
•
•
•
•
•
00000000 00000000 00000000 00000000 00000000 00000000
.
•
•
•
•
.
.
•
•
•
•
•
•
.
.
.
.
.
•
.
•
•
•
•
00000000 00000000 00000000 00000000 00000000 00000000
.
•
•
•
•
•
.
•
•
•
.
•
•
.
.
•
•
•
•
•
•
.
•
.
00000000 00000000 00000000 00000000 00000000 00000000
•
•
•
•
•
•
.
•
•
•
•
•
•
•
.
•
•
.
•
•
.
•
•
•
•
•
•
•
•
•
.
.
.
.
•
.
•
•
.
•
.
.
.
•
•
•
•
•
•
•
.
•
•
•
•
•
.
•
•
.
.
•
.
•
•
.
•
•
.
•
.
.
00000000 00000000 00000000 00000000 00000000 00000000
.
•
•
.
•
•
•
•
.
.
•
•
.
.
•
.
•
•
•
•
.
•
•
•
00000000 00000000 00000000 00000000 00000000 00000000
•
•
•
•
.
•
•
•
•
.
•
•
.
•
•
•
•
•
.
•
.
•
•
•
00000000 00000000 00000000 00000000 00000000 00000049
•
•
•
•
•
•
•
•
•
.
•
•
.
•
•
.
•
•
•
•
•
.
•
!
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
6620796F 75207765 72652073 7570706F 73656420 746F2068 f you were supposed to h
61766520 65787465 6E74696F 6E73206F 6E206469 72656374 ave extentions on direct
6F727920 6E616D65 732C2074 68657265 20776F75 6C640DOA ory names, there would
•
•
68617665 20626565 6E206578 616D706C 6573206F 66206974 have been examples of it
20696E20 74686520 444F5320 6D616E75 616C210D OA245452
in the DOS manuall
Press Enter for help
EED -- D
45454420 2D2D2044
Abb. 22-4:
Beispiel für eine Datenanzeige in hex
•
•
$TR
22.3 Wie man mit NU arbeitet
263
NU kann unsere Plattendaten auf drei Arten organisiert ausgeben. Abbildung 22-4
zeigt sie in einer Kombination von hex und Zeichendaten, ähnlich wie DEBUG
Daten ausgibt. Wie Sie in Abbildung 22-4 sehen können, werden die gleichen
Daten zweimal gezeigt: im hex Format auf der linken Seite und im Zeichenformat
auf der rechten Seite. Damit können wir Daten in ihrer absoluten Form (hex) unter­
suchen und Textmeldungen leicht entdecken, die in den Daten versteckt sein
könnten.
Das Beispiel, das ich für Abbildung 22-4 ausgewählt habe, verwende ich beson­
ders gern, weil es uns zwei der interessantesten Gründe für das Untersuchen von
Dateien zeigt. Diese Daten, die aus einem IBM-Dienstprogramm mit dem Namen
DOS Tree Display stammen, verraten, daß es ein IBM-Programm ist, und zeigen
sogar den Namen des Autors: Robert A. Flavin. Diese Informationen würden wir
sonst nie erfahren.
In unserem Beispiel können wir am Ende von Abbildung 22-4 eine (falsch
geschriebene) Meldung von Bob Flavin entdecken, worin er sich über die Verwen­
dung von Dateiname-Erweiterungen in Inhaltsverzeichnisnamen beschwert.
Mit NU können Sie unter anderem die Plattendaten, wie sie in Abbildung 22-4
angezeigt sind, direkt ändern, indem Sie sie einfach überschreiben - eine sehr
bequeme Art, Daten zu ändern. Wir müssen lediglich den Cursor zu dem Teil
bewegen, den wir ändern wollen (entweder auf der hex oder auf der Zeichenseite
des Bildschirms), und unsere Änderungen eintippen. Damit sind NU und andere
ähnlich arbeitende Programme in diesem Punkt viel bequemer als DEBUG.
Die zweite Art, Daten auszugeben, ist das reine Textdateiformat. Es zeigt die Daten
in Zeilen unterteilt, wie in Textdateien. Damit kann man Textdaten besser lesen. Das
dritte Format in Abbildung 22-5. interpretiert die Daten als Inhaltsverzeichnisein­
träge. Damit können wir die Information in einem untergeordneten Inhaltsverzeich­
nis leicht decodieren.
Mit den Eigenschaften von NU, durch die wir Daten ausgeben und ändern können,
können wir in jeden Teil unserer DOS-Platten vordringen und mit den Daten experi­
mentieren oder diese ändern. Wir können damit auch schadhafte Daten reparieren,
und dafür wollen wir zuletzt noch ein Beispiel nennen.
Zwei DOS-Programme, BACKUP und RESTORE, werden dazu verwendet, um Fest­
plattendaten auf Disketten zu sichern. In einer früheren DOS-Version arbeitete das
BACKUP-Programm manchmal unkorrekt, d.h. es schrieb hex 0 anstelle eines Teils
des Dateinamens. Dieser winzige Fehler machte es unmöglich, die Daten umzu­
speichern, die auf Diskette kopiert worden sind - eine Katastrophe! Als mir das
passierte, war ich glücklicherweise in der Lage, mit NU die fehlerhafte Diskette zu
untersuchen und herumzuforschen, bis ich entdeckte, wo das Problem lag.
Danach mußte ich nur noch die fehlerhafte hex 0 durch ein passendes Zeichen für
den Dateinamen ersetzen. Diese Reparatur war einfach und wäre ohne ein Tool wie
NU unmöglich gewesen. In diesem Fall rettete NU die Daten einer ganzen Fest­
platte! Dies ist ein deutliches Beispiel dafür, warum es sehr wertvoll sein kann, ein
solches Tool an der Hand zu haben und zu wissen, wie man damit umgeht.
264
22 Erforschen und Experimentieren
Seetor 84 in root directory shown in directory format
Filename Ext
Size
Time
Date
Cluster Attributes
==-==
·-
PC-TALK
Sun Jul
PNCI
Sun Jul
PROGRAMS
Sun Jul
SYMPHONY
Sun Jul
TAPE
Sun Jul
640
1
2
4,480
ADDRESS
EMPTY
ENDPAGE
INFO
Sat Jan
Mon May
Fri Jun
Sun Jul
MOUSE
FWSPOOL
Tue Feb
005
APPOINT
APP
NORTON
BAK
NORTON
PRO
73,779
651
384
384
Fri Jun
Tue Jun
Mon Jul
Mon Jul
SOCHA
Mon Jul
WORK
Tue Jul
-
7
7
7
7
7
26
8
13
21
7
21
4
8
8
8
9
85
85
85
85
85
85
83
85
85
85
85
85
85
85
85
85
12:02
12:02
12:02
12:06
12:06
10:55
10:26
10:39
1:07
9:12
4:52
4:09
9:32
9:34
4:29
6:58
pm
pm
pm
pm
pm
am
am
pm
pm
pm
pm
pm
am
am
pm
pm
5,136
5,282
5,714
7,798
8,500
33
34
35
36
8,618
40
77
22
24
23
25
Directory
Directory
Directory
Directory
Directory
Directory
Directory
Directory
==-==
Press Enter for help
Abb. 22-5:
Datenanzeige im Inhaltsverzeichnisformat
1.
Untersuchen Sie mit DEBUG das ROM ihres Computers, um den Copyright-Eintrag im
ROM-BIOS zu finden. Geben Sie DEBUG den Befehl D F800:0 und fahren Sie mit dem
Kommando D fort, bis Sie gefunden haben, was Sie suchen. Wenn Sie den Eintrag beim
Start ab F800:0 nicht finden, versuchen Sie es noch einmal mit FOOO:O.
2.
Wenn Sie das NU-Programm besitzen, sehen Sie sich damit die Dimensionen aller Ihrer
Plattentypen an. Was sagen Ihnen die Abbildungen?
3.
Machen Sie mit NU eine Kopie von einer Ihrer Disketten und experimentieren Sie damit,
indem Sie Änderungen vornehmen. Finden Sie das Hauptinhaltsverzeichnis der Diskette
und ändern Sie einen der Dateinamen, indem Sie den Namen einfach übertippen. Prüfen
Sie nach, ob der Name richtig geändert wurde.
4.
Lassen Sie mit NU die gleichen Daten im Inhaltsverzeichnis-und im Hex-Format ausgeben
und verwenden Sie dafür einen Teil Ihres Platteninhaltsverzeichnisses. Versuchen Sie her­
auszufinden, wo die einzelnen Teile des Inhaltsverzeichnisses (Name, Erweiterung, Datum,
Größe) im Hex-Teil aufgezeichnet sind. Ändern Sie die Hex-Daten und prüfen Sie im Inhalts­
verzeichnis-Format, was nun anders ist.
265
AnhangA
Programm-Listings
LABYRINT -
Ein Labyrinth vom Anfang zum Ende (Einleitung)
1000 'Labyrinth-Programm, Copyright 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
1020 GOSUB 2000 'Programmlauf vorbereiten
1030 WHILE NOCH.NICHT.BEENDET
1040
GOSUB 3000 'Ton ausgeben
1050
GOSUB 4000 'Abstand waehlen
1060
GOSUB 5000 'bewegen
1070
GOSUB 6000 'auf Ende abpruefen
1080
GOSUB 7000 'Richtung waehlen
1090 WEND
1100 GOSUB 8000 'erfolgreiche Durchfuehrung melden und Programm beenden
2000
1
2010 'Unterprogramm bereitet Programmlauf vor
2020
1
2030 DEFINT A-Z
2040 KEY OFF : SCREEN 0 : WIDTH 80 : CLS
2050 RANDOMIZE TIMER
2060 NOCH.NICHT.BEENDET= 1
2070 BOX.IM.VORDERGRUND = 0 : BOX.IM.HINTERGRUND = 7
2080 AKTUELLE.ZEILE= 1 : AKTUELLE.SPALTE= 1
2090 MELDUNG$= " Beginn " : GOSUB 2500
2100 AKTUELLE.ZEILE= 22 : AKTUELLE.SPALTE= 68
2110 MELDUNG$ = " Ende!
" : GOSUB 2500
2120 AKTUELLE.ZEILE= 2 : AKTUELLE.SPALTE= 10 : RICHTUNG= 1
2130 TONLAENGE= 100 : PLAY "MB " : TONABBRUCH= 1
2140 TONBASIS= 50
2150 LOCATE 2,9,0 : PRINT CHRSC204);
2160 COLOR 7,0 : POSITIONSZEICHEN = 205
2170 RETURN
2500
1
2510 'Unterprogramm zeichnet eine Box fuer Meldungen
2520
1
2530 COLOR BOX.IM.VORDERGRUND,BOX.IM.HINTERGRUND
2540 LOCATE AKTUELLE.ZEILE, AKTUELLE.SPALTE
2550 PRINT CHRSC201);STRINGSCLENCMELDUNG$) ,205);CHRSC187);
2560 LOCATE AKTUELLE.ZEILE
+
1 , AKTUELLE.SPALTE
2570 PRINT CHRSC186);MELDUNGS;
2580 LOCATE AKTUELLE.ZEILE
+
CHRSC186);
2 , AKTUELLE.SPALTE
2590 PRINT CHRSC200);STRINGSCLENCMELDUNG$) ,205) ;CHRSC188);
2600 RETURN
2610 AUTO 3000,10
266
3000
Anhang A
1
3010 'Unterprogramm um Toene auszugeben
3020
1
3030 IF TONABBRUCH THEN SOUND 100,0 'abbrechen des vorhergehenden Tons
3040 SOUND TONBASIS+750*RND, TONLAENGE 'irgendein zufaelliger Ton
3050 RETURN
4000
1
4010 'Unterprogramm um den Abstand zu waehlen
4020
1
4030 IF RICHTUNG = 1 THEN GRENZE = 78 - AKTUELLE.SPALTE
4040 IF RICHTUNG = 2 THEN GRENZE = AKTUELLE.SPALTE - 2
4050 IF RICHTUNG = 3 THEN GRENZE = AKTUELLE.ZEILE - 2
4060 IF RICHTUNG = 4 THEN GRENZE = 23 - AKTUELLE.ZEILE
4070 IF GRENZE < 1 THEN GRENZE = 1
4080 ABSTAND = INT CRND * (GRENZE + 1) )
4090 RETURN
5000
1
5010 'Unterprogramm um das Positionszeichen zu bewegen
5020
1
5030 FOR I = 1 TO ABSTAND
5040
LOCATE AKTUELLE.ZEILE,AKTUELLE.SPALTE
5050
PRINT CHRSCPOSITIONSZEICHEN)
5060
GOSUB 5500
5070 NEXT
5080 RETURN
5500
1
5510 'Unterprogramm um Positionszeichen zur naechsten Position zu bewegen
5520
1
5530 IF RICHTUNG = 1 THEN AKTUELLE.SPALTE = AKTUELLE.SPALTE + 1
5540 IF RICHTUNG = 2 THEN AKTUELLE.SPALTE = AKTUELLE.SPALTE - 1
5550 IF RICHTUNG = 3 THEN AKTUELLE.ZEILE = AKTUELLE.ZEILE - 1
5560 IF RICHTUNG = 4 THEN AKTUELLE.ZEILE = AKTUELLE.ZEILE + 1
5570 LOCATE AKTUELLE.ZEILE,AKTUELLE.SPALTE
5580 RETURN
6000
1
6010 'Unterprogramm um auf Ende abzupruefen
6020
1
6030 IF AKTUELLE.ZEILE < 22 THEN RETURN
6040 IF AKTUELLE.SPALTE < 68 THEN RETURN
6050 NOCH.NICHT.BEENDET = 0
6060 RETURN
7000
1
7010 'Unterprogramm um die Richtung zu waehlen und um Ecken zu gehen
7020
1
7030 WENDUNG.NACH.RECHTS = INT CRND
*
2)
7040 WENDUNG.NACH.RECHTS = 1 - WENDUNG.NACH.RECHTS
7050 IF RICHTUNG=1 THEN NEUE.RICHTUNG=3+WENDUNG.NACH.RECHTS
7060 IF RICHTUNG=2 THEN NEUE.RICHTUNG=4-WENDUNG.NACH.RECHTS
7070 IF RICHTUNG=3 THEN NEUE.RICHTUNG=2-WENDUNG.NACH.RECHTS
7080 IF RICHTUNG=4 THEN NEUE.RICHTUNG=1+WENDUNG.NACH.RECHTS
7090 IF NEUE.RICHTUNG=1 AND AKTUELLE.SPALTE>75 THEN GOTO 7040
7100 IF NEUE.RICHTUNG=2 AND AKTUELLE.SPALTE< 5 THEN GOTO 7040
7110 IF NEUE.RICHTUNG=3 AND AKTUELLE.ZEILE < 5 THEN GOTO 7040
Programm-Listings
267
7120 IF NEUE.RICHTUNG=4 AND AKTUELLE.ZEILE >20 THEN GOTO 7040
7130 IF RICHTUNG=1 AND WENDUNG.NACH.RECHTS=O THEN POSITIONSWECHSEL = 188
7140 IF RICHTUNG=1 AND WENDUNG.NACH.RECHTS=1 THEN POSITIONSWECHSEL = 187
7150 IF RICHTUNG=2 AND WENDUNG.NACH.RECHTS=O THEN POSITIONSWECHSEL = 201
7160 IF RICHTUNG=2 AND WENDUNG.NACH.RECHTS=1 THEN POSITIONSWECHSEL = 200
7170 IF RICHTUNG=3 AND WENDUNG.NACH.RECHTS=O THEN POSITIONSWECHSEL = 187
7180 IF RICHTUNG=3 AND WENDUNG.NACH.RECHTS=1 THEN POSITIONSWECHSEL = 201
7190 IF RICHTUNG=4 AND WENDUNG.NACH.RECHTS=O THEN POSITIONSWECHSEL = 200
7200 IF RICHTUNG=4 AND WENDUNG.NACH.RECHTS=1 THEN POSITIONSWECHSEL = 188
7210 PRINT CHRSCPOSITIONSWECHSEL)
7220 RICHTUNG = NEUE.RICHTUNG
7230 IF RICHTUNG < 3 THEN POSITIONSZEICHEN = 205
7240 IF RICHTUNG > 2 THEN POSITIONSZEICHEN = 186
7250 GOSUB 5500
7260 RETURN
8000
1
8010 ' erfolgreiche Durchfuehrung melden und Programm beenden
8020
1
8030 SOUND 100,0
8040 AKTUELLE.ZEILE = 22 : AKTUELLE.SPALTE = 66
8050 MELDUNG$ = " Beendet! "
8060 TONLAENGE = 2 : PLAY "MF"
8070 TONBASIS = 1000 : TONABBRUCH = 0
8080 FOR I = 1 TO 10
8090
BOX.IM.VORDERGRUND = 7 : BOX.IM.HINTERGRUND = 0
8100
GOSUB 2500
8110
GOSUB 3000
8120
BOX.IM.VORDERGRUND = 0
8130
GOSUB 2500
8140
GOSUB 3000
BOX.IM.HINTERGRUND = 7
8150 NEXT
8160 BOX.IM.VORDERGRUND = 28 : BOX.IM.HINTERGRUND = 15
8170 GOSUB 2500
8180 LOCATE 12,25 : COLOR 7,0 : SOUND 100,0
8190 PRINT "Druecke eine Taste um zu DOS zurueckzukehren
• • •
";
8200 WHILE INKEYS = "" : WEND
8210 SYSTEM
HEXTABLE
-
generiert Hex-Arithmetik-'Tu.bellen (Kapitel 3)
1000 ' Hexadezimale Rechentabellen, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
1020 FOR TYP = 1 TO 2
1030
GOSUB 2000 ' Ueberschrift
1040
FOR I = 0 TO 15
1050
1060
1070
FOR J = 0 TO 15
GOSUB 3000 ' Wert anzeigen
NEXT J
1080
NEXT I
1090
GOSUB 4000 ' Pause
268
Anhang A
1100 NEXT TYP
1110 SYSTEM
2000
1
2010 ' Ueberschriften
2020
1
2030 KEY OFF
: SCREEN 0: WIDTH 80 : CLS
2040 LOCATE 3,20 : COLOR 1+8
2050 PRINT "Hex ";
2060 IF TYP= 1 THEN PRINT "Additions";
2070 IF TYP= 2 THEN PRINT "Multiplikations";
2080 PRINT "-Tabelle";
2090 COLOR 7+8
2100 LOCATE 5,20
2110 FOR I= 0 TO 15
2120
PRINT HEX$(!);
II
";
2130 NEXT I
2140 FOR I= 0 TO 15
2150
LOCATE 7+!,16
2160
PRINT HEX$(!);
2170 NEXT I
2180 COLOR 7
2190 RETURN
3000 '
3010 'Wert anzeigen
3020
1
3030 IF TYP = 1 THEN X= I + J
3040 IF TYP= 2 THEN X= I * J
3050 AUSGABE$= HEX$
(X)
3060 ZEILE= I + 7
3070 SPALTE= J * 3 + 18 + (3-LENCAUSGABE$))
3080 LOCATE ZEILE,SPALTE
3090 PRINT AUSGABE$;
3100 RETURN
4000
1
4020
'
4030 LOCATE 25,20 : COLOR 1
4040 PRINT "Fuer Fortsetzung beliebige Taste druecken
4050 COLOR 7
4060 WHILE INKEYS=
"" : WEND
4070 RETURN
ALL-CHAR - Zeigt alle PC-Zeichen (Kapitel 4)
1000 ' Alle Zeichen ausgeben, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
1020 GOSUB 2000 ' Programm vorbereiten
1030 FOR ZEICHEN.WERT= 0 TO 255
1040
GOSUB 3000 ' das Zeichen ausgeben
1050 NEXT ZEICHEN.WERT
1060 GOSUB 4000
'Ende vorbereiten
"·
,
Programm-Listings
2000
1
2010 ' Unterprogramm fuer Programmvorbereitung
2020
1
2030 DEFINT A-Z
2040 KEY OFF
: SCREEN 0: WIDTH 80 : CLS
2050 LOCATE 3,25 : COLOR 1
2060 PRINT "Der vollstaendige Zeichensatz des PC";
2070 BILDSCHIRM.OFFSET
2080 DEF SEG
0
=
&H40 : BILDSCHIRM.ART
=
2090 IF BILDSCHIRM.ART
=
PEEK C&H49)
7 THEN BILDSCHIRM.OFFSET
=
2100 IF BILDSCHIRM.ART < 4 THEN BILDSCHIRM.OFFST
&HBOOO
=
=
&HB800
2110 IF BILDSCHIRM.OFFSET <> 0 THEN RETURN
2120 LOCATE 12,25
2130 PRINT "Fehler: Unbekannter Bildschirm! "
2140 GOSUB 4000
3000
1
3010 ' Unterprogramm fuer die Ausgabe aller Zeichen
3020
1
3030 ZEILE
ZEICHEN.WERT MOD 16
=
+
5
3040 SPALTE = CINTCZEICHEN.WERT / 16))
3050 BILDSCHIRM.POSITION = ZEILE * 160
3060 DEF SEG
*
+
3 + 16
SPALTE
*
2
BILDSCHIRM.OFFSET
=
3070 POKE BILDSCHIRM.POSITION, ZEICHEN.WERT
3080 RETURN
4000
1
4010 ' Fertig bearbeiten
4020
1
4030 LOCATE 24,24 : COLOR 1
4040 PRINT "Druecke eine Taste um zu DOS zurueckzukehren • • • ":
4050 WHILE INKEYS
=
"" : WEND
4060 SYSTEM
REF-CHAR
-
Zeichen mit Referenz-Nummern (Kapitel 4)
1000 ' Zeichen und ihr Referenz-Code, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
' Programm vorbereiten
1020 GOSUB 2000
1030 FOR ZEICHEN.WERT
1040
=
0 TO 255
GOSUB 3000 ' Zeichen ausgeben
1090 NEXT ZEICHEN.WERT
1100 SYSTEM
2000
1
2010 ' Unterprogramm fuer Programmvorbereitung
2020
1
2030 DEFINT A-Z
2040 KEY OFF
: SCREEN 0: WIDTH 80
2050 BILDSCHIRM.OFFSET
2060 DEF SEG
=
=
0
&H40 : BILDSCHIRM
2070 IF BILDSCHIRM
=
PEEK C&H49)
7 THEN BILDSCHIRM.OFFSET
=
&HBOOO
2080 IF BILDSCHIRM < 4 THEN BILDSCHIRM.OFFSET
=
&HB800
=
269
270
Anhang A
2090 IF BILDSCHIRM.OFFSET <> 0 THEN RETURN
2100 LOCATE 12,25
2110 PRINT "Fehler: unbekannter Bildschirm! "
2120 GOSUB 4000 : SYSTEM
3000
1
3010
3020
' Unterprogramm fuer Ausgabe aller Zeichen
1
3030 IF ZEICHEN.WERT MOD 128 > 0 THEN GOTO 3080
3040 COLOR 7 : CLS : COLOR 1
3050 LOCATE 3,25 : PRINT "Referenz-Code-Satz ";
3060 IF ZEICHEN.WERT= 0 THEN.PRINT "erste"; ELSE PRINT "zweite";
3070 PRINT " Haelfte";
3080 COLOR 7
3090 ENTSPRECHENDES.ZEICHEN= ZEICHEN.WERT MOD 128
3100 ZEILE = ENTSPRECHENDES.ZEICHEN MOD 16
3110 SPALTE =CINTCENTSPRECHENDES.ZEICHEN
3120 BILDSCHIRM.POSITION= ZEILE
*
I
16))
160 + SPALTE
*
*
10
2 +814
3130 DEF SEG= BILDSCHIRM.OFFSET
3140 POKE BILDSCHIRM.POSITION, ZEICHEN.WERT
3150 LOCATE ZEILE+6,SPALTE+1
3160 PRINT USING "###";ZEICHEN.WERT;
3170 PRINT " ";
3180 IF ZEICHEN.WERT < 16 THEN PRINT "0";
3190 PRINT HEXSCZEICHEN.WERT);
3200 IF ZEICHEN.WERT MOD 128= 127 THEN GOSUB 4000
3210 RETURN
4000
1
4010 ' Pause
4020
1
4030 LOCATE 24,27 : COLOR 1
4040 PRINT "Druecke eine Taste um weiterzumachen
• • •
";
4050 WHILE INKEYS = "" : WEND
4060 RETURN
BOXES
-
Zeichen
zum
Zeichnen von Kästchen (Kapitel 4)
1000 ' zeichnet Boxen, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
1020 GOSUB 2000
' Programmvorbereitung
1030 FOR BOX.MIT.CODE= 0 TO 1
1040
RESTORE
1050
FOR BOX.TYPE= 1 TO 4
1060
GOSUB 3000 ' holt Zeichendaten
1070
GOSUB 4000 ' druckt Ueberschrift
1080
IF BOX.MIT.CODE = 0 THEN GOSUB 5000 ' zeichnet Box
1090
IF BOX.MIT.CODE = 1 THEN GOSUB 6000 ' zeichnet Box
1100
NEXT BOX.TYPE
1110
GOSUB 7000
' Pause
1120 NEXT BOX.MIT.CODE
1130 SYSTEM
Programm-Listings
2000
1
2010 ' Unterprogramm fuer Programmvorbereitung
2020
1
2030 DEFINT A-Z
2040 DIM CODES C6,6)
2050 KEY OFF : SCREEN 0: WIDTH 80 : CLS
2060 RETURN
3000
1
3010 ' holt die Daten fuer die Zeichnungen
3020
1
3030 READ UEBERSCHRIFT.$
3040 FOR ZEILE = 1 TO 5
FOR SPALTE = 1 TO 5
3050
3060
READ CODES CZEILE,SPALTE)
3070
NEXT SPALTE
3080 NEXT ZEILE
3090 RETURN
4000
1
4010 ' gibt Ueberschrift aus
4020
1
4030 IF BOX.TYPE=1 THEN BASIS.ZEILE= 1
BASIS.SPALTE= 5
4040 IF BOX.TYPE=2 THEN BASIS.ZEILE= 1
BASIS.SPALTE=45
4050 IF BOX.TYPE=3 THEN BASIS.ZEILE=13
BASIS.SPALTE= 5
4060 IF BOX.TYPE=4 THEN BASIS.ZEILE=13
BASIS.SPALTE=45
4070 LOCATE BASIS.ZEILE,BASIS.SPALTE
4080 COLOR 9
4090 PRINT UEBERSCHRIFT.S;
4100 COLOR 7
4110 RETURN
5000
1
5010 ' zeichnet Box ohne Codes
5020
1
5030 DARGESTELLTE.ZEILE = BASIS.ZEILE
5040 FOR ZEILE= 1 TO 5
5050
ANZAHL = 1
5060
IF ZEILE=2 OR ZEILE=4 THEN ANZAHL = 3
5070
FOR I = 1 TO ANZAHL
5080
DARGESTELLTE.ZEILE = DARGESTELLTE.ZEILE + 1
5090
LOCATE DARGESTELLTE.ZEILE, BASIS.SPALTE+4
5100
PRINT
5110
5120
FOR J = 1 TO 9
5130
NEXT J
5140
PRINT
5150
5160
FOR J = 1 TO 9
5170
NEXT J
5180
5190
CHRSCCODESCZEILE,1>>;
PRINT CHRSCCODESCZEILE,2>>;
CHRSCCODESCZEILE,3));
PRINT CHRSCCODESCZEILE,4>>;
PRINT
NEXT I
5200 NEXT ZEILE
5210 RETURN
CHRSCCODESCZEILE,5));
271
272
6000
Anhang A
1
6010 ' zeichnet Box mit Codes
6020
1
6030 DARGESTELLTE.ZEILE
=
6040 FOR ZEILE
FOR ANZAHL
6050
=
BASIS.ZEILE
1 TO 5
1 TO 2
=
6060
DARGESTELLTE.ZEILE
6070
LOCATE DARGESTELLTE.ZEILE, BASIS.SPALTE+3
=
DARGESTELLTE.ZEILE +
6080
IF ANZAHL
=
1 THEN GOSUB 6200
6090
IF ANZAHL
=
2 THEN GOSUB 6400
6100
NEXT ANZAHL
6110 NEXT ZEILE
6120 RETURN
6200
1
6210 ' gezeichnete Linien
6220
1
6230 PRINT
";
II
6240 PRINT CHRSCCODESCZEILE,1));
6250 PRINT
II
6270 PRINT
II
6290 PRINT
II
";
6260 PRINT CHRSCCODESCZEILE,2));
";
6280 PRINT CHRSCCODESCZEILE,3));
";
6300 PRINT CHRSCCODESCZEILE,4));
II
6310 PRINT
";
6320 PRINT CHRSCCODESCZEILE,5));
6330 RETURN
6400
1
6410 ' zeigt die numerischen Codes
6420
1
6430 FOR SPALTE
=
1 TO 5
6440
X
6450
IF X
6460
IF X <> 32 THEN PRINT USING "###
=
CODES (ZEILE,SPALTE)
=
32 THEN PRINT
II
";
"; X;
6470 NEXT SPALTE
6480 RETURN
7000
1
7010 ' Pause
7020
1
7030 LOCATE 25,1
7040 PRINT "Fuer Fortsetzung beliebige Taste druecken
7050 WHILE INKEYS
=
1111
: WEND
7060 RETURN
8000
1
8010 ' Character-Daten fuer Box
8020
1
8100 DATA "Alles mit doppelten Linien:"
8110 DATA 201, 205, 203, 205, 187
8120 DATA 186,
32, 186,
32, 186
8130 DATA 204, 205, 206, 205, 185
8140 DATA 186,
32, 186,
32, 186
8150 DATA 200, 205, 202, 205, 188
"·
,
Programm-Listings
273
8200 DATA "Alles mit einfachen Linien:"
8210 DATA 218, 196, i94, 196, 191
8220 DATA 179,
32, 179,
32, 179
8230 DATA 195, 196, 197, 196, 180
8240 DATA 179,
32, 179,
32, 179
8250 DATA 192, 196, 193, 196, 217
8300 DATA "Vertikal mit Doppellinien:"
8310 DATA 214, 196, 210, 196, 183
8320 DATA 186,
32, 186,
32, 186
8330 DATA 199, 196, 215, 196, 182
8340 DATA 186,
32, 186,
32, 186
8350 DATA 211, 196, 208, 196, 189
8400 DATA "Horizontal mit Doppellinien:"
8410 DATA 213, 205, 209, 205, 184
8420 DATA 179,
32, 179,
32, 179
8430 DATA 198, 205, 216, 205, 181
8440 DATA 179, 32, 179, 32, 179
8450 DATA 212, 205, 207, 205, 190
MSG-SUCH - sucht nach ROM-BIOS-Meldungen (Kapitel 7)
1000 ' ROM-BIOS Message-Suche, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
1020 GOSUB 2000
' Programmvorbereitung
1030 WHILE OFFSET <= 65535!
1040
GOSUB 3000 ' Message-Test
1050
OFFSET = OFFSET
+
1
1060 WEND
1070 GOSUB 5000
2000
' Beendigung vorbereiten
1
2010 ' Unterprogramm fuer Programmvorbereitung
2020
1
2030 KEY OFF
: SCREEN 0: WIDTH 80 : CLS
2040 LOCATE 2,1 : COLOR 7
2050 PRINT "Durchsuchen des BIOS nach offensichtlichen Messages"
2060 PRINT
2070 OFFSET = 0
2080 DEF SEG = &HFOOO
2090 RETURN
3000
1
3010 ' Unterprogramm fuer Test auf Message
3020
1
3030 MESSAGE.$ = ""
3040 COLOR 7
3050 PRINT "Suche bei FOOO:";
3060 PRINT HEXS (OFFSET};
3070 LOCATE ,1
3080 BYTE = PEEK (OFFSET}
3090 WHILE CCBYTE>=ASCC" "}}ANDCBYTE<=ASCC"z"})}
274
Anhang A
3100
MESSAGE.$
3110
OFFSET
=
3120
BYTE
PEEK (OFFSET)
3130
IF LEN (MESSAGE.$) > 100 THEN RETURN
=
=
MESSAGE.$
OFFSET
+
+
CHRSCBYTE)
1
3140 WEND
3150 IF LEN (MESSAGE.$) > 4 THEN GOTO 4000
3160 RETURN
4000
1
4010 ' zeigt die gefundene Message
4020
1
4030 COLOR 7
4040 PRINT "Bei FOOO:";
4050 PRINT HEXSCOFFSET);
4060 PRINT " wurde folgendes gefunden: ";
4070 COLOR 1
4080 PRINT MESSAGE.$;
4090 COLOR 7
4100 PRINT
4110 RETURN
5000
1
5010 ' Beenden
5020
1
5030 COLOR 1
5040 PRINT
5050 PRINT "Fuer Fortsetzung beliebige Taste druecken
5060 WHILE INKEYS
=
" " : WEND
"•
,
5070 SYSTEM
VID-MODE - Demonstration der Bildschirm-Modi (Kapitel 11)
1000 ' Experiment mit Bildschirm-Modi, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
1020 ' folgender Schritt wird fuer PCjr benoetigt
1030 ON ERROR GOTO 1130 : CLEAR ,,,32768!
' erledigt Vorbereitungsarbeiten
1040 GOSUB 2000
1050 FOR MODE
=
0 TO 10
GOSUB 3000 ' beschreibt Modus
1060
1070
GOSUB 9000 ' Pause
1080
GOSUB 5000 ' Modus setzen
1090
GOSUB 7000 ' Ergebnisse ueberpruefen
1100
GOSUB 9000 ' Pause
1110 NEXT MODE
1120 SYSTEM ' beenden
1130 RESUME NEXT
2000
1
2010 ' Unterprogramm fuer Vorbereitungsarbeiten
2020
1
2030 KEY OFF
: SCREEN 0: WIDTH 80 : CLS
2040 LOCATE 2,10 : COLOR 7
Programm-Listings
275
2050 PRINT "Experimentieren mit den Bildschirm-Modi"
2060 PRINT
2070 PRINT "Bei Beginn ist der Bildschirm-Modus ";
2080 DEF SEG
=
0
2090 PRINT PEEK C&H449)
2100 PRINT
2110 RETURN
3000
1
3010 ' beschreibt Modus, der eingestellt wird
3020
1
3030 PRINT "VerSIJCh auf Modus ";MODE;" umzuschalten, das heisst:"
3040 ON MODE+1 GOTO 4000,4010,4020,4030,4040,4050,4060,4070,4080,4090,4100
3050 RETURN
4000 PRINT "Farbgraphik, Text, 40-spaltig, keine Farbe"
4005 RETURN
4010 PRINT "Farbgraphik, Text, 40-spaltig, farbig"
4015 RETURN
4020 PRINT "Farbgraphik, Text, 80-spaltig, ohne Farbe"
4025 RETURN
4030 PRINT "Farbgraphik, Text, 80-spaltig, farbig"
4035 RETURN
4040 PRINT "Farbgraphik, Graphik, mittlere Aufloesung, farbig"
4045 RETURN
4050 PRINT "Farbgraphik, Graphik, mittlere Aufloesung, ohne Farbe"
4055 RETURN
4060 PRINT "Farbgraphik, Graphik, hohe Aufloesung, zweifarbig"
4065 RETURN
4070 PRINT "Standard Monochrom Text Modus"
4075 RETURN
4080 PRINT "PCjr, Graphik, niedrige Aufloesung, farbig"
4085 RETURN
4090 PRINT "PCjr, Graphik, mittlere Aufloesung, besonders farbig"
4095 RETURN
4100 PRINT "PCjr, Graphik, hohe Aufloesung, besonders farbig"
4105 RETURN
5000
1
5010 ' Versuch, den Modus umzuschalten
5020
1
5030 ON ERROR GOTO 5060
5040 ON MODE+1 GOTO 6000,6010,6020,6030,6040,6050,6060,6070,6080,6090,6100
5050 RETURN
5060 RESUME 5050
6000 SCREEN 0,0
WIDTH 40
6010 SCREEN 0,1
WIDTH 40
RETURN
6020 SCREEN 0,0
WIDTH 80
RETURN
6030 SCREEN 0,1
WIDTH 80
RETURN
6040 SCREEN 1,0
RETURN
6050 SCREEN 1,1
RETURN
6060 SCREEN 2
RETURN
6070 SCREEN 0
RETURN
6080 SCREEN 3
RETURN
6090 SCREEN 5
RETURN
6100 SCREEN 6
RETURN
276
7000
Anhang A
1
7010 ' Ueberpruefung des aktiven Modus
7020
1
7030 CURRENT.MODE
PEEK C&H449)
=
7040 PRINT "Der aktuelle Modus ist "; CURRENT.MODE
7050 PRINT "Das ist";
7060 IF MODE<> CURRENT.MODE THEN PRINT " NICHT";
7070 PRINT " der gewuenschte Modus"
7080 RETURN
9000
1
9010 ' Pause
9020
1
9030 PRINT
9040 PRINT "Fuer Fortsetzung beliebige Taste druecken
9050 WHILE INKEYS
"·
,
"" : WEND
=
9060 PRINT : PRINT
9070 RETURN
COLORTX.T-
zeigt sämtliche Textfarben-Kombinationen (Kapitel 12)
1000 ' COLORTXT zeigt Textfarben, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
' erledigt Vorbereitungsarbeiten
1020 GOSUB 2000
1030 FOR ATTRIBUTE
1040
=
0 TO 255
GOSUB 3000 ' zeigt das Attribut
1050 NEXT ATTRIBUTE
1060 SYSTEM
2000
1
2010 ' Unterprogramm fuer Programmvorbereitung
2020
1
2030 DEFINT A-Z
2040 KEY OFF
: SCREEN 0,1 : WIDTH 80
2050 VIDEO.SEGMENT
2060 DEF SEG
=
=
0
&H40 : VIDEO.MODE
2070 IF VIDEO.MODE
=
PEEK C&H49)
7 THEN VIDEO.SEGMENT
2080 IF VIDEO.MODE< 4 THEN VIDEO.SEGMENT
=
=
=
&HBOOO
&HB800
2090 IF VIDEO.SEGMENT<> 0 THEN RETURN
2100 LOCATE 12,25
2110 PRINT "Fehler: unbekannter Bildschirmmodus!"
2120 GOSUB 4000 : SYSTEM
3000
1
3010 ' Unterprogramm, um alle Attribute zu zeigen
3020
1
3030 IF ATTRIBUTE MOD 128 > 0 THEN GOTO 3080
3040 COLOR 7 : CLS : COLOR 1
3050 LOCATE 3,25 : PRINT "Text-Farbattribute ";
3060 IF ATTRIBUTE
=
0 THEN PRINT "erste"; ELSE PRINT "zweite";
Programm-Listings
3070 PRINT " Haelfte";
3080 COLOR 7
3090 RELATIVE.CHAR
3100 ZEILE
3110 SPALTE
ATTRIBUTE MOD 128
=
RELATIVE.CHAR MOD 16
=
=
CINTCRELATIVE.CHAR I 16))
3120 SCREEN.OFFSET
3130 DEF SEG
ZEILE
=
*
*
160 + SPALTE
10
*
2 + 814
VIDEO.SEGMENT
=
3140 POKE SCREEN.OFFSET, 88 ' Buchstabe X
3150 POKE SCREEN.OFFSET+1, ATTRIBUTE
3160 LOCATE ZEILE+6,SPALTE+1
3170 PRINT USING "###";ATTRIBUTE;
3180 PRINT
II
";
3190 IF ATTRIBUTE < 16 THEN PRINT "0";
3200 PRINT HEXSCATTRIBUTE>;
3210 IF ATTRIBUTE MOD 128
=
127 THEN GOSUB 4000
3220 RETURN
4000 1
4010 ' Pause
4020
1
4030 LOCATE 24,27 : COLOR 1
4040 PRINT "Fuer Fortsetzung beliebige Taste druecken
4050 WHILE INKEYS
"·
,
"" : WEND
=
4060 RETURN
GRAPHTXT - Textzeichen im Graphikmodus (Kapitel 13)
1000 ' GRAPH-TXT Graphik-Zeichen, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
' erledigt Vorbereitungsarbeiten
1020 GOSUB 2000
1030 FOR CHAR.CODE
1040
=
0 TO 127
GOSUB 3000 ' zeigt das Zeichen
1050 NEXT CHAR.CODE
1060 GOSUB 4000
1070 SYSTEM
2000
1
2010 ' Unterprogramm fuer Programmvorbereitung
2020 1
2030 DEFINT A-Z
2040 KEY OFF
2050 PAUSE
=
: SCREEN 0,1 : WIDTH 80
0
2060 BILDSCHIRM.SEGMENT
2070 DEF SEG
=
=
0
&H40 : BILDSCHIRM.MODUS
2080 IF BILDSCHIRM.MODUS
=
PEEK C&H49)
7 THEN BILDSCHIRM.SEGMENT
=
&HBOOO
2090 IF BILDSCHIRM.MODUS < 4 THEN BILDSCHIRM.SEGMENT
=
&HB800
=
2100 IF BILDSCHIRM.SEGMENT <> 0 THEN RETURN
2110 LOCATE 12,25
2120 PRINT "Fehler: unbekannter Bildschirmmodus!"
2130 GOSUB 4000 : SYSTEM
277
278
3000
Anhang A
1
3010 ' Unterprogramm fuer Ausgabe aller Zeichen
3020
1
3030 CLS
3040 LOCATE 2,5
3050 PRINT "Ausgabe der Graphik-Textzeichen"
3060 LOCATE 5,5
3070 PRINT "Bei Character-Code";CHAR.CODE
3080 LOCATE 6,5
3090 PRINT "Zeichen"
3100 DEF SEG=BILDSCHIRM.SEGMENT
3110 POKE 828, CHAR.CODE
3120 DEF SEG=&HFOOO
3130 FOR SCAN.ZEILE=0 TO 7
3140
BIT.CODE=PEEK C&HFA6E + SCAN.ZEILE + CHAR.CODE* 8)
3150
LOCATE 8+SCAN.ZEILE,5
3160
FOR BITS= 1 TO 8
3170
IF BIT.CODE < 128 THEN SHOWS=". " ELSE SHOWS="XX"
3180
3190
PRINT SHOWS;
IF BIT.CODE > 127 THEN BIT.CODE=BIT.CODE - 128
BIT.CODE=BIT.CODE* 2
NEXT BITS
3200
3210
3220 NEXT SCAN.ZEILE
3230 LOCATE 18,5
3240 WHILE INKEYS <> "" : WEND ' leert Tastatur-Puffer
3250 PRINT "Stop mit beliebiger Taste
• • •
";
3260 FOR WAIT.A.SECOND=1 TO 2
3270
OLD.TIMES=TIME$
3280
WHILE OLD.TIMES=TIME$ : WEND
3290 NEXT WAIT.A.SECOND
3300 IF INKEYS="" THEN RETURN
3310 LOCATE 18,5
3320 PRINT "Fortfuehrung mit beliebiger Taste
.
.."·,
3330 WHILE INKEYS ="" : WEND
3340 RETURN
4000
1
4010 ' Pause
4020
1
4030 LOCATE 18,5
4040 PRINT "Rueckkehr zu DOS mit beliebiger Taste
4050 WHILE INKEYS="" : WEND
4060 RETURN
• • •
";
Programm-Listings
COLOR-4demonstriert Farben im Graphikmodus (Kapitel 13)
1000 ' Color-4: Demonstriert Modus 4, Copr. 1985 Peter Norton
1005 ' deutsche Version Copyright 1986 ECO Institut
1010
1
' erledigt Vorbereitungsarbeiten
1020 GOSUB 2000
1030 GOSUB 3000
' Stufe 1
1040 GOSUB 4000
' Stufe 2
1050 GOSUB 5000
' Stufe 3
1060 GOSUB 6000
' Stufe 4
1070 SYSTEM
2000
1
2010 ' Unterprogramm fuer Programmvorbereitung
2020
1
2030 DEFINT A-Z
2040 KEY OFF
2050 DEF SEG
: SCREEN 0,1 : WIDTH 40
=
&H40 : BILDSCHIRM.MODUS
2060 IF BILDSCHIRM.MODUS
=
=
PEEK C&H49)
7 THEN GOTO 2230
2070 LOCATE 3
2080 PRINT "Color-4: demonstriert Modus 4"
2090 PRINT
2100 PRINT
2110 PRINT "Dieses Programm arbeitet in vier Stufen:"
2120 PRINT
2130 PRINT "Stufe 1: zeigt vordefinierte Paletten"
2140 PRINT
2150 PRINT "Stufe 2: zeigt waehlbare Farbe"
2160 PRINT
2170 PRINT "Stufe 3: Ausgeben und Loeschen"
2180 PRINT
2190 PRINT "Stufe 4: Schnelles Paletten-Wechseln"
2200 PRINT
2210 GOSUB 7000
2220 RETURN
2230 PRINT "Dieses Programm arbeitet nicht im Monochrom-Modus"
2240 GOSUB 7000
2250 SYSTEM
3000
1
3010 ' Stufe 1 - zeigt vordefinierte Paletten
3020
1
3030 SCREEN 1,0
3040 COLOR 1,0 : CLS
3050 FOR C.NUM
=
0 TO 3
3060
LOCATE 5 + C.NUM * 5, 1 + C.NUM * 5
3070
PRINT " Farbe"; C.NUM
3080
CIRCLE C90+60*C.NUM,45+30*C.NUM),40,C.NUM
3090
PAINT
C90+60*C.NUM,45+30*C.NUM),C.NUM
3100 NEXT C.NUM
3110 FOR ANZAHL
3120
3130
=
1 TO 10
FOR PAL.NUM
=
0 TO 1
COLOR ,PAL.NUM
279
280
Anhang A
3140
LOCATE 2,10
3150
PRINT " zeigt Palette"; PAL.NUM
3160
NOWS = TIME$
3170
WHILE TIME$ = NOWS : WEND
NEXT PAL.NUM
3180
3190 NEXT ANZAHL
3200 LOCATE 22
3210 GOSUB 7000
3220 RETURN
4000
1
4010 ' Stufe 2 - zeigt waehlbare Farbe
4020
1
4030 SCREEN 1,0 : CLS
4040 COLOR 0,1
4050 FOR COLOR.NUM = 0 TO 15
LOCATE 3+COLOR.NUM,2+COLOR.NUM
COLOR COLOR.NUM
4060
4070
4080
4090
PRINT " gewaehlte Farbe ";COLOR.NUM;
NOWS = TIME$
4100
WHILE TIME$ = NOWS : WEND
4110 NEXT COLOR.NUM
4120 COLOR 0
4130 LOCATE 22
4140 GOSUB 7000
4150 RETURN
5000
1
5010 ' Stufe 3 - Ausgeben und Loeschen
5020
1
5030 SCREEN 1,0
5040 CLS
5050 COLOR 4,1
5060 PAINT C1,1),1
5070 CIRCLE C 80, 50),20,0
5080 CIRCLE ( 80,150),20,0
5090 CIRCLE C240, 50>,20,0
5100 CIRCLE (240,150),20,0
5110 PAINT
C 80, 50),0
5120 PAINT
( 80,150),0
5130 PAINT
C240, 50),0
5140 PAINT
(240,150>,0
5150 LOCATE 13,8
5160 PRINT " Ausgeben und Loeschen!
5170 FOR I = 1 TO 50
5180
COLOR 3 + I MOD 2
5190
FOR J = 1 TO 250 : NEXT J
5200 NEXT I
5210 LOCATE 22
5220 GOSUB 7000
5230 RETURN
6000
1
6010 ' Stufe 4 - schnelles Paletten-Wechseln
6020
1
6030 SCREEN 1,0 : CLS
Programm-Listings
281
6040 COLOR 0,0
6050 CIRCLE (160,100),80,3
6060 PAINT
(160,100>,3
6070 CIRCLE (160,100),60,2
6080 PAINT
(160,100),2
6090 CIRCLE (160,100),40,1
6100 PAINT
(160,100),1
6110 CIRCLE (160,100),20,0
6120 PAINT
(160,100>,0
6130 LOCATE 13,17
6140 PRINT " Boom ! " ;
6150 FOR I = 1 TO 100
COLOR ,I MOD 2
6160
6170
FOR J = 1 TO 50
NEXT J
6180 NEXT I
6190 LOCATE 22
6200 GOSUB 7000
6210 RETURN
7000
1
7010
'
7020
1
Pause
7030 PRINT
7040 PRINT "Fuer Fortsetzung beliebige Taste druecken
II•
,
7050 WHILE INKEYS = "" : WEND
7060 RETURN
KEY-BITS - zeigt die Tastatur-Steuerungs-Bits (Kapitel 14)
1000
'
KEY-BITS
1005
'
deutsche Version Copyright 1986 ECO Institut
1010
1
1020 GOSUB 2000
Tastatur-Steuerungs-Bits, Copr. 1985 Peter Norton
'
erledigt Vorbereitungsarbeiten
1030 WHILE CONTINUING
1040
GOSUB 3000 ' zeigt die Daten
1050 WEND
2000
1
2010
'
2020
1
Unterprogramm fuer Programmvorbereitung
2030 KEY OFF
: SCREEN 0,1 : WIDTH 80
2040 CONTINUING = 1 : LOCATE ,,0
2050 DIM MELDUNG.$ (16)
2060 MELDUNG.$ ( 1)
=
"Insert-Status"
2070 MELDUNG.$ ( 2) = "Caps Lock-Status"
2080 MELDUNG.$ C 3)
2090 MELDUNG.$ ( 4)
2100 MELDUNG.$ ( 5)
=
"Num Lock-Status"
=
"Scroll Lock-Status"
=
"Alt gedrueckt"
2110 MELDUNG.$ C 6) = "Ctrl gedrueckt"
2120 MELDUNG.$ C 7> = "Linke Umschalttaste gedrueckt"
2130 MELDUNG.$ C 8) = "Rechte Umschalttaste gedrueckt"
2140 MELDUNG.$ C 9) = "Insert gedrueckt"
2150 MELDUNG.$ C10> = "Caps Lock gedrueckt"
2160 MELDUNG.$ (11)
=
"Num Lock gedrueckt"
282
Anhang A
2170 MELDUNG.$ C12) = "Scroll Lock gedrueckt"
2180 MELDUNG.$ C13) = "Halt-Status aktiv"
2190 MELDUNG.$ C14) = "PCjr-Klick-Status"
2200 MELDUNG.$ C15> = "(nicht verwendet)"
2210 MELDUNG.$ C16) = "(nicht verwendet)"
2220 CLS
2230 LOCATE 1,5
2240 PRINT "Ausgabe der Tastatur-Steuerungs-Bits; fuer Stop Enter druecken"
2250 LOCATE 3,5
2260 PRINT "Zur Demonstration der Aenderungen folgende Tasten druecken:";
2270 LOCATE 4,7
2280 PRINT "Beide Umschalttasten, Ctrl, Alt, ";
2290 PRINT "CapsLock, NumLock, ScrollLock, Ins";
2300 FOR I = 1 TO 16
2310
FOR J = 1 TO I
2320
LOCATE 24 - I - I \ 9, 5 + J * 2
2330
PRINT CHRSC179);
+
J \ 9
NEXT J
2340
2350 NEXT I
2360 FOR J = 1 TO 8
2370
LOCATE 15, 5 + J * 2
2380
PRINT CHRSC179)
2390 NEXT J
2400 RETURN
3000
1
3010 ' Unterprogramm fuer Anzeige der Status-Daten
3020
1
3030 DEF SEG = 0
3040 BITS = PEEK C&H417) * 256
+
PEEK C&H418)
3050 FOR BIT = 1 TO 16
3060
STATUS$ = "0"
3070
IF BITS >= 32768! THEN STATUS$ = "1"
3080
BITS = BITS * 2
3090
LOCATE 6,5 + BIT * 2 + BIT \ 9
3100
PRINT STATUS$;
+
BIT * 2
BITS = BITS - 32768!
+
3110
LOCATE 24 - BIT - BIT \ 9, 5
3120
PRINT CHRSC192>; ">
3130
IF STATUS$ = "0" THEN PRINT " aus"; ELSE PRINT " EIN";
3140 NEXT BIT
3150 WHILE CONTINUING
3160
END.TESTS= INKEYS
3170
IF END.TESTS= CHRSC13) THEN SYSTEM
3180
IF END.TESTS= "" THEN RETURN
3190 WEND
BIT \ 9
"; MELDUNG.$ (BIT>;
283
AnhangB:
Ein Glossar zu Computergrundlagen
Dieses Glossar soll einen sehr kurzen Überblick über die gebräuchlichste und
wichtigste Terminologie liefern, die im Zusammenhang mit Computern verwendet
wird. Sie können dieses Glossar auf zwei Arten verwenden: Entweder lesen Sie
alles oder Sie durchsuchen die Wort-Liste nach den Begriffen, die Sie interessie­
ren, und lesen anschließend die Besprechung.
Zahlen und Notation
Binär
Bit
Computer arbeiten nur mit Binärzahlen, d.h. mit Zahlen, die
aus Nullen oder Einsen bestehen (0 und 1). Binärziffern nennt
man kurz Bits. Unabhängig davon, was ein Computer macht,
arbeitet er immer mit Bits. Sogar, wenn es sich um alphabe­
tische Zeichen oder um eine dezimale Rechnung handelt, die
Methode beruht immer auf Binärzahlen.
Hexadezimal
Hex
Oktal
Viele Bits zu schreiben, z.B. 0101010011101010101, ist
unbequem; deshalb wurden verschiedene Kurz-Notationen
entwickelt. Die gebräuchlichste ist die hexadezimale (mit
Basis 16) Notation. Hexadezimale Ziffern haben 16 mögliche
Werte, von 0 bis 15; sie werden geschrieben als 0 bis 9, dann
A (für den Wert 10), B (für den Wert 11), und C bis hin zu F (für
den Wert 15). Hexadezimale Ziffern, auch mit hex bezeichnet,
stellen vier Binärziffern auf einmal dar. (Eine andere Notation,
die oktale Notation, verwendet die Ziffern 0 bis 7, und mit ihr
werden drei Bits auf einmal dargestellt.)
Byte
Nibble
Nybble
Zeichen
Alphanumerisch
Die Bits, mit denen ein Computer arbeitet, werden zu größeren
Einheiten zusammengefaßt. Eine Gruppe von acht Bits nennt
man ein Byte. Da die Hex-Notation vier Bits gleichzeitig dar­
stellt, benötigt man zwei Hex-Ziffern für die Darstellung des
Wertes, der in einem Byte gespeichert ist (Hex-Ziffern werden
im Englischen manchmal spaßhalber auch als „nibbles"
oder „nybbles" bezeichnet). In einem Byte können zwei hoch
acht, also 256 verschiedene Werte gespeichert werden. Die
Werte können als Zahlen oder als Zeichen interpretiert werden
(z.B. als Buchstaben des Alphabets). Ein Byte kann ein Zei­
chen speichern, und deshalb werden die Ausdrücke Byte und
Zeichen (engl. Character) manchmal synonym verwendet. Die
Buchstaben des Alphabets und die 10 Ziffern nennt man
zusammen die alphanumerischen Zeichen, obwohl diese
Bezeichnung gelegentlich frei für irgendwelche Textdaten ver­
wendet wird.
284
Anhang B
ASCII
Wenn Bytes zur Speicherung von Zeichen verwendet werden,
Erweitertes ASCII muß es einen Code geben, der bestimmt, welcher numerische
EBCDIC
ASCII-Daten
Textdaten
ASCII-Datei
Zahlen mit und
ohne Vorzeichen
Wert welches Zeichen darstellt. Der gebräuchlichste Code ist
der American Standard Code for Information lnterchange
( ASCII). Bei ASCII hat der Großbuchstabe „A" den Wert 65 (in
Hex-Notation 41), „B" ist 66 usw.. ASCII umfaßt Codes für
Buchstaben, Zahlen, Interpunktion und spezielle Steuerungs­
codes. Das reine ASCII hat nur 128 verschiedene Codes und
benötigt lediglich sieben Bits für ihre Darstellung; da ASCII­
Zeichen fast immer in acht Bit großen Bytes gespeichert wer­
den, gibt es Platz für die 128 ASCII-Codes und weitere 128
Codes. Die weiteren Codes werden manchmal das erweiterte
ASCII genannt. Die ASCII-Codes sind standardisiert, aber das
erweiterte ASCII variiert von Computer zu Computer. Traditio­
nell verwendeten IBM-Computer keine ASCII-Codierung für
die Zeichendarstellung; stattdessen verwendeten sie EBCDIC
(Extended Binary Coded Decimal Information Code). Wir be­
gegnen EBCDIC auf unseren PCs nur unter besteimmten Um­
ständen - z.B. bei Daten, die von einem IBM-Großrechner
übertragen wurden, oder bei ein paar wenigen Programmen,
die mit EBCDIC arbeiten, z.B. einige Versionen der Textverar­
beitung DisplayWrite von IBM. ASCII-Daten bzw. eine ASCII­
Datei sind Daten, die aus Text bestehen, d.h. Buchstaben des
Alphabets, Interpunktion, und weniger aus Zahlen oder ande­
ren Daten. Manchmal wird der Ausdruck ASCII frei zur
Bezeichnung von Textdaten verwendet. Eigentlich enthält eine
ASCII-Datei nicht nur ASCII-Codes für Buchstaben, Leerzei­
chen, Interpunktion usw., sondern auch die Standard-ASCII­
Codes für die Formatierung, wie Wagenrücklauf (engl. Carria­
ge-Return) und Dateiende (engl. End-Of-File).
Wenn ein Byte zur Darstellung einer Zahl verwendet wird, kön­
nen die 256 verschiedenen Byte-Werte entweder als positive
Zahlen im Bereich von 0 bis 255 interpretiert werden oder als
positive und negative Zahlen im Bereich von -128 bis 127.
Diese bezeichnet man als Zahlen ohne Vorzeichen (0 bis 255)
oder als Zahlen mit Vorzeichen (-128 bis 127).
Wort
Für die Handhabung größerer Zahlen faßt man mehrere Bytes
zu einer Einheit zusammen, die oft als ein Wort bezeichnet
wird. Je nach Computer hat der Ausdruck „Wort" unterschied­
liche Bedeutungen. Aber meistens meint man damit entweder
zwei Bytes (16 Bits) oder vier Bytes (32 Bits). Bei Personal­
Computern wie dem IMB/PC bedeutet ein Wort in der Regel
eine zwei Byte ( 16 Bit) große Zahl.
=
Ein zwei Byte großes Wort hat 2 hoch -16 mögliche Werte.
Diese können Zahlen ohne Vorzeichen sein, von 0 bis 65.535,
,
Ein Glossar zu Computergrundlagen
285
oder Zahlen mit Vorzeichen, von -32.768 bis 32.767. Diese
speziellen
Zahlen
begegnen
Ihnen
öfters,
wenn
es
um
Beschränkungen bei Programmen geht (z.B. wieviele Daten­
sätze ein Datenbanksystem verwalten kann).
Gleitkomma
Einfache
Genauigkeit
Doppelte
Genauigkeit
Reelle Zahlen
Für manche Aufgaben reichen ganze Zahlen nicht aus. Wenn
Bruchzahlen oder ein sehr großer Zahlenbereich benötigt wer­
den, wird eine andere Form der Computer-Arithmetik, nämlich
das Rechnen mit Gleitkomma-Zahlen verwendet. Gleitkomma­
Zahlen enthalten einen Bruchanteil und einen Exponentenan­
teil, ähnlich der „wissenschaftlichen Notation" im Ingenieurwe­
sen.
Beim
Arbeiten
mit Gleitkomma-Zahlen interpretieren
Computer die Bits eines Wortes auf eine spezielle Art. Gleit­
komma-Zahlen stellen im allgemeinen Näherungswerte dar.
Häufig gibt es mehr als ein Format für Gleitkomma-Zahlen,
wobei verschiedene Genauigkeitsgrade angeboten werden;
gebräuchliche Bezeichnungen dafür sind: einfache Genauig­
keit und doppelte Genauigkeit. Gleitkomma-Zahlen werden
manchmal auch als reelle Zahlen bezeichnet.
Null-Ursprung
Basis
Ursprung
Offset
Nach der Natur der Computer-Arithmetik und der verwendeten
Notation werden Dinge oft beginnend mit 0 für das erste Ele­
ment numeriert; man nennt dies „Zählen vom Null-Ursprung".
Das Zählen ab Null wird besonders dann verwendet, wenn ein
Speicherplatz relativ zu einem Anfangspunkt angegeben wer­
den soll. Für den Anfangspunkt selbst gibt es viele Bezeich­
nungen, z.B. Basis oder einfach Ursprung. Den relativen Spei­
cherplatz bezeichnet man oft als ein Offset. Ausgehend von
irgendeiner Basis-Adresse im Arbeitsspeicher befindet sich
das erste Byte bei Offset 0 und das folgende Byte bei Offset 1.
Computergrundbegriffe
Hardware
Software
Alle mechanischen und elektronischen Teile eines Computer­
systems werden als Hardware bezeichnet. Die Programme, mit
denen ein Computer arbeitet, nennt man Software.
Arbeitsspeicher
Speicher
Speicherplatz
Adresse
Die Grundidee eines Computers beginnt mit dem Begriff des
Arbeitsspeichers. Ein Arbeitsspeicher enthält viele Speicher­
plätze, von denen jeder eine Adresse besitzt und einen Wert
speichern kann. Bei den meisten Computern, auch beim IBM/
PC, ist jeder Speicherplatz ein Byte; bei anderen Computern ist
jeder Speicherplatz ein Wort.
Die Adressen der Speicherplätze sind Zahlen. Die auf den
Speicherplätzen
gespeicherten
Werte
können
gefunden
(gelesen) und geändert (geschrieben) werden. Für das Lesen
oder Schreiben eines Wertes muß die Adresse des Speicher­
platzes angegeben werden.
286
Anhang B
Manche Computer ordnen ihren Arbeitsspeicher in große
Paragraph
Segment
Abstand
Adressierung teilt er seinen Arbeitsspeicher in Einheiten von
(Displacement)
Vektor
IBM/PC verwendet keine Seiten, aber für die Zwecke der
16 Bytes auf, die als Paragraphen bezeichnet werden (ein
Begriff, der gewählt wurde, um eine kleinere Einheit als eine
Seite zu bezeichnen). Das Speicheradressierungs-Verfahren
l
�
vollständigen Adresse benötigt; zusammen nennt man sie
manchmal einen Adressen-Vektor oder einfach einen Vektor.
Teilmengen des Arbeitsspeichers werden häufig in Einheiten
von 1024 angegeben, weil 1024 in der Binär-Notation und
beinahe auch in der Dezimal-Notation eine runde Zahl ist. Den
Wert 1024 nennt man „K" für Kilo; 64 K sind 64 K mal 1024,
also 65.536.
Wenn von allgemeiner Kapazität die Rede ist, bedeutet K fast
immer 1024 Bytes. Bei Halbleiter-„Chips" bedeutet K jedoch
1024 Bits. Wenn in Zeitschriften über 16-K- und 64-K-Chips
geschrieben wird, sind 16 K Bits (äquivalent zu 2 K Bytes) bzw.
64 K Bits (äquivalent zu 8 K Bytes) gemeint.
Ein Computer kann Operationen auf den Werten ausführen, die
in seinem Arbeitsspeicher gespeichert sind. Beispiele solcher
Operationen sind arithmetische Operationen (Addition, Sub­
traktion) und das Verschieben von einem Speicherplatz auf
einen anderen. Die Aufforderung an einen Computer, eine
Operation auszuführen, nennt man eine Instruktion oder einen
Befehl.
Eine Reihe von Computer-Instruktionen, die zusammen eine
bestimmte Aufgabe erfüllen, nennt man ein Programm. Pro­
gramme werden auch als Code bezeichnet.
Prozessor
Mikroprozessor
l
�i
Paragraph-Grenze weist, und einen relativen Wert, der auf ein
für Segment und Displacement werden für die Angabe einer
Programm
Code
·�
11i
des IBM/PC hat zwei Teile: einen Segmentwert, der auf eine
Byte zeigt, das sich in einigem Abstand (Displacement oder
Offset) vom Segment-Paragraphen befindet. Die beiden Werte
Operationen
Instruktionen
Befehle
1
�1
·
modulare Einheiten, die oft als Seiten bezeichnet werden. Der �
·
Seite
Der Teil des Computers, der Programme interpretiert und die
Instruktionen ausführt, wird als der Prozessor bezeichnet. Ein
sehr kleiner Prozessor, besonders einer, der auf einen einzel­
nen Computer-Chip paßt, nennt man einen Mikroprozessor; er
ermöglichte erst die Personal-Computer. Genau genommen ist
ein Computer eine vollständige arbeitsfähige Maschine, die
aus
einem
Prozessor
und
weiteren Teilen besteht; aber
manchmal wird der Prozessorteil eines Computers selbst auch
als ein Computer bezeichnet.
Ein Glossar zu Computergrundlagen
287
Im Arbeitsspeicher eines Computers werden Programme und
Daten gespeichert. Für den Arbeitsspeicher gibt es keinen
Unterschied zwischen Programmen und Daten. Aber für den
Prozessor bilden nur diejenigen gespeicherten Werte, die für
gültige Instruktionen stehen, ein Programm. Der Prozessor liest
und
schreibt in seinem Arbeitsspeicher,
um
Programme
auszuführen und um auf Daten zuzugreifen, die Programme
benötigen.
Register
Zur Unterstützung seiner Arbeit kann ein Computer einen klei­
nen Teil eines sehr spezialisierten Arbeitsspeichers besitzen,
der keine Adressen hat. Diesen besonderen Teil des Arbeits­
speichers nennt man Register. Register verwendet man, um
arithmetische Berechnungen effizienter zu machen oder die
Handhabung von Adressen zu unterstützen.
Stack
Push
Pop
UFO
Viele moderne Computer, auch der IBM/PC, verwenden zur
Speicherung von
Status-Informationen
einen
Push-Down­
Stack (Kellerspeicher). Die Daten werden oben in den Stack
eingefügt (Push-Operation) und von dort wieder entnommen
(Pop-Operation),
gemäß
dem
Last-ln-First-Out-(LIFO)-Ver­
fahren.
Bus
Einen gemeinsamen Übertragungsweg für Daten zwischen
verschiedenen Computerteilen nennt man Bus.
Peripherie
Der Arbeitsspeicher und der Prozessor sind interne Bestand­
Adapter
teile
Steuerung
allgemein als Peripherie oder Peripherie-Geräte bezeichnet
eines
Computers.
Es
gibt
viele
externe
Teile,
die
werden. Die meisten Peripherie-Geräte müssen über einen
unterstützenden elektronischen Schaltkreises an einen Com­
puter angeschlossen werden, über einen sog. Adaptor. Bei
einem komplizierten Peripherie-Gerät, wie einem Disketten­
laufwerk, hat der Adaptor spezielle logische Schaltkreise, die
man als Steuerung (engl. Controller) bezeichnet. Eine Steue­
rung ist oft selbst ein spezialisierter Computer.
Speicher
Es gibt zahlreiche Arten von Peripherie-Geräten, die jedoch in
Disketten
wenige einfache Kategorien eingeteilt werden können. Peri­
Festplatten
pherie-Geräte zur Speicherung bewahren Programme und
Daten auf, damit sie von dort in den internen Arbeitsspeicher
des Computers geladen werden können. Beispiele solcher
Peripherie-Geräte sind „Floppy"-Disketten, Tonband-Casset­
ten-Recorder und Festplatten (Hard Disk) mit hoher Speicher­
kapazität.
288
Anhang B
Terminal s
CRT
Bildschirm
Monitor
Verbund
RGB
Andere Peripherie-Geräte werden für die Kommunikation mit
Menschen benötigt. Die Geräte für die Kommunikation zwi­
schen Mensch und Computer nennt man in der Regel Termi­
nals. Ein
Terminal hat oft eine schreibmaschinenähnliche
Tastatur und einen fernsehähnlichen Bildschirm, den man als
CRT bezeichnet (engl. Cathode Ray Tube). Anstelle eines CRT
kann auch ein Drucker verwendet werden. Ein Bildschirmgerät
nennt man einen Monitor oder einfach einen Bildschirm. Ein
Farb-Bildschirm kann die Farbsignale in kombinierter Form
als sog. zusammengsetzte Farben empfangen oder getrennt in
seine roten, grünen und blauen Komponenten, was man als
RGB bezeichnet.
Personal­
computer
Große Computer können viele Terminals haben, während
kleine Personal-Computer in der Regel nur mit einem Terminal
arbeiten, das auch fest in das Computer-System eingebaut
sein kann. Die Tatsache, daß man nur über einen Terminal
verfügt,
macht
einen
Personal-Computer
erst
zu
einem
persönlichen Computer.
Modem
Asynchron
Kommunikation
RS-232
B aud
Seriell
P aralell
Weitere Peripherie-Geräte neben den Speichergeräten und
den Terminals sind Drucker und Telefonleitungen. Die Verbin­
dungen zwischen Computern und Telefonen werden manch­
mal mit den Namen ihrer Bestandteile bezeichnet, wie den
Modems und den synchronen Adaptoren; alle diese Ausdrük­
ke stehen in der Regel für die gesamte Computer-Telefon-Ver­
bindung, die man allgemein als Kommunikation bezeichnet.
Das gebräuchlichste Format für Kommunikationsverbindun­
gen ist standardisiert und heißt RS-232. Die Geschwindigkeit
oder die Datenrate einer Kommunikationsleitung wird in Baud
gemessen, d.h. in Bit pro Sekunde. 300 Baud sind eine übliche
Geschwindigkeit bei einer Personal-Computer-Kommunika­
tion; 300 Baud sind ungefähr 35 bis 40 Zeichen pro Sekunde.
Bei Personal-Computern wird eine RS-232-Verbindung auch
als seriell bezeichnet, weil jeweils nur ein Datenbit übertragen
wird. Eine parallele Verbindung kann mehrere Bits gleichzeitig
übertragen; der Drucker-Adaptor des IBM/PC ist eine parallele
Verbindung.
Punkt-Matrix
Brief-Qualität
Typenrad
Es gibt zahlreiche verschiedene Computer-Drucker. Der Stan­
darddrucker des IBM/PC ist ein Punkt-Matrix-Drucker, der
seine Druckzeichen als eine Reihe von Punkten druckt. Brief­
Qualitäts-Drucker erzeugen einen Ausdruck mit guter Schreib­
maschinenqualität. Die meisten Brief-Qualitäts-Drucker ver­
wenden ein Druckelement, das eine flache Scheibe, ein sog.
Typenrad, ist. Es gibt auch andere Drucktechniken, z.B. Tinten­
strahl-Drucker, Thermo-Drucker und Laser-Drucker (die wie
Fotokopierer funktionieren).
289
Ein Glossar zu Computergrundlagen
Interface
Ein Interface ist eine Verbindung zwischen je zwei Elementen
eines Computer-Systems. Der Begriff Interface wird für die Ver­
bindung sowohl von Hardware-Teilen als auch von Software­
Teilen verwendet und auch für die Benutzer-Schnittstelle.
110
Ein Großteil der Geräte, die an einen Computer angeschlossen
werden können, wird allgemein als Input/ Output-Geräte (Eingabe/Ausgabe) oder kurz mit 1/0 (E/A) bezeichnet.
Chips
Die kleinsten physikalischen Teile, aus denen sich ein Compu­
Platine
ter zusammensetzt, können „Chips" genannt werden. Die
System-Platine
Chips und andere Teile sind elektrisch verdrahtet und mecha­
Mutter-Platine
nisch auf Platinen befestigt. Wenn es eine Hauptplatine gibt,
Steckplätze
wird sie System-Platine oder Mutter-Platine genannt. Öffnun­
(Slots)
gen für das Hinzufügen weiterer Platinen nennt man Erweite­
rungs-Steckplätze (Slots), in welche Speicher-Platinen, Platten-Platinen, asynchrone Kommunikations-Platinen ( Telefon­
verbindungen) und andere Erweiterungen oder Peripherie-Pla­
tinen gesteckt werden.
Kanal
Ein Mikroprozessor interagiert mit seiner Umwelt mithilfe dreier
Interrupt
Mittel: mit Zugriffen auf den Arbeitsspeicher, Interrupts und
Externer Interrupt Kanälen.
Kanäle haben eine
Kanal-Nummer
oder
Kanal­
Interner Interrupt Adresse und werden zur Datenübertragung von und auf Peri­
Software-lnterrupt pherie-Geräte verwendet. Mit Interrupts macht man den Computer auf sich aufmerksam. Es gibt drei lnterruptanten (obwohl
alle drei gleich gehandhabt werden). Ein externer Interrupt
kommt von der Außenwelt (z.B. von einem Disketten-Lauf­
werk). Ein interner Interrupt meldet eine logische Ausnahme­
situation (z.B. Teilung durch Null). Ein Software-Interrupt ist
eine Anforderung von einem Programm nach irgendeinem
Dienstprogramm, das ausgeführt werden soll; ein Software­
interrupt ist eine Alternative für die Verwendung eines „Call"
zur
Aktivierung
eines
Unterprogramms.
Zugriffe
auf
den
Arbeitsspeicher werden verwendet, um vom Arbeitsspeicher
des Computers zu lesen oder auf diesen zu schreiben.
RAM
Im Arbeitsspeicher des Computers kann es verschiedene
ROM
Typen geben. Den gewöhnlichen Arbeitsspeicher, der gelesen
Speicher­
oder beschrieben werden kann, nennt man RAM (Random
Abbildung
Access Memory). Der Arbeitsspeicher, der permanente Daten
enthält, heißt ROM (Read Only Memory). Der Arbeitsspeicher
kann für verschiedene Zwecke verwendet werden, z.B. für die
Speicherung von Daten, die auf dem Bildschirm des Compu­
ters erscheinen sollen. Wenn ein Bildschirm den Arbeits­
speicher des Computers dafür verwendet, um dort seine
Informationen zu speichern, nennt man dies einen auf den
Speicher abgebildeten Bildschirm (Memory-Mapped-Display).
290
Anhang B
Programme und Programmiersprachen
Programm
Unterprogramm
Funktion
Prozedur
Subroutine
Routine
Eine Reihe von Computer-Instruktionen werden ein Programm
genannt.
Programmteile, die in sich abgeschlossen sind,
nennt man Subroutinen. Subroutinen können Prozeduren sein,
wenn sie nur etwas erledigen. Wenn sie außerdem einen Wert
liefern, sind sie Funktionen („Öffne die Tür" entspricht einer
Prozedur; „Sage mir deinen Namen" entspricht einer Funktion).
Subroutinen heißen auch Unterprogramme oder Routinen.
Viele Subroutinen verwenden Parameter, damit genau spezifi­
Parameter
Rückmelde-Code ziert werden kann, was getan werden soll: z.B. benötigt eine
Subroutine zur Berechnung der Quadratwurzel einen Parame­
ter für die Zahl, die verwendet werden soll. Viele Subroutinen
geben mit Hilfe eines Rückmelde-Codes an, ob ihre Operation
erfolgreich war.
Maschinen­
Sprache
Assembler­
Computer können nur Programme ausführen, die in der detail­
lierten Form vorliegen, die man Maschinensprache nennt.
Zur Bequemlichkeit können Programme aber auch in anderer
Form dargestellt werden. Wenn die Einzelheiten eines.maschi­
Sprache
Macro-Assembler nensprachlichen Programms durch bedeutungstragende Sym­
bole ersetzt werden (wie etwa die Ausrücke ADD oder MOVE),
nennt man die Programmiersprache einen Assembler­
Sprache
(auch Assembler, symbolischen Assembler oder
Macro-Assembler).
Low-Level
High-Level
Compiler
Assembler
Assembler ist eine Low-Level-Sprache, denn Assembler-Pro­
gramme sind ihrer Form nach Programmen in Maschinen­
sprache sehr nahe. Andere Arten von Programmiersprachen
sind abstrakter und erzeugen zahlreiche Maschinen-Instruk­
tionen
aus
jedem
Kommando,
das
der
Programmierer
schreibt. Man bezeichnet sie als High-Level-Sprachen (höhere
Sprachen); Beispiele sind BASIC, PASCAL, FORTRAN, COBOL,
PL/1, C und FORTH. Programme zur Übersetzung von Pro­
grammen höherer Programmiersprachen in eine Form, mit der
der Computer arbeiten kann, nennt man Compiler; bei Low­
Level-Sprachen werden die Übersetzer als Assembler be­
zeichnet.
Eigentlich gibt es keinen
Unterschied zwischen
einem Compiler und einem Assembler: sie übersetzen beide
menschliche Programmiersprachen in eine Form von Maschi­
nensprache.
Quell-Code
Objekt-Code
Link-Editor
Lade-Modul
Wenn jemand ein Programm schreibt, bezeichnet man das
Ergebnis als Quell-Code. Nach der Übersetzung des Quell­
codes (durch einen Assembler oder Compiler) nennt man das
Ergebnis häufig
einen
Objekt-Code. Der Objekt-Code ist
Ein Glossar zu Computergrundlagen
291
schon fast betriebsfähig, er muß jedoch noch einer kleineren
Transformation unterzogen werden, die durch einen Link-Editor
(Binder) ausgeführt wird, um ein Lade-Modul zu erzeugen:
Dies ist dann das endgültige, betriebsfähige Programm.
Fehler
Einen Fehler in einem Programm nennt man im Englischen
Fehler­
„Bug" (Wanze), und den Prozeß, solche Fehler ausfindig zu
verbesserung
machen oder zu fixieren, nennt man „Debugging".
(Debug)
Algorithmus
Gewöhnlich gibt es viele Wege, auf denen man mit einem
Computerprogramm ein bestimmtes Ziel erreichen kann. Das
Verfahren, die Formel oder die Methode, die ein Programm
verwendet, ist sein Algorithmus. Für viele Aufgaben - sogar für
so einfache, wie das Sortieren von Daten in alphabetischer
Reihenfolge - gibt es erhebliche Unterschiede hinsichtlich
der Effizienz der verschiedenen Algorithmen; und man sucht
weiter nach immer besseren Methoden.
Variable
Ein Programm arbeitet mit symbolischen Größen, genannt
Typ
String
Variablen. In Wirklichkeit ist eine Variable der Name eines
Datei
Einer Variablen können spezifische Daten zugewiesen oder
Platzes, der Daten eines bestimmten Typs aufnehmen kann.
entnommen werden. Der Zweck der Variablen ist der, einen
Mechanismus für die Manipulation von Daten bereitzustellen.
Variablen haben in der Regel einen festgelegten Typ, aus dem
heNorgeht, welche Art von Daten sie aufnehmen können; z.B.
Integer-Typ (ganzzahlige Werte), Gleitkomma-Zahl (float) mit
einfacher oder doppelter Genauigkeit und String (eine Folge
von Textzeichen). In einem Programm ist eine Datei nur eine
spezielle Variable, die mit einer Disketten-Datei oder einer
anderen Geräte-Einheit, etwa dem Bildschirm, verbunden wer­
den kann.
Menschliche Rollenverteilung
Bei einem Personal-Computer kann eine Person alles erledi­
gen, was getan werden muß. Bei den traditionellen Großcom­
putern gibt es jedoch eine Arbeitsverteilung, die der Arbeit des
Menschen mit dem Computer verschiedene Rollen zuweist.
Der Benutzer von Personal-Computern wird vielleicht über die
Bedeutung der verschiedenen Berufsbezeichnungen etwas
wissen wollen.
Benutzer
Der Benutzer oder End-Benutzer ist derjenige, für den ein
Computer arbeitet.
292
Anhang B
Analysator
Der System-Analysator oder Analysator bestimmt die Einzel­
heiten der Arbeit, die für den End-Benutzer erledigt werden
soll, und entscheidet über die generelle Strategie, wie ein
Computer diese Arbeit ausführen soll.
Programmierer
Der Programmierer wandelt die generelle Strategie des Analy­
sators in detaillierte Taktiken und Methoden um. Dazu gehört in
der Regel das Schreiben und Testen der tatsächlichen Pro­
gramme. Manchmal bleibt jedoch das eigentliche Schreiben
und Testen des Programms einem Codierer überlassen.
Codierer
Der Codierer übersetzt die detaillierten Methoden des Pro­
grammierers in die Programm-Instruktionen.
Operator
Der Operator läßt das Programm auf dem Computer laufen
und erzeugt somit die Ergebnisse, die der Benutzer benötigt.
Daten-Organisation
Datei
Daten werden unterschiedlich organisiert, nämlich abhängig
Satz
davon, wer sie betrachtet. Für den Computer selbst bestehen
Feld
Daten nur aus Bits und Bytes. Für Programmierer, die mit Daten
herummanipulieren, gibt es bestimmte traditionelle logische
Datengrenzen. Eine vollständige Menge zusammengehöriger
Daten nennt man eine Datei (z.B. eine Datei für ein Postver­
zeichnis). Eine vollständige Informationseinheit in einer Datei
nennt man einen Satz oder Datensatz; bei einer Datei für ein
Postverzeichnis wäre die gesamte Information in Zusammen­
hang mit einer Adresse ein Satz. Innerhalb eines Datensatzes
gibt es Felder, die Informationen jeweils eines bestimmten
Typs enthalten; z.B. wäre die Postleitzahl ein bestimmtes Feld
im Adreß-Datensatz aus einer Datei für ein Postverzeichnis.
Logischer
Die Sätze, die ein Programm schreibt oder liest, sind logische
Datensatz
Sätze. Die logischen Sätze werden auf die physikalischen
Physikalischer
Sätze des Speichermediums verteilt; diese werden tatsächlich
Datensatz
von einer Diskette gelesen bzw. auf eine Diskette geschrieben.
Ein Programm arbeitet mit logischen Sätzen, während das Be­
triebssystem alle Übersetzungen ausführt, die zwischen logi­
schen und physikalischen Sätzen erforderlich sind. Bei einer
Diskette wird ein physikalischer Satz Sektor genannt.
Datenbank
Die Ausdrücke Datenbank und Datenbank-Verwaltungssystem
Datenbank­
werden so weitreichend gebraucht und mißbraucht, daß sie
Verwaltungs­
keine präzise Bedeutung mehr haben. Wenn man es mit einer
system
großen komplexen Datenmenge zu tun hat, die über mehrere
Dateien verteilt ist, könnte man dies als eine Datenbank
Ein Glossar zu Computergrundlagen
293
bezeichnen. Ein Datenbank-Verwaltungssystem ist ein Pro­
gramm - in der Regel selbst wieder umfangreich und kom­
plex - , das eine Datenbank steuern und organisieren kann.
Eine Datenbank-Verwaltung in großem Maßstab übersteigt bei
weitem die Fähigkeiten eines Personal-Computers.
Disketten-Vokabular
Sektor
Auf einer Diskette werden Daten auf Sektoren gespeichert, die
Spur
einzeln gelesen oder beschrieben werden können; beim IBM/
Zylinder
PC enthält ein Sektor 512 Bytes. Die Sektoren sind die physi­
Suchen
kalischen Datensätze der Diskette, die Einheiten, die eigent­
lich gelesen oder beschrieben werden. Eine Spur ist die
Menge von Sektoren, die auf einen Kreis auf der Diskette
passen; bei normalen Disketten sind es acht oder neun Sekto­
ren pro Spur; bei Festplatten gibt es bis zu 15 Sektoren pro
Spur. Falls es bei einem Disketten- oder Plattenlaufwerk mehr
als eine Seitenfläche gibt, besteht ein Zylinder aus allen Spu­
ren, die sich im gleichen Abstand vom Mittelpunkt befinden.
Sektoren desselben Zylinders können gelesen werden, ohne
den
Schreib/Lese-Mechanismus
des
Plattenlaufwerks
zu
bewegen. Das Bewegen der Schreib/Lese-Köpfe von der Spur
eines Zylinders auf die Spur eines anderen Zylinders nennt
man Suchen. Dieser Vorgang ist relativ langsam. Es gibt ein­
seitige oder doppelseitige Disketten, d.h. sie können ein- oder
doppelseitig beschrieben werden. Außerdem können Disket­
ten mit doppelter Dichte beschrieben werden, wie normaler­
weise bei unseren PC-Disketten, oder mit vierfacher Dichte
(Disketten mit einfacher Dichte sind bedeutungslos geworden).
Auf einer Diskette mit doppelter Dichte gibt es 40 Spuren, bei
vierfacher Dichte 80 Spuren, also doppelt soviel Speicherplatz.
Normalerweise haben Disketten mit doppelter oder vierfacher
Dichte dieselbe Anzahl von Sektoren pro Spur. Hochkapazi­
täts-Disketten haben dieselbe Spurenanzahl wie Disketten mit
vierfacher Dichte, aber sie gehen noch einen Schritt weiter: sie
packen noch mehr Sektoren in jede Spur, nämlich 15 statt 8
oder 9.
Inhaltsverzeichnis
Eine Diskette benötigt für seine Dateien ein Inhaltsverzeichnis,
(Directory)
das beim IBM/PC Directory genannt wird. Die Kontrolle dar­
FAT
über, welcher Platz auf einer Diskette frei oder belegt ist,
Dateibelegung
geschieht beim IBM/PC mittels der Dateibelegungstabelle FAT
Boot-Record
(File Allocation Table). Der erste Sektor jeder Diskette ist für
das Kaltstart-Programm des Betriebssystems reserviert, für
den sog. Boot-Strap Loader oder Boot-Record. Auf jeder Dis-
294
Anhang B
kette gibt es also vier Sektorenarten: den Boot-Record, die
Dateibelegungstabelle FAT, das Directory und Speicherplatz
(wo Dateien gespeichert werden).
Floppy
Festplatten
Winchester
Wechselplatten
Cartrid ges
Weil eine Disktte biegsam ist, nennt man sie im Englischen
auch F loppy. Eine Festplatte hat einen festen Plattenteller
anstatt des biegsamen Plastik einer Floppy; das harte Material
erlaubt eine genauere Datenspeicherung und deshalb auch
eine höhere Dichte und größere Kapazität. Die Festplatten, die
heutzutage auf Personal-Computern installiert sind, verwenden
ein Verfahren, das man Winchester-Technologie nennt. Des­
halb werden sie auch als Winchester-Platten bezeichnet. Da
Festplatten fest montiert sind und nicht ausgewechselt werden
können (wie Disketten), haben sie auch die Bezeichnung
„Festplatte" erhalten. Außerdem gibt es noch Wechselplatten
(Cartridges), die die Kapazität von Festplatten haben können,
hart ummantelt sind und fast wie Disketten gehandhabt wer­
den können.
Betriebssysteme
Betriebssystem
Ein Betriebssystem ist ein Programm, das den Betrieb eines
Computers
überwacht
und steuert.
Betriebssysteme sind
komplex und bestehen aus vielen Teilen.
BIOS
Driver
Device-Handler
Ein Element eines Betriebssystems ist sein BIOS, d.h. Basic­
Input/Output-System. Das BIOS ist für die Handhabung der
einzelnen Input/Output-Operationen verantwortlich, insbeson­
dere für die Aufgabe, die logischen Datensätze eines Pro­
gramms auf die physikalischen Datensätze eines Peripherie­
Geräts zu beziehen. Auf unterster Detailebene enthält das
BIOS Routinen, die auf die spezifischen Anforderungen und
Belange eines jeden Peripherie-Geräts zugeschnitten sind;
eine solche Routine wird als Driver (dt. Treiber) oder Device­
Handler bezeichnet.
Logisches 1/0
Normalerweise ist ein Betriebssystem in Form hierarchischer
physikalisches 1/0 Ebenen von Dienstprogrammen organisiert. Auf der niedrig­
Dienstprogramme sten Ebene isolieren die Driver das restliche Betriebssystem
von den Einzelheiten der verschiedenen Geräteeinheiten. Auf
der nächsten Ebene werden logische Daten auf physika­
lischen Daten bezogen. Auf einer höheren Ebene werden
grundlegende Dienstprogramme zur Verfügung gestellt, z.B.
Dienstprogramme, durch die Ausgabedaten aus einem Pro­
gramm in eine Datei geschrieben werden können.
Ein Glossar zu Computergrundlagen
295
Lader
Neben der Handhabung von Geräteeinheiten und Daten muß
Verschieben
ein Betriebssystem Programme überwachen, einschließlich
Fehler­
des Ladevorgangs und des Verschieben (das Angleichen der
Behandlung
internen Programm-Adressen an den korrespondierenden ex­
akten Speicherplatz im Arbeitsspeicher) und der Behebung
von Programmfehlern mit Hilfe eines Error-Handlers zur Feh­
ler-Behandlung.
Befehls­
Prozessor
Ein weiteres Element eines Betriebssystems ist der Befehls­
Prozessor, der Befehle entgegennimmt und ausführt, die ein
Benutzer eingibt. Befehle bedeuten in der Regel eine Aufforde­
rung, irgendwelche Dienstprogramme auszuführen. Normaler­
weise beinhaltet eine Betriebssystem Grenzen, die diejenigen
Teile, die für Peripherie-Geräte zuständig sind, von denjenigen
Teilen isolieren, die für einen bestimmten Computer spezifisch
sind. In Abhängikeit davon, welche Dienstprogramm-Ebene
verwendet wird, kann ein Programm z.B. auf einem beliebigen
Computer arbeiten, auf einem Computer, der das MS-DOS­
Betriebssystem verwendet, nur auf einem IBM/PC, der MS­
DOS verwendet oder nur auf einem IBM/PC mit MS-DOS und
einem Monochrome-Bildschirm.
296
Anhang C:
Bedienungsanleitung für die Begleitdiskette zum Buch
„Die verborgenen Möglichkeiten des IBM PC"
überarbeitete und erweiterte Auflage
von Peter Norton
Inhaltsverzeichnis
Einleitung
Was alles auf der Diskette ist ..
. ... ... . ....
. . . 297
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Weitere Informationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
„
.
.
.
.
„
.
.
.
.
.
„
„
„
„
„
„
Wie man die Diskette verwendet
Die vier speziellen Programme
Cl-Landesabhängige Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
301
302
LD-Liste der Inhaltsverzeichnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
SI-Systeminformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Dl-Platteninformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(C) Copyright Peter Norton 1985, 1986
(C) Copyright dt. Version ECO Institut 1987
Alle Rechte vorbehalten.
Kein Teil dieser Veröffentlichung darf ohne vorherige schriftliche Genehmigung
des ECO Instituts kopiert, übertragen, abgeschrieben, in einem Retrieval-System
gespeichert oder in irgendeine S prache oder Computersprache in irgendeiner
Form oder durch irgendwelche Mittel übersetzt werden, weder elektronisch,
mechanisch, magnetisch, optisch, chemisch, manuell, noch anderweitig.
Peter Norton und das ECO Institut übernehmen keine Garantie für auf den Inhalt
dieser Programme und besonders auch keine indirekte Garantie für Lauffähigkeit
und Eignung in besonderen Fällen. Außerdem behalten sich Peter Norton und das
ECO Institut das Recht vor, die vorliegende Ausgabe zu überarbeiten und von Zeit
zu Zeit Veränderungen am Inhalt dieser Programme vorzunehmen, ohne daß
irgendeine Person von dieser Überarbeitung oder Veränderung in Kenntnis gesetzt
werden muß.
Die Norton Utilities sind ein Warenzeichen von Peter Norton.
Bedienungsanleitung für die Begleitdiskette
297
Erlaubnis für die Verwendung dieser Programme:
Die Programme, die in diesem Paket enthalten sind, dürfen nur auf jeweils einem
Gerät benützt werden. Sie dürfen nur für Sicherheitszwecke kopiert werden.
Was alles auf der Diskette ist:
Diese Diskette enthält die Quellcode-Listings, die im Buch „Die verborgenen Mög­
lichkeiten des IBM PC, erweiterte und überarbeitete Auflage" erscheinen, und
zusätzlich mehrere ablauffähige Programme, die Sie beim Kennenlernen Ihres
Computers unterstützen werden.
Die Dateien auf dieser Diskette sind in vier Gruppen unterteilt:
1. zwei Hilfsdateien, die die Programme beschreiben und bei ihrer
Anwendung behilflich sind
2. die 11 längeren Programme, die in Anhang A des Buches erscheinen
3. 17 kürzere Programmteile, die im Text des Buches selbst
vorkommen
4. vier spezielle Programme, die Ihnen helfen, mehr über Ihren
Computer zu lernen, einschließlich zweier Programme aus den Norton
Utilities und zweier besonders für dieses Paket hergestellte Programme.
Eine ausführlichere Beschreibung jedes Punktes finden Sie im Abschnitt „Weitere
Informationen".
Hinweis: Diese Diskette ist in erster Linie dafür gedacht, die Anwendung und Unter­
suchung der Programmlistings aus dem Buch zu erleichtern. Sie unterscheidet
sich völlig vom Diskettenpaket, das die erste Ausgabe dieses Buches begleitete.
Das vorhergehende Paket, das „Access Tools" hieß, enthielt Interface-Unterpro­
gramme für Programmierer. Dieses Paket wurde durch die Weiterentwicklungen
der IBM PC-Familie und des Betriebssystems DOS hinfällig.
Wie man die Diskette verwendet:
Um diese Diskette verwenden zu können, müssen Sie mit dem IBM Personal Com­
puter und seinem Betriebssystem DOS vertraut sein, und Sie müssen wissen, wie
man DOS- und BASIC-Programme laufen läßt.
Dieses Programmpaket läuft auf jedem Modell der IBM PC-Familie, einschließlich
aller völlig PC-kompatiblen Computer. Das Paket funktioniert mit der kleinsten
Computerausrüstung: ein Diskettenlaufwerk, 64K Arbeitsspeicher, ein Standard­
bildschirm und eine DOS-Version.
Kopieren Sie diese Programmdateien auf Ihre eigenen Disketten und heben Sie die
Originaldiskette auf. Für die Anwendung der BASIC-Programme dieses Pakets
müssen Sie sie in den BASIC-Interpreter, BASICA.COM, laden. Die vier ablauffähi­
gen Programme mit den Namen Cl.COM, Dl.COM, LD.COM und Sl.COM erfordern
298
Anhang C
kein weiteres Programm für ihren Einsatz. Das LD-Programm ist für Ihre tägliche
Arbeit mit dem Computer sehr praktisch, besonders wenn Sie eine Festplatte
installiert haben. Ich empfehle Ihnen, eine Kopie von LD.COM dort anzulegen, wo
Sie die verschiedenen Programme (wie die DOS-Kommandos CHKDSK und FOR­
MAT) aufbewahren.
Weitere Informationen
Im folgenden zeigen wir eine vollständige Liste der Dateien auf der Diskette. Sie
werden nach der Liste beschrieben.
READ.ME
DEMO.BAT
LABYRINT.BAS
HEXTABLE.BAS
ALL-CHAR.BAS
REF-CHAR.BAS
BOXES.BAS
MSG-SUCH.BAS
VID-MODE.BAS
COLORTXT.BAS
GRAPHTXT.BAS
COLOR-4.BAS
KEY-BITS.BAS
CH-03-01.BAS
CH-03-02.BAS
CH-06-01.BAS
CH-06-02.BAS
CH-07-01.BAS
CH-07-02.BAS
CH-11-01.BAS
CH-11-02.BAS
CH-13-01.BAS
CH-14-01.BAS
CH-14-02.BAS
CH-15-01.BAS
CH-15-02.BAS
CH-15-03.BAS
CH-21-01.ASM
CH-21-02.PAS
CH-21-03.C
SI.COM
LD.COM
DI.COM
CI.COM
Bedienungsanleitung für die Begleitdiskette
299
Die ersten zwei Dateien auf der Diskette, READ.ME und DEMO.BAT, sollen Ihnen
lediglich bei der Anwendung der Programme helfen. READ.ME enthält eine kurze
Beschreibung der Dateien. DEMO.BAT ist eine Stapeldatei, die nacheinander die
11 Programme aus Anhang A des Buches ausführt. Wenn Sie diese Stapeldatei zu­
sammen mit dem BASIC-Interpreter BASICA.COM und den 11 Programmdateien
auf eine Diskette kopieren, können Sie diese Programme bequem laufen lassen
und mit ihnen experimentieren.
Der Hauptteil dieser Diskette besteht aus den 11 Programmdateien, die in Anhang
A des Buches enthalten sind. Diese Programme demonstrieren verschiedene
Eigenschaften der PC-Familie. Hier folgt ein kurzer Überblick über diese Pro­
gramme.
LABYRINT.BAS
(Einleitung)
Dieses Programm erzeugt ein Labyrinth, das sich einen zufälligen Weg vom
„START" zum „ZIEL" sucht. Es demonstriert die vielfältigen und manchmal ver­
schlungenen Wege, die wir für das Kennenlernen unseres Computers beschreiten
müssen.
HEXTABLE.BAS
(Kapitel 3)
Dieses Programm erzeugt zwei Tabellen für hexadezimale Arithmetik, eine für die
Addition und eine für die Multiplikation.
ALL-CHAR.BAS
(Kapitel 4)
Dieses Programm zeigt den vollständigen PC-Zeichensatz auf Bildschirm.
REF-CHAR.BAS
(Kapitel 4)
Dieses Programm zeigt ebenfalls den gesamten PC-Zeichensatz zusammen mit
den dezimalen und hexadezimalen Codes für jedes Zeichen.
BOXES.BAS
(Kapitel 4)
Dieses Programm demonstriert die Zeichen für Umrahmungslinien, die Teil des PC­
Zeichensatzes sind. Zuerst zeigt es, wie die Rahmen aussehen, anschließend gibt
es die dezimalen Zeichencodes für jedes Zeichen aus.
MSG-SUCH.BAS
(Kapitel 7)
Dieses Programm sucht im ROM-BIOS-Speicher Ihres Computers nach interes­
santen Meldungen. Es braucht einige Zeit, deshalb sollten Sie Geduld haben,
300
Anhang C
wenn Sie alle Meldungen sehen wollen. Wenn Sie die Arbeit des Programms unter­
brechen möchten, können Sie dies durch das Drücken der Ctrl-Break-Tastenkom­
bination erreichen und dann den Befehl SYSTEM eingeben, um das Programm zu
beenden.
VID-MODE.BAS (Kapitel 11)
Dieses Programm demonstriert alle Bildschirmmodi des PC, soweit es die Sprache
BASIC erlaubt, und informiert Sie darüber, welche Modi auf Ihrem Computer ver­
wendet werden können.
COLORTXT.BAS (Kapitel 12)
Dieses Programm zeigt sämtliche Farb- (und Monochrom-) Bildschirmattribute, die
mit Textzeichen benützt werden können.
GRAPHTXT.BAS (Kapitel 13)
Dieses Programm gibt in vergrößerter Form die Abbildungen der PC-Textzeichen
aus, die im Graphikmodus benützt werden. Es benötigt für seine Arbeit keinen Gra­
phikmodus, so daß es auf jedem PC eingesetzt werden kann, auch solchen ohne
Graphik-Bildschirmadapter.
COLOR-4.BAS (Kapitel 13)
Dieses Programm demonstriert die Farben und Operationen des vierfarbigen PC­
Graphikmodus mit mittlerer Auflösung. Man benötigt den Farb-Graphik-Adapter.
KEY-BrrS.BAS (Kapitel 14)
Dieses Programm zeigt und demonstriert die Bits, die die Operationen der Tastatur
steuern und wiedergeben. Sie geben zum Beispiel an, ob eine der Shift-Tasten
gedrückt ist.
Die nächsten 17 Dateien enthalten den Quellcode für die kurzen Programme und
Programmstücke, die im Text des Buches selbst erscheinen. Die Dateien haben
Namen, die angeben, wo sie im Buch zu finden sind. CH-03-02.BAS ist zum Bei­
spiel das zweite Usting des dritten Kapitels. In einigen Fällen können diese Pro­
gramme, so wie sie sind, sinnvoll eingesetzt werden. In anderen Fällen zeigen sie
nur, wie die Programmierung ausgeführt werden sollte. Die letzten drei Beispiele,
CH-21-01.ASM, CH-21-02.PAS und CH-21-03.C sollen lediglich die Form und den
Stil der drei wichtigsten Programmiersprachen demonstrieren. Dies sind die
Assemblersprache, Pascal und C.
Bedienungsanleitung für die Begleitdiskette
Die letzte Gruppe, mit vier Dateien, enthält vier lauffähige
301
Programme, zwei aus
dem Norton-Utilities-Paket und zwei, die speziell für dieses Paket geschrieben wur­
den. Mit diesen Programmen können Sie mehr über Ihren Computer erfahren und
entdecken. Sie werden detailliert auf den folgenden Seiten beschrieben.
CI
-
Landesabhängige Information
Zweck
Listet die landesabhängige Information auf, die DOS unseren Programmen zur
Verfügung stellt.
Format
CI
Anmerkungen:
DOS liefert unseren Programmen eine Möglichkeit, sich automatisch an die ver­
schiedenen Konventionen unterschiedlicher Länder anzupassen. Dieses Pro­
gramm gibt die entsprechende Information aus. Die landesabhängige Information
wird auf zwei Ebenen geliefert. Bei DOS-2-Versionen und späteren kann ein Pro­
gramm die aktuelle landesabhängige Information von DOS anfordern. Bei DOS-3und späteren Versionen kann ein Programm auch den Landescode aus den Codes
einstellen, die der entsprechenden DOS-Version bekannt sind.
Dieses Cl-Programm gibt die aktuelle landesabhängige Information aus und zeigt .
auch alle Codes, die Ihre DOS-Version unterstützt. Hier folgt ein Beispiel dafür, wie
das Cl-Programm diese landesabhängige Information ausgibt.
Code D/T Geld 12,345 1.0 m/d h:m $1? $1.00 12/24 A,B Rsrvd
1 USA $
2 12
$1
,
,
2 24
31 Eur f
$1
,
;
32 Eur F
33 Eur F
39 Eur Lit.
41 Eur Fr
44 Eu.r l.
45 Eur DKR
/
1$
2
24
/
1$
2
24
;
,
/
1$
0
24
;
,
,
,
46 Swe SEK
,
47 Eur KR
,
49 Eur DM
61 Eur $
,
,
,
,
/
/
;
1$
2
24
,
$1
2
24
,
1$
2
24
;
1$
2
24
;
1$
2
24
;
$1
2
24
;
$1
2
24
,
Das erste Feld, Code, zeigt den Landescode, der jedes Land identifiziert. Code 1
wird für die Vereinigten Staaten verwendet.
Das zweite Feld, D/T, zeigt an, welches Format für die Anzeige des Datums benützt
werden sollte. Es gibt drei Standardformate: Der USA-Standard zeigt das Datum als
302
Anhang C
Monat/Tag/Jahr; der Europäische Standard zeigt das Datum als Tag/Monat/Jahr;
der Japanische Standard zeigt das Datum als Jahr/Monat/Tag. Den Japanischen
Standard finden Sie auch bei Schweden verwendet.)
Das dritte Feld, Geld, zeigt das Währungssymbol. Wo es möglich ist, wird ein Wäh­
rungssymbol aus dem Sonderzeichensatz des PC benützt, zum Beispiel das
Britische Pfund, i, und der Französische Franc, f. Bei vielen Ländern wird das
Währungssymbol durch konventionelle Buchstaben des Alphabets dargestellt,
zum Beispiel die Italienischen Lire, Lit., oder die Schwedische Krone, SEK.
Das vierte und fünfte Feld geben an, wie Zahlen angezeigt werden. Unter der Über­
schrift 12,345 ist die Interpunktion zur Abtrennung von Tausendern zu finden. Unter
der Überschrift 1.0 befindet sich die Interpunktion für den Dezimalpunkt.
Das sechste und siebte Feld zeigen, wie Datum und Zeit interpunktiert werden. Un­
ter der Überschrift m/d ist das Symbol für das Datum. Unter h:m ist das Symbol für
die Zeit.
Die nächsten zwei Felder werden für die Währung verwendet. Unter der Überschrift
$1? wird gezeigt, ob das Währungssymbol vor oder nach dem Betrag erscheint.
Unter der Überschrift $1.00 ist die Anzahl der dezimalen Stellen, die mit der Wäh­
rung benützt werden. Im gezeigten Beispiel haben alle zwei dezimale Stellen, au­
ßer bei der Italienischen Lira.
Das nächste Feld, 12/24, zeigt, ob die Zeit in 12- oder 24-Stunden-Notation darge­
stellt werden soll.
Das letzte aktive Feld, A,B, stellt die Interpunktion dar, die für die Unterscheidung
von Punkten in einer Liste benützt wird.
Zusätzlich zur hier gezeigten Information sind noch zehn Byte für weitere Felder
reserviert, die später noch hinzugefügt werden können. Wenn Ihr DOS eine Infor­
mation in diesem Bereich bringt, wird sie unter der Überschrift Rsrvd gezeigt.
DI
-
Platteninformation
Zweck:
Vergleicht und listet die verfügbare Information über eine Platte aus zwei Quellen
auf - die DOS-Treibertabelle und den Boot-Record der Platte.
Format
DI [d:J
Anmerkungen
Programme, wie meine Norton Utilities, die eng mit Platten zusammenarbeiten
müssen, sind gezwungen, wichtige technische Informationen über die Plattenfor­
mate, mit denen sie arbeiten, herauszufinden. Für diese Informationen gibt es zwei
Bedienungsanleitung für die Begeitdiskette
303
Quellen. Eine wird von DOS in Form eines Treibertabelleneintrags geliefert, der die
Platte beschreibt. Die andere befindet sich bei allen Plattenformaten auf dem Boot­
Satz, außer bei Plattenformaten von Vorgängerversionen von DOS 2.00. Dieses Dl­
Programm gibt die gesamte verfügbare Information aus beiden Quellen an, damit
Sie sie untersuchen können. Wo die gleiche Information in beiden Quellen vor­
kommt, wird sie zum Vergleich gezeigt. Das folgende Beispiel stammt von der 20Megabyte-Platte eines PC/AT.
Information von DOS
Information aus dem Boot-Satz
System-ID
'IBM 3.1'
Format-ID Chex)
2
2
F8
Laufwerksnummer
Treiber-ID-Nummer
512
512
Sektorgroeße in Byte
4
Sektoren pro Cluster
4
2
Reservierte Sektoren
1
2
Anzahl der FATs
512
41
10,406
512
Sektoren pro FAT
41
Anzahl der Cluster
Anzahl der Sektoren
1
83
115
2
Hauptinhaltsverzeichniseintraege
41,735
Offset zur FAT
Offset zum Inhaltsverzeichnis
Offset zu den Daten
Sektoren pro Spur
Seiten
spezielle reservierte Sektoren
17
4
17
Die System-ID ist eine 8-Byte lange Beschreibung entweder des Plattenformates
oder der DOS-Version, unter der das Plattenformat eingerichtet wurde. Es erscheint
nur im Boot-Satz der Platte und wird, meines Wissens, für nichts verwendet.
Die Format-ID ist eine Standard-DOS-Kennung für das Plattenformat. Dieses ID­
Byte liegt standardgemäß im ersten Byte der FAT (Dateibelegungstabelle) der
Platte, aber es ist hier auch in den Boot-Satz kopiert worden. Mit diesem Format-ID
kann man das Plattenformat identifizieren, aber nicht jedes DOS-Plattenformat hat
ein einzigartiges ID-Byte. Einige werden für mehrere Formate verwendet.
Die Laufwerksnummer kennzeichnet das Plattenlaufwerk: 0 bedeutet Laufwerk A, 1
Laufwerk B, und 2, in unserem Beispiel, Laufwerk C.
Die Treibernummer gibt an, welcher Software-Treiber das Plattenlaufwerk unter­
stützt. Sie ist ein interner Punkt von DOS und hat nicht direkt mit der Platte oder
dem Plattenformat zu tun.
Die Sektorgröße, in Bytes gemessen,·ist einer der vielen Einträge, die die absolu­
ten Dimensionen der Platte beschreiben (im Gegensatz zur logischen Struktur, die
DOS einer Platte hinzufügt). Die anderen Punkte, die die absoluten Dimensionen
der Platte beschreiben, sind die Sektoren pro Spur und die Anzahl der Seiten, die
im letzten Teil der Liste auftauchen.
304
Anhang C
Die Sektoren pro Cluster geben die Größe der Speicherplatzeinheiten an, die DOS
unseren Dateien zuteilt.
Die Anzahl der reservierten Sektoren hat eine unbestimmte Verwendung. Sie wer­
den oft, wie in unserem Beispiel, eine Diskrepanz zwischen den beiden Quellen
bezüglich dieser Information finden.
Die Anzahl der FATs zeigt, wieviele Kopien von der Dateibelegungstabelle auf der
Platte gespeichert sind. Zwei ist die übliche Anzahl bei physikalischen Platten.
Virtuelle Platten (RAM -Speicherplatten) haben normalerweise nur eine.
Die Hauptinhaltsverzeichniseinträge geben die Kapazität des Standardhauptin­
haltsverzeichnisses an. Daraus kann man die physikalische Größe des Hauptin­
haltsverzeichnisses berechnen, kombiniert mit der Sektorgröße in Byte und der
32-Byte-Größe der Inhaltsverzeichniseinträge selbst.
Die Sektoren pro FAT zeigen die physikalische Größe der Dateibelegungstabelle.
Die Anzahl der Cluster gibt an, wieviele Speicherplatzeinheiten auf der Platte DOS
unseren Dateien zuteilen kann. Wenn es mehr als 4080 sind, muß die Platte ein 16Bit-FAT-Format haben. Unter 4080 wird eine 12-Bit-FAT benützt.
Die Anzahl der Sektoren zeigt die für DOS verfügbare Gesamtanzahl der Platten­
sektoren an, einschließlich sowohl des System- als auch des Datenbereichs der
Platte. Die Anzahl der Spuren oder Zylinder kann daraus errechnet werden, indem
man sie mit den Sektoren pro Spur und der Anzahl der Seiten kombiniert. Diese
Berechnung liefert nicht die gesamte Anzahl der Zylinder, wie sie im vorhergehen­
den Beispiel sehen können. Dies liegt normalerweise an dem für einen Master­
Boot-Satz reservierten Bereich einer Festplatte, der nur als einziger Sektor auf
einer ganzen Spur sein kann. Beachten Sie, daß wir nicht die nötige Information
haben, um die Gesamtanzahl der Zylinder einer Festplatte zu bestimmen, während
man die Anzahl der Spuren oder Zylinder des DOS-Bereiches auf einer Platte
berechnen kann.
Drei Offsetbereiche, Offset zur FAT, Offset zum Inhaltsverzeichnis und Offset zu den
Daten, geben die Anzahl der Sektoren vom Anfang des DOS-Bereiches bis zu
jedem dieser wichtigen Teile auf der Platte an. Unsere Programme können durch
diese Information sicher die FAT und das Hauptinhaltsverzeichnis der Platte finden.
Die speziellen reservierten Sektoren zeigen normalerweise einen Offset zum
Anfang des DOS -Bereichs einer Platte. Wie beim reservierten Sektorenbereich ist
die Verwendung dieses Bereichs etwas unbestimmt. In diesem Beispiel gibt er die
Anzahl der Sektoren an, die vom Plattenbereich für den Master-Boot-Satz abge­
zweigt wurden.
Bedienungsanleitung für die Begleitdiskette
305
LD - Liste der Inhaltsverzeichnisse
Zweck
Listet alle Inhaltsverzeichnisse auf Ihren Platten auf.
Format:
LD [d:
• • •
] [/AJ [/p] [/WJ [/T]
Sie können spezifische Plattenlaufwerke angeben, um sie mit dem Parameter d: zu
durchsuchen, oder die Spezifikation /A, um alle Laufwerke zu durchsuchen. /P legt
eine Pause ein, wenn der Bildschirm voll ist. /W listet Inhaltsverzeichnisse im brei­
ten Format auf. / T listet die Gesamtanzahl und -größe der Dateien in jedem Inhalts­
verzeichnis auf.
Anmerkungen:
LD liefert eine vollständige Liste aller Inhaltsverzeichnisse auf Ihren Platten. Sie
können die Inhaltsverzeichnisse auf einem oder mehreren spezifischen Plattenlauf­
werken auflisten oder alle Laufwerke durch /A ansprechen.
Tips und Vorschläge:
Die Inhaltsverzeichnisliste ist für Sie nützlich, um alle Inhaltsverzeichnisse und Un­
terinhaltsverzeichnisse auf Ihren Platten verfolgen zu können. Besonders hilfreich
ist sie bei einem Festplattensystem, das viele Inhaltsverzeichnisse aufnehmen
kann.
Sie können die Ausgabe von LD in eine Datei umleiten, indem Sie die Standard­
DOS-Methode für die Umleitung einer Ausgabe verwenden. Dann können Sie die
Datei als bequemen Ausgangspunkt für die Erzeugung einer Stapeldatei verwen­
den, die basierend auf Ihren Inhaltsverzeichnissen arbeitet. Das ist eine praktische
Methode, die ich oft verwende.
So wie Sie mit LD eine Liste Ihrer Inhaltsverzeichnisse bekommen, können Sie mit
FF (Auffinden von Dateien) eine Liste Ihrer Dateien erhalten.
LD ist eines von vielen Programmen der Norton Utilities, die besonders nützlich bei
der Verwaltung von Festplattensystemen sind. Zu den weiteren Programmen im
Utilities-Paket, die besonders hilfreich für Festplatten sind, gehören unter anderem
DS (Sortieren des Inhaltsverzeichnisses), FF (Auffinden von Dateien), FS (Datei­
größe) und T S (Textsuche).
Um zum Beispiel ein Listing Ihrer Inhaltsverzeichnisse auszudrucken, müssen Sie
folgendes eingeben:
LD >LPT1:
306
Anhang C
SI - Systeminformation
Zweck:
Zeigt interessante technische lriformationen über I hren Computer.
Format:
SI [/NJ
/N verhindert den Speichertest, der einige Computer unterbrechen kann.
Anmerkungen:
SI-Systeminformation entdeckt und gibt einige technische Informationen über
Ihren Computer aus. Diese Information läßt sich auch praktisch verwenden.
Hier folgen zwei Beispiele für die Vielzahl von Informationen, die SI mitteilt. Bei
einem AT sieht das so aus:
IBM/PC-AT
Built-in BIOS programs dated Tuesday, January 10, 1984
Operating under DOS 3.10
5 logical disk drives, A: through E:
DOS reports 640 K-bytes of memory:
161 K-bytes used by DOS and resident programs
479 K-bytes available for application programs
A search for active memory finds:
640 K-bytes main memory
Cat hex 0000-AOOO>
64 K-bytes display memory Cat hex BOOO-COOO>
Computing performance index relative to IBM/PC: 7.0
So sieht das bei einem 3270 PC aus:
IBM 3270 PC
Built-in BIOS programs dated Monday, November 8, 1982
Operating under DOS 2.10
3 logical disk drives, A: through C:
DOS reports 525 K-bytes of memory:
25 K-bytes used by DOS and resident programs
500 K-bytes available for application programs
A search for active memory finds:
640 K-bytes main memory
Cat hex 0000-AOOO>
16 K-bytes display memory Cat hex BOOO-B400)
16 K-bytes display memory Cat hex B800-BCOO>
4 K-bytes extra memory
Cat hex CEOO-CFOO>
BIOS signature found at hex paragraph COOO
C800 CAOO
Computing performance index relative to IBM/PC: 1.0
Bedienungsanleitung für die Begleitdiskette
307
SI kann besondere Modelle der PC-Familie erkennen, zum Beispiel den PCjr oder
den 3270 PC, aber einige andere Modelle können nicht so genau identifiziert wer­
den. SI kann auch einige PC-kompatible erkennen. Wenn es das Gerät identifiziert
hat, versucht es Erkennungsmarkierungen zu finden und Ihnen zu zeigen, zum Bei­
spiel einen Copyright-Eintrag innerhalb Ihres Computers.
SI meldet die verwendete DOS-Version und die Anzahl der „logischen" Plattenlauf­
werke, die DOS steuert. Das sind oft mehr, als das Gerät in Wirklichkeit hat.
SI berichtet über den Arbeitsspeicher Ihres Computers, wobei es zwei Zugriffe
benützt. Der erste basiert auf einer Information, die DOS liefert. Sie zeigt den ge­
samten Speicherumfang, wieviel von DOS und residenten Programmen (wie Side­
kick oder Prokey) belegt wird und wieviel für unsere Anwenderprogramme übrig­
bleibt.
Die zweite Meldung über den Speicher basiert auf einem Live-Test, der durch das
Untersuchen aller Speicherbereiche ausgeführt wird. Einige Computer sperren und
melden einen PARITY-FEHLER, wenn der Test durchgeführt wird. Dies fügt Ihrem
Computer keinerlei Schaden zu, aber es erfordert, daß Sie Ihren Computer aus­
schalten und neu starten müssen. Der Zusatz /N ermöglicht Ihnen, diesen Test zu
übergehen. Der Live-Speichertest berichtet über drei Speicherkategorien: den
Hauptspeicher, der von unseren Programmen benützt wird, den Bildschirmspei­
cher, der vom Bildschirm verwendet wird, und den zusätzlichen Speicher, der für
spezielle Anwendungen eingesetzt wird.
Ihr Computer kann einige Zusätze in seinem eingebauten Steuerprogramm, dem
ROM-BIOS, haben. Falls SI einen dieser Zusätze entdecken kann, meldet es das.
Drei davon können Sie im zweiten Beispiel unten aufgelistet sehen. Diese Informa­
tion ist jedoch nur von technischem Interesse.
SI endet mit einem Ausführungsindex. Dieser Index liefert eine grobe Anzeige der
relativen Geschwindigkeit bei Berechnungen und beim Speicherzugriff. Um den
Index auszudrücken, mißt SI, wie lange es für die Ausführung einer Reihe von
Berechnungen braucht. Der Index wird dann auf einen Standard-IBM-PC bezogen
angegeben. Ein Index von 2.0 bedeutet, daß die Berechnungen doppelt so schnell
wie bei einem Standard-PC ausgeführt werden. Abhängig von den verwendeten
Methoden kann der Index variieren, aber er liefert ein ungefähres Maß für die
Geschwindigkeit Ihres Computers. Dieser Index basiert nur auf einer Menge von
Routineberechnungen. Er bezieht die Plattenverarbeitung nicht mit ein, die ein
Hauptfaktor der gesamten Leistungsfähigkeit Ihres Computers ist.
Tips und Vorschläge:
SI kann sich durch die Lieferung bestimmter wichtiger Informationen über die
Computer, mit denen Sie in Berührung kommen können, als nützlich erweisen. Bei
allen Computern, mit denen Sie oft arbeiten, kann Information über die System­
speicherverwendung hilfreich sein für die Entscheidung, wieviel Speicher für Plat­
tenpuffer oder für einen erweiterten Tastaturarbeitsbereich reserviert werden soll.
308
Anhang C
Wenn Sie sich mit dem Gesamtaufwand für die residenten Programme oder Plat­
tenpuffer beschäftigen, können Sie leicht nachsehen, wieviel Speicher sie bele­
gen, indem Sie die DOS-Speichermeldung von SI betrachten. Prüfen Sie zuerst,
wieviel Speicher gerade benützt wird. Starten Sie Ihren Computer dann neu ohne
die Programme oder Puffer. Fügen Sie sie nach und nach hinzu und prüfen Sie
jeweils den Aufwand mit SI.
Bei einem Computer, der Ihnen nicht vertraut ist, kann SI ebenfalls sehr hilfreich
sein, indem es Ihnen schnell die Anzahl der Plattenlaufwerke, den verfügbaren
Speicherumfang und die relative Arbeitsgeschwindigkeit zeigt.
309
Tastatur 181
370 6
Attribute 114, 131
Register
Abbildung eines Platten­
speicherbereichs 260 f, 261
Absolute Adresse 81
Adapter 49-52
Addition 57, 58, 80
Adresse 78, 80
Adressbereich 84-89, 91
ALL-CHAR-Programm 31,
268-269
Allzweckregister 66, 241
ALT-Zahlen-Trick 185
American Standard Code for
Information lnterchange,
siehe ASCII
Anführungszeichen 35
ANSl.SYS-Treiber 224
Anwender-Speicherbereich 85
Anwenderprogramme 14, 74
Anwendersprachen 246
Apage 161
Arithmetik 10, 21, 58-61, 80
87-Coprozessor-Chip 61-64
ASCII
Textdateien 118-120
Zeichen 31-33
Codes 167
Erweitert 40-41
Normal 33-36
Steuerzeichen 36-39,
40-41, 118, 119, 150
Assembler 248, 249
Assemblersprache 57, 249
Assemblerlistings 249, 250 f
Befehle 65
Programm 239-241
Unterprogramm 253
Assemblierung 246
Asynchroner Kommunikations­
adapter 192
AT
3
Bus 48
Eigenschaften
Systemplatine
5
55 f
Archivierung
Byte, 152
131
Auflösung 139
Ausländische Zeichen 35, 40-41
Auslagerung von Daten 93
Back-words 79
Backup-Programm 131, 263
Base Pointer (BP) 67
BASIC Input/Output Services,
siehe BIOS, ROM-BIOS
BASIC 242
Baudrate 193
Bausteine
8087 27
8088 57
80286 8
80287 27
Wichtige 53-56
Bedingter Sprung 59, 60
Befehl(e)
Typen 227
Verarbeitung 220, 226-229
Begrenzungszeichen 29
Berechnungen 24-25
Bernoulli Box 122
Betriebssysteme 219
Bibliotheken 251
Bildelemente, siehe Pixels
Bildschirm 44, 136
Dienstprogramme 212, 213-214
Funktionsweise 136-139
Randfläche 138
Bildschirmadapter 49-51, 137,
140-146, 152-156, 166-167
Bildschirmmodi 136, 137, 146-147
Demonstrationsprogramm
274-276
Überblick 139-146
Bildschirmseiten 159-162
Bildschirmspeicher 88, 136-137,
152-156, 160, 175
Binär 10, 19, 50
Binden 251
310
Register
BIOS 15,210
Arbeitsprinzipien und Geräte­
probleme 210-211
Dienstprogramme 212-218
siehe auch DOS-BIOS, ROM-BIOS
Bits 16,17,19, 23
Manipulierende Operationen 176
Blinken 165
Boot, Boot-Satz 112,126,207
Bus 48-49,65
Bus-Controller-Chip 55
Dateiname-Erweiterungen 116-117
Dateioperationen 235
Dateisteuerblock (FCB) 234
Busanschlüsse
Byte 16,17
DEBUG-Befehle 146,147
DEBUG-Programm 255,256-259
C-Sprache
47,48
242, 244 f-245 f, 245,
248,249
Cartridge disks 107
Code,Codierung 59,156
COLORTXT-Programm 276-277
COM-Programme 226,227
COMMAND.COM 257
Compaq Computer Corporation
2,8,44
Bildschirmadapter 141
Compaq Plus 2,5
DeskPro 2,5,9
Portable 286 5,9
Compiler 247-248, 253
Compilierung 246,251
Computer-Komponenten 11-15
Coproprozessor(en) 27,53,61
87-Chip 61-64
CP/M 220, 221, 231,233
CRT, siehe Kathodenstrahlröhre
CT RL-NUMLOCK 183
Cursor 156
Graphik 165
Data General One (DG-1) 6
Data lnterchange File (DIF) 120
Datei-Dienstprogramme 234
Dateiattribut 114, 130
Dateibelegungstabelle (FAT ) 113,
114,115, 126, 128-130
Dateien, Inhalt 117
Dateiformate 116-117
Dateiname 130
Daten 13,16
Änderung 263
Untersuchung 263
Datenausgabe 263,264
Datenbereich 132-133
Datenformate, siehe Dateiformate
Datumseintrag
dBASE 241
90
Dehnungskerben 103
Demodulieren 194
Dezimalzahlen 10,18,27, 31,58
Konvertierung in hex 22-23
Dienstprogramm-Verwaltung
207-208
Direct Memory Access (OMA) 55
Disk cartridge 51
Diskette(n) 100
Formatierung 103-106
Schutzhülle 103
Diskettenlaufwerk 51,103
Division 59
DMA siehe Direct Memory Access
DOS 98,108,122,219,226,
231,252
ASCII-Textdateien 118-121
Befehlsverarbeitung 226-229
Dienstprogramme und Philosophie
231-237
Eigenschaften 219-220
Geschichte und Konzepte
220-222
Installierbare Treiber und flexible
Betriebsmittel 223-224
Programme 263
Stapelverarbeitung 229-230
Visual shells 224-225
DOS-BIOS 203,232
DOS-Platte 108
Abgetrennte Plattenbereiche 124
Dateiformate 116-117
Sicht und Formatierung 108-112
Struktur 112-116
Register
Drucker
32,190,194, 233
Codes
39
233
Parallele Schnittstelle
Formatierung
64-66,180,190,
203-204
EGA,siehe K ombinierter Graphik­
Adapter
Eingabe/Ausgabe
11
Dienstprogramme
Geräte
12
93
261
Erforschen und Experimentieren
255-256
Arbeiten mit DEBUG
Arbeiten mit NU
259-264
Erweiterungsfelder
130
Erweiterungskarten
63
Europäische Sprachen
Externe Befehle
40
227
140-144,151,152,153,154,156,
157,159,160,161,167,169,171,
212,214
FAT
FDC
143
siehe Floppy Disk Controller
124
Fehlerbehandlung
208
Fehlermelde-Codierung
Flag(s)
Flippies
60
64K-Grenzen
277-278
82-83
44,156
Hauptkomponenten
Tricks
44-49
72, 73, 207,208
Multi-tasking
9
198-202
53-56
Zusätze und Adapter
49-53
Hauptinhaltsverzeichnis
113,114,130
Hercules Graphik-Adapter
50,142,143,
145,153,169,174,176
19-23
Hidden-Dateien
Hilfsprozessoren
267-268
114
131
siehe Coprozessoren
Hochauflösender Modus
144,171
240,241
Personalcomputer
Floppy Disk Controller (FDC)
siehe PC
Quietwriter,32
ID-Code
67-68
103
PD765,56
168-174
GRAPHT XT-Programm
IBM
193
5,51-52,106-107,123
Flag-Register
164-168
Zusammenfassung
Höhere Programmiersprachen
91
Festplatte
174-178
Funktionsweise
Hidden-Attribute
siehe Dateibelegungstabelle
FE-Code
Details
HEXTABLE-Programm
168-174
FDISK-Programm
41-43
139-140,143,144,164,
213
Hexadezimal
Farbe,140,165
Farblose Modi
Graphikmodi
Wichtige Bausteine
Farb-Graphik-Adapter (CGA), 49,
Fähigkeiten
26-27,62
283-295
Interrupts
227, 228,229
252
76
Hardware
46,49-53
ESCAPE-Anweisung
EXE-Programme
256-259
47
75, 92
Getrennte Compilierung
Graphik-Zeichen
ROM-BIOS
Einzelne Dateiabbildung
Geschützter Modus
Glossar
233-234
siehe auch BIOS
235
Geschlossenes System
Gleitpunkt
233
Einlagerung von Daten
Gerätesteuerungs-Dienstprogramme
Gigabyte
13-14,233
Operationen
110-112, 216
190
siehe Eingabe/Ausgabe
E/A-Kanäle
Format(e),nichtstandardgemäß
133-135
Dienstprogramme
E/A
311
90-91
Informations-Dienstprogramme
Initialisierung
217
191,205,206
Installierbare Gerätetreiber
lnstruction Pointer
66
223-224
312
Register
lntegers 23, 24
Intel
8086-Familie 7, 9, 57
8088-Mikroprozessor 7, 8
80186-Mikroprozessor 8
80188-Mikroprozessor 8
Interne Befehle 226
Interpretation 246-248
Interpunktionszeichen 33
lnterrupt(s) 74, 217-218, 219, 232
Interrupt-Vektor-Tabelle 84, 87
Interrupt-Verwalter 72-74
Joysticks
199-200, 201
Kassettenband-Interface 199, 216
Kathodenstrahlröhre (CRT ) 6845, 56
KEYBITS-Programm 183, 184, 186,
281-282
Kilobyte (K) 18-19
Klicken 195
Kombinierter Farbbildschirm 173
Kombinierter Graphik-Adapter (EGA)
50, 142, 144, 145, 151, 153, 159, 160,
169, 170-171, 173, 177-178
Kommando-Interpreter 228
Kommunikation 39, 65, 190
Parameter 193
Serielle Schnittstelle 192-194
Konfigurationsdatei 223
Kopierschutz
133
LABYRINT-Programm
265-267
Leerzeichen 32 f, 33, 34 f, 35-36
Lichtgriffel 200-201, 213
Logische Formatierung 110-112
Logische Operationen 59
Lotus 1-2-3 28, 146
Magnetische Aufzeichnung 98-99
Maschinensprache 57, 238, 239,
249
Maus 200-202
Microsoft's Window 224
Mikrocomputer 6
Mikrodiskette 105, 106
Mikroprozessor 11, 12-13, 53, 57
Ausführbare Operationen 57-61
Interrupts 69-7 2
Speicher, Ein-/Ausgabekanäle,
Register und Stacks 64-69
87-Chips 61-64
286-Mikroprozessor 75-77
siehe auch Intel
MODE-Kommando 147
Modell eines Computers 10-11
Modulieren 194
Monochrom-Adapter 49-50, 140,
141, 142, 143, 144, 145, 152, 153,
157, 158, 159, 160, 161, 169,
173-174, 212, 214
Monochrom-Bildschirm 145, 200
Monochromer Graphikmodus
145-146, 173
Monochromer Textmodus 144
MOUSE.SYS-Treiber 223-224
MSG-SUCH-Programm 90, 273-274
Multi-tasking 76
Multifunktionskarten 52
Multiplikation 59
Mutterplatine 45
Netzgerät 44, 45, 46
Night Mission Pinball Programm
187
Norton Utilities Programme 245
NU-Programm 255-256, 259-264
Nullen 32 f, 33, 34 f, 35-36
Numerischer Coprozessor
61, 62
27, 53,
Numerischer Datenprozessor (NDP),
siehe Numerischer Coprozessor
Objektcode 249, 250, 252, 253
Objektbibliothek 253
Overscan 138
Paragraphgrenzen 81
Parallele Schnittstellen 52, 190-192,
217
Parität 193
Pascal 241, 242-243, 245, 248
PAUSE-Taste 38
Register
PC
Ableger 1,6
Eigenschaften 5
Familiengeschichte 1-3
Stammbaum 4 f
Systemplatine 54 f
Variationen 6
3270 6
PCjr 2, 4
Besondere Töne 198
Bildschirmadapter 153
Bus 48
Eigenschaften 4
Graphikmodus 173,176
Tastatur 181, 182
PD765 Floppy Disk Controller (FDC)
56
Peripherie-Geräte 12
Pixels 139, 164,169
Platte(n) 5, 98
Detaillierte Struktur 126-133
Dienstprogramme 215-216
DOS,siehe DOS-Platte
Eigenschaften und abgetrennte
Speicherbereiche 122-126
Formatierung 110-112
Größe von Plattenbereichen 132 f,
133-134
Nichtstandardgemäße Formate und
Kopierschutz 133-135
Speicherung 5,12,14, 98-102
Typen 102-107
Zugriffsverfahren 98-102
Plattendatenausgabe 262, 262 f
Plattenlaufwerke 46
Adapter 51
Typen 51-52
Plattenpuffer 223
Plotter 194
POST-Routine 258
PPI,siehe Programmierbares
Peripherie-Interface
Praktische Konvention 165
Print-Screen-Dienstprogramm
214-215
Professional-Graphik-Adapter
142,169
313
Programm(e) 13,14
Listings 265-282
Steuerung 220
Übersetzen 246-251 f
zusammenfügen 251-254
Programmierbares Peripherieinterface (PPI) 56
Programmiersprachen 238-246
Programmübersetzung 246-251 f
Programmzähler 66-67
Prokey 187, 188, 236
Prozessor,siehe Mikroprozessor
Puffer, Platte 223
Quad-Density-Disketten
Quellcode 249
Quellindex (SI) 67
100
Random Access Memory (RAM)
85-86,99
Random-Dateien 117
Raster scan 137
Read Only Memory (ROM)
15
Read-Only Memory Basic
Input/Output System,
siehe ROM-BIOS
Reeller Modus 75,92
Reentrantfähige Codierung 210
REFCHAR-Programm 31, 269-270
Register 66-68
RESTORE-Programm 263
Restsektoren
RGB-Monitor
132-133
141
ROM (Read Only Memory) 15
ROM-BIOS 15, 168,203, 210,231,
233,258
Arbeitsweise 205-209
Dienstprogramme 154-156
Erweiterung 206-207
Ideen 203-204
Programm 89-90, 146, 166,167
Tastatur 179-186, 187-188
Tastatur-Interrupt-Verwalter
180,181,182
ROM-Erweiterungsbereich
RS-232-Kommunikationen
88
193
314
Register
Scan codes 180 f
Schleifen 60, 24 7
Schnittstelle 14
Schreibschutzkerbe
103
Schutz 76
SCREEN-Kommando 147
Scrollen 213
Segmentierte Adressen 80-82
Segmentregister 66, 81-82
Seitenfehler 93
Seitenrahmen 95
Sektoren 100f, 101, 108-109
Serielle Schnittstelle 52, 192-194,
216, 233
Sidekick-Programm 31, 187, 188,
236
Software 70, 71, 179
Spalten-Modus 143
Speicher 11, 12, 13-14, 49, 64, 72
Ausgabe 88-89, 136-137,
152-159, 160, 175
Dienstprogramme 235-236
Organisation 84-91
Segmentierte Adressen 80-82
Überblick 78-80
Unterer Bereich 146
Virtuell 9, 76, 91-94
Speicherbankfunktionsweise
174-176
Speicherbankumschaltung 94-96
Speicherbereichsgruppen 113, 128
Speichererweiterung 76, 91-94, 95
Speichermodelle 83
Speicherzusatz 95-96
Spur 100-102, 108
Stabiles Phosphor 200
Stack(s) 66, 68-69
Stacksegment-Register 66
Stapeldateien 116, 229
Stapelkommandos 226, 229
Starting cluster number 114
Steckplätze, siehe Busanschlüsse
Steuerzeichen 36, 37, 120
String 28-29
Subtraktion 57, 58
System-Attribute 114
System-Dateien 131
Systemeinheit 44, 45, 46, 46 f
Systemformatierte Platte 113
Systemplatine 45
Systemprogramme 14, 15, 74
Tabellenkalkulation
61, 118, 246
Taktgenerator 54
Tastatur 44, 179, 219, 233
Dienstprogramme 216-217
Funktionsweise 179-186
Tricks 186-188
Tastatur-Interrupt-Verwalter 180, 181,
182
Tastaturklicker 195
Telefone 194
Temporäres Realformat 62
Test(s) 59
Textausgabe 166-168
Textdateien, ASCII 118-120
Textdaten 28, 39
Textmodus 139, 140, 144, 149, 164
Beschreibung 149-152
Details 152-159
Tricks 159-162
Textverarbeitungsprogramme
Textzeichen 213
Timer-Chip 54, 197-198
Töne 195-198
TopView 224, 225
Tragbare Geräte 6, 44
28
Transzendentale Rechenarten
Turbo Pascal 248, 252
62
UCSD p-System
221
Überprüfung 215-216
Uhr 75, 217
UNIX 222, 231
Unterbrechungen 55
Untergeordnete Inhaltsverzeichnisse
116, 131-132
Unterprogramme
VDISK 92
VDISK.SYS-Treiber
251-254
223, 224
Versetzte Addition 80-81
VID-MODE-Programm 274-276
Video-Controller 49
Register
Virtueller Speicher
9,76,91-94
Visual shells
224-225
Vorzeichenflag
Vpage 161
60
Wiederholungen 59
Window(s) 95, 96f
Wissenschaftliche Zeichengruppe
43
Wort 17-18
Größe
18
Speicherung
79-80
XENIX 222,231
XT 2, 5,48
370,6
Zahlen 10; 18, 58
Doppeltgenau 24,27
Einfachgenau
24, 27
Erweiterter Bereich
Negativ 24-25
Standard
23-25
Zahlen mit Vorzeichen
Zeichen
Attribut
25-27
58
149-150
Ausgabe
214
Position
250-251
Zeichen für Umrahmungslinien
41,42f
Programm
270-273
Zeichenbytes
28
Zeichensatz 31-33,149
ASCII,siehe ASCII-Zeichen
Zeichensatzgenerator
158
Zeichenstring
78
Zeigegeräte
201-202
Zentraleinheit (CPU)
11
Zero flag
60
Zielindex (DI) 67
Zusätze
49
315
Das Betriebssystem
MS-DOS und PC-DOS
mit vielen Beispielen
und Erklärungen
Von Peter Norton. Reihe: PC professionell- Arbeitsplatzrechner
in Ausbildung und Praxis. Coedition Carl Hanser Verlag/Pren­
tice-Hall International. 277 Seiten, zahlreiche Bilder. 1985.
Kartoniert. ISBN 3-446-14219-3
Der Autor, der über eine jahrzehnte­
lange Computererfahrung verfügt,
gibt mit diesem Buch vor allem dem
Knfänger, aber auch dem Computer­
Profi eine Einführung in die Arbeits­
weise des Betriebssystems MS-DOS
(Microsoft Disc Operating System),
mit dem z.B. der IBM PC aber auch
zahlreiche andere weitverbreitete Mi­
crocomputer arbeiten.
Anhand vieler anwendungsorientier­
ter Erklärungen lernt der Computer­
neuling das Betriebssystem seines
Microcomputers verstehen und mit
ihm umzugehen. Er erhält gleichzei­
tig eine Vielzahl nützlicher Hinweise
und Tricks für seine praktische Arbeit
am Computer.
Bei seinen Ausführungen geht der
Autor nicht auf alle technischen Ein­
zelheiten ein, sondern er möchte
vielmehr den Leser in die Lage verset­
zen, spezielle Computer-Handbücher
zu verstehen und ihm so den Einstieg
in den Umgang mit MS-DOS erleich­
tern.
Das Buch Ist leicht verständlich ge­
schrieben, enthält ein Glossar mit
wichtigen computertechnischen Be­
griffen und eignet sich so hervorra­
gend für den Computerneuling als
praktisches Nachschlagewerk für die
tägliche Arbeit mit dem Personal
Computer.
Carl Hanser Verlag
Postfach 86 04 20,
8000 München 86
PC
professionell
Arbeitsplatzrechner in
Ausbildung und Praxis
Herausgeber: Prof. Dr.-lng.
Werner Heinzel, Fulda
In dieser Reihe sind bereits erschienen:
Banahan/Rutter
UNIX - Lernen. verstehen, an­
wenden
Bradley
PrQgrammieren in Assembler für
die IBM Personal Computer
Feuer
Das C-Puzzle Buch
Germain
Das Programmierhandbuch für
den IBM PC und XT
Gillner
Datenbanken
auf Arbeitsplatzrechnern
Haugg/Omlor
LISP auf PC's
Heinzel
Arbeitsplatzrechner
Hörmannseder/Mühlbacher
Modula-2 auf DOS
Joepgen
Turbo-Pascal
Kernighan/Pike
Der UNIX-Werkzeugkasten
Kernighan/Ritchie
Programmieren in C
Meißner
Arbeitsplatzrechner im Verbund
Norton
MS-DOS und PC-DOS
Norton
Die verbo�nen M�lichkeiten
des IBM PC
2. Ausgabe, völlig neu.
Nortons neues Insider-Buch
Partosch
PASCAL auf PC
Pomberger
Lilith und Modula-2
Schirmer
Die Programmiersprache C
Schreiner/Friedmann
Compiler bauen mit UNIX
Shoup
Numerische Verfahren für
Arbeitsplatzrechner
Wolfe/Koelling
BASIC-Programme aus Natur­
wissenschaft und Technik
Carl HanserVerlag, 8000 München 86
A
Die deutsche Version der PROGRAMMING ACCESS TOOLS von
PETER NORTON ist das begleitende Diskettenpaket zu Peter Nortons
Buch: DIE VERBORGENEN MÖGLICHKEITEN DES IBM PC
Das Diskettenpaket PROGRAMMING
ACCESS TOOLS enthält:
•Sämtliche Programme, die im Buch ent­
halten sind - insgesamt 17 Programme.
•Zwei Programme aus den berühmten Nor­
ton Utilities
SI-System Information: zeigt interessan­
te und nützliche Informationen über den
Computer, einschließlich seiner Rechen­
geschwindigkeit
LD-List-Directories: findet und zeigt
sämtliche Inhaltsverzeichnisse auf Ihren
Platten
•Zwei einzigartige Informationsprogramme,
die sonst nirgends verfügbar sind
Dl-Disk Information: analysiert Informa­
tionen über Platten
Cl-Country Information: zeigt nationali­
tätsabhängige Informationen, die DOS
und unsere Programme verwenden, um
sich an die Standards der verschiedenen
Länder anzupassen.
PC
Bestellkarte
Hiermit bestelle ich
Stück der deutschen Version der Diskette
PROGRAMMING ACCESS TOOLS VON
PETER NORTON,
zum Preis von je DM 148,20
Hiermit bestelle ich
_
_
Stück der neuesten
Version der NORTON UTILITIES,
zum Preis von je DM 285,lch zahle
1 1 per Nachnahme,
l l per beigelegtem Scheck,
1 l gegen Rechnung nach Lieferung
(nur Inland)
Ort
Datum
Unterschrift
Dte angefuhrten Preise enthalten DM 5,- Versand- und
Verpackungskosten. sowie 14 % MwSt
professionell
Fundierte Anwenderbücher
von kompetenten Autoren
Sehr geehrter Leser,
Welche Programmiersprache verwenden
Sie haben soeben ein Hanser Fachbuch
Sie hauptsächlich?
gekauft. Wir wünschen Ihnen damit viel
Freude beim Lesen und Erfolg beim
Durcharbeiten.
Um unser PC-Fachbuchprogramm ge-
Für welche Anwendungsgebiete setzen Sie
zielt weiter ausbauen zu können, brauchen
Ihren Personal Computer hauptsächlich ein?
wir Ihre Hilfe. Bitte beantworten Sie uns
deshalb folgende Fragen:
Aus welchem Buch haben Sie diese Karte
entnommen?
Autor/Titel
____________
Über welche Gebiete sollte es mehr oder
neue PC-Fachbücher geben?
Wo haben Sie es gekauft?
D
Buchhandlung
D
Computer-Shop
D
Kaufhaus
Welchen Personal Computer benutzen Sie?
D
Bitte senden Sie mir regelmäßig Informa­
tionen über Ihre PC- und EDV-Literatur zu.
Bitte hier und auf der Rückseite das
Betreffende ausfüllen, bzw. ankreu­
zen, die Karte frankieren und heute
noch absenden, damit Sie keine
wertvolle Programmierzeit verlieren!
Bitte
freimachen
Postkarte
Absender:
Name:
Vorname:
ECO-INSTITUT
EICHELBERG 8
Firma:
Straße/Postfach
PLZ/Ort
8411
PIELMÜHLE
Telefon
PC
Fachbücher
von Hanser
Bitte
freimachen
Postkarte
Absender
Name
Vorname
Beruf I Branche
Carl Hanser Verlag
Postfach 86 04 20
Straße I Postfach
PLZ/Ort
Carl Hanser Verlag,
Postfach 860420, 8000 München 86
•
-
8000 München 86
Der Hit 87: Peter Nortons neues Insiderbuch für die
IBM PCs.
•
Dies ist der Beginn einer fantastischen Entdeckungs­
reise in die Gehelmnlase, WUnder und Rätsel des IBM PC,
seiner Familie und seiner Verwandten
.
.
.
•
So begrüßt Peter Norton Sie zu seiner von Grund auf
vollltändlg neu erarbeiteten zweiten deutschen Ausgabe
des berühmten Buches: .Inside the IBM � .
Diele auch wesentlich erweiterte Neuausgabe entspricht
damit dem neuesten Stand der Mikrocomputer-Techno­
logie und -Programmierung.
Das brillant geschriebene Buch führt den Leser mit ge­
radezu ansteckender Spannung dazu, den IBM PC wirk­
llch vollstlndig zu vemehen.
Der Benutzer der diesea Buch durchgearbeitet hat,
gehört so zur eingeweihten Gesellschaft der Insider, die
Ihren IBM PC vollständig beherrschen und ausreizen
können.
Zu diesem Buch gibt es auch eine völlig neue Begleit­
diskette mit den .Programming Access Tools•. Eine
Bestellkarte für dleee Begleltdlskette und für die .Norton
Utll1t1es• ist am Ende des Buches eingeheftet.
Herunterladen