home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-03-02 | 225.0 KB | 3,953 lines |
-
- ** technische Referenz für Programmierer für MSDOS und den IBM PC **
- ─────────────────────────┤ eingetragene Anwenderversion ├───────────────────────────
- nicht für den allgemeinen Vertrieb
- Urheberrecht (c) 1987, 1990 Dave Williams
- Deutsche Übersetzung Urheberrecht (c) 1990 Klaus Overhage
- Änderungen und Erweiterungen Urheberrecht (c) 1990 Klaus Overhage
-
-
-
- K A P I T E L V I E R
-
- DOS INTERRUPTS und Funktionsaufrufe
-
-
- I N H A L T E
-
- Allgemeine Anleitung zur Programmierung .............................. 4**1
- DOS Register ......................................................... 4**2
- DOS Stapel ........................................................... 4**3
- DOS Interrupts ....................................................... 4**4
- Interrupt 20h (beenden) .............................................. 4**5
- DOS Funktionen (Schnellübersicht) .................................... 4**6
- Aufruf der DOS Funktionen ............................................ 4**7
- wesentliche Versions Information ..................................... 4**8
- PCjr Kassettenunterstützung .......................................... 4**9
- Kompatibilitätsprobleme mit DOS 4.0+ ................................. 4**10
- eDOS 4.0 ............................................................. 4**11
- DOS Funktionen ausführlich ........................................... 4**12
-
-
- Allgemeine Anleitung zur Programmierung .............................. 4**1
-
- Microsoft empfiehlt die Vermeidung der "alten Art" (01h-0Ch und 26h) Systemaufrufe
- wo dies auch immer möglich ist. Die Programmierer sind bedrängt die "neue Art" (DOS 2.0+)
- dafür zu benutzen.
-
- Es sollten keine "nicht dokumentierte" Funktionen benutzt werden, falls diese nicht kritisch für
- die Anwendung sind und keine andere passende hierfür gefunden werden kann. Beachten sie das
- das die Programme unter verschiedenartige Versionen von DOS, DOS Nachbauten wie
- Digital's DR-DOS, in der OS/2 Kompatibilität Box, oder dem Unix DOS Fenster augeführt werden sollen.
- Solche Umgebungen oder OS Simulationen haben nicht immer die nicht dokumentierten Aufrufe realisiert.
-
- In DOS 2.x fehlen viele von den Erweiterungen der späteren Versionen. Die Anwendung
- sollte die DOS Version kontrollieren, falls DOS 3.x+ Merkmale verlangt werden.
-
- Direkte Festplattenzugriffe über die Hardware oder dem BIOS sollten vermieden werden, falls das Programm nicht
- ausschließlich auf der wesentlichen Hardware ausgeführt wird oder unter anderen zuverlässigen Verhältnisse.
- Einige Versionen von DOS 2.x behandeln ihre Disketten in einer Art ähnlich 3.x. Einige
- Anbieter fügten mehrfache DOS Bereiche oder übergroße Laufwerksunterstützung hinzu, vor der
- "offiziellen " 3.3 Freigabe. Nicht alle diese Systeme arbeiten in der gleichen Weise! Die neuen
- SCSI oder ESDI Festplattencontroller bilden nicht immer alle der Standard BIOS
- Aufrufe nach..
-
-
- DOS Register ......................................................... 4**2
-
- DOS benutzt die folgenden Register, Zeiger, und Kennzeichen sobald es
- Interrupts und Funktionsaufrufe ausführt:
-
- ┌───────────────────┬──────────┬───────────────────────────────────────────────┐
- │allgemein Register │ Register │ Definition │
- │ ├──────────┼───────────────────────────────────────────────┤
- │ │ AX │ Akkumulator (16 Bit) │
- │ │ AH │ Akkumulator höherwertiges Byte (8 Bit) │
- │ │ AL │ Akkumulator niederwertiges Byte (8 Bit) │
- │ │ BX │ Basis( 16 Bit) │
- │ │ BH │ Basis höherwertiges Byte (8 Bit) │
- │ │ BL │ Basis niederwertiges Byte (8 Bit) │
- │ │ CX │ Zählen (16 Bit) │
- │ │ CH │ Zählen höherwertiges Byte (8 Bit) │
- │ │ CL │ Zählen niederwertiges Byte (8 Bit) │
- │ │ DX │ Daten (16 Bit) │
- │ │ DH │ Daten höherwertiges Byte (8 Bit) │
- │ │ DL │ Daten niederwertiges Byte( 8 Bit) │
- ├───────────────────┼──────────┼───────────────────────────────────────────────┤
- │ Segment Register │ Register │ Definition │
- │ ├──────────┼───────────────────────────────────────────────┤
- │ │ CS │ Codesegment (16 Bit) │
- │ │ DS │ Datensegment (16 Bit) │
- │ │ SS │ Stacksegment (16 Bit) │
- │ │ ES │ Extrasegment (16 Bit) │
- ├───────────────────┼──────────┼───────────────────────────────────────────────┤
- │ Index Register │ Register │ Definition │
- │ ├──────────┼───────────────────────────────────────────────┤
- │ │ DI │ Zielindex (16 Bit) │
- │ │ SI │ Quellindex (16 Bit) │
- ├───────────────────┼──────────┼───────────────────────────────────────────────┤
- │ Zeiger │ Register │ Definition │
- │ ├──────────┼───────────────────────────────────────────────┤
- │ │ SP │ Stapelzeiger (16 Bit) │
- │ │ BP │ Basiszeiger (16 Bit) │
- │ │ IP │ Befehlszeiger (16 Bit) │
- ├───────────────────┴──────────┴───────────────────────────────────────────────┤
- │ Kennzeichen AF, CF, DF, IF, OF, PF, SF, TF, ZF │
- └──────────────────────────────────────────────────────────────────────────────┘
-
- Diese Register, Zeiger, und Kennzeichen sind "niedrigste allgemeine Nenner" 8088-8086
- CPU orientierte. DOS macht kein Versuch irgendeine von den besonderen oder erweiterten
- Anweisungen der späteren CPUs zu benutzen welche auch den 8088 Code durchführen, derartig wie
- der 80186, 80286, 80386, oder NEC V20, V30, V40, oder V50.
-
- Benutzte Register außer AX werden nicht verändert, falls nicht Information über diese zurück-
- gegeben werden. Dies ist bei den wesentlichen Funktionsaufrufen bermerkt.
-
-
-
- DOS Stapel ........................................................... 4**3
-
- Sobald DOS die Steuerung nach einem Funktionsaufruf übernimmt, es schaltet auf einen internen
- Stapel. Register welche nicht benutzt werden um Information zurüchzugeben (andere als AX) werden
- gesichert. Der Stapel des aufrufenden Programmes muß groß genug sein um
- das Interrupt System anzupassen - wenigstens 128 Bytes zusätzlich zu andere Interrupts.
-
- DOS unterhält tatsächlich drei Stapel -
-
- Stapel 1: 384 Bytes (in DOS 3.1)
- für Funktionen 00h und für 0Dh und aufwärts, und für ints 25h und 26h.
-
- Stapel 2: 384 Bytes (in DOS 3.1)
- für Funktionsaufrufe 01h bis 0Ch.
-
- Stapel 3: 48 Bytes (in DOS 3. 1)
- für Funktionen 0Dh und darüber. Dieser Stapel ist der anfängliche Stapel der von dem
- int 21h Handler benutzt wird, bevor er entscheidet welcher von den anderen beiden benutzt werden soll.
- Es wird auch benutzt von den Funktion 59h (holen erweiterten Fehler), und 01h bis 0Ch falls
- diese während eines int 24h (kritischer Fehler) Handler ausgeführt werden. Die Funktionen
- 33h (holen/setzen Abbruch Kennzeichen), 50h (setze Prozess ID), 51h (hole Prozess ID)
- und 62h (holen PSP Adresse) benutzen keine der DOS Stapel unter DOS 3.x
- (unter 2.x, 50h und 51h benutzen den Stapel Nummer 2).
-
- IBM und Microsoft haben eine Änderung in DOS 3.0 oder 3.1 gemacht, um die Größe von
- DOS zu reduzieren. Sie reduzierten den Platz, der für die Scratch Bereiche belegt wird, sobald Interrupts
- verarbeitet werden. Der vorgegebene Wert ändert sich mit der DOS Version und der
- Maschine, aber 8 Stapel Rahmen erscheinen allgemein. Falls beabsichtigt wird mehr als
- 8 interrupts zur selben Zeit zu holen, Taktgeber, Festplatte, Druckerspooler,
- Tastatur, com Port, etc., stürtzt das System ab. Es scheint als wenn dies gewöhnlich auf
- einem Netzwerk passiert. STACKS=16,256 bedeutet das 16 Interrupts jeden anderen unterbrechen können und
- erlaubt 256 Bytes für jeden Scratch Bereich. Acht ist der Mindestwert.
-
- DOS 3.2 Schaltet einige unterschiedliche Stapel als die vorhergehenden Versionen. Die
- interrupts welche geschaltet werden, sind 02h, 08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 70h,
- 72h, 73h, 74h, 75h, 76h, und 77h. DOS 3.2 hat eine besondere Kontrolle in dem
- Initialisierungscode für einen PCjr und aktiviert die Stapel Schaltung nicht auf dieser Maschine.
- DOS 3.3 wurde so geändert, daß keine Stapel Schaltung auftritt beim PC, PC-XT, oder dem
- tragbaren PC, und der Standardwert ist 9 Stapel mit je 128 Bytes bei einem AT.
-
-
-
- DOS Interrupts ....................................................... 4**4
-
- Microsoft empfiehlt, daß ein Programm welches die Inhalte von irgendeinen Interruptvektor
- prüft oder einstellt die DOS Funktionsaufrufe 35h und 25h benutzen soll, die für jene
- Zwecke vorgesehen sind und die direkte Bezugnahme auf Interruptvektor Adressen vermieden werden soll.
-
- DOS reserviert die Interrupts 20h bis 3Fh für seine eigene Benutzung. Dies bedeutet,
- das die absoluten Speicheradressen 80h bis 0FFh von DOS reserviert sind.
-
-
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 20h beenden aktuelles Programm 4**5 │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0080h)
- ausgeben int 20h veranlasst das beenden von einem Programm. Dieser Vektor übergibt die Logik ans
- DOS zum wiederherstellen der Beendigungsadresse, der Ctrl-Break Adresse, und der kritische
- Fehler Ausstiegsadresse auf die Werte die sie hatten vor dem Aufruf des Programms. Alle Datei-
- puffer werden gelöscht und alle Dateien geschlossen. Es sollten alle Dateien geschlossen werden,
- die die Länge verändert haben (siehe Funktionsaufrufe 10h und 3Eh) bevor dieser Interrupt ausgegeben
- wird. Falls die geänderte Datei nicht geschlossen wird, werden dessen Länge, Uhrzeit, und Datum
- nicht korrekt in dem Inhaltsverzeichnis aufgezeichnet.
-
- Für ein Programm das ein Beendigungscode oder einen Fehlercode zurückgeben muß, es
- muß einer von den beiden Funktionsaufruf 4Ch (beenden ein Prozess) oder 31h (beenden
- Prozess und verbleiben speicherresistent) benutzt werden. Diese zwei Methoden sind der Benutzung
- von int 20h vorzuziehen und die Codes die zurückgegeben werden, können bei der Stapel Abarbeitung abgefragt werden.
-
- Wichtig: bevor ein Interrupt 20h ausgegeben wird, muß das Programm garantieren daß
- das CS Register das Segment von seinem Programm Segment Prefix enthält.
-
- Interrupt 20h DOS - beenden Programm
- Aufruf kein Parameter
- Rückgabe die folgend Vektoren sind wiederhergestellt von dem Programm Segment Prefix:
- 0Ah Programm beenden
- 0Eh Control-C
- 12h kritischer Fehler
- Anmerkung 1) IBM und Microsoft empfehlen die Benutzung von int 21 Fn 4Ch. Die Benutzung
- von int 20 wird offiziell mißbilligt seit der Einführung von DOS 2.0
- 2) in DOS 3.2 zum mindestens, int 20h ruft nur int 21h, fn 00h auf.
-
-
-
- DOS Funktionen (Schnellübersicht) .................................... 4**6
-
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ Interrupt 21h Funktionsaufruf Anforderung │
- └─────────────────────────────────────────────────────────────────────────────┘
- (0:0084h)
- DOS liefert ein breite Vielfalt von Funktionsaufrufe für Zeichentreiber I/O, Datei-
- handhabung, Speicherverwaltung, Datum und Zeit Funktionen, Ausführung von anderen
- Programmen, und mehr. Sie sind in folgende Gruppen aufgeteilt:
-
- Anruf Beschreibung
- 00h Programm beenden
- 01h-0Ch Zeichentreiber I/O, CP/M Kompatibilitätsformat
- 0Dh-24h Dateihandhabung, CP/M Kompatibilitätsformat
- 25h-26h nondevice Funktionen, CP/M Kompatibilitätsformat
- 27h-29h Dateihandhabung, CP/M Kompatibilitätsformat
- 2Ah-2Eh nondevice Funktionen, CP/M Kompatibilitätsformat
- 2Fh-38h erweiterte Funktionen
- 39h-3Bh Inhaltsverzeichnis Gruppe
- 3Ch-46h erweiterte Dateihandhabung
- 47h Inhaltsverzeichnis Gruppe
- 48h-4Bh Erweiterungsspeicher Handhabung
- 54h-57h erweiterte Funktionen
- 5Eh-5Fh Netzwerkbetrieb
- 60h-62h erweiterte Funktionen
- 63h-66h erweiterte Fremdsprachenunterstützung
-
-
- Liste der DOS Funktionen: *= nicht dokumentiert
- 00h beenden Programm
- 01h holen Tastatureingabe
- 02h Anzeige Zeichen zu STDIO
- 03h holen Zeichen von STDAUX
- 04h Zeichenausgabe zu STDAUX
- 05h Zeichenausgabe zu STDPRN
- 06h direkte Ein- und Ausgabe von Zeichen - Tastatur zu Bildschirm
- 07h holen Zeichen von std I/O ohne Ausgabe
- 08h holen Zeichen von std I/O ohne Ausgabe, überprüft auf ^C
- 09h Anzeige einer Zeichenkette zu STDOUT
- 0Ah gepufferte Tastatureingabe
- 0Bh kontrollieren STDIN Status
- 0Ch löschen Tastaturpuffer und aufrufen Tastaturfunktion
- o 0Dh Übertragen alle Plattenpuffer
- o 0Eh auswählen Festplatte
- 0Fh Datei öffnen mit Dateikontrollblock
- 10h Datei schließen mit Dateikontrollblock
- 11h suche erste Datei im aktuellen Verzeichnis mit Dateikontrollblock
- 12h suche nächste Datei im aktuellen Verzeichnis mit Dateikontrollblock
- 13h lösche Datei spezifiziert durch den Dateikontrollblock
- 14h sequentielles lesen einer Datei spezifiziert durch den Dateikontrollblock
- 15h sequentielles schreiben einer Datei spezifiziert durch den Dateikontrollblock
- 16h erstellen oder leeren einer Datei mit Dateikontrollblock
- 17h umbenennen einer Datei spezifiziert durch den Dateikontrollblock
- 18h* Unbekannt
- o 19h Rückgabe aktuelles Festplattenlaufwerk
- o 1Ah einstellen Diskettentransferbereich (DTA)
- 1Bh hole FAT des aktuellen Laufwerks
- 1Ch hole FAT von irgendeinen Laufwerk
- 1Dh* Unbekannt
- 1Eh* Unbekannt
- 1Fh* lese DOS Plattenblock, Standardlaufwerk
- 20h* Unbekannt
- 21h wahlfreies lesen einer Datei spezifiziert durch den FCB
- 22h wahlfreies schreiben einer Datei spezifiziert durch den FCB
- 23h Rückgabe Anzahl Sätze in der Datei spezifiziert durch FCB
- 24h einstellen Satznummer der relativen Datei für die Datei spezifiziert durch den FCB
- o 25h einstellen Interrupt Vektor
- 26h erstellen neues Programm Segment Prefix (PSP)
- 27h wahlfreies lesen eines Dateiblockes einer Datei spezifiziert durch den FCB
- 28h wahlfreies schreiben eines Dateiblockes einer Datei spezifiziert durch den FCB
- 29h analysieren der Befehlszeile für Dateiname
- o 2Ah lese das Datum des Systems
- o 2Bh einstellen Datum des Systems
- o 2Ch lese die Uhrzeit des Systems
- o 2Dh einstellen Uhrzeit des Systems
- o 2Eh setzen/löschen Verify-Kennzeichen für Schreiboperation der Laufwerke
- o 2Fh holen Adresse Datenübertragungsbereich (DTA)
- o 30h holen DOS Versionsnummer
- 31h TSR, geöffnete Dateien bleiben offen
- 32h* lesen DOS Plattenblock
- o 33h holen oder einstellen Ctrl-Break Kennzeichen
- 34h* INDOS kritisches Bereichskennzeichen
- o 35h holen Segment und Offsetadresse eines Interrupts
- o 36h festellen freien Platz auf dem Laufwerk
- 37h* holen/einstellen Wahlmöglichkeit Markierungszeichen (SWITCHAR)
- o 38h Rückgabe Landesspezifische Information
- o 39h erstellen Unterverzeichnis
- o 3Ah entfernen Unterverzeichnis
- o 3Bh ändern aktuelles Inhaltsverzeichnis
- o 3Ch erstellen und Rückgabe Dateinummer
- o 3Dh öffne Datei und Rückgabe Dateinummer
- o 3Eh schließen Datei gekennzeichnet durch Dateinummer
- o 3Fh lesen von Datei gekennzeichnet durch Dateinummer
- o 40h Datei schreiben gekennzeichnet durch Dateinummer
- o 41h löschen Datei
- o 42h bewegen Dateizeiger (bewegen Lese-Schreib Zeiger für Datei)
- o 43h einstellen/Rückgabe Dateiattribute
- o 44h Gerät IOCTL (I/O Steuerung) Information
- o 45h duplizieren Dateinummer
- o 46h erzwingen einer duplizierten Dateinummer
- o 47h holen aktuelles Inhaltsverzeichnis
- o 48h Speicher belegen
- o 49h Freigabe von belegten Speicher
- o 4Ah modifizieren belegten Speicher
- o 4Bh laden oder ausführen eines Programms
- o 4Ch Programm beenden und Rückgabe zu DOS
- o 4Dh holen Rückgabecode eines Unterprozesses erstellt bei 4Bh
- o 4Eh suche erste Datei
- o 4Fh suche nächste Datei
- 50h* einstellen neues aktuelles Programm Segment Prefix (PSP)
- 51h* legt aktuelles PSP in BX
- 52h* Zeiger zu der DOS auflisten von zeigt
- 53h* übersetzt BPB (Bios Parameterblock, siehe unterhalb)
- o 54h holen Platte Überprüfungszustand (VERIFY)
- 55h* erstellen PSP: ähnlich wie Funktion 26h
- o 56h umbenennen einer Datei
- o 57h holen/einstellen Datum und Uhrzeit einer Datei
- 58h holen/einstellen Belegungsstrategie (DOS 3.x)
- o 59h holen erweiterte Fehlerinformation
- o 5Ah erstellen eines eindeutigen Dateiname
- o 5Bh erstellen einer DOS Datei
- o 5Ch sperren/entsperren Datei Inhalte
- 5Dh* Netzwerk
- 5Eh* Netzwerk Drucker
- 5Fh* Netzwerk Umleitung
- 60h* analysieren Pfadname
- 61h* Unbekannt
- 62h holen Programm Segment Prefix (PSP)
- 63h* holen anführen Byte Tabelle (DOS 2.25)
- 64h* Unbekannt
- 65h holen erweiterte Länderinformation (DOS 3.3)
- 66h holen/einstellen globale Code Seiten Tabelle (DOS 3.3)
- 67h einstellen Handle Zähler (DOS 3.3)
- 68h anvertrauen Datei (DOS 3.3)
- 69h Festplatte serielle Nummer (DOS 4.0)
- 6Ah Unbekannt
- 6Bh Unbekannt
- 6Ch erweitertes öffnen/erstellen (DOS 4.0)
-
- Elemente die mit 'o' markiert sind, werden in der OS/2 Kompatibilität Box
- unterstützt, entsprechend zu MicroSoft.
-
-
- Anruf der DOS Funktionen ............................................. 4**7
-
- Der DOS Funktionen werden aufgerufen, indem die Nummer der gewünschten Funktion im
- Register AH, Unterfunktion in AL übertragen wird und alle anderen Register mit den Werten
- die erforderlich sind versorgt werden und der int 21h aufgerufen wird.
-
- Sobald der Interrupt aufgerufen ist, werden alle Register und Kennzeichen auf dem
- Stapel abgelegt. Int 21h enthält ein Zeiger auf eine absolute Adresse in der IBMDOS.COM
- Datei. Dies Adresse ist der Hauptschleife für den DOS Befehls Handler. Der Handler
- holt die Registerwerte, vergleicht diese mit seine Liste von Funktionen, und führt diese
- aus, falls die Funktion zulässig ist. Sobald die Funktion beendet ist, kann diese Werte an
- den Befehlshandler zurückgeben. Der Handler sichert (PUSH) die Werte in dem Stapel und
- übergibt dann die Steuerung an das aufrufende Programm.
-
- Die meisten Funktionen geben einen Fehlercode zurück; einige geben aber mehr Information zurück.
- Details hierüber sind in der Beschreibung der einzelnen Funktionen enthalten. Erweiterte
- Fehlercodes für die meisten Funktionen, können durch den Aufruf der Funktion 59h festgestellt werden.
-
- Register Einstellungen sind verzeichnet wenn diese von DOS benutzt werden. Einige Funktionen geben
- Ausschußdaten in ungebrauchte Register zurück. Es sollten keine Tests auf Werte in nicht
- spezifizierten Register durchgeführt werden; das Programm kann ein ungewöhnliches Verhalten an den Tag legen.
-
- DS:DX Zeiger sind die Datensegment Register (DS) indiziert zu dem DH und DL
- Register (DX). DX enthält immer die Offsetadresse, DS enthält die Segmentadresse.
-
- Die Datei Kontrollblock Funktionen (FCB Funktionen) waren ein Teil von DOS 1.0. Seit
- der Freigabe von DOS 2.0, Microsoft empfiehlt, daß diese Funktionen nicht benutzt werden
- sollen. Eine Anzahl von beträchtlich erweiterten Funktionen (Verarbeitungsfunktionen) wurden
- mit DOS 2.0 eingeführt. Die Verarbeitungsfunktionen liefern die Unterstützung für Wildcards und
- Unterverzeichnisse, und die erweiterte Fehlererkennung via Funktion 59h.
-
- Die Daten für die folgenden Aufrufe sind von verschiedenartige Intel, Microsoft,
- IBM, und andere Veröffentlichungen zusammengestellt worden. Da sind viele spitzfindige
- Unterschiede zwischen MSDOS und PCDOS und zwischen den einzelnen Versionen. Unterschiede
- zwischen den Versionen sind vermerkt wie sie auftreten.
-
- Es gibt verschiedenartige Wege um die DOS Funktionen aufzurufen. Für alle Methoden, die
- Funktionsnummer ist geladen im Register AH, Unterfunktionen und/oder Parameter sind
- geladen in AL oder andere Register, und aufrufen int 21 bei einer der folgenden
- Methoden:
-
- A) anrufen Interrupt 21h direkt (das empfohlene Verfahren)
- B) durchführen ein long call zu Offset 50h in dem Programm PSP.
- 1) dies Methode der wille nicht arbeiten unter DOS 1. x
- 2) obgleich empfohlen von Microsoft für DOS 2.0, diese Methode benötigt mehr
- Zeit und ist nicht mehr empfohlen.
- C) plazieren der Funktionsnummer in CL und durchführen eines intrasegment Aufrufes zu
- Stelle 05h in dem aktuellen Codesegment. Dies Stelle enthält ein long call
- zu dem DOS Funktionsverteiler.
- 1) IBM empfiehlt, das diese Methode ausschließlich benutzt werden soll, sobald existierende Programme
- für unterschiedlich Anruf Konventionen geschrieben werden. (wie konvertieren CP/M
- Programme). Dies Methode sollte vermieden werden, falls nicht wesentliches dafür spricht.
- 2) AX wird durch diese Methode immer zerstört.
- 3) diese Methode ist ausschließlich zulässig für die Funktionen 00h-24h.
-
- Es gibt auch verschiedenartig Wege um ein Programmvon zu beenden. (vorrausgesetzt es ist nicht
- als ein TSR geplant). Alle Methoden außer der Aufruf 4Ch muß garantieren daß das
- Segmentregister die Segmentadresse von dem PSP enthält.
-
- A) Interrupt 21h, Funktion 4Ch (beenden mit Rückgabecode). Dies ist die
- "offiziell" empfohlene Methode um zu DOS zurückzukehren.
- B) Interrupt 21h, Funktion 00h (beenden Programm). Dies ist der frühere
- int 21 Funktionsaufruf. Er ruft einfach den int 20h auf.
- C) Interrupt 20h (aussteigen).
- D) eine JMP Instruktion zu Offset 00h (int 20h Vektor) in dem Programm Segment
- Prefix. Dies ist nur ein Umweg um den int 20h aufzurufen. Diese Methode
- war vorbereitet in DOS 1.0 für die bequeme Umsetzung von CP/M Programme.
- Es ist nicht länger zur Benutzung empfohlen.
- E) eine JMP Instruktion zu Offset 05h (int 21 Vektor) in dem Programm Segment
- Prefix, mit AH einstellen zu 00h oder 4Ch. Dies ist eine andere CP/M
- typische Funktion.
-
-
-
- wesentliche Versions Information ..................................... 4**8
-
- * Funktionsaufrufe:
-
- DOS 2.x Unterstützung der Funktionsaufrufe 00h bis 57h.
-
- DOS 2.25 ist die ausschließliche Version zum unterstützen der Funktion 63h (Ausländische Tastatur)
-
- DOS 3.x hat mehr weltoffenere Funktionsaufrufe zur Fehlerbehandlung
- und Feststellung verfügbar als 2.x.
-
- DOS 3.0 Unterstützung der Funktionsaufrufe 00h bis 5Ch und 62h, einschließlich
- neue und geänderten Funktionsaufrufe für Version 3.0:
- 3Dh öffnen Datei
- 59h holen erweiterten Fehler
- 5Ah erstellen temporäre Datei
- 5Bh erstellen neue Datei
- 5Ch sperren/entsperren Dateizugriff
- 62h holen Programm Segment Prefix Adresse
-
- DOS 3.1 Unterstützung der Funktionsaufrufe 00h bis 62h, einschließlich
- der neuen und geänderten Funktionsaufrufe für DOS 3.1:
- 5E00h holen Maschinenname
- 5E02h einstellen Druckereinstellung
- 5E03h holen Druckereinstellung
- 5F02h holen Umleitung Liste Einsprungstelle
- 5F03h umleiten Gerät
- 5F04h abbrechen Umleitung
-
- DOS 3.2 Unterstützung der folgenden neuen Funktionen:
- 44h erweiterte IOCTL Funktionen
-
- DOS 3.3 Unterstützung der folgenden neuen Funktionen:
- 44h erweiterte IOCTL Funktionen
- 65h holen erweiterte Länderinformation (DOS 3.3)
- 66h holen/einstellen globale Code Seite Tabelle (DOS 3.3)
- 67h einstellen Handle Zähler (DOS 3.3)
- 68h commit Datei (DOS 3.3)
-
- DOS 4.0 Unterstützung der folgend neuen Funktionen:
- 44h erweiterte IOCTL Funktionen
- 69h Festplatte serielle Nummer
- 6Ch erweitertes öffnen/erstellen
-
-
- PCjr Kassetten Unterstützung ......................................... 4**9
-
- Die PCJr ROM Kassetten haben eine Befehlstabelle, die den Namen von
- jedem unterstützten Befehl und seinem Vektor im ROM enthält. Es wird als erste
- das ROM angepaßt, vor der internen Befehlsanpassung, sodaß das abläuft, was
- dort gefunden wurde.
- Eigentlich, kann der ganze PCJr Code ohne Probleme durch NOP ersetzt werden -- AST und
- Toshiba haben beide ein COMMAND.COM ohne diesen, und es gibt keine Hauptprobleme. Das
- interessante ist, daß PC-DOS 4.0x diesen noch hat, obwohl sie ausdrücklich
- sagen, daß DOS 4 nicht auf dem PCJr unterstützt wird (*sie* bedeutet bekanntlich IBM).
- Der PCJr Code in COMMAND.COM wird ausschließlich auf dem PCJr ausgeführt und der PCJr
- unterstützt keine normalen BIOS Erweiterung ROMs, ausschließlich der Erweiterungkasetten.
-
-
-
- Kompatibilitätsprobleme mit DOS 4.0+ ................................. 4**10
-
- Kompatibilitätsprobleme mit DOS 4.00 liegen vorwiegend in int 2Ah und int 2Fh. Bisher
- war 2Ah immer reserviert, einige Netzwerksoftware benutzt dies Interrupt. IBM und
- Microsofts Dokumentation vor 4.0 besagten nachdrücklich, daß int 2Fh Funktionen
- nicht schon benutzt von PRINT.COM und zur allgemeinen Benutzung offen waren. DOS 4.00
- benutzt eine Anzahl dieser Funktionen. Die Differenz in der Festplattenbehandlung sobald> 32mb
- Bereiche benutzt werden, veranlässt Probleme mit einiger älterer Software.
-
- Die meisten DOS 4.00 externen Programme (ASSIGN, SUBST, etc) kontrollieren für Dateien dasein
- gedruckt - einschließlich LABEL. Dies ist ein Teil der erweiterten Netzwerkunterstützung.
- Beinahe alle DOS 4.00 externen überprüfen außerdem das Vorhandensein von NETBIOS.
-
-
- eDOS 4.0 ............................................................. 4**11
-
- Wie im Abschnitt 1 erwähnt, das DOS 4. 0 welches an ausgewählte OEMS in England und
- Europa in '86/87' ausgegeben wurde, ist nicht derselbe Code wie in DOS 4.0 bei der Freigabe in
- 1988. Das europäische DOS 4.0 (eDOS?) ist ein multitasking DOS geschrieben von Microsoft,
- solange das US DOS 4.0 ist ein single tasking DOS geschrieben von IBM. eDOS 4.0 war
- in Europa nach 3.1 freigegeben, aber bevor 3.2.
-
- (gesondert von einem vorher freigegebenen Dokument):
-
- `Microsoft Multitasking MS-DOS Produkt Specifikation' datiert April 28, 1986
-
- MS-DOS 4.0 ist ein multitasking Betriebssystem, entwickelt von und verträglich
- mit MS-DOS 3.1. Es unterstützt echtes multitasking welches dem Anwender die
- illusion gibt von und begünstigt von viele unabhängige Computer. Ferner, MS-DOS 4.0
- erlaubt es die meisten existierenden MS-DOS 2.x und 3.x Anwendungen auszuführen
- ohne Änderung in der MS-DOS 4.0 multitasking Umgebung.
-
- (Ende von gesondert).
-
- eDOS 4.0 bestand aus einem Hauptprogramm (DOS2/3 verträglich) und verschiedene
- multitasking (Hintergrund) Programme, die speziell geschrieben wurden. Der Grund
- hierfür war, der Zwang in die einzelne 640k Speicher Abbildung zu passen.
-
- int 21h Funktionen: (einige von diesen erscheinen in späteren Versionen von DOS)
-
- AEXEC identisch zu EXEC sub 4.
- CREATMEM erstellen eines benannten Speicherbereiches, welcher kann Zugang durch andere
- Vorgänge erhalten. (gemeinsam benutzter Speicher \SHAREMEM\ ...)
- CRITENTER, CRITLEAVE (Semaphore Routinen)
- CRITERR (dies ist eine der die DOS 3 haben sollte)
- ermöglicht die Abarbeitung von schweren Fehlern oder automatisches vernachlässigen von schweren Fehlern.
- CWAIT wartet auf einen Rückgabecode von einem asynchronen Prozess. Kehrt zurück, sobald irgendein
- Unterprozess beendet wird. Unterprozesse können auch wie Waisen gestartete werden,
- sodaß hieruaf nicht gewartet werden muß.
- EXEC 4Bh (sub Funktion 4) - Start asynchronen Prozess.
- FREEZE Hält den Ablauf eines spezifizierten Prozesses an.
- GETEXTENDEDERROR - wie für DOS3, außer es wird die Versionsnummer überprüft, um die Ebene
- der Fehlerbehandlung zu beschreiben - du kann fragen für ein Zeiger zu der schweren
- Fehler Information paketieren für den letzten schweren Fehler.
- GETMEM bekommt Zugriff zu einem vorher erstellten gemeinsam benutzten Speicherbereich.
- GETPID gibt zurück Prozess ID und Abstammungs Prozess ID.
- GET/SET MEMORY PARTITION SIZE
- Vordergrundspeicher wird für übliche Anwendungen benutzt. Hintergrundspeicher wird
- für DOS 4 Anwendungen benutzt, die nicht den Bildschirm benutzen (oder ausschließlich benutzen es
- bis popup Funktionen). Hintergrund Anwendungen können auch Vordergrundspeicher
- benutzen, aber nicht umgekehrt.
- KILL beendet ein Prozess.
- PBLOCK blockt ein Prozess bis ein zugehöriger PRUN gegeben ist. Ein Zeitüberschreitung ist auch
- spezifiziert. Eine Speicherstelle ist ging vorbei welcher muß sein paarig in
- der PRUN. (Semaphore)
- PIPE erstellen einer PIPE. Zugriff ist bis lesen/schreiben/schließen (aber nicht LSEEK).
- PRUN Freigabe eines gesperrten Prozesses. (Semaphore)
- RELEASEMEM Freigabe eines gemeinsam benutzten Speicherzugriffes. Falls der Referenzzähler Null enthält
- wurde der Speicher freigegeben.
- RESUME Wiederaufnehmen eines eingefrorenen Prozesses.
- SEND SIGNAL
- Signals waren:
- SIGINTR, SIGTERM, SIGPIPE, SIGUSER1, SIGUSER2.
- Control C, Programmende, kaputte Pipe, Anwender def, Anwender def.
- Aktionen waren:
- beenden Prozess auf Quittung, ignorieren, annehmen,
- Sender bekommt Fehler oder empfing Empfangsbestätigung Signal.
- Die letzte von diesen gibt unmittelbar zu dem Sender zurück - es ist
- geplant zur Benutzung, sobald die Abarbeitung des Signals zu lange dauert.
- SETFILETABLE (86h) installieren einer neuen Dateihandler Tabelle. (mehr als 20 Dateien,
- wie in DOS 3.3+?)
- SETPRI setzten Prozess Priorität (für diesen Prozess oder vollständig subtree).
- SET SIGNAL HANDLER
- SLEEP Suspendieren des aktuellen Prozesses für die Anzahl der gegebenen Millisekunden.
- MSC 4.0 hatte eine Demo welche 'DOS_sleep' int 21h/fn 89h aufgerufen hat -
- erscheinen bzw. wird nicht ausgeführt in den bekannten DOS Versionen.
- WAIT wie für DOS 3.
-
- int 2Fh Funktionen:
-
- CHECKPU kontrollieren für popup Paket Installierung
- POSTPU öffnen/schließen eines popup Bildschirms
- SAVEPU sichern popup Bildschirm
- RESTOREPU umspeichern popup Bildschirm
-
- Andere nützliche Merkmale:
-
- eDOS 4.0 Programme benutzen das Windows .EXE Format
- Programme können gemeinsame Code Segmente benutzen
- verbesserte Gerätetreiber
- der seriell Port hatte einen vollen Satz der IOCTL Aufrufe (benutzt bis zu
- einem neuen auswählbaren IOCTL Aufruf).
- Gerätetreiber können multi-tasking sein. Sie haben geeignete Routinen zur
- Unterstützung von mehrfach angeforderten Warteschlangen (ebenso wie OS/2 dies später vorsieht)
- Interrupt gesteuerte seriell Anschlüsse
- sortierte Plattenpuffer bevor diese geschrieben werden
-
-
- Die folgenden waren verzeichnete als mögliche zukünftige Erweiterungen:
-
- Dateisystem Schutz und Genehmigungen
- Hochleistungsdateisystem (HPFS wurde in OS/2 1.2 realisiert)
- installierbare Dateisysteme (IFS Haken ist vorhanden in US DOS 4.0)
- Symbolische Verbindungen (sie haben diese auf OS/2 nicht, gerade jetzt ausführen sie?)
- Löschungen rückgängig machen
- lange Namen, Kleinbuchstaben Namen, zugreifen/erstellen Datum/Uhrzeit, Name von Anwendungen
- erstellen Datei, Revisionsnummer etc. (OS/2 HPFS)
-
-
- Entsprechend den wenigen Information die vom BIX ausgwählt wurden, Wang prüfte eine alpha
- Version von eDOS 4.0 zur Benutzung für ein laptop Projekt irgendwann in 1985, aber gab es dann auf
- weil das OS unfähig war, mit "schlechten" Programme in einer vernünftigen Art und Weise
- umzugehen. Ich redete mit einer Person welche hatte beta-tested es für MS, diese kommentierte
- "der einzigste was ausführt wird ist COMMAND.COM." Microsoft hat offensichtlich entweder
- eDOS komplette aufgegeben oder (wahrscheinlich) vereinte es in OS/2. Ich bin unfähig
- festzustellen, ob die französische Post eDOS benutzt, und zu der beste
- ich kann suchen außerhalb Apricot Computer nie tat viel mit es.
-
- Obgleich es höchst unwahrscheinlich ist das irgendeiner je Information zur Programmierung
- von eDOS braucht, ich finde die vollständig Unterwerfung faszinierend. IBM hatte nicht
- nur das Produkt angekündigt, sondern auch hierfür Werbung von 1984-85 gemacht. Wer verwarf den Entwurf? Warum?
- Wier werden es wahrscheinlich nie herausfinden.
-
-
- DOS Funktionen ausführlich ........................................... 4**12
-
-
- INT 21H DOS Funktionen
- Funktion (Hex)
-
- * zeigt an das die Funktionen nicht in der IBM DOS technischen Referenz dokumentiert sind.
- Anmerkung einige Funktionen sind dokumentiert in anderen Microsoft oder zugelassen OEM
- Dokumentation.
-
-
- Funktion 00h beenden Programm
- beendet Programm, aktualisiert FAT, überträgt Puffer, wiederherstellen Register
- Aufruf AH 00h
- CS Segmentadresse von PSP
- Rückgabe keine
- Anmerkung 1) Programm muß plazieren die Segmentadresse von dem PSP Kontrollblock im CS
- bevor diese Funktion aufgerufen wird.
- 2) die Beendigungs, ctrl-break, und kritische Fehler Ausgangsadressen (0Ah, 0Eh,
- 12h) sind auf die Werte zurückgesetzt, die sie beim Aufruf des Programms hatten,
- diese Werte sind gesichert in dem Programm Segment Prefix an den Adressen
- PSP:000Ah, PSP:000Eh, und PSP:0012h.
- 3) alle Dateiopuffer werden übertragen und die geöffneten Handles des Prozesses
- werden geschlossen.
- 4) falls irgendeine der Dateien ihre Länge verändert hat und nicht geschlossen wird,
- wird dies im Inhaltsverzeichnis nicht richtig aufgezeichnet.
- 5) überträgt Steuerung an die Beendigungsadresse.
- 6) dieser Aufruf führt genau dieselbe Funktion wie int 20h aus.
- 7) alle benutzten Speicher des Programms werden an DOS zurückgegeben. DOS ebenso geht die
- Speicherkette von Speicherblöcke aufwärts und markiert das alle die vom PSP benutzt wurden
- wieder frei sind.
- 8) TOS:$ 00 TERM. Gibt die Systemsteuerung an das Programm zurück von welchem es
- gestartet wurde. Falls EXECed von einem Programm, es gibt diese zu dem Programm zurück.
- Falls von DeskTop gestartet, gibt es zurück zum DeskTop. Dies ist wichtig für die verketteten
- Programmsegmente.
- 9) Dateien welche mit FCBs geöffnet wurden, werden nicht automatisch geschlossen.
-
-
- Funktion 01h holen Tastatureingabe
- wartet auf ein Zeichen von STDIN (falls notwendig), Echos zu STDOUT
- Aufruf AH 01h
- Rückgabe AL ASCII Zeichen von STDIN (8 Bits)
- Anmerkung 1) überprüft Zeichen auf Ctrl-C, falls Zeichen ist Ctrl-C, ausführen int 23h.
- 2) für Funktionsaufruf 06h, erweiterte ASCII Codes benötigt zwei Funktionsaufrufe.
- Der erste Aufruf gibt 00h zurück, wie ein Anzeiger das der nächste Aufruf
- ein erweiterter ASCII Code ist.
- 3) Eingabe und Ausgabe können umgeleitet werden. Falls umgeleitet, es gibt kein Weg um
- EOF festzustellen.
- 4) TOS:$ 1 CONIN. Zeichen wird in D0 zurückgegeben. ASCII Code des Zeichens im höherwertigen Byte,
- Tastaturauswahlcode im niederwertigen Byte. Gibt Scancodes von Tasten zurück, welche
- keinen ASCII Wert haben.
-
-
- Funktion 02h Anzeigen Ausgabe
- Anzeigen Zeichen in DL zu STDOUT
- Aufruf AH 02h
- DL 8 Bit Daten (gewöhnlich ASCII Zeichen)
- Rückgabe keine
- Anmerkung 1) falls Zeichen ist 08 (zurücksetzen) der Cursor wird un 1 Zeichen nach links bewegt
- (nicht löschendes zurücksetzen).
- 2) falls Ctrl-C nach der Eingabe erkannt wird, int 23h ist ausgeführt.
- 3) Eingabe und Ausgabe können umgeleitet werden. Falls umgeleitet, es gibt kein Weg um
- EOF festzustellen.
- 4) TOS:$ 2 CONOUT. Zeichen muß auf den Stapel gebracht werden, wie das erste Wort. Der
- ASCII Wert des Zeichen geht in dem niederwertigen Byte und das höherwertige Byte ist Null.
- Zeichen werden zum Gerät #2 ausgegeben, normal die Ausgabe auf die Console.
- Steuerzeichen und Escape Sequenzen werden normalerweise interpretiert.
-
-
- Funktion 03h Hilfseingabe
- holen (oder warten bis) Zeichen von STDAUX
- Aufruf AH 03h
- Rückgabe AL ASCII Zeichen von Hilfseinheit
- Anmerkung 1) AUX, COM1, COM2 ist ungepuffert und nicht Interrupt gesteuert
- 2) dieser Funktionsaufruf gibt keinen Zustand oder Fehlercodes zurück. Zur besseren
- Kontrolle wird empfohlen die ROM BIOS Routine (int 14h) zu benutzen oder
- einen AUX Gerätetreiber zu schreiben und benutzen IOCTL.
- 3) beim Starten, PC-DOS initializiert den ersten Hilfsport (COM1) zu 2400
- Baud, keine Parität, ein Stop-Bit, und ein 8-bit Wort. MSDOS kann abweichen.
- 4) falls Ctrl-C von STDIN eingegeben wird, int 23h wird ausgeführt.
- 5) TOS:$ 03 Hilfseingabe. Funktion kehrt zurück sobald ein Zeichen empfangen
- wurde. Zeichen wird im niederwertigen Byte von D0 zurückgegeben.
-
-
- Funktion 04h Hilfsausgabe
- schreiben Zeichen zu STDAUX
- Aufruf AH 04h
- DL ASCII Zeichen zum senden an AUX
- Rückgabe keine
- Anmerkung 1) dieser Funktionsaufruf gibt keinen Zustand oder Fehlercodes zurück. Zur besseren
- Kontrolle wird empfohlen die ROM BIOS Routine (int 14h) zu benutzen oder
- einen AUX Gerätetreiber zu schreiben und benutzen IOCTL.
- 2) falls Ctrl-C von STDIN eingegeben wird, int 23h wird ausgeführt.
- 3) vorgegeben ist COM1 falls dieser nicht von DOS umgeleitet wird.
- 4) falls das Gerät beschäftigt ist, wartet diese Funktion solange bis es bereit ist.
- 5) TOS:$ 04 Hilfsausgabe. Höherwertiges Byte sollte Null sein, niederwertiges Byte
- ist der ASCII Code.
-
-
- Funktion 05h Drucker Ausgabe
- schreiben Zeichen zu STDPRN
- Aufruf AL 05h
- DL ASCII Code des Zeichen zum senden
- Rückgabe keine
- Anmerkung 1) falls Ctrl-C von STDIN eingegeben wird, int 23h wird ausgeführt.
- 2) vorgegeben ist PRN oder LPT1 falls dieser nicht mit dem MODE Befehl umgeleitet wurde.
- 3) falls der Drucker beschäftigt ist, wartet diese Funktion solange bis er bereit ist.
- 5) TOS:$ 05 Drucker Ausgabe. Höherwertiges Byte von D0 ist Null, niederwertiges Byte ist Zeichen.
- Gibt -1 zurück, falls Zeichen erfolgreich gesendet wurde. Zeitüberschreitung nach 30
- Sekunden und setzt D0 auf Null.
-
-
- Funktion 06h direkte Console I/O
- holen Zeichen von STDIN; echo Zeichen zu STDOUT
- Aufruf AH 06h
- DL 0FFh für Console Eingabe, oder 00h-0FEh für Console Ausgabe
- Rückgabe ZF gesetzt wenn kein Zeichen verfügbar
- gelöscht wenn Zeichen empfangen wurde
- AL ASCII Code des Zeichens
- Anmerkung 1) erweiterte ASCII codes benötigen zwei Funktionsaufrufe. Der erste Aufruf gibt
- 00h als Hinweis zurück, das der nächste Aufruf eine erweiterten Code zurückgibt.
- 2) falls DL ist nicht 0FFh, DL nimmt an das es ein zulässiges Zeichen zur
- Ausgabe an STDOUT hat.
- 3) dies Funktion überprüft nicht auf Ctrl-C oder Ctrl-PrtSc.
- 4) Eingabe wird nicht am Bildschirm angezeigt.
- 5) falls I/O ist umgeleitet, EOF oder Platte voll wird nicht erkannt.
- 6) TOS:$ 06 RAWCONIO. Holen Zeichen von Tastatur bei Anruf mit $FF in
- D0. ASCII und Scancodes werden wie bei CONIN zurückgegeben. Falls ein anderer Wert
- als $FF benutzt wird, wird es zu STDOUT an der aktuell Cursorposition
- ausgegeben. Dieser Aufruf interpretiert alle Steuerzeichen und Escape Sequenzen.
-
-
- Funktion 07h direkt Console Eingabe ohne Echo (kontrolliert nicht auf BREAK)
- holen oder warten auf Zeichen von STDIN, gibt Zeichen in AL zurück
- Aufruf AH 07h
- Rückgabe AL ASCII Zeichen vom Standardeingabegerät
- Anmerkung 1) erweiterte ASCII codes benötigen zwei Funktionsaufrufe. Der erste Aufruf gibt
- 00h als Hinweis zurück, das der nächste Aufruf einen erweiterten Code zurückgibt.
- 2) dies Funktion überprüft nicht auf Ctrl-C oder Ctrl-PrtSc.
- 3) Eingabe kann umgeleitet werden.
- 4) TOS:$ 07 direkt CONIN ohne ECHO. Dasselbe wie Funktion 01h, ausser
- das die Zeichen nicht am Bildschirm angezeigt werden.
-
-
- Funktion 08h Console Eingabe ohne Echo (überprüft BREAK)
- holen oder warten auf Zeichen von STDIN, gibt Zeichen in AL zurück
- Aufruf AH 08h
- Rückgabe AL Zeichen vom Standardeingabegerät
- Anmerkung 1) Zeichen wird auf ctrl-C überprüft. Falls ctrl-C ist erkannt, ausführen int 23h.
- 2) für Funktionsaufruf 08h, erweiterte ASCII Zeichen benötigen zwei Funktionsaufrufe.
- Der erste Aufruf gibt 00h als Hinweis zurück, das der nächste Aufruf den
- eigentlichen erweiterten Code zurückgibt.
- 3) Eingabe kann umgeleitet werden. Falls umgeleitet, es gibt kein Weg um EOF festzustellen.
- 4) TOS:$ 08 CONIN ohne ECHO. Derselbe wie der vorhergehende Aufruf. (keine Kontrolle für
- Steuerzeichen).
-
-
- Funktion 09h anzeigen Zeichenkette
- Ausgabe Zeichen der anzuzeigenden Zeichenkette zu STDOUT
- Aufruf AH 09h
- DS:DX Zeiger zu der Zeichenkette die angezeigt werden soll
- Rückgabe keine
- Anmerkung 1) die Zeichenfolge in Speicher muß mit einem $ (24h) beendet sein
- 2) das $ wird nicht angezeigt, bleibt aber in AL erhalten.
- 3) Ausgabe zu STDOUT ist dasselbe wie Funktionsaufruf 02h.
- 4) TOS:$ 09 drucken Zeile. Die Adresse von der ASCIIZ Zeichenkette ist auf dem
- Stapel wie ein Parameter abgestellt und ist gedruckt an der aktuellen
- Cursorposition. Die Größe der Zeichenkette ist nicht begrenzt. D0 enthält die Anzahl
- der zu druckenden Zeichen. Steuerzeichen und Escape Sequenzen werden ausgewertet.
-
-
- Funktion 0Ah gepufferte Tastatureingabe
- liest Zeichen von STDIN und fügt diese in den Puffer ein, beginnend
- mit dem dritten Byte.
- Aufruf AH 0Ah
- DS:DX Zeiger zum Eingabepuffer
- Rückgabe keine
- Anmerkung 1) Min Puffer Größe=1, max=255.
- 2) Zeichen wird ctrl-C überprüft. Falls ctrl-C erkannt wird, ausführen int 23h.
- 3) Format von Puffer DX:
- Byte Inhalt
- 1 maximale Anzahl von Zeichen die der Puffer aufnimmt, einschließlich CR.
- Lesen STDIN und füllen des Puffers solange bis ein CR (<ENTER> oder 0Dh)
- gelesen wird. Falls der Puffer bis zur maximalen Anzahl -1 gefüllt ist
- jede zusätzliche Eingabe wird nicht beachtet und ASCII 7 (BEL) wird ausgegeben
- solange bis ein CR gelesen wird. (du mußt diesen Wert einstellen)
- 2 eigentliche Anzahl empfangener Zeichen, ohne CR welches immer das
- letzte Zeichen ist. (die Funktion setzt diesen Wert)
- 3-n eingebene Zeichen werden in dem Puffer ab hier abgestellt.
- Puffer muß mindestens so groß sein, wie die Nummer im 1.Byte.
- n+1 CR Zeichen( 0Dh).
- 4) Eingabe kann umgeleitet werden. Falls umgeleitet, es gibt kein Weg um EOF festzustellen.
- 5) die Zeichenkette kann mit den Standard DOS Editierbefehlen
- während der Eingabe editiert werden.
- 6) erweiterte ASCII Zeichen werden als 2 Bytes gespeichert, das erste Byte
- ist dann Null.
- 7) TOS:$ 0A READLINE. Abrufen CR-beendete Zeile von CONIN. Die Adresse
- des Puffer wird wie ein Parameter übergeben. Byte 1 ist die maximale Länge
- der Zeile, Byte 2 ist die Anzahl der eingegeben Zeichen, Byte 3 ist das
- erste Zeichen. Escape Sequenzen werden nicht interpretiert, dafür aber die
- normalen Steuerzeichen zum editieren.
-
-
- Funktion 0Bh kontrollieren Standardeingabe (STDIN) Status
- überprüft ob Zeichen an STDIN verfügbar sind
- Aufruf AH 0Bh
- Rückgabe AL 0FFh falls ein Zeichen von STDIN verfügbar ist
- 00h wenn kein Zeichen von STDIN verfügbar ist
- Anmerkung 1) überprüft auf Ctrl-C. Falls Ctrl-C erkannt wird, int 23h wird ausgeführt.
- 2) Eingabe kann umgeleitet sein.
- 3) überprüft auf Zeichen ausschließlich, es wird nicht in die Anwendung eingelesen
- 4) IBM berichtet, daß dieser Aufruf nicht richtig funktioniert unter dem DOSSHELL
- Programm in DOS 4.00 und 4.01. DOSSHELL gibt immer Null zurück. Diese
- Funktion arbeitet korrekt von der Befehlszeile oder einer Anwendung.
- 5) TOS:$ 0B CONSTAT. überprüft 64-byte OS Eingabepuffer.
-
-
- Funktion 0Ch löschen Tastaturpuffer & aufrufen einer Tastaturfunktion (FCB)
- Abbildung Puffer, ausführen Funktion in AL (01h, 06h, 07h, 08h, 0Ah ausschließlich)
- Aufruf AH 0Ch
- AL Funktionsnummer (muß sein 01h, 06h, 07h, 08h, oder 0Ah)
- Rückgabe AL 00h Puffer wurde gelöscht, keine andere Abarbeitung wurde ausgeführt
- andere irgendwelche anderen Werte haben keine Bedeutung
- Anmerkung 1) zwingt System zu warten bis ein Zeichen eingegeben wurde.
- 2) Löscht alle typeahead Eingaben, dann ausführen Funktion spezifiziert in AL (durch
- Übertragung in AH und wiederholend des int 21 Aufrufes).
- 3) falls AL ein Wert enthält, der nicht vorher aufgelistet wurde, (derartig wie 00h) der
- Eingabepuffer wird gelöscht und keine andere Handlung durchgeführt. Anmerkung daß dies
- der STDIN Puffer ist und nicht der eigentliche Tastaturpuffer. Der Tastatur-
- puffer wird nicht gelöscht, falls die Eingabe umgeleitet ist.
-
-
- Funktion 0Dh Platte zurücksetzen
- Übertragen alle aktuellen offenen Dateipuffer zur Platte
- Aufruf AH 0Dh
- Rückgabe keine
- Anmerkung 1) schließt nicht die Dateien. Aktualisiert nicht die Einträge im Inhaltsverzeichnis; geänderte Dateien
- die die Größe verändert haben, aber nicht geschlossen werden, werden im Inhaltsverzeichnis nicht korrekt aufgezeichnet.
- 2) setzt DTA Adresse auf DS:0080h
- 3) sollte vor einem Plattewechsel benutzt werden, Ctrl-C Handler, und zum übertragen
- der Puffer zur Platte.
- 4) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 0Eh Auswahl des aktuellen Laufwerks
- wählt das Laufwerk spezifiziert in DL (falls zulässig) als aktuelles Laufwerk aus
- Aufruf AL 0Eh
- DL neue aktuelle Laufwerksnummer (0=A:, 1=B:, 2=C:, etc.)
- Rückgabe AL Anzahl physischer Laufwerke, falls nicht LASTDRIVE= in der CONFIG.SYS
- angegeben wurde und eine höher Nummer als die vom letzten physischen
- Laufwerk spezifiziert.
- Anmerkung 1) für DOS 1.x und 2.x, der minimale Wert für AL ist 2.
- 2) für DOS 3.x und 4.x, der minimale Wert für AL ist 5.
- 3) die zurückgegebene Laufwerksnummer ist nicht zwangsläufig ein zulässig Laufwerk.
- 4) für DOS 1.x: 16 logische Laufwerke sind verfügbar, A-P.
- Für DOS 2.x: 63 logische Laufwerke sind verfügbar. (Buchstaben sind ausschließlich benutzt für
- die ersten 26 Laufwerke. Falls mehr als 26 logische Laufwerke benutzt
- werden, weitere Laufwerksbuchstaben sind andere ASCII Zeichen wie
- {,], etc.
- Für DOS 3.x, 4.x: 26 logische Laufwerke sind verfügbar, A-Z.
- 5) TOS:$ 0E SETDRV. Ein 16-bit Parameter mit drivespec wird an TOS übergeben.
- Beim beenden, enthält D0 die Nummer des Laufwerk das vorher aktiv war.
- (Nicht die Anzahl der vorhandenen Laufwerke)
- 6) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 0Fh öffnen Datei (FCB)
- durchsucht das aktuell Inhaltsverzeichnis nach dem spezifizierten Dateiname und
- plaziert die wichtigen Information in den Dateikontrollblock.
- Aufruf AH 0Fh
- DS:DX Zeiger zu einem ungeöffneten FCB
- Rückgabe AL 00h falls Datei gefunden
- 0FFh falls Datei nicht gefunden
- Anmerkung 1) falls der Laufwerkscode war 0 (aktuelles Laufwerk) wird er geändert zu dem eigentlich
- Laufwerk das benutzt wird (1=A:, 2=B:, 3=C:, etc). Dies erlaubt das ändern des aktuellen Laufwerks
- ohne störend auf nachträglich Transaktionen dieser Datei zu wirken.
- 2) das aktuelle Blockfeld (FCB Bytes C-D, Offset 0Ch) wird auf Null eingestellt.
- 3) die Satzlänge mit der gearbeitet wird (FCB Bytes E-F, Offset 0Eh) wird
- auf den vom System vorgegebenen Wert von 80h gesetzt. Die Größe der Datei (Offset 10h) und
- das Datum (Offset 14h) sind eingestellt auf die Information die dem Hauptverzeichnis
- entnommen wurden. Der Standardwert für die Satzlänge (FCB Bytes E-F) kann geändert werden,
- oder einstellen der wahlfreien Satzlänge und/oder des aktuellen Satzfeldes.
- Diese Aktionen können erst nach dem öffnen durchgeführt werden, aber
- bevor irgendeine Festplattentransaktionen durchgeführt wird.
- 4) mit DOS 3.x die Datei wird im Kompatibilitätsmodus geöffnet. (Netzwerk)
- 5) Microsoft empfiehlt die Benutzung des Funktionsaufruf 3Dh dafür.
- 6) dieses Aufruf wird auch von dem APPEND Befehl in DOS 3.2+ benutzt
- 7) bevor eine sequentielle Festplatteoperation auf die Datei durchgeführt wird,
- muß das aktuelle Satzfeld (Offset 20h) eingestellt werden. Bevor ein wahlfreier
- Zugriff auf die Datei durchgeführt wird, muß das entsprechende Feld
- (Offset 21h) gesetzt werden. Falls die vorgegeben Satzlänge von 128 Bytes
- falsch ist, muß diese auf den richtigen Wert eingestellt werden.
-
-
- Funktion 10h Datei schließen (FCB)
- schließt eine Datei nach dem schreiben
- Aufruf AH 10h
- DS:DX Zeiger zu einem geöffneten FCB
- Rückgabe AL 00h falls die Datei gefunden und geschlossen wurde
- 0FFh falls die Datei im aktuellen Inhaltsverzeichnis nicht gefunden wurde
- Anmerkung 1) dieses Funktionsaufruf muß bei einer offenen Datei die nicht mehr benötigt wird gemacht werden,
- und nach einem Schreibzugriff, damit sichergestellt ist, das alle Information im Inhaltsverzeichnis
- aktualisiert werden.
- 2) falls die Datei im aktuellen Inhaltsverzeichnis nicht gefunden wird,
- wird in AL 0FFh zurückgegeben, weil vermutet wird, das die Diskette gewechselt wurde.
- Wie verlautet, ist diese Fehlerangabe nicht absolut verläßlich mit der DOS
- Version 2.x.
- 3) falls gefunden, wird das Inhaltsverzeichnis aktualisiert, die Puffer werden
- übertragen, und AL gibt 00h zurück.
- 4) da ist ein spitzfindiger aber gefährlicher Fehler in dieser Funktion. Falls eine
- Datei geschlossen wird, die vorher nicht mit einem erfolgreichen OPEN Befehl
- geöffnet wurde, wird die Dateilänge auf Null gesetzt, und die Cluster die
- der Datei zugewiesen waren werden freigegeben.
-
-
- Funktion 11h suche ersten Directory-Eintrag (FCB)
- durchsucht das aktuelle Laufwerk & Inhaltsverzeichnis nach dem ersten Auftreten eines Dateinamens
- Aufruf AH 11h
- DS:DX Zeiger zur Adresse vom FCB
- Rückgabe AL 00h Suche war erfolgreich
- 0FFh Datei nicht gefunden
- Anmerkung 1) der FCB kann die Wildcard Zeichen ? unter DOS 2.x, und ? oder *
- unter 3.x und 4.x enthalten.
- 2) der original FCB an DS:DX enthält die Information um die Suche mit
- der Funktion 12h fortzusetzen, und sollte nicht modifiziert werden.
- 3) falls eine Datei gefunden wurde, gibt AL 00h zurück und die Adressen an der
- Adresse des Diskettentransferbereichs wird wie folgt eingestellt:
- a) falls der FCB zur Durchsuchung ein erweiterter FCB war, dann wird das erste
- Byte an dem Diskettentransferbereich auf 0FFh gesetzt, gefolgt von 5 Bytes
- mit Nullen, dann das Attributbyte von der Datei, dann die benutzte
- Laufwerksnummer (1=A, 2=B, etc) und dann die 32 Bytes von dem Inhaltsverzeichnis
- Eintrag. So, die Adresse des Diskettentransferbereiches enthält ein zulässig ungeöffneten FCB
- mit der derselbe suchen schreibt zu wie der suchen FCB.
- b) falls der FCB zur Durchsuchung ein normaler FCB war, dann enthält das erste
- Byte die benutzte Laufwerksnummer (1= A, 2= B, etc), und die nächsten 32
- Bytes enthalten den Inhaltsverzeichnis Eintrag. So, der Diskettentransferbereich
- enthält einen zulässigen ungeöffneten normalen FCB.
- 4) falls ein erweiterter FCB benutzt wird, gilt folgendes Suchmuster:
- a) falls das FCB Attributbyte Null ist, ausschließlich normale Dateieinträge werden
- gefunden. Einträge fürs Datenträgeretikett, Unterverzeichnisse, versteckte oder System-
- dateien, werden nicht zurückgegeben.
- b) falls das Attributbyte auf versteckte oder Systemdateien, oder
- Unterverzeichniseinträge eingestellt ist, es wird als inklusives Suchen erachtet.
- Alle normal Dateieinträge plus alle übereinstimmenden Einträge mit den spezifizierten
- Attributen werden zurückgegeben. Um alle Directory-Einträge außer dem Datenträgeretikett
- zu erhalten, das Attributbyte kann auf versteckt + system + Inhaltsverzeichnis
- (alle 3 Bits an) eingestellt werden.
- c) falls der Attributfeld für dein Datenträgeretikett eingestellt ist, es wird als
- exklusives Suchen behandelt, und ausschließlich der Datenträgeretikett Eintrag wird zurückgegeben.
- 5) dies Aufruf wird auch von dem APPEND Befehl in DOS 3.2+ benutzt
-
-
- Funktion 12h suchen nächsten Directory-Eintrag (FCB)
- suchen nach den Auftreten von weiteren Dateinamen
- Aufruf AH 12h
- DS:DX Zeiger zum ungeöffneten FCB spezifiziert durch dir vorhergehende Suchen
- ersten (11h) oder suchen nächsten (12h)
- Rückgabe AL 00h falls weitere Dateinamen gefunden wurden
- 0FFh falls keine weitere Dateinamen gefunden wurden
- Anmerkung 1) nachdem ein übereinstimmendenr Dateiname mit dem Funktionsaufruf 11h gefunden wurde,
- Funktion 12h kann dazu benutzt werden, den nächsten übereinstimmenden Dateinamen
- zu suchen, nach einer unklaren Anforderung. Für DOS 2.x, ? sind in dem Dateiname
- zugelassen. Für DOS 3.x und 4.x, globale (*) Dateinamen Zeichen sind zugelassen.
- 2) die DTA enthält Information von der vorhergehende ersten Suche oder der nächsten Suche.
- 3) Es sollten keine Transaktionen auf dem Laufwerk mit diesem FCB zwischen einer vorhergehenden
- Funktion 11h oder 12h Aufruf und diesem erfolgen. "nicht dokumentierte" Felder im FCB
- werden benutzt, um notwendige Information für die Dauer der Suchen zu speichern, und
- einige Laufwerks Transaktionen können diese Bereiche überschreiben.
- 4) falls die Datei gefunden wurde, ein FCB ist erstellt an der DTA Adresse und
- darauf eingestellt diese zu öffnen oder zu löschen.
-
-
- Funktion 13h Datei löschen (FCB)
- löscht die im FCB spezifizierte Datei vom aktuellen Inhaltsverzeichnis
- Aufruf AH 13h
- DS:DX Zeiger zu der Adresse des FCBs
- Rückgabe AL 00h Datei wurde gelöscht
- 0FFh falls Datei nicht gefunden wurde oder nur Lesezugriff möglich ist
- Anmerkung 1) alle übereinstimmenden aktuellen Inhaltsverzeichniseinträge werden gelöscht. Das globale Dateiname
- Zeichen "?" ist in dem Dateiname zugelassen.
- 2) löschen keine Dateien mit dem Nur Lesen(read-only) Attribut
- 3) schließt offene Dateien bevor diese gelöscht werden.
- 4) verlangt Netzwerk Zugriffsrechte.
- 5) dieses Aufruf unterstützt Wildcards und ist sehr schnell. Der "neue" Aufruf
- 41h ist vermutlich dazu da, diesen zu ersetzen, seit es Unterver-
- zeichnisse gibt. Leider unterstützt die fn 41h keine Wildcards.
-
-
- Funktion 14h Datei sequentiell lesen (FCB)
- liest Datensätze sequentiell vom Laufwerk via FCB
- Aufruf AH 14h
- DS:DX Zeiger zu einem geöffneten FCB
- Rückgabe AL 00h erfolgreich gelesen
- 01h Dateiende (keine Daten gelesen)
- 02h DTA Bereich zu klein für die spezifizierte Satzlänge
- oder Segment Überlauf
- 03h Datensatz teilweise gelesen, EOF gefunden
- Anmerkung 1) die Satzlänge wird auf den Wert vom Offset 0Eh in dem FCB gesetzt.
- 2) der Satz zeigt auf den aktuellen Block (Offset 0Ch) und das aktuelle
- Satzfeld (Offset 20h) ist geladen an die DTA, dann der aktuelle Block
- und das aktuelle Satzfeld werden erhöht.
- 3) der Satz wird in den Speicher gelesen an die aktuelle DTA Adresse wie spezifiziert
- von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
- die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
- der Fehlercode in AL wird auf 02h eingestellt.
- 4) falls ein teilweiser Satz am Ende der Datei gelesen wurde, wird die angeforderte
- Größe mit Nullen aufgefüllt und der Fehlercode in AL wird auf 03h eingestellt.
-
-
- Funktion 15h Datei sequentiell schreiben (FCB)
- schreibt Sätze spezifiziert durch den FCB sequentiell zum Laufwerk
- Aufruf AH 15h
- DS:DX Zeiger zur Adresse vom FCB
- Rückgabe AL 00h erfolgreiches schreiben
- 01h Disk voll, schreiben wurde annulliert
- 02h Diskettentransferbereich (DTA) zu klein oder Segment eingewickelt
- Anmerkung 1) die zu schreibenden Daten wedren dem Diskettentransferbereich entnommen.
- 2) die Satzlänge ist auf den Wert vom Offset 0Eh in dem FCB eingestellt.
- 3) diese Funktion kann nicht schreiben, wenn die Dateien mit dem Nur-Lesen Attribut versehen ist.
- 4) der Satz zeigt auf den aktuellen Block (Offset 0Ch) und das aktuelle
- Satzfeld (Offset 20h) ist geladen an die DTA, dann der aktuelle Block
- und das aktuelle Satzfeld werden erhöht.
- 5) falls die Satzlänge kleiner als ein Sektor ist, die Daten in der DTA in einem Puffer
- geschrieben; der Puffer wird auf die Platte geschrieben, sobald er einen voll Sektor
- von Daten enthält, die Datei geschlossen wird, oder ein Zurücksetzen der Platte (Funktion 0Dh) ist
- erfolgt.
- 3) der Satz wird an die aktuelle DTA Adresse geschrieben, wie spezifiziert
- von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
- die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
- der Fehlercode in AL wird auf 02h eingestellt.
-
-
- Funktion 16h erstellen einer Datei (FCB)
- suchen und öffnen oder erstellen Inhaltsverzeichnis Eintrag für Datei
- Aufruf AH 16h
- DS:DX Zeiger zu einem FCB
- Rückgabe AL 00h erfolgreiche Erstellung
- 0FFh kein Platz im Inhaltsverzeichnis
- Anmerkung 1) falls ein vorhandener Inhaltsverzeichnis Eintrag gefunden wird, die Datei
- wird auf die Länge von Null Bytes zurückgesetzt.
- 2) falls keine Datei vorhanden ist, wird eine erstellt.
- 3) dieser Funktionsaufrufe benutzt Funktion 0Fh (öffnen Datei) nach dem erstellen oder
- zurücksetzen einer Datei.
- 4) ein versteckte Datei kann erstellt werden, indem ein erweiterter FCB mit dem
- Attribut Byte (Offset FCB-1) 2 benutzt wird.
-
-
- Funktion 17h umbenennen Datei spezifiziert durch den Dateikontrollblock (FCB)
- Umbenennen einer Datei im aktuellen Inhaltsverzeichnis
- Aufruf AH 17h
- DS:DX Zeiger zu einem FCB (siehe Anmerkung 4)
- Rückgabe AL 00h erfolgreiche Umbenennung
- 0FFh Datei nicht gefunden oder Dateiname existiert schon
- Anmerkung 1) diese Funktion kann nicht Nur-lesen Dateien umbenennen.
- 2) der "?" wildcard kann benutzt werden.
- 3) falls der "?" wildcard beim zweiten Dateinamen benutzt wird, der entsprechende
- Buchstabe in dem Dateinamen von dem Inhaltsverzeichnis Eintrag wird nicht geändert.
- 4) ein besonders modifizierter FCB wird benutzt. Es muß eine Laufwerksnummer haben, Dateiname,
- und Erweiterung in der normalen Position, und ein zweiter Dateiname startend 6
- Bytes nach der ersten, an Offset 11h. Dies ist normalerweise ein "reservierter"
- Bereich.
- 5) die zwei Dateien dürfen nicht denselben Namen haben.
- 6) FCB enthält den neuen Name beginnend an Byte 17h.
-
-
- Funktion 18h DOS intern
- * Unbekannt - wie verlautet nicht benutzt
- Aufruf AH 18h
- Rückgabe AL 00h
-
-
- Funktion 19h holen aktuelles Laufwerk
- Rückgabe Bestimmung desn aktuellen Laufwerks
- Aufruf AH 19h
- Rückgabe AL aktuelles Laufwerk (0=A, 1=B, etc.)
- Anmerkung 1) einige andere DOS Funktionen benutzen 0 für aktuelles, 1=A, 2=B, etc.
- 2) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 3) TOS:$ 19 aktuelles Laufwerk. D0 gibt die Nummer des Laufwerks zurück (0=A:)
-
-
- Funktion 1Ah einstellen Diskettentransferbereich Adresse (DTA)
- setzt DTA Adresse auf die spezifizierte Adresse in DS:DX
- Aufruf AH 1Ah
- DS:DX Zeiger zum DTA Puffer
- Rückgabe keine
- Anmerkung 1) der vorgegeben DTA ist 128 Bytes an Offset 80h in der PSP. Der eigene DTA kann
- auf irgendeine Größe und Stelle gesetzt werden. Der DTA sollte groß genug sein
- um den größtmöglich zu schreibenden Satz zu enthalten.
- 2) Register sind unverändert.
- 3) keine Fehlercodes werden zurückgegeben.
- 4) Der Diskettentransferbereich kann nicht vom Ende des Segments zu dem
- Anfang gewickelt werden oder ein Überlauf in ein anderes Segment.
- 5) DOS benutzt den DTA für Datei I/O. (siehe Abschnitt 6)
- 6) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 7) TOS:$ 1A einstellen Diskettentransferbereich Adresse. Setzt ein 44-byte Puffer
- für Laufwerks Transaktionen.
-
-
- Funktion 1Bh hole Information zur Dateibelegungstabelle vom aktuellen Laufwerk
- gibt zurück Information von der FAT auf dem aktuellen Laufwerk
- Aufruf AH 1Bh
- Rückgabe AL Anzahl Sektoren pro Belegungseinheit (Cluster)
- CX Anzahl Bytes pro Sektor
- DS:BX Adresse von dem Mediumbeschreibungsbyte des aktuellen Laufwerkes
- DX Anzahl Belegungseinheiten (Clusters) für vorgegeben Laufwerk
- Anmerkung 1) sichern DS bevor diese Funktion aufgerufen wird.
- 2) dieser Aufruf gab in DOS 1.x ein Zeiger zu der FAT zurück. Ab DOS 2.00
- wird ausschließlich ein Zeiger zu de ID Byte der Tabelle zurückgegeben.
- 3) IBM empfiehlt Programmierern dies Aufruf zu vermeiden und dafür int 25h zu benutzen .
- 4) Offset DS:[BX-1] ist das schmutzig Byte für der Tabelle: 00=sauber, 01=schmutzig.
- 5) DOS 2.x+ und darüber halten die FAT nicht im RAM. Diese Funktion sollte nicht
- benutzt werden, um auf die FAT zuzugreifen. Funktion 36 ist bevorzugt.
-
-
- Funktion 1Ch holen Dateibelegungstabelle Information für angegebenes Gerät
- gibt zurück Information des spezifizierten Laufwerks
- Aufruf AH 1Ch
- DL Laufwerksnummer (1=A, 2=B, 3=C, etc)
- Rückgabe AL Anzahl Sektoren pro Belegungseinheit (Cluster)
- 0FFh ungültige Laufwerks Angabe
- DS:BX Adresse vom Mediumbeschreibungsbyte für Laufwerk in DL
- CX Sektorgröße in Bytes
- DX Anzahl Belegungseinheiten (Clusters)
- Anmerkung 1) setze DL= 0 für aktuelles Laufwerk.
- 2) sichern DS bevor diese Funktion aufgerufen wird.
- 3) Format des media-descriptor Bytes:
- Bits: 0 0 (gelöscht) nicht doppelseitig
- 1 (gesetzt) doppelseitig
- 1 0 (gelöscht) nicht 8 Sektor
- 1 (gesetzt) 8 Sektor
- 2 0 (gelöscht) kein auswechselbares Gerät
- 1 (gesetzt) auswechselbar Gerät
- 3-7 immer gesetzt (1)
- 4) dieser Aufruf gab in DOS 1.x ein Zeiger zu der FAT zurück. Ab DOS 2.00
- wird ausschließlich ein Zeiger zu de ID Byte der Tabelle zurückgegeben.
- 5) IBM empfiehlt Programmierern dies Aufruf zu vermeiden und dafür int 25h zu benutzen .
- 6) diese Funktion liest ausschließlich den BPB und ist sehr schnell.
-
-
- Funktion 1Dh nicht dokumentiert von Microsoft
- * Unbekannt - wie verlautet nicht benutzt
- Aufruf AH 1Dh
- Rückgabe AL 00h
-
-
- Funktion 1Eh nicht dokumentiert von Microsoft
- * Unbekannt - wie verlautet nicht benutzt
- Aufruf AH 1Eh
- Rückgabe AL 00h
- Anmerkung tut scheinbar nichts.
-
-
- Funktion 1Fh holen aktuellen Laufwerksparameterblock
- * dasselbe wie Funktionsaufruf 32h (unterhalb), außer daß auf die Tabelle
- des aktuellen Laufwerks zugegriffen wird
- Aufruf AH 1Fh
- andere Register Unbekannt
- Rückgabe AL 00h kein Fehler
- 0FFh Fehler
- DS:BX Zeiger zu DOS Laufwerksparameterblock für vorgegebenes Laufwerk.
- Anmerkung für DOS 2, 3, 4.x, dies ruft nur die Funktion 32h (nicht dokumentiert,
- lesen DOS Laufwerksblock) mit DL=0 auf.
-
-
- Funktion 20h Unbekannt
- * intern - tut nichts?
- Aufruf AH 20h
- Rückgabe AL 00h
-
-
- Funktion 21h wahlfreies lesen einer Datei spezifiziert durch den Dateikontrollblock (FCB)
- liest ein Satz wie spezifiziert in dem FCB von der aktuellen DTA.
- Aufruf AH 21h
- DS:DX Adresse von dem geöffneten FCB
- Rückgabe AL 00h erfolgreich gelesen
- 01h Dateiende (EOF), keine Daten gelesen
- 02h DTA für die spezifizierte Satzlänge zu klein
- 03h Dateiende (EOF), teilweise Daten gelesen
- Anmerkung 1) der aktuelle Block und das aktuelle Satzfeld sind eingestellt um zusammenzupassen mit dem
- wahlfreien Aufzeichnungsfeld. Der Satz der durch diese Felder adressiert ist, wird dann gelesen
- in den Speicher an der aktuellen Diskettentransferbereich Adresse.
- 2) der aktuelle Dateizeiger wird durch diese Funktion nicht erhöht.
- 3) falls der DTA größer als die Datei ist, wird die Datei bis zu der angeforderten
- Länge mit Nullen aufgefüllt.
-
-
- Funktion 22h wahlfreies schreiben einer Datei spezifiziert durch den FCB (FCB)
- schreibt ein Satz wie spezifiziert in dem FCB zu der aktuellen DTA
- Aufruf AH 22h
- DS:DX Adresse von dem geöffneten FCB
- Rückgabe AL 00h erfolgreich geschrieben
- 01h Platte voll; keine Daten geschrieben (schreiben wurde annulliert)
- 02h DTA für die spezifizierte Satzlänge zu klein (schreiben wurde annulliert)
- Anmerkung 1) diese Funktion kann nicht schreiben, wenn die Dateien mit dem Nur-Lesen Attribut versehen ist.
- 2) der Satz zeigt auf den aktuellen Block (Offset 0Ch) und das aktuelle
- Satzfeld (Offset 20h) ist an die DTA geladen, danach werden der aktuelle
- Block und das aktuelle Satzfeld erhöht.
- 3) falls die Satzlänge kleiner als ein Sektor ist, die Daten in der DTA in einem Puffer
- geschrieben; der Puffer wird auf die Platte geschrieben, sobald er einen voll Sektor
- von Daten enthält, die Datei geschlossen wird, oder ein Zurücksetzen der Platte (Funktion 0Dh) ist
- erfolgt.
- 4) der aktuelle Dateizeiger wird durch diese Funktion nicht erhöht.
- 5) der Satz wird an die aktuelle DTA Adresse geschrieben, wie spezifiziert
- von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
- die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
- der Fehlercode in AL wird auf 02h eingestellt.
-
-
- Funktion 23h holen Dateigröße (FCB)
- durchsucht das aktuelle Unterverzeichnis nach einer Datei, und gibt deren Größe im FCB zurück
- Aufruf AH 23h
- DS:DX Adresse von einem ungeöffneten FCB
- Rückgabe AL 00h Datei gefunden
- 0FFh Datei nicht gefunden
- Anmerkung 1) Satzlängenfeld (Offset 0Eh) muß eingetragen werden, bevor diese Funktion aufgerufen wird
- 2) das Inhaltsverzeichnis wird nach dem angegebenen Dateinamen durchsucht. Falls ein
- Eintrag gefunden wird, wird das wahlfreie Aufzeichnungsfeld auf die Anzahl Sätze
- in der Datei eingestellt. Falls der Wert von dem Satzlängenfeld ein nicht gerader Divisor
- der Dateigröße ist, wird der Wert im relativen Aufzeichnungsfeld aufgerundet.
- Dies ergibt dann einen größeren Wert als die eigentliche Dateigröße
- 3) dies Aufruf wird von dem APPEND Befehl in DOS 3.2+ benutzt
-
-
- Funktion 24h einstellen Relatives Aufzeichnungsfeld (FCB)
- einstellen wahlfreies Aufzeichnungsfeld spezifiziert durch den FCB
- Aufruf AH 24h
- DS:DX Adresse von einem geöffneten FCB
- Rückgabe wahlfreies Aufzeichnungsfeld vom FCB ist auf denselben Wert wie der aktuelle Block
- und der aktuelle Satz eingestellt.
- Anmerkung 1) diese Funktion muß aufgerufen werden, bevor ein wahlfreier Dateizugriff erfolgt.
- 2) das relative Aufzeichnungsfeld vom FCB (Offset 21h) ist auf denselben Wert wie der
- aktuelle Block (Offset 0Ch) und der aktuelle Satz (Offset 20h) eingestellt.
- 3) keine Fehlercodes werden zurückgegeben.
- 4) der FCB muß geöffnet sein.
-
-
- Funktion 25h einstellen Interrupt Vektor
- Setzt die Adresse von dem Code den DOS immer dann durchführt, wenn der spezifizierte
- Interrupt aufgerufen wird.
- Aufruf AH 25h
- AL Interrupt Nummer
- DS:DX Adresse vom neuen Interrupt Vektor
- Rückgabe keine
- Anmerkung 1) Register sind unverändert.
- 3) keine Fehlercodes werden zurückgegeben.
- 3) die Interruptvektor-Tabelle für die spezifizierte Interrupt Nummer in AL
- ist auf die Adresse in DS:DX eingestellt. Benutze Funktion 35h (holen Vektor)
- um die Inhalte von dem Interrupt Vektor zu holen und es für die spätere Benutzung zu sichern.
- 4) sobald die Funktion 25 zum einstellen eines Interrupt Vektors benutzt wird, DOS 3.2 zeigt
- nicht auf der eigentlichen angeforderten Interrupt Vektor. Dafür, es
- setzt den Interrupt Vektor auf eine Routine im DOS, welche folgendes tut:
- 1. Sichern alten Stapelzeiger
- 2. Umschalten zum neuen Stapelzeiger von DOS's Stapel Pool
- 3. Aufrufen der neuen Routine
- 4. Umspeichern alten Stapelzeiger
- der Zweck hierfür war, einen möglichen Stapelüberlauf zu verhindern, sobald
- eine groß Anzahl von Interrupts aktiv ist. IBM war betroffen (dies war eine
- IBM Änderung, nicht Microsoft) daß auf ein Token Ring Netzwerk wo
- eine Gruppe von Interrupts in Betrieb genommen werden, und das den Anwendungen
- nicht mehr viel Platz auf dem Stapel übrig blieb.
- 5) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 26h erstellen neues Programm Segment Prefix (PSP)
- diese Funktion kopiert das aktuell Program-Segment Prefix zu einer neuen Speicher-
- stelle für die Erstellung eines neuen Programms oder Overlay. Wenn das neue PSP
- erstellt ist, ein DOS Programm kann eine DOS COM oder Overlay Datei an die Speicher-
- stelle unmittelbar nach dem neuen PSP lesen und an dem die Ablaufsteuerung übergeben.
- Aufruf AH 26h
- DX Segmentadresse für das neue PSP
- Rückgabe aktuelles PSP ist zu dem spezifizierten Segment kopiert
- Anmerkung 1) Microsoft empfiehlt die Benutzung der neuen DOS Funktion 4Bh (EXEC) dafür.
- 2) der vollständige 100h Bereich an Stelle 0 in dem aktuellen PSP wird an die
- Stelle 0 von dem neuen PSP kopiert. Der Information an Stelle 6 zur Speichergröße
- wird im neuen Segment aktualisiert und die aktuelle Beendigungs, ctrl-break,
- und kritische Fehler Adressen von den Interruptvektor-Tabelle Einträgen für
- ints 22h, 23h, und 24 sind gesichert in dem neu Programm Segment beginnend ab
- 0Ah. Sie werden wiederhergetellt von diesem Bereich sobald das Programm beendet wird.
- 3) der PSP Aufbau ist in Abschnitt 6 beschrieben.
-
-
- Funktion 27h wahlfreies lesen eines Blockes der Datei spezifiziert durch den FCB
- ähnlich wie 21h (wahlfreies lesen), außer es erlaubt mehrere Sätze zu lesen.
- Aufruf AH 27h
- CX Anzahl der zu lesenden Sätze
- DS:DX Adresse von einem geöffneten FCB
- Rückgabe AL 00h erfolgreich gelesen
- 01h Dateiende, keine Daten gelesen
- 02h DTA zu klein für die spezifizierte Satzlänge (lesen annulliert)
- 03h Dateiende
- CX Anzahl der gelesenden Sätze (beinhaltet auch Teilsätze falls AL= 03h)
- Anmerkung 1) die Satzlänge ist in dem FCB spezifiziert. Die Funktion aktualisiert den aktuellen
- Block (Offset 0Ch) und das aktuelle Satzfeld (Offset 20h) zu dem nächsten
- nicht gelesenen Satz.
- 2) falls CX beim Aufruf 0 enthält, ist dies ein NOP.
- 3) falls der DTA ist größer als die Datei, die Datei wird mit Nullen auf
- die angeforderte Länge aufgefüllt.
- 4) diese Funktion nimmt an daß das FCB Satzlängenfeld (0Eh) korrekt eingestellt ist.
- Falls es nicht vom Anwender eingestellt wird, gilt der vorgegebene Wert 128 Bytes.
- 3) der Satz wird in den Speicher gelesen an die aktuelle DTA Adresse wie spezifiziert
- von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
- die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
- der Fehlercode in AL wird auf 02h eingestellt.
-
-
- Funktion 28h wahlfreies schreiben eines Blockes zur Datei spezifiziert durch den FCB
- ähnlich wie 27h (wahlfreies lesen), außer es erlaubt mehrere Sätze zu schreiben.
- Aufruf AH 28h
- CX Anzahl zu schreibender Sätze
- DS:DX Adresse von einem geöffneten FCB
- Rückgabe AL 00h erfolgreich geschrieben
- 01h Platte voll, keine Daten geschrieben
- 02h DTA zu klein für die spezifizierte Satzlänge (schreiben annulliert)
- CX Anzahl geschriebener Sätze
- Anmerkung 1) die Satzlänge ist in dem FCB spezifiziert.
- 2) diese Funktion belegt Platten Cluster wie verlangt.
- 3) diese Funktion nimmt an daß das FCB Satzlängenfeld (0Eh) korrekt eingestellt ist.
- Falls es nicht vom Anwender eingestellt wird, gilt der vorgegebene Wert 128 Bytes.
- 4) die Satzlänge ist in dem FCB spezifiziert. Die Funktion aktualisiert den aktuellen
- Block (Offset 0Ch) und das aktuelle Satzfeld (Offset 20h) zu dem nächsten
- nicht gelesenen Satz.
- 5) der Satz wird an die aktuelle DTA Adresse geschrieben, wie spezifiziert
- von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
- die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
- der Fehlercode in AL wird auf 02h eingestellt.
- 6) falls CX beim Auruf 0 enthält, werden keine Sätze geschrieben, aber die Dateigröße des FCB's
- Eintrags (Offset 1Ch) wird auf die Größe gesetzt, die im relativen
- Satzfeld (Offset 21h) des FCB's spezifiziert ist.
-
-
- Funktion 29h analysieren der Befehlszeile für Dateiname
- überträgt einen Dateinamen einer ASCII-Zeichenkette in die Felder von einem Dateikontrollblock
- Aufruf AH 29h
- DS:SI Zeiger zu der zu analysierenden Zeichenkette
- ES:DI Zeiger zum Speicherpuffer zum ausfüllen mit dem ungeöffneten FCB
- AL Bit Maske zur Steuerung der Syntaxanalyse
- Bit 0 0 Syntaxanalyse hält an, falls ein Datei Seperator gefunden wird
- 1 veranlässt die Funktion den Dateinamen auf zu entfernenden führende Zeichen wie
- Leerzeichen zu untersuchen. Andernfalls wird angenommen, das der Dateiname
- mit dem ersten Byte beginnt
- 1 0 Laufwerksnummer im FCB wird auf Standardlaufwerk (0) gesetzt, falls
- die Zeichenkette keine Laufwerksnummer enthält
- 1 Laufwerksnummer im FCB wird nicht geändert
- 2 0 Dateiname im FCB wird auf 8 Leerzeichen gesetzt, wenn kein Dateiname in der
- Zeichenkette ist
- 1 Dateiname im FCB wird nicht geändert falls die Zeichenkette kein
- Dateiname enthält
- 3 0 Erweiterung im FCB wird auf 3 Leerzeichen gesetzt, wenn keine Erweiterung in
- der Zeichenkette ist
- 1 Erweiterung bleibt unverändert
- 4-7 muß Null sein
- Rückgabe AL 00h keine Wildcards im Name oder in der Erweiterung
- 01h Wildcards im Name oder in der Erweiterung vorhanden
- 0FFh ungültiges Laufwerk specifiert
- DS:SI Zeiger zu dem ersten Byte nach der Zeichenkette
- ES:DI Zeiger zum Puffer mit der dem ungeöffneten FCB gefüllt ist
- Anmerkung 1) falls das * Wildcard Zeichen in der Befehlszeile gefunden wurde, diese Funktion
- ersetzt nachträglich alle Zeichen in dem FCB mit Fragezeichen.
- 2) diese Funktion benutzt die Zeichen als Dateiname Seperatoren
- DOS 1 : ; . , + / [ ] = " TAB SPACE
- DOS 2,3,4 : ; . , + = TAB SPACE
- 3) diese Funktion benutzt die Zeichen
- : ; . , + < > | / \ [ ] = " TAB SPACE
- oder irgendein Steuerzeichen wie ein zulässigen Dateiname Seperator
- 4) ein Dateiname kann kein Dateiname Endezeichen enthalten. Falls eins enthalten ist,
- wird die Abarbeitung angehalten. Der Handle Funktionen erlauben die Benutzung
- von einigen dieser Zeichen.
- 5) wenn kein zulässig Dateiname in der Befehlszeile gefunden wurde, ES:DI+1 zeigt
- auf ein Leerzeichen (ASCII 32).
- 6) dies Funktion kann nicht mit Dateispezifikationen welche einen Pfad enthalten benutzt werden.
- 7) Syntaxanalyse ist in der Form D:Dateiname.EXT. Falls eine Datei gefunden wird, ein entsprechender
- ungeöffneter FCB wird an ES:DI zusammengesetzt.
-
-
- Funktion 2Ah holen Datum
- gibt den Tag der Woche, Jahr, Monat, und Datum zurück
- Aufruf AH 2Ah
- Rückgabe CX Jahr (1980-2099)
- DH Monat (1-12)
- DL Tag (1-31)
- AL Wochentag 00h Sonntag
- 01h Montag
- 02h Dienstag
- 03h Mittwoch
- 04h Donnerstag
- 05h Freitag
- 06h Samstag
- Anmerkung 1) Datum ist automatisch verstellt, falls der Taktgeber den nächsten Tag erreicht,
- und übernimmt das übersprungende Jahr und die Anzahl der Tage in jedem Monat in seinen Zähler.
- 2) obgleich DOS kein ungültiges Datum einstellen kann, kann es eines lesen, etwa
- 91/32/80, etc.
- 3) DesQview akzeptiert auch CX=4445h und DX=5351h, z.b. 'DESQ' als zulässig.
- 4) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 5) DOS nimmt CH=0 (Mitternacht) als eine zulässige Uhrzeit an, aber falls eine Datei die Uhrzeit
- hat, wird die Uhrzeit mit dem DIR Befehl nicht angezeigt. (außer DR-DOS)
- 6) TOS:$ 2A holen Datum.
-
-
- Funktion 2Bh einstellen Datum
- einstellen aktuelles Systemdatum
- Aufruf AH 2Bh
- CX Jahr (1980-2099)
- DH Monat (1-12)
- DL Tag (1-31)
- Rückgabe AL 00h kein Fehler (zulässiges Datum)
- 0FFh ungültiges Datum spezifiziert
- Anmerkung 1) beim Aufruf muß CX:DX ein zulässiges Datum in demselben Format wie
- es von dem Funktionsaufruf 2Ah zurückgegeben wird enthalten.
- 2) DOS 3.3+ setzt auch den CMOS Taktgeber.
- 3) unter der DesQview System Shell, dies ist die DV_GET_VERSION Kontrolle.
- Aufruf AH 2Bh
- AL 01h DesQ Aufruf
- CX 4445h 'DE' (ungültiges Datum benutzt
- DX 5351h 'SQ' für DesQview ID)
- Rückgabe AH übergeordnete Versionsnummer
- AL Nebenversion
- AX 0FFh DesQ nicht installiert (DOS Fehlercode)
- 4) für DESQview 2.00+, prüfen ob installiert
- Aufruf AH 2Bh
- AL Unterfunktion (DV v2.00+)
- 01h holen Version
- Rückgabe BX Version (BH=Haupt..., BL=Neben...)
- Anmerkung frühere Kopien von v2.00 geben 0002h zurück.
- 02h holen Schattenpuffer Information, und Start Schattierung
- Rückgabe BH Zeilen in Schattenpuffer
- BL Spalten in Schattenpuffer
- DX Segment vom Schattenpuffer
- 04h holen Schattenpuffer Information
- Rückgabe BH Zeilen in Schattenpuffer
- BL Spalten in Schattenpuffer
- DX Segment vom Schattenpuffer
- 05h Schattierung anhalten
- CX 4445h ('DE')
- DX 5351h ('SQ')
- Rückgabe AL 0FFh falls DESQview nicht installiert ist
- Anmerkung in DESQview v1.x, gab es keine Unterfunktionen; dieser Aufruf
- identifizierte ausschließlich ob DESQview geladen war oder nicht.
- 5) PC-Tools PC-Cache 5.1 (Multisoft Pufferspeicher) Installationsüberprüfung.
- Aufruf CX 4358h ('CX')
- Rückgabe AL 00h installiert
- CX 6378h
- 0FFh nicht installiert
- 6) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 7) TOS: holen Datum.
-
-
- Funktion 2Ch holen Uhrzeit
- holen aktuelle Systemzeit von Taktgeber$ Treiber
- Aufruf AH 2Ch
- Rückgabe CH Stunden (0-23)
- CL Minuten (0-59)
- DH Sekunden (0-59)
- DL hunderstel Sekunden (0-99)
- Anmerkung 1) Uhrzeit wird alle 5/100 Sekunde aktualisiert.
- 2) das Datum und die Uhrzeit sind im binären Format.
- 3) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS: holen Uhrzeit.
-
-
- Funktion 2Dh einstellen Uhrzeit
- einstellen aktuelle Systemzeit
- Aufruf AH 2Dh
- CH Stunden (0-23)
- CL Minuten (0-59)
- DH Sekunden (0-59)
- DL hunderstel Sekunden (0-99)
- Rückgabe AL 00h wenn kein Fehler
- 0FFh falls eine fehlerhafte Zeit angegeben wurde
- Anmerkung 1) DOS 3.3+ setzt auch den CMOS Taktgeber.
- 2) CX und DX muß eine zulässige Uhrzeit im binären Format enthalten.
- 3) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS: einstellen Uhrzeit.
-
-
- Funktion 2Eh einschalten/ausschalten VERIFY Schalter
- einstellen VERIFY Kennzeichen
- Aufruf AH 2Eh
- AL 00 um VERIFY auszuschalten (vorgegeben)
- 01 um VERIFY einzuschalten
- Rückgabe keine
- Anmerkung 1) dies ist der Aufruf der durch den DOS VERIFY Befehl ausgeführt wird.
- 2) Die Einstellung des VERIFY Schalters kann durch den Anruf 54h ermittelt werden.
- 3) dieser Aufruf wird nicht auf Netzwerklaufwerke unterstützt.
- 4) DOS überprüft dies Kennzeichen bei jedem Zugriff auf ein Laufwerk.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 2Fh holen Adresse des Daten-Übertragungsbereichs (DTA)
- gibt die aktuelle des Daten-Übertragungsbereichs zurück, die von allen DOS Dateizugriffen benutzt wird
- Aufruf AH 2Fh
- Rückgabe ES:BX Adresse des DTA
- Anmerkung 1) die DTA wird durch den Funktionsaufruf 1Ah eingestellt
- 2) vorgegebene DTA Adresse ist ein 128 Byte Puffer an Offset 80h in dem
- Programm-Segment Prefix des Programmes.
- 3) siehe Abschnitt 6 für eine Beschreibung der DTA.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 5) TOS: holen DTA. Gibt die Segmentadresse des aktuellen DTA in D0 zurück.
-
-
-
- Funktion 30h DOS Versionsnummer feststellen
- Rückgabe DOS Version und/oder Anwender Nummer
- Aufruf AH 30h
- Rückgabe AH Nebenversionsnummer (das heißt, DOS 2. 10 gibt zurück AX= 0A02h)
- AL übergeordnete Versionsnummer Nummer (0 für DOS 1.x)
- BH OEM ID Nummer
- 00h IBM
- 16h DEC (andere sind nicht bekannt)
- BL:CX 24-bit serielle Anwendernummer
- Anmerkung 1) falls AL eine Null als übergeordnete Versionsnummer zurückgibt, ist die DOS Version
- kleiner 1.28 für MSDOS und kleiner 2.00 für PCDOS.
- 2) IBM PC-DOS gibt immer 0000h in BX und CX zurück, wie auch DR-DOS.
- 3) OS/2 v1.0 Kompatibilitätsbox gibt ein Wert von 10 für die übergeordnete Versionsnummer zurück.
- 4) durch die OS/2 Rückgabe und der Tatsache daß einige europäische Versionen von DOS
- eine höhere Versionsnummer als IBM's DOS zurückgeben, sollten Dienstprogramme welche
- die DOS Version kontrollieren nicht abbrechen, falls eine höhere Version als die verlangte
- erkannt wird, wenn nicht wesentliche Probleme bekannt sind.
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) TOS:$ 30 holen Versionsnummer. Gibt GEMDOS Versionsnummer in D0 zurück.
- 7) unter PC-MOS/386, falls AX=BX=CX=DX, wird die PC-MOS/386 Versionsnummer
- zurückgegeben. Falls nicht alle Register denselben Wert haben, wird eine MSDOS
- gleichwertige Versionsnummer zurückgegeben. Die PC-MOS/386 Versionsnummer
- ist immer unterschiedlich von der MSDOS Versionsnummer.
-
-
- Funktion 31h beenden Programm und warten speicherresistent (KEEP)
- Aufruf AH 31h
- AL Ende-Code
- DX benötigter Programmspeicher in 16 Byte Paragraphen
- Rückgabe AX Rückgabe Code (herausholen durch Funktion 4Dh)
- Anmerkung 1) Durch die Anwendung geöffnete Dateien werden nicht geschlossen sobald dieser Aufruf gemacht wird.
- 2) Der Speicher kann besser genutzt werden, indem die beinhaltede Kopie von
- dem DOS Environment freigegeben wird, bevor das Programm beendent wird. Dies kann gemacht werden,
- imdem ES mit dem Segment das in 2Ch von dem PSP enthalten ist geladen wird, und der
- Funktionsaufruf 49h (freigeben belegten Speicher) durchgeführt wird.
- 3) im Gegensatz zu int 27h, können mit diesem Aufruf mehr als 64k speicherresistent gemacht werden.
- 4) TOS:$ 31 anhalten Prozess.
-
-
- Funktion 32h lesen DOS Festplattenparameterblock
- * erhalten Zeiger zu dem Laufwerksparameterblock für ein Laufwerk
- Aufruf AH 32h
- DL Laufwerk (0=aktuelles, 1=A:, etc.).
- Rücklauf AL 00h falls Laufwerk zulässig ist
- 0FFh falls Laufwerk nicht zulässig ist
- DS:BX Zeiger zur DOS Laufwerksparametertabelle. Format des Blocks:
- ┌────────┬──────┬────────────────────────────────────────────────
- │ Bytes │ Typ │ Wert
- ├────────┼──────┼────────────────────────────────────────────────
- │ 00h │ Byte │ Laufwerk: 0=A:, 1=B:, etc.
- │ 01h │ Byte │ Einheit im Gerätetreiber (0, 1, 2, etc.)
- │ 02h-03h│ Wort │ Bytes pro Sektor
- │ 04h │ Byte │ größte Sektornummer im Cluster (eins kleiner als
- │ │ │ Sektoren pro Cluster)
- │ 05h │ Byte │ Cluster zu Sektor umschalten (das heißt., wie weit nach links
- │ │ │ schalten der Bytes/Sektor um die Bytes/Cluster zu holen)
- │ 06h-07h│ Wort │ Anzahl reservierter (Start) Sektoren
- │ 08h │ Byte │ Anzahl Kopien von der FAT
- │ 09h-0Ah│ Wort │ Anzahl Hauptverzeichniseinträge
- │ 0Bh-0Ch│ Wort │ 1. Sektor # der Daten. Sollte derselbe sein wie # von
- │ │ │ Sektoren/Spur.
- │ 0Dh-0Eh│ Wort │ größtmöglichste Clusternummer (eins mehr als
- │ │ │ die Anzahl der Daten Cluster)
- ├────────┴──────┼────────────────────────────────────────────────
- │ nur DOS 2.x │
- ├────────┬──────┼────────────────────────────────────────────────
- │ 0Fh │ Byte │ Anzahl Sektoren für eine Kopie von der FAT
- │ 10h-11h│ Wort │ Nummer des ersten Sektors im Hauptverzeichnis
- │ 12h-15h│ dwort│ Adresse vom Beginn des Gerätetreibers für dieses Laufwerk
- │ │ │ (Anfang vom Gerätetreiber)
- │ 16h │ Byte │ Mediumbeschreibungsbyte für dies Laufwerk
- │ 17h │ Byte │ 0FFh zeigt an, das der Block neu gebildet werden muß
- │ 18h-1Bh│ dwort│ Adresse vom nächsten DOS Festplattenblock (0FFFFh bedeutet
- │ │ │ der letzte in der Kette)
- │ 1Ch │ Wort │ Anfangscluster vom aktuellen Verzeichnis (0=Hauptverzeichnis)
- │ 1Eh │64byts│ ASCII Zeichenkette des Pfads im aktuellen Inhaltsverzeichnis
- ├────────┴──────┼────────────────────────────────────────────────
- │ DOS 3.x │
- ├────────┬──────┼────────────────────────────────────────────────
- │ 0Fh │ Byte │ Anzahl Sektoren in einer FAT Kopie
- │ 10h │ Wort │ erster Sektor vom Hauptverzeichnis
- │ 12h │ dwort│ Adresse vom Gerätetreiber für dieses Laufwerk
- │ 16h │ Byte │ Mediumbeschreibungsbyte für das Medium
- │ 17h │ Byte │ 0FFh= Block muß neu gebildet werden, 00h zeigt
- │ │ │ einen Blockzugriff an
- │ 18h │ dwort│ Adresse vom nächsten Geräteblock, Offset= 0FFFFh
- │ │ │ bedeutet der letzte
- │ 1Ch │ Wort │ Cluster ab dem nach einem freien Platz gesucht wird,
- │ │ │ sobald ein Schreibzugriff erfolgt
- │ 1Eh │ Wort │ Anzahl freier Cluster auf Laufwerk, 0FFFFh
- │ │ │ Unbekannt?
- ├────────┴──────┼────────────────────────────────────────────────
- │ DOS 4.0 │
- ├────────┬──────┼────────────────────────────────────────────────
- │ 0Fh │ Wort │ Anzahl Sektoren in einer FAT Kopie
- │ 11h │ Wort │ erste Sektor vom Hauptverzeichnis
- │ 13h │ dwort│ Adresse vom Gerätetreiber für dieses Laufwerk
- │ 17h │ Byte │ Mediumbeschreibungsbyte für das Medium
- │ 18h │ Byte │ 0FFh= Block muß neu gebildet werden, 00h zeigt
- │ │ │ einen Blockzugriff an
- │ 19h │ dwort│ Adresse vom nächsten Geräteblock, Offset= 0FFFFh
- │ │ │ bedeutet der letzte
- │ 1Dh │ Wort │ Cluster ab dem nach einem freien Platz gesucht wird,
- │ │ │ sobald ein Schreibzugriff erfolgt
- │ 1Fh │ Wort │ Anzahl freier Cluster auf Laufwerk, 0FFFFh=
- │ │ │ Unbekannt?
- └────────┴──────┴────────────────────────────────────────────────
- Anmerkung 1) benutze [BX+0D] um die Anzahl der Cluster zu ermitteln (>1000h, 16-bit FAT; falls nicht, 12-bit
- (genau teilend Zeile ist wahrscheinlich ein wenig unterhalb 1000h zu erlauben für
- schlechte Sektoren, EOF Anzeiger, etc.)
- 2) kurzer Artikel von C. Petzold, im PC Magazine Vol.5, no. 8.
- 3) einige Information von dem Artikel "Finding Disk Parameters" in der Mai
- 1986 Ausgabe vom PC Tech Journal.
- 4) dieser Aufruf wird größtenteils in der OS/2 Kompatibilitätsbox unterstützt.
- Das dwort an 12h gibt in der Kompatibilitätsbox nicht die Adresse von dem
- nächsten Gerätetreiber zurück.
- 5) benutzt von CHKDSK.
-
-
- Funktion 33h Control-Break Kontrolle
- holen oder einstellen Control-Break Kontrolle an CON
- Aufruf AH 33h
- AL 00h zum testen der Break Kontrolle
- 01h zum einstellen der Break Kontrolle
- DL 00h ausschalten Break Kontrolle
- 01h einschalten Break Kontrolle
- 02h intern, aufgerufen durch PRINT.COM (DOS 3.1)
- 03h Unbekannt
- 04h Unbekannt - DOS 4.0's CPSW Befehl in CONFIG.SYS ruft
- diese Funktion auf
- 05h holen Startlaufwerk (DOS 4.0+)
- Rückgabe DL Break Einstellung (AL= 00h)
- 00h wenn Break = aus
- 01h wenn Break = an
- (falls AL= 05h) Startlaufwerk, A=1, B=2, etc)
- AL 0FFh Fehler
- Anmerkung dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 34h Rückgabe INDOS Kennzeichen
- gibt zurück ES:BX zeigt zum kritischen Bereichskennzeichen, Byte deutet darauf hin, ob
- es sicher ist, einen Interrupt aufzurufen.
- Aufruf AH 34h
- Rückgabe ES:BX zeigt zu 1-byte DOS "kritischen Bereichskennzeichen"
- Anmerkung 1) falls dieses Byte 0 ist, ist es sicher DOS zu unterbrechen.
- 2) das Byte an ES:BX+1 wird von dem Print Programm für denselben Zweck benutzt,
- deshalb ist es wahrscheinlich sicherer, das Wort an ES:BX zu kontrollieren.
- 3) wie verlautet, die Prüfung des DOS 2.10 Codes in diesem Bereich zeigt an, daß das
- Byte welches dem "kritischen Bereichskennzeichen" unmittelbar folgt, 00h sein muß, um
- PRINT.COM zu erlauben eine Interrupt aufzurufen. Für DOS 3.0 und 3.1 (außer
- Compaq DOS 3.0), das Byte vor dem "kritischen Bereichskennzeichen" muß Null sein;
- für Compaq DOS 3.0, das Byte 01AAh bevor es Null sein muß.
- 4) in DOS 3.10 wurde dies wie verlautet auf ein Wort Wert geändert, mit vorangehendem Byte.
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) Gordon Letwin von Microsoft diskutierte diesen Aufruf bei ARPAnet 1984. Er
- spezifiziert:
- a) dieser wird in keiner Version von DOS unterstützt
- b) er arbeitet gewöhnlich unter DOS 2, kann aber unter Umständen
- auch nicht funktionieren (allgemeines Dementi, weiß nichts von dem wesentlichen
- Umstand)
- c) normal er arbeitet nicht unter DOS 3 und DOS 3.1; das DOS ist
- beträchlich neu strukturiert und dieses Kennzeichen erhält weitere
- Bedeutungen und Verwendungen
- d) er versagt katastrophal unter DOS 4.0 und weiteren.
- ** offensichtlich ist diese Information falsch, denn der Aufruf arbeitet genau
- bis DOS 3.3. Microsoft glasnost? Er arbeitet auch offensichtlich im US
- DOS 4.0, aber es ist wahrscheinlich das Letwin auf das zurückgriff was bis jetzt als OS/2
- bekannt war. Niemand berichtete irgendwas von zusätzlichen Bedeutungen und wird deshalb weiter
- benutzt, obgleich Vereinbarungen von Bits in dem In_DOS Byte fähig sind, dieses
- für mehrere Bedeutungen zu benutzen.
- 7) dieser Aufruf ist in einigen ZENITH MS-DOS technischen Referenzen dokumentiert .
- Es wurde auch von Microsoft in deren Vorschlag zur TSR Standarddokumentation diskutiert,
- obgleich IBM diesen Aufruf nicht zu unterstützt und somit als
- "nicht dokumentiert" erachtet werden muß.
- 8) PC Magazine berichtet es funktioniert verläßlich unter den DOS Versionen 2.0
- bis 3.3. Chris Dunford (von CED Ruhm) und ein Anzahl anonyme
- Botschaften in der BBSs weisen darauf hin, das es nicht immer so verläßlich ist.
-
-
- Funktion 35h holen Vektor
- holen Interrupt Vektor
- Aufruf AH 35h
- AL Interrupt Nummer (hexadezimal)
- Rückgabe ES:BX Adresse des Interrupt Vektors
- Anmerkung 1) benutze Funktionsaufruf 25h um die Interrupt Vektoren einzustellen.
- 2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 36h feststellen freien Platz auf dem Laufwerk
- holen Information für das spezifizierte Laufwerk
- Aufruf AH 36h
- DL Laufwerksnummer (0= aktuelles, 1=A:, 2=B:, etc)
- Rückgabe AX Anzahl Sektoren pro Cluster
- 0FFFFh spezifiziertes Laufwerk in DL ist ungültig
- BX Anzahl verfügbarer Cluster
- CX Bytes pro Sektor
- DX Cluster pro Laufwerk
- Anmerkung 1) multipliziere AX * CX * BX um den freien Platz auf dem Laufwerk zu bekommen.
- 2) multipliziere AX * CX * DX um die gesamte Kapazität des Laufwerk zu erhalten. .
- 3) Die Funktion 36h gibt nach einem ASSIGN Befehleine eine falschen Wert zurück. Vor
- dem ASSIGN, enthält das DX Register 0943h als Rückgabewert, welches der freie Platz
- in Cluster auf der HC Diskette ist. Nach dem ASSIGN, selbst mit keinem
- Parameter, wird 0901h im DX Register zurückgegeben; dies ist ein falscher
- Wert. Ähnlich Ergebnisse treten mit DD Disketten auf einem PC-XT oder einem PC-AT auf.
- Dies tritt ausschließlich auf, wenn das Laufwerk nicht das aktuelle Laufwerk ist.
- Die Ergebnisse sind richtig, sobald das Laufwerk das aktuelle Laufwerk ist. Deshalb sollte
- das gewünschte Laufwerk zum aktuellen Laufwerk erklärt werden, bevor
- diese Funktion aufgerufen wird.
- 4) diese Funktion ersetzt die Funktionen 1Bh und 1Ch.
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) TOS:$ 36 holen freien Platz auf dem Laufwerk.
-
-
- Funktion 37h SWITCHAR/AVAILDEV
- * holen/einstellen Option Markierungszeichen (ist gewöhnlich "/"), und Gerätetyp
- Aufruf AH 37h
- AL 00h lesen Schalterzeichen (gibt aktuelles Zeichen in DL zurück)
- 01h einstellen Zeichen in DL als neues Schalterzeichen
- (DOS 2.x) 02h lesen Geräteverfügbarkeit (wie bei Funktion AL= 3 gesetzt) in DL.
- Ein 0 bedeutet daß Geräte einen Zugang beim Datei I/O Aufruf durch
- /dev/Gerät erhalten müssen. Ein anderer Wert als Null bedeutet,
- daß auf die Geräte von jeder Ebene des Inhaltsverzeichnisbaumes zugegriffen
- werden kann. (z.B., PRN ist der Drucker und nicht die Datei PRN).
- AL= 2 um Kennzeichen in DL zurückzugeben, AL= 3 zum einstellen von DL (0=gesetzt,
- 1= nicht gesetzt).
- (DOS 2.x) 03h holen Geräteverfügbarkeit, wobei:
- DL 00h /dev/ muß dem Gerätenamen vorausgehen
- 01h /dev/ braucht dem Gerätenamen nicht vorausgehen
- Rückgabe DL Schalterzeichen (falls AL= 0 oder 1)
- Geräteverfügbarkeits Kennzeichen (falls AL=2 oder 3)
- AL 0FFh der Wert in AL war nicht im Bereich von 0-3
- Anmerkung 1) Die Funktionen 2 & 3 sind nicht für DOS 3.x implementiert.
- 2) es ist dokumentiert auf Seite 4.324 von der MS-DOS (Version 2) Programmer's
- Utility Pack (Microsoft - veröffentlicht durch ZENITH).
- 3) arbeitet mit allen Versionen von IBM PC-DOS von 2.0 bis 3.3.1.
- 4) das SWITCHAR ist das Zeichen welches in DOS Befehlen als "Schalter" benutzt
- wird (Standard ist '/', wie in "DIR /P"). '-' ist weitverbreitet um ein System
- anzufertigen, welches mehr dem UNIX ähnelt; falls das SWITCHAR ein anderes als '/' ist,
- dann kann '/' an Stelle von '\' für Pfadnamen benutzt werden.
- 5) wird von XCOPY, PKARC, LIST ignoriert.
- 6) SWITCHAR kann nicht auf ein Zeichen eingestellt werden, das in irgendeinem Dateiname benutzt wird.
- 7) in DOS 3.x kann das "AVAILDEV" Byte mit Unterfunktion 02h gelesen werden,
- aber es wird immer 0FFh zurückgegeben, selbst wenn es mit der Unterfunktion 0 oder
- 03h geändert wurde.
- 8) AVAILDEV= 0 bedeutet, daß Geräte in einem scheinbaren Unterverzeichnis
- "\dev" (ähnlich dem UNIX's /dev/*) beschrieben werden müssen; ein Dateiname "PRN.DAT"
- kann erstellt und manipuliert werden wie jede andere auch. Falls AVAILDEV!= 0
- dann werden Gerätenamen irgendwo erkannt, (dies ist der Standard):
- "PRN.DAT" ist sinnverwandt mit "PRN:".
- 9) diese Funktionen wird, wie verlautet nicht in derselben Art und Weise
- in den verschiedenartige Implementationen von DOS unterstützt.
- 10) benutzt von CHKDSK, BASIC, und DEBUG in DOS 3.3.
- 11) SWITCHAR wird nicht in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 38h Rückgabe Landesspezifische Information
- (PCDOS 2.0, 2.1, MSDOS 2.00 ausschließlich)
- Aufruf AH 38h
- AL Funktionscode (muß 0 sein in DOS 2.x)
- DS:DX Zeiger zum 32 Byte Speicherpuffer für die zurückgegebenen Information
- Rückgabe CF gesetzt wenn Fehler
- AX Fehlercode (02h)
- BX Ländercode
- DS:DX Zeiger zum Puffer der die Landesinformation enthält:
- Bytes 00h,01h Datum/Zeitformat
- 0000h USA Standard H:M:S M-D-Y
- 0001h Europa Standard H:M:S D/M/Y
- 0002h Japan Standard H:M:S D:M:Y
- 02h ASCIIZ Zeichenkette Währungszeichen
- 03h Byte mit 0
- 04h ASCIIZ Zeichenkette Tausender Trennung
- 05h Byte mit 0
- 06h ASCIIZ Zeichenkette dezimale Trennung
- 07h Byte mit 0
- 24 Bytes 08h-1Fh reserviert
-
-
- Funktion 38h holen Landesspezifische Information
- (PCDOS 3.x+, MSDOS 2.01+)
- Aufruf AH 38h
- AL Funktionscode
- 00h holen aktuelle Länderinformation
- 01h-0FEh Ländercode mit Codes kleiner 255 für die die Information
- geholt werden sollen
- 0FFh holen Länderiformation für Staaten mit ein Code größer als 255
- BX 16 Bit Ländercode falls AL= 0FFh
- DS:DX Zeiger zum 32 Byte Speicherpuffer für die zurückgegebenen Information
- DX 0FFFFh falls Einstellung Ländercode eher als bekommend Information
- Rückgabe CF 0 (gelöscht) Funktion vervollständigt
- 1 (gesetzt) Fehler
- AX Fehlercode
- 02h ungültiger Ländercode (keine Tabelle dafür vorhanden)
- (falls DX<> 0FFFFh)
- BX Ländercode (gewöhnlich die international Vorwahlnummer)
- DS:DX Zeiger zum Datenpuffer des Landes
- Bytes 0,1 Datum/Zeitformat
- 0 USA Standard H:M:S M/D/Y
- 1 Europa Standard H:M:S D/M/Y
- 2 Japan Standard H:M:S D:M:Y
- Bytes 02h-06h ASCIIZ Währungszeichen
- Byte 07h ASCIIZ Tausender Trennung
- Byte 08h Byte mit 0
- Byte 09h ASCIIZ dezimale Trennung
- Byte 0Ah Byte mit 0
- Byte 0Bh ASCIIZ Datum Trennung
- Byte 0Ch Byte mt 0
- Byte 0Dh ASCIIZ Uhrzeit Trennung
- Byte 0Eh Byte mit 0
- Byte 0Fh Byte Währungsformat
- Bit 0 0 falls Währungszeichen vor dem Wert
- 1 falls Währungszeichen nach dem Wert
- 1 0 kein Leerzeichen zwischen dem Wert und dem Währungszeichen
- 1 1 Leerzeichen zwischen dem Wert und dem Währungszeichen
- 2 gesetzt falls Währungszeichen das Dezimalkomma ersetzt
- 3-7 nicht definiert bei Microsoft
- Byte 10h Genauigkeit
- (Anzahl Stellen nach dem Dezimalkomma)
- Byte 11h Byte Zeitformat
- Bit 0 0 12-Stunden-Uhr
- 1 24-Stunden-Uhr
- 1-7 Unbekannt, wahrscheinlich nicht benutzt
- Bytes 12h-15h Adresse einer Routine (FAR Prozedur, AL= Kleinbuchstabe) die Kleinbuchstaben
- ind Großbuchstaben umwandelt
- Aufruf AL ASCII Code des Zeichen das in einen Großbuchstaben
- konvertiert werden soll
- Rückgabe AL ASCII Code von dem Großbuchstaben
- Byte 16h data-list Trennungszeichen
- Byte 17h 0
- Bytes 18h-21h 5 Wörter reserviert
- Anmerkung 1) sobald eine alternativer Tastatur Handler aufgerufen wird, wird die Tastaturroutine
- an den niedrigsten Bereich des verfügbaren Anwenderspeichers geladen.
- Der BIOS Interrupt Vektor der Tastaturroutine wird zu dem Speicherbereich
- umgeleitet wo die neue Routine haust. Jede neue Routine benötigt 1.6K
- vom Speicher und hat Suchtabellen, sodas eindeutige Werte für jede Sprache
- zurückgegeben werden. (KEYBxx in der DOS Liste)
- Sobald der Tastatur Interrupt Vektor von der DOS Tastatur Routine geändert ist,
- erledigt die neue Routine alle Aufrufe, solange bis das System wieder
- auf das US Format mit der ctrl-alt-F1 Tastenkombination umgeschaltet wird. Dies
- ändert aber nicht den Interrupt Vektor auf die BIOS Adresse; es wird
- nur die Tabelle übergangen und die ROM Adressen werden benutzt.
- 2) Ctrl-Alt-F1 ändert ausschließlich Systeme mit US ROMS auf die US Anordnung.
- Einige Systeme wedren ohne US Tastaturroutinen im ROM ausgeliefert
- 3) Zeichenumwandlung: das Segment/Offset von einer FAR Prozedur die die
- länderspezifische klein-zu-groß Buchstaben Umwandlung von ASCII Zeichen ab 80h bis
- 0FFh vornimmt. Diese wird mit dem entsprechenden Zeichen in AL aufgerufen. Falls ein
- Großbuchstabe für den Buchstabe vorhanden ist, wird dieser in AL zurückgegeben,
- andernfalls gibt es hierfür keinen oder wurde die Funktion war gerufen mit einem Wert
- als 80h aufgerufen, bleibt AL unverändert.
- 4) dieser Aufruf ist ab der MS-DOS Version 2.01 voll implementiert. In der
- Version 2.00 ist dieser vorhanden, jedoch nicht vollständig. ( entsprechend zu Microsoft).
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 38h einstellen landesabhängige Information
- Aufruf AH 38h
- AL Code Ländercode zum einstellen der Information für Staaten
- mit Codes kleiner als 255
- 0FFh einstellen Länderinformation für Staaten mit einem Code
- größer als 255
- BX 16 Bit Ländercode falls AL= 0FFh
- DX 0FFFFh
- Rückgabe CF gelöscht erfolgreich
- gesetzt falls Fehler
- AX Fehlercode (02h)
- Anmerkung 1) einige Ländercodes sind:
- 061 Australien
- 039 Italien
- 041 die Schweiz
- 033 Frankreich
- 351 Portugal
- 002 Kanada
- 758 mittlerer Osten
- 001 USA
- 972 Israel
- 046 Schweden
- 358 Finnland
- 047 Norwegen
- 032 Belgien
- 003 S.America
- 044 U.K.
- 049 Deutschland
- 034 Spanien
- 045 Dänemark
- 031 Holland
- 081 Japan
- 2) die Dokumentation für COUNTRY= enthält die Informationen welche Codes
- für die benutzte DOS Version möglich sind.
-
-
- Funktion 39h erstellen Unterverzeichnis (MKDIR)
- erstellen Unterverzeichnis entlang dem Pfad
- Aufruf AH 39h
- DS:DX Adresse von ASCIIZ Pfadname Zeichenkette
- Rückgabe Kennzeichen CF 0 erfolgreich
- 1 Fehler
- AX Fehlercode falls vorhanden (03h, 05h)
- Anmerkung 1) die ASCIIZ Zeichenkette enthält das Laufwerk und das Unterverzeichnis.
- 2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
- 3) der Pfadname kann nicht länger als 64 Zeichen sein.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 5) die Zeichen [,],=, und " können in Unterverzeichnisnamen nicht benutzt werden.
- 6) TOS:$ 39 MKDIR.
-
-
- Funktion 3Ah entfernen Unterverzeichnis (RMDIR)
- Aufruf AH 3Ah
- DS:DX Adresse von ASCIIZ Pfadname Zeichenkette
- Rückgabe CF löschen erfolgreich
- gesetzt AX Fehlercode falls vorhanden (3, 5, 16)
- Anmerkung 1) die ASCIIZ Zeichenkette enthält das Laufwerk und das Unterverzeichnis.
- 2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
- 3) der Pfadname kann nicht länger als 64 Zeichen sein.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 5) TOS:$ 3A RMDIR.
-
-
- Funktion 3Bh ändern aktuelles Inhaltsverzeichnis (CHDIR)
- Aufruf AH 3Bh
- DS:DX Adresse von ASCIIZ Zeichenkette
- Rückgabe Kennzeichen CF 0 erfolgreich
- 1 Fehler
- AX Fehlercode falls vorhanden (03h)
- Anmerkung 1) die ASCIIZ Zeichenkette kann das Laufwerk und das Unterverzeichnis enthalten.
- 2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
- 3) der Pfadname kann nicht länger als 64 Zeichen sein.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 5) TOS:$ 3B CHDIR.
-
-
- Funktion 3Ch erstellen einer Datei (CREAT)
- erstellen einer Datei mit Handle
- Aufruf AH 3Ch
- CX Byte Dateiattribut
- 00h normal
- 01h nur lesen
- 02h versteckt
- 03h System
- DS:DX Adresse der ASCIIZ Zeichenkette die den Dateiname enthält
- Rückgabe CF 0 erfolgreich Erstellung
- 1 Fehler
- AX 16 Bit Datei Handle (Dateinummer)
- oder Fehlercode (03h, 04h, 05h)
- Anmerkung 1) die ASCIIZ Zeichenkette kann das Laufwerk und das Unterverzeichnis enthalten.
- 2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
- 3) falls die Datenträgeretikett oder Unterverzeichnis Bits in CX gesetzt sind, werden diese ignoriert
- 4) die Datei wird im lesen/schreiben Modus geöffnet
- 5) falls die Datei nicht existiert, wird sie erstellt. Falls eine mit demselben Namen
- existiert, wird diese auf die Länge von 0 zurückgesetzt.
- 6) eine gute Praxis ist, das öffnen der Datei mit fn 3Dh zu versuchen, und springen zu einer
- Fehlerroutine falls erfolgreich, oder erstellen der Datei falls 3Dh erfolglos war. Dieser Weg
- verhindert, daß eine existierende Datei überschrieben wird.
- 7) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 8) TOS:$ 3C CREAT.
-
-
- Funktion 3Dh öffnen einer Datei
- öffnen einer Datei mit Handle
- Aufruf AH 3Dh
- AL Byte Zugriffscode
- (DOS 2.x) Bits 0-2 Datei Attribut
- 000 nur lesen
- 001 nur schreiben
- 010 lesen/schreiben (vorgegeben)
- 3-7 reserviert, sollte auf Null gesetzt werden
- (DOS 3.x) Bits 0-2 Datei Attribut
- 000 nur lesen
- 001 nur schreiben
- 010 lesen/schreiben (vorgegeben)
- 3 reserviert, sollte auf Null gesetzt werden
- 4-6 File-Sharing-Modus (Netzwerk)
- 000 Kompatibilitätsmodus (vorgegeben)
- 001 lesen/schreiben Zugriff erlaubt (exklusiv)
- 010 Schreibzugriff erlaubt
- 011 Lesezugriff erlaubt
- 100 alle Zugriffe erlaubt
- 7 Handle Kennzeichen
- 0 Datei kann auch durch das Kind-Programm abgearbeitet werden
- 1 nur das aktuelle Programm kann die Datei abarbeiten
- DS:DX Adresse von ASCIIZ Zeichenkette mit Laufwerk/Pfad/Dateiname
- Rückgabe CF gesetzt wenn Fehler
- AX Fehlercode - MSDOS (01h, 02h, 03h, 04h, 05h, 0Ch)
- - DRDOS (02h, 04h, 05h, 0Ch)
- AX 16 Bit DOS Datei Handle (Dateinummer)
- Anmerkung 1) öffnet irgendeine normale, System, oder versteckte Datei.
- 2) Dateien daß Ende in ein Doppelpunkt werden nicht geöffnet.
- 3) der lese/schreiben Zeiger ist auf das erste Byte der Datei eingestellt und die
- Satzlänge der Datei ist 1 Byte (der lese/schreiben Zeiger durch den
- Funktionsaufruf 42h geändert werden). Die zurückgegebene Dateinummer (Handle) muß
- für alle nachträglichen Ein- und Ausgaben zu der Datei benutzt werden.
- 4) falls die Dateinummer (Handle) von einem übergeordneten Prozess übergeben wurde oder
- durch DUP oder FORCEDUP verdoppelt wurde, werden alle Sharing und Zugriffseinschränkungen
- vererbt.
- 5) ein File-Sharing Fehler (Fehler 01h) veranlässt einen int 24h mit dem
- Fehlercode 02h.
- 6) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 7) TOS:$ 3D OPEN.
- 8) falls irgendein Prozess eine Datei öffnet, die ein Ebene von Zugriffen bestreitet, alle
- nachträgliche Versuche die Datei auf der Ebene von Zugriffen zu öffnen versagen.
- 9) irgendein Versuch eine Datei mit einem Sharing Modus zu öffnen, die schon von einem
- existierenden Prozess benutzt wird, schlägt immer fehl.
-
-
- Funktion 3Eh Datei schließen
- schließen ein Datei und Freigabe des Handles (Dateinummer)
- Aufruf AH 3Eh
- BX Dateinummer (erzeugt durch 3Dh)
- Rückgabe Kennzeichen CF gelöscht erfolgreiches schließen
- gesetzt Fehler
- AX Fehlercode falls Fehler (06h)
- Anmerkung 1) sobald ausgeführt, wird die Datei geschlossen, das Inhaltsverzeichnis wird aktualisiert, und alle
- Puffer der Datei werden gelöscht. Falls die Datei geändert wurde, wird die Uhrzeit
- und das Datum der Datei auf die aktuelle Uhrzeit abgeändert.
- 2) falls der Aufruf mit dem Handle 00000h erfolgt, wird STDIN (normalerweise die
- Tastatur) geschlossen.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS:$ 3E CLOSE.
- 5) in den meisten Versionen von DOS sind ausschließlich 15 Datei Handles für den Anwender
- verfügbar. Es ist eine gute Praxis, die Dateien zu schließen, sobald diese nicht
- mehr benutzt werden.
-
-
- Funktion 3Fh lesen von einer Datei oder Gerät
- lesen von Datei mit Handle (Dateinummer)
- Aufruf AH 3Fh
- BX Dateinummer
- CX Anzahl zu lesender Bytes
- DS:DX Adresse des Puffer
- Rückgabe Kennzeichen CF gelöscht erfolgreich gelesen
- gesetzt Fehler
- AX 00h Zeiger war schon am Dateiende
- oder Anzahl der gelesenden Bytes
- oder Fehlercode (05h, 06h)
- Anmerkung 1) diese Funktion versucht die Anzahl der Bytes die in CX spezifiziert sind
- an einen Puffer zu übergeben. Es ist nicht garantiert, daß alle Bytes gelesen werden.
- 2) falls von STDIN (Dateinummer 0000) ausgeführt, kann die Eingabe umgeleitet sein
- 3) falls zum lesen der Tastatur benutzt, wird ausschließlich bis zu dem ersten CR gelesen.
- 4) der Dateizeiger wird erhöht zu dem letzten gelesenen Byte.
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) TOS:$ 3F READ.
- 7) falls AX< CX wurde nur ein Teil des Satzes gelesen.
-
-
-
- Funktion 40h schreiben zu einer Datei oder Gerät
- schreiben zu Datei mit Handle (Dateinummer)
- Aufruf AH 40h
- BX Dateinummer
- CX Anzahl zu schreibender Bytes
- DS:DX Adresse des Puffer
- Rückgabe CF gelöscht erfolgreich geschrieben
- gesetzt Fehler
- AX Anzahl geschriebener Bytes
- oder Fehlercode (05h, 06h)
- Anmerkung 1) diese Funktion versucht die Anzahl der Bytes die in CX angegeben sind, von einem Puffer
- zu einer Datei zu übergeben. Falls CX und AX nach dem schreiben nicht gleich sind,
- ist ein Fehler aufgetreten; jedoch wird kein Fehlercode für dieses Problem zurückgegeben.
- Dies ist gewöhnlich dann der Fall, wenn der Datenträger voll ist.
- 2) falls auf STDOUT (Dateinummer 0000) ausgeführt, kann die Ausgabe umgeleitet sein
- 3) zum abschneiden der Datei an der aktuellen Position des Dateizeigers, muß die
- Anzahl der Bytes in CX auf Null gesetzt werden, bevor der int 21h Anruf erfolgt. Der Zeiger
- kann zu irgendeiner gewünschten Position mit der Funktion 42h bewegte werden.
- 4) diese Funktion schreibt nicht zu einer Datei oder Gerät mit dem Atrribut Nur-Lesen.
- 5) kann auch an Stelle von fn 09h benutzt werden, um Zeichenketten an CON anzuzeigen. Diese
- Funktion schreibt nur die Anzahl Bytes in CX und hört dann auf; fn 09h schreibt
- solange bis ein $ Zeichen gefunden wird.
- 6) dies ist die Funktion, die DOS eigentlich benutzt um zum Bildschirm zu schreiben
- in DOS 2.x und darüber.
- 7) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 8) TOS:$ 40 WRITE.
-
-
- Funktion 41h löschen einer Datei von einem spezifizierten Unterverzeichnis (UNLINK)
- Aufruf AH 41h
- DS:DX Zeiger zum ASCIIZ der zu löschenden Datei
- Rückgabe CF gelöscht erfolgreich
- gesetzt Fehler
- AX Fehlercode falls Fehler (02h, 05h)
- Anmerkung 1) diese Funktion arbeitet nicht mit Dateien die das Atrribut Nur-Lesen haben.
- 2) Wildcards sind nicht zugelassen.
- 3) zum löschen mehrerer Dateien, Funktion 13h ist schneller.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 5) TOS:$ 41 UNLINK.
-
-
- Funktion 42h bewegen Dateizeiger lesen/schreiben (LSEEK)
- Aufruf AH 42h
- AL Methode Codebyte
- 00h Offset vom Anfang der Datei
- 01h Offset von aktueller Stelle
- 02h Offset vom Dateiende
- BX Dateinummer
- CX:DX Offset in Datei (höherwertiges/niederwertiges Wort) in Bytes
- Rückgabe AX:DX neuer Dateizeiger (Segment/Offset)
- CF gesetzt Fehler
- AX Fehlercode( 01h, 06h)
- gelöscht erfolgreiches bewegen
- Anmerkung 1) falls Zeiger am Dateiende ist, kann hieraus die Dateigröße in Bytes erkannt werden.
- 2) der Wert in DX:AX ist der absolute 32 Bit Byte Offset vom Anfang
- der Datei.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS:$ 42 LSEEK.
-
-
- Funktion 43h holen/einstellen Dateiattribut (CHMOD)
- Aufruf AH 43h
- AL 00h holen Dateiattribut
- 01h einstellen Dateiattribut
- CX einzustellende Dateiattribute
- Bit 0 nur lesen
- 1 versteckte Datei
- 2 Systemdatei
- 3 Datenträgeretikett
- 4 Unterverzeichnis
- 5 verändert seit dem letzten Sichern (Archive Bit)
- 6, 7 nicht benutzt
- 8 gemeinsam benutzbar (shareable) (Novell NetWare)
- 9-F nicht benutzt
- DS:DX Segment/Offset Zeiger zum vollen ASCIIZ Dateiname
- Rückgabe CF gesetzt falls Fehler
- AX Fehlercode - MSDOS (01h, 02h, 03h, 05h)
- DRDOS (02h, 03h, 05h)
- CX Dateiattribute beim holen
- Attribute:
- 01h nur lesen
- 02h versteckt
- 04h System
- 0FFh Archive
- Anmerkung 1) diese Funktion ändert nicht das Datenträgeretikett oder Inhaltsverzeichnis Bit. (3&4)
- 2) irgendeine Kombination von Dateiattributen kann benutzt werden.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS:$ 43 CHANGE MODE (CHMOD).
-
-
- Funktion 44h I/O Steuerung für Geräte (IOCTL)
- Gerätetreiber Handler
- Aufruf AH 44h
- AL 00h holen Geräteinformation
- BX Datei oder Geräte Handle
- Rückgabe CF gesetzt wenn Fehler
- AX Fehlercode
- DX Wort Geräteinformation
- Bit 7 gesetzt = Zeichentreiber
- Bit 0 Bedienungsfeld Eingabegerät
- 1 Bedienungsfeld Ausgabegerät
- 2 NUL Gerät
- 3 CLOCK$ Gerät
- 4 besonderes Gerät
- 5 binär (unbearbeitet) Modus
- 6 nicht EOF
- 12 Netzwerk Gerät (DOS 3. x)
- 14 kann IOCTL Steuerungszeichen
- abarbeiten (subfns 2-5)
- Bit 7 gelöscht = Datei
- Bit 0-5 Blocktreiber Nummer
- 6 Datei wurde nicht geschrieben
- 12 Netzwerk Gerät (DOS 3.x)
- 14 Unbekannt (DOS 3.x)
- 15 Datei ist entfernt (remote) (DOS 3.x)
-
- 01h einstellen Geräteinformation
- BX Gerät Handle
- DH 00h (DH muß Null sein für diesen Aufruf)
- DL einzustellende Geräteinformation (Bits 0-7 von Funktion 0)
- Anmerkung DX Bits:
- 0 1 Bedienungsfeld Eingabegerät
- 1 1 Bedienungsfeld Ausgabegerät
- 2 1 NUL Gerät
- 3 1 CLOCK Gerät
- 4 1 reserviert
- 5 0 binär Modus - kontrolliert nicht auf Steuerzeichen
- 1 gefiltert Modus - kontrollieren auf Steuerzeichen
- 6 0 EOF - Dateiende bei Eingabe
- 7 Gerät ist Zeichentreiber falls gesetzt, falls nicht, EOF
- ist 0 falls Kanal geschrieben wurde, Bits 0-5 sind
- Blocktreiber Nummer
- 12 Netzwerk Gerät
- 14 1 kann Steuerzeichen abarbeiten (AL 2-5, kann ausschließlich
- gelesen und nicht eingestellt werden)
- 15 n reserviert
-
- 02h lesen Zeichentreiber Steuerungszeichen
- BX Gerät Handle
- CX Anzahl zu lesender Bytes
- DS:DX Zeiger zum Steuerungszeichen Puffer
- Rückgabe AX (keine Fehler) Anzahl gelesener Bytes
-
- 03h schreiben Zeichentreiber Steuerungszeichen
- BX Gerät Handle
- CX Anzahl zu schreibender Bytes
- DS:DX Zeiger zum Puffer
- Rückgabe AX (keine Fehler) Anzahl geschriebener Bytes
-
- 04h lesen vom Blocktreiber (Laufwerksnummer in BL)
- BL Laufwerksnummer (0= vorgegeben)
- CX Anzahl zu lesender Bytes
- DS:DX Zeiger zum Puffer
- Rückgabe AX (keine Fehler) Anzahl gelesener Bytes
-
- 05h schreiben Blocktreiber Steuerungszeichen
- BL Laufwerksnummer (0= vorgegeben)
- CX Anzahl zu schreibender Bytes
- DS:DX Zeiger zum Puffer
- Rückgabe AX (keine Fehler) Anzahl übertragener Bytes
-
- 06h holen Eingabe Handle Status
- BX Datei oder Geräte Handle
- Rückgabe AL 00h Gerät ist nicht bereit
- 0FFh Gerät ist bereit
- Anmerkung für eine Eingabedatei, 0FFh bedeutet Dateiende.
-
- 07h holen Ausgabe Handle Status
- BX Datei oder Geräte Handle
- Rückgabe AL 00h nicht bereit
- 0FFh bereit
- Anmerkung für DOS 2.x, Dateien sind immer zur Ausgabe bereit.
-
- 08h auswechselbares Media Bit (DOS 3.x+)
- BL Laufwerksnummer (0=aktuelles)
- Rückgabe AX 00h Gerät ist auswechselbar
- 01h Gerät ist nicht auswechselbar
- 0Fh ungültige Laufwerksbeschreibung
-
- 09h Test ob lokales oder Netzwerk Gerät (DOS 3.1+)
- BL Laufwerksnummer (0= vorgegeben)
- Rückgabe DX Attribut Wort, Bit 12 gesetzt falls Gerät remote ist
-
- 0Ah ist Handle in BX lokal oder remote? (DOS 3.1+)
- BX Dateinummer
- Rückgabe DX Bit 15 gesetzt falls Datei remote ist,
- gelöscht falls Datei lokal ist
- Anmerkung 1) falls Datei remote ist, gibt Novell Advanced NetWare 2.0
- die Nummer des File Servers auf welchem der Handle
- ermittelt ist in CX zurück.
-
- 0Bh ändern Anzahl Wiederholungen in DX für Sharinng (DOS 3.1+)
- CX Verzögerung (vorgegeben=1)
- DX Wiederholungen (vorgegeben=3)
- Anmerkung Ändert die Anzahl der Wiederholungen von Laufwerksoperationen
- nach einer Sharing Übertretung.
-
- 0Ch allgemein IOCTL (DOS 3.3 [3.2?]) erlaubt einen Gerätetreiber
- vorzubereiten, auszuwählen, aufzufrischen, und erfragen Codeseiten
- BX Gerät Handle
- CH Kategorie Code
- 00h Unbekannt (DOS 3.3)
- 01h COMn: (DOS 3.3)
- 03h CON (DOS 3.3)
- 05h LPTn:
- CL Funktion
- 45h einstellen Wiederholungszähler
- 4Ah auswählen Codeseite
- 4Ch Start Codeseite Vorbereitung
- 4Dh Ende Codeseite Vorbereitung
- 65h holen Wiederholungszähler
- 6Ah erfragen ausgewählte Codeseite
- 6Bh erfragen Vorbereitungsliste
- DS:DX Zeiger zum Parameterblock. Format:
- (für CL=45h) Wort Anzahl wie oft die Ausgabe versucht wird
- Treiber nimmt an Gerät ist beschäftigt
- (für CL=4Ah, 4Dh, 6Ah) Wort Länge der Daten
- Wort Codeseite ID
- (für CL=4Ch) Wort Kennzeichen
- Wort Länge vom Rest des Parameterblocks
- Wort Anzahl Codeseiten folgen
- n Wörter Codeseite 1, ..., N
- (für CL=6Bh) Wort Länge der folgenden Daten
- Wort Anzahl Hardware Codeseiten
- n Wörter Hardware Codeseiten 1, ..., N
- Wort Anzahl vorbereiteter Codeseiten
- n Wörter vorbereitete Codeseiten 1, ..., N
-
- 0Dh Blocktreiber Anforderung (DOS 3.3+)
- BL Laufwerksnummer (0=aktuelles, 1=A:, etc.)
- CH Kategorie Code
- 08h Festplattenlaufwerk
- CL Unterfunktion
- 40h einstellen Geräteparameter
- 41h schreiben logische Gerätespur
- 42h formatieren und prüfen logische Gerätespur
- 46h Unbekannt (DOS 4.0+)
- 60h holen Geräteparameter
- 61h lesen logische Gerätespur
- 62h prüfen logische Gerätespur
- DS:DX Zeiger zum Parameterblock
-
- (Für fns 40h, 60h) Byte besonders Funktionen
- Bit 0 gesetzt falls fn aktuellen BPB benutzen soll, gelöscht
- falls Gerät BIOS Parameterblock Feld
- neuen vorgegebenen BPB enthält
- 1 gesetzt falls Funktion ausschließlich die Spuranordnungsfelder
- benutzen soll. Muß gelöscht sein, falls CL=60h
- 2 gesetzt falls alle Sektoren in der Spur dieselbe Größe haben
- (sollte gesetzt sein)
- 3-7 reserviert
- Byte Gerätetyp
- 00h 320k/360k Diskette
- 01h 1.2M Diskette
- 02h 720k Diskette
- 03h single-density 8-inch Diskette
- 04h double-density 8-inch Diskette
- 05h Festplatte
- 06h Bandlaufwerk
- 07h anderer Typ eines Blocktreiber
- Wort Geräteattribut
- Bit 0 gesetzt falls kein austauschbares Medium
- 1 gesetzt falls Tür sperren unterstützt
- 2-15 reserviert
- Wort Anzahl Zylinder
- Byte Media Typ
- 00h 1.2M Diskette (vorgegeben)
- 01h 320k/360k Diskette
- 31 Bytes Geräte BPB (siehe Funktion 53h)
- Wort Anzahl Sektoren pro Spur (Start von Spur-
- anordnungsfeld)
- n Wort Paare: Nummer, Größe von jedem Sektor in der Spur
-
- Dies kann definiert sein in einem Aufbau etwa wie:
- DeviceParameters Struc
- SpecialFunctions db ?
- GeraeteTyp db ?
- GeraeteAttribut dw ?
- AnzahlZylinder dw ?
- MediaType db ?
- DeviceBPB A_BPB <>
- TrackLayout A_TrackLayout <>
- DeviceParameters Ends
-
- (Für Funktionen 41h, 61h) Byte reserviert, muß Null sein
- Wort Anzahl Köpfe
- Wort Anzahl Zylinder
- Wort Anzahl der ersten Sektoren zum lesen/schreiben
- Wort Anzahl Sektoren
- dwort Übertragungsadresse
- (für Funktionen 42h, 62h) Byte reserviert, muß Null sein
- Wort Anzahl Köpfe
- Wort Anzahl Zylinder
- Anmerkung DOS 4.01 scheint das höherwertige Byte von der
- Anzahl der Inhaltsverzeichniseinträge in dem BPB für
- Disketten zu ignorieren.
-
- 0Eh holen logische Geräteabbildung (DOS 3. 2+)
- gibt den logischen Laufwerksbuchstabe der beim letzten Zugriff auf
- den Blocktreiber benutzt wurde zurück. Benutzt von SUBST, JOIN, etc.
- BL Laufwerksnummer (0=vorgegeben)
- Rückgabe AL 00h Blocktreiber hat ausschließlich ein
- logisches Laufwerk zugewiesen 1 .. n der
- letzte Buchstabe wird zur Referenz des
- Gerätes benutzt (1=A:, etc)
- 01h-1Ah Laufwerksnummer (1..26 DOS 3.0+)
- Anmerkung 1) dies ist keine Netzwerk-abhängige Funktion.
- 2) dieser Aufruf erlaubt es, festzustellen ob mehr als
- ein logisches Laufwerk dem Blocktreiber ist.
- Sobald dieses Funktion aufgerufen wird, wird eine
- Laufwerksnummer in BL übertragen als Eingabe. Falls dem
- Blockgerät hat mehr als ein logischer Laufwerksbuchstabe
- zugewiesen ist, wird in AL eine Laufwerksnummer
- entsprechend dem letzte Laufwerksbuchstabe der
- benutzt wurde zurückgegeben.
- Falls ausschließlich ein Laufwerksbuchstabe dem Gerät
- zugewiesen ist, wird durch diesen Aufruf 0 in AL zurückgegeben.
-
- 0Fh einstellen logisch Geräteabbildung( DOS 3. 2+)
- BL physische Laufwerksnummer (0=vorgegeben)
- Rückgabe AL 00h falls ausschließlich 1 Laufwerksbuchstabe
- zum Blocktreiber zugewiesen ist
- 01h ... 1=A:, 2=B:, ...
- Anmerkung bildet logische Laufwerke zu physische Laufwerke, ähnlich
- wie DOS's Behandlung eines einzelnen physischen Disketten-
- laufwerks als A: und B:
-
- BL Laufwerksnummer: 0=vorgegeben, 1=A:, 2=B:, etc.
- BX Dateinummer
- CX Anzahl zu lesender oder schreibender Bytes
- DS:DX Daten oder Puffer
- DX Daten
- Rückgabe AX Anzahl übertragener Bytes
- oder Fehlercode (siehe Funktion 59h für erweiterte Fehlercodes)
- oder Zustand 00h nicht bereit
- 0FFh bereit
- CF gesetzt falls Fehler
- Anmerkung dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 45h duplizieren einer Dateinummer (DUP)
- Aufruf AH 45h
- BX zu duplizierende Dateinummer
- Rückgabe CF gelöscht AX duplizierte Dateinummer (Handle)
- gesetzt AX Fehlercode (04h, 06h)
- Anmerkung 1) falls der Zeiger von einem Handle mit 3Fh (lesen), 40h (schreiben), oder
- 42h (bewegen Zeiger) bewegt wird, so wird der Zeiger von dem anderen bewegt.
- 2) der Handle in BX muß offen sein.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS:$ 45 DUP.
- 5) diese Funktion kann benutzt werden, um den Inhaltsverzeichniseintrag einer Datei zu aktualisieren,
- ohne das öffnen und schließen durchzuführen. Als Beispiel, diese Funktion
- gefolgt von fn 3Eh (schließen Datei) mit der duplizierten Dateinummer verursacht
- das DOS dessen Puffer löscht und den Inhaltsverzeichniseintrag aktualisiert, solange
- die Originaldatei im lesen/schreiben Modus geöffnet bleibt.
-
-
- Funktion 46h erzwingen Duplikat von einem Handle (FORCEDUP oder CDUP)
- erzwingt Handle in CX das auf dieselbe Datei an derselben Position
- Bezug nimmt wie BX
- Aufruf AH 46h
- BX existierende offene Dateinummer die dupliziert werden soll
- CX neue Dateinummer
- Rückgabe CF gelöscht beide Handle nehmen jetzt Bezug auf eine existierende Datei
- gesetzt Fehler
- AX Fehlercode (04h, 06h)
- Anmerkung 1) falls CX eine offene Datei war, wird diese erst geschlossen.
- 2) falls der Zeiger von einem Handle mit 3Fh (lesen), 40h (schreiben), oder
- 42h (bewegen Zeiger) bewegt wird, so wird der Zeiger von dem anderen bewegt.
- 3) der Handle in BX muß offen sein.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 5) TOS$ 46 FORCE.
- 6) diese Funktion kann benutzt werden, um die Eingabe und Ausgabe umzuleiten.
-
-
- Funktion 47h holen aktuelles Inhaltsverzeichnis
- überträgt den vollen Pfadnamem des aktuellen Inhaltsverzeichnisses/Laufwerk in einen Puffer
- Aufruf AH 47h
- DL Laufwerk (0=aktuelles, 1=A:, etc.)
- DS:SI Segment/Offset Zeiger zum 64-byte Puffer Bereich
- Rückgabe CF gelöscht DS: DI Zeiger zu ASCIIZ Pfadname vom aktuellen Inhaltsverzeichnis
- gesetzt AX Fehlercode (0Fh)
- Anmerkung 1) Zeichenkette beginnt nicht mit einer Laufwerkskennung oder einem Backslash (\).
- 2) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 3) TOS:$ 47 GETDIR.
-
-
- Funktion 48h Speicher belegen (MALLOC)
- belegt angeforderte Anzahl von 16-byte Paragraphen Speicher
- Aufruf AH 48h
- BX Anzahl gewünschter 16-byte Paragraphen gewünscht
- Rückgabe CF gelöscht AX Segmentadresse des belegten Speichers
- BX maximale Anzahl verfügbarer Pragraphen
- gesetzt AX Fehlercode (07h, 08h)
- Anmerkung 1) BX zeigt den maximalen verfügbaren Speicher ausschließlich falls die Reservierung scheiterte.
- 2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 3) TOS:$ 48 MALLOC.
-
-
- Funktion 49h belegten Speicher freigeben
- befreit spezifizierte Speicherblöcke
- Aufruf AH 49h
- ES Segmentadresse vom freizugebenden Bereich
- Rückgabe CF gelöscht erfolgreich
- gesetzt AX Fehlercode (07h, 09h)
- Anmerkung 1) diese Funktion ist ausschließlich zulässig, sobald Speicher mit der Funktion 48h reserviert wurde.
- 2) ein Programm sollte nicht versuchen Speicher freizugeben, der nicht von ihm belegt wurde.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS:$ 49 MFREE.
-
-
- Funktion 4Ah modifizieren belegte Speicherblöcke (SETBLOCK)
- erweitern oder vermindern Speicher für ein Programm
- Aufruf AH 4Ah
- BX neue Größe in 16 Byte Paragraphen
- ES Segmentadresse des zu ändernden Blocks
- Rückgabe CF gelöscht nichts
- gesetzt AX Fehlercode (07h, 08h, 09h)
- oder BX maximale Anzahl verfügbarer Paragraphen
- Anmerkung 1) BX zeigt den maximalen verfügbaren Speicher ausschließlich falls die Funktion scheiterte.
- 2) Speicher kann ausschließlich erweitert werden, falls der Speicher verfügbar ist.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) TOS:$ 4A SETBLOCK.
-
-
-
- Funktion 4Bh laden oder ausführen eines Programms (EXEC)
- Aufruf AH 4Bh
- AL 00h laden und ausführen Programm. Ein PSP für das Programm wird angelegt,
- die ctrl-break und Beendigungs Adressen werden auf den neuen PSP
- eingestellt.
- *01h laden aber nicht ausführen (intern, DOS 3.x & DESQview)
- (siehe Anmerkung 1)
- *02h laden aber nicht ausführen (intern, DOS 2.x ausschließlich)
- 03h laden Overlay (kein erstellen eines PSP, Ausführung nicht beginnen)
- *04h Start async Prozess (Euro-DOS 4.0 ausschließlich) (siehe Anmerkung 12)
- DS:DX Segment/Offset Zeiger zu der ASCIIZ Zeichenkette mit dem Laufwerk,
- Pfad, und dem Dateinamen der geladen werden soll
- ES:BX Segment/Offset Zeiger zu einem Parameterblock für das Laden
- (AL=00h) Wort Segmentadresse von Environment Zeichenkette die
- übergeben werden soll (0=benutzen aktuelle)
- dwort Zeiger zu der Befehlszeile die an PSP+80h eingestellt wird
- dwort Zeiger zum vorgegeben FCB welcher an PSP+5Ch übertragen wird
- dwort Zeiger zum vorgegeben FCB welcher an PSP+6Ch übertragen wird
- (*AL=01h) Wort Segment vom Environment (0=benutzen aktuelles)
- dwort Zeiger zur Befehlszeile
- dwort Zeiger zum FCB 1
- dwort Zeiger zum FCB 2
- (DOS 3.x+) dwort zum sichern von SS:SP bei der Rückkehr
- (DOS 3.x+) dwort zum sichern der Programmeinsprungstelle (CS:IP) bei der Rückkehr
- (*AL=02h) Wort Segment vom Environment (0=benutzen aktuelles)
- dwort Zeiger zur Befehlszeile
- dwort Zeiger zum FCB 1
- dwort Zeiger zum FCB 2
- (AL=03h) Wort Segmentadresse wohin die Datei geladen wird
- Wort Verschiebungsfaktor der auf das Abbild angewandt wird
- Rückgabe CF gesetzt Fehler
- AX Fehlercode (01h, 02h, 05h, 08h, 0Ah, 0Bh)
- CF gelöscht falls erfolgreich
- für fn 00h, Prozess ID ist auf das neue PSP eingestellt; holen mit
- Funktion 62h
- für fn 01h und DOS 3. x+ oder DESQview, Porzess ID ist auf das neue
- PSP eingestellt; holen mit Funktion 62h
- für fn 01h und DOS 2.x, der anfängliche Stapel und Einsprungspunkt des neuen
- Programmes wird in Register zurückgegeben
- für fn 02h, der anfängliche Stapel und Einsprungspunkt des neuen
- Programmes wird in den Registern zurückgegeben
- Anmerkung 1) falls der Aufruf dieser Funktion mit AL=1 durchgeführt wird, wird das Programm geladen, so als wenn
- der Aufruf mit AL=0 gemacht wurde, außer daß das Programm nicht ausgeführt wird.
- Zusätzlich, mit AL=1 das Stacksegment und Zeiger zusammen mit dem
- CS:IP Einsprungspunkt des Programmes werden an das Programm zurückgegeben, welches den
- 4B01h Aufruf durchgeführt hat. Diese Werte sind ausgeben in den vier Wörtern an ES:BX+0Eh. Auf
- Einsprungstelle zu dem Aufruf ES:BX zeigt zu der Environmentadresse, der Befehls-
- zeile und den zwei vorgegeben FCBs. Diese Form von EXEC wird von DEBUG.COM benutzt.
- 2) Anwendungsprogramme können eine sekundäre Kopie von der Befehlsprozessors
- (normalerweise COMMAND.COM) aufrufen, indem die EXEC Funktion benutzen wird. Das
- Programm kann dann ein DOS Befehl wie ein Parameter übergeben, daß der sekundär
- Kommandoprozessor ausführt, so als wenn dieser vom Standardeingabegerät
- eingegeben wurde,
- Das Verfahren ist:
- A. Zusichern das genügend freier Speicher (17k für 2.x und 3.0, 23k für 3.1
- und höher) existiert, um die zweite Kopie von dem Kommandoprozessor zu erhalten und
- der Befehl der ausgeführt werden soll. Dies wird erreicht, imdem der
- Funktionsaufruf 4Ah zum vermindern des belegten Speicher auf die aktuellen
- Forderungen des Programmes durchgeführt wird. Danach, ausführen Funktionsaufruf 48h
- mit BX= 0FFFFh. Diese gibt den verfügbaren Speicher zurück.
- B. Erstellen einer Parameterzeichenkette für den sekundären Kommandoprozessor in der
- Form:
- 1 Byte Länge der Parameterzeichenkette
- xx Bytes Parameterzeichenkette
- 1 Byte 0Dh (Carriage Return)
- als Beispiel, die Assembleranweisung unterhalb erstellt die
- Zeichenkette zur Ausführung von dem Befehl FOO.EXE:
- DB 19,"/C C:FOO",13
- C. Benutzen des EXEC Funktionsaufrufs (4Bh), Funktion 0 um die Ausführung
- von der sekundären Kopie von dem Kommandoprozessor zu veranlassen. (das Laufwerk,
- Inhaltsverzeichnis, und Name des Kommandoprozessors kann durch die
- COMSPEC Variable in dem DOS Environment ermittelt werden, welches an PSP+2Ch übergeben wird.)
- D. Nicht vergessen den Offset 2 von dem EXEC Kontrollblock auf den Punkt zu der
- zusammengesetzten Zeichenkette von vorher einzustellen.
- 3) alle offenen Dateien von einem Prozess werden dupliziert in dem neu erstellten
- Prozess nach einem EXEC, außer für Dateien die vom Original
- mit dem Handle Bit eingestellt auf 1 geöffbnet wurden.
- 4) das Environment ist eine Kopie von dem original Befehlsprozessor
- Environment. Änderungen in dem EXECed Environment werden nicht an das
- Original zurückgegeben. Dem Environment folgt eine Kopie von dem DS:DX
- Dateinamen der an dem Kind Prozess übergeben wurde. Ein Null Wert verursacht, daß
- der Kind Prozess das Environment von dem aufrufenden Prozesses mitschleppt. Die
- Segmentadresse von dem Environment wird an Offset 2Ch von dem PSP
- des aufgerufenden Programmes abgestellt.
- 5) diese Funktion benutzt denselben speicherresistent Teil von COMMAND.COM, erstellt
- aber eine Kopie von dem vorrübergehenden Teil.
- 6) wie EXEC erkennt wohin er zurück muß: grundsätzlich enthält der Vektor für int 22h
- die Beendigungsadresse für den aktuellen Prozess. Sobald ein Prozess
- gestartet wird, der vorhergehend Inhalte von int 22h wird in den
- PSP für diesen Prozess übergeben, dann wird int 22h modifiziert. Deshalb wenn Prozess A
- EXECs Prozess B, solange Prozess B läuft, der Vektor für int 22h enthält
- die Rückkehradresse zu Prozess A, solange die Sicherungsstelle in dem PSP
- von Prozess B die Rückkehradresse vom Prozess A enthält, kehrt er zurück sobald
- *er* beendet wird. Sobald Prozess B normal legal beendet wird,
- die Inhalte von int 22h sind (vermutlich) auf den Stapel geschoben,
- die alten Beendigungs Vektor Inhalte werden zum int 22h Vektor zurückkopiert vom
- PSP des Prozesses B, dann ein RETF oder gleichwertiger wird ausgeführt, um die
- Steuerung an Prozess A zu übergeben.
- 7) laden einer Overlay Datei mit 4B: Erstens, nicht den Speicher freigeben
- indem das Overlay geladen wird. Mit den anderen 4Bh Funktionen, das
- Gegenteil ist wahr--zuerst den Speicher freigeben, mit Funktion 4Ah.
- Zweitens, die "Segmentadresse wohin die Datei geladen wird" (erstes Element
- in dem Parameterblock für Unterfunktion 03) sollte eine Bereichsgrenze
- im gegenwärtigen belegten Speicher sein. Drittens, falls die Prozeduren
- im Overlay FAR Prozeduren sind (solange sie ablaufen, ist CS gleich der
- Segmentadresse von dem Overlay Bereich), sollte der Verschiebungsfaktor
- Null sein. Auf der anderen Seite, falls das CS Register unterschiedlich
- von der Overlaybereichs Segmentadresse sein muß, sollte der Verschiebungs-
- faktor auf die auftretende Differenz gesetzt werden. Um festzustellen
- wo im Speicher die Overlay Datei geladen wird, benutze die Segmentadresse
- dir vorher erwähnt wurde. Overlay Dateien sind. EXEs (beinhalten
- Dateikopf, Verschiebungstabelle, und Speicherabbild).
- 8) sobald Funktion 00h die Steuerung zurück gibt, alle Register sind geändert, einschließlich der
- Stapel. Du mußt SS, SP, und irgendwelche anderen verlangten Register zurücksichern.
- 9) PCDOS EXEC Funktion 3 (Overlay) befindet sich in dem vorrübergehenden Teil von
- COMMAND.COM und wird geladen sobald es benötigt wird, so die Bedingung für
- genug freien Speicher um das EXEC Ladeprogramm (über 1. 5k) zu laden. Unter MSDOS
- befindet sich das EXEC System Systemspeicher.
- 10) falls versucht wird eine. EXE Datei zu überlagern mit der high/low Schalter eingestellt zum laden
- in den hohen Speicher ereignet sich nichts. Der high/low Schalter ist ausschließlich für
- Prozess Erstellung, nicht für Overlays.
- 11) DOS 2.x zerstört alle Register, einschließlich SS:SP.
- 12) (AL=04h) das ist DOS 4.0, wie freigegeben 1987 zu verschiedenartigen europäischen OEMs.
- Es wird nicht in dem US DOS 4.0 verwandt.
- 13) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 14) TOS:$ 4B EXEC.
-
-
- Funktion 4Ch beenden Prozess (EXIT)
- beenden mit ERRORLEVEL Rückgabecode
- Aufruf AH 4Ch
- AL Rückgabecode in AL der zum nächsten Prozess übergeben wird
- Rückgabe keine
- Anmerkung 1) Übergibt die Steuerung an DOS oder an das aufrufende Programm.
- 2) Rückgabecode von AL kann durch ERRORLEVEL oder Funktion 4Dh festgestellt werden.
- 3) alle von diesem Prozess geöffneten Dateien werden geschlossen, Puffer werden gelöscht, und
- das Inhaltsverzeichnis des Laufwerks wird aktualisiert.
- 4) Restauriert: Beendigungs Vektor von PSP:000Ah
- Ctrl-C Vektor von PSP:000Eh
- kritischer Fehler Vektor von PSP:0012h
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) TOS:$ 4C TERM. Gibt ein 2-byte errorlevel zum aufrufenden Programm zurück
-
-
- Funktion 4Dh holen Rückgabecode von einem Unterprozess (WAIT)
- bekommt Rückgabecode von Funktionen 31h und 4Dh (ERRORLEVEL)
- Aufruf AH 4Dh
- Rückgabe AH Umstand welcher die Beendigung veranlasste
- 00h normal Beendigung
- 01h control-break oder control-C
- 02h kritischer Gerätefehler
- 03h beenden und warten speicherresistent (Funktion 31h)
- AL Rückgabecode vom Unterprogramm (Funktionen 31h oder 4Ch)
- Anmerkung 1) der Rückgabecode wird ausschließlich einmal zurückgegeben (das erste Mal).
- 2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 4Eh suchen ersten Directory-Eintrag (FIND FIRST)
- Aufruf AH 4Eh
- CX Attribut der Datei (siehe Funktion 43h)
- DS:DX Segment/Offset Zeiger zum ASCIIZ Dateiname (mit Attribut)
- Rückgabe CF gesetzt AX Fehlercode (02h, 12h)
- gelöscht Datenblock geschrieben an aktuelle DTA
- Format des Blockes ist: (Information von BIX)
- dokumentiert von Micro- |00h 1 Byte Attributbyte zum Suchen
- soft als "reserviert für |01h 1 Byte Laufwerksbuchstabe zum Suchen
- DOS' benutzt von folgenden|02h 11 Bytes der zu suchende Dateiname
- Suchen nächste Aufruf" |0Ch 2 Bytes Wort Wert des letzten Eintrags
- Funktion 4Fh |0Fh 4 Bytes dwort Zeiger zu dieser DTA
- |13h 2 Bytes Wort Start Inhaltsverzeichnis
-
- | PC-DOS 3.10 (von INTERRUP.ARC)
- |00h 1 Byte Laufwerksbuchstabe
- |01h-0Bh 11 Bytes zu suchender Dateiname
- |0Ch 1 Byte Attributbyte
-
- | DOS 2.x (und DOS 3.x außer 3.1?) (von INTERRUP.ARC)
- |00h 1 Byte Attributbyte
- |01h 1 Byte Laufwerksbuchstabe
- |02h-0Ch 11 Bytes zu suchender Dateiname
- |0Dh-0Eh 2 Bytes Anzahl Einträge im Inhaltsverzeichnis
- |0Fh-12h 4 Bytes reserviert
- |13h-14h 2 Bytes Anzahl Cluster im Ursprung Inhaltsverzeichnis
-
- 15h 1 Byte Dateiattribut
- 16h 2 Bytes Uhrzeit der Datei, Bitmaske:
- 0-4 halbe-Sekunden
- 5-10 minute
- 11-15 Stunde
- 18h 2 Bytes Datum der Datei, Bitmaske:
- 0-4 Tag
- 5-8 Monat
- 9-15 Jahre seit 1980
- 1Ah 2 Bytes niederwertiges Wort der Dateigröße
- 1Ch 2 Bytes höherwertiges Wort der Dateigröße
- 1Eh 13 Bytes Name und Erweiterung der gefundenen Datei, plus
- 1 Byte von 0s. Alle Leerzeichen werden von dem
- Name und Erweiterung entfernt, und falls eine
- Erweiterung vorhanden ist, geht ihr ein Punkt
- voran.
- Anmerkung 1) diese Funktion unterstützt keine Netzwerk Transaktionen.
- 2) Wildcards sind in der Dateibezeichnung zugelassen.
- 3) falls das Attribut Null ist, ausschließlich übliche Dateien werden gefunden. Falls das Datenträger-
- etikett Bit eingestellt ist, ausschließlich Datenträgeretiketten werden gefunden. Irgendwelche andere Attribute
- geben die Dateien mit dem Attribut und alle normalen Dateien gemeinsam zurück.
- 4) um alles außer dem Datenträgeretikett zu suchen, setzen der versteckt, System,
- und Unterverzeichnis Bits alle auf 1.
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) TOS:$ 4E SFIRST.
-
-
- Funktion 4Fh suchen nächsten Directory-Eintrag (FIND NEXT)
- suchen nächste ASCIIZ Datei
- Aufruf AH 4Fh
- Rückgabe CF gelöscht Datenblock geschrieben an aktuelle DTA
- gesetzt AX Fehlercode (02h, 12h)
- Anmerkung 1) falls Datei gefunden wird, DTA ist formatiert wie im Aufruf 4Eh.
- 2) Suchen Datenträgeretikett mit 4Eh/4Fh ist wie verlautet nicht 100% verläßlich
- unter DOS 2.x. Der Aufruf berichtet irgendwann das ein Datenträgeretikett gefunden wurde und
- zeigt zu einem wertlosen DTA, auch wenn das Datenträgeretikett das ausschließliche Element ist
- das nicht gesucht werden sollte. Die meisten Referenzen empfehlen die Benutzung von den älteren
- FCB Aufrufen zur Behandlung von Datenträgeretiketten.
- 3) diese Funktion unterstützt keine Netzwerk Transaktionen.
- 4) Benutzen von dieser Funktion nimmt an, daß die Original Dateibezeichnung Wildcards enthält
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) TOS:$ 4F SNEXT.
-
-
- Funktion 50h "benutzt intern von DOS" - einstellen PSP
- * einstellen neues Programm Segment Prefix (aktueller Prozess ID)
- Aufruf AH 50h
- BX Segmentadresse von dem neuen PSP
- Rückgabe keine - neues PSP wird als aktuelles von DOS betrachtet
- Anmerkung 1) durch übertragen des PSP Segment Werts in BX und ausgebend eines 50h Aufrufes, DOS speichert
- den Wert in eine Variable und benutzt diesen Wert immer, wenn ein Dateiaufruf
- gemacht wird.
- 2) Anmerkung daß in dem PSP (oder PDB) ein Tabelle von 20 (dezimal) offenen Datei
- Handles ist. Diese Tabelle startet an Offset 18h in dem PSP. Falls ein
- 0FFh in einem Byte ist, dann wird dieser Handle nicht benutzt. Eine Nummer in einer von den
- Bytes ist ein Index zu eine interne FB Tabelle für den Handle. Als
- Beispiel das Byte an Offset 18h ist für Handle 0, an Offset 19h Handle
- 1, etc. Bis zu 13h. Falls das höchste Bit gesetzt ist, dann ist die Datei, die dem Handle
- zugewiesen ist, nicht gemeinsam mit Kind Prozessen EXEC'd mit Aufruf 4Bh benutzt.
- 3) Funktion 50h ist gefährlich in Hintergrund Transaktionen vor DOS 3.x weil
- es den falschen Stapel zum speichern von Register benutzt. (dasselbe wie Funktionen
- 0 .. 0Ch in DOS 2.x). Benutz keine Stapel in 3.0+ - voll ablaufinvariant.
- 4) unter DOS 2.x, diese Funktion kann nicht innerhalb eines int 28h Handlers aufgerufen werden
- ohne Einstellung des kritischen Fehler Kennzeichens.
- 5) Information über offene Dateien, etc. Wird in dem PSP gespeichert, den DOS als aktuellen betrachtet.
- Falls ein Programm (z.B. ein speicherresistentes Programm) einen zweiten benötigten PSP erstellt,
- dann der zweite PSP sollte als aktueller gesetzt werden, damit sicher ist, das DOS schließt
- wie entgegengesetzt zu dem ersten, sobald die zweite Anwendung beendet wird.
- 6) siehe PC Mag Vol.5, No 9, p. 314 für Diskussionen, auch benutzt in BCOPY.ASM
- 7) benutzt von DOS 3.3 PRINT & DEBUG, DesQview 2.01, Windows 1.03, SYMDEB
- von MASM 4. 0.
- 8) diese Funktion ist verfügbar in der OS/2 DOS Kompatibilitätsbox.
- 9) DOS speichert die PID an eine Stelle, aber die eigentliche Adresse ist Version-
- abhängig. Die Strategie ist, suchen der PID und dabei seine Adresse
- suchen. Falls du hast seine Adresse, du kannst überlagern PIDs von den TSR pop-up
- Code durch peeking und pooking. In dem Initialisierungscode, benutze GetPID
- (0x50) zum holen der PID. DOS bleibt zwischen den Interrupt Vektoren 0:0 - 0:100
- und dem PID. Andere Programme können auch da sein, aber DOS auch.
- Suche in diesem Speicher nach einer Kopie von dem PID. Sobald eine gefunden
- wird, benutze SetPID (0x51) um einen falschen PID einzustellen. Falls die Stelle wo
- die original PID Änderungen zu der falsch PID gefunden ist, du hast gefunden die
- Adresse von dem PID. Nicht vergessen den PID mit SetPID nach jedem Test
- zu löschen. DOS 2.0 und 2.1 erhalten die PID in zwei Adressen, nicht in einer.
-
-
- Funktion 51h "benutzt intern von DOS " - holen Programm Segment Prefix
- * gibt die PSP Adresse von dem aktuell ausführenden Programm zurück
- Aufruf AH 51h
- Rückgabe BX Adresse vom aktuell ausführenden Programm (Prozess ID)
- Anmerkung Format vom PSP:
- Offset Größe Beschreibung
- 00h 2 Bytes Programm Austiegspunkt
- 02h Wort Speichergröße in Paragraphen
- 04h Byte ungebraucht (0)
- 05h 5 Bytes CP/M Style Einsprungspunkt (far Aufruf zu DOS)
- 0Ah Wort Beendigungsadresse (alt int 22h)
- 0Ch Wort Beendigungssegment
- 0Eh Wort break Adresse (alt int 23h)
- 10h Wort break Segment
- 12h Wort Fehler Adresse (alt int 24h)
- 14h Wort Fehler Segment
- 16h Wort Ursprung PSP Segment
- 18h 20 Bytes DOS 2.0+ offene Dateien, 0FFh= ungebraucht
- 2Ch Wort DOS 2. 0+ Environment Segment
- 2Eh dwort far Zeiger zum Prozess SS:SP
- 32h Wort DOS 3.x+ max geöffnete Dateien
- 34h DOS 3.x+ Adresse Dateitabelle geöffneter Dateien
- 36h dwort DOS 3.x+ Segment Dateitabelle geöffneter Dateien
- 38h 24 Bytes ungebraucht bei DOS Versionen vor 3.3
- 50h 3 Bytes DOS Funktionsverteiler (Far Routine)
- 53h 9 Bytes ungebraucht
- 55h FCB #1 Erweiterung
- 5Ch 16 Bytes FCB #1, gefüllt vom ersten Befehlszeilen Argument
- 6Ch 20 Bytes FCB #2, gefüllt vom zweiten Befehlszeilen Argument
- 80h 128 Bytes Befehlsende/vorgegebener DTA Puffer
- Anmerkung 1) benutzt in DOS 2.x, 3.x benutzt 62h.
- 2) Funktion 51h ist gefährlich in Hintergrund Transaktionen vor DOS 3.x weil
- es den falschen Stapel zum speichern von Register benutzt. (dasselbe wie Funktionen
- 0 .. 0Ch in DOS 2.x). Benutz keine Stapel in 3.0+ - voll ablaufinvariant.
- 3) 50h und 51h kann benutzt werden, falls mehr als ein Prozess in einem PC benutzt wird.
- Als Beispiel, falls ein speicherresistentes Programm eine Datei öffnen muß,
- kann dies als erstes 51h aufrufen, um den aktuellen ID zu sichern und dann 50h
- aufrufen um den ID zu seinen PSP einzustellen.
- 4) unter DOS 2.x, diese Funktion kann nicht innerhalb eines int 28h Handlers aufgerufen werden
- ohne Einstellung des kritischen Fehler Kennzeichens.
- 5) benutzt von DOS 3.3 PRINT, DEBUG.
- 6) diese Funktion ist verfügbar in der OS/2 DOS Kompatibilitätsbox.
-
-
- Funktion 52h "benutzt intern von DOS" - IN-VARS
- * gibt einen Far Zeiger zurück, zu ein verknüpften Liste von DOS Daten Variablen
- Aufruf AH 52h
- Rückgabe ES:BX Zeiger zu der DOS Liste von Listen, für Laufwerksinformation. Greift
- nicht auf das laufwerk zu, deshalb kann die Information in den Tabellen falsch sein, falls
- das Laufwerk geändert wurde. Gibt einen Zeiger auf den folgend Bereich
- von longword Zeiger zurück:
- Bytes Wert Beschreibung
- (allgemein) -2h, Wort Segment vom ersten Speicherkontrollblock verfügbar
- für MALLOC
- 00h dwort Far Zeiger zum ersten DOS Festplattenparameterblock
- 04h dwort Far Zeiger zu verknüpften Liste von DOS geöffnete Dateien
- Tabellen. (offen Dateien Tabelle Auflistung)
- 08h dwort Far Zeiger zu CLOCK$: Gerätetreiber, ob
- installierbar oder speicherresistent
- 0Ch dwort Far Zeiger zum aktuellen CON: Gerätetreiber,
- ob installierbar oder speicherresistent
-
- (DOS 2.x ausschließlich)
- 10h Wort Anzahl logischer Laufwerke im System
- 11h Wort größte unterstützte logische Sektorgröße
- 13h dwort Far Zeiger zum ersten Plattenpuffer benutzt von dem
- logisch Laufwerke. Der Größe von jedem Sektorpuffer
- ist gleich der logischen Sektorgröße plus eines 16
- Byte Kopfs. (Sektor Puffer Kopf) die Anzahl
- dieser Puffer wird durch die CONFIG.SYS. (Sektor
- Puffer Aufbau) eingestellt.
- 17h ---- Anfang (kein Zeiger. Der echte Anfang!)
- vom NUL Gerätetreiber. Dies ist das erste Gerät
- in der DOS Liste der Gerätetreiber.
-
- (DOS 3.x+)
- 10h Wort größte unterstützte logische Sektorgröße
- (die meisten Versionen von DOS sind hardcoded zu 200h)
- 12h dwort Far Zeiger zum Sektor Puffer Aufbau benutzt von
- den logischen Laufwerke. (Sektor Puffer Aufbau)
- 16h dwort Far Zeiger zum Laufwerk Pfad und positionieren Information
- Tabelle. (Laufwerk Pfad Tabelle)
- 1Ah dwort Far Zeiger zu einer Tabelle von FCBs. Dies Tabelle ist
- ausschließlich zulässig falls FCBS=xx in der CONFIG.SYS benutzt wurde
- 1Eh Wort Größe der FCB Tabelle
- 20h Byte Anzahl logischer Laufwerke zur Zeit unterstützt
- 21h Byte Wert von LASTDRIVE= in CONFIG.SYS (vorgegeben 5)
- 22h 18 Bytes Anfang (kein Zeiger-der echte Anfang!)
- vom NUL Gerätetreiber. Dies ist das erste Gerät
- in der DOS Liste der Gerätetreiber.
- 34h Byte Anzahl der JOINed Laufwerke
-
-
- Anmerkung 1) dieser Aufruf ist nicht in der OS/2 1.0's DOS Kompatibilitätsbox unterstützt.
- 2) benutzt von DOS 4.0 MEM.EXE, DOS 3.3 ASSIGN.COM, PRINT.COM, SUBST.EXE.
- 3) Artikel in Dr. Dobbs' journal, Juni 1989.
- 4) Festplattenparameterblock
- Offset Größe Beschreibung
- 00h Byte Nummer Platteneinheit, 0=A, 1=B, etc. Falls dies und das nächste
- Byte 0FFh sind, dieser Eintrag ist das Ende der Auflistung und
- ist nicht zulässig
- 01h Byte Übergebene Nummer der Platteneinheit an das Blocktreibergerät
- welche verantwortlich für dieses logisches Laufwerk ist
- 02h Wort die logische Sektorgröße des Laufwerks in Bytes
- 04h Byte Anzahl Sektoren pro Cluster -1. Die Anzahl der Sektoren
- pro Cluster muß eine Potenz von 2 sein
- 05h Byte Belegungsumschaltung. Der Umschaltwert wird zum berechnen
- der Anzahl Sektoren von der Anzahl Cluster benutzt,
- ohne eine Division durchzuführen. Anzahl Sektoren=
- Anzahl Cluster << Belegungsumschaltung.
- 06h Wort Anzahl reservierter Sektoren am Anfang von dem
- logischen Laufwerk. Kann Partition Information enthalten.
- 08h Byte Anzahl FATs. Vorgegeben 2
- 09h Wort Anzahl Hauptverzeichniseinträge
- 0Bh Wort erste Sektor der Daten beinhaltet (Platten Dateien)
- 0Dh Wort letzte Cluster Nummer. Anzahl Cluster im Datenbereich
- +1. Falls kleiner als 0FF6h die FAT benutzt 12-bit Inhaltsverzeichnis-
- einträge, andernfalls 16 Bit Einträge
- 0Fh Byte FAT Größe. Größe von einer FAT in logischen Sektoren
- 10h Wort Sektornummer vom ersten Hauptverzeichniseintrag
- 12h dwort Far Zeiger zu dem Blocktreibergerät
- 16h Byte Mediumbeschreibungsbyte (siehe Abschnitt 8)
- 17h Byte Kennzeichen Medium. Falls dies 0 ist, wurde auf das Laufwerk zugegriffen.
- Falls es -1 ist oder auf -1 gesetzt wird, baut DOS alle Datenstrukturen
- beim nächsten Zugriff neu auf, die diesem Laufwerk angeschlossen sind.
- 18h dwort Far Zeiger zum nächsten Festplattenparameterblock
-
- 5) offene Dateien Tabelle
- Offset Größe Beschreibung
- 00h dwort Far Zeiger zu der nächsten Tabelle in der Liste. Falls der
- Offset von diesem Zeiger 0FFFFh ist, dann ist die nächste Tabelle
- der abschließende Eintrag und ungültig
- 04h Wort Anzahl Tabelleneinträge. Jeder Tabellen Eintrag ist 53 Bytes
- lang. Es ist wenigsten ein Eintrag in jeder Tabelle
- außer dem Datenstationeintrag
- 06h --- Anfang von den offenen Dateien Tabelleneinträge (Anmerkung 6)
-
- 6) offene Dateien Tabelleneintrag (35h Bytes lang)
- Offset Größe Beschreibung
- 00h Wort Anzahl Datei Handles die zu dieser Datei zurückgreifen
- 02h Byte Zugriffsart (siehe Funktion 3Dh)
- 03h Unbekannt
- 05h Wort Geräteinformation (siehe Funktion 44h/00h)
- 06h dwort Far Zeiger zum Geräteinformationskopf falls dies ein Zeichentreiber
- ist. Falls dies ein Blocktreiberist, dies ist ein far
- Zeiger zu dem Festplattenparameterblock
- 07h dwort Zeiger zum Gerätetreiberkopf falls Zeichentreiber;
- Zeiger zum DOS Gerätekontrollblock falls Blocktreiber
- (Format siehe fn 32h)
- 0Bh Wort erster Cluster der Datei
- 0Dh Wort Uhrzeit der Datei im gepackten Format
- 0Fh Wort Datum der Datei im gepackten Format
- 11h dwort Dateigröße
- 15h dwort aktuelles Offset in Datei
- 19h Wort Unbekannt
- 1Bh Wort letzter gelsener Cluster
- 1Dh Wort Anzahl Sektoren die den Inhaltsverzeichniseintrag beinhalten
- 1Fh Byte Offset vom Inhaltsverzeichniseintrag im Sektor (Byte Offset/32)
- 20h 11 Bytes Dateiname im FCB Format (kein Pfad, kein Punkt, mit Leer-
- zeichen aufgefüllt)
- 2Bh 6 Bytes PSP Segment vom Dateibesitzer
- 2Dh 3 Bytes Unbekannt - normalerweise 0
- 31h Wort PSP Segment vom Dateibesitzer
- 33h-34h Unbekannt - normalerweise 0
-
- 7) Sektorpuffer Kopf: (DOS 2.0+)
- Offset Größe Beschreibung
- 00h dwort Zeiger zum nächsten Festplattenpuffer, 0FFFFh falls der letzte
- 04h 4 Bytes Unbekannt
- 08h Wort logische Sektornummer
- 10h 2 Bytes Unbekannt
- 12h dwort Zeiger zum DOS Gerätekontrollblock (siehe Funktion 32h)
-
-
- 8) Sektorpuffer Aufbau, gefolgt von einem 512 Byte Puffer (DOS 2.x)
- Offset Größe Beschreibung
- 00h dwort Zeiger zum nächsten Festplattenpuffer, Offset=FFFFh falls der letzte
- 04h Byte Laufwerk (0=A, 1=B, etc), FFh falls nicht in Benutzung
- 05h 3 Bytes ungebraucht? (enthält immer 00h 00h 01h)
- 08h Wort logische Sektornummer
- 0Ah Byte Anzahl zu schreibender Kopien (1 für nicht-FAT Sektoren)
- 0Bh Byte Sektor Offset zwischen Kopien falls mehrfache Kopien
- geschrieben worden sind
- 0Ch dwort Zeiger zum DOS Gerätekontrollblock (siehe AH=32h)
- 10h ---- gepufferte Daten
-
- 9) Sektorpuffer Aufbau, gefolgt von einem 512 Byte Puffer (DOS 3.x)
- Offset Größe Beschreibung
- 00h dwort Far Zeiger zu dem nächsten Sektorpuffer. Puffer werden
- gefüllt in der Anordnung in der sie in der Liste
- erscheinen. Der letzte Puffer ist zulässig und hat den Wert
- 0FFFFFFFFh
- 04h Byte Laufwerksnummer. Dies ist das Laufwerk, auf das die aktuellen
- Daten in dem Puffer verweisen. 0FFh falls nie benutzt.
- 05h Byte Datenart Kennzeichen. Bit Felder welcher Bereich von dem Laufwerk
- auf den Puffer verweist.
- Bit Beschreibung
- 0 Start Sektor?
- 1 FAT Daten
- 2 Inhaltsverzeichnis oder Unterverzeichnis Daten
- 3 Datei Daten
- 4 ---
- 5 Puffer wird benutzt - kann überschrieben werden, falls gesetzt
- 6 Puffer ist schlecht
- 7 ---
- 06h Wort logische Sektornummer der gepuffert Daten
- 08h Byte Anzahl zu schreibender Kopien (1 für nicht-FAT Sektoren)
- 09h Byte Sektor Offset zwischen Kopien falls mehrfache Kopien
- geschrieben worden sind
- 0Ah dwort Far Zeiger zum Festplattenparameterblock (siehe fn 32h)
- 0Eh Wort nicht benutzt, normalerweise 0
- 10h ---- gepufferte Daten
-
-
- 7) Sektorpuffer Kopf: (DOS 4.0+)
- DOS 4.x Festplattenpuffer Kopfkette (Array, ein Eintrag pro Kette):
- Offset Größe Beschreibung
- 00h Wort EMS logische Seitennummer in welcher die Kette speicherresistent ist,
- wertlos falls kein EMS benutzt wird
- 02h dwort Zeiger zum kleinsten kürzlich benutzten Puffer Kopf. Alle
- Puffer in dieser Kette sind in demselben Segment.
- 06h Wort Unbekannt - gewöhnlich Null
-
- 10) Sektorpuffer Aufbau, gefolgt von einem 512 Byte Puffer (DOS 4.x)
- Offset Größe Beschreibung
- 00h Wort Vorwärts Zeiger, Offset ausschließlich, zu nächsten kleinsten kürzlich
- benutzten Puffer
- 02h Wort Rückwärts Zeiger, Offset ausschließlich
- 04h Byte Laufwerk (0=A, 1=B, etc), 0FFh falls nicht in Benutzung
- 05h Byte Datenart Kennzeichen. Bit Felder welcher Bereich von dem Laufwerk
- auf den Puffer verweist.
- Bit Beschreibung
- 0 Start Sektor?
- 1 FAT Daten
- 2 Inhaltsverzeichnis oder Unterverzeichnis Daten
- 3 Datei Daten
- 4 ---
- 5 Puffer wird benutzt - kann überschrieben werden, falls gesetzt
- 6 Puffer ist schlecht
- 7 ---
- 06h dwort logische Sektornummer
- 0Ah Byte Anzahl zu schreibender kopien
- für FAT Sektoren, dieselbe Anzahl wie FATs
- für Daten und Inhaltsverzeichnis Sektoren, gewöhnlich 1
- 0Bh Wort Offset in Sektoren zwischen Kopien zum schreiben für
- FAT Sektoren
- 0Dh dwort Zeiger zum DOS Gerätekontrollblock (siehe AH= 32h)
- 11h 3 Bytes Unbekannt
- 14h gepuffert Daten
-
- 11) Laufwerkspfad Tabelleneintrag (Array, ein 51h-byte Eintrag pro Laufwerk):
- Offset Größe Beschreibung
- 00h 64 Bytes aktueller vorgegebener ASCIIZ Pfadname mit Laufwerksbuchstabe,
- Doppelpunkt, und führenden Backslash (\)
- 44h Byte Kennzeichenbyte. Alle zulässige Einträge enthalten ein 40h, letzter
- Eintrag enthält 00h.
- Bits 15 Netzwerklaufwerk
- 14 physisches Laufwerk
- 13 JOINed, aktueller Pfad ist eigentlicher Pfad ohne
- SUBST Laufwerksbuchstabe im Pfad kann abweichen vom
- logischen Laufwerksnamen
- 12 SUBSTed, aktueller Pfad ist eigentlicher Pfad ohne
- SUBST Laufwerksbuchstabe im Pfad kann abweichen vom
- logischen Laufwerksnamen
- 45h dwort Far Zeiger zum aktuellen Festplattenparameterblock
- 49h Wort aktueller Block oder Spur/Sektornummer für dieses Inhaltsverzeichnis
- 0 falls Hauptverzeichnis, -1 falls nie Zugriff erhielt
- 4Bh dwort Unbekannt. Far Zeiger zu (?). Gewöhnlich -1
- 4Fh Wort Offset vom '\' im aktuellen Pfadfeld präsentiert das
- Hauptverzeichnis vom logischen Laufwerk (2 falls nicht SUBSTed oder JOINed,
- andernfalls Anzahl Bytes in SUBST/JOIN Pfad)
-
-
- Funktion 53h "intern von DOS benutzt" - übersetzen BPB
- * übersetzt BPB (BIOS Parameterblock, siehe unterhalb) in ein DOS
- Festplattenblock (siehe Funktionsaufruf 32h).
- Aufruf AH 53h
- DS:SI Zeiger zum BPB (BIOS Parameterblock)
- ES:BP Zeiger zum Pufferbereich für DOS Festplattenblock
- Anordnung von BPB:
- Offset Größe Beschreibung
- 00h-01h Wort Bytes pro Sektor, erhalten von DDB Bytes 02h-03h.
- 02h Byte Sektoren pro Cluster, erhalten von (DDB Byte 4)+1
- 03h-04h Wort reservierte Sektoren, erhalten von DDB Bytes 06h-07h
- 05h Byte Anzahl FATs, erhalten von DDB Byte 08h
- 06h-07h Wort # von Hauptverzeichniseinträge, erhalten von DDB Bytes 09h-0Ah
- für DOS 3.x: 08h-09h Wort gesamte Anzahl Sektoren, erhalten von:
- ((DDB Bytes 0Dh-0Eh)-1) * (Sektoren pro Cluster
- (BPB Byte 2)) + (DDB Bytes 0Bh-0Ch)
- für DOS 4.x: auf Null gesetzt, falls Partition größer als 32Mb ist,
- setzt dwort an 15h auf die eigentliche Anzahl Sektoren
- 0Ah Wort Mediumbeschreibungsbyte, erhalten von DDB Byte 16h
- 0Bh-0Ch Wort Anzahl Sektoren pro FAT, holen von DDB Byte 0Fh
- für DOS 3.x: 0Dh Wort Anzahl Sektoren pro Spur
- 0Fh Wort Anzahl Köpfe
- 11h dwort Anzahl versteckter Sektoren
- 15h 11 Bytes reserviert
- für DOS 4.x: 15h dwort gesamte Anzahl Sektoren falls Wort an 08h Null
- enthält
- Rückgabe Unbekannt
- Anmerkung diese Funktion ist dokumentiert wie 'SetDPB' in dem ZENITH MS-DOS 3.05 TRM.
-
-
- Funktion 54h holen VERIFY Einstellung
- holen Zustand des VERIFY Kennzeichens
- Aufruf AH 54h
- Rückgabe AL 00h falls VERIFY aus
- 01h falls VERIFY an
- Anmerkung 1) Kennzeichen kann mit Funktion 2Eh eingestellt werden.
- 2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 55h "intern von DOS benutzt" - erstellen "Kind" PSP
- * erstellen PSP: ähnlich wie Funktion 26h (welche ein neuen Programm Segment
- Prefix an Segment in DX erstellt), außer das ein "Kind" PSP erstellt wird,
- schneller als as existierende zu kopieren.
- Aufruf AH 55h
- DX Segmentadresse an welcher das neue PSP erstellt werden soll.
- Rücklauf Unbekannt
- Anmerkung 1) diese Funktion ist ähnlich der Funktion 26h welche erstellt ein PSP, außer daß ungleich
- der Funktion 26h die Segmentadresse von dem Ursprungsprozess erhalten wird von dem
- aktuellen Prozess ID, eher als von dem CS Wert auf dem Stapel (von dem
- INT 21h Aufruf). DX hat den neuen PSP Wert und SI enthält den Wert der
- im PSP:2 abgestellt wird (Anfang vom Speicher).
- 2) Funktion 55 ist nur ein Ersatz für Funktion 26h. Es wird der aktuelle PSP zu
- der Segmentadresse DX kopiert, mit der Ergänzung, daß SI das neue
- Speicher Anfang Segment enthält. Dies setzt voraus, daß Funktion
- 26h SI auf das gefundene Segment setzt in dem aktuell PSP und dann die
- Funktion 55h aufruft.
-
-
- Funktion 56h umbenennen einer Datei
- Aufruf AH 56h
- DS:DX Zeiger zu ASCIIZ mit altem Pfadname
- ES:DI Zeiger zu ASCIIZ mit neuem Pfadname
- Rückgabe CF gelöscht erfolgreiches umbenennen
- gesetzt AX Fehlercode (02h, 03h, 05h, 11h)
- Anmerkung 1) arbeitet mit Dateien in demselben logisch Laufwerk ausschließlich.
- 2) Globale Zeichen sind im Dateinamen nicht zugelassen.
- 3) der Name von einer Datei ist der volle Pfadname. Der volle Pfadname der Datei kann
- geändert sein, solange die eigentliche Dateiname.EXT unverändert bleibt. Ändern
- des Pfadnamens erlaubt es die Datei von Unterverzeichnis zu
- Unterverzeichnis auf einem logischen Laufwerk "zu verschieben" ohne das
- die Datei eigentlich kopiert wird.
- 4) DOS 3.x erlaubt das Umbenenne von verzeichnissen.
- 5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 6) TOS:$ 56 RENAME. Ähnlich wie MS-DOS 2.x.
-
-
- Funktion 57h holen/einstellen Datum und Uhrzeit einer Datei
- lesen oder modifizieren Uhrzeit- und Datumseintrag eines Dateieintrages
- Aufruf AH 57h
- AL Funktionscode
- 00h holen Datum und Uhrzeit
- 01h einstellen Datum und Uhrzeit
- CX einzustellende Uhrzeit
- DX einzustellendes Datum
- 02h Unbekannt (DOS 4.0+)
- 03h Unbekannt
- 04h Unbekannt (DOS 4.0+)
- BX Dateinummer
- Rückgabe CF gelöscht CX Uhrzeit vom letzten Schreibzugriff (falls AL=0)
- DX Datum von letzten Schreibzugriff (falls AL=0)
- gesetzt AX Fehlercode (01h, 06h)
- Anmerkung 1) Datum/Uhrzeit Formate sind:
- CX Bits 0Bh-0Fh Stunden (0-23) DX Bits 09h-0Fh Jahr (relative zu 1980)
- 05h-0Ah Minuten (0-59) 05h-08h Monat (0-12)
- 00h-04h Sek. in 2er Schritte (0-29) 00h-04h Tag des Monats (0-31)
- 2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 3) TOS:$ 57 GSDTOF.
-
-
- Funktion 58h holen/einstellen Belegungsstrategie (DOS 3.0+)
- Aufruf AH 58h
- AL 00h holen aktuelle Strategie
- 01h einstellen neue aktuelle Strategie
- BL neue Strategie
- 00h ersten passenden - wählt den niedrigsten Block im Speicher
- welcher paßt (dies ist der vorgegebene Weg). (benutzt
- erste Speicherblock der groß genug ist)
- 01h besten passenden - wählt den kleinsten Block welcher
- der Anforderung genügt.
- 02h letzten passenden - wählt den höchsten Block welcher paßt
- Rücklauf CF gelöscht erfolgreich
- AX Strategie Code
- gesetzt Fehler
- AX Fehlercode( 01h)
- Anmerkung 1) dokumentiert in ZENITH DOS Version 3.1, einige im erweiterten MSDOS.
- 2) die Unterfunktion einstellen akzeptiert irgendein Wert in BL; 2 oder größer bedeutet den letzten
- passenden. Die Unterfunktion holen, gibt den letzten eingestellten Wert zurück, deshalb sollten
- Programme kontrollieren, ob der Wert größer oder gleich 2 ist.
- 3) für Diskussion vom besten passenden kontra ersten passenden Belegungsstrategie, siehe
- Knuth, *Fundamental Algorithms.* mit sehr wenigen worten, Knuth findet daß ersten
- passenden Methoden sind fern übergeordnet zum besten passenden, welche erhöht den
- Belegungsaufwand und die Speicherzersplitterung. Der "letzte" passenden den DOS
- anbietet ist nichts andere als ein erster passender, wobei die Suche an dem
- anderen Ende von der Kette beginnt (der Algorithmus nimmt den ersteen passenden
- Block, der ihm bei der Suche begegnet).
-
-
- Funktion 59h holen erweiterten Fehlercode (DOS 3. 0+)
- der Funktionsaufruf (59h) holen erweiterten Fehler ist geplant um eine allgemeine
- Einstellung von Fehlercodes zu liefern und um umfassendere Information über den Fehler
- an die Anwendung weiterzugeben. Die Information die von dem Funktionsaufruf 59h zurückgegeben wird , in
- Beifügung zu dem Fehlercode, ist die Fehler Klasse bzw. Gruppe, der Ort, und die
- empfohlene Handlung. Die Fehler Klasse bzw. Gruppe liefert Information über den Fehlertyp
- (Hardware, intern, System, etc.). Der Ort liefert Information über den Bereich
- der in den Ausfall verwickelt ist (serielles Gerät, Blocktreiber, Netzwerk,
- oder Speicher). Die empfohlene Handlung liefert eine vorgegebene Handlung für
- Programme die den wesentliche Fehlercode nicht verstehen.
-
- Neu geschriebene Programme sollte die Benutzung der erweiterten Fehler unterstützen beide von
- Interrupt 24h Hard Error Handler und nach irgendeinem int 21h Funktionsaufruf. FCB
- Funktionsaufrufe zeigen einen Fehler an, indem 0FFh in AL zurückgeben wird. Handle Funktion
- setzen das Carry Flag (CF) um einen Fehler anzuzeigen, und den den Fehlercode
- in AX zurück. Int 21h Handle Funktionsaufrufe für DOS 2.x geben Fehlercodes von 0-18
- zurück. Int 24h Handle Funktionsaufrufe geben Fehlercodes von 0-12 zurück.
- Aber die Anwendung kann irgendeinen von den Fehlercodes bekommen, die in
- der erweiterten Fehlercode Tabelle benutzt werden, indem die Funktion 59h aufgerufen wird.
- Handle Funktionsaufrufe für DOS 3.x können irgendwelche von den Fehlercodes zurückgeben. Jedoch,
- wird empfohlen daß dem Funktionsaufruf ein Aufruf der Funktion 59h folgt, um
- die Fehler Klasse bzw. Gruppe, den Ort, und die empfohlene Handlung zu bekommen.
-
- Die Funktion holen erweiterten Fehler (59h), kann immer aufgerufen werden, ungeachtet dessen
- ob der vorhergehende DOS Aufruf ein alter Entwurf (Fehlercode in AL) oder neuer Entwurf
- (Carry Bit). Kann auch innerhalb eines int 24h Handlers benutzt werden.
-
- Du kannst entweder AL oder das Carry Bit kontrollieren um festzustellen das kein Fehler aufgetreten ist
- und die Funktion 59h ausschließlich dann aufrufen, falls da ein Fehler war, oder einfach
- immer die Funtion 59h aufrufen um festzustellen ob ein fehler aufgetreten ist
- oder nicht. Sobald die Funktion 59h aufgerufen wird, gibt diese in AX= 0 zurück, falls der
- vorhergehende DOS Aufruf erfolgreich war.
-
- Verschiedenartige Versionen von IBM's DOS, MSDOS, OEM kundenspezifische Versionen von MSDOS,
- Digital's DRDOS, und andere DOS Umgebungsnachbildungen geben manchmal unter-
- schiedliche Fehlercodes für dieselbe Funktion zurück. DIes sollte sorgfältig geprüft werden, falls
- auf eine wesentliche Fehlerbedingung geprüft wird.
-
- Aufruf AH 59h
- BX Version Code (0000 für DOS 3.0 und 3.1)
- Rückgabe AX erweiterter Fehlercode:
- 01h ungültige Funktionsnummer
- 02h Datei nicht gefunden
- 03h Pfad nicht gefunden
- 04h zu viele offene Dateien, keine freien Handles mehr
- 05h Zugriff verweigert
- 06h ungültiges Handle
- 07h Speicherkontrollblöcke zerstört
- 08h ungenügend Speicher
- 09h ungültige Speicherblockadresse
- 0Ah ungültiges Environment
- 0Bh ungültiges Format
- 0Ch ungültiger Zugriffscode
- 0Dh ungültige Daten
- 0Eh reserviert
- 0Fh ungültiges Laufwerk wurde spezifiziert
- 10h Versuch das aktuelle Inhaltsverzeichnis zu entfernen
- 11h nicht dasselbe Gerät
- 12h keine weiteren Dateien
- 13h Versuch auf schreibgeschützte Diskette zu schreiben
- 14h Unbekannte Einheit
- 15h Laufwerk nicht bereit
- 16h Unbekannter Befehl
- 17h CRC Fehler
- 18h falsche Datenlänge
- 19h Positionierungsfehler
- 1Ah Unbekannter Gerätetyp
- 1Bh Sektor nicht gefunden
- 1Ch Drucker hat kein Papier mehr
- 1Dh Schreibfehler
- 1Eh Lesefehler
- 1Fh allgemeiner Fehler
- 20h Sharing Übertretung
- 21h Sperren Übertretung
- 22h unerlaubter Disketten-Wechsel
- 23h FCB nicht verfügbar
- 24h Sharing Pufferüberlauf
- 25h reserviert
- 26h "
- 27h "
- 28h "
- 29h "
- 2Ah "
- 2Bh "
- 2Ch "
- 2Dh "
- 2Eh "
- 2Fh "
- 30h "
- 31h reserviert
- 32h Netzwerk: Anforderung wird nicht unterstützt (DOS 3.1 + MS Netzwerke)
- 33h Remote Computer nicht angeschlossen
- 34h doppelter Name auf Netzwerk
- 35h Netzwerk: Name nicht gefunden
- 36h Netzwerk: beschäftigt
- 37h Netzwerk: Gerät existiert nicht mehr
- 38h NETBIOS Befehlsgrenze überschritten
- 39h Netzwerk: Adapter Hardwarefehler
- 3Ah falsche Antwort vom Netzwerk
- 3Bh unerwarteter Netzwerkfehler
- 3Ch unverträglicher remote Adapter
- 3Dh Drucker Warteschlange voll
- 3Eh nicht genug Platz für Druckdatei
- 3Fh Druckdatei war gelöscht
- 40h Netzwerk: Name war gelöscht
- 41h Netzwerk: Zugriff verweigert
- 42h Netzwerk: falscher Gerättyp
- 43h Netzwerk: Name nicht gefunden
- 44h Netzwerk: Namensgrenze überschritten
- 45h NETBIOS Sitzungslimit überschritten
- 46h temporäre Pause
- 47h Netzwerk: Anforderung nicht akzeptiert
- 48h Drucken oder Festplattenumleitung angehalten (DOS 3.1 + MS Netzwerke)
- 49h reserviert
- 4Ah "
- 4Bh "
- 4Ch "
- 4Dh "
- 4Eh "
- 4Fh reserviert
- 50h Datei existiert
- 51h reserviert
- 52h kann nicht anfertigen Inhaltsverzeichniseintrag
- 53h versagen auf Interrupt 24h
- 54h zu viele Umleitungen
- 55h duplizieren Umleitung
- 56h ungültiges Passwort
- 57h ungültiger Parameter
- 58h Netzwerk: Gerätefehler
- BH Klasse bzw. Gruppe vom Fehler:
- 01h kein Speicherplatz mehr auf dem Medium
- 02h augenblickliches Zugriffsverbot
- 03h keine Berechtigung (Zugriff verweigert)
- 04h intern
- 05h Hardwareausfall
- 06h Systemausfall
- 07h Fehler im Anwenderprogramm
- 08h nicht gefunden
- 09h ungültiges Format
- 0Ah Datei ist gesperrt
- 0Bh Media Fehler (falsches Datenträger ID, Festplattenausfall)
- 0Ch schon existiert
- 0Dh Unbekannt
- BL vorgeschlagene Handlung:
- 01h nochmal wiederholen
- 02h nochmal wiederholen anch einer Pause
- 03h Anwendereingabe
- 04h abbrechen nach Säuberungsaktion
- 05h sofort abbrechen
- 06h ignorieren
- 07h nochmal wiederholen, wenn Anwender Fehler behoben hat
- CH Ort (wo sich der Fehler ereignete):
- 01h Unbekannt oder nicht geeignet
- 02h Blocktreiber
- 03h Netzwerk
- 04h serielles Gerät
- 05h Speicher
- Anmerkung 1) nicht alle DOS Funktionen benutzen das Carry Flag um auf einen Fehler hinzuweisen. Carry
- sollte ausschließlich bei Funktionen benutzt werden, bei denen die Verwendung dokumentiert ist.
- 2) keine der DOS Funktionen welche vor 2.0 existierten, benutzen das Carry Flag
- Fehleranzeiger. Viele von ihnen benutzen das Register AL um auf einen Fehler hinzuweisen.
- Bei einem Fehler wird gewöhnlich 0FFh in AL übertragen. Die meisten, aber nicht alle, der "neuen"
- (2.x,3.x) Funktionen benutzen das Carry Flag, und die meisten, aber nicht alle, von den "alten"
- (1.x) Funktionen benutzen AL.
- 3) bei der Rückkehr, sind CL,DI,DS,DX,ES,BP, und SI zerstört - sichern bevor
- diese Funktion aufegrufen wird, falls verlangt.
- 4) DOS 2.x Fehlercodes: falls die Funktionsaufrufe 38h-57h mit DOS 2.x benutzt werden,
- um zu prüfen, ob sich ein Fehler ereignet hat, sollte das AX Register
- auf die folgend Fehlercodes überprüft werden:
- Funktion Fehlercode Funktion Fehlercode Funktion Fehlercode
- 38h 2 41h 2,3,5 4Ah 7,8,9
- 39h 3,5 42h 1,6 4Bh 1,2,3,5,8,10,11
- 3Ah 3,5,15 43h 1,2,3,5 4Eh 2,3,18
- 3Bh 3 44h 1,3,5,6 4Fh 18
- 3Ch 3,4,5 45h 4,6 56h 2,3,5,17
- 3Dh 2,3,4,5,12 46h 4,6 57h 1,6
- 3Eh 6 47h 15
- 3Fh 5,6 48h 7,8
- 40h 5,6 49h 7,9
- 5) Anmerkung die erweiterten Fehlercodes 13h bis 1Fh entsprechen den Fehler-
- codes 00h bis 0Ch die vom int 24h zurückgegeben werden.
- 6) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
-
- Funktion 5Ah erstellen temporäre Datei
- erstellen eindeutige Datei (zur temporären Benutzung) (DOS 3.0+)
- Aufruf AH 5Ah
- DS:DX Zeiger zum Puffer der ein ASCIIZ Inhaltsverzeichnispfad
- beendet mit einem Backslash (\) beinhaltet. Der Puffer muß wenigsten 13
- freie Bytes nach dem Backslash haben, wohin der Dateiname und die
- Erweiterung geschrieben wird.
- CX Dateiattribut
- Rückgabe CF gelöscht AX Dateinummer (Handle)
- DS:DX neuer ASCIIZ Pfadname
- gesetzt AX Fehlercode (03h, 05h)
- Anmerkung 1) die erstellte Datei ist wahrlich nicht "temopär". Sie muß durch den
- Anwender entfernt werden.
- 2) falls ein Dateiname erstellt werden soll, der schon in dem aktuellen Inhaltsverzeichnis
- existiert, ruft sich diese Funktion wieder selbst mit einem anderen eindeutigen Dateinamen
- auf, bis ein eindeutiger Dateiname gefunden worden ist.
- 3) der temporäre Dateiname besteht gewöhnlich aus Buchstaben und Zahlen.
- Es wird keine Dateierweiterung erzeugt.
- 4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 5Bh erstellen einer neuen Datei (DOS 3.0+)
- Aufruf AH 5Bh
- DS:DX Segment/Offset Zeiger zu einem ASCIIZ Pfadname
- CX Datei Attribut
- Rückgabe CF gelöscht AX Dateinummer
- DS:DX neuer ASCIIZ Pfadname
- gesetzt AX Fehlercode (03h, 04h, 05h, 50h)
- Anmerkung 1) ungleich Funktion 3Ch, Funktion 5Bh versagt falls die Datei schon existiert.
- 2) die neue Datei wird im lese/schreiben Modus geöffnet.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
-
-
- Funktion 5Ch sperren/entsperren Dateizugriff (DOS 3.0+)
- Aufruf AH 5Ch
- AL 00h sperren Dateibereich
- 01h entsperren Dateibereich
- BX Dateinummer
- CX:DX Start Offset des zu sperrenden Bereiches
- SI:DI höchste/niedrigste Größe des zu sperrenden Bereiches
- Rückgabe CF gelösch erfolgreich
- gesetzt AX Fehlercode (01h,06h,21h)
- Anmerkung 1) Entsperre alle Dateien vor dem Beenden oder unbestimmt Ergebnisse können auftreten.
- Programme die Datei Sperrung benutzen, sollten den int 23h (Control-C Anwender
- Adresse) und den int 24h (Kritische Fehler Routine Adresse) abfangen und
- die Dateien entsperren, bevor an den Anrufer zurückgegeben wird.
- 2) Programme hervorgebracht mit EXEC, schleppen alle die Ursprungsdateinummern mit,
- aber nicht die Dateisperren.
- 3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
- 4) es kann eine vollständige Datei, irgendwelche Teile von einer Datei, oder verschiedene Stück von
- derselben Datei gesperrt werden. Als Beispiel, es ist wirkungsvoller einen Bereich in
- einer Datenbank zu sperren, der einen einzelnen Satz enthält als die Datei vollständig
- zu sperren.
- 5) Es sollte nur soviel von einer Datei gesperrt werden, wie echt benötigt wird, und ausschließlich
- nur solange wie notwendig. Wenn auf eine Datei gemeinsam zugegriffen und oft
- aktualisiert wird, dauerndes sperren und entsperren kann den Dateizugriff
- spürbar verlangsamen.
-
-
- Funktion 5Dh nicht dokumentiert - Multifunktion
- * DOS intern - teilweise (DOS 3.x+)
- Aufruf AH 5Dh
- AL Unterfunktion
- 00h indirekter Funktionsaufruf
- DS:DX Zeiger zum Puffer der die Registerwerte beinhaltet
- AX, BX, CX, DX, SI, DI, DS, ES für ein Aufruf von
- int 21h
- Rückgabe entsprechend der aufgerufenen Funktion
- Anmerkung kontrolliert nicht AH. Ungültige Werte können das
- Abstürzen des Systems veranlassen.
- 01h SYNC? (DOS 3.1+)
- Parameter Unbekannt
- Anmerkung 1) tut etwas mit jeder Plattendatei in dem System.
- Dateitabelle zu welcher geschrieben wurde.
- 2) falls Remote Datei, ruft int 2Fh/fn1107h.
- 3) scheint den Uhrzeiteintrag von allen offenen
- Dateien zu denen geschreiben wurde zu aktualisieren.
- 02h SHARE.EXE? (DOS 3.1+)
- Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
- 03h SHARE.EXE? (DOS 3.1+)
- Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
- 04h SHARE.EXE Funktionen? (DOS 3.1+)
- Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
- 05h Netzwerk Funktionen? (DOS 3.1+)
- DS:DX Zeiger zum Puffer (siehe AX=0Ah), ausschließlich die Felder am
- Offset 12h, 14h werden benutzt
- Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
- 06h holen Adresse von kritischen Fehler Kennzeichen
- DS:DX Zeiger zum Puffer (siehe AX=0Ah), ausschließlich die Felder am
- Offset 12h, 14h werden benutzt
- Rückgabe CX Unbekannter Wert
- DX Unbekannter Wert
- DS:SI Zeiger zum kritischen Fehler Kennzeichen
- Anmerkung dieser Aufruf erledigt eine Anzahl von anderen Arbeiten und gibt
- zusätzlich den Zeiger zur Einstellung des CritErr Kennzeichens zurück
- erlaubt die Benutzung der Funktionen 50h/51h vom int 28h
- unter DOS 2.x durch den Zwang den richtigen Stapel zu benutzen.
- (LANtastic) 07h Rückgabe umgeleiteter Druckermodus
- Rückgabe DL 00 Ausgabe ist kombiniert
- 01h Ausgabe ist separat
- Anmerkung der aktuelle Druckermodus (jede Druckerausgabe
- kombinierte oder separat) wird zurückgegeben.
- (LANtastic) 08h Einstellen umgeleiteter Druckermodus (jede Druckerausgabe
- DL 00h einstellen umgeleitete Ausgabe ist kombiniert
- 01h einstellen umgeleitete Ausgabe ist separat.
- (Startet stillschweigend einen neuen Druckauftrag)
- Rückgabe keine
- Anmerkung 1) der aktuelle Druckermodus (jede Druckerausgabe
- kombiniert oder separat) kann einstellt werden.
- 2) kann von COMMAND.COM benutzt sein
- (LANtastic) 09h Löscht Druckerausgabe
- Rückgabe keine
- Anmerkung 1) Druckerausgabe ist gelöscht auf und ein neuer Druckenauftrag
- wird gestartet. Wenn kein zu löschende Ausgabe existiert,
- dann hat diese Funktion keine Wirkung.
- 2) kann von COMMAND.COM benutzt sein
- 09h Unbekannt - kann von COMMAND.COM benutzt sein
- 0Ah einstellen Fehlerinformation (Fehler, Klasse bzw. Gruppe, Handlung, und Ort)
- DS:DX Adresse der 11-Worte Fehlerinformationstabelle
- Format der Fehlerinformationstabelle:
- Offset Größe Beschreibung
- 00h Wort Wert der beim nächsten Aufruf von fn 59h
- in AX zurückgegeben wird
- 02h Wort Wert der beim nächstes Aufruf von fn 59h
- in BX zurückgegeben wird
- 04h Wort CX
- 06h Wort DX
- 08h Wort SI
- 0Ah Wort DI
- 0Ch Wort DS
- 0Eh Wort ES
- 10h Wort reserviert (0)
- 12h Wort Unbekannt (0 für DOS 3.1)
- 14h Wort Unbekannt (0 für DOS 3.1)
- Rückgabe CX Unbekannter Wert
- DX Unbekannter Wert
- DS:SI (für 06h) Zeiger zum kritischen Fehler Kennzeichen
- Anmerkung 1) dies anrufen scheint viele unterschiedlich Funktionen zu haben.
- 2) Funktion 0Ah; DOS 3.1+.
- 3) Funktion 06h; Einstellung CritErr Kennzeichen erlaubt die Benutzung der Funktionen 50h/51h vom
- int 28h unter DOS 2.x durch den Zwang den richtigen Stapel zu benutzen.
- 4) Funktionen 07h, 08h, 09h sind identisch in DOS 3.1 und rufen int 2Fh
- fn1125h auf.
-
-
- Funktion 5Eh Netzwerk Drucker (teilweise dokumentiert von Microsoft)
- DOS 3.1+ mit Netzwerk Software
- Aufruf AH 5Eh
- AL 00h holen Maschinenname
- DS:DX Zeiger zum 16-byte Puffer für ASCIIZ Name
- Rückgabe CH 00h falls Name nicht definiert ist
- <>0 Name ist definiert
- CL 00h Name nicht vorhanden
- <>0 NetBIOS Nummer des Namens
-
- DS:DX Zeiger zum ASCIIZ Name falls CH <>0
- Anmerkung der ASCIIZ Name ist eine 15 Byte lange Zeichenkette, mit Nullen
- auf die Länge aufgefüllt.
- 01h einstellen Maschinenname
- CH 00h Name löschen
- <>0 einstellen Name
- CL Nummer des Namens
- DS:DX Zeiger zum ASCIIZ Name
- 02h einstellen Zeichenkette zur Druckersteuerung
- BX Index Umleitungsliste
- CX Länge der einzustellenden Zeichenkette (max 64 Bytes)
- DS:SI Zeiger zum Zeichenketten Puffer
- Anmerkung 1) einstellen Zeichenkette erstellt eine Zeichenkette die
- immer zu dem Netzwerkdrucker gesendet wird, wenn eine Datei an
- den Drucker gesendet wird.
- 2) LANtastic LANOS bearbeitet diese Anforderung nicht,
- seit die Druckereinstellungen durch den Systemverwalter
- kontrolliert werden, indem das Programm NET_MGR benutzt
- wird. Wie auch immer, der Systemaufruf gibt
- keine Fehler zurück.
- 03h holen Zeichenkette zur Druckersteuerung
- BX Index Umleitungsliste
- ES:DI Zeiger zum 64-byte Zeichenketten Puffer
- Rückgabe CX Länge der eingestellten Zeichenkette (max 64 Bytes)
- Anmerkung 1) dieser Aufruf gibt die Zeichenkette zurück, die mit der
- vorhergehenden fn 02h eingestellt wurde.
- 2) LANtastic LANOS bearbeitet diese Anforderung nicht,
- seit die Druckereinstellungen durch den Systemverwalter
- kontrolliert werden, indem das Programm NET_MGR benutzt
- wird. Wie auch immer, der Systemaufruf gibt
- keine Fehler zurück und die Länge der Zeichenkette
- (CX) ist 0.
- 04h DOS 3.1+ +Microsoft Netzwerke - Unbekannt
- Anmerkung ruft int 2F/AX=11Fh mit 5E04h auf dem Stapel.
- 05h DOS 3.1+ +Microsoft Netzwerke - Unbekannt
- Anmerkung ruft int 2F/AX=111Fh mit 5E05h auf dem Stapel.
- 06h DOS 3.1+ +Microsoft Netzwerke - Unbekannt
- Anmerkung ruft int 2F/AX=111Fh mit 5E06h auf dem Stapel.
- Rücklauf CF gelöscht erfolgreich
- gesetzt Fehler
- AX Fehlercode (01h für alle verzeichneten Unterfunktionen)
- Anmerkung 1) benutzt in IBM's & Microsoft's Netzwerkprogrammen.
- 2) teilweise Dokumentation im Herbst 1985 Byte.
- 3) diese Funktion verlangt, daß die Netzwerksoftware installiert ist.
- 4) teilweise Dokumentation im erweiterten MS-DOS.
- 5) SHARE muß geladen sein oder Ergebnisse sind unbrauchbar mit 00h, oder versagt
- mit 02h oder 03h.
-
-
- Funktion 5Fh Netzwerk Umleitung
- (DOS 3.1+ und Microsoft Netzwerke)
- Aufruf AH 5Fh
- AL *00h Unbekannt
- *01h Unbekannt
- 02h holen Umleitungslisten Eintrag
- BX Index Umleitungseintrag. Index 0 spezifiziert den
- ersten Eintrag
- DS:SI Zeiger zum 16 Byte Bereich welcher den ASCIIZ Gerätnamem
- für den Umleitungsindex aufnimmt
- ES:DI Zeiger zum 128 Byte Puffer für den ASCIIZ
- Netzwerknamen
- Rückgabe CF gesetzt wenn Fehler
- AX Fehlercode (01h, 12h)
- BH Gerätszustandskennzeichen (Bit 0=0 falls zulässig)
- (Bit 0=1 falls ungültig)
- (Bits 1-7 reserviert)
- BL Gerätetyp
- 03 Drucker
- 04 Laufwerk (Datei)
- CX Wert gespeichert beim fn 03h Aufruf. Sollte 0 sein
- zur Kompatibilität mit LANOS
- DS:SI Zeiger zum 16 Byte ASCIIZ lokalen Gerätenamen
- ES:DI Zeiger zum 128 Byte ASCIIZ Netzwerknamen
- Anmerkung 1) DX und BP wedren duch diesen Aufruf zerstört.
- 2) dieser Aufruf gibt Information über ein einzelnes
- umgeleitetes Gerät (siehe fn 03h) zurück. Diese fn kann
- benutzt werden, um die Auflistung der umgeleiteten Geräte zu untersuchen.
- 03h umleiten Gerät - anfertigen Zuweisung zum Auflistungseintrag
- Leitet eine Workstation, Laufwerk oder Gerät zu einem Server
- Inhaltsverzeichnis oder Gerät um.
- AX Fehlercode falls Fehler
- BL Gerätetyp
- 03 Drucker
- 04 Datei
- CX gespeicherter Parameterwert (0 zur Kompatibilität
- mit IBM PC Netzwerk Programm und LANtastic)
- DS:SI Zeiger zum 16-byte ASCIIZ Quelle Gerätename
- für Drucker schreibe: PRN, LPT1, LPT2, LPT3
- ES:DI Zeiger zum Ziel 128-byte ASCIIZ Netzwerk
- Pfad und ASCIIZ Passwort
- (z.b., '\\ machinen_name\Pfad',0,'Passwort',0)
- Anmerkung umleiten Gerät erlaubt das Anschließen von lokalen
- Geräten zur Netzwerkbenutzung. Als Beispiel, du kannst
- eueren LPT1 zu einem Drucker auf einem anderen Netzknoten anschließen.
- Anweisungen an LPT1 werden zu dem Netzwerk umgeleitet.
- 04h abbrechen Umleitungszuordnung
- DS:SI Zeiger zu ASCIIZ Gerätenamen oder Netzwerk Pfad
- der annulliert werden soll
- Anmerkung abbrechen Geräteumleitung erlaubt das Entfernen
- einer Geräteumleitung, sodaß das Gerät auf seinen
- vorherigen Status zurückgesetzt wird.
- Rücklauf CF gelöscht erfolgreich
- gesetzt falls Fehler
- AX Fehlercode
- (fn 02h) 01h, 12h
- (fn 03h) 01h, 03h, 05h, 08h
- (fn 04h) 01h, 0Fh
- Anmerkung 1) benutzt in IBM's Netzwerk Programm.
- 2) teilweise Dokumentation im Herbst 1985 Byte.
- 3) diese Funktion verlangen daß die Netzwerksoftware installiert ist.
- 4) teilweise Dokumentation im erweiterten MS-DOS.
- 5) SHARE muß geladen sein oder der Aufruf versagt.
- 6) der Netzwerk Gerätename verlangt ein Passwort.
-
-
- Funktion 60h analysieren Pfadname (DOS 3.0+)
- * durchführen Name Abarbeitung einer Zeichenkette (DOS intern)
- Aufruf AH 60h
- DS:SI Zeiger zur ASCIIZ Quelle Zeichenkette (beendet mit Null)
- ES:DI Zeiger zum Ziel 80 Byte ASCIIZ Zeichenkettenpuffer
- Rückgabe ES:DI Puffer gefüllt mit geeignetem Name in der Form (Laufwerk):(Pfad)
- CF gesetzt Fehler
- AX Fehlercode (02h, 03h)
- gelöscht kein Fehler
- Anmerkung 1) dokumentiert in ZENITH 3.05 technische Referenz.
- 2) die gesamte Abarbeitung des Namens geschieht in der Eingabezeichenkette: Zeichenkette
- Ersetzung werden in einzelne Bestandteile zerlegt, aktuelles Laufwerk/Verzeichnisse
- werden vorangestellt ,. und .. werden entfernte.
- 3) Beispiel: falls aktuelle Laufwerk/Inhaltsverzeichnis ist c:\test, myfile.x wird übersetzt
- zu c:\test\myfile.x; ..\source\sample.asm wird übersetzt zu c:\source\
- sample.asm.
- 4) es liegt in der Verantwortung des Aufrufer, das sicher ist, das DS:SI nicht auf
- eine nichtige Zeichenkette zeigt. Falls doch, SI ist erhöht, ein nichtiges Byte
- wird an ES:DI gespeichert, und die Routine kehrt zurück.
- 5) benutzt von CHKDSK, zum mindestens in DOS 3.3, und DOS 3.x.
- 6) falls Pfad Zeichenkette auf ein JOINed Laufwerk zeigt, der zurückgegebene Name ist der eine der
- benötigt wird, falls das Laufwerk nicht JOINed war; ähnlich wie ein SUBSTed
- Laufwerksbuchstabe. Durch dies, ist es möglich ein geeigneten Namen zu bekommen,
- der nicht legal ist mit der aktuellen Kombination von SUBSTs und JOINs.
- 7) benutzt von DOS 4.0 SHELLC.EXE.
-
-
- Funktion 61h nicht dokumentiert - (DOS 3.0)
- * DOS intern - Parameter nicht bekannt
- Aufruf AH 61h
- Rückgabe AL 00h
- Anmerkung angeblich dokumentiert in der technischen Referenz vom ZENITH DOS 3.05.
-
-
- Funktion 62h holen Programm Segment Prefix (PSP)(DOS 3.0+)
- Aufruf AH 62h
- Rückgabe BX Segmentadresse vom PSP
- Anmerkung unter DOS 3.x+, benutzt diese Funktion keine der internen DOS Stapel
- und ist somit voll ablaufinvariant.
-
-
- Funktion 63h holen Lead Byte Tabelle (MS-DOS 2.25 ausschließlich)
- Hinzugefügt in DOS 2.25 zur zusätzlichen Unterstützung von fremden Zeichenvorräten.
- Aufruf AH 63h
- AL Unterfunktion
- 00h holen System Lead Byte Tabelle Adresse
- 01h einstellen/löschen Interim Bedienungsfeldkennzeichen
- DL 0000h löschen Interim Bedienungsfeldskennzeichen
- 0001h einstellen Interim Bedienungsfeldkennzeichen
- 02h holen Interim Bedienungsfeldkennzeichen
- Rückgabe DS:SI Zeiger zur Lead Byte Tabelle (AL=00h)
- DL Interim Bedienungsfeldkennzeichen (AL=02h)
- Anmerkung 1) Funktion 63h zerstört alle Register außer SS:SP bei der Rückgabe.
- 2) nicht unterstützt in DOS 3.x oder 4.x.
- 3) Anmerkung fn 63h gibt keine Fehler in AL oder CF zurück.
-
-
- Funktion 64h nicht dokumentiert - intern von DOS benutzt
- Aufruf AH 64h
- Rückgabe Unbekannt
- Anmerkung 1) DOS 3.2+ interne Funktion von einigen Typen? kann eine Netzwerkfunktion sein.
- 2) in DOS 3.31 sobald AL mit einer anderen Nummer als Null geladen wird,
- wird int 28h öfters aufgerufen. AL=0 setzt zurück zu dem "Start"
- Status.
-
-
- Funktion 65h holen erweiterte Länderinformation (DOS 3. 3+)
- gibt zurück Information über der ausgewählt Land Formate, Code
- Seiten, und Umsetzungstabellen
- Aufruf AH 65h
- AL Information ID Code
- 01h holen allgemein internationale Information
- 02h holen Zeiger zur Großbuchstabentabelle (130 Bytes max)
- (wandelt Zeichen 80h-0FFh in ihre Großbuchstabenwerte um,
- falls vorhanden; benutzt vorwiegend zur Abbildung von Akzenten oder andere Vokale
- zu den entsprechenden Vokalen)
- 03h Unbekannt
- 04h holen Zeiger zum Dateiname Großbuchstabentabelle (130 Bytes max)
- (ähnlich der Tabelle für AL=02h)
- 05h Unbekannt
- 06h holen Zeiger zur Abgleichungstabelle (258 Bytes max)
- (ablegen von Großbuchstaben, Klein-, und Akzentbuchstaben zur gemeinsamen
- Sortierung)
- 07h holen Zeiger zur Doppel-Wort Zeichenvorrattabelle
- BX Codeseite (0FFFFh=CON: Gerät)
- CX Anzahl von Information die zurückgegeben wurden (minimum 5)
- DX Zielland ID (0FFFFh= vorgegeben aktuelle Land)
- ES:DI Segment/Offset Zeiger zum Länderinformationspuffer
- Rückgabe CF gesetzt wenn Fehler
- AX Fehlercode (02h)
- andernfalls:
- CX Größe dern Länderinformation die zurückgegeben wurde
- ES:DI Zeiger zur Länderiformation:
- Offset Länge Beschreibung
- 00h 1 Byte Informations ID (für alle folgenden Puffer)
- falls Informations ID Code <>1:
- 01h dwort Zeiger zu Information
- falls Informations ID Code=1:
- 01h Wort Länge von Rest des Puffers (<=38)
- 03h Wort Länder ID
- 05h Wort Code Seitennummer
- 07h 34 Bytes dieselben wie für int 21h Funktion 38h
- falls Information ID Code=2:
- 01h Wort Tabellengröße
- 05h dwort Zeiger zur Großbuchstabentabelle
- 128 Bytes Großbuchstaben Gegenwerte der Zeichen 80h-0FFh (falls vorhanden)
- falls Information ID Code=4:
- 01h Wort Tabellengröße
- 05h dwort Zeiger zur Abgleichungstabelle
- 256 Bytes Werte die benutzt werden, um die Zeichen 00h-0FFh zu sortieren
- falls Information ID Code=6:
- 01h Wort Tabellegröße
- 05h dwort Zeiger zum Dateiname Großbuchstabentabelle. Diese
- Tabelle startet mit einem 2-Byte Längenfeld, dann
- 256 ASCII Werte in der Reihenfolge
- 128 Bytes Großbuchstaben Gegenwerte der Zeichen 80h-0FFh (falls vorhanden)
- falls Information ID Code=7: (DOS 4.0)
- Unbekannt
- Anmerkung 1) für AL=02h, 04h, oder 06h, die ersten zwei Bytes von der Tabelle sind die
- Länge und dann eine 128 Byte Tabelle von Großbuchstaben ASCII Zeichen für
- 02h oder 04h und ein Zeiger zu der Abgleichung für 06h.
- 2) der Ländercode und Codeseite müssen passen. Falls nicht, Fehler 02h ist in AX.
- 3) falls mehr Information vorhanden sind, als durch CX angefordert wurden, werden
- diese abgeschnitten, ohne das ein Fehler erzeugt wird.
- 4) Länderinformation:
- Bytes Beschreibung
- 01h Wert von AL (01h)
- 02h, 03h Größe (max= 38)
- 04h, 05h Ländercode
- 06h, 07h Codeseite
- 08h, 09h Datumsformat
- 0Ah, 0Eh Währungszeichen
- 0Fh, 10h Tausender Trennung
- 11h, 12h dezimale Trennung
- 13h, 14h Datum Trennung
- 15h, 16h Uhrzeit Trennung
- 17h Währungsformat Kennzeichen
- 18h Genauigkeit (Anzahl Stellen nach dem Dezimalkomma)
- 19h Zeitformat
- 20h-22h monocase Routine Einsprungspunkt
- 23h-24h Datenliste Trennung
- 25h-29h Nullen
-
-
- Funktion 66h holen/einstellen globale Codeseitentabelle (DOS 3.3+)
- erfragen /löschen Standard Codeseite
- Aufruf AH 66h
- AL 00h holen globale Codeseite
- 01h einstellen globale Seite
- BX aktive Codeseite
- DX System Codeseite (aktive Seite beim Start)
- Rückgabe CF gelöscht erfolgreich
- gesetzt AX Fehlercode (Unbekannt)
- falls 00h BX aktive Codeseite
- DX System Codeseite (aktive Seite beim Start)
- Anmerkung BX= aktive Codeseite: 437 = US, 860 = Portugal, 863= Kanada (französisch)
- 865 = Norwegen/Dänemark, 850= Mehrsprachig
-
-
- Funktion 67h einstellen Handle Zähler( DOS 3. 3+)
- Zur Unterstützung von mehr als 20 offenen Dateien pro Prozess
- Aufruf AH 67h
- BX gewünscht Anzahl Handles (max 65535)
- Rückgabe CF gelöscht falls OK
- gesetzt falls Fehler
- AX Fehlercode (Unbekannt)
- Anmerkung 1) diese Funktion ändert den 20-byte Handle Tabellenzeiger in dem PSP zu
- zu einer neuen, größeren Handle Tabelle irgendwo im Speicher.
- 2) der Speicher den der 67h Aufruf belegt wird vom normalen DOS Pool geholt,
- und nach der Beendigung dorthin zurückgegeben, deshalb geht nichts verloren.
- 3) sobald diese Funktion aufgerufen wird, muß genug Speicher für DOS freigegeben werden,
- um die erweiterte Handle Tabelle zu erthalten.
- 4) falls die angeforderte Anzahl Handles kleiner als 20 ist, es ist aufgerundet
- auf 20.
-
-
- Funktion 68h Commit Datei (DOS 3. 3+)
- schreiben aller gepufferten Daten zur Festplatte
- Aufruf AH 68h
- BX Dateinummer
- Rückgabe CF gelöscht wenn erfolgreich
- gesetzt wenn Fehler
- AX Fehlercode
- Anmerkung 1) schneller und sichere Methode zur Schließung einer Datei in einem Netzwerk als
- der aktuelle Schließen Befehl.
- 2) dies ist effektiv dasselbe wie DUPing der Handles für eine Datei und dann
- Schließung der neuen, außer daß dieser Aufruf nicht versagt falls das System
- kene Handles mehr frei hat.
- 3) die Dateipuffer werden gelöscht und sein Inhaltsverzeichnis und FAT Eintrag wird
- aktualisiert.
-
-
- Funktion 69h Festplatte serielle Nummer DOS 4.0+ (US Versionen)
- behandelt "Datenträger serielle Nummer" auf Disketten formatiert mit 4.0+
- Aufruf AH 69h holen serielle Nummer des Datenträgers
- AL 00h holen seriell Nummer
- 01h einstellen serielle Nummer
- BL Laufwerk (0=aktuelles, 1=A, etc)
- DS:DX Zeiger zu Festplatten Informationstabelle
- Rückgabe CF gesetzt wenn Fehler
- AX Fehlercode
- gelöscht falls erfolgreich
- AH zerstört
- AL (fn 00h) Puffer mit geeigneten Werten vom
- erweiterten BPB gefüllt
- (fn 01h) erweiterter BPB auf Festplatte auf die Werte vom Puffer eingestellt
- DS:DX Festplatte Informationstabelle. Format:
- Offset Größe Beschreibung
- 00h Wort Unbekannt (Nullen auf meinem System)
- 02h dwort serielle Festplattennummer (binär)
- 06h 11 Bytes Datenträgeretikett oder "NO Name" falls keiner
- 11h 8 Bytes FAT Typ - Zeichenkette "FAT12" oder "FAT16"
- Anmerkung 1) das FAT Typenfeld verweist auf die Anzahl Bits pro Inhaltsverzeichniseintrag.
- 2) erzeugt kein kritischen Fehler; alle Fehler werden in AX zurückgegeben.
- 3) Fehler 0005h bedeutet kein erweiterter BPB auf der Festplatte.
- 4) arbeitet nicht auf Netzwerk Laufwerke (Fehler 0001h).
- 5) Puffer nach den ersten zwei Bytes ist eine genaue Kopie der Bytes 27h bis 3Dh von
- dem erweiterten BPB auf der Festplatte.
-
-
- Funktion 6Ah Unbekannt (DOS 4.0?)
-
-
- Funktion 6Bh Unbekannt (DOS 4.0?)
-
-
- Funktion 6Ch erweitertes Öffenen/Erstellen DOS 4.0+ (US)
- kombiniert verfügbare Funktionen mit Öffnen, Erstellen, neu Erstellen,
- und Commit Datei
- Aufruf AH 6Ch
- AL 00h reserviert [welchen Sinn macht es dann, andere Unterfunktionen zu haben?]
- BX Modus Format 0WF0 0000 ISSS 0AAA
- AAA ist Zufgriffscode (lesen, schreiben, lesen/schreiben)
- SSS ist Sharing Modus
- I 0 übergeben Handle zu "Kind"
- 1 nicht mitschleppen [interessant!]
- F 0 benutze int 24h für Fehler
- 1 ausschalten int 24h für alle
- I/O auf diesen Handle; benutze eigene
- Fehlerroutine
- W 0 kein Commit
- 1 automatisches Commit bei allen Schreibzugriffen
- CX erstellen Attribut
- Bits 0 Nur-Lesen
- 1 versteckt
- 2 System
- 3 Datenträgeretikett
- 4 reserviert
- 5 Archiv
- 6-15 reserviert
- DH 00h (reserviert)
- DL Handlung falls Datei existiert/nicht existiert
- Bits 0-3 Handlung falls Datei existiert
- 0000 abbrechen
- 0001 öffnen
- 0010 ersetzen/öffnen
- 4-7 Handlung falls Datei nicht existiert
- 0000 abbrechen
- 0001 erstellen
- DS:SI Zeiger zum ASCIIZ Dateiname
- Rückgabe CF gesetzt wenn Fehler
- AX Fehlercode (Unbekannt)
- gelöscht
- AX Dateinummer (Handle)
- CX durchgeführte Handlung
- 01h Datei geöffnet
- 02h Datei erstellt/geöffnet
- 03h Datei ersetzt/geöffnet
- Anmerkung sobald APPEND installiert ist, falls DX=xx1x ist, wird nur im aktuellen Inhaltsverzeichnis
- gesucht, falls DX=xx0x wird er gesamte APPEND Pfad durchsucht. DX wird das
- Öffnungskennzeichen genannt und bestimmt die Handlung die durchgeführt wird, falls die Datei
- existiert oder nicht existiert.
-
-
- Funktion 89h nicht dokumentiert - DOS_Sleep
- * nicht dokumentiert bei Microsoft
- Aufruf AH 89h
- Rückgabe Unbekannt
- Anmerkung 1) Funktion ist im Microsoft C 4.0 Startup Code MSDOS.INC enthalten.
- 2) Ein Test zeigt, daß die erste Instruktion beim Aufruf AH mit 64h vergleicht
- (zum mindestens in DOS 3.2) und bricht den Aufruf ab, falls AH> 64.
- 3) möglich benutzt im europäisch MSDOS 4.0?
-
-
-
- Funktionsaufrufe installiert in späteren Anwendungen:
-
- Novell Netware 2. 11:.
- Novell empfiehlt nicht mehr die int 21h Methode zum Aufruf der
- Netware Funktionen. Int 21h wird auf unbestimmte Zeit unterstützt sein, aber das
- Netz API ruft zur Adressierung der Software den mehrfach Interrupt (2Fh) auf.
- Das API kann durch den int 2Fh in derselben Art wie der int 21h adressiert
- werden; nur die Interrupt Nummer ist unterschiedlich.
-
- Novell API Aufrufe sind im Abschnitt 13 beschrieben. Die meisten Funktionen von
- 0B6h bis 0F9h sind belegt durch NetWare; falls eure Software benutzt irgendeinen
- von diesen Aufrufen für einen anderen Zweck, läuft diese wahrscheinlich nicht unter
- NetWare.
-
- Anmerkung: Novell (und die meiste andere) Netzwerksoftware und SoftLogic's DoubleDOS
- geraten bei den folgenden int 21h Funktionen 0EAh-0EEh in einen Konflikt. Netware muß
- die int 2Fh Funktionen an Stelle von 21h Funktionen benutzen, falls DoubleDOS auf dem
- Netzwerk benutzt wird.
-
-
- Funktion 0E4h DoubleDOS - holen Aktivkennzeichen
- Aufruf AX 0E4h
- Rückgabe AL 00h falls DoubleDOS nicht eingeschaltet ist
- <> 0 DoubleDOS ist eingeschaltet
-
-
- Funktion 0EAh DoubleDOS - ausschalten Task Switching
- Aufruf AX 0EAh
- Rückgabe keine
- Anmerkung Task Switching ausgeschaltet.
-
-
- Funktion 0EBh DoubleDOS - einschalten Task Switching
- Aufruf AH 0EBh
- Rückgabe keine
- Anmerkung Task Switching eingeschaltet.
-
-
- Funktion 0ECh DoubleDOS - holen virtuelle Bildschirmadresse
- Aufruf AH 0ECh
- Rückgabe ES Segment vom virtuellen Bildschirm
- Anmerkung Bildschirmadresse kann geändert werden, falls Task Switching an ist!
-
-
- Funktion 0EEh DoubleDOS - Freigabe Zeitanteil
- abgeben Zeit an andere Aufgaben
- Aufruf AH 0EEh
- AL Anzahl 55ms Zeitanteile die abgegeben werden
- Rückgabe keine
- Anmerkung gibt zurück nachdem Zeitabgegeben ist.
-
-
- Funktion 0FFh CED (CJ Dunford's DOS Makro und Befehlszeilen Editor)
- CED installierbare Befehle
- Aufruf AH 0FFh
- AL 00h hinzufügen installierbaren Befehl
- 01h entfernen installierbaren Befehl
- 02h reserviert, kann zum Test der CED Installierung benutzt werden
- BL Modus Byte
- Bit 0 aufrufbar vom DOS Anforderungszeichen
- 1 aufrufbar von der Anwendung
- 2-7 nicht benutzt im Public Domain CED
- DS:SI Zeiger zum CR-beendeten Befehlsnamen
- ES:DI Zeiger zur Far Routine Einsprungspunkt
- Rückgabe CF gesetzt wenn Fehler
- AX 01h ungültige Funktion
- 02h Befehl nicht gefunden (ausschließlich Unterfunktion 1)
- 08h ungenügend Speicher (ausschließlich Unterfunktion 0)
- 0Eh fehlerhafte Daten (ausschließlich Unterfunktion 0)
- AH 0FFh falls CED nicht installiert ist
-
-