home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
lib4a86
/
doc
/
extdos.doc
< prev
next >
Wrap
Text File
|
1992-02-13
|
7KB
|
177 lines
─────────────────────────────────────────────────────────────────────────────
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)