home *** CD-ROM | disk | FTP | other *** search
- ─────────────────────────────────────────────────────────────────────────────
- Dokumentation zur Datei: EXTDOS.INC
-
- ─────────────────────────────────────────────────────────────────────────────
-
- EXTDOS.INC - Routinen zur Nutzung von UNDOKUMENTIERTEN DOS-Features
- (für den Assembler A86)
-
- (c) Bernd Schemmer 1990 - 1992
- Letzter Update: 13.02.1992
-
- ■ Hinweis:
- ----------
- Die Routinen benötigen die Macros und Strukturen aus der Datei
- EXTDOS.MAC.
- Alle Routinen beziehen sich auf UNDOKUMENTIERTE DOS-Features!
- Sie sollten deshalb nur in Ausnahmefällen benutzt werden.
- Getestet wurden die Routinen nur mit DOS Version 3.3 und 4.0.
-
-
- ■ Routinen:
- -----------
- StandardIO? - Stellt fest, ob eine Umleitung der Standard-
- Eingabe oder -Ausgabe in Kraft ist
- GetMaxFile - Ermittelt die Größe der lokalen Handle-Tabelle
- und die Anzahl der noch freien Handles
- SetMaxFile - Vergrößert oder verkleinert die lokale Handle-
- Tabelle
- SearchCHARDevice - Ermittelt die Adresse des Headers eines CHAR-
- Devices
- CountBuffers - Ermittelt die Parameter des BUFFERS-Befehls
- aus der Datei CONFIG.SYS
- CountSDL - Ermittelt die Parameter des FILES-Befehls
- aus der Datei CONFIG.SYS
- CountFCBS - Ermittelt die Parameter des FCBS-Befehls
- aus der Datei CONFIG.SYS
- GetHandleName - Ermittelt den Namen des Geräts/der Datei
- das/die einem Handle zugeordnet ist
- GetDriveArt - Ermittelt die Art eines logischen Laufwerkes
-
-
- ----------------------------
- GetDriveArt
-
- Funktion: Ermittelt die Art eines logischen Laufwerkes
-
- Eingabe: AX = Nummer des Laufwerkes (1 = A:, 2 = B:, usw.)
-
- Ausgabe: CF = 0 ->> okay
- AX = 4000h ->> Laufwerk ist ein Hardware-Laufwerk
- AX = 5000h ->> Laufwerk ist durch SUBST zugeordnet
- AX = 6000h ->> Laufwerk ist durch JOIN zugeordnet
- AX = 8000h ->> Laufwerk ist ein Netzwerk-Laufwerk
- AX = 0000h ->> log. Laufwerk ist nicht eingerichtet,
- kann aber eingerichtet werden
- und nur bei DOS 4.xx:
- AX = C000h ->> Laufwerk ist ein über ein IFS inst.
- Laufwerk
- sonst bei allen Versionen:
- ->> unbekannte Laufwerk-Belegung
-
- CF = 1 ->> Fehler, logisches Laufwerk ist nicht bekannt und
- kann nicht eingerichtet werden
-
- ----------------------------
- GetHandleName
-
- Funktion: Ermittelt den Datei/Gerätenamen eines gegebenen Handles
-
- Eingabe: BX = Handle
- ES:DI -> Puffer für den Namen
- (11 Zeichen, 8 Zeichen für den Namen mit folgenden
- Blanks und 3 Zeichen für die Extension mit folgenden
- Blanks)
-
- Ausgabe: CF = 0 ->> Name gefunden, Puffer enthält den Namen
- CF = 1 ->> Fehler
- AL = 0FFh ->> Handle ist geschlossen
- AL <> 0FFh ->> Eintrag in SDL nicht vorhanden
-
- ----------------------------
- SearchCHARDevice
-
- Funktion: Testen, ob ein CHAR-Device mit den Geräte-Namen
- bei DS:SI geladen ist
-
- Eingabe: DS:SI -> Name des gesuchten CHAR-Devices
- (8 Zeichen, in Großbuchstaben und mit Blanks
- aufgefüllt)
-
- Ausgabe: CF = 1 ->> Device nicht vorhanden
- CX = Anzahl Devices
- AX = Attribut des letzten Devices
- ES:BX -> letzter Device-Header
- CF = 0 ->> Device geladen
- CX = Nummer des Devices in der Kette
- AX = Attribut des Devices
- ES:BX -> Device-Header
-
- ----------------------------
- StandardIO?
-
- Funktion: Feststellen, ob eine Umleitung der Standard-
- Ein/Ausgabe vorliegt.
-
- Ausgabe: AL = 1 ->> keine Umleitung der Standard-Eingabe in Kraft
- AL <> 1 ->> Umleitung der Standard-Eingabe in Kraft
- AH = 1 ->> keine Umleitung der Standard-Ausgabe in Kraft
- AH <> 1 ->> Umleitung der Standard-Ausgabe in Kraft
-
- ----------------------------
- GetMaxFile
-
- Funktion: Ermitteln der max. Anzahl möglicher Datei-Eröffnungen
- (Größe der lokalen Handle-Tabelle,
- Voreinstellung: 20 Bytes)
-
- Ausgabe: CX = max. Anzahl
- AX = Anzahl schon offener Dateien
-
- ----------------------------
- SetMaxFile
-
- Funktion: Vergrößern oder verkleinern der lokalen Handle-Tabelle.
-
- Eingabe: BX = neue max. Anzahl
-
- Ausgabe: CF = 0 ->> okay
- CF = 1 ->> Fehler
-
- Bes.: Diese Funktion ist erst ab DOS Version 3.3 vorhanden.
- (Die DOS-Version muß von der aufrufenden Routine über-
- prüft werden)
- Vor dem Aufruf dieser Routine muß unbegingt freier
- Speicher zur Verfügung gestellt werden!
-
- Zur Vermeidung eines internen Fehlers von DOS 3.3
- erhöht die Routine die neue Anzahl für die Handles
- immer auf eine ungerade Anzahl falls eine gerade
- Anzahl angegeben wird.
-
- An Tochterprozesse werden immer, unabhängig von der
- Größe der lokalen Handle-Tabelle, vom DOS nur die
- ersten 20 Handles übergeben!
-
- ----------------------------
- CountBuffers
-
- Funktion: Ermittelt die Anzahl der DOS-Puffer
-
- Ausgabe: AX = Anzahl der DOS-Puffer
-
- ----------------------------
- CountSDL
-
- Funktion: Ermittlt die maximale Anzahl Einträge in
- der SDL (wird durch FILES=xxx in CONFIG.SYS
- eingestellt) und die Anzahl der belegten
- Einträge in der Liste
-
- Ausgabe: CX = max. mögliche Anzahl Einträge
- AX = Anzahl belegter Einträge
-
- ----------------------------
- CountFCBs
-
- Funktion: Ermittlt die maximale Anzahl Einträge in
- der FCBS-Liste und die Anzahl der Einträge die
- DOS nicht automatisch schliessen darf
- (wird durch FCBS=xxx,yyy in der Datei CONFIG.SYS
- eingestellt)
-
- Ausgabe: CX = max. mögliche Anzahl Einträge (= xxx)
- AX = Anzahl Einträge die DOS nicht automatisch
- schliessen darf (= yyy)
-
-