home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / doc / techref / kapitel.004 < prev   
Text File  |  1993-03-01  |  230KB  |  3,953 lines

  1.  
  2.      ** technische Referenz für Programmierer für MSDOS und den IBM PC **
  3.  ─────────────────────────┤ eingetragene Anwenderversion ├───────────────────────────
  4.                          nicht für den allgemeinen Vertrieb 
  5.                     Urheberrecht (c) 1987, 1990 Dave Williams
  6.               Deutsche Übersetzung Urheberrecht (c) 1990 Klaus Overhage
  7.          Änderungen und Erweiterungen Urheberrecht (c) 1990 Klaus Overhage
  8.  
  9.  
  10.  
  11.                            K A P I T E L     V I E R
  12.  
  13.                        DOS INTERRUPTS und Funktionsaufrufe 
  14.  
  15.  
  16.                                 I N H A L T E 
  17.  
  18. Allgemeine Anleitung zur Programmierung .............................. 4**1
  19. DOS Register ......................................................... 4**2
  20. DOS Stapel ........................................................... 4**3
  21. DOS Interrupts ....................................................... 4**4
  22. Interrupt 20h (beenden) .............................................. 4**5
  23. DOS Funktionen (Schnellübersicht) .................................... 4**6
  24. Aufruf der DOS Funktionen ............................................ 4**7
  25. wesentliche Versions Information ..................................... 4**8
  26. PCjr Kassettenunterstützung .......................................... 4**9
  27. Kompatibilitätsprobleme mit DOS 4.0+ ................................. 4**10
  28. eDOS 4.0 ............................................................. 4**11
  29. DOS Funktionen ausführlich ........................................... 4**12
  30.  
  31.  
  32. Allgemeine Anleitung zur Programmierung .............................. 4**1
  33.  
  34. Microsoft empfiehlt die Vermeidung der "alten Art" (01h-0Ch und 26h) Systemaufrufe
  35. wo dies auch immer möglich ist. Die Programmierer sind bedrängt die "neue Art" (DOS 2.0+)
  36. dafür zu benutzen.
  37.  
  38. Es sollten keine "nicht dokumentierte" Funktionen benutzt werden, falls diese nicht kritisch für
  39. die Anwendung sind und keine andere passende hierfür gefunden werden kann. Beachten sie das
  40. das die Programme unter verschiedenartige Versionen von DOS, DOS Nachbauten wie
  41. Digital's DR-DOS, in der OS/2 Kompatibilität Box, oder dem Unix DOS Fenster augeführt werden sollen.
  42. Solche Umgebungen oder OS Simulationen haben nicht immer die nicht dokumentierten Aufrufe realisiert.
  43.  
  44. In DOS 2.x fehlen viele von den Erweiterungen der späteren Versionen. Die Anwendung
  45. sollte die DOS Version kontrollieren, falls DOS 3.x+ Merkmale verlangt werden.
  46.  
  47. Direkte Festplattenzugriffe über die Hardware oder dem BIOS sollten vermieden werden, falls das Programm nicht
  48. ausschließlich auf der wesentlichen Hardware ausgeführt wird oder unter anderen zuverlässigen Verhältnisse.
  49. Einige Versionen von DOS 2.x behandeln ihre Disketten in einer Art ähnlich  3.x. Einige
  50. Anbieter fügten mehrfache DOS Bereiche oder übergroße Laufwerksunterstützung hinzu, vor der
  51. "offiziellen " 3.3 Freigabe. Nicht alle diese Systeme arbeiten in der gleichen Weise! Die neuen
  52. SCSI oder ESDI Festplattencontroller bilden nicht immer alle der Standard BIOS
  53. Aufrufe nach..
  54.  
  55.  
  56. DOS Register ......................................................... 4**2
  57.  
  58. DOS benutzt die folgenden Register, Zeiger, und Kennzeichen sobald es
  59. Interrupts und Funktionsaufrufe ausführt:
  60.  
  61.  ┌───────────────────┬──────────┬───────────────────────────────────────────────┐
  62.  │allgemein Register │ Register │ Definition                                    │
  63.  │                   ├──────────┼───────────────────────────────────────────────┤
  64.  │                   │    AX    │ Akkumulator (16 Bit)                          │
  65.  │                   │    AH    │ Akkumulator höherwertiges Byte (8 Bit)        │
  66.  │                   │    AL    │ Akkumulator niederwertiges Byte (8 Bit)       │
  67.  │                   │    BX    │ Basis( 16 Bit)                                │
  68.  │                   │    BH    │ Basis höherwertiges Byte (8 Bit)              │
  69.  │                   │    BL    │ Basis niederwertiges Byte (8 Bit)             │
  70.  │                   │    CX    │ Zählen (16 Bit)                               │
  71.  │                   │    CH    │ Zählen höherwertiges Byte (8 Bit)             │
  72.  │                   │    CL    │ Zählen niederwertiges Byte (8 Bit)            │
  73.  │                   │    DX    │ Daten (16 Bit)                                │
  74.  │                   │    DH    │ Daten höherwertiges Byte (8 Bit)              │
  75.  │                   │    DL    │ Daten niederwertiges Byte( 8 Bit)             │
  76.  ├───────────────────┼──────────┼───────────────────────────────────────────────┤
  77.  │ Segment Register  │ Register │ Definition                                    │
  78.  │                   ├──────────┼───────────────────────────────────────────────┤
  79.  │                   │    CS    │ Codesegment (16 Bit)                          │
  80.  │                   │    DS    │ Datensegment (16 Bit)                         │
  81.  │                   │    SS    │ Stacksegment (16 Bit)                         │
  82.  │                   │    ES    │ Extrasegment (16 Bit)                         │
  83.  ├───────────────────┼──────────┼───────────────────────────────────────────────┤
  84.  │ Index Register    │ Register │ Definition                                    │
  85.  │                   ├──────────┼───────────────────────────────────────────────┤
  86.  │                   │    DI    │ Zielindex (16 Bit)                            │
  87.  │                   │    SI    │ Quellindex (16 Bit)                           │
  88.  ├───────────────────┼──────────┼───────────────────────────────────────────────┤
  89.  │ Zeiger            │ Register │ Definition                                    │
  90.  │                   ├──────────┼───────────────────────────────────────────────┤
  91.  │                   │    SP    │ Stapelzeiger (16 Bit)                         │
  92.  │                   │    BP    │ Basiszeiger (16 Bit)                          │
  93.  │                   │    IP    │ Befehlszeiger (16 Bit)                        │
  94.  ├───────────────────┴──────────┴───────────────────────────────────────────────┤
  95.  │ Kennzeichen AF, CF, DF, IF, OF, PF, SF, TF, ZF                               │
  96.  └──────────────────────────────────────────────────────────────────────────────┘
  97.  
  98. Diese Register, Zeiger, und Kennzeichen sind "niedrigste allgemeine Nenner" 8088-8086
  99. CPU orientierte. DOS macht kein Versuch irgendeine von den besonderen oder erweiterten
  100. Anweisungen der späteren CPUs zu benutzen welche auch den 8088 Code durchführen, derartig wie
  101. der 80186, 80286, 80386, oder NEC V20, V30, V40, oder V50. 
  102.  
  103. Benutzte Register außer AX werden nicht verändert, falls nicht Information über diese zurück-
  104. gegeben werden. Dies ist bei den wesentlichen Funktionsaufrufen bermerkt.
  105.  
  106.  
  107.  
  108. DOS Stapel ........................................................... 4**3
  109.  
  110. Sobald DOS die Steuerung nach einem Funktionsaufruf übernimmt, es schaltet auf einen internen
  111. Stapel. Register welche nicht benutzt werden um Information zurüchzugeben (andere als AX) werden
  112. gesichert. Der Stapel des aufrufenden Programmes muß groß genug sein um
  113. das Interrupt System anzupassen - wenigstens 128 Bytes zusätzlich zu andere Interrupts.
  114.  
  115. DOS unterhält tatsächlich drei Stapel -
  116.  
  117. Stapel 1: 384 Bytes (in DOS 3.1)
  118.           für Funktionen 00h und für 0Dh und aufwärts, und für ints 25h und 26h.
  119.  
  120. Stapel 2: 384 Bytes (in DOS 3.1)
  121.           für Funktionsaufrufe 01h bis 0Ch.
  122.  
  123. Stapel 3: 48 Bytes (in DOS 3. 1)
  124.           für Funktionen 0Dh und darüber. Dieser Stapel ist der anfängliche Stapel der von dem
  125.           int 21h Handler benutzt wird, bevor er entscheidet welcher von den anderen beiden benutzt werden soll.
  126.           Es wird auch benutzt von den Funktion 59h (holen erweiterten Fehler), und 01h bis 0Ch falls
  127.           diese während eines int 24h (kritischer Fehler) Handler ausgeführt werden. Die Funktionen
  128.           33h (holen/setzen Abbruch Kennzeichen), 50h (setze Prozess ID), 51h (hole Prozess ID)
  129.           und 62h (holen PSP Adresse) benutzen keine der DOS Stapel unter DOS 3.x
  130.           (unter 2.x, 50h und 51h benutzen den Stapel Nummer 2).
  131.  
  132. IBM und Microsoft haben eine Änderung in DOS 3.0 oder 3.1 gemacht, um die Größe von
  133. DOS zu reduzieren. Sie reduzierten den Platz, der für die Scratch Bereiche belegt wird, sobald Interrupts
  134. verarbeitet werden. Der vorgegebene Wert ändert sich mit der DOS Version und der
  135. Maschine, aber 8 Stapel Rahmen erscheinen allgemein. Falls beabsichtigt wird mehr als
  136. 8 interrupts zur selben Zeit zu holen, Taktgeber, Festplatte, Druckerspooler,
  137. Tastatur, com Port, etc., stürtzt das System ab. Es scheint als wenn dies gewöhnlich auf
  138. einem Netzwerk passiert. STACKS=16,256 bedeutet das 16 Interrupts jeden anderen unterbrechen können und
  139. erlaubt 256 Bytes für jeden Scratch Bereich. Acht ist der Mindestwert.
  140.  
  141. DOS 3.2 Schaltet einige unterschiedliche Stapel als die vorhergehenden Versionen. Die
  142. interrupts welche geschaltet werden, sind 02h, 08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 70h,
  143. 72h, 73h, 74h, 75h, 76h, und 77h. DOS 3.2 hat eine besondere Kontrolle in dem
  144. Initialisierungscode für einen PCjr und aktiviert die Stapel Schaltung nicht auf dieser Maschine.
  145. DOS 3.3 wurde so geändert, daß keine Stapel Schaltung auftritt beim PC, PC-XT, oder dem
  146. tragbaren PC, und der Standardwert ist 9 Stapel mit je 128 Bytes bei einem AT.
  147.  
  148.  
  149.  
  150. DOS Interrupts ....................................................... 4**4
  151.  
  152. Microsoft empfiehlt, daß ein Programm welches die Inhalte von irgendeinen Interruptvektor
  153. prüft oder einstellt die DOS Funktionsaufrufe 35h und 25h benutzen soll, die für jene
  154. Zwecke vorgesehen sind und die direkte Bezugnahme auf Interruptvektor Adressen vermieden werden soll.
  155.  
  156. DOS reserviert die Interrupts 20h bis 3Fh für seine eigene Benutzung. Dies bedeutet,
  157. das die absoluten Speicheradressen 80h bis 0FFh von DOS reserviert sind.
  158.  
  159.  
  160.  
  161.  ┌─────────────────────────────────────────────────────────────────────────────┐
  162.  │ Interrupt 20h beenden aktuelles Programm                               4**5 │
  163.  └─────────────────────────────────────────────────────────────────────────────┘
  164.  (0:0080h)
  165.  ausgeben int 20h veranlasst das beenden von einem Programm. Dieser Vektor übergibt die Logik ans
  166. DOS zum wiederherstellen der Beendigungsadresse, der Ctrl-Break Adresse, und der kritische
  167. Fehler Ausstiegsadresse auf die Werte die sie hatten vor dem Aufruf des Programms. Alle Datei-
  168. puffer werden gelöscht und alle Dateien geschlossen. Es sollten alle Dateien geschlossen werden,
  169. die die Länge verändert haben (siehe Funktionsaufrufe 10h und 3Eh) bevor dieser Interrupt ausgegeben
  170. wird. Falls die geänderte Datei nicht geschlossen wird, werden dessen Länge, Uhrzeit, und Datum
  171. nicht korrekt in dem Inhaltsverzeichnis aufgezeichnet.
  172.  
  173. Für ein Programm das ein Beendigungscode oder einen Fehlercode zurückgeben muß, es
  174. muß einer von den beiden Funktionsaufruf 4Ch (beenden ein Prozess) oder 31h (beenden
  175. Prozess und verbleiben speicherresistent) benutzt werden. Diese zwei Methoden sind der Benutzung
  176. von int 20h vorzuziehen und die Codes die zurückgegeben werden, können bei der Stapel Abarbeitung abgefragt werden.
  177.  
  178. Wichtig: bevor ein Interrupt 20h ausgegeben wird, muß das Programm garantieren daß
  179.          das CS Register das Segment von seinem Programm Segment Prefix enthält.
  180.  
  181. Interrupt 20h DOS - beenden Programm 
  182. Aufruf kein Parameter
  183. Rückgabe die folgend Vektoren sind wiederhergestellt von dem Programm Segment Prefix:
  184.          0Ah Programm beenden
  185.          0Eh Control-C
  186.          12h kritischer Fehler
  187. Anmerkung 1) IBM und Microsoft empfehlen die Benutzung von int 21 Fn 4Ch. Die Benutzung
  188.              von int 20 wird offiziell mißbilligt seit der Einführung von DOS 2.0
  189.           2) in DOS 3.2 zum mindestens, int 20h ruft nur int 21h, fn 00h auf.
  190.  
  191.  
  192.  
  193. DOS Funktionen (Schnellübersicht) .................................... 4**6
  194.  
  195.  ┌─────────────────────────────────────────────────────────────────────────────┐
  196.  │ Interrupt 21h Funktionsaufruf Anforderung                                   │
  197.  └─────────────────────────────────────────────────────────────────────────────┘
  198.  (0:0084h)
  199.  DOS liefert ein breite Vielfalt von Funktionsaufrufe für Zeichentreiber I/O, Datei-
  200.  handhabung, Speicherverwaltung, Datum und Zeit Funktionen, Ausführung von anderen
  201.  Programmen, und mehr. Sie sind in folgende Gruppen aufgeteilt:
  202.  
  203.         Anruf       Beschreibung
  204.         00h         Programm beenden
  205.         01h-0Ch     Zeichentreiber I/O, CP/M Kompatibilitätsformat
  206.         0Dh-24h     Dateihandhabung, CP/M Kompatibilitätsformat
  207.         25h-26h     nondevice Funktionen, CP/M Kompatibilitätsformat
  208.         27h-29h     Dateihandhabung, CP/M Kompatibilitätsformat
  209.         2Ah-2Eh     nondevice Funktionen, CP/M Kompatibilitätsformat
  210.         2Fh-38h     erweiterte Funktionen
  211.         39h-3Bh     Inhaltsverzeichnis Gruppe
  212.         3Ch-46h     erweiterte Dateihandhabung
  213.         47h         Inhaltsverzeichnis Gruppe
  214.         48h-4Bh     Erweiterungsspeicher Handhabung
  215.         54h-57h     erweiterte Funktionen
  216.         5Eh-5Fh     Netzwerkbetrieb
  217.         60h-62h     erweiterte Funktionen
  218.         63h-66h     erweiterte Fremdsprachenunterstützung
  219.  
  220.  
  221. Liste der DOS Funktionen: *= nicht dokumentiert
  222.         00h beenden Programm 
  223.         01h holen Tastatureingabe
  224.         02h Anzeige Zeichen zu STDIO 
  225.         03h holen Zeichen von STDAUX 
  226.         04h Zeichenausgabe zu STDAUX 
  227.         05h Zeichenausgabe zu STDPRN 
  228.         06h direkte Ein- und Ausgabe von Zeichen - Tastatur zu Bildschirm
  229.         07h holen Zeichen von std I/O ohne Ausgabe
  230.         08h holen Zeichen von std I/O ohne Ausgabe, überprüft auf ^C
  231.         09h Anzeige einer Zeichenkette zu STDOUT
  232.         0Ah gepufferte Tastatureingabe
  233.         0Bh kontrollieren STDIN Status
  234.         0Ch löschen Tastaturpuffer und aufrufen Tastaturfunktion
  235.      o  0Dh Übertragen alle Plattenpuffer
  236.      o  0Eh auswählen Festplatte
  237.         0Fh Datei öffnen mit Dateikontrollblock
  238.         10h Datei schließen mit Dateikontrollblock
  239.         11h suche erste Datei im aktuellen Verzeichnis mit Dateikontrollblock
  240.         12h suche nächste Datei im aktuellen Verzeichnis mit Dateikontrollblock
  241.         13h lösche Datei spezifiziert durch den Dateikontrollblock
  242.         14h sequentielles lesen einer Datei spezifiziert durch den Dateikontrollblock
  243.         15h sequentielles schreiben einer Datei spezifiziert durch den Dateikontrollblock
  244.         16h erstellen oder leeren einer Datei mit Dateikontrollblock
  245.         17h umbenennen einer Datei spezifiziert durch den Dateikontrollblock
  246.         18h* Unbekannt
  247.      o  19h Rückgabe aktuelles Festplattenlaufwerk
  248.      o  1Ah einstellen Diskettentransferbereich (DTA)
  249.         1Bh hole FAT des aktuellen Laufwerks
  250.         1Ch hole FAT von irgendeinen Laufwerk
  251.         1Dh* Unbekannt
  252.         1Eh* Unbekannt
  253.         1Fh* lese DOS Plattenblock, Standardlaufwerk
  254.         20h* Unbekannt
  255.         21h wahlfreies lesen einer Datei spezifiziert durch den FCB
  256.         22h wahlfreies schreiben einer Datei spezifiziert durch den FCB
  257.         23h Rückgabe Anzahl Sätze in der Datei spezifiziert durch FCB
  258.         24h einstellen Satznummer der relativen Datei für die Datei spezifiziert durch den FCB
  259.      o  25h einstellen Interrupt Vektor
  260.         26h erstellen neues Programm Segment Prefix (PSP)
  261.         27h wahlfreies lesen eines Dateiblockes einer Datei spezifiziert durch den  FCB
  262.         28h wahlfreies schreiben eines Dateiblockes einer Datei spezifiziert durch den  FCB
  263.         29h analysieren der Befehlszeile für Dateiname 
  264.      o  2Ah lese das Datum des Systems
  265.      o  2Bh einstellen Datum des Systems
  266.      o  2Ch lese die Uhrzeit des Systems
  267.      o  2Dh einstellen Uhrzeit des Systems
  268.      o  2Eh setzen/löschen Verify-Kennzeichen für Schreiboperation der Laufwerke
  269.      o  2Fh holen Adresse Datenübertragungsbereich (DTA)
  270.      o  30h holen DOS Versionsnummer
  271.         31h TSR, geöffnete Dateien bleiben offen
  272.         32h* lesen DOS Plattenblock
  273.      o  33h holen oder einstellen Ctrl-Break Kennzeichen
  274.         34h* INDOS kritisches Bereichskennzeichen
  275.      o  35h holen Segment und Offsetadresse eines Interrupts
  276.      o  36h festellen freien Platz auf dem Laufwerk
  277.         37h* holen/einstellen Wahlmöglichkeit Markierungszeichen (SWITCHAR)
  278.      o  38h Rückgabe Landesspezifische Information
  279.      o  39h erstellen Unterverzeichnis
  280.      o  3Ah entfernen Unterverzeichnis
  281.      o  3Bh ändern aktuelles Inhaltsverzeichnis
  282.      o  3Ch erstellen und Rückgabe Dateinummer
  283.      o  3Dh öffne Datei und Rückgabe Dateinummer
  284.      o  3Eh schließen Datei gekennzeichnet durch Dateinummer
  285.      o  3Fh lesen von Datei gekennzeichnet durch Dateinummer
  286.      o  40h Datei schreiben gekennzeichnet durch Dateinummer
  287.      o  41h löschen Datei
  288.      o  42h bewegen Dateizeiger (bewegen Lese-Schreib Zeiger für Datei)
  289.      o  43h einstellen/Rückgabe Dateiattribute
  290.      o  44h Gerät IOCTL (I/O Steuerung) Information
  291.      o  45h duplizieren Dateinummer
  292.      o  46h erzwingen einer duplizierten Dateinummer
  293.      o  47h holen aktuelles Inhaltsverzeichnis
  294.      o  48h Speicher belegen
  295.      o  49h Freigabe von belegten Speicher
  296.      o  4Ah modifizieren belegten Speicher
  297.      o  4Bh laden oder ausführen eines Programms
  298.      o  4Ch Programm beenden und Rückgabe zu DOS
  299.      o  4Dh holen Rückgabecode eines Unterprozesses erstellt bei 4Bh
  300.      o  4Eh suche erste Datei
  301.      o  4Fh suche nächste Datei
  302.         50h* einstellen neues aktuelles Programm Segment Prefix (PSP)
  303.         51h* legt aktuelles PSP in BX
  304.         52h* Zeiger zu der DOS auflisten von zeigt 
  305.         53h* übersetzt BPB (Bios Parameterblock, siehe unterhalb)
  306.      o  54h holen Platte Überprüfungszustand (VERIFY)
  307.         55h* erstellen PSP: ähnlich wie Funktion 26h
  308.      o  56h umbenennen einer Datei
  309.      o  57h holen/einstellen Datum und Uhrzeit einer Datei
  310.         58h holen/einstellen Belegungsstrategie (DOS 3.x)
  311.      o  59h holen erweiterte Fehlerinformation
  312.      o  5Ah erstellen eines eindeutigen Dateiname
  313.      o  5Bh erstellen einer DOS Datei
  314.      o  5Ch sperren/entsperren Datei Inhalte
  315.         5Dh* Netzwerk 
  316.         5Eh* Netzwerk Drucker 
  317.         5Fh* Netzwerk Umleitung 
  318.         60h* analysieren Pfadname 
  319.         61h* Unbekannt
  320.         62h holen Programm Segment Prefix (PSP)
  321.         63h* holen anführen Byte Tabelle (DOS 2.25)
  322.         64h* Unbekannt
  323.         65h holen erweiterte Länderinformation (DOS 3.3)
  324.         66h holen/einstellen globale Code Seiten Tabelle (DOS 3.3)
  325.         67h einstellen Handle Zähler (DOS 3.3)
  326.         68h anvertrauen Datei (DOS 3.3)
  327.         69h Festplatte serielle Nummer (DOS 4.0)
  328.         6Ah Unbekannt
  329.         6Bh Unbekannt
  330.         6Ch erweitertes öffnen/erstellen (DOS 4.0)
  331.  
  332. Elemente die mit 'o' markiert sind, werden in der OS/2 Kompatibilität Box
  333. unterstützt, entsprechend zu MicroSoft.
  334.  
  335.  
  336. Anruf der DOS Funktionen ............................................. 4**7
  337.  
  338. Der DOS Funktionen werden aufgerufen, indem die Nummer der gewünschten Funktion im
  339. Register AH, Unterfunktion in AL übertragen wird und alle anderen Register mit den Werten
  340. die erforderlich sind versorgt werden und der int 21h aufgerufen wird.
  341.  
  342. Sobald der Interrupt aufgerufen ist, werden alle Register und Kennzeichen auf dem
  343. Stapel abgelegt. Int 21h enthält ein Zeiger auf eine absolute Adresse in der IBMDOS.COM
  344. Datei. Dies Adresse ist der Hauptschleife für den DOS Befehls Handler. Der Handler
  345. holt die Registerwerte, vergleicht diese mit seine Liste von Funktionen, und führt diese
  346. aus, falls die Funktion zulässig ist. Sobald die Funktion beendet ist, kann diese Werte an
  347. den Befehlshandler zurückgeben. Der Handler sichert (PUSH) die Werte in dem Stapel und
  348. übergibt dann die Steuerung an das aufrufende Programm.
  349.  
  350. Die meisten Funktionen geben einen Fehlercode zurück; einige geben aber mehr Information zurück.
  351. Details hierüber sind in der Beschreibung der einzelnen Funktionen enthalten. Erweiterte
  352. Fehlercodes für die meisten Funktionen, können durch den Aufruf der Funktion 59h festgestellt werden.
  353.  
  354. Register Einstellungen sind verzeichnet wenn diese von DOS benutzt werden. Einige Funktionen geben
  355. Ausschußdaten in ungebrauchte Register zurück. Es sollten keine Tests auf Werte in nicht
  356. spezifizierten Register durchgeführt werden; das Programm kann ein ungewöhnliches Verhalten an den Tag legen.
  357.  
  358. DS:DX Zeiger sind die Datensegment Register (DS) indiziert zu dem DH und DL
  359. Register (DX). DX enthält immer die Offsetadresse, DS enthält die Segmentadresse.
  360.  
  361. Die Datei Kontrollblock Funktionen (FCB Funktionen) waren ein Teil von DOS 1.0. Seit
  362. der Freigabe von DOS 2.0, Microsoft empfiehlt, daß diese Funktionen nicht benutzt werden
  363. sollen. Eine Anzahl von beträchtlich erweiterten Funktionen (Verarbeitungsfunktionen) wurden
  364. mit DOS 2.0 eingeführt. Die Verarbeitungsfunktionen liefern die Unterstützung für Wildcards und
  365. Unterverzeichnisse, und die erweiterte Fehlererkennung via Funktion 59h.
  366.  
  367. Die Daten für die folgenden Aufrufe sind von verschiedenartige Intel, Microsoft,
  368. IBM, und andere Veröffentlichungen zusammengestellt worden. Da sind viele spitzfindige
  369. Unterschiede zwischen MSDOS und PCDOS und zwischen den einzelnen Versionen. Unterschiede
  370. zwischen den Versionen sind vermerkt wie sie auftreten.
  371.  
  372. Es gibt verschiedenartige Wege um die DOS Funktionen aufzurufen. Für alle Methoden, die
  373. Funktionsnummer ist geladen im Register AH, Unterfunktionen und/oder Parameter sind
  374. geladen in AL oder andere Register, und aufrufen int 21 bei einer der folgenden
  375. Methoden: 
  376.  
  377.  A) anrufen Interrupt 21h direkt (das empfohlene Verfahren)
  378.  B) durchführen ein long call zu Offset 50h in dem Programm PSP.
  379.     1) dies Methode der wille nicht arbeiten unter DOS 1. x
  380.     2) obgleich empfohlen von Microsoft für DOS 2.0, diese Methode benötigt mehr
  381.        Zeit und ist nicht mehr empfohlen.
  382.  C) plazieren der Funktionsnummer in CL und durchführen eines intrasegment Aufrufes zu
  383.     Stelle 05h in dem aktuellen Codesegment. Dies Stelle enthält ein long call
  384.     zu dem DOS Funktionsverteiler.
  385.     1) IBM empfiehlt, das diese Methode ausschließlich benutzt werden soll, sobald existierende Programme
  386.        für unterschiedlich Anruf Konventionen geschrieben werden. (wie konvertieren CP/M
  387.        Programme). Dies Methode sollte vermieden werden, falls nicht wesentliches dafür spricht.
  388.     2) AX wird durch diese Methode immer zerstört.
  389.     3) diese Methode ist ausschließlich zulässig für die Funktionen 00h-24h.
  390.  
  391. Es gibt auch verschiedenartig Wege um ein Programmvon zu beenden. (vorrausgesetzt es ist nicht
  392. als ein TSR geplant). Alle Methoden außer der Aufruf 4Ch muß garantieren daß das
  393. Segmentregister die Segmentadresse von dem PSP enthält.
  394.  
  395.  A) Interrupt 21h, Funktion 4Ch (beenden mit Rückgabecode). Dies ist die
  396.      "offiziell" empfohlene Methode um zu DOS zurückzukehren.
  397.  B) Interrupt 21h, Funktion 00h (beenden Programm). Dies ist der frühere
  398.     int 21 Funktionsaufruf. Er ruft einfach den int 20h auf.
  399.  C) Interrupt 20h (aussteigen).
  400.  D) eine JMP Instruktion zu Offset 00h (int 20h Vektor) in dem Programm Segment
  401.     Prefix. Dies ist nur ein Umweg um den int 20h aufzurufen. Diese Methode
  402.     war vorbereitet in DOS 1.0 für die bequeme Umsetzung von CP/M Programme.
  403.     Es ist nicht länger zur Benutzung empfohlen.
  404.  E) eine JMP Instruktion zu Offset 05h (int 21 Vektor) in dem Programm Segment
  405.     Prefix, mit AH einstellen zu 00h oder 4Ch. Dies ist eine andere CP/M
  406.     typische Funktion.
  407.  
  408.  
  409.  
  410. wesentliche Versions Information ..................................... 4**8
  411.  
  412. * Funktionsaufrufe: 
  413.  
  414.         DOS 2.x Unterstützung der Funktionsaufrufe 00h bis 57h.
  415.  
  416.         DOS 2.25 ist die ausschließliche Version zum unterstützen der Funktion 63h (Ausländische Tastatur)
  417.  
  418.         DOS 3.x hat mehr weltoffenere Funktionsaufrufe zur Fehlerbehandlung
  419.                 und Feststellung verfügbar als 2.x.
  420.  
  421.         DOS 3.0 Unterstützung der Funktionsaufrufe 00h bis 5Ch und 62h, einschließlich
  422.                 neue und geänderten Funktionsaufrufe für Version 3.0:
  423.                 3Dh öffnen Datei
  424.                 59h holen erweiterten Fehler
  425.                 5Ah erstellen temporäre Datei
  426.                 5Bh erstellen neue Datei
  427.                 5Ch sperren/entsperren Dateizugriff
  428.                 62h holen Programm Segment Prefix Adresse
  429.  
  430.         DOS 3.1 Unterstützung der Funktionsaufrufe 00h bis 62h, einschließlich
  431.                 der neuen und geänderten Funktionsaufrufe für DOS 3.1:
  432.                 5E00h holen Maschinenname
  433.                 5E02h einstellen Druckereinstellung
  434.                 5E03h holen Druckereinstellung
  435.                 5F02h holen Umleitung Liste Einsprungstelle
  436.                 5F03h umleiten Gerät 
  437.                 5F04h abbrechen Umleitung 
  438.  
  439.         DOS 3.2 Unterstützung der folgenden neuen Funktionen:
  440.                 44h erweiterte IOCTL Funktionen
  441.  
  442.         DOS 3.3 Unterstützung der folgenden neuen Funktionen:
  443.                 44h erweiterte IOCTL Funktionen
  444.                 65h holen erweiterte Länderinformation (DOS 3.3)
  445.                 66h holen/einstellen globale Code Seite Tabelle (DOS 3.3)
  446.                 67h einstellen Handle Zähler (DOS 3.3)
  447.                 68h commit Datei (DOS 3.3)
  448.  
  449.         DOS 4.0 Unterstützung der folgend neuen Funktionen:
  450.                 44h erweiterte IOCTL Funktionen
  451.                 69h Festplatte serielle Nummer
  452.                 6Ch erweitertes öffnen/erstellen
  453.  
  454.  
  455. PCjr Kassetten Unterstützung ......................................... 4**9
  456.  
  457. Die PCJr ROM Kassetten haben eine Befehlstabelle, die den Namen von
  458. jedem unterstützten Befehl und seinem Vektor im ROM enthält. Es wird als erste
  459. das ROM angepaßt, vor der internen Befehlsanpassung, sodaß das abläuft, was
  460. dort gefunden wurde.
  461. Eigentlich, kann der ganze PCJr Code ohne Probleme durch NOP ersetzt werden -- AST und
  462. Toshiba haben beide ein COMMAND.COM ohne diesen, und es gibt keine Hauptprobleme. Das
  463. interessante ist, daß PC-DOS 4.0x diesen noch hat, obwohl sie ausdrücklich
  464. sagen, daß DOS 4 nicht auf dem PCJr unterstützt wird (*sie* bedeutet bekanntlich IBM).
  465. Der PCJr Code in COMMAND.COM wird ausschließlich auf dem PCJr ausgeführt und der PCJr
  466. unterstützt keine normalen BIOS Erweiterung ROMs, ausschließlich der Erweiterungkasetten.
  467.  
  468.  
  469.  
  470. Kompatibilitätsprobleme mit DOS 4.0+ ................................. 4**10
  471.  
  472. Kompatibilitätsprobleme mit DOS 4.00 liegen vorwiegend in int 2Ah und int 2Fh. Bisher
  473. war 2Ah immer reserviert, einige Netzwerksoftware benutzt dies Interrupt. IBM und
  474. Microsofts Dokumentation vor 4.0 besagten nachdrücklich, daß int 2Fh Funktionen
  475. nicht schon benutzt von PRINT.COM und zur allgemeinen Benutzung offen waren. DOS 4.00
  476. benutzt eine Anzahl dieser Funktionen. Die Differenz in der Festplattenbehandlung sobald> 32mb
  477. Bereiche benutzt werden, veranlässt Probleme mit einiger älterer Software.
  478.  
  479. Die meisten DOS 4.00 externen Programme (ASSIGN, SUBST, etc) kontrollieren für Dateien dasein
  480. gedruckt - einschließlich LABEL. Dies ist ein Teil der erweiterten Netzwerkunterstützung.
  481. Beinahe alle DOS 4.00 externen überprüfen außerdem das Vorhandensein von NETBIOS.
  482.  
  483.  
  484. eDOS 4.0 ............................................................. 4**11
  485.  
  486. Wie im Abschnitt 1 erwähnt, das DOS 4. 0 welches an ausgewählte OEMS in England und
  487. Europa in '86/87' ausgegeben wurde, ist nicht derselbe Code wie in DOS 4.0 bei der Freigabe in
  488. 1988. Das europäische DOS 4.0 (eDOS?) ist ein multitasking DOS geschrieben von Microsoft,
  489. solange das US DOS 4.0 ist ein single tasking DOS geschrieben von IBM. eDOS 4.0 war
  490. in Europa nach 3.1 freigegeben, aber bevor 3.2.
  491.  
  492. (gesondert von einem vorher freigegebenen Dokument):
  493.  
  494. `Microsoft Multitasking MS-DOS Produkt Specifikation' datiert April 28, 1986
  495.  
  496. MS-DOS 4.0 ist ein multitasking Betriebssystem, entwickelt von und verträglich
  497. mit MS-DOS 3.1. Es unterstützt echtes multitasking welches dem Anwender die
  498. illusion gibt von und begünstigt von viele unabhängige Computer. Ferner, MS-DOS 4.0
  499. erlaubt es die meisten existierenden MS-DOS 2.x und 3.x Anwendungen auszuführen
  500. ohne Änderung in der MS-DOS 4.0 multitasking Umgebung.
  501.  
  502. (Ende von gesondert).
  503.  
  504. eDOS 4.0 bestand aus einem Hauptprogramm (DOS2/3 verträglich) und verschiedene
  505. multitasking (Hintergrund) Programme, die speziell geschrieben wurden. Der Grund
  506. hierfür war, der Zwang in die einzelne 640k Speicher Abbildung zu passen.
  507.  
  508. int 21h Funktionen: (einige von diesen erscheinen in späteren Versionen von DOS)
  509.  
  510. AEXEC       identisch zu EXEC sub 4.
  511. CREATMEM    erstellen eines benannten Speicherbereiches, welcher kann Zugang durch andere
  512.             Vorgänge erhalten. (gemeinsam benutzter Speicher \SHAREMEM\ ...)
  513. CRITENTER, CRITLEAVE (Semaphore Routinen)
  514. CRITERR     (dies ist eine der die DOS 3 haben sollte)
  515.             ermöglicht die Abarbeitung von schweren Fehlern oder automatisches vernachlässigen von schweren Fehlern.
  516. CWAIT       wartet auf einen Rückgabecode von einem asynchronen Prozess. Kehrt zurück, sobald irgendein
  517.             Unterprozess beendet wird. Unterprozesse können auch wie Waisen gestartete werden,
  518.             sodaß hieruaf nicht gewartet werden muß.
  519. EXEC 4Bh    (sub Funktion 4) - Start asynchronen Prozess.
  520. FREEZE      Hält den Ablauf eines spezifizierten Prozesses an.
  521. GETEXTENDEDERROR - wie für DOS3, außer es wird die Versionsnummer überprüft, um die Ebene
  522.             der Fehlerbehandlung zu beschreiben - du kann fragen für ein Zeiger zu der schweren
  523.             Fehler Information paketieren für den letzten schweren Fehler.
  524. GETMEM      bekommt Zugriff zu einem vorher erstellten gemeinsam benutzten Speicherbereich.
  525. GETPID      gibt zurück Prozess ID und Abstammungs Prozess ID.
  526. GET/SET MEMORY PARTITION SIZE
  527.             Vordergrundspeicher wird für übliche Anwendungen benutzt. Hintergrundspeicher wird
  528.             für DOS 4 Anwendungen benutzt, die nicht den Bildschirm benutzen (oder ausschließlich benutzen es
  529.             bis popup Funktionen). Hintergrund Anwendungen können auch Vordergrundspeicher
  530.             benutzen, aber nicht umgekehrt.
  531. KILL        beendet ein Prozess.
  532. PBLOCK      blockt ein Prozess bis ein zugehöriger PRUN gegeben ist. Ein Zeitüberschreitung ist auch
  533.             spezifiziert. Eine Speicherstelle ist ging vorbei welcher muß sein paarig in
  534.             der PRUN. (Semaphore)
  535. PIPE        erstellen einer PIPE. Zugriff ist bis lesen/schreiben/schließen (aber nicht LSEEK).
  536. PRUN        Freigabe eines gesperrten Prozesses. (Semaphore)
  537. RELEASEMEM  Freigabe eines gemeinsam benutzten Speicherzugriffes. Falls der Referenzzähler Null enthält
  538.             wurde der Speicher freigegeben.
  539. RESUME      Wiederaufnehmen eines eingefrorenen Prozesses.
  540. SEND SIGNAL
  541.             Signals waren: 
  542.                   SIGINTR, SIGTERM, SIGPIPE, SIGUSER1, SIGUSER2. 
  543.                   Control C, Programmende, kaputte Pipe, Anwender def, Anwender def.
  544.             Aktionen waren: 
  545.                   beenden Prozess auf Quittung, ignorieren, annehmen,
  546.                   Sender bekommt Fehler oder empfing Empfangsbestätigung Signal.
  547.            Die letzte von diesen gibt unmittelbar zu dem Sender zurück - es ist
  548.            geplant zur Benutzung, sobald die Abarbeitung des Signals zu lange dauert.
  549. SETFILETABLE (86h) installieren einer neuen Dateihandler Tabelle. (mehr als 20 Dateien,
  550.              wie in DOS 3.3+?)
  551. SETPRI     setzten Prozess Priorität (für diesen Prozess oder vollständig subtree).
  552. SET SIGNAL HANDLER
  553. SLEEP      Suspendieren des aktuellen Prozesses für die Anzahl der gegebenen Millisekunden.
  554.            MSC 4.0 hatte eine Demo welche 'DOS_sleep' int 21h/fn 89h aufgerufen hat -
  555.            erscheinen bzw. wird nicht ausgeführt in den bekannten DOS Versionen.
  556. WAIT       wie für DOS 3.
  557.  
  558. int 2Fh Funktionen: 
  559.  
  560. CHECKPU    kontrollieren für popup Paket Installierung
  561. POSTPU     öffnen/schließen eines popup Bildschirms
  562. SAVEPU     sichern popup Bildschirm
  563. RESTOREPU  umspeichern popup Bildschirm
  564.   
  565. Andere nützliche Merkmale:
  566.  
  567.    eDOS 4.0 Programme benutzen das Windows .EXE Format
  568.    Programme können gemeinsame Code Segmente benutzen
  569.    verbesserte Gerätetreiber 
  570.        der seriell Port hatte einen vollen Satz der IOCTL Aufrufe (benutzt bis zu
  571.        einem neuen auswählbaren IOCTL Aufruf).
  572.        Gerätetreiber können multi-tasking sein. Sie haben geeignete Routinen zur
  573.        Unterstützung von mehrfach angeforderten Warteschlangen (ebenso wie OS/2 dies später vorsieht)
  574.    Interrupt gesteuerte seriell Anschlüsse
  575.    sortierte Plattenpuffer bevor diese geschrieben werden
  576.  
  577.  
  578. Die folgenden waren verzeichnete als mögliche zukünftige Erweiterungen:
  579.  
  580.    Dateisystem Schutz und Genehmigungen
  581.    Hochleistungsdateisystem (HPFS wurde in OS/2 1.2 realisiert)
  582.    installierbare Dateisysteme (IFS Haken ist vorhanden in US DOS 4.0)
  583.    Symbolische Verbindungen (sie haben diese auf OS/2 nicht, gerade jetzt ausführen sie?)
  584.    Löschungen rückgängig machen
  585.    lange Namen, Kleinbuchstaben Namen, zugreifen/erstellen Datum/Uhrzeit, Name von Anwendungen
  586.       erstellen Datei, Revisionsnummer etc. (OS/2 HPFS)
  587.  
  588.  
  589. Entsprechend den wenigen Information die vom BIX ausgwählt wurden, Wang prüfte eine alpha
  590. Version von eDOS 4.0 zur Benutzung für ein laptop Projekt irgendwann in 1985, aber gab es dann auf
  591. weil das OS unfähig war, mit "schlechten" Programme in einer vernünftigen Art und Weise
  592. umzugehen. Ich redete mit einer Person welche hatte beta-tested es für MS, diese kommentierte
  593. "der einzigste was ausführt wird ist COMMAND.COM." Microsoft hat offensichtlich entweder
  594. eDOS komplette aufgegeben oder (wahrscheinlich) vereinte es in OS/2. Ich bin unfähig
  595. festzustellen, ob die französische Post eDOS benutzt, und zu der beste
  596. ich kann suchen außerhalb Apricot Computer nie tat viel mit es. 
  597.  
  598. Obgleich es höchst unwahrscheinlich ist das irgendeiner je Information zur Programmierung
  599. von eDOS braucht, ich finde die vollständig Unterwerfung faszinierend. IBM hatte nicht
  600. nur das Produkt angekündigt, sondern auch hierfür Werbung von 1984-85 gemacht. Wer verwarf den Entwurf? Warum?
  601. Wier werden es wahrscheinlich nie herausfinden.
  602.  
  603.  
  604. DOS Funktionen ausführlich ........................................... 4**12
  605.  
  606.  
  607. INT 21H DOS Funktionen
  608.         Funktion (Hex)
  609.  
  610. * zeigt an das die Funktionen nicht in der IBM DOS technischen Referenz dokumentiert sind.
  611. Anmerkung einige Funktionen sind dokumentiert in anderen Microsoft oder zugelassen OEM
  612. Dokumentation. 
  613.  
  614.  
  615. Funktion 00h beenden Programm 
  616.       beendet Programm, aktualisiert FAT, überträgt Puffer, wiederherstellen Register
  617. Aufruf   AH 00h
  618.          CS Segmentadresse von PSP
  619. Rückgabe keine
  620. Anmerkung 1) Programm muß plazieren die Segmentadresse von dem PSP Kontrollblock im CS
  621.              bevor diese Funktion aufgerufen wird.
  622.           2) die Beendigungs, ctrl-break, und kritische Fehler Ausgangsadressen (0Ah, 0Eh,
  623.              12h) sind auf die Werte zurückgesetzt, die sie beim Aufruf des Programms hatten,
  624.              diese Werte sind gesichert in dem Programm Segment Prefix an den Adressen
  625.              PSP:000Ah, PSP:000Eh, und PSP:0012h.
  626.           3) alle Dateiopuffer werden übertragen und die geöffneten Handles des Prozesses
  627.              werden geschlossen.
  628.           4) falls irgendeine der Dateien ihre Länge verändert hat und nicht geschlossen wird,
  629.              wird dies im Inhaltsverzeichnis nicht richtig aufgezeichnet.
  630.           5) überträgt Steuerung an die Beendigungsadresse.
  631.           6) dieser Aufruf führt genau dieselbe Funktion wie int 20h aus.
  632.           7) alle benutzten Speicher des Programms werden an DOS zurückgegeben. DOS ebenso geht die
  633.              Speicherkette von Speicherblöcke aufwärts und markiert das alle die vom PSP benutzt wurden
  634.              wieder frei sind.
  635.           8) TOS:$ 00 TERM. Gibt die Systemsteuerung an das Programm zurück von welchem es
  636.              gestartet wurde. Falls EXECed von einem Programm, es gibt diese zu dem Programm zurück.
  637.              Falls von DeskTop gestartet, gibt es zurück zum DeskTop. Dies ist wichtig für die verketteten
  638.              Programmsegmente.
  639.           9) Dateien welche mit FCBs geöffnet wurden, werden nicht automatisch geschlossen.
  640.  
  641.  
  642. Funktion 01h holen Tastatureingabe
  643.          wartet auf ein Zeichen von STDIN (falls notwendig), Echos zu STDOUT
  644. Aufruf   AH 01h
  645. Rückgabe AL ASCII Zeichen von STDIN (8 Bits)
  646. Anmerkung 1) überprüft Zeichen auf Ctrl-C, falls Zeichen ist Ctrl-C, ausführen int 23h.
  647.           2) für Funktionsaufruf 06h, erweiterte ASCII Codes benötigt zwei Funktionsaufrufe.
  648.              Der erste Aufruf gibt 00h zurück, wie ein Anzeiger das der nächste Aufruf
  649.              ein erweiterter ASCII Code ist.
  650.           3) Eingabe und Ausgabe können umgeleitet werden. Falls umgeleitet, es gibt kein Weg um
  651.              EOF festzustellen.
  652.           4) TOS:$ 1 CONIN. Zeichen wird in D0 zurückgegeben. ASCII Code des Zeichens im höherwertigen Byte,
  653.              Tastaturauswahlcode im niederwertigen Byte. Gibt Scancodes von Tasten zurück, welche
  654.              keinen ASCII Wert haben.
  655.  
  656.  
  657. Funktion 02h Anzeigen Ausgabe
  658.          Anzeigen Zeichen in DL zu STDOUT
  659. Aufruf   AH 02h
  660.          DL 8 Bit Daten (gewöhnlich ASCII Zeichen)
  661. Rückgabe keine
  662. Anmerkung 1) falls Zeichen ist 08 (zurücksetzen) der Cursor wird un 1 Zeichen nach links bewegt
  663.              (nicht löschendes zurücksetzen).
  664.           2) falls Ctrl-C nach der Eingabe erkannt wird, int 23h ist ausgeführt.
  665.           3) Eingabe und Ausgabe können umgeleitet werden. Falls umgeleitet, es gibt kein Weg um
  666.              EOF festzustellen.
  667.           4) TOS:$ 2 CONOUT. Zeichen muß auf den Stapel gebracht werden, wie das erste Wort. Der
  668.              ASCII Wert des Zeichen geht in dem niederwertigen Byte und das höherwertige Byte ist Null.
  669.              Zeichen werden zum Gerät #2 ausgegeben, normal die Ausgabe auf die Console.
  670.              Steuerzeichen und Escape Sequenzen werden normalerweise interpretiert.
  671.  
  672.  
  673. Funktion 03h Hilfseingabe
  674.          holen (oder warten bis) Zeichen von STDAUX
  675. Aufruf   AH 03h
  676. Rückgabe AL ASCII Zeichen von Hilfseinheit
  677. Anmerkung 1) AUX, COM1, COM2 ist ungepuffert und nicht Interrupt gesteuert
  678.           2) dieser Funktionsaufruf gibt keinen Zustand oder Fehlercodes zurück. Zur besseren
  679.              Kontrolle wird empfohlen die ROM BIOS Routine (int 14h) zu benutzen oder
  680.              einen AUX Gerätetreiber zu schreiben und benutzen IOCTL.
  681.           3) beim Starten, PC-DOS initializiert den ersten Hilfsport (COM1) zu 2400
  682.              Baud, keine Parität, ein Stop-Bit, und ein 8-bit Wort. MSDOS kann abweichen.
  683.           4) falls Ctrl-C von STDIN eingegeben wird, int 23h wird ausgeführt.
  684.           5) TOS:$ 03 Hilfseingabe. Funktion kehrt zurück sobald ein Zeichen empfangen
  685.              wurde. Zeichen wird im niederwertigen Byte von D0 zurückgegeben.
  686.  
  687.  
  688. Funktion 04h Hilfsausgabe
  689.          schreiben Zeichen zu STDAUX
  690. Aufruf   AH 04h
  691.          DL ASCII Zeichen zum senden an AUX
  692. Rückgabe keine
  693. Anmerkung 1) dieser Funktionsaufruf gibt keinen Zustand oder Fehlercodes zurück. Zur besseren
  694.              Kontrolle wird empfohlen die ROM BIOS Routine (int 14h) zu benutzen oder
  695.              einen AUX Gerätetreiber zu schreiben und benutzen IOCTL.
  696.           2) falls Ctrl-C von STDIN eingegeben wird, int 23h wird ausgeführt.
  697.           3) vorgegeben ist COM1 falls dieser nicht von DOS umgeleitet wird.
  698.           4) falls das Gerät beschäftigt ist, wartet diese Funktion solange bis es bereit ist.
  699.           5) TOS:$ 04 Hilfsausgabe. Höherwertiges Byte sollte Null sein, niederwertiges Byte
  700.              ist der ASCII Code.
  701.  
  702.  
  703. Funktion 05h Drucker Ausgabe 
  704.          schreiben Zeichen zu STDPRN
  705. Aufruf   AL 05h
  706.          DL ASCII Code des Zeichen zum senden
  707. Rückgabe keine
  708. Anmerkung 1) falls Ctrl-C von STDIN eingegeben wird, int 23h wird ausgeführt.
  709.           2) vorgegeben ist PRN oder LPT1 falls dieser nicht mit dem MODE Befehl umgeleitet wurde.
  710.           3) falls der Drucker beschäftigt ist, wartet diese Funktion solange bis er bereit ist.
  711.           5) TOS:$ 05 Drucker Ausgabe. Höherwertiges Byte von D0 ist Null, niederwertiges Byte ist Zeichen.
  712.              Gibt -1 zurück, falls Zeichen erfolgreich gesendet wurde. Zeitüberschreitung nach 30
  713.              Sekunden und setzt D0 auf Null.
  714.  
  715.  
  716. Funktion 06h direkte Console I/O
  717.          holen Zeichen von STDIN; echo Zeichen zu STDOUT
  718. Aufruf   AH 06h
  719.          DL 0FFh für Console Eingabe, oder 00h-0FEh für Console Ausgabe
  720. Rückgabe ZF gesetzt wenn kein Zeichen verfügbar
  721.             gelöscht wenn Zeichen empfangen wurde
  722.          AL ASCII Code des Zeichens
  723. Anmerkung 1) erweiterte ASCII codes benötigen zwei Funktionsaufrufe. Der erste Aufruf gibt
  724.              00h als Hinweis zurück, das der nächste Aufruf eine erweiterten Code zurückgibt.
  725.           2) falls DL ist nicht 0FFh, DL nimmt an das es ein zulässiges Zeichen zur
  726.              Ausgabe an STDOUT hat.
  727.           3) dies Funktion überprüft nicht auf Ctrl-C oder Ctrl-PrtSc.
  728.           4) Eingabe wird nicht am Bildschirm angezeigt.
  729.           5) falls I/O ist umgeleitet, EOF oder Platte voll wird nicht erkannt.
  730.           6) TOS:$ 06 RAWCONIO. Holen Zeichen von Tastatur bei Anruf mit $FF in
  731.              D0. ASCII und Scancodes werden wie bei CONIN zurückgegeben. Falls ein anderer Wert
  732.              als $FF benutzt wird, wird es zu STDOUT an der aktuell Cursorposition
  733.              ausgegeben. Dieser Aufruf interpretiert alle Steuerzeichen und Escape Sequenzen.
  734.  
  735.  
  736. Funktion 07h direkt Console Eingabe ohne Echo (kontrolliert nicht auf BREAK)
  737.          holen oder warten auf Zeichen von STDIN, gibt Zeichen in AL zurück
  738. Aufruf   AH 07h
  739. Rückgabe AL ASCII Zeichen vom Standardeingabegerät
  740. Anmerkung 1) erweiterte ASCII codes benötigen zwei Funktionsaufrufe. Der erste Aufruf gibt
  741.              00h als Hinweis zurück, das der nächste Aufruf einen erweiterten Code zurückgibt.
  742.           2) dies Funktion überprüft nicht auf Ctrl-C oder Ctrl-PrtSc.
  743.           3) Eingabe kann umgeleitet werden.
  744.           4) TOS:$ 07 direkt CONIN ohne ECHO. Dasselbe wie Funktion 01h, ausser
  745.              das die Zeichen nicht am Bildschirm angezeigt werden.
  746.  
  747.  
  748. Funktion 08h Console Eingabe ohne Echo (überprüft BREAK)
  749.          holen oder warten auf Zeichen von STDIN, gibt Zeichen in AL zurück
  750. Aufruf   AH 08h
  751. Rückgabe AL Zeichen vom Standardeingabegerät
  752. Anmerkung 1) Zeichen wird auf ctrl-C überprüft. Falls ctrl-C ist erkannt, ausführen int 23h.
  753.           2) für Funktionsaufruf 08h, erweiterte ASCII Zeichen benötigen zwei Funktionsaufrufe.
  754.              Der erste Aufruf gibt 00h als Hinweis zurück, das der nächste Aufruf den
  755.              eigentlichen erweiterten Code zurückgibt.
  756.           3) Eingabe kann umgeleitet werden. Falls umgeleitet, es gibt kein Weg um EOF festzustellen.
  757.           4) TOS:$ 08 CONIN ohne ECHO. Derselbe wie der vorhergehende Aufruf. (keine Kontrolle für
  758.              Steuerzeichen).
  759.  
  760.  
  761. Funktion 09h anzeigen Zeichenkette
  762.          Ausgabe Zeichen der anzuzeigenden Zeichenkette zu STDOUT
  763. Aufruf   AH 09h
  764.          DS:DX Zeiger zu der Zeichenkette die angezeigt werden soll
  765. Rückgabe keine
  766. Anmerkung 1) die Zeichenfolge in Speicher muß mit einem $ (24h) beendet sein
  767.           2) das $ wird nicht angezeigt, bleibt aber in AL erhalten.
  768.           3) Ausgabe zu STDOUT ist dasselbe wie Funktionsaufruf 02h.
  769.           4) TOS:$ 09 drucken Zeile. Die Adresse von der ASCIIZ Zeichenkette ist auf dem
  770.              Stapel wie ein Parameter abgestellt und ist gedruckt an der aktuellen
  771.              Cursorposition. Die Größe der Zeichenkette ist nicht begrenzt. D0 enthält die Anzahl
  772.              der zu druckenden Zeichen. Steuerzeichen und Escape Sequenzen werden ausgewertet.
  773.  
  774.  
  775. Funktion 0Ah gepufferte Tastatureingabe
  776.          liest Zeichen von STDIN und fügt diese in den Puffer ein, beginnend
  777.          mit dem dritten Byte.
  778. Aufruf   AH 0Ah
  779.          DS:DX Zeiger zum Eingabepuffer
  780. Rückgabe keine
  781. Anmerkung 1) Min Puffer Größe=1, max=255.
  782.           2) Zeichen wird ctrl-C überprüft. Falls ctrl-C erkannt wird, ausführen int 23h.
  783.           3) Format von Puffer DX:
  784.              Byte Inhalt
  785.               1   maximale Anzahl von Zeichen die der Puffer aufnimmt, einschließlich CR.
  786.                   Lesen STDIN und füllen des Puffers solange bis ein CR (<ENTER> oder 0Dh)
  787.                   gelesen wird. Falls der Puffer bis zur maximalen Anzahl -1 gefüllt ist
  788.                   jede zusätzliche Eingabe wird nicht beachtet und ASCII 7 (BEL) wird ausgegeben
  789.                   solange bis ein CR gelesen wird. (du mußt diesen Wert einstellen)
  790.               2   eigentliche Anzahl empfangener Zeichen, ohne CR welches immer das
  791.                   letzte Zeichen ist. (die Funktion setzt diesen Wert)
  792.               3-n eingebene Zeichen werden in dem Puffer ab hier abgestellt.
  793.                   Puffer muß mindestens so groß sein, wie die Nummer im 1.Byte.
  794.               n+1 CR Zeichen( 0Dh).
  795.           4) Eingabe kann umgeleitet werden. Falls umgeleitet, es gibt kein Weg um EOF festzustellen.
  796.           5) die Zeichenkette kann mit den Standard DOS Editierbefehlen
  797.              während der Eingabe editiert werden.
  798.           6) erweiterte ASCII Zeichen werden als 2 Bytes gespeichert, das erste Byte
  799.              ist dann Null.
  800.           7) TOS:$ 0A READLINE. Abrufen CR-beendete Zeile von CONIN. Die Adresse
  801.              des Puffer wird wie ein Parameter übergeben. Byte 1 ist die maximale Länge
  802.              der Zeile, Byte 2 ist die Anzahl der eingegeben Zeichen, Byte 3 ist das
  803.              erste Zeichen. Escape Sequenzen werden nicht interpretiert, dafür aber die
  804.              normalen Steuerzeichen zum editieren.
  805.  
  806.  
  807. Funktion 0Bh kontrollieren Standardeingabe (STDIN) Status
  808.          überprüft ob Zeichen an STDIN verfügbar sind
  809. Aufruf   AH 0Bh
  810. Rückgabe AL 0FFh falls ein Zeichen von STDIN verfügbar ist
  811.              00h wenn kein Zeichen von STDIN verfügbar ist
  812. Anmerkung 1) überprüft auf Ctrl-C. Falls Ctrl-C erkannt wird, int 23h wird ausgeführt.
  813.           2) Eingabe kann umgeleitet sein.
  814.           3) überprüft auf Zeichen ausschließlich, es wird nicht in die Anwendung eingelesen
  815.           4) IBM berichtet, daß dieser Aufruf nicht richtig funktioniert unter dem DOSSHELL
  816.              Programm in DOS 4.00 und 4.01. DOSSHELL gibt immer Null zurück. Diese
  817.              Funktion arbeitet korrekt von der Befehlszeile oder einer Anwendung.
  818.           5) TOS:$ 0B CONSTAT. überprüft 64-byte OS Eingabepuffer.
  819.  
  820.  
  821. Funktion 0Ch löschen Tastaturpuffer & aufrufen einer Tastaturfunktion (FCB)
  822.          Abbildung Puffer, ausführen Funktion in AL (01h, 06h, 07h, 08h, 0Ah ausschließlich)
  823. Aufruf   AH 0Ch
  824.          AL Funktionsnummer (muß sein 01h, 06h, 07h, 08h, oder 0Ah)
  825. Rückgabe AL 00h Puffer wurde gelöscht, keine andere Abarbeitung wurde ausgeführt
  826.             andere irgendwelche anderen Werte haben keine Bedeutung
  827. Anmerkung 1) zwingt System zu warten bis ein Zeichen eingegeben wurde.
  828.           2) Löscht alle typeahead Eingaben, dann ausführen Funktion spezifiziert in AL (durch
  829.              Übertragung in AH und wiederholend des int 21 Aufrufes).
  830.           3) falls AL ein Wert enthält, der nicht vorher aufgelistet wurde, (derartig wie 00h) der
  831.              Eingabepuffer wird gelöscht und keine andere Handlung durchgeführt. Anmerkung daß dies
  832.              der STDIN Puffer ist und nicht der eigentliche Tastaturpuffer. Der Tastatur-
  833.              puffer wird nicht gelöscht, falls die Eingabe umgeleitet ist.
  834.  
  835.  
  836. Funktion 0Dh Platte zurücksetzen
  837.          Übertragen alle aktuellen offenen Dateipuffer zur Platte
  838. Aufruf   AH 0Dh
  839. Rückgabe keine
  840. Anmerkung 1) schließt nicht die Dateien. Aktualisiert nicht die Einträge im Inhaltsverzeichnis; geänderte Dateien
  841.              die die Größe verändert haben, aber nicht geschlossen werden, werden im Inhaltsverzeichnis nicht korrekt aufgezeichnet.
  842.           2) setzt DTA Adresse auf DS:0080h
  843.           3) sollte vor einem Plattewechsel benutzt werden, Ctrl-C Handler, und zum übertragen
  844.              der Puffer zur Platte.
  845.           4) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  846.       
  847.  
  848. Funktion 0Eh Auswahl des aktuellen Laufwerks
  849.          wählt das Laufwerk spezifiziert in DL (falls zulässig) als aktuelles Laufwerk aus
  850. Aufruf   AL 0Eh
  851.          DL neue aktuelle Laufwerksnummer (0=A:, 1=B:, 2=C:, etc.)
  852. Rückgabe AL Anzahl physischer Laufwerke, falls nicht LASTDRIVE= in der CONFIG.SYS
  853.             angegeben wurde und eine höher Nummer als die vom letzten physischen
  854.             Laufwerk spezifiziert.
  855. Anmerkung 1) für DOS 1.x und 2.x, der minimale Wert für AL ist 2.
  856.           2) für DOS 3.x und 4.x, der minimale Wert für AL ist 5.
  857.           3) die zurückgegebene Laufwerksnummer ist nicht zwangsläufig ein zulässig Laufwerk.
  858.           4) für DOS 1.x: 16 logische Laufwerke sind verfügbar, A-P.
  859.              Für DOS 2.x: 63 logische Laufwerke sind verfügbar. (Buchstaben sind ausschließlich benutzt für
  860.                      die ersten 26 Laufwerke. Falls mehr als 26 logische Laufwerke benutzt
  861.                      werden, weitere Laufwerksbuchstaben sind andere ASCII Zeichen wie
  862.                      {,], etc.
  863.              Für DOS 3.x, 4.x: 26 logische Laufwerke sind verfügbar, A-Z.
  864.           5) TOS:$ 0E SETDRV. Ein 16-bit Parameter mit drivespec wird an TOS übergeben.
  865.              Beim beenden, enthält D0 die Nummer des Laufwerk das vorher aktiv war.
  866.              (Nicht die Anzahl der vorhandenen Laufwerke)
  867.           6) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  868.  
  869.  
  870. Funktion 0Fh öffnen Datei (FCB)
  871.          durchsucht das aktuell Inhaltsverzeichnis nach dem spezifizierten Dateiname und
  872.          plaziert die wichtigen Information in den Dateikontrollblock.
  873. Aufruf   AH 0Fh
  874.          DS:DX Zeiger zu einem ungeöffneten FCB
  875. Rückgabe AL 00h falls Datei gefunden
  876.             0FFh falls Datei nicht gefunden
  877. Anmerkung 1) falls der Laufwerkscode war 0 (aktuelles Laufwerk) wird er geändert zu dem eigentlich
  878.              Laufwerk das benutzt wird (1=A:, 2=B:, 3=C:, etc). Dies erlaubt das ändern des aktuellen Laufwerks
  879.              ohne störend auf nachträglich Transaktionen dieser Datei zu wirken.
  880.           2) das aktuelle Blockfeld (FCB Bytes C-D, Offset 0Ch) wird auf Null eingestellt.
  881.           3) die Satzlänge mit der gearbeitet wird (FCB Bytes E-F, Offset 0Eh) wird
  882.              auf den vom System vorgegebenen Wert von 80h gesetzt. Die Größe der Datei (Offset 10h) und
  883.              das Datum (Offset 14h) sind eingestellt auf die Information die dem Hauptverzeichnis
  884.              entnommen wurden. Der Standardwert für die Satzlänge (FCB Bytes E-F) kann geändert werden,
  885.              oder einstellen der wahlfreien Satzlänge und/oder des aktuellen Satzfeldes.
  886.              Diese Aktionen können erst nach dem öffnen durchgeführt werden, aber
  887.              bevor irgendeine Festplattentransaktionen durchgeführt wird.
  888.           4) mit DOS 3.x die Datei wird im Kompatibilitätsmodus geöffnet. (Netzwerk)
  889.           5) Microsoft empfiehlt die Benutzung des Funktionsaufruf 3Dh dafür.
  890.           6) dieses Aufruf wird auch von dem APPEND Befehl in DOS 3.2+ benutzt
  891.           7) bevor eine sequentielle Festplatteoperation auf die Datei durchgeführt wird,
  892.              muß das aktuelle Satzfeld (Offset 20h) eingestellt werden. Bevor ein wahlfreier
  893.              Zugriff auf die Datei durchgeführt wird, muß das entsprechende Feld
  894.              (Offset 21h) gesetzt werden. Falls die vorgegeben Satzlänge von 128 Bytes
  895.              falsch ist, muß diese auf den richtigen Wert eingestellt werden.
  896.  
  897.  
  898. Funktion 10h Datei schließen (FCB)
  899.          schließt eine Datei nach dem schreiben
  900. Aufruf   AH 10h
  901.          DS:DX Zeiger zu einem geöffneten FCB
  902. Rückgabe AL 00h falls die Datei gefunden und geschlossen wurde
  903.             0FFh falls die Datei im aktuellen Inhaltsverzeichnis nicht gefunden wurde
  904. Anmerkung 1) dieses Funktionsaufruf muß bei einer offenen Datei die nicht mehr benötigt wird gemacht werden,
  905.              und nach einem Schreibzugriff, damit sichergestellt ist, das alle Information im Inhaltsverzeichnis
  906.              aktualisiert werden.
  907.           2) falls die Datei im aktuellen Inhaltsverzeichnis nicht gefunden wird,
  908.              wird in AL 0FFh zurückgegeben, weil vermutet wird, das die Diskette gewechselt wurde.
  909.              Wie verlautet, ist diese Fehlerangabe nicht absolut verläßlich mit der DOS
  910.              Version 2.x.
  911.           3) falls gefunden, wird das Inhaltsverzeichnis aktualisiert, die Puffer werden
  912.              übertragen, und AL gibt 00h zurück.
  913.           4) da ist ein spitzfindiger aber gefährlicher Fehler in dieser Funktion. Falls eine
  914.              Datei geschlossen wird, die vorher nicht mit einem erfolgreichen OPEN Befehl
  915.              geöffnet wurde, wird die Dateilänge auf Null gesetzt, und die Cluster die
  916.              der Datei zugewiesen waren werden freigegeben.
  917.  
  918.  
  919. Funktion 11h suche ersten Directory-Eintrag (FCB)
  920.          durchsucht das aktuelle Laufwerk & Inhaltsverzeichnis nach dem ersten Auftreten eines Dateinamens
  921. Aufruf   AH 11h
  922.          DS:DX Zeiger zur Adresse vom FCB
  923. Rückgabe AL 00h Suche war erfolgreich
  924.             0FFh Datei nicht gefunden
  925. Anmerkung 1) der FCB kann die Wildcard Zeichen ? unter DOS 2.x, und ? oder *
  926.              unter 3.x und 4.x enthalten.
  927.           2) der original FCB an DS:DX enthält die Information um die Suche mit
  928.              der Funktion 12h fortzusetzen, und sollte nicht modifiziert werden.
  929.           3) falls eine Datei gefunden wurde, gibt AL 00h zurück und die Adressen an der
  930.              Adresse des Diskettentransferbereichs wird wie folgt eingestellt:
  931.           a) falls der FCB zur Durchsuchung ein erweiterter FCB war, dann wird das erste
  932.              Byte an dem Diskettentransferbereich auf 0FFh gesetzt, gefolgt von 5 Bytes
  933.              mit Nullen, dann das Attributbyte von der Datei, dann die benutzte
  934.              Laufwerksnummer (1=A, 2=B, etc) und dann die 32 Bytes von dem Inhaltsverzeichnis
  935.              Eintrag. So, die Adresse des Diskettentransferbereiches enthält ein zulässig ungeöffneten FCB
  936.              mit der derselbe suchen schreibt zu wie der suchen FCB.
  937.           b) falls der FCB zur Durchsuchung ein normaler FCB war, dann enthält das erste
  938.              Byte die benutzte Laufwerksnummer (1= A, 2= B, etc), und die nächsten 32
  939.              Bytes enthalten den Inhaltsverzeichnis Eintrag. So, der Diskettentransferbereich
  940.              enthält einen zulässigen ungeöffneten normalen FCB.
  941.           4) falls ein erweiterter FCB benutzt wird, gilt folgendes Suchmuster:
  942.           a) falls das FCB Attributbyte Null ist, ausschließlich normale Dateieinträge werden
  943.              gefunden. Einträge fürs Datenträgeretikett, Unterverzeichnisse, versteckte oder System-
  944.              dateien, werden nicht zurückgegeben.
  945.           b) falls das Attributbyte auf versteckte oder Systemdateien, oder
  946.              Unterverzeichniseinträge eingestellt ist, es wird als inklusives Suchen erachtet.
  947.              Alle normal Dateieinträge plus alle übereinstimmenden Einträge mit den spezifizierten
  948.              Attributen werden zurückgegeben. Um alle Directory-Einträge außer dem Datenträgeretikett
  949.              zu erhalten, das Attributbyte kann auf versteckt + system + Inhaltsverzeichnis
  950.              (alle 3 Bits an) eingestellt werden.
  951.           c) falls der Attributfeld für dein Datenträgeretikett eingestellt ist, es wird als
  952.              exklusives Suchen behandelt, und ausschließlich der Datenträgeretikett Eintrag wird zurückgegeben.
  953.           5) dies Aufruf wird auch von dem APPEND Befehl in DOS 3.2+ benutzt
  954.  
  955.  
  956. Funktion 12h suchen nächsten Directory-Eintrag (FCB)
  957.          suchen nach den Auftreten von weiteren Dateinamen
  958. Aufruf  AH 12h
  959.         DS:DX Zeiger zum ungeöffneten FCB spezifiziert durch dir vorhergehende Suchen
  960.               ersten (11h) oder suchen nächsten (12h)
  961. Rückgabe AL 00h falls weitere Dateinamen gefunden wurden
  962.             0FFh falls keine weitere Dateinamen gefunden wurden
  963. Anmerkung 1) nachdem ein übereinstimmendenr Dateiname mit dem Funktionsaufruf 11h gefunden wurde,
  964.              Funktion 12h kann dazu benutzt werden, den nächsten übereinstimmenden Dateinamen
  965.              zu suchen, nach einer unklaren Anforderung. Für DOS 2.x, ?  sind in dem Dateiname
  966.              zugelassen. Für DOS 3.x und 4.x, globale (*) Dateinamen Zeichen sind zugelassen.
  967.           2) die DTA enthält Information von der vorhergehende ersten Suche oder der nächsten Suche.
  968.           3) Es sollten keine Transaktionen auf dem Laufwerk mit diesem FCB zwischen einer vorhergehenden
  969.              Funktion 11h oder 12h Aufruf und diesem erfolgen. "nicht dokumentierte" Felder im FCB
  970.              werden benutzt, um notwendige Information für die Dauer der Suchen zu speichern, und
  971.              einige Laufwerks Transaktionen können diese Bereiche überschreiben.
  972.           4) falls die Datei gefunden wurde, ein FCB ist erstellt an der DTA Adresse und
  973.              darauf eingestellt diese zu öffnen oder zu löschen.
  974.  
  975.  
  976. Funktion 13h Datei löschen (FCB)
  977.          löscht die im FCB spezifizierte Datei vom aktuellen Inhaltsverzeichnis
  978. Aufruf   AH 13h
  979.          DS:DX Zeiger zu der Adresse des FCBs
  980. Rückgabe AL 00h Datei wurde gelöscht
  981.             0FFh falls Datei nicht gefunden wurde oder nur Lesezugriff möglich ist
  982. Anmerkung 1) alle übereinstimmenden aktuellen Inhaltsverzeichniseinträge werden gelöscht. Das globale Dateiname
  983.              Zeichen "?" ist in dem Dateiname zugelassen.
  984.           2) löschen keine Dateien mit dem Nur Lesen(read-only) Attribut
  985.           3) schließt offene Dateien bevor diese gelöscht werden.
  986.           4) verlangt Netzwerk Zugriffsrechte.
  987.           5) dieses Aufruf unterstützt Wildcards und ist sehr schnell. Der "neue" Aufruf
  988.              41h ist vermutlich dazu da, diesen zu ersetzen, seit es Unterver-
  989.              zeichnisse gibt. Leider unterstützt die fn 41h keine Wildcards.
  990.  
  991.  
  992. Funktion 14h Datei sequentiell lesen (FCB)
  993.          liest Datensätze sequentiell vom Laufwerk via FCB
  994. Aufruf   AH 14h
  995.          DS:DX Zeiger zu einem geöffneten FCB
  996. Rückgabe AL 00h erfolgreich gelesen
  997.             01h Dateiende (keine Daten gelesen)
  998.             02h DTA Bereich zu klein für die spezifizierte Satzlänge
  999.                 oder Segment Überlauf
  1000.             03h Datensatz teilweise gelesen, EOF gefunden
  1001. Anmerkung 1) die Satzlänge wird auf den Wert vom Offset 0Eh in dem FCB gesetzt.
  1002.           2) der Satz zeigt auf den aktuellen Block (Offset 0Ch) und das aktuelle
  1003.              Satzfeld (Offset 20h) ist geladen an die DTA, dann der aktuelle Block
  1004.              und das aktuelle Satzfeld werden erhöht.
  1005.           3) der Satz wird in den Speicher gelesen an die aktuelle DTA Adresse wie spezifiziert
  1006.              von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
  1007.              die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
  1008.              der Fehlercode in AL wird auf 02h eingestellt.
  1009.           4) falls ein teilweiser Satz am Ende der Datei gelesen wurde, wird die angeforderte
  1010.              Größe mit Nullen aufgefüllt und der Fehlercode in AL wird auf 03h eingestellt.
  1011.  
  1012.  
  1013. Funktion 15h Datei sequentiell schreiben (FCB)
  1014.          schreibt Sätze spezifiziert durch den FCB sequentiell zum Laufwerk
  1015. Aufruf   AH 15h
  1016.          DS:DX Zeiger zur Adresse vom FCB
  1017. Rückgabe AL 00h erfolgreiches schreiben
  1018.             01h Disk voll, schreiben wurde annulliert
  1019.             02h Diskettentransferbereich (DTA) zu klein oder Segment eingewickelt
  1020. Anmerkung 1) die zu schreibenden Daten wedren dem Diskettentransferbereich entnommen.
  1021.           2) die Satzlänge ist auf den Wert vom Offset 0Eh in dem FCB eingestellt.
  1022.           3) diese Funktion kann nicht schreiben, wenn die Dateien mit dem Nur-Lesen Attribut versehen ist.
  1023.           4) der Satz zeigt auf den aktuellen Block (Offset 0Ch) und das aktuelle
  1024.              Satzfeld (Offset 20h) ist geladen an die DTA, dann der aktuelle Block
  1025.              und das aktuelle Satzfeld werden erhöht.
  1026.           5) falls die Satzlänge kleiner als ein Sektor ist, die Daten in der DTA in einem Puffer
  1027.              geschrieben; der Puffer wird auf die Platte geschrieben, sobald er einen voll Sektor
  1028.              von Daten enthält, die Datei geschlossen wird, oder ein Zurücksetzen der Platte (Funktion 0Dh) ist
  1029.              erfolgt.
  1030.           3) der Satz wird an die aktuelle DTA Adresse geschrieben, wie spezifiziert
  1031.              von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
  1032.              die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
  1033.              der Fehlercode in AL wird auf 02h eingestellt.
  1034.  
  1035.  
  1036. Funktion 16h erstellen einer Datei (FCB)
  1037.          suchen und öffnen oder erstellen Inhaltsverzeichnis Eintrag für Datei
  1038. Aufruf   AH 16h
  1039.          DS:DX Zeiger zu einem FCB
  1040. Rückgabe AL 00h erfolgreiche Erstellung
  1041.             0FFh kein Platz im Inhaltsverzeichnis
  1042. Anmerkung 1) falls ein vorhandener Inhaltsverzeichnis Eintrag gefunden wird, die Datei
  1043.              wird auf die Länge von Null Bytes zurückgesetzt.
  1044.           2) falls keine Datei vorhanden ist, wird eine erstellt.
  1045.           3) dieser Funktionsaufrufe benutzt Funktion 0Fh (öffnen Datei) nach dem erstellen oder
  1046.              zurücksetzen einer Datei.
  1047.           4) ein versteckte Datei kann erstellt werden, indem ein erweiterter FCB mit dem
  1048.              Attribut Byte (Offset FCB-1) 2 benutzt wird.
  1049.  
  1050.  
  1051. Funktion 17h umbenennen Datei spezifiziert durch den Dateikontrollblock (FCB)
  1052.          Umbenennen einer Datei im aktuellen Inhaltsverzeichnis
  1053. Aufruf   AH 17h
  1054.          DS:DX Zeiger zu einem FCB (siehe Anmerkung 4)
  1055. Rückgabe AL 00h erfolgreiche Umbenennung
  1056.             0FFh Datei nicht gefunden oder Dateiname existiert schon
  1057. Anmerkung 1) diese Funktion kann nicht Nur-lesen Dateien umbenennen.
  1058.           2) der "?" wildcard kann benutzt werden.
  1059.           3) falls der "?" wildcard beim zweiten Dateinamen benutzt wird, der entsprechende
  1060.              Buchstabe in dem Dateinamen von dem Inhaltsverzeichnis Eintrag wird nicht geändert.
  1061.           4) ein besonders modifizierter FCB wird benutzt. Es muß eine Laufwerksnummer haben, Dateiname,
  1062.              und Erweiterung in der normalen Position, und ein zweiter Dateiname startend 6
  1063.              Bytes nach der ersten, an Offset 11h. Dies ist normalerweise ein "reservierter"
  1064.              Bereich.
  1065.           5) die zwei Dateien dürfen nicht denselben Namen haben.
  1066.           6) FCB enthält den neuen Name beginnend an Byte 17h.
  1067.  
  1068.  
  1069. Funktion 18h DOS intern
  1070.          * Unbekannt - wie verlautet nicht benutzt
  1071. Aufruf   AH 18h
  1072. Rückgabe AL 00h
  1073.  
  1074.  
  1075. Funktion 19h holen aktuelles Laufwerk
  1076.          Rückgabe Bestimmung desn aktuellen Laufwerks
  1077. Aufruf   AH 19h
  1078. Rückgabe AL aktuelles Laufwerk (0=A, 1=B, etc.)
  1079. Anmerkung 1) einige andere DOS Funktionen benutzen 0 für aktuelles, 1=A, 2=B, etc.
  1080.           2) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1081.           3) TOS:$ 19 aktuelles Laufwerk. D0 gibt die Nummer des Laufwerks zurück (0=A:)
  1082.  
  1083.  
  1084. Funktion 1Ah einstellen Diskettentransferbereich Adresse (DTA)
  1085.          setzt DTA Adresse auf die spezifizierte Adresse in DS:DX
  1086. Aufruf   AH 1Ah
  1087.          DS:DX Zeiger zum DTA Puffer
  1088. Rückgabe keine
  1089. Anmerkung 1) der vorgegeben DTA ist 128 Bytes an Offset 80h in der PSP. Der eigene DTA kann
  1090.              auf irgendeine Größe und Stelle gesetzt werden. Der DTA sollte groß genug sein
  1091.              um den größtmöglich zu schreibenden Satz zu enthalten.
  1092.           2) Register sind unverändert.
  1093.           3) keine Fehlercodes werden zurückgegeben.
  1094.           4) Der Diskettentransferbereich kann nicht vom Ende des Segments zu dem
  1095.              Anfang gewickelt werden oder ein Überlauf in ein anderes Segment.
  1096.           5) DOS benutzt den DTA für Datei I/O. (siehe Abschnitt 6)
  1097.           6) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1098.           7) TOS:$ 1A einstellen Diskettentransferbereich Adresse. Setzt ein 44-byte Puffer
  1099.              für Laufwerks Transaktionen.
  1100.  
  1101.  
  1102. Funktion 1Bh hole Information zur Dateibelegungstabelle vom aktuellen Laufwerk
  1103.          gibt zurück Information von der FAT auf dem aktuellen Laufwerk
  1104. Aufruf   AH 1Bh
  1105. Rückgabe AL Anzahl Sektoren pro Belegungseinheit (Cluster)
  1106.          CX Anzahl Bytes pro Sektor
  1107.          DS:BX Adresse von dem Mediumbeschreibungsbyte des aktuellen Laufwerkes
  1108.          DX Anzahl Belegungseinheiten (Clusters) für vorgegeben Laufwerk
  1109. Anmerkung 1) sichern DS bevor diese Funktion aufgerufen wird.
  1110.           2) dieser Aufruf gab in DOS 1.x ein Zeiger zu der FAT zurück. Ab DOS 2.00
  1111.              wird ausschließlich ein Zeiger zu de ID Byte der Tabelle zurückgegeben.
  1112.           3) IBM empfiehlt Programmierern dies Aufruf zu vermeiden und dafür int 25h zu benutzen .
  1113.           4) Offset DS:[BX-1] ist das schmutzig Byte für der Tabelle: 00=sauber, 01=schmutzig.
  1114.           5) DOS 2.x+ und darüber halten die FAT nicht im RAM. Diese Funktion sollte nicht
  1115.              benutzt werden, um auf die FAT zuzugreifen. Funktion 36 ist bevorzugt.
  1116.  
  1117.   
  1118. Funktion 1Ch holen Dateibelegungstabelle Information für angegebenes Gerät
  1119.          gibt zurück Information des spezifizierten Laufwerks
  1120. Aufruf   AH 1Ch
  1121.          DL Laufwerksnummer (1=A, 2=B, 3=C, etc)
  1122. Rückgabe AL Anzahl Sektoren pro Belegungseinheit (Cluster)
  1123.             0FFh ungültige Laufwerks Angabe
  1124.          DS:BX Adresse vom Mediumbeschreibungsbyte für Laufwerk in DL
  1125.          CX Sektorgröße in Bytes
  1126.          DX Anzahl Belegungseinheiten (Clusters)
  1127. Anmerkung 1) setze DL= 0 für aktuelles Laufwerk.
  1128.           2) sichern DS bevor diese Funktion aufgerufen wird.
  1129.           3) Format des media-descriptor Bytes:
  1130.              Bits:  0      0 (gelöscht) nicht doppelseitig
  1131.                            1 (gesetzt) doppelseitig
  1132.                     1      0 (gelöscht) nicht 8 Sektor
  1133.                            1 (gesetzt) 8 Sektor
  1134.                     2      0 (gelöscht) kein auswechselbares Gerät
  1135.                            1 (gesetzt) auswechselbar Gerät
  1136.                     3-7    immer gesetzt (1)
  1137.           4) dieser Aufruf gab in DOS 1.x ein Zeiger zu der FAT zurück. Ab DOS 2.00
  1138.              wird ausschließlich ein Zeiger zu de ID Byte der Tabelle zurückgegeben.
  1139.           5) IBM empfiehlt Programmierern dies Aufruf zu vermeiden und dafür int 25h zu benutzen .
  1140.           6) diese Funktion liest ausschließlich den BPB und ist sehr schnell.
  1141.  
  1142.  
  1143. Funktion 1Dh nicht dokumentiert von Microsoft
  1144.          * Unbekannt - wie verlautet nicht benutzt
  1145. Aufruf   AH 1Dh
  1146. Rückgabe AL 00h
  1147.  
  1148.  
  1149. Funktion 1Eh nicht dokumentiert von Microsoft
  1150.          * Unbekannt - wie verlautet nicht benutzt
  1151. Aufruf   AH 1Eh
  1152. Rückgabe AL 00h
  1153. Anmerkung tut scheinbar nichts.
  1154.  
  1155.  
  1156. Funktion 1Fh holen aktuellen Laufwerksparameterblock
  1157.          * dasselbe wie Funktionsaufruf 32h (unterhalb), außer daß auf die Tabelle
  1158.            des aktuellen Laufwerks zugegriffen wird
  1159. Aufruf   AH 1Fh
  1160.          andere Register Unbekannt
  1161. Rückgabe AL 00h kein Fehler
  1162.                 0FFh Fehler 
  1163.          DS:BX Zeiger zu DOS Laufwerksparameterblock für vorgegebenes Laufwerk.
  1164. Anmerkung für DOS 2, 3, 4.x, dies ruft nur die Funktion 32h (nicht dokumentiert,
  1165.           lesen DOS Laufwerksblock) mit DL=0 auf.
  1166.  
  1167.  
  1168. Funktion 20h Unbekannt
  1169.          * intern - tut nichts?
  1170. Aufruf   AH 20h
  1171. Rückgabe AL 00h
  1172.  
  1173.  
  1174. Funktion 21h wahlfreies lesen einer Datei spezifiziert durch den Dateikontrollblock (FCB)
  1175.          liest ein Satz wie spezifiziert in dem FCB von der aktuellen DTA.
  1176. Aufruf   AH 21h
  1177.          DS:DX Adresse von dem geöffneten FCB
  1178. Rückgabe AL 00h erfolgreich gelesen
  1179.             01h Dateiende (EOF), keine Daten gelesen
  1180.             02h DTA für die spezifizierte Satzlänge zu klein
  1181.             03h Dateiende (EOF), teilweise Daten gelesen
  1182. Anmerkung 1) der aktuelle Block und das aktuelle Satzfeld sind eingestellt um zusammenzupassen mit dem
  1183.              wahlfreien Aufzeichnungsfeld. Der Satz der durch diese Felder adressiert ist, wird dann gelesen
  1184.              in den Speicher an der aktuellen Diskettentransferbereich Adresse.
  1185.           2) der aktuelle Dateizeiger wird durch diese Funktion nicht erhöht.
  1186.           3) falls der DTA größer als die Datei ist, wird die Datei bis zu der angeforderten
  1187.              Länge mit Nullen aufgefüllt.
  1188.  
  1189.  
  1190. Funktion 22h wahlfreies schreiben einer Datei spezifiziert durch den FCB (FCB)
  1191.          schreibt ein Satz wie spezifiziert in dem FCB zu der aktuellen DTA
  1192. Aufruf   AH 22h
  1193.          DS:DX Adresse von dem geöffneten FCB
  1194. Rückgabe AL 00h erfolgreich geschrieben
  1195.             01h Platte voll; keine Daten geschrieben (schreiben wurde annulliert)
  1196.             02h DTA für die spezifizierte Satzlänge zu klein (schreiben wurde annulliert)
  1197. Anmerkung 1) diese Funktion kann nicht schreiben, wenn die Dateien mit dem Nur-Lesen Attribut versehen ist.
  1198.           2) der Satz zeigt auf den aktuellen Block (Offset 0Ch) und das aktuelle
  1199.              Satzfeld (Offset 20h) ist an die DTA geladen, danach werden der aktuelle
  1200.              Block und das aktuelle Satzfeld erhöht.
  1201.           3) falls die Satzlänge kleiner als ein Sektor ist, die Daten in der DTA in einem Puffer
  1202.              geschrieben; der Puffer wird auf die Platte geschrieben, sobald er einen voll Sektor
  1203.              von Daten enthält, die Datei geschlossen wird, oder ein Zurücksetzen der Platte (Funktion 0Dh) ist
  1204.              erfolgt.
  1205.           4) der aktuelle Dateizeiger wird durch diese Funktion nicht erhöht.
  1206.           5) der Satz wird an die aktuelle DTA Adresse geschrieben, wie spezifiziert
  1207.              von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
  1208.              die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
  1209.              der Fehlercode in AL wird auf 02h eingestellt.
  1210.  
  1211.  
  1212. Funktion 23h holen Dateigröße (FCB)
  1213.          durchsucht das aktuelle Unterverzeichnis nach einer Datei, und gibt deren Größe im FCB zurück
  1214. Aufruf   AH 23h
  1215.          DS:DX Adresse von einem ungeöffneten FCB
  1216. Rückgabe AL 00h Datei gefunden
  1217.              0FFh Datei nicht gefunden
  1218. Anmerkung 1) Satzlängenfeld (Offset 0Eh) muß eingetragen werden, bevor diese Funktion aufgerufen wird
  1219.           2) das Inhaltsverzeichnis wird nach dem angegebenen Dateinamen durchsucht. Falls ein
  1220.              Eintrag gefunden wird, wird das wahlfreie Aufzeichnungsfeld auf die Anzahl Sätze
  1221.              in der Datei eingestellt. Falls der Wert von dem Satzlängenfeld ein nicht gerader Divisor
  1222.              der Dateigröße ist, wird der Wert im relativen Aufzeichnungsfeld aufgerundet.
  1223.              Dies ergibt dann einen größeren Wert als die eigentliche Dateigröße
  1224.           3) dies Aufruf wird von dem APPEND Befehl in DOS 3.2+ benutzt
  1225.  
  1226.   
  1227. Funktion 24h einstellen Relatives Aufzeichnungsfeld (FCB)
  1228.          einstellen wahlfreies Aufzeichnungsfeld spezifiziert durch den FCB
  1229. Aufruf   AH 24h
  1230.          DS:DX Adresse von einem geöffneten FCB
  1231. Rückgabe wahlfreies Aufzeichnungsfeld vom FCB ist auf denselben Wert wie der aktuelle Block
  1232.          und der aktuelle Satz eingestellt.
  1233. Anmerkung 1) diese Funktion muß aufgerufen werden, bevor ein wahlfreier Dateizugriff erfolgt.
  1234.           2) das relative Aufzeichnungsfeld vom FCB (Offset 21h) ist auf denselben Wert wie der
  1235.              aktuelle Block (Offset 0Ch) und der aktuelle Satz (Offset 20h) eingestellt.
  1236.           3) keine Fehlercodes werden zurückgegeben.
  1237.           4) der FCB muß geöffnet sein.
  1238.  
  1239.  
  1240. Funktion 25h einstellen Interrupt Vektor 
  1241.          Setzt die Adresse von dem Code den DOS immer dann durchführt, wenn der spezifizierte
  1242.          Interrupt aufgerufen wird.
  1243. Aufruf   AH 25h
  1244.          AL Interrupt Nummer
  1245.          DS:DX Adresse vom neuen Interrupt Vektor
  1246. Rückgabe keine
  1247. Anmerkung 1) Register sind unverändert. 
  1248.           3) keine Fehlercodes werden zurückgegeben.
  1249.           3) die Interruptvektor-Tabelle für die spezifizierte Interrupt Nummer in AL
  1250.              ist auf die Adresse in DS:DX eingestellt. Benutze Funktion 35h (holen Vektor)
  1251.              um die Inhalte von dem Interrupt Vektor zu holen und es für die spätere Benutzung zu sichern.
  1252.           4) sobald die Funktion 25 zum einstellen eines Interrupt Vektors benutzt wird, DOS 3.2 zeigt
  1253.              nicht auf der eigentlichen angeforderten Interrupt Vektor. Dafür, es
  1254.              setzt den Interrupt Vektor auf eine Routine im DOS, welche folgendes tut:
  1255.                 1. Sichern alten Stapelzeiger
  1256.                 2. Umschalten zum neuen Stapelzeiger von DOS's Stapel Pool
  1257.                 3. Aufrufen der neuen Routine
  1258.                 4. Umspeichern alten Stapelzeiger
  1259.              der Zweck hierfür war, einen möglichen Stapelüberlauf zu verhindern, sobald
  1260.              eine groß Anzahl von Interrupts aktiv ist. IBM war betroffen (dies war eine
  1261.              IBM Änderung, nicht Microsoft) daß auf ein Token Ring Netzwerk wo
  1262.              eine Gruppe von Interrupts in Betrieb genommen werden, und das den Anwendungen
  1263.              nicht mehr viel Platz auf dem Stapel übrig blieb.
  1264.           5) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1265.  
  1266.  
  1267. Funktion 26h erstellen neues Programm Segment Prefix (PSP)
  1268.          diese Funktion kopiert das aktuell Program-Segment Prefix zu einer neuen Speicher-
  1269.          stelle für die Erstellung eines neuen Programms oder Overlay. Wenn das neue PSP
  1270.          erstellt ist, ein DOS Programm kann eine DOS COM oder Overlay Datei an die Speicher-
  1271.          stelle unmittelbar nach dem neuen PSP lesen und an dem die Ablaufsteuerung übergeben.
  1272. Aufruf   AH 26h
  1273.          DX Segmentadresse für das neue PSP
  1274. Rückgabe aktuelles PSP ist zu dem spezifizierten Segment kopiert
  1275. Anmerkung 1) Microsoft empfiehlt die Benutzung der neuen DOS Funktion 4Bh (EXEC) dafür.
  1276.           2) der vollständige 100h Bereich an Stelle 0 in dem aktuellen PSP wird an die
  1277.              Stelle 0 von dem neuen PSP kopiert. Der Information an Stelle 6 zur Speichergröße
  1278.              wird im neuen Segment aktualisiert und die aktuelle Beendigungs, ctrl-break,
  1279.              und kritische Fehler Adressen von den Interruptvektor-Tabelle Einträgen für
  1280.              ints 22h, 23h, und 24 sind gesichert in dem neu Programm Segment beginnend ab
  1281.              0Ah. Sie werden wiederhergetellt von diesem Bereich sobald das Programm beendet wird.
  1282.           3) der PSP Aufbau ist in Abschnitt 6 beschrieben.
  1283.                
  1284.  
  1285. Funktion 27h wahlfreies lesen eines Blockes der Datei spezifiziert durch den FCB
  1286.          ähnlich wie 21h (wahlfreies lesen), außer es erlaubt mehrere Sätze zu lesen.
  1287. Aufruf   AH 27h
  1288.          CX Anzahl der zu lesenden Sätze
  1289.          DS:DX Adresse von einem geöffneten FCB
  1290. Rückgabe AL 00h erfolgreich gelesen
  1291.             01h Dateiende, keine Daten gelesen
  1292.             02h DTA zu klein für die spezifizierte Satzlänge (lesen annulliert)
  1293.             03h Dateiende
  1294.          CX Anzahl der gelesenden Sätze (beinhaltet auch Teilsätze falls AL= 03h)
  1295. Anmerkung 1) die Satzlänge ist in dem FCB spezifiziert. Die Funktion aktualisiert den aktuellen
  1296.              Block (Offset 0Ch) und das aktuelle Satzfeld (Offset 20h) zu dem nächsten
  1297.              nicht gelesenen Satz.
  1298.           2) falls CX beim Aufruf 0 enthält, ist dies ein NOP.
  1299.           3) falls der DTA ist größer als die Datei, die Datei wird mit Nullen auf
  1300.              die angeforderte Länge aufgefüllt.
  1301.           4) diese Funktion nimmt an daß das FCB Satzlängenfeld (0Eh) korrekt eingestellt ist.
  1302.              Falls es nicht vom Anwender eingestellt wird, gilt der vorgegebene Wert 128 Bytes.
  1303.           3) der Satz wird in den Speicher gelesen an die aktuelle DTA Adresse wie spezifiziert
  1304.              von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
  1305.              die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
  1306.              der Fehlercode in AL wird auf 02h eingestellt.
  1307.  
  1308.  
  1309. Funktion 28h wahlfreies schreiben eines Blockes zur Datei spezifiziert durch den FCB
  1310.          ähnlich wie 27h (wahlfreies lesen), außer es erlaubt mehrere Sätze zu schreiben.
  1311. Aufruf   AH 28h
  1312.          CX Anzahl zu schreibender Sätze
  1313.          DS:DX Adresse von einem geöffneten FCB
  1314. Rückgabe AL 00h erfolgreich geschrieben
  1315.             01h Platte voll, keine Daten geschrieben
  1316.             02h DTA zu klein für die spezifizierte Satzlänge (schreiben annulliert)
  1317.          CX Anzahl geschriebener Sätze
  1318. Anmerkung 1) die Satzlänge ist in dem FCB spezifiziert.
  1319.           2) diese Funktion belegt Platten Cluster wie verlangt.
  1320.           3) diese Funktion nimmt an daß das FCB Satzlängenfeld (0Eh) korrekt eingestellt ist.
  1321.              Falls es nicht vom Anwender eingestellt wird, gilt der vorgegebene Wert 128 Bytes.
  1322.           4) die Satzlänge ist in dem FCB spezifiziert. Die Funktion aktualisiert den aktuellen
  1323.              Block (Offset 0Ch) und das aktuelle Satzfeld (Offset 20h) zu dem nächsten
  1324.              nicht gelesenen Satz.
  1325.           5) der Satz wird an die aktuelle DTA Adresse geschrieben, wie spezifiziert
  1326.              von dem letzten Aufruf der Funktion 1Ah. Falls der Größe von dem Satz und
  1327.              die Stelle von dem DTA sind so, daß ein Segment Überlauf oder Umlauf auftritt,
  1328.              der Fehlercode in AL wird auf 02h eingestellt.
  1329.           6) falls CX beim Auruf 0 enthält, werden keine Sätze geschrieben, aber die Dateigröße des FCB's
  1330.              Eintrags (Offset 1Ch) wird auf die Größe gesetzt, die im relativen
  1331.              Satzfeld (Offset 21h) des FCB's spezifiziert ist.
  1332.  
  1333.  
  1334. Funktion 29h analysieren der Befehlszeile für Dateiname 
  1335.          überträgt einen Dateinamen einer ASCII-Zeichenkette in die Felder von einem Dateikontrollblock
  1336. Aufruf   AH 29h
  1337.          DS:SI Zeiger zu der zu analysierenden Zeichenkette
  1338.          ES:DI Zeiger zum Speicherpuffer zum ausfüllen mit dem ungeöffneten FCB
  1339.          AL    Bit Maske zur Steuerung der Syntaxanalyse
  1340.             Bit 0   0 Syntaxanalyse hält an, falls ein Datei Seperator gefunden wird
  1341.                     1 veranlässt die Funktion den Dateinamen auf zu entfernenden führende Zeichen wie
  1342.                       Leerzeichen zu untersuchen. Andernfalls wird angenommen, das der Dateiname
  1343.                       mit dem ersten Byte beginnt
  1344.                 1   0 Laufwerksnummer im FCB wird auf Standardlaufwerk (0) gesetzt, falls
  1345.                       die Zeichenkette keine Laufwerksnummer enthält
  1346.                     1 Laufwerksnummer im FCB wird nicht geändert
  1347.                 2   0 Dateiname im FCB wird auf 8 Leerzeichen gesetzt, wenn kein Dateiname in der
  1348.                       Zeichenkette ist
  1349.                     1 Dateiname im FCB wird nicht geändert falls die Zeichenkette kein
  1350.                       Dateiname enthält
  1351.                 3   0 Erweiterung im FCB wird auf 3 Leerzeichen gesetzt, wenn keine Erweiterung in
  1352.                       der Zeichenkette ist
  1353.                     1 Erweiterung bleibt unverändert
  1354.                 4-7   muß Null sein
  1355. Rückgabe AL 00h keine Wildcards im Name oder in der Erweiterung
  1356.             01h Wildcards im Name oder in der Erweiterung vorhanden
  1357.             0FFh ungültiges Laufwerk specifiert
  1358.          DS:SI Zeiger zu dem ersten Byte nach der Zeichenkette
  1359.          ES:DI Zeiger zum Puffer mit der dem ungeöffneten FCB gefüllt ist
  1360. Anmerkung 1) falls das * Wildcard Zeichen in der Befehlszeile gefunden wurde, diese Funktion
  1361.              ersetzt nachträglich alle Zeichen in dem FCB mit Fragezeichen.
  1362.           2) diese Funktion benutzt die Zeichen als Dateiname Seperatoren
  1363.              DOS 1      : ; . , + / [ ] = " TAB SPACE
  1364.              DOS 2,3,4  : ; . , + = TAB SPACE
  1365.           3) diese Funktion benutzt die Zeichen
  1366.              : ; . , + < > | / \ [ ] = " TAB SPACE
  1367.              oder irgendein Steuerzeichen wie ein zulässigen Dateiname Seperator
  1368.           4) ein Dateiname kann kein Dateiname Endezeichen enthalten. Falls eins enthalten ist,
  1369.              wird die Abarbeitung angehalten. Der Handle Funktionen erlauben die Benutzung
  1370.              von einigen dieser Zeichen.
  1371.           5) wenn kein zulässig Dateiname in der Befehlszeile gefunden wurde, ES:DI+1 zeigt
  1372.              auf ein Leerzeichen (ASCII 32).
  1373.           6) dies Funktion kann nicht mit Dateispezifikationen welche einen Pfad enthalten benutzt werden.
  1374.           7) Syntaxanalyse ist in der Form D:Dateiname.EXT. Falls eine Datei gefunden wird, ein entsprechender
  1375.              ungeöffneter FCB wird an ES:DI zusammengesetzt.
  1376.  
  1377.  
  1378. Funktion 2Ah holen Datum 
  1379.          gibt den Tag der Woche, Jahr, Monat, und Datum zurück
  1380. Aufruf   AH 2Ah
  1381. Rückgabe CX Jahr (1980-2099)
  1382.          DH Monat (1-12)
  1383.          DL Tag (1-31)
  1384.          AL Wochentag   00h Sonntag
  1385.                         01h Montag 
  1386.                         02h Dienstag 
  1387.                         03h Mittwoch 
  1388.                         04h Donnerstag 
  1389.                         05h Freitag 
  1390.                         06h Samstag 
  1391. Anmerkung 1) Datum ist automatisch verstellt, falls der Taktgeber den nächsten Tag erreicht,
  1392.              und übernimmt das übersprungende Jahr und die Anzahl der Tage in jedem Monat in seinen Zähler.
  1393.           2) obgleich DOS kein ungültiges Datum einstellen kann, kann es eines lesen, etwa
  1394.              91/32/80, etc.
  1395.           3) DesQview akzeptiert auch CX=4445h und DX=5351h, z.b. 'DESQ' als zulässig.
  1396.           4) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1397.           5) DOS nimmt CH=0 (Mitternacht) als eine zulässige Uhrzeit an, aber falls eine Datei die Uhrzeit
  1398.              hat, wird die Uhrzeit mit dem DIR Befehl nicht angezeigt. (außer DR-DOS)
  1399.           6) TOS:$ 2A holen Datum.
  1400.  
  1401.  
  1402. Funktion 2Bh einstellen Datum 
  1403.          einstellen aktuelles Systemdatum
  1404. Aufruf   AH 2Bh
  1405.          CX Jahr (1980-2099)
  1406.          DH Monat (1-12)
  1407.          DL Tag (1-31)
  1408. Rückgabe AL 00h kein Fehler (zulässiges Datum)
  1409.             0FFh ungültiges Datum spezifiziert
  1410. Anmerkung 1) beim Aufruf muß CX:DX ein zulässiges Datum in demselben Format wie
  1411.              es von dem Funktionsaufruf 2Ah zurückgegeben wird enthalten.
  1412.           2) DOS 3.3+ setzt auch den CMOS Taktgeber.
  1413.           3) unter der DesQview System Shell, dies ist die DV_GET_VERSION Kontrolle.
  1414.              Aufruf AH 2Bh
  1415.                     AL 01h DesQ Aufruf
  1416.                     CX 4445h 'DE'                (ungültiges Datum benutzt
  1417.                     DX 5351h 'SQ'                 für DesQview ID)
  1418.            Rückgabe AH übergeordnete Versionsnummer
  1419.                     AL Nebenversion
  1420.                     AX 0FFh DesQ nicht installiert (DOS Fehlercode)
  1421.           4) für DESQview 2.00+, prüfen ob installiert
  1422.              Aufruf AH 2Bh
  1423.                     AL Unterfunktion (DV v2.00+)
  1424.                        01h holen Version
  1425.            Rückgabe BX Version (BH=Haupt..., BL=Neben...)
  1426.            Anmerkung frühere Kopien von v2.00 geben 0002h zurück.
  1427.                        02h holen Schattenpuffer Information, und Start Schattierung
  1428.            Rückgabe BH Zeilen in Schattenpuffer
  1429.                     BL Spalten in Schattenpuffer
  1430.                     DX Segment vom Schattenpuffer
  1431.                        04h holen Schattenpuffer Information
  1432.            Rückgabe BH Zeilen in Schattenpuffer
  1433.                     BL Spalten in Schattenpuffer
  1434.                     DX Segment vom Schattenpuffer
  1435.                        05h Schattierung anhalten
  1436.                     CX 4445h ('DE')
  1437.                     DX 5351h ('SQ')
  1438.            Rückgabe AL 0FFh falls DESQview nicht installiert ist
  1439.            Anmerkung in DESQview v1.x, gab es keine Unterfunktionen; dieser Aufruf
  1440.                      identifizierte ausschließlich ob DESQview geladen war oder nicht.
  1441.           5) PC-Tools PC-Cache 5.1 (Multisoft Pufferspeicher) Installationsüberprüfung.
  1442.            Aufruf   CX 4358h ('CX')
  1443.            Rückgabe AL 00h installiert
  1444.                     CX 6378h
  1445.                     0FFh nicht installiert
  1446.           6) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1447.           7) TOS: holen Datum.
  1448.  
  1449.  
  1450. Funktion 2Ch holen Uhrzeit 
  1451.          holen aktuelle Systemzeit von Taktgeber$ Treiber
  1452. Aufruf   AH 2Ch
  1453. Rückgabe CH Stunden (0-23)
  1454.          CL Minuten (0-59)
  1455.          DH Sekunden (0-59)
  1456.          DL hunderstel Sekunden (0-99)
  1457. Anmerkung 1) Uhrzeit wird alle 5/100 Sekunde aktualisiert.
  1458.           2) das Datum und die Uhrzeit sind im binären Format.
  1459.           3) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1460.           4) TOS: holen Uhrzeit.
  1461.  
  1462.  
  1463. Funktion 2Dh einstellen Uhrzeit 
  1464.          einstellen aktuelle Systemzeit
  1465. Aufruf   AH 2Dh
  1466.          CH Stunden (0-23)
  1467.          CL Minuten (0-59)
  1468.          DH Sekunden (0-59)
  1469.          DL hunderstel Sekunden (0-99)
  1470. Rückgabe AL 00h wenn kein Fehler
  1471.             0FFh falls eine fehlerhafte Zeit angegeben wurde
  1472. Anmerkung 1) DOS 3.3+ setzt auch den CMOS Taktgeber.
  1473.           2) CX und DX muß eine zulässige Uhrzeit im binären Format enthalten.
  1474.           3) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1475.           4) TOS: einstellen Uhrzeit.
  1476.  
  1477.  
  1478. Funktion 2Eh einschalten/ausschalten VERIFY Schalter
  1479.          einstellen VERIFY Kennzeichen
  1480. Aufruf   AH 2Eh
  1481.          AL 00 um VERIFY auszuschalten (vorgegeben)
  1482.             01 um VERIFY einzuschalten
  1483. Rückgabe keine
  1484. Anmerkung 1) dies ist der Aufruf der durch den DOS VERIFY Befehl ausgeführt wird.
  1485.           2) Die Einstellung des VERIFY Schalters kann durch den Anruf 54h ermittelt werden.
  1486.           3) dieser Aufruf wird nicht auf Netzwerklaufwerke unterstützt.
  1487.           4) DOS überprüft dies Kennzeichen bei jedem Zugriff auf ein Laufwerk.
  1488.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1489.  
  1490.  
  1491. Funktion 2Fh holen Adresse des Daten-Übertragungsbereichs (DTA)
  1492.          gibt die aktuelle des Daten-Übertragungsbereichs zurück, die von allen DOS Dateizugriffen benutzt wird
  1493. Aufruf   AH 2Fh
  1494. Rückgabe ES:BX Adresse des DTA
  1495. Anmerkung 1) die DTA wird durch den Funktionsaufruf 1Ah eingestellt
  1496.           2) vorgegebene DTA Adresse ist ein 128 Byte Puffer an Offset 80h in dem
  1497.              Programm-Segment Prefix des Programmes.
  1498.           3) siehe Abschnitt 6 für eine Beschreibung der DTA.
  1499.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1500.           5) TOS: holen DTA. Gibt die Segmentadresse des aktuellen DTA in D0 zurück.
  1501.  
  1502.  
  1503.  
  1504. Funktion 30h DOS Versionsnummer feststellen
  1505.          Rückgabe DOS Version und/oder Anwender Nummer
  1506. Aufruf   AH 30h
  1507. Rückgabe AH Nebenversionsnummer (das heißt, DOS 2. 10 gibt zurück AX= 0A02h)
  1508.          AL übergeordnete Versionsnummer Nummer (0 für DOS 1.x)
  1509.          BH OEM ID Nummer
  1510.             00h IBM
  1511.             16h DEC (andere sind nicht bekannt)
  1512.          BL:CX 24-bit serielle Anwendernummer
  1513. Anmerkung 1) falls AL eine Null als übergeordnete Versionsnummer zurückgibt, ist die DOS Version
  1514.              kleiner 1.28 für MSDOS und kleiner 2.00 für PCDOS.
  1515.           2) IBM PC-DOS gibt immer 0000h in BX und CX zurück, wie auch DR-DOS.
  1516.           3) OS/2 v1.0 Kompatibilitätsbox gibt ein Wert von 10 für die übergeordnete Versionsnummer zurück.
  1517.           4) durch die OS/2 Rückgabe und der Tatsache daß einige europäische Versionen von DOS
  1518.              eine höhere Versionsnummer als IBM's DOS zurückgeben, sollten Dienstprogramme welche
  1519.              die DOS Version kontrollieren nicht abbrechen, falls eine höhere Version als die verlangte
  1520.              erkannt wird, wenn nicht wesentliche Probleme bekannt sind.
  1521.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1522.           6) TOS:$ 30 holen Versionsnummer. Gibt GEMDOS Versionsnummer in D0 zurück.
  1523.           7) unter PC-MOS/386, falls AX=BX=CX=DX, wird die PC-MOS/386 Versionsnummer
  1524.              zurückgegeben. Falls nicht alle Register denselben Wert haben, wird eine MSDOS
  1525.              gleichwertige Versionsnummer zurückgegeben. Die PC-MOS/386 Versionsnummer
  1526.              ist immer unterschiedlich von der MSDOS Versionsnummer.
  1527.  
  1528.  
  1529. Funktion 31h beenden Programm und warten speicherresistent        (KEEP)
  1530. Aufruf   AH 31h
  1531.          AL Ende-Code
  1532.          DX benötigter Programmspeicher in 16 Byte Paragraphen
  1533. Rückgabe AX Rückgabe Code (herausholen durch Funktion 4Dh)
  1534. Anmerkung 1) Durch die Anwendung geöffnete Dateien werden nicht geschlossen sobald dieser Aufruf gemacht wird.
  1535.           2) Der Speicher kann besser genutzt werden, indem die beinhaltede Kopie von
  1536.              dem DOS Environment freigegeben wird, bevor das Programm beendent wird. Dies kann gemacht werden,
  1537.              imdem ES mit dem Segment das in 2Ch von dem PSP enthalten ist geladen wird, und der
  1538.              Funktionsaufruf 49h (freigeben belegten Speicher) durchgeführt wird.
  1539.           3) im Gegensatz zu int 27h, können mit diesem Aufruf mehr als 64k speicherresistent gemacht werden.
  1540.           4) TOS:$ 31 anhalten Prozess.
  1541.  
  1542.  
  1543. Funktion 32h lesen DOS Festplattenparameterblock
  1544.          * erhalten Zeiger zu dem Laufwerksparameterblock für ein Laufwerk
  1545. Aufruf   AH 32h
  1546.          DL Laufwerk (0=aktuelles, 1=A:, etc.).
  1547. Rücklauf AL 00h falls Laufwerk zulässig ist
  1548.             0FFh falls Laufwerk nicht zulässig ist
  1549.          DS:BX Zeiger zur DOS Laufwerksparametertabelle. Format des Blocks:
  1550.                ┌────────┬──────┬────────────────────────────────────────────────
  1551.                │ Bytes  │ Typ  │                           Wert
  1552.                ├────────┼──────┼────────────────────────────────────────────────
  1553.                │ 00h    │ Byte │ Laufwerk: 0=A:, 1=B:, etc.
  1554.                │ 01h    │ Byte │ Einheit im Gerätetreiber (0, 1, 2, etc.)
  1555.                │ 02h-03h│ Wort │ Bytes pro Sektor
  1556.                │ 04h    │ Byte │ größte Sektornummer im Cluster (eins kleiner als
  1557.                │        │      │ Sektoren pro Cluster)
  1558.                │ 05h    │ Byte │ Cluster zu Sektor umschalten (das heißt., wie weit nach links
  1559.                │        │      │ schalten der Bytes/Sektor um die Bytes/Cluster zu holen)
  1560.                │ 06h-07h│ Wort │ Anzahl reservierter (Start) Sektoren
  1561.                │ 08h    │ Byte │ Anzahl Kopien von der FAT
  1562.                │ 09h-0Ah│ Wort │ Anzahl Hauptverzeichniseinträge
  1563.                │ 0Bh-0Ch│ Wort │ 1. Sektor # der Daten. Sollte derselbe sein wie # von
  1564.                │        │      │ Sektoren/Spur.
  1565.                │ 0Dh-0Eh│ Wort │ größtmöglichste Clusternummer (eins mehr als
  1566.                │        │      │ die Anzahl der Daten Cluster)
  1567.                ├────────┴──────┼────────────────────────────────────────────────
  1568.                │  nur DOS 2.x  │
  1569.                ├────────┬──────┼────────────────────────────────────────────────
  1570.                │ 0Fh    │ Byte │ Anzahl Sektoren für eine Kopie von der FAT
  1571.                │ 10h-11h│ Wort │ Nummer des ersten Sektors im Hauptverzeichnis
  1572.                │ 12h-15h│ dwort│ Adresse vom Beginn des Gerätetreibers für dieses Laufwerk
  1573.                │        │      │ (Anfang vom Gerätetreiber)
  1574.                │ 16h    │ Byte │ Mediumbeschreibungsbyte für dies Laufwerk
  1575.                │ 17h    │ Byte │ 0FFh zeigt an, das der Block neu gebildet werden muß
  1576.                │ 18h-1Bh│ dwort│ Adresse vom nächsten DOS Festplattenblock (0FFFFh bedeutet
  1577.                │        │      │ der letzte in der Kette)
  1578.                │ 1Ch    │ Wort │ Anfangscluster vom aktuellen Verzeichnis (0=Hauptverzeichnis)
  1579.                │ 1Eh    │64byts│ ASCII Zeichenkette des Pfads im aktuellen Inhaltsverzeichnis
  1580.                ├────────┴──────┼────────────────────────────────────────────────
  1581.                │     DOS 3.x   │
  1582.                ├────────┬──────┼────────────────────────────────────────────────
  1583.                │ 0Fh    │ Byte │ Anzahl Sektoren in einer FAT Kopie
  1584.                │ 10h    │ Wort │ erster Sektor vom Hauptverzeichnis
  1585.                │ 12h    │ dwort│ Adresse vom Gerätetreiber für dieses Laufwerk
  1586.                │ 16h    │ Byte │ Mediumbeschreibungsbyte für das Medium
  1587.                │ 17h    │ Byte │ 0FFh= Block muß neu gebildet werden, 00h zeigt
  1588.                │        │      │ einen Blockzugriff an
  1589.                │ 18h    │ dwort│ Adresse vom nächsten Geräteblock, Offset= 0FFFFh
  1590.                │        │      │ bedeutet der letzte
  1591.                │ 1Ch    │ Wort │ Cluster ab dem nach einem freien Platz gesucht wird,
  1592.                │        │      │ sobald ein Schreibzugriff erfolgt
  1593.                │ 1Eh    │ Wort │ Anzahl freier Cluster auf Laufwerk, 0FFFFh
  1594.                │        │      │ Unbekannt?
  1595.                ├────────┴──────┼────────────────────────────────────────────────
  1596.                │     DOS 4.0   │
  1597.                ├────────┬──────┼────────────────────────────────────────────────
  1598.                │ 0Fh    │ Wort │ Anzahl Sektoren in einer FAT Kopie
  1599.                │ 11h    │ Wort │ erste Sektor vom Hauptverzeichnis
  1600.                │ 13h    │ dwort│ Adresse vom Gerätetreiber für dieses Laufwerk
  1601.                │ 17h    │ Byte │ Mediumbeschreibungsbyte für das Medium
  1602.                │ 18h    │ Byte │ 0FFh= Block muß neu gebildet werden, 00h zeigt
  1603.                │        │      │ einen Blockzugriff an
  1604.                │ 19h    │ dwort│ Adresse vom nächsten Geräteblock, Offset= 0FFFFh
  1605.                │        │      │ bedeutet der letzte
  1606.                │ 1Dh    │ Wort │ Cluster ab dem nach einem freien Platz gesucht wird,
  1607.                │        │      │ sobald ein Schreibzugriff erfolgt
  1608.                │ 1Fh    │ Wort │ Anzahl freier Cluster auf Laufwerk, 0FFFFh=
  1609.                │        │      │ Unbekannt?
  1610.                └────────┴──────┴────────────────────────────────────────────────
  1611. Anmerkung 1) benutze [BX+0D] um die Anzahl der Cluster zu ermitteln (>1000h, 16-bit FAT; falls nicht, 12-bit
  1612.              (genau teilend Zeile ist wahrscheinlich ein wenig unterhalb 1000h zu erlauben für
  1613.               schlechte Sektoren, EOF Anzeiger, etc.)
  1614.           2) kurzer Artikel von C. Petzold, im PC Magazine Vol.5, no. 8.
  1615.           3) einige Information von dem Artikel "Finding Disk Parameters" in der Mai
  1616.              1986 Ausgabe vom PC Tech Journal.
  1617.           4) dieser Aufruf wird größtenteils in der OS/2 Kompatibilitätsbox unterstützt.
  1618.              Das dwort an 12h gibt in der Kompatibilitätsbox nicht die Adresse von dem
  1619.              nächsten Gerätetreiber zurück.
  1620.           5) benutzt von CHKDSK.
  1621.  
  1622.  
  1623. Funktion 33h Control-Break Kontrolle
  1624.          holen oder einstellen Control-Break Kontrolle an CON
  1625. Aufruf   AH 33h
  1626.          AL 00h zum testen der Break Kontrolle
  1627.                 01h zum einstellen der Break Kontrolle
  1628.                     DL 00h ausschalten Break Kontrolle
  1629.                        01h einschalten Break Kontrolle
  1630.                 02h intern, aufgerufen durch PRINT.COM (DOS 3.1)
  1631.                 03h Unbekannt
  1632.                 04h Unbekannt - DOS 4.0's CPSW Befehl in CONFIG.SYS ruft
  1633.                     diese Funktion auf
  1634.                 05h holen Startlaufwerk (DOS 4.0+)
  1635. Rückgabe DL Break Einstellung (AL= 00h)
  1636.             00h wenn Break = aus
  1637.             01h wenn Break = an
  1638.             (falls AL= 05h) Startlaufwerk, A=1, B=2, etc)
  1639.          AL 0FFh Fehler
  1640. Anmerkung dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1641.  
  1642.  
  1643. Funktion 34h Rückgabe INDOS Kennzeichen
  1644.          gibt zurück ES:BX zeigt zum kritischen Bereichskennzeichen, Byte deutet darauf hin, ob
  1645.          es sicher ist, einen Interrupt aufzurufen.
  1646. Aufruf   AH 34h
  1647. Rückgabe ES:BX zeigt zu 1-byte DOS "kritischen Bereichskennzeichen"
  1648. Anmerkung 1) falls dieses Byte 0 ist, ist es sicher DOS zu unterbrechen.
  1649.           2) das Byte an ES:BX+1 wird von dem Print Programm für denselben Zweck benutzt,
  1650.              deshalb ist es wahrscheinlich sicherer, das Wort an ES:BX zu kontrollieren.
  1651.           3) wie verlautet, die Prüfung des DOS 2.10 Codes in diesem Bereich zeigt an, daß das
  1652.              Byte welches dem "kritischen Bereichskennzeichen" unmittelbar folgt, 00h sein muß, um
  1653.              PRINT.COM zu erlauben eine Interrupt aufzurufen. Für DOS 3.0 und 3.1 (außer
  1654.              Compaq DOS 3.0), das Byte vor dem "kritischen Bereichskennzeichen" muß Null sein;
  1655.              für Compaq DOS 3.0, das Byte 01AAh bevor es Null sein muß.
  1656.           4) in DOS 3.10 wurde dies wie verlautet auf ein Wort Wert geändert, mit vorangehendem Byte.
  1657.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1658.           6) Gordon Letwin von Microsoft diskutierte diesen Aufruf bei ARPAnet 1984. Er
  1659.              spezifiziert:
  1660.              a) dieser wird in keiner Version von DOS unterstützt
  1661.              b) er arbeitet gewöhnlich unter DOS 2, kann aber unter Umständen
  1662.                 auch nicht funktionieren (allgemeines Dementi, weiß nichts von dem wesentlichen
  1663.                 Umstand)
  1664.              c) normal er arbeitet nicht unter DOS 3 und DOS 3.1; das DOS ist
  1665.                 beträchlich neu strukturiert und dieses Kennzeichen erhält weitere
  1666.                 Bedeutungen und Verwendungen
  1667.              d) er versagt katastrophal unter DOS 4.0 und weiteren.
  1668.         ** offensichtlich ist diese Information falsch, denn der Aufruf arbeitet genau
  1669.            bis DOS 3.3. Microsoft glasnost? Er arbeitet auch offensichtlich im US
  1670.            DOS 4.0, aber es ist wahrscheinlich das Letwin auf das zurückgriff was bis jetzt als OS/2
  1671.            bekannt war. Niemand berichtete irgendwas von zusätzlichen Bedeutungen und wird deshalb weiter
  1672.            benutzt, obgleich Vereinbarungen von Bits in dem In_DOS Byte fähig sind, dieses
  1673.            für mehrere Bedeutungen zu benutzen.
  1674.         7) dieser Aufruf ist in einigen ZENITH MS-DOS technischen Referenzen dokumentiert .
  1675.            Es wurde auch von Microsoft in deren Vorschlag zur TSR Standarddokumentation diskutiert,
  1676.            obgleich IBM diesen Aufruf nicht zu unterstützt und somit als
  1677.            "nicht dokumentiert" erachtet werden muß.
  1678.         8) PC Magazine berichtet es funktioniert verläßlich unter den DOS Versionen 2.0
  1679.            bis 3.3. Chris Dunford (von CED Ruhm) und ein Anzahl anonyme
  1680.            Botschaften in der BBSs weisen darauf hin, das es nicht immer so verläßlich ist.
  1681.  
  1682.  
  1683. Funktion 35h holen Vektor 
  1684.          holen Interrupt Vektor
  1685. Aufruf   AH 35h
  1686.          AL Interrupt Nummer (hexadezimal)
  1687. Rückgabe ES:BX Adresse des Interrupt Vektors
  1688. Anmerkung 1) benutze Funktionsaufruf 25h um die Interrupt Vektoren einzustellen.
  1689.           2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1690.  
  1691.  
  1692. Funktion 36h feststellen freien Platz auf dem Laufwerk
  1693.          holen Information für das spezifizierte Laufwerk
  1694. Aufruf   AH 36h
  1695.          DL Laufwerksnummer (0= aktuelles, 1=A:, 2=B:, etc)
  1696. Rückgabe AX Anzahl Sektoren pro Cluster
  1697.             0FFFFh spezifiziertes Laufwerk in DL ist ungültig
  1698.          BX Anzahl verfügbarer Cluster
  1699.          CX Bytes pro Sektor
  1700.          DX Cluster pro Laufwerk
  1701. Anmerkung 1) multipliziere AX * CX * BX um den freien Platz auf dem Laufwerk zu bekommen.
  1702.           2) multipliziere AX * CX * DX um die gesamte Kapazität des Laufwerk zu erhalten. .
  1703.           3) Die Funktion 36h gibt nach einem ASSIGN Befehleine eine falschen Wert zurück. Vor
  1704.              dem ASSIGN, enthält das DX Register 0943h als Rückgabewert, welches der freie Platz
  1705.              in Cluster auf der HC Diskette ist. Nach dem ASSIGN, selbst mit keinem
  1706.              Parameter, wird 0901h im DX Register zurückgegeben; dies ist ein falscher
  1707.              Wert. Ähnlich Ergebnisse treten mit DD Disketten auf einem PC-XT oder einem PC-AT auf.
  1708.              Dies tritt ausschließlich auf, wenn das Laufwerk nicht das aktuelle Laufwerk ist.
  1709.              Die Ergebnisse sind richtig, sobald das Laufwerk das aktuelle Laufwerk ist. Deshalb sollte
  1710.              das gewünschte Laufwerk zum aktuellen Laufwerk erklärt werden, bevor
  1711.              diese Funktion aufgerufen wird.
  1712.           4) diese Funktion ersetzt die Funktionen 1Bh und 1Ch.
  1713.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1714.           6) TOS:$ 36 holen freien Platz auf dem Laufwerk.
  1715.  
  1716.  
  1717. Funktion 37h SWITCHAR/AVAILDEV
  1718.          * holen/einstellen Option Markierungszeichen (ist gewöhnlich "/"), und Gerätetyp
  1719. Aufruf   AH 37h
  1720.          AL 00h lesen Schalterzeichen (gibt aktuelles Zeichen in DL zurück)
  1721.             01h einstellen Zeichen in DL als neues Schalterzeichen
  1722.   (DOS 2.x) 02h lesen Geräteverfügbarkeit (wie bei Funktion AL= 3 gesetzt) in DL.
  1723.                 Ein 0 bedeutet daß Geräte einen Zugang beim Datei I/O Aufruf durch
  1724.                 /dev/Gerät erhalten müssen. Ein anderer Wert als Null bedeutet,
  1725.                 daß auf die Geräte von jeder Ebene des Inhaltsverzeichnisbaumes zugegriffen
  1726.                 werden kann. (z.B., PRN ist der Drucker und nicht die Datei PRN).
  1727.                 AL= 2 um Kennzeichen in DL zurückzugeben, AL= 3 zum einstellen von DL (0=gesetzt,
  1728.                 1= nicht gesetzt).
  1729.   (DOS 2.x) 03h holen Geräteverfügbarkeit, wobei:
  1730.                 DL 00h /dev/ muß dem Gerätenamen vorausgehen
  1731.                    01h /dev/ braucht dem Gerätenamen nicht vorausgehen
  1732. Rückgabe DL Schalterzeichen (falls AL= 0 oder 1)
  1733.             Geräteverfügbarkeits Kennzeichen (falls AL=2 oder 3)
  1734.          AL 0FFh der Wert in AL war nicht im Bereich von 0-3
  1735. Anmerkung 1) Die Funktionen 2 & 3 sind nicht für DOS 3.x implementiert.
  1736.           2) es ist dokumentiert auf Seite 4.324 von der MS-DOS (Version 2) Programmer's
  1737.              Utility Pack (Microsoft - veröffentlicht durch ZENITH).
  1738.           3) arbeitet mit allen Versionen von IBM PC-DOS von 2.0 bis 3.3.1.
  1739.           4) das SWITCHAR ist das Zeichen welches in DOS Befehlen als "Schalter" benutzt
  1740.              wird (Standard ist '/', wie in "DIR /P"). '-' ist weitverbreitet um ein System
  1741.              anzufertigen, welches mehr dem UNIX ähnelt; falls das SWITCHAR ein anderes als '/' ist,
  1742.              dann kann '/' an Stelle von '\' für Pfadnamen benutzt werden.
  1743.           5) wird von XCOPY, PKARC, LIST ignoriert.
  1744.           6) SWITCHAR kann nicht auf ein Zeichen eingestellt werden, das in irgendeinem Dateiname benutzt wird.
  1745.           7) in DOS 3.x kann das "AVAILDEV" Byte mit Unterfunktion 02h gelesen werden,
  1746.              aber es wird immer 0FFh zurückgegeben, selbst wenn es mit der Unterfunktion 0 oder
  1747.              03h geändert wurde.
  1748.           8) AVAILDEV= 0 bedeutet, daß Geräte in einem scheinbaren Unterverzeichnis
  1749.              "\dev" (ähnlich dem UNIX's /dev/*) beschrieben werden müssen; ein Dateiname "PRN.DAT"
  1750.              kann erstellt und manipuliert werden wie jede andere auch. Falls AVAILDEV!= 0
  1751.              dann werden Gerätenamen irgendwo erkannt, (dies ist der Standard):
  1752.              "PRN.DAT" ist sinnverwandt mit "PRN:".
  1753.           9) diese Funktionen wird, wie verlautet nicht in derselben Art und Weise
  1754.              in den verschiedenartige Implementationen von DOS unterstützt.
  1755.          10) benutzt von CHKDSK, BASIC, und DEBUG in DOS 3.3.
  1756.          11) SWITCHAR wird nicht in der OS/2 Kompatibilitätsbox unterstützt.
  1757.  
  1758.  
  1759. Funktion 38h Rückgabe Landesspezifische Information
  1760.              (PCDOS 2.0, 2.1, MSDOS 2.00 ausschließlich)
  1761. Aufruf   AH 38h
  1762.          AL Funktionscode (muß 0 sein in DOS 2.x)
  1763.          DS:DX Zeiger zum 32 Byte Speicherpuffer für die zurückgegebenen Information
  1764. Rückgabe CF gesetzt wenn Fehler
  1765.             AX Fehlercode (02h)
  1766.          BX Ländercode
  1767.          DS:DX Zeiger zum Puffer der die Landesinformation enthält:
  1768.          Bytes 00h,01h Datum/Zeitformat
  1769.                        0000h USA Standard H:M:S M-D-Y
  1770.                        0001h Europa Standard H:M:S D/M/Y
  1771.                        0002h Japan Standard H:M:S D:M:Y
  1772.                02h ASCIIZ Zeichenkette Währungszeichen
  1773.                03h Byte mit 0
  1774.                04h ASCIIZ Zeichenkette Tausender Trennung
  1775.                05h Byte mit 0
  1776.                06h ASCIIZ Zeichenkette dezimale Trennung
  1777.                07h Byte mit 0
  1778.       24 Bytes 08h-1Fh reserviert
  1779.  
  1780.  
  1781. Funktion 38h holen Landesspezifische Information 
  1782.              (PCDOS 3.x+, MSDOS 2.01+)
  1783. Aufruf   AH 38h
  1784.          AL Funktionscode
  1785.             00h holen aktuelle Länderinformation
  1786.             01h-0FEh Ländercode mit Codes kleiner 255 für die die Information
  1787.                      geholt werden sollen
  1788.             0FFh holen Länderiformation für Staaten mit ein Code größer als 255
  1789.                  BX 16 Bit Ländercode falls AL= 0FFh
  1790.          DS:DX Zeiger zum 32 Byte Speicherpuffer für die zurückgegebenen Information
  1791.                  DX 0FFFFh falls Einstellung Ländercode eher als bekommend Information
  1792. Rückgabe CF 0 (gelöscht) Funktion vervollständigt
  1793.             1 (gesetzt) Fehler
  1794.                         AX Fehlercode 
  1795.                            02h ungültiger Ländercode (keine Tabelle dafür vorhanden)
  1796.          (falls DX<> 0FFFFh)
  1797.          BX Ländercode (gewöhnlich die international Vorwahlnummer)
  1798.          DS:DX Zeiger zum Datenpuffer des Landes
  1799.          Bytes 0,1     Datum/Zeitformat
  1800.                        0 USA Standard H:M:S M/D/Y
  1801.                        1 Europa Standard H:M:S D/M/Y
  1802.                        2 Japan Standard H:M:S D:M:Y
  1803.          Bytes 02h-06h ASCIIZ Währungszeichen
  1804.          Byte  07h     ASCIIZ Tausender Trennung
  1805.          Byte  08h     Byte mit 0
  1806.          Byte  09h     ASCIIZ dezimale Trennung
  1807.          Byte  0Ah     Byte mit 0
  1808.          Byte  0Bh     ASCIIZ Datum Trennung
  1809.          Byte  0Ch     Byte mt 0
  1810.          Byte  0Dh     ASCIIZ Uhrzeit Trennung
  1811.          Byte  0Eh     Byte mit 0
  1812.          Byte  0Fh     Byte Währungsformat
  1813.                        Bit 0 0 falls Währungszeichen vor dem Wert
  1814.                              1 falls Währungszeichen nach dem Wert
  1815.                            1 0 kein Leerzeichen zwischen dem Wert und dem Währungszeichen
  1816.                              1 1 Leerzeichen zwischen dem Wert und dem Währungszeichen
  1817.                            2 gesetzt falls Währungszeichen das Dezimalkomma ersetzt
  1818.                          3-7 nicht definiert bei Microsoft 
  1819.          Byte 10h      Genauigkeit
  1820.                            (Anzahl Stellen nach dem Dezimalkomma)
  1821.          Byte 11h      Byte Zeitformat
  1822.                        Bit 0 0 12-Stunden-Uhr
  1823.                              1 24-Stunden-Uhr
  1824.                         1-7 Unbekannt, wahrscheinlich nicht benutzt
  1825.          Bytes 12h-15h Adresse einer Routine (FAR Prozedur, AL= Kleinbuchstabe) die Kleinbuchstaben
  1826.                        ind Großbuchstaben umwandelt
  1827.                         Aufruf AL ASCII Code des Zeichen das in einen Großbuchstaben
  1828.                                   konvertiert werden soll
  1829.                         Rückgabe AL ASCII Code von dem Großbuchstaben
  1830.           Byte 16h data-list Trennungszeichen
  1831.           Byte 17h 0
  1832.           Bytes 18h-21h 5 Wörter reserviert 
  1833. Anmerkung 1) sobald eine alternativer Tastatur Handler aufgerufen wird, wird die Tastaturroutine
  1834.              an den niedrigsten Bereich des verfügbaren Anwenderspeichers geladen.
  1835.              Der BIOS Interrupt Vektor der Tastaturroutine wird zu dem Speicherbereich
  1836.              umgeleitet wo die neue Routine haust. Jede neue Routine benötigt 1.6K
  1837.              vom Speicher und hat Suchtabellen, sodas eindeutige Werte für jede Sprache
  1838.              zurückgegeben werden. (KEYBxx in der DOS Liste)
  1839.              Sobald der Tastatur Interrupt Vektor von der DOS Tastatur Routine geändert ist,
  1840.              erledigt die neue Routine alle Aufrufe, solange bis das System wieder
  1841.              auf das US Format mit der ctrl-alt-F1 Tastenkombination umgeschaltet wird. Dies
  1842.              ändert aber nicht den Interrupt Vektor auf die BIOS Adresse; es wird
  1843.              nur die Tabelle übergangen und die ROM Adressen werden benutzt.
  1844.           2) Ctrl-Alt-F1 ändert ausschließlich Systeme mit US ROMS auf die US Anordnung.
  1845.              Einige Systeme wedren ohne US Tastaturroutinen im ROM ausgeliefert
  1846.           3) Zeichenumwandlung: das Segment/Offset von einer FAR Prozedur die die
  1847.              länderspezifische klein-zu-groß Buchstaben Umwandlung von ASCII Zeichen ab 80h bis
  1848.              0FFh vornimmt. Diese wird mit dem entsprechenden Zeichen in AL aufgerufen. Falls ein
  1849.              Großbuchstabe für den Buchstabe vorhanden ist, wird dieser in AL zurückgegeben,
  1850.              andernfalls gibt es hierfür keinen oder wurde die Funktion war gerufen mit einem Wert
  1851.              als 80h aufgerufen, bleibt AL unverändert.
  1852.           4) dieser Aufruf ist ab der MS-DOS Version 2.01 voll implementiert. In der
  1853.              Version 2.00 ist dieser vorhanden, jedoch nicht vollständig. ( entsprechend zu Microsoft).
  1854.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1855.  
  1856.  
  1857. Funktion 38h einstellen landesabhängige Information
  1858. Aufruf   AH 38h
  1859.          AL Code Ländercode zum einstellen der Information für Staaten
  1860.                  mit Codes kleiner als 255
  1861.             0FFh einstellen Länderinformation für Staaten mit einem Code
  1862.                  größer als 255
  1863.          BX 16 Bit Ländercode falls AL= 0FFh
  1864.          DX 0FFFFh
  1865. Rückgabe CF gelöscht erfolgreich
  1866.             gesetzt falls Fehler
  1867.                     AX Fehlercode (02h)
  1868. Anmerkung 1) einige Ländercodes sind:
  1869.              061 Australien
  1870.              039 Italien
  1871.              041 die Schweiz
  1872.              033 Frankreich
  1873.              351 Portugal
  1874.              002 Kanada
  1875.              758 mittlerer Osten
  1876.              001 USA
  1877.              972 Israel
  1878.              046 Schweden
  1879.              358 Finnland
  1880.              047 Norwegen
  1881.              032 Belgien
  1882.              003 S.America
  1883.              044 U.K.
  1884.              049 Deutschland
  1885.              034 Spanien
  1886.              045 Dänemark
  1887.              031 Holland
  1888.              081 Japan
  1889.      2) die Dokumentation für COUNTRY= enthält die Informationen welche Codes
  1890.         für die benutzte DOS Version möglich sind.
  1891.  
  1892.   
  1893. Funktion 39h erstellen Unterverzeichnis (MKDIR)
  1894.              erstellen Unterverzeichnis entlang dem Pfad
  1895. Aufruf   AH 39h
  1896.          DS:DX Adresse von ASCIIZ Pfadname Zeichenkette
  1897. Rückgabe Kennzeichen CF 0 erfolgreich
  1898.                         1 Fehler
  1899.                         AX Fehlercode falls vorhanden (03h, 05h)
  1900. Anmerkung 1) die ASCIIZ Zeichenkette enthält das Laufwerk und das Unterverzeichnis.
  1901.           2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
  1902.           3) der Pfadname kann nicht länger als 64 Zeichen sein.
  1903.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1904.           5) die Zeichen [,],=, und " können in Unterverzeichnisnamen nicht benutzt werden.
  1905.           6) TOS:$ 39 MKDIR.
  1906.  
  1907.  
  1908. Funktion 3Ah entfernen Unterverzeichnis (RMDIR)
  1909. Aufruf   AH 3Ah
  1910.          DS:DX Adresse von ASCIIZ Pfadname Zeichenkette
  1911. Rückgabe CF löschen erfolgreich
  1912.             gesetzt AX Fehlercode falls vorhanden (3, 5, 16)
  1913. Anmerkung 1) die ASCIIZ Zeichenkette enthält das Laufwerk und das Unterverzeichnis.
  1914.           2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
  1915.           3) der Pfadname kann nicht länger als 64 Zeichen sein.
  1916.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1917.           5) TOS:$ 3A RMDIR.
  1918.  
  1919.  
  1920. Funktion 3Bh ändern aktuelles Inhaltsverzeichnis (CHDIR)
  1921. Aufruf   AH 3Bh
  1922.          DS:DX Adresse von ASCIIZ Zeichenkette
  1923. Rückgabe Kennzeichen CF 0 erfolgreich
  1924.                         1 Fehler
  1925.          AX Fehlercode falls vorhanden (03h)
  1926. Anmerkung 1) die ASCIIZ Zeichenkette kann das Laufwerk und das Unterverzeichnis enthalten.
  1927.           2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
  1928.           3) der Pfadname kann nicht länger als 64 Zeichen sein.
  1929.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1930.           5) TOS:$ 3B CHDIR.
  1931.  
  1932.  
  1933. Funktion 3Ch erstellen einer Datei (CREAT)
  1934.          erstellen einer Datei mit Handle
  1935. Aufruf   AH 3Ch
  1936.          CX     Byte Dateiattribut
  1937.                 00h  normal
  1938.                 01h  nur lesen
  1939.                 02h  versteckt
  1940.                 03h  System
  1941.         DS:DX Adresse der ASCIIZ Zeichenkette die den Dateiname enthält
  1942. Rückgabe CF 0 erfolgreich Erstellung
  1943.             1 Fehler
  1944.          AX 16 Bit Datei Handle (Dateinummer)
  1945.                oder Fehlercode (03h, 04h, 05h)
  1946. Anmerkung 1) die ASCIIZ Zeichenkette kann das Laufwerk und das Unterverzeichnis enthalten.
  1947.           2) Laufwerk kann irgendein zulässiges Laufwerk sein (nicht unbedingt das aktuelle Laufwerk).
  1948.           3) falls die Datenträgeretikett oder Unterverzeichnis Bits in CX gesetzt sind, werden diese ignoriert
  1949.           4) die Datei wird im lesen/schreiben Modus geöffnet
  1950.           5) falls die Datei nicht existiert, wird sie erstellt. Falls eine mit demselben Namen
  1951.              existiert, wird diese auf die Länge von 0 zurückgesetzt.
  1952.           6) eine gute Praxis ist, das öffnen der Datei mit fn 3Dh zu versuchen, und springen zu einer
  1953.              Fehlerroutine falls erfolgreich, oder erstellen der Datei falls 3Dh erfolglos war. Dieser Weg
  1954.              verhindert, daß eine existierende Datei überschrieben wird.
  1955.           7) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1956.           8) TOS:$ 3C CREAT.
  1957.  
  1958.  
  1959. Funktion 3Dh öffnen einer Datei
  1960.          öffnen einer Datei mit Handle
  1961. Aufruf   AH 3Dh
  1962.          AL     Byte     Zugriffscode
  1963.      (DOS 2.x) Bits 0-2  Datei Attribut
  1964.                          000 nur lesen
  1965.                          001 nur schreiben
  1966.                          010 lesen/schreiben (vorgegeben)
  1967.                 3-7      reserviert, sollte auf Null gesetzt werden
  1968.      (DOS 3.x) Bits 0-2  Datei Attribut
  1969.                          000 nur lesen
  1970.                          001 nur schreiben
  1971.                          010 lesen/schreiben (vorgegeben)
  1972.                 3        reserviert, sollte auf Null gesetzt werden
  1973.                 4-6      File-Sharing-Modus (Netzwerk)
  1974.                          000 Kompatibilitätsmodus (vorgegeben)
  1975.                          001 lesen/schreiben Zugriff erlaubt (exklusiv)
  1976.                          010 Schreibzugriff erlaubt
  1977.                          011 Lesezugriff erlaubt
  1978.                          100 alle Zugriffe erlaubt
  1979.                 7        Handle Kennzeichen
  1980.                          0 Datei kann auch durch das Kind-Programm abgearbeitet werden
  1981.                          1 nur das aktuelle Programm kann die Datei abarbeiten
  1982.          DS:DX Adresse von ASCIIZ Zeichenkette mit Laufwerk/Pfad/Dateiname
  1983. Rückgabe CF gesetzt wenn Fehler
  1984.             AX Fehlercode - MSDOS (01h, 02h, 03h, 04h, 05h, 0Ch)
  1985.                           - DRDOS (02h, 04h, 05h, 0Ch)
  1986.          AX 16 Bit DOS Datei Handle (Dateinummer)
  1987. Anmerkung 1) öffnet irgendeine normale, System, oder versteckte Datei.
  1988.           2) Dateien daß Ende in ein Doppelpunkt werden nicht geöffnet.
  1989.           3) der lese/schreiben Zeiger ist auf das erste Byte der Datei eingestellt und die
  1990.              Satzlänge der Datei ist 1 Byte (der lese/schreiben Zeiger durch den
  1991.              Funktionsaufruf 42h geändert werden). Die zurückgegebene Dateinummer (Handle) muß
  1992.              für alle nachträglichen Ein- und Ausgaben zu der Datei benutzt werden.
  1993.           4) falls die Dateinummer (Handle) von einem übergeordneten Prozess übergeben wurde oder
  1994.              durch DUP oder FORCEDUP verdoppelt wurde, werden alle Sharing und Zugriffseinschränkungen
  1995.              vererbt.
  1996.           5) ein File-Sharing Fehler (Fehler 01h) veranlässt einen int 24h mit dem
  1997.              Fehlercode 02h.
  1998.           6) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  1999.           7) TOS:$ 3D OPEN.
  2000.           8) falls irgendein Prozess eine Datei öffnet, die ein Ebene von Zugriffen bestreitet, alle
  2001.              nachträgliche Versuche die Datei auf der Ebene von Zugriffen zu öffnen versagen.
  2002.           9) irgendein Versuch eine Datei mit einem Sharing Modus zu öffnen, die schon von einem
  2003.              existierenden Prozess benutzt wird, schlägt immer fehl.
  2004.  
  2005.  
  2006. Funktion 3Eh Datei schließen
  2007.          schließen ein Datei und Freigabe des Handles (Dateinummer)
  2008. Aufruf   AH 3Eh
  2009.          BX Dateinummer (erzeugt durch 3Dh)
  2010. Rückgabe Kennzeichen CF gelöscht erfolgreiches schließen
  2011.                         gesetzt Fehler
  2012.          AX Fehlercode falls Fehler (06h)
  2013. Anmerkung 1) sobald ausgeführt, wird die Datei geschlossen, das Inhaltsverzeichnis wird aktualisiert, und alle
  2014.              Puffer der Datei werden gelöscht. Falls die Datei geändert wurde, wird die Uhrzeit
  2015.              und das Datum der Datei auf die aktuelle Uhrzeit abgeändert.
  2016.           2) falls der Aufruf mit dem Handle 00000h erfolgt, wird STDIN (normalerweise die
  2017.              Tastatur) geschlossen.
  2018.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2019.           4) TOS:$ 3E CLOSE.
  2020.           5) in den meisten Versionen von DOS sind ausschließlich 15 Datei Handles für den Anwender
  2021.              verfügbar. Es ist eine gute Praxis, die Dateien zu schließen, sobald diese nicht
  2022.              mehr benutzt werden.
  2023.  
  2024.  
  2025. Funktion 3Fh lesen von einer Datei oder Gerät
  2026.          lesen von Datei mit Handle (Dateinummer)
  2027. Aufruf   AH 3Fh
  2028.          BX Dateinummer
  2029.          CX Anzahl zu lesender Bytes
  2030.          DS:DX Adresse des Puffer
  2031. Rückgabe Kennzeichen CF gelöscht erfolgreich gelesen
  2032.                         gesetzt Fehler
  2033.          AX 00h Zeiger war schon am Dateiende
  2034.                 oder Anzahl der gelesenden Bytes
  2035.                 oder Fehlercode (05h, 06h)
  2036. Anmerkung 1) diese Funktion versucht die Anzahl der Bytes die in CX spezifiziert sind
  2037.              an einen Puffer zu übergeben. Es ist nicht garantiert, daß alle Bytes gelesen werden.
  2038.           2) falls von STDIN (Dateinummer 0000) ausgeführt, kann die Eingabe umgeleitet sein
  2039.           3) falls zum lesen der Tastatur benutzt, wird ausschließlich bis zu dem ersten CR gelesen.
  2040.           4) der Dateizeiger wird erhöht zu dem letzten gelesenen Byte.
  2041.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2042.           6) TOS:$ 3F READ.
  2043.           7) falls AX< CX wurde nur ein Teil des Satzes gelesen.
  2044.  
  2045.  
  2046.  
  2047. Funktion 40h schreiben zu einer Datei oder Gerät
  2048.          schreiben zu Datei mit Handle (Dateinummer)
  2049. Aufruf   AH 40h
  2050.          BX Dateinummer
  2051.          CX Anzahl zu schreibender Bytes
  2052.          DS:DX Adresse des Puffer
  2053. Rückgabe CF gelöscht erfolgreich geschrieben
  2054.             gesetzt Fehler
  2055.          AX Anzahl geschriebener Bytes
  2056.             oder Fehlercode (05h, 06h)
  2057. Anmerkung 1) diese Funktion versucht die Anzahl der Bytes die in CX angegeben sind, von einem Puffer
  2058.              zu einer Datei zu übergeben. Falls CX und AX nach dem schreiben nicht gleich sind,
  2059.              ist ein Fehler aufgetreten; jedoch wird kein Fehlercode für dieses Problem zurückgegeben.
  2060.              Dies ist gewöhnlich dann der Fall, wenn der Datenträger voll ist.
  2061.           2) falls auf STDOUT (Dateinummer 0000) ausgeführt, kann die Ausgabe umgeleitet sein
  2062.           3) zum abschneiden der Datei an der aktuellen Position des Dateizeigers, muß die
  2063.              Anzahl der Bytes in CX auf Null gesetzt werden, bevor der int 21h Anruf erfolgt. Der Zeiger
  2064.              kann zu irgendeiner gewünschten Position mit der Funktion 42h bewegte werden.
  2065.           4) diese Funktion schreibt nicht zu einer Datei oder Gerät mit dem Atrribut Nur-Lesen.
  2066.           5) kann auch an Stelle von fn 09h benutzt werden, um Zeichenketten an CON anzuzeigen. Diese
  2067.              Funktion schreibt nur die Anzahl Bytes in CX und hört dann auf; fn 09h schreibt
  2068.              solange bis ein $ Zeichen gefunden wird.
  2069.           6) dies ist die Funktion, die DOS eigentlich benutzt um zum Bildschirm zu schreiben
  2070.              in DOS 2.x und darüber.
  2071.           7) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2072.           8) TOS:$ 40 WRITE.
  2073.  
  2074.  
  2075. Funktion 41h löschen einer Datei von einem spezifizierten Unterverzeichnis (UNLINK)
  2076. Aufruf   AH 41h
  2077.          DS:DX Zeiger zum ASCIIZ der zu löschenden Datei
  2078. Rückgabe CF gelöscht erfolgreich
  2079.             gesetzt Fehler
  2080.             AX Fehlercode falls Fehler (02h, 05h)
  2081. Anmerkung 1) diese Funktion arbeitet nicht mit Dateien die das Atrribut Nur-Lesen haben.
  2082.           2) Wildcards sind nicht zugelassen.
  2083.           3) zum löschen mehrerer Dateien, Funktion 13h ist schneller.
  2084.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2085.           5) TOS:$ 41 UNLINK.
  2086.  
  2087.  
  2088. Funktion 42h bewegen Dateizeiger lesen/schreiben (LSEEK)
  2089. Aufruf   AH 42h
  2090.          AL Methode Codebyte
  2091.             00h Offset vom Anfang der Datei
  2092.             01h Offset von aktueller Stelle
  2093.             02h Offset vom Dateiende
  2094.          BX Dateinummer
  2095.          CX:DX Offset in Datei (höherwertiges/niederwertiges Wort) in Bytes
  2096. Rückgabe AX:DX neuer Dateizeiger (Segment/Offset)
  2097.          CF gesetzt Fehler
  2098.             AX Fehlercode( 01h, 06h)
  2099.             gelöscht erfolgreiches bewegen
  2100. Anmerkung 1) falls Zeiger am Dateiende ist, kann hieraus die Dateigröße in Bytes erkannt werden.
  2101.           2) der Wert in DX:AX ist der absolute 32 Bit Byte Offset vom Anfang
  2102.              der Datei.
  2103.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2104.           4) TOS:$ 42 LSEEK.
  2105.  
  2106.  
  2107. Funktion 43h holen/einstellen Dateiattribut (CHMOD)
  2108. Aufruf   AH 43h
  2109.          AL 00h holen Dateiattribut
  2110.             01h einstellen Dateiattribut
  2111.          CX einzustellende Dateiattribute
  2112.             Bit 0 nur lesen
  2113.                 1 versteckte Datei
  2114.                 2 Systemdatei
  2115.                 3 Datenträgeretikett
  2116.                 4 Unterverzeichnis
  2117.                 5 verändert seit dem letzten Sichern (Archive Bit)
  2118.                 6, 7 nicht benutzt
  2119.                 8 gemeinsam benutzbar (shareable) (Novell NetWare)
  2120.                 9-F nicht benutzt
  2121.          DS:DX Segment/Offset Zeiger zum vollen ASCIIZ Dateiname
  2122. Rückgabe CF gesetzt falls Fehler
  2123.             AX Fehlercode - MSDOS (01h, 02h, 03h, 05h)
  2124.                             DRDOS (02h, 03h, 05h)
  2125.          CX Dateiattribute beim holen
  2126.             Attribute:
  2127.             01h nur lesen
  2128.             02h versteckt
  2129.             04h System
  2130.             0FFh Archive
  2131. Anmerkung 1) diese Funktion ändert nicht das Datenträgeretikett oder Inhaltsverzeichnis Bit. (3&4)
  2132.           2) irgendeine Kombination von Dateiattributen kann benutzt werden.
  2133.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2134.           4) TOS:$ 43 CHANGE MODE (CHMOD).
  2135.  
  2136.  
  2137. Funktion 44h I/O Steuerung für Geräte (IOCTL)
  2138.          Gerätetreiber Handler
  2139. Aufruf   AH 44h
  2140.          AL 00h holen Geräteinformation
  2141.                 BX       Datei oder Geräte Handle
  2142.                 Rückgabe CF gesetzt wenn Fehler
  2143.                             AX Fehlercode
  2144.                          DX Wort Geräteinformation
  2145.                             Bit 7 gesetzt = Zeichentreiber
  2146.                             Bit 0 Bedienungsfeld Eingabegerät
  2147.                                 1 Bedienungsfeld Ausgabegerät
  2148.                                 2 NUL Gerät
  2149.                                 3 CLOCK$ Gerät
  2150.                                 4 besonderes Gerät
  2151.                                 5 binär (unbearbeitet) Modus
  2152.                                 6 nicht EOF
  2153.                                 12 Netzwerk Gerät (DOS 3. x)
  2154.                                 14 kann IOCTL Steuerungszeichen
  2155.                                    abarbeiten (subfns 2-5)
  2156.                             Bit 7 gelöscht = Datei
  2157.                             Bit 0-5 Blocktreiber Nummer
  2158.                                 6 Datei wurde nicht geschrieben
  2159.                                 12 Netzwerk Gerät (DOS 3.x)
  2160.                                 14 Unbekannt (DOS 3.x)
  2161.                                 15 Datei ist entfernt (remote) (DOS 3.x)
  2162.  
  2163.             01h einstellen Geräteinformation
  2164.                 BX Gerät Handle
  2165.                 DH 00h (DH muß Null sein für diesen Aufruf)
  2166.                 DL einzustellende Geräteinformation (Bits 0-7 von Funktion 0)
  2167.                 Anmerkung DX Bits: 
  2168.                         0 1 Bedienungsfeld Eingabegerät
  2169.                         1 1 Bedienungsfeld Ausgabegerät
  2170.                         2 1 NUL Gerät
  2171.                         3 1 CLOCK Gerät
  2172.                         4 1 reserviert 
  2173.                         5 0 binär Modus - kontrolliert nicht auf Steuerzeichen
  2174.                           1 gefiltert Modus - kontrollieren auf Steuerzeichen
  2175.                         6 0 EOF - Dateiende bei Eingabe
  2176.                         7 Gerät ist Zeichentreiber falls gesetzt, falls nicht, EOF
  2177.                                 ist 0 falls Kanal geschrieben wurde, Bits 0-5 sind
  2178.                                 Blocktreiber Nummer 
  2179.                         12 Netzwerk Gerät 
  2180.                         14 1 kann Steuerzeichen abarbeiten (AL 2-5, kann ausschließlich
  2181.                                 gelesen und nicht eingestellt werden)
  2182.                         15 n reserviert 
  2183.  
  2184.                 02h lesen Zeichentreiber Steuerungszeichen
  2185.                         BX Gerät Handle
  2186.                         CX Anzahl zu lesender Bytes
  2187.                         DS:DX Zeiger zum Steuerungszeichen Puffer
  2188.                         Rückgabe AX (keine Fehler) Anzahl gelesener Bytes
  2189.  
  2190.                 03h schreiben Zeichentreiber Steuerungszeichen
  2191.                         BX Gerät Handle
  2192.                         CX Anzahl zu schreibender Bytes
  2193.                         DS:DX Zeiger zum Puffer
  2194.                         Rückgabe AX (keine Fehler) Anzahl geschriebener Bytes
  2195.  
  2196.                 04h lesen vom Blocktreiber (Laufwerksnummer in BL)
  2197.                         BL Laufwerksnummer (0= vorgegeben)
  2198.                         CX Anzahl zu lesender Bytes
  2199.                         DS:DX Zeiger zum Puffer
  2200.                         Rückgabe AX (keine Fehler) Anzahl gelesener Bytes
  2201.  
  2202.                 05h schreiben Blocktreiber Steuerungszeichen
  2203.                         BL Laufwerksnummer (0= vorgegeben)
  2204.                         CX Anzahl zu schreibender Bytes
  2205.                         DS:DX Zeiger zum Puffer
  2206.                         Rückgabe AX (keine Fehler) Anzahl übertragener Bytes
  2207.  
  2208.                 06h holen Eingabe Handle Status
  2209.                         BX Datei oder Geräte Handle
  2210.                         Rückgabe AL 00h Gerät ist nicht bereit
  2211.                                     0FFh Gerät ist bereit
  2212.                         Anmerkung für eine Eingabedatei, 0FFh bedeutet Dateiende.
  2213.  
  2214.                 07h holen Ausgabe Handle Status
  2215.                         BX Datei oder Geräte Handle
  2216.                         Rückgabe AL 00h nicht bereit
  2217.                                     0FFh bereit
  2218.                         Anmerkung für DOS 2.x, Dateien sind immer zur Ausgabe bereit.
  2219.  
  2220.                 08h auswechselbares Media Bit (DOS 3.x+)
  2221.                         BL Laufwerksnummer (0=aktuelles)
  2222.                         Rückgabe AX 00h Gerät ist auswechselbar
  2223.                                     01h Gerät ist nicht auswechselbar
  2224.                                     0Fh ungültige Laufwerksbeschreibung
  2225.  
  2226.                 09h Test ob lokales oder Netzwerk Gerät (DOS 3.1+)
  2227.                         BL Laufwerksnummer (0= vorgegeben)
  2228.                         Rückgabe DX Attribut Wort, Bit 12 gesetzt falls Gerät remote ist
  2229.  
  2230.                 0Ah ist Handle in BX lokal oder remote? (DOS 3.1+)
  2231.                         BX Dateinummer 
  2232.                         Rückgabe DX Bit 15 gesetzt falls Datei remote ist,
  2233.                                            gelöscht falls Datei lokal ist
  2234.                         Anmerkung 1) falls Datei remote ist, gibt Novell Advanced NetWare 2.0
  2235.                                      die Nummer des File Servers auf welchem der Handle
  2236.                                      ermittelt ist in CX zurück.
  2237.  
  2238.                 0Bh ändern Anzahl Wiederholungen in DX für Sharinng (DOS 3.1+)
  2239.                         CX Verzögerung (vorgegeben=1)
  2240.                         DX Wiederholungen (vorgegeben=3)
  2241.                         Anmerkung Ändert die Anzahl der Wiederholungen von Laufwerksoperationen
  2242.                                   nach einer Sharing Übertretung.
  2243.  
  2244.                 0Ch allgemein IOCTL (DOS 3.3 [3.2?]) erlaubt einen Gerätetreiber
  2245.                         vorzubereiten, auszuwählen, aufzufrischen, und erfragen Codeseiten
  2246.                         BX Gerät Handle
  2247.                         CH Kategorie Code 
  2248.                            00h Unbekannt (DOS 3.3)
  2249.                            01h COMn: (DOS 3.3)
  2250.                            03h CON (DOS 3.3)
  2251.                            05h LPTn:
  2252.                         CL Funktion 
  2253.                            45h einstellen Wiederholungszähler
  2254.                            4Ah auswählen Codeseite
  2255.                            4Ch Start Codeseite Vorbereitung
  2256.                            4Dh Ende Codeseite Vorbereitung
  2257.                            65h holen Wiederholungszähler
  2258.                            6Ah erfragen ausgewählte Codeseite
  2259.                            6Bh erfragen Vorbereitungsliste
  2260.                         DS:DX Zeiger zum Parameterblock. Format:
  2261.                     (für CL=45h) Wort      Anzahl wie oft die Ausgabe versucht wird
  2262.                                            Treiber nimmt an Gerät ist beschäftigt
  2263.           (für CL=4Ah, 4Dh, 6Ah) Wort      Länge der Daten
  2264.                                  Wort      Codeseite ID
  2265.                     (für CL=4Ch) Wort      Kennzeichen
  2266.                                  Wort      Länge vom Rest des Parameterblocks
  2267.                                  Wort      Anzahl Codeseiten folgen
  2268.                                n Wörter    Codeseite 1, ..., N
  2269.                     (für CL=6Bh) Wort      Länge der folgenden Daten
  2270.                                  Wort      Anzahl Hardware Codeseiten
  2271.                                n Wörter    Hardware Codeseiten 1, ..., N
  2272.                                  Wort      Anzahl vorbereiteter Codeseiten
  2273.                               n Wörter     vorbereitete Codeseiten 1, ..., N
  2274.  
  2275.                 0Dh Blocktreiber Anforderung (DOS 3.3+)
  2276.                         BL Laufwerksnummer (0=aktuelles, 1=A:, etc.)
  2277.                         CH Kategorie Code 
  2278.                            08h Festplattenlaufwerk
  2279.                         CL Unterfunktion 
  2280.                            40h einstellen Geräteparameter
  2281.                            41h schreiben logische Gerätespur
  2282.                            42h formatieren und prüfen logische Gerätespur
  2283.                            46h Unbekannt (DOS 4.0+)
  2284.                            60h holen Geräteparameter
  2285.                            61h lesen logische Gerätespur
  2286.                            62h prüfen logische Gerätespur
  2287.                         DS:DX Zeiger zum Parameterblock
  2288.  
  2289.            (Für fns 40h, 60h) Byte     besonders Funktionen
  2290.                                    Bit 0 gesetzt falls fn aktuellen BPB benutzen soll, gelöscht
  2291.                                          falls Gerät BIOS Parameterblock Feld
  2292.                                          neuen vorgegebenen BPB enthält
  2293.                                        1 gesetzt falls Funktion ausschließlich die Spuranordnungsfelder
  2294.                                          benutzen soll. Muß gelöscht sein, falls CL=60h
  2295.                                        2 gesetzt falls alle Sektoren in der Spur dieselbe Größe haben
  2296.                                          (sollte gesetzt sein)
  2297.                                      3-7 reserviert
  2298.                               Byte      Gerätetyp
  2299.                                         00h 320k/360k Diskette
  2300.                                         01h 1.2M Diskette
  2301.                                         02h 720k Diskette
  2302.                                         03h single-density 8-inch Diskette
  2303.                                         04h double-density 8-inch Diskette
  2304.                                         05h Festplatte 
  2305.                                         06h Bandlaufwerk
  2306.                                         07h anderer Typ eines Blocktreiber
  2307.                               Wort      Geräteattribut
  2308.                                     Bit 0 gesetzt falls kein austauschbares Medium
  2309.                                         1 gesetzt falls Tür sperren unterstützt
  2310.                                         2-15 reserviert
  2311.                               Wort      Anzahl Zylinder
  2312.                               Byte      Media Typ
  2313.                                         00h 1.2M Diskette (vorgegeben)
  2314.                                         01h 320k/360k Diskette
  2315.                              31 Bytes   Geräte BPB (siehe Funktion 53h)
  2316.                                 Wort    Anzahl Sektoren pro Spur (Start von Spur-
  2317.                                         anordnungsfeld)
  2318.                          n Wort Paare:  Nummer, Größe von jedem Sektor in der Spur
  2319.  
  2320.                                 Dies kann definiert sein in einem Aufbau etwa wie:
  2321.                                 DeviceParameters         Struc
  2322.                                    SpecialFunctions      db             ?
  2323.                                    GeraeteTyp            db             ?
  2324.                                    GeraeteAttribut       dw             ?
  2325.                                    AnzahlZylinder        dw             ?
  2326.                                    MediaType             db             ?
  2327.                                    DeviceBPB             A_BPB          <>
  2328.                                    TrackLayout           A_TrackLayout  <>
  2329.                                 DeviceParameters         Ends
  2330.  
  2331.       (Für Funktionen 41h, 61h) Byte reserviert, muß Null sein
  2332.                                 Wort Anzahl Köpfe
  2333.                                 Wort Anzahl Zylinder
  2334.                                 Wort Anzahl der ersten Sektoren zum lesen/schreiben
  2335.                                 Wort Anzahl Sektoren 
  2336.                                dwort Übertragungsadresse
  2337.       (für Funktionen 42h, 62h) Byte reserviert, muß Null sein
  2338.                                 Wort Anzahl Köpfe
  2339.                                 Wort Anzahl Zylinder
  2340.                       Anmerkung DOS 4.01 scheint das höherwertige Byte von der
  2341.                                 Anzahl der Inhaltsverzeichniseinträge in dem BPB für
  2342.                                 Disketten zu ignorieren.
  2343.  
  2344.                 0Eh holen logische Geräteabbildung (DOS 3. 2+)
  2345.                     gibt den logischen Laufwerksbuchstabe der beim letzten Zugriff auf
  2346.                     den Blocktreiber benutzt wurde zurück. Benutzt von SUBST, JOIN, etc.
  2347.                         BL Laufwerksnummer (0=vorgegeben)
  2348.                         Rückgabe AL 00h Blocktreiber hat ausschließlich ein
  2349.                                         logisches Laufwerk zugewiesen 1 .. n der
  2350.                                         letzte Buchstabe wird zur Referenz des
  2351.                                         Gerätes benutzt (1=A:, etc)
  2352.                                     01h-1Ah Laufwerksnummer (1..26 DOS 3.0+)
  2353.                         Anmerkung 1) dies ist keine Netzwerk-abhängige Funktion.
  2354.                                   2) dieser Aufruf erlaubt es, festzustellen ob mehr als
  2355.                                      ein logisches Laufwerk dem Blocktreiber ist.
  2356.                                      Sobald dieses Funktion aufgerufen wird, wird eine
  2357.                                      Laufwerksnummer in BL übertragen als Eingabe. Falls dem
  2358.                                      Blockgerät hat mehr als ein logischer Laufwerksbuchstabe
  2359.                                      zugewiesen ist, wird in AL eine Laufwerksnummer
  2360.                                      entsprechend dem letzte Laufwerksbuchstabe der
  2361.                                      benutzt wurde zurückgegeben.
  2362.                                      Falls ausschließlich ein Laufwerksbuchstabe dem Gerät
  2363.                                      zugewiesen ist, wird durch diesen Aufruf 0 in AL zurückgegeben.
  2364.  
  2365.                 0Fh einstellen logisch Geräteabbildung( DOS 3. 2+)
  2366.                         BL       physische Laufwerksnummer (0=vorgegeben)
  2367.                         Rückgabe AL 00h falls ausschließlich 1 Laufwerksbuchstabe
  2368.                                         zum Blocktreiber zugewiesen ist
  2369.                                     01h ... 1=A:, 2=B:, ...
  2370.                         Anmerkung bildet logische Laufwerke zu physische Laufwerke, ähnlich
  2371.                                   wie DOS's Behandlung eines einzelnen physischen Disketten-
  2372.                                   laufwerks als A: und B:
  2373.  
  2374.          BL Laufwerksnummer: 0=vorgegeben, 1=A:, 2=B:, etc.
  2375.          BX Dateinummer
  2376.          CX Anzahl zu lesender oder schreibender Bytes
  2377.          DS:DX Daten oder Puffer
  2378.          DX Daten
  2379. Rückgabe AX Anzahl übertragener Bytes
  2380.             oder Fehlercode (siehe Funktion 59h für erweiterte Fehlercodes)
  2381.             oder Zustand 00h nicht bereit
  2382.                          0FFh bereit
  2383.          CF gesetzt falls Fehler
  2384. Anmerkung dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2385.  
  2386.  
  2387. Funktion 45h duplizieren einer Dateinummer (DUP)
  2388. Aufruf   AH 45h
  2389.          BX zu duplizierende Dateinummer
  2390. Rückgabe CF gelöscht AX duplizierte Dateinummer (Handle)
  2391.             gesetzt AX Fehlercode (04h, 06h)
  2392. Anmerkung 1) falls der Zeiger von einem Handle mit 3Fh (lesen), 40h (schreiben), oder
  2393.              42h (bewegen Zeiger) bewegt wird, so wird der Zeiger von dem anderen bewegt.
  2394.           2) der Handle in BX muß offen sein.
  2395.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2396.           4) TOS:$ 45 DUP.
  2397.           5) diese Funktion kann benutzt werden, um den Inhaltsverzeichniseintrag einer Datei zu aktualisieren,
  2398.              ohne das öffnen und schließen durchzuführen. Als Beispiel, diese Funktion
  2399.              gefolgt von fn 3Eh (schließen Datei) mit der duplizierten Dateinummer verursacht
  2400.              das DOS dessen Puffer löscht und den Inhaltsverzeichniseintrag aktualisiert, solange
  2401.              die Originaldatei im lesen/schreiben Modus geöffnet bleibt.
  2402.  
  2403.  
  2404. Funktion 46h erzwingen Duplikat von einem Handle (FORCEDUP oder CDUP)
  2405.          erzwingt Handle in CX das auf dieselbe Datei an derselben Position
  2406.          Bezug nimmt wie BX
  2407. Aufruf AH 46h
  2408.        BX existierende offene Dateinummer die dupliziert werden soll
  2409.        CX neue Dateinummer
  2410. Rückgabe CF gelöscht beide Handle nehmen jetzt Bezug auf eine existierende Datei
  2411.             gesetzt Fehler
  2412.             AX Fehlercode (04h, 06h)
  2413. Anmerkung 1) falls CX eine offene Datei war, wird diese erst geschlossen.
  2414.           2) falls der Zeiger von einem Handle mit 3Fh (lesen), 40h (schreiben), oder
  2415.              42h (bewegen Zeiger) bewegt wird, so wird der Zeiger von dem anderen bewegt.
  2416.           3) der Handle in BX muß offen sein.
  2417.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2418.           5) TOS$ 46 FORCE.
  2419.           6) diese Funktion kann benutzt werden, um die Eingabe und Ausgabe umzuleiten.
  2420.  
  2421.                
  2422. Funktion 47h holen aktuelles Inhaltsverzeichnis
  2423.          überträgt den vollen Pfadnamem des aktuellen Inhaltsverzeichnisses/Laufwerk in einen Puffer
  2424. Aufruf   AH 47h
  2425.          DL Laufwerk (0=aktuelles, 1=A:, etc.)
  2426.          DS:SI Segment/Offset Zeiger zum 64-byte Puffer Bereich
  2427. Rückgabe CF gelöscht DS: DI Zeiger zu ASCIIZ Pfadname vom aktuellen Inhaltsverzeichnis
  2428.             gesetzt AX Fehlercode (0Fh)
  2429. Anmerkung 1) Zeichenkette beginnt nicht mit einer Laufwerkskennung oder einem Backslash (\).
  2430.           2) dies Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2431.           3) TOS:$ 47 GETDIR.
  2432.  
  2433.  
  2434. Funktion 48h Speicher belegen (MALLOC)
  2435.          belegt angeforderte Anzahl von 16-byte Paragraphen Speicher
  2436. Aufruf   AH 48h
  2437.          BX Anzahl gewünschter 16-byte Paragraphen gewünscht
  2438. Rückgabe CF gelöscht AX Segmentadresse des belegten Speichers
  2439.                      BX maximale Anzahl verfügbarer Pragraphen
  2440.             gesetzt AX Fehlercode (07h, 08h)
  2441. Anmerkung 1) BX zeigt den maximalen verfügbaren Speicher ausschließlich falls die Reservierung scheiterte.
  2442.           2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2443.           3) TOS:$ 48 MALLOC.
  2444.  
  2445.  
  2446. Funktion 49h belegten Speicher freigeben
  2447.          befreit spezifizierte Speicherblöcke
  2448. Aufruf   AH 49h
  2449.          ES Segmentadresse vom freizugebenden Bereich
  2450. Rückgabe CF gelöscht erfolgreich
  2451.             gesetzt AX Fehlercode (07h, 09h)
  2452. Anmerkung 1) diese Funktion ist ausschließlich zulässig, sobald Speicher mit der Funktion 48h reserviert wurde.
  2453.           2) ein Programm sollte nicht versuchen Speicher freizugeben, der nicht von ihm belegt wurde.
  2454.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2455.           4) TOS:$ 49 MFREE.
  2456.  
  2457.  
  2458. Funktion 4Ah modifizieren belegte Speicherblöcke (SETBLOCK)
  2459.          erweitern oder vermindern Speicher für ein Programm
  2460. Aufruf   AH 4Ah
  2461.          BX neue Größe in 16 Byte Paragraphen
  2462.          ES Segmentadresse des zu ändernden Blocks
  2463. Rückgabe CF gelöscht nichts
  2464.             gesetzt AX Fehlercode (07h, 08h, 09h)
  2465.             oder BX maximale Anzahl verfügbarer Paragraphen
  2466. Anmerkung 1) BX zeigt den maximalen verfügbaren Speicher ausschließlich falls die Funktion scheiterte.
  2467.           2) Speicher kann ausschließlich erweitert werden, falls der Speicher verfügbar ist.
  2468.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2469.           4) TOS:$ 4A SETBLOCK.
  2470.  
  2471.  
  2472.  
  2473. Funktion 4Bh laden oder ausführen eines Programms (EXEC)
  2474. Aufruf   AH 4Bh
  2475.          AL 00h laden und ausführen Programm. Ein PSP für das Programm wird angelegt,
  2476.                 die ctrl-break und Beendigungs Adressen werden auf den neuen PSP
  2477.                 eingestellt.
  2478.            *01h laden aber nicht ausführen (intern, DOS 3.x & DESQview)
  2479.                 (siehe Anmerkung 1)
  2480.            *02h laden aber nicht ausführen (intern, DOS 2.x ausschließlich)
  2481.             03h laden Overlay (kein erstellen eines PSP, Ausführung nicht beginnen)
  2482.            *04h Start async Prozess (Euro-DOS 4.0 ausschließlich) (siehe Anmerkung 12)
  2483.           DS:DX Segment/Offset Zeiger zu der ASCIIZ Zeichenkette mit dem Laufwerk,
  2484.                 Pfad, und dem Dateinamen der geladen werden soll
  2485.           ES:BX Segment/Offset Zeiger zu einem Parameterblock für das Laden
  2486.                 (AL=00h)  Wort  Segmentadresse von Environment Zeichenkette die
  2487.                                 übergeben werden soll (0=benutzen aktuelle)
  2488.                           dwort Zeiger zu der Befehlszeile die an PSP+80h eingestellt wird
  2489.                           dwort Zeiger zum vorgegeben FCB welcher an PSP+5Ch übertragen wird
  2490.                           dwort Zeiger zum vorgegeben FCB welcher an PSP+6Ch übertragen wird
  2491.                 (*AL=01h) Wort  Segment vom Environment (0=benutzen aktuelles)
  2492.                           dwort Zeiger zur Befehlszeile
  2493.                           dwort Zeiger zum FCB 1
  2494.                           dwort Zeiger zum FCB 2
  2495.                (DOS 3.x+) dwort zum sichern von SS:SP bei der Rückkehr
  2496.                (DOS 3.x+) dwort zum sichern der Programmeinsprungstelle (CS:IP) bei der Rückkehr
  2497.                 (*AL=02h) Wort  Segment vom Environment (0=benutzen aktuelles)
  2498.                           dwort Zeiger zur Befehlszeile
  2499.                           dwort Zeiger zum FCB 1
  2500.                           dwort Zeiger zum FCB 2
  2501.                  (AL=03h) Wort  Segmentadresse wohin die Datei geladen wird
  2502.                           Wort  Verschiebungsfaktor der auf das Abbild angewandt wird
  2503. Rückgabe CF gesetzt Fehler
  2504.             AX Fehlercode (01h, 02h, 05h, 08h, 0Ah, 0Bh)
  2505.          CF gelöscht falls erfolgreich
  2506.             für fn 00h, Prozess ID ist auf das neue PSP eingestellt; holen mit
  2507.                         Funktion 62h 
  2508.             für fn 01h und DOS 3. x+ oder DESQview, Porzess ID ist auf das neue
  2509.                         PSP eingestellt; holen mit Funktion 62h
  2510.             für fn 01h und DOS 2.x, der anfängliche Stapel und Einsprungspunkt des neuen
  2511.                         Programmes wird in Register zurückgegeben
  2512.             für fn 02h, der anfängliche Stapel und Einsprungspunkt des neuen
  2513.                         Programmes wird in den Registern zurückgegeben
  2514. Anmerkung 1) falls der Aufruf dieser Funktion mit AL=1 durchgeführt wird, wird das Programm geladen, so als wenn
  2515.              der Aufruf mit AL=0 gemacht wurde, außer daß das Programm nicht ausgeführt wird.
  2516.              Zusätzlich, mit AL=1 das Stacksegment und Zeiger zusammen mit dem
  2517.              CS:IP Einsprungspunkt des Programmes werden an das Programm zurückgegeben, welches den
  2518.              4B01h Aufruf durchgeführt hat. Diese Werte sind ausgeben in den vier Wörtern an ES:BX+0Eh. Auf
  2519.              Einsprungstelle zu dem Aufruf ES:BX zeigt zu der Environmentadresse, der Befehls-
  2520.              zeile und den zwei vorgegeben FCBs. Diese Form von EXEC wird von DEBUG.COM benutzt.
  2521.           2) Anwendungsprogramme können eine sekundäre Kopie von der Befehlsprozessors
  2522.              (normalerweise COMMAND.COM) aufrufen, indem die EXEC Funktion benutzen wird. Das
  2523.              Programm kann dann ein DOS Befehl wie ein Parameter übergeben, daß der sekundär
  2524.              Kommandoprozessor ausführt, so als wenn dieser vom Standardeingabegerät
  2525.              eingegeben wurde,
  2526.         Das Verfahren ist:
  2527.          A. Zusichern das genügend freier Speicher (17k für 2.x und 3.0, 23k für 3.1
  2528.             und höher) existiert, um die zweite Kopie von dem Kommandoprozessor zu erhalten und
  2529.             der Befehl der ausgeführt werden soll. Dies wird erreicht, imdem der
  2530.             Funktionsaufruf 4Ah zum vermindern des belegten Speicher auf die aktuellen
  2531.             Forderungen des Programmes durchgeführt wird. Danach, ausführen Funktionsaufruf 48h
  2532.             mit BX= 0FFFFh. Diese gibt den verfügbaren Speicher zurück.
  2533.          B. Erstellen einer Parameterzeichenkette für den sekundären Kommandoprozessor in der
  2534.             Form:
  2535.                         1   Byte   Länge der Parameterzeichenkette
  2536.                         xx  Bytes  Parameterzeichenkette
  2537.                          1  Byte   0Dh (Carriage Return)
  2538.            als Beispiel, die Assembleranweisung unterhalb erstellt die
  2539.            Zeichenkette zur Ausführung von dem Befehl FOO.EXE:
  2540.                               DB 19,"/C C:FOO",13
  2541.         C. Benutzen des EXEC Funktionsaufrufs (4Bh), Funktion 0 um die Ausführung
  2542.            von der sekundären Kopie von dem Kommandoprozessor zu veranlassen. (das Laufwerk,
  2543.            Inhaltsverzeichnis, und Name des Kommandoprozessors kann durch die
  2544.            COMSPEC Variable in dem DOS Environment ermittelt werden, welches an PSP+2Ch übergeben wird.)
  2545.         D. Nicht vergessen den Offset 2 von dem EXEC Kontrollblock auf den Punkt zu der
  2546.            zusammengesetzten Zeichenkette von vorher einzustellen.
  2547.         3) alle offenen Dateien von einem Prozess werden dupliziert in dem neu erstellten
  2548.            Prozess nach einem EXEC, außer für Dateien die vom Original
  2549.            mit dem Handle Bit eingestellt auf 1 geöffbnet wurden.
  2550.         4) das Environment ist eine Kopie von dem original Befehlsprozessor
  2551.            Environment. Änderungen in dem EXECed Environment werden nicht an das
  2552.            Original zurückgegeben. Dem Environment folgt eine Kopie von dem DS:DX
  2553.            Dateinamen der an dem Kind Prozess übergeben wurde. Ein Null Wert verursacht, daß
  2554.            der Kind Prozess das Environment von dem aufrufenden Prozesses mitschleppt. Die
  2555.            Segmentadresse von dem Environment wird an Offset 2Ch von dem PSP
  2556.            des aufgerufenden Programmes abgestellt.
  2557.         5) diese Funktion benutzt denselben speicherresistent Teil von COMMAND.COM, erstellt
  2558.            aber eine Kopie von dem vorrübergehenden Teil.
  2559.         6) wie EXEC erkennt wohin er zurück muß: grundsätzlich enthält der Vektor für int 22h
  2560.            die Beendigungsadresse für den aktuellen Prozess. Sobald ein Prozess
  2561.            gestartet wird, der vorhergehend Inhalte von int 22h wird in den
  2562.            PSP für diesen Prozess übergeben, dann wird int 22h modifiziert. Deshalb wenn Prozess A
  2563.            EXECs Prozess B, solange Prozess B läuft, der Vektor für int 22h enthält
  2564.            die Rückkehradresse zu Prozess A, solange die Sicherungsstelle in dem PSP
  2565.            von Prozess B die Rückkehradresse vom Prozess A enthält, kehrt er zurück sobald
  2566.            *er* beendet wird. Sobald Prozess B normal legal beendet wird,
  2567.            die Inhalte von int 22h sind (vermutlich) auf den Stapel geschoben,
  2568.            die alten Beendigungs Vektor Inhalte werden zum int 22h Vektor zurückkopiert vom
  2569.            PSP des Prozesses B, dann ein RETF oder gleichwertiger wird ausgeführt, um die
  2570.            Steuerung an Prozess A zu übergeben.
  2571.         7) laden einer Overlay Datei mit 4B: Erstens, nicht den Speicher freigeben
  2572.            indem das Overlay geladen wird. Mit den anderen 4Bh Funktionen, das
  2573.            Gegenteil ist wahr--zuerst den Speicher freigeben, mit Funktion 4Ah.
  2574.            Zweitens, die "Segmentadresse wohin die Datei geladen wird" (erstes Element
  2575.            in dem Parameterblock für Unterfunktion 03) sollte eine Bereichsgrenze
  2576.            im gegenwärtigen belegten Speicher sein. Drittens, falls die Prozeduren
  2577.            im Overlay FAR Prozeduren sind (solange sie ablaufen, ist CS gleich der
  2578.            Segmentadresse von dem Overlay Bereich), sollte der Verschiebungsfaktor
  2579.            Null sein. Auf der anderen Seite, falls das CS Register unterschiedlich
  2580.            von der Overlaybereichs Segmentadresse sein muß, sollte der Verschiebungs-
  2581.            faktor auf die auftretende Differenz gesetzt werden. Um festzustellen
  2582.            wo im Speicher die Overlay Datei geladen wird, benutze die Segmentadresse
  2583.            dir vorher erwähnt wurde. Overlay Dateien sind. EXEs (beinhalten
  2584.            Dateikopf, Verschiebungstabelle, und Speicherabbild).
  2585.         8) sobald Funktion 00h die Steuerung zurück gibt, alle Register sind geändert, einschließlich der
  2586.            Stapel. Du mußt SS, SP, und irgendwelche anderen verlangten Register zurücksichern.
  2587.         9) PCDOS EXEC Funktion 3 (Overlay) befindet sich in dem vorrübergehenden Teil von
  2588.            COMMAND.COM und wird geladen sobald es benötigt wird, so die Bedingung für
  2589.            genug freien Speicher um das EXEC Ladeprogramm (über 1. 5k) zu laden. Unter MSDOS
  2590.            befindet sich das EXEC System Systemspeicher.
  2591.        10) falls versucht wird eine. EXE Datei zu überlagern mit der high/low Schalter eingestellt zum laden
  2592.            in den hohen Speicher ereignet sich nichts. Der high/low Schalter ist ausschließlich für
  2593.            Prozess Erstellung, nicht für Overlays.
  2594.        11) DOS 2.x zerstört alle Register, einschließlich SS:SP.
  2595.        12) (AL=04h) das ist DOS 4.0, wie freigegeben 1987 zu verschiedenartigen europäischen OEMs.
  2596.            Es wird nicht in dem US DOS 4.0 verwandt.
  2597.        13) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2598.        14) TOS:$ 4B EXEC.
  2599.  
  2600.  
  2601. Funktion 4Ch beenden Prozess (EXIT)
  2602.          beenden mit ERRORLEVEL Rückgabecode
  2603. Aufruf   AH 4Ch
  2604.          AL Rückgabecode in AL der zum nächsten Prozess übergeben wird
  2605. Rückgabe keine
  2606. Anmerkung 1) Übergibt die Steuerung an DOS oder an das aufrufende Programm.
  2607.           2) Rückgabecode von AL kann durch ERRORLEVEL oder Funktion 4Dh festgestellt werden.
  2608.           3) alle von diesem Prozess geöffneten Dateien werden geschlossen, Puffer werden gelöscht, und
  2609.              das Inhaltsverzeichnis des Laufwerks wird aktualisiert.
  2610.           4) Restauriert: Beendigungs Vektor von PSP:000Ah
  2611.                           Ctrl-C Vektor von PSP:000Eh
  2612.                           kritischer Fehler Vektor von PSP:0012h
  2613.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2614.           6) TOS:$ 4C TERM. Gibt ein 2-byte errorlevel zum aufrufenden Programm zurück
  2615.  
  2616.  
  2617. Funktion 4Dh holen Rückgabecode von einem Unterprozess (WAIT)
  2618.          bekommt Rückgabecode von Funktionen 31h und 4Dh (ERRORLEVEL)
  2619. Aufruf   AH 4Dh
  2620. Rückgabe AH Umstand welcher die Beendigung veranlasste
  2621.             00h normal Beendigung
  2622.             01h control-break oder control-C
  2623.             02h kritischer Gerätefehler
  2624.             03h beenden und warten speicherresistent (Funktion 31h)
  2625.          AL Rückgabecode vom Unterprogramm (Funktionen 31h oder 4Ch)
  2626. Anmerkung 1) der Rückgabecode wird ausschließlich einmal zurückgegeben (das erste Mal).
  2627.           2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2628.                                           
  2629.  
  2630. Funktion 4Eh suchen ersten Directory-Eintrag (FIND FIRST)
  2631. Aufruf   AH 4Eh
  2632.          CX Attribut der Datei (siehe Funktion 43h)
  2633.          DS:DX Segment/Offset Zeiger zum ASCIIZ Dateiname (mit Attribut)
  2634. Rückgabe CF gesetzt AX Fehlercode (02h, 12h)
  2635.             gelöscht Datenblock geschrieben an aktuelle DTA
  2636.                             Format des Blockes ist: (Information von BIX)
  2637.   dokumentiert von Micro-   |00h      1 Byte       Attributbyte zum Suchen
  2638.   soft als "reserviert für  |01h      1 Byte       Laufwerksbuchstabe zum Suchen
  2639.   DOS' benutzt von folgenden|02h     11 Bytes      der zu suchende Dateiname
  2640.   Suchen nächste Aufruf"    |0Ch      2 Bytes      Wort Wert des letzten Eintrags
  2641.   Funktion 4Fh              |0Fh      4 Bytes      dwort Zeiger zu dieser DTA
  2642.                             |13h      2 Bytes      Wort Start Inhaltsverzeichnis
  2643.  
  2644.                             | PC-DOS 3.10 (von INTERRUP.ARC)
  2645.                             |00h      1 Byte       Laufwerksbuchstabe
  2646.                             |01h-0Bh 11 Bytes      zu suchender Dateiname
  2647.                             |0Ch      1 Byte       Attributbyte
  2648.  
  2649.                             | DOS 2.x (und DOS 3.x außer 3.1?) (von INTERRUP.ARC)
  2650.                             |00h      1 Byte       Attributbyte
  2651.                             |01h      1 Byte       Laufwerksbuchstabe
  2652.                             |02h-0Ch 11 Bytes      zu suchender Dateiname
  2653.                             |0Dh-0Eh  2 Bytes      Anzahl Einträge im Inhaltsverzeichnis
  2654.                             |0Fh-12h  4 Bytes      reserviert
  2655.                             |13h-14h  2 Bytes      Anzahl Cluster im Ursprung Inhaltsverzeichnis
  2656.  
  2657.                              15h      1 Byte       Dateiattribut
  2658.                              16h      2 Bytes      Uhrzeit der Datei, Bitmaske:
  2659.                                                    0-4 halbe-Sekunden
  2660.                                                    5-10 minute
  2661.                                                    11-15 Stunde
  2662.                              18h      2 Bytes      Datum der Datei, Bitmaske:
  2663.                                                    0-4 Tag
  2664.                                                    5-8 Monat
  2665.                                                    9-15 Jahre seit 1980
  2666.                              1Ah      2 Bytes      niederwertiges Wort der Dateigröße
  2667.                              1Ch      2 Bytes      höherwertiges Wort der Dateigröße
  2668.                              1Eh     13 Bytes      Name und Erweiterung der gefundenen Datei, plus
  2669.                                                    1 Byte von 0s. Alle Leerzeichen werden von dem
  2670.                                                    Name und Erweiterung entfernt, und falls eine
  2671.                                                    Erweiterung vorhanden ist, geht ihr ein Punkt
  2672.                                                    voran.
  2673. Anmerkung 1) diese Funktion unterstützt keine Netzwerk Transaktionen.
  2674.           2) Wildcards sind in der Dateibezeichnung zugelassen.
  2675.           3) falls das Attribut Null ist, ausschließlich übliche Dateien werden gefunden. Falls das Datenträger-
  2676.              etikett Bit eingestellt ist, ausschließlich Datenträgeretiketten werden gefunden. Irgendwelche andere Attribute
  2677.              geben die Dateien mit dem Attribut und alle normalen Dateien gemeinsam zurück.
  2678.           4) um alles außer dem Datenträgeretikett zu suchen, setzen der versteckt, System,
  2679.              und Unterverzeichnis Bits alle auf 1.
  2680.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2681.           6) TOS:$ 4E SFIRST.
  2682.  
  2683.  
  2684. Funktion 4Fh suchen nächsten Directory-Eintrag (FIND NEXT)
  2685.          suchen nächste ASCIIZ Datei
  2686. Aufruf   AH 4Fh
  2687. Rückgabe CF gelöscht Datenblock geschrieben an aktuelle DTA
  2688.             gesetzt AX Fehlercode (02h, 12h)
  2689. Anmerkung 1) falls Datei gefunden wird, DTA ist formatiert wie im Aufruf 4Eh.
  2690.           2) Suchen Datenträgeretikett mit 4Eh/4Fh ist wie verlautet nicht 100% verläßlich
  2691.              unter DOS 2.x. Der Aufruf berichtet irgendwann das ein Datenträgeretikett gefunden wurde und
  2692.              zeigt zu einem wertlosen DTA, auch wenn das Datenträgeretikett das ausschließliche Element ist
  2693.              das nicht gesucht werden sollte. Die meisten Referenzen empfehlen die Benutzung von den älteren
  2694.              FCB Aufrufen zur Behandlung von Datenträgeretiketten.
  2695.           3) diese Funktion unterstützt keine Netzwerk Transaktionen.
  2696.           4) Benutzen von dieser Funktion nimmt an, daß die Original Dateibezeichnung Wildcards enthält
  2697.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  2698.           6) TOS:$ 4F SNEXT.
  2699.  
  2700.  
  2701. Funktion 50h "benutzt intern von DOS" - einstellen PSP
  2702.          * einstellen neues Programm Segment Prefix (aktueller Prozess ID)
  2703. Aufruf   AH 50h
  2704.          BX Segmentadresse von dem neuen PSP
  2705. Rückgabe keine - neues PSP wird als aktuelles von DOS betrachtet
  2706. Anmerkung 1) durch übertragen des PSP Segment Werts in BX und ausgebend eines 50h Aufrufes, DOS speichert
  2707.              den Wert in eine Variable und benutzt diesen Wert immer, wenn ein Dateiaufruf
  2708.              gemacht wird.
  2709.           2) Anmerkung daß in dem PSP (oder PDB) ein Tabelle von 20 (dezimal) offenen Datei
  2710.              Handles ist. Diese Tabelle startet an Offset 18h in dem PSP. Falls ein
  2711.              0FFh in einem Byte ist, dann wird dieser Handle nicht benutzt. Eine Nummer in einer von den
  2712.              Bytes ist ein Index zu eine interne FB Tabelle für den Handle. Als
  2713.              Beispiel das Byte an Offset 18h ist für Handle 0, an Offset 19h Handle
  2714.              1, etc. Bis zu 13h. Falls das höchste Bit gesetzt ist,  dann ist die Datei, die dem Handle
  2715.              zugewiesen ist, nicht gemeinsam mit Kind Prozessen EXEC'd mit Aufruf 4Bh benutzt.
  2716.           3) Funktion 50h ist gefährlich in Hintergrund Transaktionen vor DOS 3.x weil
  2717.              es den falschen Stapel zum speichern von Register benutzt. (dasselbe wie Funktionen
  2718.              0 .. 0Ch in DOS 2.x). Benutz keine Stapel in 3.0+ - voll ablaufinvariant.
  2719.           4) unter DOS 2.x, diese Funktion kann nicht innerhalb eines int 28h Handlers aufgerufen werden
  2720.              ohne Einstellung des kritischen Fehler Kennzeichens.
  2721.           5) Information über offene Dateien, etc. Wird in dem PSP gespeichert, den DOS als aktuellen betrachtet.
  2722.              Falls ein Programm (z.B. ein speicherresistentes Programm) einen zweiten benötigten PSP erstellt,
  2723.              dann der zweite PSP sollte als aktueller gesetzt werden, damit sicher ist, das DOS schließt
  2724.              wie entgegengesetzt zu dem ersten, sobald die zweite Anwendung beendet wird.
  2725.           6) siehe PC Mag Vol.5, No 9, p. 314 für Diskussionen, auch benutzt in BCOPY.ASM
  2726.           7) benutzt von DOS 3.3 PRINT & DEBUG, DesQview 2.01, Windows 1.03, SYMDEB
  2727.              von MASM 4. 0.
  2728.           8) diese Funktion ist verfügbar in der OS/2 DOS Kompatibilitätsbox.
  2729.           9) DOS speichert die PID an eine Stelle, aber die eigentliche Adresse ist Version-
  2730.              abhängig. Die Strategie ist, suchen der PID und dabei seine Adresse
  2731.              suchen. Falls du hast seine Adresse, du kannst überlagern PIDs von den TSR pop-up
  2732.              Code durch peeking und pooking. In dem Initialisierungscode, benutze GetPID
  2733.              (0x50) zum holen der PID. DOS bleibt zwischen den Interrupt Vektoren 0:0 - 0:100
  2734.              und dem PID. Andere Programme können auch da sein, aber DOS auch.
  2735.              Suche in diesem Speicher nach einer Kopie von dem PID. Sobald eine gefunden
  2736.              wird, benutze SetPID (0x51) um einen falschen PID einzustellen. Falls die Stelle wo
  2737.              die original PID Änderungen zu der falsch PID gefunden ist, du hast gefunden die
  2738.              Adresse von dem PID. Nicht vergessen den PID mit SetPID nach jedem Test
  2739.              zu löschen. DOS 2.0 und 2.1 erhalten die PID in zwei Adressen, nicht in einer.
  2740.  
  2741.                                           
  2742. Funktion 51h "benutzt intern von DOS " - holen Programm Segment Prefix
  2743.          * gibt die PSP Adresse von dem aktuell ausführenden Programm zurück
  2744. Aufruf   AH 51h
  2745. Rückgabe BX Adresse vom aktuell ausführenden Programm (Prozess ID)
  2746. Anmerkung Format vom PSP:
  2747.                 Offset     Größe    Beschreibung
  2748.                 00h      2 Bytes    Programm Austiegspunkt
  2749.                 02h        Wort     Speichergröße in Paragraphen
  2750.                 04h        Byte     ungebraucht (0)
  2751.                 05h      5 Bytes    CP/M Style Einsprungspunkt (far Aufruf zu DOS)
  2752.                 0Ah        Wort     Beendigungsadresse (alt int 22h)
  2753.                 0Ch        Wort     Beendigungssegment
  2754.                 0Eh        Wort     break Adresse (alt int 23h)
  2755.                 10h        Wort     break Segment
  2756.                 12h        Wort     Fehler Adresse (alt int 24h)
  2757.                 14h        Wort     Fehler Segment
  2758.                 16h        Wort     Ursprung PSP Segment
  2759.                 18h    20 Bytes     DOS 2.0+ offene Dateien, 0FFh= ungebraucht
  2760.                 2Ch        Wort     DOS 2. 0+ Environment Segment
  2761.                 2Eh       dwort     far Zeiger zum Prozess SS:SP
  2762.                 32h        Wort     DOS 3.x+ max geöffnete Dateien
  2763.                 34h                 DOS 3.x+ Adresse Dateitabelle geöffneter Dateien
  2764.                 36h       dwort     DOS 3.x+ Segment Dateitabelle geöffneter Dateien
  2765.                 38h    24 Bytes     ungebraucht bei DOS Versionen vor 3.3
  2766.                 50h     3 Bytes     DOS Funktionsverteiler (Far Routine)
  2767.                 53h     9 Bytes     ungebraucht
  2768.                 55h                 FCB #1 Erweiterung
  2769.                 5Ch    16 Bytes     FCB #1, gefüllt vom ersten Befehlszeilen Argument
  2770.                 6Ch    20 Bytes     FCB #2, gefüllt vom zweiten Befehlszeilen Argument
  2771.                 80h   128 Bytes     Befehlsende/vorgegebener DTA Puffer
  2772. Anmerkung 1) benutzt in DOS 2.x, 3.x benutzt 62h.
  2773.           2) Funktion 51h ist gefährlich in Hintergrund Transaktionen vor DOS 3.x weil
  2774.              es den falschen Stapel zum speichern von Register benutzt. (dasselbe wie Funktionen
  2775.              0 .. 0Ch in DOS 2.x). Benutz keine Stapel in 3.0+ - voll ablaufinvariant.
  2776.           3) 50h und 51h kann benutzt werden, falls mehr als ein Prozess in einem PC benutzt wird.
  2777.              Als Beispiel, falls ein speicherresistentes Programm eine Datei öffnen muß,
  2778.              kann dies als erstes 51h aufrufen, um den aktuellen ID zu sichern und dann 50h
  2779.              aufrufen um den ID zu seinen PSP einzustellen.
  2780.           4) unter DOS 2.x, diese Funktion kann nicht innerhalb eines int 28h Handlers aufgerufen werden
  2781.              ohne Einstellung des kritischen Fehler Kennzeichens.
  2782.           5) benutzt von DOS 3.3 PRINT, DEBUG.
  2783.           6) diese Funktion ist verfügbar in der OS/2 DOS Kompatibilitätsbox.
  2784.  
  2785.  
  2786. Funktion 52h "benutzt intern von DOS" - IN-VARS
  2787.          * gibt einen Far Zeiger zurück, zu ein verknüpften Liste von DOS Daten Variablen
  2788. Aufruf   AH 52h
  2789. Rückgabe ES:BX Zeiger zu der DOS Liste von Listen, für Laufwerksinformation. Greift
  2790.                 nicht auf das laufwerk zu, deshalb kann die Information in den Tabellen falsch sein, falls
  2791.                 das Laufwerk geändert wurde. Gibt einen Zeiger auf den folgend Bereich
  2792.                 von longword Zeiger zurück:
  2793.                 Bytes  Wert   Beschreibung
  2794.  (allgemein)    -2h,   Wort   Segment vom ersten Speicherkontrollblock verfügbar
  2795.                               für MALLOC
  2796.                 00h    dwort  Far Zeiger zum ersten DOS Festplattenparameterblock
  2797.                 04h    dwort  Far Zeiger zu verknüpften Liste von DOS geöffnete Dateien
  2798.                               Tabellen. (offen Dateien Tabelle Auflistung)
  2799.                 08h    dwort  Far Zeiger zu CLOCK$: Gerätetreiber, ob
  2800.                               installierbar oder speicherresistent
  2801.                 0Ch    dwort  Far Zeiger zum aktuellen CON: Gerätetreiber,
  2802.                               ob installierbar oder speicherresistent
  2803.  
  2804.          (DOS 2.x ausschließlich)
  2805.                 10h    Wort   Anzahl logischer Laufwerke im System
  2806.                 11h    Wort   größte unterstützte logische Sektorgröße
  2807.                 13h    dwort  Far Zeiger zum ersten Plattenpuffer benutzt von dem
  2808.                               logisch Laufwerke. Der Größe von jedem Sektorpuffer
  2809.                               ist gleich der logischen Sektorgröße plus eines 16
  2810.                               Byte Kopfs. (Sektor Puffer Kopf) die Anzahl
  2811.                               dieser Puffer wird durch die CONFIG.SYS. (Sektor
  2812.                               Puffer Aufbau) eingestellt.
  2813.                 17h    ----   Anfang (kein Zeiger. Der echte Anfang!)
  2814.                               vom NUL Gerätetreiber. Dies ist das erste Gerät
  2815.                               in der DOS Liste der Gerätetreiber.
  2816.  
  2817.          (DOS 3.x+)
  2818.                 10h    Wort   größte unterstützte logische Sektorgröße
  2819.                               (die meisten Versionen von DOS sind hardcoded zu 200h)
  2820.                 12h    dwort  Far Zeiger zum Sektor Puffer Aufbau benutzt von
  2821.                               den logischen Laufwerke. (Sektor Puffer Aufbau)
  2822.                 16h    dwort  Far Zeiger zum Laufwerk Pfad und positionieren Information
  2823.                               Tabelle. (Laufwerk Pfad Tabelle)
  2824.                 1Ah    dwort  Far Zeiger zu einer Tabelle von FCBs. Dies Tabelle ist
  2825.                               ausschließlich zulässig falls FCBS=xx in der CONFIG.SYS benutzt wurde
  2826.                 1Eh    Wort   Größe der FCB Tabelle
  2827.                 20h    Byte   Anzahl logischer Laufwerke zur Zeit unterstützt
  2828.                 21h    Byte   Wert von LASTDRIVE= in CONFIG.SYS (vorgegeben 5)
  2829.                 22h 18 Bytes  Anfang (kein Zeiger-der echte Anfang!)
  2830.                               vom NUL Gerätetreiber. Dies ist das erste Gerät
  2831.                               in der DOS Liste der Gerätetreiber.
  2832.                 34h    Byte   Anzahl der JOINed Laufwerke
  2833.  
  2834.  
  2835. Anmerkung 1) dieser Aufruf ist nicht in der OS/2 1.0's DOS Kompatibilitätsbox unterstützt.
  2836.           2) benutzt von DOS 4.0 MEM.EXE, DOS 3.3 ASSIGN.COM, PRINT.COM, SUBST.EXE.
  2837.           3) Artikel in Dr. Dobbs' journal, Juni 1989.
  2838.           4) Festplattenparameterblock
  2839.         Offset Größe   Beschreibung
  2840.         00h    Byte    Nummer Platteneinheit, 0=A, 1=B, etc. Falls dies und das nächste
  2841.                        Byte 0FFh sind, dieser Eintrag ist das Ende der Auflistung und
  2842.                        ist nicht zulässig
  2843.         01h    Byte    Übergebene Nummer der Platteneinheit an das Blocktreibergerät
  2844.                        welche verantwortlich für dieses logisches Laufwerk ist
  2845.         02h    Wort    die logische Sektorgröße des Laufwerks in Bytes
  2846.         04h    Byte    Anzahl Sektoren pro Cluster -1. Die Anzahl der Sektoren
  2847.                        pro Cluster muß eine Potenz von 2 sein
  2848.         05h    Byte    Belegungsumschaltung. Der Umschaltwert wird zum berechnen
  2849.                        der Anzahl Sektoren von der Anzahl Cluster benutzt,
  2850.                        ohne eine Division durchzuführen. Anzahl Sektoren=
  2851.                        Anzahl Cluster << Belegungsumschaltung.
  2852.         06h    Wort    Anzahl reservierter Sektoren am Anfang von dem
  2853.                        logischen Laufwerk. Kann Partition Information enthalten.
  2854.         08h    Byte    Anzahl FATs. Vorgegeben 2
  2855.         09h    Wort    Anzahl Hauptverzeichniseinträge
  2856.         0Bh    Wort    erste Sektor der Daten beinhaltet (Platten Dateien)
  2857.         0Dh    Wort    letzte Cluster Nummer. Anzahl Cluster im Datenbereich
  2858.                        +1. Falls kleiner als 0FF6h die FAT benutzt 12-bit Inhaltsverzeichnis-
  2859.                        einträge, andernfalls 16 Bit Einträge
  2860.         0Fh    Byte    FAT Größe. Größe von einer FAT in logischen Sektoren
  2861.         10h    Wort    Sektornummer vom ersten Hauptverzeichniseintrag
  2862.         12h    dwort   Far Zeiger zu dem Blocktreibergerät
  2863.         16h    Byte    Mediumbeschreibungsbyte (siehe Abschnitt 8)
  2864.         17h    Byte    Kennzeichen Medium. Falls dies 0 ist, wurde auf das Laufwerk zugegriffen.
  2865.                        Falls es -1 ist oder auf -1 gesetzt wird, baut DOS alle Datenstrukturen
  2866.                        beim nächsten Zugriff neu auf, die diesem Laufwerk angeschlossen sind.
  2867.         18h    dwort   Far Zeiger zum nächsten Festplattenparameterblock
  2868.  
  2869.      5) offene Dateien Tabelle
  2870.         Offset Größe   Beschreibung
  2871.         00h    dwort   Far Zeiger zu der nächsten Tabelle in der Liste. Falls der
  2872.                        Offset von diesem Zeiger 0FFFFh ist, dann ist die nächste Tabelle
  2873.                        der abschließende Eintrag und ungültig
  2874.         04h    Wort    Anzahl Tabelleneinträge. Jeder Tabellen Eintrag ist 53 Bytes
  2875.                        lang. Es ist wenigsten ein Eintrag in jeder Tabelle
  2876.                        außer dem Datenstationeintrag
  2877.         06h    ---     Anfang von den offenen Dateien Tabelleneinträge (Anmerkung 6)
  2878.  
  2879.      6) offene Dateien Tabelleneintrag (35h Bytes lang)
  2880.         Offset Größe   Beschreibung
  2881.         00h    Wort    Anzahl Datei Handles die zu dieser Datei zurückgreifen
  2882.         02h    Byte    Zugriffsart (siehe Funktion 3Dh)
  2883.         03h            Unbekannt
  2884.         05h    Wort    Geräteinformation (siehe Funktion 44h/00h)
  2885.         06h    dwort   Far Zeiger zum Geräteinformationskopf falls dies ein Zeichentreiber
  2886.                        ist. Falls dies ein Blocktreiberist, dies ist ein far
  2887.                        Zeiger zu dem Festplattenparameterblock
  2888.         07h    dwort   Zeiger zum Gerätetreiberkopf falls Zeichentreiber;
  2889.                        Zeiger zum DOS Gerätekontrollblock falls Blocktreiber
  2890.                        (Format siehe fn 32h)
  2891.         0Bh    Wort    erster Cluster der Datei
  2892.         0Dh    Wort    Uhrzeit der Datei im gepackten Format
  2893.         0Fh    Wort    Datum der Datei im gepackten Format
  2894.         11h    dwort   Dateigröße
  2895.         15h    dwort   aktuelles Offset in Datei
  2896.         19h    Wort    Unbekannt
  2897.         1Bh    Wort    letzter gelsener Cluster
  2898.         1Dh    Wort    Anzahl Sektoren die den Inhaltsverzeichniseintrag beinhalten
  2899.         1Fh    Byte    Offset vom Inhaltsverzeichniseintrag im Sektor (Byte Offset/32)
  2900.         20h 11 Bytes   Dateiname im FCB Format (kein Pfad, kein Punkt, mit Leer-
  2901.                        zeichen aufgefüllt)
  2902.         2Bh  6 Bytes   PSP Segment vom Dateibesitzer
  2903.         2Dh  3 Bytes   Unbekannt - normalerweise 0
  2904.         31h    Wort    PSP Segment vom Dateibesitzer
  2905.         33h-34h        Unbekannt - normalerweise 0
  2906.  
  2907.      7) Sektorpuffer Kopf: (DOS 2.0+)
  2908.         Offset Größe   Beschreibung
  2909.         00h    dwort   Zeiger zum nächsten Festplattenpuffer, 0FFFFh falls der letzte
  2910.         04h  4 Bytes   Unbekannt
  2911.         08h    Wort    logische Sektornummer
  2912.         10h  2 Bytes   Unbekannt
  2913.         12h    dwort   Zeiger zum DOS Gerätekontrollblock (siehe Funktion 32h)
  2914.  
  2915.  
  2916.      8) Sektorpuffer Aufbau, gefolgt von einem 512 Byte Puffer (DOS 2.x)
  2917.         Offset Größe   Beschreibung
  2918.         00h    dwort   Zeiger zum nächsten Festplattenpuffer, Offset=FFFFh falls der letzte
  2919.         04h    Byte    Laufwerk (0=A, 1=B, etc), FFh falls nicht in Benutzung
  2920.         05h  3 Bytes   ungebraucht? (enthält immer 00h 00h 01h)
  2921.         08h    Wort    logische Sektornummer
  2922.         0Ah    Byte    Anzahl zu schreibender Kopien (1 für nicht-FAT Sektoren)
  2923.         0Bh    Byte    Sektor Offset zwischen Kopien falls mehrfache Kopien
  2924.                        geschrieben worden sind
  2925.         0Ch    dwort   Zeiger zum DOS Gerätekontrollblock (siehe AH=32h)
  2926.         10h    ----    gepufferte Daten
  2927.  
  2928.      9) Sektorpuffer Aufbau, gefolgt von einem 512 Byte Puffer (DOS 3.x)
  2929.         Offset Größe   Beschreibung
  2930.         00h    dwort   Far Zeiger zu dem nächsten Sektorpuffer. Puffer werden
  2931.                        gefüllt in der Anordnung in der sie in der Liste
  2932.                        erscheinen. Der letzte Puffer ist zulässig und hat den Wert
  2933.                        0FFFFFFFFh
  2934.         04h    Byte    Laufwerksnummer. Dies ist das Laufwerk, auf das die aktuellen
  2935.                        Daten in dem Puffer verweisen. 0FFh falls nie benutzt.
  2936.         05h    Byte    Datenart Kennzeichen. Bit Felder welcher Bereich von dem Laufwerk
  2937.                        auf den Puffer verweist.
  2938.                        Bit Beschreibung
  2939.                         0  Start Sektor?
  2940.                         1  FAT Daten
  2941.                         2  Inhaltsverzeichnis oder Unterverzeichnis Daten
  2942.                         3  Datei Daten
  2943.                         4  ---
  2944.                         5  Puffer wird benutzt - kann überschrieben werden, falls gesetzt
  2945.                         6  Puffer ist schlecht
  2946.                         7 --- 
  2947.         06h    Wort    logische Sektornummer der gepuffert Daten
  2948.         08h    Byte    Anzahl zu schreibender Kopien (1 für nicht-FAT Sektoren)
  2949.         09h    Byte    Sektor Offset zwischen Kopien falls mehrfache Kopien
  2950.                        geschrieben worden sind
  2951.         0Ah    dwort   Far Zeiger zum Festplattenparameterblock (siehe fn 32h)
  2952.         0Eh    Wort    nicht benutzt, normalerweise 0
  2953.         10h    ----    gepufferte Daten
  2954.  
  2955.  
  2956.      7) Sektorpuffer Kopf: (DOS 4.0+)
  2957.         DOS 4.x Festplattenpuffer Kopfkette (Array, ein Eintrag pro Kette):
  2958.         Offset Größe   Beschreibung
  2959.         00h    Wort    EMS logische Seitennummer in welcher die Kette speicherresistent ist,
  2960.                        wertlos falls kein EMS benutzt wird
  2961.         02h    dwort   Zeiger zum kleinsten kürzlich benutzten Puffer Kopf. Alle
  2962.                        Puffer in dieser Kette sind in demselben Segment.
  2963.         06h    Wort    Unbekannt - gewöhnlich Null
  2964.  
  2965.     10) Sektorpuffer Aufbau, gefolgt von einem 512 Byte Puffer (DOS 4.x)
  2966.         Offset Größe   Beschreibung
  2967.         00h    Wort    Vorwärts Zeiger, Offset ausschließlich, zu nächsten kleinsten kürzlich
  2968.                        benutzten Puffer
  2969.         02h    Wort    Rückwärts Zeiger, Offset ausschließlich
  2970.         04h    Byte    Laufwerk (0=A, 1=B, etc), 0FFh falls nicht in Benutzung
  2971.         05h    Byte    Datenart Kennzeichen. Bit Felder welcher Bereich von dem Laufwerk
  2972.                        auf den Puffer verweist.
  2973.                         Bit Beschreibung 
  2974.                         0   Start Sektor?
  2975.                         1   FAT Daten
  2976.                         2   Inhaltsverzeichnis oder Unterverzeichnis Daten
  2977.                         3   Datei Daten
  2978.                         4   ---
  2979.                         5  Puffer wird benutzt - kann überschrieben werden, falls gesetzt
  2980.                         6  Puffer ist schlecht
  2981.                         7 --- 
  2982.         06h    dwort   logische Sektornummer
  2983.         0Ah    Byte    Anzahl zu schreibender kopien
  2984.                        für FAT Sektoren, dieselbe Anzahl wie FATs
  2985.                        für Daten und Inhaltsverzeichnis Sektoren, gewöhnlich 1
  2986.         0Bh    Wort    Offset in Sektoren zwischen Kopien zum schreiben für
  2987.                        FAT Sektoren
  2988.         0Dh    dwort   Zeiger zum DOS Gerätekontrollblock (siehe AH= 32h)
  2989.         11h  3 Bytes   Unbekannt
  2990.         14h            gepuffert Daten
  2991.  
  2992.     11) Laufwerkspfad Tabelleneintrag (Array, ein 51h-byte Eintrag pro Laufwerk):
  2993.         Offset Größe   Beschreibung
  2994.         00h 64 Bytes   aktueller vorgegebener ASCIIZ Pfadname mit Laufwerksbuchstabe,
  2995.                        Doppelpunkt, und führenden Backslash (\)
  2996.         44h    Byte    Kennzeichenbyte. Alle zulässige Einträge enthalten ein 40h, letzter
  2997.                        Eintrag enthält 00h.
  2998.                   Bits 15 Netzwerklaufwerk
  2999.                        14 physisches Laufwerk
  3000.                        13 JOINed, aktueller Pfad ist eigentlicher Pfad ohne
  3001.                           SUBST Laufwerksbuchstabe im Pfad kann abweichen vom
  3002.                           logischen Laufwerksnamen
  3003.                        12 SUBSTed, aktueller Pfad ist eigentlicher Pfad ohne
  3004.                           SUBST Laufwerksbuchstabe im Pfad kann abweichen vom
  3005.                           logischen Laufwerksnamen
  3006.         45h    dwort   Far Zeiger zum aktuellen Festplattenparameterblock
  3007.         49h    Wort    aktueller Block oder Spur/Sektornummer für dieses Inhaltsverzeichnis
  3008.                        0 falls Hauptverzeichnis, -1 falls nie Zugriff erhielt
  3009.         4Bh    dwort   Unbekannt. Far Zeiger zu (?). Gewöhnlich -1
  3010.         4Fh    Wort    Offset vom '\' im aktuellen Pfadfeld präsentiert das
  3011.                        Hauptverzeichnis vom logischen Laufwerk (2 falls nicht SUBSTed oder JOINed,
  3012.                        andernfalls Anzahl Bytes in SUBST/JOIN Pfad)
  3013.  
  3014.                                                                                
  3015. Funktion 53h "intern von DOS benutzt" - übersetzen BPB
  3016.          * übersetzt BPB (BIOS Parameterblock, siehe unterhalb) in ein DOS
  3017.            Festplattenblock (siehe Funktionsaufruf 32h).
  3018. Aufruf   AH 53h
  3019.          DS:SI Zeiger zum BPB (BIOS Parameterblock)
  3020.          ES:BP Zeiger zum Pufferbereich für DOS Festplattenblock
  3021.                Anordnung von BPB:
  3022.                Offset    Größe  Beschreibung
  3023.                00h-01h   Wort   Bytes pro Sektor, erhalten von DDB Bytes 02h-03h.
  3024.                02h       Byte   Sektoren pro Cluster, erhalten von (DDB Byte 4)+1
  3025.                03h-04h   Wort   reservierte Sektoren, erhalten von DDB Bytes 06h-07h
  3026.                05h       Byte   Anzahl FATs, erhalten von DDB Byte 08h
  3027.                06h-07h   Wort   # von Hauptverzeichniseinträge, erhalten von DDB Bytes 09h-0Ah
  3028.   für DOS 3.x: 08h-09h   Wort   gesamte Anzahl Sektoren, erhalten von:
  3029.                                 ((DDB Bytes 0Dh-0Eh)-1) * (Sektoren pro Cluster
  3030.                                 (BPB Byte 2)) + (DDB Bytes 0Bh-0Ch)
  3031.   für DOS 4.x:                  auf Null gesetzt, falls Partition größer als 32Mb ist,
  3032.                                 setzt dwort an 15h auf die eigentliche Anzahl Sektoren
  3033.                0Ah       Wort   Mediumbeschreibungsbyte, erhalten von DDB Byte 16h
  3034.                0Bh-0Ch   Wort   Anzahl Sektoren pro FAT, holen von DDB Byte 0Fh
  3035.   für DOS 3.x: 0Dh       Wort   Anzahl Sektoren pro Spur
  3036.                0Fh       Wort   Anzahl Köpfe
  3037.                11h       dwort  Anzahl versteckter Sektoren
  3038.                15h    11 Bytes  reserviert
  3039.   für DOS 4.x: 15h       dwort  gesamte Anzahl Sektoren falls Wort an 08h Null
  3040.                                 enthält
  3041. Rückgabe Unbekannt
  3042. Anmerkung diese Funktion ist dokumentiert wie 'SetDPB' in dem ZENITH MS-DOS 3.05 TRM.
  3043.  
  3044.  
  3045. Funktion 54h holen VERIFY Einstellung
  3046.              holen Zustand des VERIFY Kennzeichens
  3047. Aufruf   AH 54h
  3048. Rückgabe AL 00h falls VERIFY aus
  3049.             01h falls VERIFY an
  3050. Anmerkung 1) Kennzeichen kann mit Funktion 2Eh eingestellt werden.
  3051.           2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  3052.          
  3053.                                           
  3054. Funktion 55h "intern von DOS benutzt" - erstellen "Kind" PSP
  3055.          * erstellen PSP: ähnlich wie Funktion 26h (welche ein neuen Programm Segment
  3056.                 Prefix an Segment in DX erstellt), außer das ein "Kind" PSP erstellt wird,
  3057.                 schneller als as existierende zu kopieren.
  3058. Aufruf   AH 55h
  3059.          DX Segmentadresse an welcher das neue PSP erstellt werden soll.
  3060. Rücklauf Unbekannt
  3061. Anmerkung 1) diese Funktion ist ähnlich der Funktion 26h welche erstellt ein PSP, außer daß ungleich
  3062.              der Funktion 26h die Segmentadresse von dem Ursprungsprozess erhalten wird von dem
  3063.              aktuellen Prozess ID, eher als von dem CS Wert auf dem Stapel (von dem
  3064.              INT 21h Aufruf). DX hat den neuen PSP Wert und SI enthält den Wert der
  3065.              im PSP:2 abgestellt wird (Anfang vom Speicher).
  3066.           2) Funktion 55 ist nur ein Ersatz für Funktion 26h. Es wird der aktuelle PSP zu
  3067.              der Segmentadresse DX kopiert, mit der Ergänzung, daß SI das neue
  3068.              Speicher Anfang Segment enthält. Dies setzt voraus, daß Funktion
  3069.              26h SI auf das gefundene Segment setzt in dem aktuell PSP und dann die
  3070.              Funktion 55h aufruft.
  3071.  
  3072.                                           
  3073. Funktion 56h umbenennen einer Datei
  3074. Aufruf   AH 56h
  3075.          DS:DX Zeiger zu ASCIIZ mit altem Pfadname
  3076.          ES:DI Zeiger zu ASCIIZ mit neuem Pfadname
  3077. Rückgabe CF gelöscht erfolgreiches umbenennen
  3078.             gesetzt AX Fehlercode (02h, 03h, 05h, 11h)
  3079. Anmerkung 1) arbeitet mit Dateien in demselben logisch Laufwerk ausschließlich.
  3080.           2) Globale Zeichen sind im Dateinamen nicht zugelassen.
  3081.           3) der Name von einer Datei ist der volle Pfadname. Der volle Pfadname der Datei kann
  3082.              geändert sein, solange die eigentliche Dateiname.EXT unverändert bleibt. Ändern
  3083.              des Pfadnamens erlaubt es die Datei von Unterverzeichnis zu
  3084.              Unterverzeichnis auf einem logischen Laufwerk "zu verschieben" ohne das
  3085.              die Datei eigentlich kopiert wird.
  3086.           4) DOS 3.x erlaubt das Umbenenne von verzeichnissen.
  3087.           5) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  3088.           6) TOS:$ 56 RENAME. Ähnlich wie MS-DOS 2.x.
  3089.  
  3090.  
  3091. Funktion 57h holen/einstellen Datum und Uhrzeit einer Datei
  3092.          lesen oder modifizieren Uhrzeit- und Datumseintrag eines Dateieintrages
  3093. Aufruf   AH 57h
  3094.          AL Funktionscode
  3095.             00h holen Datum und Uhrzeit
  3096.             01h einstellen Datum und Uhrzeit
  3097.                 CX einzustellende Uhrzeit
  3098.                 DX einzustellendes Datum
  3099.             02h Unbekannt (DOS 4.0+)
  3100.             03h Unbekannt
  3101.             04h Unbekannt (DOS 4.0+)
  3102.          BX Dateinummer
  3103. Rückgabe CF gelöscht CX Uhrzeit vom letzten Schreibzugriff (falls AL=0)
  3104.                      DX Datum von letzten Schreibzugriff (falls AL=0)
  3105.             gesetzt AX Fehlercode (01h, 06h)
  3106. Anmerkung 1) Datum/Uhrzeit Formate sind:
  3107.              CX Bits 0Bh-0Fh Stunden (0-23)         DX Bits 09h-0Fh Jahr (relative zu 1980)
  3108.                      05h-0Ah Minuten (0-59)                 05h-08h Monat (0-12)
  3109.                      00h-04h Sek. in 2er Schritte (0-29)    00h-04h Tag des Monats (0-31)
  3110.           2) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  3111.           3) TOS:$ 57 GSDTOF.
  3112.  
  3113.    
  3114. Funktion 58h holen/einstellen Belegungsstrategie (DOS 3.0+)
  3115. Aufruf   AH 58h
  3116.          AL 00h holen aktuelle Strategie
  3117.             01h einstellen neue aktuelle Strategie
  3118.                         BL neue Strategie
  3119.                         00h ersten passenden - wählt den niedrigsten Block im Speicher
  3120.                             welcher paßt (dies ist der vorgegebene Weg). (benutzt
  3121.                             erste Speicherblock der groß genug ist)
  3122.                         01h besten passenden - wählt den kleinsten Block welcher
  3123.                             der Anforderung genügt.
  3124.                         02h letzten passenden - wählt den höchsten Block welcher paßt
  3125. Rücklauf CF gelöscht erfolgreich
  3126.                      AX Strategie Code
  3127.             gesetzt  Fehler
  3128.                      AX Fehlercode( 01h)
  3129. Anmerkung 1) dokumentiert in ZENITH DOS Version 3.1, einige im erweiterten MSDOS.
  3130.           2) die Unterfunktion einstellen akzeptiert irgendein Wert in BL; 2 oder größer bedeutet den letzten
  3131.              passenden. Die Unterfunktion holen, gibt den letzten eingestellten Wert zurück, deshalb sollten
  3132.              Programme kontrollieren, ob der Wert größer oder gleich 2 ist.
  3133.           3) für Diskussion vom besten passenden kontra ersten passenden Belegungsstrategie, siehe
  3134.              Knuth, *Fundamental Algorithms.* mit sehr wenigen worten, Knuth findet daß ersten
  3135.              passenden Methoden sind fern übergeordnet zum besten passenden, welche erhöht den
  3136.              Belegungsaufwand und die Speicherzersplitterung. Der "letzte" passenden den DOS
  3137.              anbietet ist nichts andere als ein erster passender, wobei die Suche an dem
  3138.              anderen Ende von der Kette beginnt (der Algorithmus nimmt den ersteen passenden
  3139.              Block, der ihm bei der Suche begegnet).
  3140.   
  3141.  
  3142. Funktion 59h holen erweiterten Fehlercode (DOS 3. 0+)
  3143.          der Funktionsaufruf (59h) holen erweiterten Fehler ist geplant um eine allgemeine
  3144.          Einstellung von Fehlercodes zu liefern und um umfassendere Information über den Fehler
  3145.          an die Anwendung weiterzugeben. Die Information die von dem Funktionsaufruf 59h zurückgegeben wird , in
  3146.          Beifügung zu dem Fehlercode, ist die Fehler Klasse bzw. Gruppe, der Ort, und die
  3147.          empfohlene Handlung. Die Fehler Klasse bzw. Gruppe liefert Information über den Fehlertyp
  3148.          (Hardware, intern, System, etc.). Der Ort liefert Information über den Bereich
  3149.          der in den Ausfall verwickelt ist (serielles Gerät, Blocktreiber, Netzwerk,
  3150.          oder Speicher). Die empfohlene Handlung liefert eine vorgegebene Handlung für
  3151.          Programme die den wesentliche Fehlercode nicht verstehen.
  3152.  
  3153.          Neu geschriebene Programme sollte die Benutzung der erweiterten Fehler unterstützen beide von
  3154.          Interrupt 24h Hard Error Handler und nach irgendeinem int 21h Funktionsaufruf. FCB
  3155.          Funktionsaufrufe zeigen einen Fehler an, indem 0FFh in AL zurückgeben wird. Handle Funktion
  3156.          setzen das Carry Flag (CF) um einen Fehler anzuzeigen, und den den Fehlercode
  3157.          in AX zurück. Int 21h Handle Funktionsaufrufe für DOS 2.x geben Fehlercodes von 0-18
  3158.          zurück. Int 24h Handle Funktionsaufrufe geben Fehlercodes von 0-12 zurück.
  3159.          Aber die Anwendung kann irgendeinen von den Fehlercodes bekommen, die in
  3160.          der erweiterten Fehlercode Tabelle benutzt werden, indem die Funktion 59h aufgerufen wird.
  3161.          Handle Funktionsaufrufe für DOS 3.x können irgendwelche von den Fehlercodes zurückgeben. Jedoch,
  3162.          wird empfohlen daß dem Funktionsaufruf ein Aufruf der Funktion 59h folgt, um
  3163.          die Fehler Klasse bzw. Gruppe, den Ort, und die empfohlene Handlung zu bekommen.
  3164.  
  3165.          Die Funktion holen erweiterten Fehler (59h), kann immer aufgerufen werden, ungeachtet dessen
  3166.          ob der vorhergehende DOS Aufruf ein alter Entwurf (Fehlercode in AL) oder neuer Entwurf
  3167.          (Carry Bit). Kann auch innerhalb eines int 24h Handlers benutzt werden.
  3168.  
  3169.         Du kannst entweder AL oder das Carry Bit kontrollieren um festzustellen das kein Fehler aufgetreten ist
  3170.         und die Funktion 59h ausschließlich dann aufrufen, falls da ein Fehler war, oder einfach
  3171.         immer die Funtion 59h aufrufen um festzustellen ob ein fehler aufgetreten ist
  3172.         oder nicht. Sobald die Funktion 59h aufgerufen wird, gibt diese in AX= 0 zurück, falls der
  3173.         vorhergehende DOS Aufruf erfolgreich war.
  3174.  
  3175.       Verschiedenartige Versionen von IBM's DOS, MSDOS, OEM kundenspezifische Versionen von MSDOS,
  3176.       Digital's DRDOS, und andere DOS Umgebungsnachbildungen geben manchmal unter-
  3177.       schiedliche Fehlercodes für dieselbe Funktion zurück. DIes sollte sorgfältig geprüft werden, falls
  3178.       auf eine wesentliche Fehlerbedingung geprüft wird.
  3179.  
  3180. Aufruf   AH 59h
  3181.          BX Version Code (0000 für DOS 3.0 und 3.1)
  3182. Rückgabe AX erweiterter Fehlercode:
  3183.             01h ungültige Funktionsnummer
  3184.             02h Datei nicht gefunden
  3185.             03h Pfad nicht gefunden
  3186.             04h zu viele offene Dateien, keine freien Handles mehr
  3187.             05h Zugriff verweigert
  3188.             06h ungültiges Handle
  3189.             07h Speicherkontrollblöcke zerstört
  3190.             08h ungenügend Speicher
  3191.             09h ungültige Speicherblockadresse
  3192.             0Ah ungültiges Environment
  3193.             0Bh ungültiges Format
  3194.             0Ch ungültiger Zugriffscode
  3195.             0Dh ungültige Daten
  3196.             0Eh reserviert
  3197.             0Fh ungültiges Laufwerk wurde spezifiziert
  3198.             10h Versuch das aktuelle Inhaltsverzeichnis zu entfernen
  3199.             11h nicht dasselbe Gerät
  3200.             12h keine weiteren Dateien
  3201.             13h Versuch auf schreibgeschützte Diskette zu schreiben
  3202.             14h Unbekannte Einheit
  3203.             15h Laufwerk nicht bereit
  3204.             16h Unbekannter Befehl
  3205.             17h CRC Fehler
  3206.             18h falsche Datenlänge
  3207.             19h Positionierungsfehler
  3208.             1Ah Unbekannter Gerätetyp
  3209.             1Bh Sektor nicht gefunden
  3210.             1Ch Drucker hat kein Papier mehr
  3211.             1Dh Schreibfehler
  3212.             1Eh Lesefehler
  3213.             1Fh allgemeiner Fehler
  3214.             20h Sharing Übertretung
  3215.             21h Sperren Übertretung
  3216.             22h unerlaubter Disketten-Wechsel
  3217.             23h FCB nicht verfügbar
  3218.             24h Sharing Pufferüberlauf
  3219.             25h reserviert
  3220.             26h "
  3221.             27h "
  3222.             28h "
  3223.             29h "
  3224.             2Ah "
  3225.             2Bh "
  3226.             2Ch "
  3227.             2Dh "
  3228.             2Eh "
  3229.             2Fh "
  3230.             30h "
  3231.             31h reserviert
  3232.             32h Netzwerk: Anforderung wird nicht unterstützt (DOS 3.1 + MS Netzwerke)
  3233.             33h Remote Computer nicht angeschlossen
  3234.             34h doppelter Name auf Netzwerk
  3235.             35h Netzwerk: Name nicht gefunden
  3236.             36h Netzwerk: beschäftigt
  3237.             37h Netzwerk: Gerät existiert nicht mehr
  3238.             38h NETBIOS Befehlsgrenze überschritten
  3239.             39h Netzwerk: Adapter Hardwarefehler
  3240.             3Ah falsche Antwort vom Netzwerk
  3241.             3Bh unerwarteter Netzwerkfehler
  3242.             3Ch unverträglicher remote Adapter
  3243.             3Dh Drucker Warteschlange voll
  3244.             3Eh nicht genug Platz für Druckdatei
  3245.             3Fh Druckdatei war gelöscht
  3246.             40h Netzwerk: Name war gelöscht
  3247.             41h Netzwerk: Zugriff verweigert
  3248.             42h Netzwerk: falscher Gerättyp
  3249.             43h Netzwerk: Name nicht gefunden
  3250.             44h Netzwerk: Namensgrenze überschritten
  3251.             45h NETBIOS Sitzungslimit überschritten
  3252.             46h temporäre Pause
  3253.             47h Netzwerk: Anforderung nicht akzeptiert
  3254.             48h Drucken oder Festplattenumleitung angehalten (DOS 3.1 + MS Netzwerke)
  3255.             49h reserviert
  3256.             4Ah "
  3257.             4Bh "
  3258.             4Ch "
  3259.             4Dh "
  3260.             4Eh "
  3261.             4Fh reserviert
  3262.             50h Datei existiert
  3263.             51h reserviert
  3264.             52h kann nicht anfertigen Inhaltsverzeichniseintrag
  3265.             53h versagen auf Interrupt 24h
  3266.             54h zu viele Umleitungen
  3267.             55h duplizieren Umleitung
  3268.             56h ungültiges Passwort
  3269.             57h ungültiger Parameter
  3270.             58h Netzwerk: Gerätefehler
  3271.          BH Klasse bzw. Gruppe vom Fehler:
  3272.             01h kein Speicherplatz mehr auf dem Medium
  3273.             02h augenblickliches Zugriffsverbot
  3274.             03h keine Berechtigung (Zugriff verweigert)
  3275.             04h intern
  3276.             05h Hardwareausfall
  3277.             06h Systemausfall
  3278.             07h Fehler im Anwenderprogramm
  3279.             08h nicht gefunden
  3280.             09h ungültiges Format
  3281.             0Ah Datei ist gesperrt
  3282.             0Bh Media Fehler (falsches Datenträger ID, Festplattenausfall)
  3283.             0Ch schon existiert
  3284.             0Dh Unbekannt
  3285.          BL vorgeschlagene Handlung:
  3286.             01h nochmal wiederholen
  3287.             02h nochmal wiederholen anch einer Pause
  3288.             03h Anwendereingabe
  3289.             04h abbrechen nach Säuberungsaktion
  3290.             05h sofort abbrechen
  3291.             06h ignorieren
  3292.             07h nochmal wiederholen, wenn Anwender Fehler behoben hat
  3293.          CH Ort (wo sich der Fehler ereignete):
  3294.             01h Unbekannt oder nicht geeignet
  3295.             02h Blocktreiber
  3296.             03h Netzwerk
  3297.             04h serielles Gerät
  3298.             05h Speicher
  3299. Anmerkung 1) nicht alle DOS Funktionen benutzen das Carry Flag um auf einen Fehler hinzuweisen. Carry
  3300.              sollte ausschließlich bei Funktionen benutzt werden, bei denen die Verwendung dokumentiert ist.
  3301.           2) keine der DOS Funktionen welche vor 2.0 existierten, benutzen das Carry Flag
  3302.              Fehleranzeiger. Viele von ihnen benutzen das Register AL um auf einen Fehler hinzuweisen.
  3303.              Bei einem Fehler wird gewöhnlich 0FFh in AL übertragen. Die meisten, aber nicht alle, der "neuen"
  3304.              (2.x,3.x) Funktionen benutzen das Carry Flag, und die meisten, aber nicht alle, von den "alten"
  3305.              (1.x) Funktionen benutzen AL.
  3306.           3) bei der Rückkehr, sind CL,DI,DS,DX,ES,BP, und SI zerstört - sichern bevor
  3307.              diese Funktion aufegrufen wird, falls verlangt.
  3308.           4) DOS 2.x Fehlercodes: falls die Funktionsaufrufe 38h-57h mit DOS 2.x benutzt werden,
  3309.              um zu prüfen, ob sich ein Fehler ereignet hat, sollte das AX Register
  3310.              auf die folgend Fehlercodes überprüft werden:
  3311.              Funktion  Fehlercode   Funktion  Fehlercode   Funktion  Fehlercode
  3312.              38h       2            41h       2,3,5        4Ah       7,8,9
  3313.              39h       3,5          42h       1,6          4Bh       1,2,3,5,8,10,11
  3314.              3Ah       3,5,15       43h       1,2,3,5      4Eh       2,3,18
  3315.              3Bh       3            44h       1,3,5,6      4Fh       18
  3316.              3Ch       3,4,5        45h       4,6          56h       2,3,5,17
  3317.              3Dh       2,3,4,5,12   46h       4,6          57h       1,6
  3318.              3Eh       6            47h 15
  3319.              3Fh       5,6          48h 7,8
  3320.              40h       5,6          49h 7,9
  3321.           5) Anmerkung die erweiterten Fehlercodes 13h bis 1Fh entsprechen den Fehler-
  3322.              codes 00h bis 0Ch die vom int 24h zurückgegeben werden.
  3323.           6) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  3324.  
  3325.  
  3326.  
  3327. Funktion 5Ah erstellen temporäre Datei
  3328.              erstellen eindeutige Datei (zur temporären Benutzung) (DOS 3.0+)
  3329. Aufruf   AH 5Ah
  3330.          DS:DX Zeiger zum Puffer der ein ASCIIZ Inhaltsverzeichnispfad
  3331.                beendet mit einem Backslash (\) beinhaltet. Der Puffer muß wenigsten 13
  3332.                freie Bytes nach dem Backslash haben, wohin der Dateiname und die
  3333.                Erweiterung geschrieben wird.
  3334.          CX Dateiattribut
  3335. Rückgabe CF gelöscht AX Dateinummer (Handle)
  3336.                      DS:DX neuer ASCIIZ Pfadname
  3337.             gesetzt  AX Fehlercode (03h, 05h)
  3338. Anmerkung 1) die erstellte Datei ist wahrlich nicht "temopär". Sie muß durch den
  3339.              Anwender entfernt werden.
  3340.           2) falls ein Dateiname erstellt werden soll, der schon in dem aktuellen Inhaltsverzeichnis
  3341.              existiert, ruft sich diese Funktion wieder selbst mit einem anderen eindeutigen Dateinamen
  3342.              auf, bis ein eindeutiger Dateiname gefunden worden ist.
  3343.           3) der temporäre Dateiname besteht gewöhnlich aus Buchstaben und Zahlen.
  3344.              Es wird keine Dateierweiterung erzeugt.
  3345.           4) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  3346.  
  3347.  
  3348. Funktion 5Bh erstellen einer neuen Datei (DOS 3.0+)
  3349. Aufruf   AH 5Bh
  3350.          DS:DX Segment/Offset Zeiger zu einem ASCIIZ Pfadname
  3351.          CX Datei Attribut
  3352. Rückgabe CF gelöscht AX Dateinummer
  3353.                         DS:DX neuer ASCIIZ Pfadname
  3354.             gesetzt AX Fehlercode (03h, 04h, 05h, 50h)
  3355. Anmerkung 1) ungleich Funktion 3Ch, Funktion 5Bh versagt falls die Datei schon existiert.
  3356.           2) die neue Datei wird im lese/schreiben Modus geöffnet.
  3357.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  3358.  
  3359.                                           
  3360. Funktion 5Ch sperren/entsperren Dateizugriff (DOS 3.0+)
  3361. Aufruf   AH 5Ch
  3362.          AL 00h sperren Dateibereich
  3363.             01h entsperren Dateibereich
  3364.          BX Dateinummer
  3365.          CX:DX Start Offset des zu sperrenden Bereiches
  3366.          SI:DI höchste/niedrigste Größe des zu sperrenden Bereiches
  3367. Rückgabe CF gelösch erfolgreich
  3368.             gesetzt AX Fehlercode (01h,06h,21h)
  3369. Anmerkung 1) Entsperre alle Dateien vor dem Beenden oder unbestimmt Ergebnisse können auftreten.
  3370.              Programme die Datei Sperrung benutzen,  sollten den int 23h (Control-C Anwender
  3371.              Adresse) und den int 24h (Kritische Fehler Routine Adresse) abfangen und
  3372.              die Dateien entsperren, bevor an den Anrufer zurückgegeben wird.
  3373.           2) Programme hervorgebracht mit EXEC, schleppen alle die Ursprungsdateinummern mit,
  3374.              aber nicht die Dateisperren.
  3375.           3) dieser Aufruf ist ausdrücklich in der OS/2 Kompatibilitätsbox unterstützt.
  3376.           4) es kann eine vollständige Datei, irgendwelche Teile von einer Datei, oder verschiedene Stück von
  3377.              derselben Datei gesperrt werden. Als Beispiel, es ist wirkungsvoller einen Bereich in
  3378.              einer Datenbank zu sperren, der einen einzelnen Satz enthält als die Datei vollständig
  3379.              zu sperren.
  3380.           5) Es sollte nur soviel von einer Datei gesperrt werden, wie echt benötigt wird, und ausschließlich
  3381.              nur solange wie notwendig. Wenn auf eine Datei gemeinsam zugegriffen und oft
  3382.              aktualisiert wird, dauerndes sperren und entsperren kann den Dateizugriff
  3383.              spürbar verlangsamen.
  3384.  
  3385.  
  3386. Funktion 5Dh nicht dokumentiert - Multifunktion
  3387.          * DOS intern - teilweise (DOS 3.x+)
  3388. Aufruf   AH 5Dh
  3389.          AL Unterfunktion
  3390.             00h indirekter Funktionsaufruf
  3391.                 DS:DX Zeiger zum Puffer der die Registerwerte beinhaltet
  3392.                       AX, BX, CX, DX, SI, DI, DS, ES für ein Aufruf von
  3393.                                 int 21h 
  3394.                       Rückgabe  entsprechend der aufgerufenen Funktion
  3395.                       Anmerkung kontrolliert nicht AH. Ungültige Werte können das
  3396.                                 Abstürzen des Systems veranlassen.
  3397.             01h SYNC? (DOS 3.1+)
  3398.                       Parameter Unbekannt
  3399.                       Anmerkung 1) tut etwas mit jeder Plattendatei in dem System.
  3400.                                    Dateitabelle zu welcher geschrieben wurde.
  3401.                                 2) falls Remote Datei, ruft int 2Fh/fn1107h.
  3402.                                 3) scheint den Uhrzeiteintrag von allen offenen
  3403.                                    Dateien zu denen geschreiben wurde zu aktualisieren.
  3404.             02h SHARE.EXE? (DOS 3.1+)
  3405.                       Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
  3406.             03h SHARE.EXE? (DOS 3.1+)
  3407.                       Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
  3408.             04h SHARE.EXE Funktionen? (DOS 3.1+)
  3409.                       Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
  3410.             05h Netzwerk Funktionen? (DOS 3.1+)
  3411.                       DS:DX Zeiger zum Puffer (siehe AX=0Ah), ausschließlich die Felder am
  3412.                             Offset 12h, 14h werden benutzt
  3413.                       Anmerkung Fehler falls SHARE nicht geladen ist (ruft fn 52h+4Ah)
  3414.             06h holen Adresse von kritischen Fehler Kennzeichen
  3415.                       DS:DX Zeiger zum Puffer (siehe AX=0Ah), ausschließlich die Felder am
  3416.                             Offset 12h, 14h werden benutzt
  3417.                       Rückgabe CX Unbekannter Wert
  3418.                                DX Unbekannter Wert
  3419.                                DS:SI Zeiger zum kritischen Fehler Kennzeichen
  3420.                       Anmerkung dieser Aufruf erledigt eine Anzahl von anderen Arbeiten und gibt
  3421.                                 zusätzlich den Zeiger zur Einstellung des CritErr Kennzeichens zurück
  3422.                                 erlaubt die Benutzung der Funktionen 50h/51h vom int 28h
  3423.                                 unter DOS 2.x durch den Zwang den richtigen Stapel zu benutzen.
  3424. (LANtastic) 07h Rückgabe umgeleiteter Druckermodus
  3425.                       Rückgabe DL 00 Ausgabe ist kombiniert
  3426.                                01h Ausgabe ist separat
  3427.                       Anmerkung der aktuelle Druckermodus (jede Druckerausgabe
  3428.                                 kombinierte oder separat) wird zurückgegeben.
  3429. (LANtastic) 08h Einstellen umgeleiteter Druckermodus (jede Druckerausgabe
  3430.                       DL 00h einstellen umgeleitete Ausgabe ist kombiniert
  3431.                          01h einstellen umgeleitete Ausgabe ist separat.
  3432.                          (Startet stillschweigend einen neuen Druckauftrag)
  3433.                       Rückgabe keine
  3434.                       Anmerkung 1) der aktuelle Druckermodus (jede Druckerausgabe
  3435.                                 kombiniert oder separat) kann einstellt werden.
  3436.                                 2) kann von COMMAND.COM benutzt sein
  3437. (LANtastic) 09h Löscht Druckerausgabe
  3438.                       Rückgabe keine
  3439.                       Anmerkung 1) Druckerausgabe ist gelöscht auf und ein neuer Druckenauftrag
  3440.                                    wird gestartet. Wenn kein zu löschende Ausgabe existiert,
  3441.                                    dann hat diese Funktion keine Wirkung.
  3442.                                 2) kann von COMMAND.COM benutzt sein
  3443.             09h Unbekannt - kann von COMMAND.COM benutzt sein
  3444.             0Ah einstellen Fehlerinformation (Fehler, Klasse bzw. Gruppe, Handlung, und Ort)
  3445.                         DS:DX Adresse der 11-Worte Fehlerinformationstabelle
  3446.                               Format der Fehlerinformationstabelle:
  3447.                               Offset  Größe  Beschreibung
  3448.                               00h     Wort   Wert der beim nächsten Aufruf von fn 59h
  3449.                                              in AX zurückgegeben wird
  3450.                               02h     Wort   Wert der beim nächstes Aufruf von fn 59h
  3451.                                              in BX zurückgegeben wird
  3452.                               04h     Wort   CX
  3453.                               06h     Wort   DX
  3454.                               08h     Wort   SI
  3455.                               0Ah     Wort   DI
  3456.                               0Ch     Wort   DS
  3457.                               0Eh     Wort   ES
  3458.                               10h     Wort   reserviert (0)
  3459.                               12h     Wort   Unbekannt (0 für DOS 3.1)
  3460.                               14h     Wort   Unbekannt (0 für DOS 3.1)
  3461. Rückgabe CX Unbekannter Wert
  3462.          DX Unbekannter Wert
  3463.          DS:SI (für 06h) Zeiger zum kritischen Fehler Kennzeichen
  3464. Anmerkung 1) dies anrufen scheint viele unterschiedlich Funktionen zu haben.
  3465.           2) Funktion 0Ah; DOS 3.1+.
  3466.           3) Funktion 06h; Einstellung CritErr Kennzeichen erlaubt die Benutzung der Funktionen 50h/51h vom
  3467.              int 28h unter DOS 2.x durch den Zwang den richtigen Stapel zu benutzen.
  3468.           4) Funktionen 07h, 08h, 09h sind identisch in DOS 3.1 und rufen int 2Fh
  3469.              fn1125h auf.
  3470.  
  3471.  
  3472. Funktion 5Eh Netzwerk Drucker (teilweise dokumentiert von Microsoft)
  3473.              DOS 3.1+ mit Netzwerk Software
  3474. Aufruf   AH 5Eh
  3475.          AL 00h holen Maschinenname
  3476.                 DS:DX Zeiger zum 16-byte Puffer für ASCIIZ Name
  3477.                 Rückgabe CH 00h falls Name nicht definiert ist
  3478.                             <>0 Name ist definiert
  3479.                          CL 00h Name nicht vorhanden
  3480.                             <>0 NetBIOS Nummer des Namens
  3481.  
  3482.                          DS:DX Zeiger zum ASCIIZ Name falls CH <>0
  3483.                 Anmerkung der ASCIIZ Name ist eine 15 Byte lange Zeichenkette, mit Nullen
  3484.                           auf die Länge aufgefüllt.
  3485.             01h einstellen Maschinenname
  3486.                 CH 00h Name löschen
  3487.                    <>0 einstellen Name
  3488.                 CL Nummer des Namens
  3489.                 DS:DX Zeiger zum ASCIIZ Name
  3490.             02h einstellen Zeichenkette zur Druckersteuerung
  3491.                 BX Index Umleitungsliste
  3492.                 CX Länge der einzustellenden Zeichenkette (max 64 Bytes)
  3493.                 DS:SI Zeiger zum Zeichenketten Puffer
  3494.                 Anmerkung 1) einstellen Zeichenkette erstellt eine Zeichenkette die
  3495.                              immer zu dem Netzwerkdrucker gesendet wird, wenn eine Datei an
  3496.                              den Drucker gesendet wird.
  3497.                           2) LANtastic LANOS bearbeitet diese Anforderung nicht,
  3498.                              seit die Druckereinstellungen durch den Systemverwalter
  3499.                              kontrolliert werden, indem das Programm NET_MGR benutzt
  3500.                              wird. Wie auch immer, der Systemaufruf gibt
  3501.                              keine Fehler zurück.
  3502.             03h holen Zeichenkette zur Druckersteuerung
  3503.                 BX Index Umleitungsliste
  3504.                 ES:DI Zeiger zum 64-byte Zeichenketten Puffer
  3505.                 Rückgabe CX Länge der eingestellten Zeichenkette (max 64 Bytes)
  3506.                 Anmerkung 1) dieser Aufruf gibt die Zeichenkette zurück, die mit der
  3507.                              vorhergehenden fn 02h eingestellt wurde.
  3508.                           2) LANtastic LANOS bearbeitet diese Anforderung nicht,
  3509.                              seit die Druckereinstellungen durch den Systemverwalter
  3510.                              kontrolliert werden, indem das Programm NET_MGR benutzt
  3511.                              wird. Wie auch immer, der Systemaufruf gibt
  3512.                              keine Fehler zurück und die Länge der Zeichenkette
  3513.                              (CX) ist 0.
  3514.             04h DOS 3.1+ +Microsoft Netzwerke - Unbekannt
  3515.                 Anmerkung ruft int 2F/AX=11Fh mit 5E04h auf dem Stapel.
  3516.             05h DOS 3.1+ +Microsoft Netzwerke - Unbekannt
  3517.                 Anmerkung ruft int 2F/AX=111Fh mit 5E05h auf dem Stapel.
  3518.             06h DOS 3.1+ +Microsoft Netzwerke - Unbekannt
  3519.                 Anmerkung ruft int 2F/AX=111Fh mit 5E06h auf dem Stapel.
  3520. Rücklauf CF gelöscht erfolgreich
  3521.             gesetzt Fehler
  3522.             AX Fehlercode (01h für alle verzeichneten Unterfunktionen)
  3523. Anmerkung 1) benutzt in IBM's & Microsoft's Netzwerkprogrammen.
  3524.           2) teilweise Dokumentation im Herbst 1985 Byte.
  3525.           3) diese Funktion verlangt, daß die Netzwerksoftware installiert ist.
  3526.           4) teilweise Dokumentation im erweiterten MS-DOS.
  3527.           5) SHARE muß geladen sein oder Ergebnisse sind unbrauchbar mit 00h, oder versagt
  3528.              mit 02h oder 03h.
  3529.  
  3530.  
  3531. Funktion 5Fh Netzwerk Umleitung 
  3532.          (DOS 3.1+ und Microsoft Netzwerke)
  3533. Aufruf   AH 5Fh
  3534.          AL *00h Unbekannt
  3535.             *01h Unbekannt
  3536.              02h holen Umleitungslisten Eintrag
  3537.          BX Index Umleitungseintrag. Index 0 spezifiziert den
  3538.             ersten Eintrag
  3539.          DS:SI Zeiger zum 16 Byte Bereich welcher den ASCIIZ Gerätnamem
  3540.                für den Umleitungsindex aufnimmt
  3541.          ES:DI Zeiger zum 128 Byte Puffer für den ASCIIZ
  3542.                Netzwerknamen
  3543.          Rückgabe CF gesetzt wenn Fehler
  3544.                      AX Fehlercode (01h, 12h)
  3545.                      BH Gerätszustandskennzeichen (Bit 0=0 falls zulässig)
  3546.                                                   (Bit 0=1 falls ungültig)
  3547.                                                   (Bits 1-7 reserviert)
  3548.                      BL Gerätetyp
  3549.                         03 Drucker
  3550.                         04 Laufwerk (Datei)
  3551.                      CX Wert gespeichert beim fn 03h Aufruf. Sollte 0 sein
  3552.                         zur Kompatibilität mit LANOS
  3553.                      DS:SI Zeiger zum 16 Byte ASCIIZ lokalen Gerätenamen
  3554.                      ES:DI Zeiger zum 128 Byte ASCIIZ Netzwerknamen
  3555.         Anmerkung 1) DX und BP wedren duch diesen Aufruf zerstört.
  3556.                   2) dieser Aufruf gibt Information über ein einzelnes
  3557.                      umgeleitetes Gerät (siehe fn 03h) zurück. Diese fn kann
  3558.                      benutzt werden, um die Auflistung der umgeleiteten Geräte zu untersuchen.
  3559.              03h umleiten Gerät - anfertigen Zuweisung zum Auflistungseintrag
  3560.                  Leitet eine Workstation, Laufwerk oder Gerät zu einem Server
  3561.                  Inhaltsverzeichnis oder Gerät um.
  3562.                  AX Fehlercode falls Fehler
  3563.                  BL Gerätetyp
  3564.                     03 Drucker
  3565.                     04 Datei
  3566.                  CX gespeicherter Parameterwert (0 zur Kompatibilität
  3567.                     mit IBM PC Netzwerk Programm und LANtastic)
  3568.                  DS:SI Zeiger zum 16-byte ASCIIZ Quelle Gerätename
  3569.                        für Drucker schreibe: PRN, LPT1, LPT2, LPT3
  3570.                  ES:DI Zeiger zum Ziel 128-byte ASCIIZ Netzwerk
  3571.                        Pfad und ASCIIZ Passwort
  3572.                        (z.b., '\\ machinen_name\Pfad',0,'Passwort',0)
  3573.              Anmerkung umleiten Gerät erlaubt das Anschließen von lokalen
  3574.                        Geräten zur Netzwerkbenutzung. Als Beispiel, du kannst
  3575.                        eueren LPT1 zu einem Drucker auf einem anderen Netzknoten anschließen.
  3576.                        Anweisungen an LPT1 werden zu dem Netzwerk umgeleitet.
  3577.              04h abbrechen Umleitungszuordnung
  3578.                  DS:SI Zeiger zu ASCIIZ Gerätenamen oder Netzwerk Pfad
  3579.                        der annulliert werden soll
  3580.              Anmerkung abbrechen Geräteumleitung erlaubt das Entfernen
  3581.                        einer Geräteumleitung, sodaß das Gerät auf seinen
  3582.                        vorherigen Status zurückgesetzt wird.
  3583. Rücklauf CF gelöscht erfolgreich
  3584.             gesetzt falls Fehler
  3585.                           AX Fehlercode
  3586.                              (fn 02h) 01h, 12h
  3587.                              (fn 03h) 01h, 03h, 05h, 08h
  3588.                              (fn 04h) 01h, 0Fh
  3589. Anmerkung 1) benutzt in IBM's Netzwerk Programm. 
  3590.           2) teilweise Dokumentation im Herbst 1985 Byte.
  3591.           3) diese Funktion verlangen daß die Netzwerksoftware installiert ist.
  3592.           4) teilweise Dokumentation im erweiterten MS-DOS.
  3593.           5) SHARE muß geladen sein oder der Aufruf versagt.
  3594.           6) der Netzwerk Gerätename verlangt ein Passwort.
  3595.  
  3596.  
  3597. Funktion 60h analysieren Pfadname (DOS 3.0+)
  3598.          * durchführen Name Abarbeitung einer Zeichenkette (DOS intern)
  3599. Aufruf   AH 60h
  3600.          DS:SI Zeiger zur ASCIIZ Quelle Zeichenkette (beendet mit Null)
  3601.          ES:DI Zeiger zum Ziel 80 Byte ASCIIZ Zeichenkettenpuffer
  3602. Rückgabe ES:DI Puffer gefüllt mit geeignetem Name in der Form (Laufwerk):(Pfad)
  3603.          CF gesetzt Fehler
  3604.                     AX Fehlercode (02h, 03h)
  3605.             gelöscht kein Fehler
  3606. Anmerkung 1) dokumentiert in ZENITH 3.05 technische Referenz.
  3607.           2) die gesamte Abarbeitung des Namens geschieht in der Eingabezeichenkette: Zeichenkette
  3608.              Ersetzung werden in einzelne Bestandteile zerlegt, aktuelles Laufwerk/Verzeichnisse
  3609.              werden vorangestellt ,. und .. werden entfernte.
  3610.           3) Beispiel: falls aktuelle Laufwerk/Inhaltsverzeichnis ist c:\test, myfile.x wird übersetzt
  3611.              zu c:\test\myfile.x; ..\source\sample.asm wird übersetzt zu c:\source\
  3612.              sample.asm.
  3613.           4) es liegt in der Verantwortung des Aufrufer, das sicher ist, das DS:SI nicht auf
  3614.              eine nichtige Zeichenkette zeigt. Falls doch, SI ist erhöht, ein nichtiges Byte
  3615.              wird an ES:DI gespeichert, und die Routine kehrt zurück.
  3616.           5) benutzt von CHKDSK, zum mindestens in DOS 3.3, und DOS 3.x.
  3617.           6) falls Pfad Zeichenkette auf ein JOINed Laufwerk zeigt, der zurückgegebene Name ist der eine der
  3618.              benötigt wird, falls das Laufwerk nicht JOINed war; ähnlich wie ein SUBSTed
  3619.              Laufwerksbuchstabe. Durch dies, ist es möglich ein geeigneten Namen zu bekommen,
  3620.              der nicht legal ist mit der aktuellen Kombination von SUBSTs und JOINs.
  3621.           7) benutzt von DOS 4.0 SHELLC.EXE.
  3622.  
  3623.                                           
  3624. Funktion 61h nicht dokumentiert - (DOS 3.0)
  3625.          * DOS intern - Parameter nicht bekannt
  3626. Aufruf   AH 61h
  3627. Rückgabe AL 00h
  3628. Anmerkung angeblich dokumentiert in der technischen Referenz vom ZENITH DOS 3.05.
  3629.                 
  3630.  
  3631. Funktion 62h holen Programm Segment Prefix (PSP)(DOS 3.0+)
  3632. Aufruf   AH 62h
  3633. Rückgabe BX Segmentadresse vom PSP
  3634. Anmerkung unter DOS 3.x+, benutzt diese Funktion keine der internen DOS Stapel
  3635.           und ist somit voll ablaufinvariant.
  3636.  
  3637.  
  3638. Funktion 63h holen Lead Byte Tabelle (MS-DOS 2.25 ausschließlich)
  3639.          Hinzugefügt in DOS 2.25 zur zusätzlichen Unterstützung von fremden Zeichenvorräten.
  3640. Aufruf   AH 63h
  3641.          AL Unterfunktion
  3642.             00h holen System Lead Byte Tabelle Adresse
  3643.             01h einstellen/löschen Interim Bedienungsfeldkennzeichen
  3644.          DL 0000h löschen Interim Bedienungsfeldskennzeichen
  3645.             0001h einstellen Interim Bedienungsfeldkennzeichen
  3646.               02h holen Interim Bedienungsfeldkennzeichen
  3647. Rückgabe DS:SI Zeiger zur Lead Byte Tabelle (AL=00h)
  3648.          DL Interim Bedienungsfeldkennzeichen (AL=02h)
  3649. Anmerkung 1) Funktion 63h zerstört alle Register außer SS:SP bei der Rückgabe.
  3650.           2) nicht unterstützt in DOS 3.x oder 4.x.
  3651.           3) Anmerkung fn 63h gibt keine Fehler in AL oder CF zurück.
  3652.  
  3653.  
  3654. Funktion 64h nicht dokumentiert - intern von DOS benutzt
  3655. Aufruf   AH 64h
  3656. Rückgabe Unbekannt
  3657. Anmerkung 1) DOS 3.2+ interne Funktion von einigen Typen? kann eine Netzwerkfunktion sein.
  3658.           2) in DOS 3.31 sobald AL mit einer anderen Nummer als Null geladen wird,
  3659.              wird int 28h öfters aufgerufen. AL=0 setzt zurück zu dem "Start"
  3660.              Status.
  3661.  
  3662.  
  3663. Funktion 65h holen erweiterte Länderinformation (DOS 3. 3+)
  3664.          gibt zurück Information über der ausgewählt Land Formate, Code
  3665.          Seiten, und Umsetzungstabellen
  3666. Aufruf   AH 65h
  3667.          AL Information ID Code
  3668.             01h holen allgemein internationale Information
  3669.             02h holen Zeiger zur Großbuchstabentabelle (130 Bytes max)
  3670.                 (wandelt Zeichen 80h-0FFh in ihre Großbuchstabenwerte um,
  3671.                 falls vorhanden; benutzt vorwiegend zur Abbildung von Akzenten oder andere Vokale
  3672.                 zu den entsprechenden Vokalen)
  3673.             03h Unbekannt
  3674.             04h holen Zeiger zum Dateiname Großbuchstabentabelle (130 Bytes max)
  3675.                 (ähnlich der Tabelle für AL=02h)
  3676.             05h Unbekannt
  3677.             06h holen Zeiger zur Abgleichungstabelle (258 Bytes max)
  3678.                 (ablegen von Großbuchstaben, Klein-, und Akzentbuchstaben zur gemeinsamen
  3679.                  Sortierung)
  3680.             07h holen Zeiger zur Doppel-Wort Zeichenvorrattabelle
  3681.          BX Codeseite (0FFFFh=CON: Gerät)
  3682.          CX Anzahl von Information die zurückgegeben wurden (minimum 5)
  3683.          DX Zielland ID (0FFFFh= vorgegeben aktuelle Land)
  3684.          ES:DI Segment/Offset Zeiger zum Länderinformationspuffer
  3685. Rückgabe CF gesetzt wenn Fehler
  3686.                          AX Fehlercode (02h)
  3687.             andernfalls:
  3688.          CX Größe dern Länderinformation die zurückgegeben wurde
  3689.          ES:DI Zeiger zur Länderiformation:
  3690.                Offset Länge    Beschreibung
  3691.                 00h   1 Byte   Informations ID (für alle folgenden Puffer)
  3692.         falls Informations ID Code <>1:
  3693.                 01h   dwort    Zeiger zu Information
  3694.         falls Informations ID Code=1:
  3695.                 01h   Wort     Länge von Rest des Puffers (<=38)
  3696.                 03h   Wort     Länder ID
  3697.                 05h   Wort     Code Seitennummer
  3698.                 07h   34 Bytes dieselben wie für int 21h Funktion 38h
  3699.         falls Information ID Code=2:
  3700.                 01h   Wort     Tabellengröße
  3701.                 05h   dwort    Zeiger zur Großbuchstabentabelle
  3702.             128 Bytes Großbuchstaben Gegenwerte der Zeichen 80h-0FFh (falls vorhanden)
  3703.         falls Information ID Code=4:
  3704.                 01h   Wort     Tabellengröße
  3705.                 05h   dwort    Zeiger zur Abgleichungstabelle
  3706.             256 Bytes          Werte die benutzt werden, um die Zeichen 00h-0FFh zu sortieren
  3707.         falls Information ID Code=6:
  3708.                 01h   Wort     Tabellegröße
  3709.                 05h   dwort    Zeiger zum Dateiname Großbuchstabentabelle. Diese
  3710.                                Tabelle startet mit einem 2-Byte Längenfeld, dann
  3711.                                256 ASCII Werte in der Reihenfolge
  3712.             128 Bytes Großbuchstaben Gegenwerte der Zeichen 80h-0FFh (falls vorhanden)
  3713.         falls Information ID Code=7: (DOS 4.0)
  3714.                 Unbekannt
  3715. Anmerkung 1) für AL=02h, 04h, oder 06h, die ersten zwei Bytes von der Tabelle sind die
  3716.              Länge und dann eine 128 Byte Tabelle von Großbuchstaben ASCII Zeichen für
  3717.              02h oder 04h und ein Zeiger zu der Abgleichung für 06h.
  3718.           2) der Ländercode und Codeseite müssen passen. Falls nicht, Fehler 02h ist in AX.
  3719.           3) falls mehr Information vorhanden sind, als durch CX angefordert wurden, werden
  3720.              diese abgeschnitten, ohne das ein Fehler erzeugt wird.
  3721.           4) Länderinformation:
  3722.              Bytes      Beschreibung
  3723.              01h        Wert von AL (01h)
  3724.              02h, 03h   Größe (max= 38)
  3725.              04h, 05h   Ländercode
  3726.              06h, 07h   Codeseite
  3727.              08h, 09h   Datumsformat
  3728.              0Ah, 0Eh   Währungszeichen
  3729.              0Fh, 10h   Tausender Trennung
  3730.              11h, 12h   dezimale Trennung
  3731.              13h, 14h   Datum Trennung
  3732.              15h, 16h   Uhrzeit Trennung
  3733.              17h        Währungsformat Kennzeichen
  3734.              18h        Genauigkeit (Anzahl Stellen nach dem Dezimalkomma)
  3735.              19h        Zeitformat
  3736.              20h-22h    monocase Routine Einsprungspunkt
  3737.              23h-24h    Datenliste Trennung
  3738.              25h-29h    Nullen
  3739.  
  3740.  
  3741. Funktion 66h holen/einstellen globale Codeseitentabelle (DOS 3.3+)
  3742.              erfragen /löschen Standard Codeseite
  3743. Aufruf   AH 66h
  3744.          AL 00h holen globale Codeseite
  3745.             01h einstellen globale Seite
  3746.                 BX aktive Codeseite
  3747.                 DX System Codeseite (aktive Seite beim Start)
  3748. Rückgabe CF gelöscht erfolgreich
  3749.             gesetzt  AX Fehlercode (Unbekannt)
  3750.          falls 00h   BX aktive Codeseite
  3751.                      DX System Codeseite (aktive Seite beim Start)
  3752. Anmerkung BX= aktive Codeseite: 437 = US, 860 = Portugal, 863= Kanada (französisch)
  3753.                                 865 = Norwegen/Dänemark,  850= Mehrsprachig
  3754.  
  3755.  
  3756. Funktion 67h einstellen Handle Zähler( DOS 3. 3+)
  3757.          Zur Unterstützung von mehr als 20 offenen Dateien pro Prozess
  3758. Aufruf   AH 67h
  3759.          BX gewünscht Anzahl Handles (max 65535)
  3760. Rückgabe CF gelöscht falls OK
  3761.             gesetzt falls Fehler
  3762.                           AX Fehlercode (Unbekannt)
  3763. Anmerkung 1) diese Funktion ändert den 20-byte Handle Tabellenzeiger in dem PSP zu
  3764.              zu einer neuen, größeren Handle Tabelle irgendwo im Speicher.
  3765.           2) der Speicher den der 67h Aufruf belegt wird vom normalen DOS Pool geholt,
  3766.              und nach der Beendigung dorthin zurückgegeben, deshalb geht nichts verloren.
  3767.           3) sobald diese Funktion aufgerufen wird, muß genug Speicher für DOS freigegeben werden,
  3768.              um die erweiterte Handle Tabelle zu erthalten.
  3769.           4) falls die angeforderte Anzahl Handles kleiner als 20 ist, es ist aufgerundet
  3770.              auf 20.
  3771.  
  3772.  
  3773. Funktion 68h Commit Datei (DOS 3. 3+)
  3774.          schreiben aller gepufferten Daten zur Festplatte
  3775. Aufruf   AH 68h
  3776.          BX Dateinummer
  3777. Rückgabe CF gelöscht wenn erfolgreich
  3778.             gesetzt wenn Fehler
  3779.             AX Fehlercode
  3780. Anmerkung 1) schneller und sichere Methode zur Schließung einer Datei in einem Netzwerk als
  3781.              der aktuelle Schließen Befehl.
  3782.           2) dies ist effektiv dasselbe wie DUPing der Handles für eine Datei und dann
  3783.              Schließung der neuen, außer daß dieser Aufruf nicht versagt falls das System
  3784.              kene Handles mehr frei hat.
  3785.           3) die Dateipuffer werden gelöscht und sein Inhaltsverzeichnis und FAT Eintrag wird
  3786.              aktualisiert.
  3787.  
  3788.  
  3789. Funktion 69h Festplatte serielle Nummer DOS 4.0+ (US Versionen)
  3790.          behandelt "Datenträger serielle Nummer" auf Disketten formatiert mit 4.0+
  3791. Aufruf   AH 69h holen serielle Nummer des Datenträgers
  3792.          AL 00h holen seriell Nummer
  3793.             01h einstellen serielle Nummer
  3794.          BL Laufwerk (0=aktuelles, 1=A, etc)
  3795.          DS:DX Zeiger zu Festplatten Informationstabelle
  3796. Rückgabe CF gesetzt wenn Fehler
  3797.                          AX Fehlercode
  3798.             gelöscht falls erfolgreich
  3799.                         AH zerstört
  3800.                         AL (fn 00h) Puffer mit geeigneten Werten vom
  3801.                                     erweiterten BPB gefüllt
  3802.                            (fn 01h) erweiterter BPB auf Festplatte auf die Werte vom Puffer eingestellt
  3803.          DS:DX Festplatte Informationstabelle. Format:
  3804.                 Offset Größe    Beschreibung
  3805.                 00h    Wort     Unbekannt (Nullen auf meinem System)
  3806.                 02h    dwort    serielle Festplattennummer (binär)
  3807.                 06h    11 Bytes Datenträgeretikett oder "NO Name" falls keiner
  3808.                 11h     8 Bytes FAT Typ - Zeichenkette "FAT12" oder "FAT16"
  3809. Anmerkung 1) das FAT Typenfeld verweist auf die Anzahl Bits pro Inhaltsverzeichniseintrag.
  3810.           2) erzeugt kein kritischen Fehler; alle Fehler werden in AX zurückgegeben.
  3811.           3) Fehler 0005h bedeutet kein erweiterter BPB auf der Festplatte.
  3812.           4) arbeitet nicht auf Netzwerk Laufwerke (Fehler 0001h).
  3813.           5) Puffer nach den ersten zwei Bytes ist eine genaue Kopie der Bytes 27h bis 3Dh von
  3814.              dem erweiterten BPB auf der Festplatte.
  3815.  
  3816.  
  3817. Funktion 6Ah Unbekannt (DOS 4.0?)
  3818.  
  3819.  
  3820. Funktion 6Bh Unbekannt (DOS 4.0?)
  3821.  
  3822.  
  3823. Funktion 6Ch erweitertes Öffenen/Erstellen DOS 4.0+ (US)
  3824.              kombiniert verfügbare Funktionen mit Öffnen, Erstellen, neu Erstellen,
  3825.              und Commit Datei
  3826. Aufruf   AH 6Ch
  3827.          AL 00h reserviert [welchen Sinn macht es dann, andere Unterfunktionen zu haben?]
  3828.          BX Modus Format 0WF0 0000 ISSS 0AAA
  3829.                          AAA ist Zufgriffscode (lesen, schreiben, lesen/schreiben)
  3830.                          SSS ist Sharing Modus
  3831.                          I       0 übergeben Handle zu "Kind"
  3832.                                  1 nicht mitschleppen [interessant!]
  3833.                          F       0 benutze int 24h für Fehler
  3834.                                  1 ausschalten int 24h für alle
  3835.                                    I/O auf diesen Handle; benutze eigene
  3836.                                    Fehlerroutine
  3837.                          W       0 kein Commit
  3838.                                  1 automatisches Commit bei allen Schreibzugriffen
  3839.          CX erstellen Attribut
  3840.             Bits 0 Nur-Lesen
  3841.                  1 versteckt
  3842.                  2 System
  3843.                  3 Datenträgeretikett
  3844.                  4 reserviert
  3845.                  5 Archiv
  3846.                  6-15 reserviert
  3847.          DH 00h (reserviert)
  3848.          DL Handlung falls Datei existiert/nicht existiert
  3849.             Bits 0-3 Handlung falls Datei existiert
  3850.                         0000 abbrechen
  3851.                         0001 öffnen
  3852.                         0010 ersetzen/öffnen
  3853.                  4-7 Handlung falls Datei nicht existiert
  3854.                         0000 abbrechen
  3855.                         0001 erstellen 
  3856.          DS:SI Zeiger zum ASCIIZ Dateiname
  3857. Rückgabe CF gesetzt wenn Fehler
  3858.                          AX Fehlercode (Unbekannt)
  3859.             gelöscht
  3860.                 AX Dateinummer (Handle)
  3861.                 CX durchgeführte Handlung
  3862.                    01h Datei geöffnet
  3863.                    02h Datei erstellt/geöffnet
  3864.                    03h Datei ersetzt/geöffnet
  3865. Anmerkung sobald APPEND installiert ist, falls DX=xx1x ist, wird nur im aktuellen Inhaltsverzeichnis
  3866.           gesucht, falls DX=xx0x wird er gesamte APPEND Pfad durchsucht. DX wird das
  3867.           Öffnungskennzeichen genannt und bestimmt die Handlung die durchgeführt wird, falls die Datei
  3868.           existiert oder nicht existiert.
  3869.  
  3870.  
  3871. Funktion 89h nicht dokumentiert - DOS_Sleep 
  3872.          * nicht dokumentiert bei Microsoft
  3873. Aufruf   AH 89h
  3874. Rückgabe Unbekannt
  3875. Anmerkung 1) Funktion ist im Microsoft C 4.0 Startup Code MSDOS.INC enthalten.
  3876.           2) Ein Test zeigt, daß die erste Instruktion beim Aufruf AH mit 64h vergleicht
  3877.              (zum mindestens in DOS 3.2) und bricht den Aufruf ab, falls AH> 64.
  3878.           3) möglich benutzt im europäisch MSDOS 4.0?
  3879.  
  3880.  
  3881.   
  3882. Funktionsaufrufe installiert in späteren Anwendungen:
  3883.  
  3884. Novell Netware 2. 11:. 
  3885.         Novell empfiehlt nicht mehr die int 21h Methode zum Aufruf der
  3886.         Netware Funktionen. Int 21h wird auf unbestimmte Zeit unterstützt sein, aber das
  3887.         Netz API ruft zur Adressierung der Software den mehrfach Interrupt (2Fh) auf.
  3888.         Das API kann durch den int 2Fh in derselben Art wie der int 21h adressiert
  3889.         werden; nur die Interrupt Nummer ist unterschiedlich.
  3890.  
  3891.         Novell API Aufrufe sind im Abschnitt 13 beschrieben. Die meisten Funktionen von
  3892.         0B6h bis 0F9h sind belegt durch NetWare; falls eure Software benutzt irgendeinen
  3893.         von diesen Aufrufen für einen anderen Zweck, läuft diese wahrscheinlich nicht unter
  3894.         NetWare. 
  3895.  
  3896. Anmerkung: Novell (und die meiste andere) Netzwerksoftware und SoftLogic's DoubleDOS
  3897.            geraten bei den folgenden int 21h Funktionen 0EAh-0EEh in einen Konflikt. Netware muß
  3898.            die int 2Fh Funktionen an Stelle von 21h Funktionen benutzen, falls DoubleDOS auf dem
  3899.            Netzwerk benutzt wird.
  3900.  
  3901.  
  3902. Funktion 0E4h DoubleDOS - holen Aktivkennzeichen
  3903. Aufruf   AX 0E4h
  3904. Rückgabe AL 00h falls DoubleDOS nicht eingeschaltet ist
  3905.                  <> 0 DoubleDOS ist eingeschaltet 
  3906.  
  3907.  
  3908. Funktion 0EAh DoubleDOS - ausschalten Task Switching
  3909. Aufruf   AX 0EAh
  3910. Rückgabe keine
  3911. Anmerkung Task Switching ausgeschaltet.
  3912.  
  3913.  
  3914. Funktion 0EBh DoubleDOS - einschalten Task Switching
  3915. Aufruf   AH 0EBh
  3916. Rückgabe keine
  3917. Anmerkung Task Switching eingeschaltet.
  3918.  
  3919.  
  3920. Funktion 0ECh DoubleDOS - holen virtuelle Bildschirmadresse
  3921. Aufruf   AH 0ECh
  3922. Rückgabe ES Segment vom virtuellen Bildschirm
  3923. Anmerkung Bildschirmadresse kann geändert werden, falls Task Switching an ist!
  3924.  
  3925.  
  3926. Funktion 0EEh DoubleDOS - Freigabe Zeitanteil 
  3927.          abgeben Zeit an andere Aufgaben
  3928. Aufruf   AH 0EEh
  3929.          AL Anzahl 55ms Zeitanteile die abgegeben werden
  3930. Rückgabe keine
  3931. Anmerkung gibt zurück nachdem Zeitabgegeben ist.
  3932.  
  3933.  
  3934. Funktion 0FFh CED (CJ Dunford's DOS Makro und Befehlszeilen Editor)
  3935.          CED installierbare Befehle
  3936. Aufruf   AH 0FFh
  3937.          AL 00h hinzufügen installierbaren Befehl
  3938.             01h entfernen installierbaren Befehl
  3939.             02h reserviert, kann zum Test der CED Installierung benutzt werden
  3940.          BL Modus Byte
  3941.             Bit 0 aufrufbar vom DOS Anforderungszeichen
  3942.                 1 aufrufbar von der Anwendung
  3943.                 2-7 nicht benutzt im Public Domain CED
  3944.          DS:SI Zeiger zum CR-beendeten Befehlsnamen
  3945.          ES:DI Zeiger zur Far Routine Einsprungspunkt
  3946. Rückgabe CF gesetzt wenn Fehler
  3947.          AX 01h ungültige Funktion
  3948.             02h Befehl nicht gefunden (ausschließlich Unterfunktion 1)
  3949.             08h ungenügend Speicher (ausschließlich Unterfunktion 0)
  3950.             0Eh fehlerhafte Daten (ausschließlich Unterfunktion 0)
  3951.          AH 0FFh falls CED nicht installiert ist
  3952.  
  3953.