home *** CD-ROM | disk | FTP | other *** search
- ─────────────────────────────────────────────────────────────────────────────
- Dokumentation zur Datei: EXEC.INC
-
- ─────────────────────────────────────────────────────────────────────────────
-
- EXEC.INC - Routinen zur Ausführung von Programmen
- (für den Assembler A86)
-
- (c) Bernd Schemmer 1990 - 1992
- Letzter Update: 12.02.1992
-
- Hinweis: Die Routinen benötigen Routinen aus den folgenden .LIB-Dateien:
- FILES.LIB, DIRS.LIB, ENV.LIB und STRINGS.LIB
-
-
- ■ Variablen:
- ------------
- PathVar - String (max. Länge: 64 Byte), enthält den
- Namen der Environment-Variable mit dem
- Pfaden für die Suche nach Dateien durch
- SearchFile.
- Voreingestellter Inhalt ist 'PATH'
-
-
- ■ Routinen:
- -----------
- ExecProgramm - Ausführen eines Programmes
- SearchFile - Sucht eine Datei
-
-
- ----------------------------
- ExecProgramm
-
- Funktion: Ausführen eines Programmes
-
- Eingabe: DS:SI -> Programm-Name als String
- Hinter dem Programm-Namen muß noch ein Byte
- frei sein!
- DS:BX -> Parameter für das Programm
- Hinter dem Parametern muß noch ein Byte frei
- sein!
-
- Ausgabe: CF = 0 ->> okay
- AL = Errorlevel des Programm
- AH = Returncode des Programms
- 0 = Programm endete normal
- 1 = Programm endete durch CTRL-C
- 2 = Programm endete durch schweren Fehler
- (über den Interrupt 24h)
- 3 = Programm endete normal aber ohne den
- belegten Speicher freizugeben (TSR)
-
- CF = 1 ->> Fehler
- AX = DOS-Fehlernummer
-
- Bes.: VOR dem Aufruf dieser Routine muß unbedingt freier Speicher
- bereitgestellt werden!
- Ausgeführt werden können alle .EXE und .COM-Programme.
- Da die Routine das Environment-Segment aus dem PSP benutzt,
- darf das Programm-Environment noch nicht freigegeben worden
- sein.
- Die Routine benutzen ebenfalls die beiden FCBs aus dem PSP.
-
- Batch-Dateien und interne DOS-Befehle müssen explizit über
- den Aufruf des Kommando-Interpreters mit den Parameter '/C'
- ausgeführt werden.
-
- ■ Aufbau des Blocks für die Funktion 4Bh
-
- ProgrammBlock STRUC [BX]
- _ProgEnv dw ? ; Segment des Environments
- _ProgParm dw ?,? ; Adresse der Parameter
- _ProgFCB1 dw ?,? ; Adresse des Defaults für den 1. FCB
- _ProgFCB2 dw ?,? ; Adresse des Defaults für den 2. FCB
- ENDS
-
- ----------------------------
- SearchFile
-
- Funktion: Ermittelt, ob eine Datei im akt. Directory oder in
- einem der in der Environment-Variable, deren Name
- in der Variablen Path gespeichert ist, gespeicherten
- Pfade vorhanden ist
-
- Eingabe: DS:SI -> Name der Datei
- Der String muß Platz für mindestens 128 Zeichen
- haben.
-
- Ausgabe: CF = 0 ->> okay
- Datei gefunden, Name bei DS:SI um den
- Pfad erweitert.
- CF = 1 ->> Fehler
- AX = DOS-Fehlernummer
- (2 oder 3 falls Datei bzw. Pfad nicht gefunden
- wurde)
-
- Bes.: Die Routine benötigt mehrere Routinen aus den .LIB-Dateien
- Es sollten noch ca. 1500 Byte auf dem Stack frei sein!
- (für die lokalen Variablen von SearchFile, SearchEnvStr
- und ExistFile)
-
- Die Routine benutzt indirekt (über ExistFile) die
- undokumentierte Funktion 60h des Interrupt 21h!
-
- Gesucht wird nach folgendem Algorithmus:
-
- 1. Falls der angegebene Name mit einem Pfad-Separator ('\')
- oder ('/') beginnt oder der erste Teil des Namens ein
- Laufwerkbezeichner ist, wird der angegebene Pfad
- erweitert und die Datei NUR dort gesucht.
- 2. Andernfalls wird die Datei zuerst im akt. Directory
- gesucht.
- 3. Wird die Datei im akt. Directory nicht gefunden, so
- geht die Routine alle Pfade aus der Envrionment-Variable,
- deren Name in der Variablen PATHVAR gespeichert ist, der
- Reihe nach durch.
- (d.h. auch eine Angabe wie z.B. 'TEST\TEST.DAT' wird in
- ALLEN Pfaden gesucht)
-
- Für die Suche wird der Inhalt der Environment-Variable deren
- Name in der Variable PATHVAR steht benutzt.
- Durch Ändern dieses Namens kann auch eine andere Environment-
- Variable für die Suche benutzt werden (z.B. APPEND).
- Der Aufbau dieser muß aber dem Aufbau des Inhaltes von PATH
- entsprechen.
-
- Der Inhalt der Variablen wird aus dem aktuellen Environment
- ermittelt.
-
-