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.