home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / lib4a86 / doc / exec.doc < prev    next >
Text File  |  1992-02-13  |  6KB  |  130 lines

  1.   ─────────────────────────────────────────────────────────────────────────────
  2.   Dokumentation zur Datei: EXEC.INC
  3.  
  4.   ─────────────────────────────────────────────────────────────────────────────
  5.    
  6.     EXEC.INC     - Routinen zur Ausführung von Programmen
  7.                    (für den Assembler A86)
  8.    
  9.                    (c) Bernd Schemmer 1990 - 1992
  10.                    Letzter Update: 12.02.1992
  11.    
  12.     Hinweis: Die Routinen benötigen Routinen aus den folgenden .LIB-Dateien:
  13.              FILES.LIB, DIRS.LIB, ENV.LIB und STRINGS.LIB
  14.    
  15.    
  16.     ■ Variablen:
  17.     ------------
  18.     PathVar               - String (max. Länge: 64 Byte), enthält den
  19.                             Namen der Environment-Variable mit dem
  20.                             Pfaden für die Suche nach Dateien durch
  21.                             SearchFile.
  22.                             Voreingestellter Inhalt ist 'PATH'
  23.    
  24.    
  25.     ■ Routinen:
  26.     -----------
  27.     ExecProgramm          - Ausführen eines Programmes
  28.     SearchFile            - Sucht eine Datei
  29.    
  30.    
  31.     ----------------------------
  32.     ExecProgramm
  33.    
  34.     Funktion:  Ausführen eines Programmes
  35.    
  36.     Eingabe:   DS:SI -> Programm-Name als String
  37.                         Hinter dem Programm-Namen muß noch ein Byte
  38.                         frei sein!
  39.                DS:BX -> Parameter für das Programm
  40.                         Hinter dem Parametern muß noch ein Byte frei
  41.                         sein!
  42.    
  43.     Ausgabe:   CF = 0 ->> okay
  44.                           AL = Errorlevel des Programm
  45.                           AH = Returncode des Programms
  46.                                0 = Programm endete normal
  47.                                1 = Programm endete durch CTRL-C
  48.                                2 = Programm endete durch schweren Fehler
  49.                                    (über den Interrupt 24h)
  50.                                3 = Programm endete normal aber ohne den
  51.                                    belegten Speicher freizugeben (TSR)
  52.                
  53.                CF = 1 ->> Fehler
  54.                           AX = DOS-Fehlernummer
  55.    
  56.     Bes.:      VOR dem Aufruf dieser Routine muß unbedingt freier Speicher
  57.                bereitgestellt werden!
  58.                Ausgeführt werden können alle .EXE und .COM-Programme.
  59.                Da die Routine das Environment-Segment aus dem PSP benutzt,
  60.                darf das Programm-Environment noch nicht freigegeben worden
  61.                sein.
  62.                Die Routine benutzen ebenfalls die beiden FCBs aus dem PSP.
  63.    
  64.                Batch-Dateien und interne DOS-Befehle müssen explizit über
  65.                den Aufruf des Kommando-Interpreters mit den Parameter '/C'
  66.                ausgeführt werden.
  67.    
  68.     ■ Aufbau des Blocks für die Funktion 4Bh
  69.    
  70.      ProgrammBlock STRUC [BX]
  71.      _ProgEnv  dw ?                ; Segment des Environments
  72.      _ProgParm dw ?,?              ; Adresse der Parameter
  73.      _ProgFCB1 dw ?,?              ; Adresse des Defaults für den 1. FCB
  74.      _ProgFCB2 dw ?,?              ; Adresse des Defaults für den 2. FCB
  75.                   ENDS
  76.    
  77.     ----------------------------
  78.     SearchFile
  79.    
  80.     Funktion:  Ermittelt, ob eine Datei im akt. Directory oder in
  81.                einem der in der Environment-Variable, deren Name
  82.                in der Variablen Path gespeichert ist, gespeicherten
  83.                Pfade vorhanden ist
  84.    
  85.     Eingabe:   DS:SI -> Name der Datei
  86.                         Der String muß Platz für mindestens 128 Zeichen
  87.                         haben.
  88.    
  89.     Ausgabe:   CF = 0 ->> okay
  90.                           Datei gefunden, Name bei DS:SI um den
  91.                           Pfad erweitert.
  92.                CF = 1 ->> Fehler
  93.                           AX = DOS-Fehlernummer
  94.                           (2 oder 3 falls Datei bzw. Pfad nicht gefunden
  95.                            wurde)
  96.    
  97.     Bes.:      Die Routine benötigt mehrere Routinen aus den .LIB-Dateien
  98.                Es sollten noch ca. 1500 Byte auf dem Stack frei sein!
  99.                (für die lokalen Variablen von SearchFile, SearchEnvStr
  100.                 und ExistFile)
  101.    
  102.                Die Routine benutzt indirekt (über ExistFile) die
  103.                undokumentierte Funktion 60h des Interrupt 21h!
  104.    
  105.                Gesucht wird nach folgendem Algorithmus:
  106.    
  107.                1. Falls der angegebene Name mit einem Pfad-Separator ('\')
  108.                   oder ('/') beginnt oder der erste Teil des Namens ein
  109.                   Laufwerkbezeichner ist, wird der angegebene Pfad
  110.                   erweitert und die Datei NUR dort gesucht.
  111.                2. Andernfalls wird die Datei zuerst im akt. Directory
  112.                   gesucht.
  113.                3. Wird die Datei im akt. Directory nicht gefunden, so
  114.                   geht die Routine alle Pfade aus der Envrionment-Variable,
  115.                   deren Name in der Variablen PATHVAR gespeichert ist, der 
  116.                   Reihe nach durch.
  117.                   (d.h. auch eine Angabe wie z.B. 'TEST\TEST.DAT' wird in
  118.                   ALLEN Pfaden gesucht)
  119.    
  120.                Für die Suche wird der Inhalt der Environment-Variable deren
  121.                Name in der Variable PATHVAR steht benutzt. 
  122.                Durch Ändern dieses Namens kann auch eine andere Environment-
  123.                Variable für die Suche benutzt werden (z.B. APPEND).
  124.                Der Aufbau dieser muß aber dem Aufbau des Inhaltes von PATH
  125.                entsprechen.
  126.    
  127.                Der Inhalt der Variablen wird aus dem aktuellen Environment
  128.                ermittelt.
  129.    
  130.