Systemnahe
Programmierung

E-Books


MS-DOS Kurs


Systemnahe Programmierung

Während andere Betriebssysteme eine Systemschnittstelle besitzen, auf die Programme aufsetzen müssen, gibt es bei MS-DOS - bedingt durch die Entwicklung - ganz verschiedene Möglichkeiten, um Funktionen des Betriebssystems aufzurufen. Diese uneinheitliche Handhabung ist ein großer Nachteil; aus Gründen der Kompatibilität oder der Geschwindigkeit führt oftmals kein Weg daran vorbei. Die verschiedenen Programmierschnittstellen könnte man wie folgt systematisieren:
* Shell-Schnittstelle (Aufruf von COMMAND.COM)
* Gerätetreiberschnittstelle
* DOS-Schnittstelle ("offizielle" Systemschnittstelle, hauptsächlich über Interrupt 21H)
* Firmware-Schnittstelle
* direkter Hardwarezugriff (Speicherzellen und Ports)
Im folgenden soll gezeigt werden, wie man Systemfunktionen aus Programmen heraus erreicht, vor allem aber soll diskutiert werden, wann man welche Schnittstelle nutzen sollte. Ganz allgemein gilt, daß höhergelegene Schnittstellen auch mehr Komfort und mehr Kompatibilität bieten, aber auch deutlich langsamer sind. Geschwindigkeit dürfte damit auch ein Hauptbeweggrund für hardwarenahe Programmierung sein. Während bestimmte Funktionen, wie etwa die Ausgabe auf den Bildschirm, auf allen Ebenen zur Verfügung stehen (nur auf unterschiedlichen Niveau), sind andere Funktionen nur durch direkten Hardwarezugriff oder BIOS-Routinen überhaupt zu erreichen (Sound, Gameport, CMOS-RAM). Dieser Umstand stellt den zweiten Grund für die Notwendigkeit hardwarenaher Programmierung dar.
Da systemspezifische Programmierung bei MS-DOS zum Alltag gehört, stellen alle Programmiersprachen bereits einen Satz entsprechender Funktionen zur Verfügung - nur sind sie nicht einheitlich und nicht portabel. Deshalb ist die Übertragung eines Programms etwa von Turbo C nach Microsoft C oder von Quick-Pascal nach Turbo-Pascal nur mit Nacharbeit möglich, und noch komplizierter wird die Übertragung auf ein anderes Betriebssystem. Zusätzlich steht dem Programmierer in den meisten Sprachen auch noch der direkte Zugriff zu den Hardware- und Systemschnittstellen offen, etwa um den Aufruf von Funktionen zu ermöglichen, die nicht bereits vorgefertigt sind. Beide Wege werden später noch an Beispielen erläutert.


(c) Jürgen Richter