E-Books
MS-DOS Kurs
5. BIOS und dirketer Hardwarezugriff
Während das DOS beim Booten geladen wird, enthält jeder Rechner im ROM auch eine Reihe
hardwareabhängiger Funktionen, das BIOS. Die meisten schon seit dem XT vorhandenen BIOS-Funktionen liegen auf den Interrupts 10H..1FH,
fein säuberlich nach Geräten (Tastatur, Bildschirm, Laufwerke, Schnittstellen etc.) getrennt (Siehe Tafel 3 im Anhang). Einige der
ursprünglichen Funktionen haben inzwischen ihre Bedeutung verloren und wurden neu belegt, etwa der Interrupt 15H, der früher für
die Ansteuerung von Kassettenlaufwerken benutzt wurde und seit dem AT ein Sammelsurium erweiterter Funktionen (z.Bsp. Ansprechen des Extended
Memory) beherbergt. Für weitere neue Aufgaben wurden aber auch neue Interrupts oberhalb von DOS belegt (33H = Maussteuerung, 67H = EMS-Verwaltung).
Eine Vollständige Darstellung der DOS- und BIOS-Funktionen ist nicht nur sehr umfangreich, sondern auch wenig systematisch, weshalb entsprechende
Programmiertricks auch ein unerschöpfliches Reservoir für Computerzeitschriften darstellen. Der direkte Aufruf einer BIOS-Funktion ist fast
immer mit dem oben beschriebenen DOS-Aufruf identisch, nur das nicht Interrupt 21H, sondern einer aus dem BIOS aufgerufen wird.
Eine Funktion, die im BIOS zur Verfügung steht, aber nicht im DOS, wäre die Einstellung des Cursors. Beispielsweise könnte man ihm eine
neue Form verpassen. Im Interrupt 10H, der für den Bildschirm verantwortlich ist, kann unter Funktion 1 die Form des Cursors festgelegt werden. Zumeist ist
er ja ein einfacher Strich; lassen Sie uns doch ein ausgefülltes Kästchen daraus machen. Im Register CX ist dazu die unterste und die oberste Zeile
eines Zeichens anzugeben, die der Cursor ausfüllen soll. In seiner Normalform nimmt er nur eine Pixelzeile ein, reicht also von 1 bis 1.
Wir werden ihn von 1 bis 15 stellen:
USES Dos; |
VAR Regs: |
REGISTERS; |
|
BEGIN |
|
Regs.AX:=$100; |
|
Regs.CX:=$0115; |
|
Intr($10,Regs); |
END |
Diese Funktion wird auch bevorzugt dafür verwendet, um den Cursor in Menüsystemen ganz auszublenden, indem als "untere" Zeile
15 angegeben wird.
Zum Schluß wollen wir uns noch ansehen, wie sich die Hardware ohne jegliche Hilfsmittel direkt ansprechen läßt, und ein Beispiel dazu wäre
das Lesen oder Schreiben im CMOS-RAM. Jeder AT besitzt einige Bytes batteriegepufferten statischen RAM, in dem seine Konfiguration abgespeichert wird
(was beim XT mit Steckbrücken auf den Leiterplatten praktiziert wurde) und die Zeit weitergezählt wird, wenn der Rechner abgeschaltet ist.
Einige Angaben aus dem CMOS-RAM kann man auch über DOS-Funktionen erlangen - einige aber auch nicht. Für den CMOS-RAM sind zwei Ports zuständig, von
denen der eine (70H) der Auswahl der entsprechenden Speicherzelle dient und der andere (71H) dem Lesen oder Schreiben des entsprechenden Wertes. Turbo-Pascal kann dafür
die Funktion Port, mit der gelesen und geschrieben werden kann.
In der Zeitschrift "Mikroprozessortechnik 4/91, Seite 36", können Sie genaueres dazu nachlesen. Eine praktische Anwendung wäre das Auslesen des gesamten
CMOS-RAM Byte für Byte und das Speichern in einer Datei, für den Fall, daß die Eintragungen einmal zerstört werden.
Ein Beispiel für ein Gerät, für das man auf das direkte Programmieren der Hardware angewiesen ist, stellt der Joystick dar, der vom Betriebssystem in keiner
Weise unterstützt wird. Will man ihn für ein Spiel nutzen oder für die Bedienung eines Menüsystems einsetzen, so ist man auf die Abfrage des sogenannten
Gameports (Port 201H) angewiesen.
Durch den freien Zugang zu allen Systemfunktionen und zur Hardware lassen sich unter DOS beliebige Manipulationen vornehmen; das Problem ist meist, die entsprechenden Informationen
zu den Schnittstellen ausfindig zu machen. Bei all den Möglichkeiten, die sich dem Programmierer bieten, sollten die Grundsätze strukturierter und portabler Programmierung aber
nicht aus den Augen verloren werden. Wo auf systemnahe Funktionen verzichtet werden kann, sollte das getan werden, ansonsten schreibt man am besten einzelne Prozeduren dafür.
Bleibt noch, Ihnen, die Sie uns in diesem Lehrgang begleitet haben, für Ihre Aufmerksamkeit zu danken. Nicht umsonst, denn nach Lage der Dinge dürfte MS-DOS noch ein wesentlich
längeres Leben beschieden sein (Stichworte MS-DOS 5.0, DR-DOS 6.0, Windows 3.0), als das noch vor einiger Zeit abzusehen war. So komfortabel wie die Arbeit mit vielen Programmen ist
(nicht unbedingt mit dem Betriebssystem selbst), so sollten Sie doch nicht vergessen, daß es neben MS-DOS noch andere Betriebssysteme gibt, die durchaus ihre Daseinsberechtigung
besitzen, denn - machen wir uns nichts vor - das Konzept von MS-DOS verdient heute kein Lob mehr. Das Wissen um andere Systemkonzepte ermöglicht Ihnen nicht nur die problemadäquate
Wahl der Mittel, sondern erhöht auch die Toleranz gegenüber "Andersdenkenden". Tun Sie es nicht den Jüngern bestimmter Betriebssysteme (keine Namen) gleich, die alles andere aus Prinzip
ablehnen, aber nicht glauben wollen, daß in MS-DOS Filter existieren oder Laufwerke an den Dateibaum angehängt werden können. Dann brauchen Sie sich auch nicht zu schämen,
eine bedienfreundliche Textverarbeitung unter DOS einer kryptischen Editierhilfe eines anderen Systems vorzuziehen, das seine Stärken dafür an anderer Stelle besitzt. Sollten Sie weitere
Informationen zu MS-DOS benötigen, so möchte ich Sie an dieser Stelle auf den zweiten Teil dieses
Lehrmatials hinweisen das sich ausschließlich mit MS-DOS 5.0 beschäftigt.
Bleiben Sie also auch ein klein wenig aufgeschlossen
(c) Jürgen Richter