Systemnahe
Programmierung

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