home *** CD-ROM | disk | FTP | other *** search
- Dokumentation zu TESTTIME Seite 1
- ─────────────────────────────────────────────────────────────────────────────
-
- Programmname: TESTTIME.COM
-
- Version: V1.16
-
- Funktion: Ermitteln der Laufzeit und verschiedener Daten
- eines Programms
-
- Autor: Bernd Schemmer
- Bäckerweg 48
- 60316 Frankfurt/M.
- Tel.: (069) 4 97 04 84
-
- System: IBM-PC/AT/Kompatibler
-
- BS: DOS 3.3 oder höher
- Sprache: Assembler
- Compiler: A86
-
- Besonderheiten: Benutzt die undokumentierten Funktionen 37h (Get-DOS-
- Switch) und 60h (Process File Name) des Interrupt 21h
- und die MCBs
- Unterstützt weder EMS noch ExtendedMemory.
-
- Letzter Update: 08.10.1993
-
- Vertriebsart: Freeware
-
-
- Dokumentation zu TESTTIME Seite 2
- ─────────────────────────────────────────────────────────────────────────────
-
-
- Update-History:
- V1.01 - 20.12.1989
- - erster Release
-
-
- V1.02 - 11.04.1990
- - TESTTIME funktioniert jetzt auch mit Programmen,
- die die Parameter an einer bestimmten Stelle im
- Parameterstring erwarten, korrekt.
-
- - TESTTIME belegt nur noch ca. 4400 Byte Speicher
- während der Ausführung des Programms. Außerdem
- wird das Environment von TESTTIME vor der Aus-
- führung des Programms wieder freigegeben.
-
- - Die Adressen der Routinen für die veränderten
- Interrupts werden nun ebenfalls ausgegeben.
-
- - Die Daten aller vom Programm belegten Speicher-
- blöcke werden jetzt auch ausgegeben falls diese
- nicht wieder freigegeben werden sollen.
-
- - Die Daten aller veränderten Interrupts werden nun
- auch ausgegeben falls diese nicht restauriert
- werden sollen.
-
- - Die Strategie zum Auffinden der durch das aus-
- zuführende Programm belegten und nicht wieder
- freigegebenen Speicherblöcke wurde verbessert.
-
- - Zusätzlich wurde der Schalter '/R' implementiert.
-
-
- V1.03 - 12.04.1990
- - Zusätzlich wurde der Schalter '/!' implementiert.
-
-
- V1.05 - 15.01.1991
- - Ein Fehler bei der Ermittlung des 1. MCB wurde
- korrigiert.
-
- V1.06 - 05.04.1991
- V1.10 - 29.05.1992
- - nur interne Korrekturen
-
-
- Dokumentation zu TESTTIME Seite 3
- ─────────────────────────────────────────────────────────────────────────────
-
-
-
- V1.15 - 08.05.1993
- - in der vorherigen Version hat Testtime Programme,
- die in einem in der Variablen PATH angegebenen
- Directory lagen nur gefunden, falls der ent-
- sprechende PATH-Eintrag mit einem ':' oder einem
- '\' endete. Der Fehler wurde behoben.
-
- - in der vorherigen Version hat TestTime UMBs nur
- gefunden, falls diese in die Kette der MCBs ein-
- gebunden waren. Der Fehler wurde beseitigt.
-
- V1.16 - 08.10.1993
- - nur meine Adresse hat sich geändert
-
-
- Dokumentation zu TESTTIME Seite 4
- ─────────────────────────────────────────────────────────────────────────────
-
-
-
-
- Aufruf: TESTTIME {schalter} [programm] {parameter_für_programm}
-
- Parameter:
-
- schalter - Schalter für TESTTIME
-
- /B - Bildschirmausgaben von TESTTIME über das BIOS
- /I - Sichern und Restaurieren der Interrupts
- unterdrücken
- /S - Reinigen des Speichers unterdrücken, d.h.
- TESTTIME und das auszuführende Programm
- bleiben im Speicher
- /C - Ausführung über den COMMAND.COM erzwingen
- /P - Angegebenen Namen nicht überprüfen
- /R - 'altes' TESTTIME aus den Speicher entfernen
- (alle weiteren Parameter werden ignoriert)
- /! - Programm in High-Memory laden
-
- programm - Name des auszuführenden Programms
-
- parameter_für_das_programm
- - Parameter für das auszuführende Programm
-
-
- TESTTIME dient zum Ermitteln des Laufzeit-Verhaltens eines Programms.
- Dazu ermittelt TESTTIME verschiedene Daten des auszuführenden Pro-
- gramms und gibt diese auf die Standard-Ausgabe aus.
-
- Vor dem Starten des Programms werden der ermittelte Programm-Name und
- die ermittelten Parameter auf der Standard-Ausgabe ausgegeben. Ausge-
- geben wird der Name des Programms inclusive dem ermittelten Pfad
- (wobei logische Laufwerke nicht aufgelöst werden). Zur Erinnerung
- werden diese Daten auch nach der Ausführung noch einmal ausgegeben.
-
- Nach der Ausführung werden die Startzeit, die Endzeit, die Laufzeit,
- der Errorlevel, der Return-Code und evtl. die veränderten Interrupts
- auf die Standard-Ausgabe ausgegeben. Zu jedem veränderten Interrupt
- wird auch die geänderte Adresse ausgegeben. Die Interrupts werden
- über die Funktion 25h bzw. 35h des Interrupt 21h gesichert und restau-
- riert. Der Interrupt 22h (= Rückkehr-Adresse) ist immer geändert.
-
- Ausgegeben werden auch die Daten vom ausgeführten Programm belegter
- und nicht wieder freigegebener Speicherblöcke. Für jeden Speicherblock
- wird hier die Segment-Adresse des MCB, die Segmentadresse des zuge-
- hörigen PSP und die Länge des Blocks in Paragraphen ausgegeben. (in
- hexadezimaler Schreibweise). TESTTIME geht davon aus, daß jeder
- Speicherblock, der nach der Ausführung des Programms einem Hauptblock
- welcher vor der Ausführung nicht vorhanden war zugeordnet ist, ein
- vom auszuführenden Programm belegter Speicherblock ist.
-
- Der Errorlevel und der Return-Code werden nicht ausgegeben, falls das
- Programm mit dem Schalter '/C' über den COMMAND.COM ausgeführt wurde.
-
- z.B. TESTTIME /C LABEL
-
-
- Dokumentation zu TESTTIME Seite 5
- ─────────────────────────────────────────────────────────────────────────────
-
- Ausgeführt werden können nur Programme mit den Extensions EXE, COM
- oder BAT. EXE und COM-Programme werden direkt ausgeführt, BAT-Pro-
- gramme werden in jedem Fall über den COMMAND.COM ausgeführt. Interne
- Befehle müssen durch die Schalter '/C' und '/P' über den COMMAND.COM
- ausgeführt werden.
-
- TESTTIME überprüft, ob ein ausführbares Programm vorhanden ist äqui-
- valent zu DOS, inclusive Berücksichtigung der Variablen PATH. Ist die
- Extension explizit angegeben, so wird das angegebene Programm aller-
- dings auch ausgeführt, DOS ignoriert die Extension. Wird kein ausführ-
- bares Programm gefunden, bricht TESTTIME mit einer Fehlermeldung ab.
-
- Die Ein/Ausgabe-Umleitung mittels '<' bzw. '>' in der Kommando-Zeile
- gilt für TESTTIME und das auszuführende Programm (TESTTIME benötigt
- aber keine Eingabe von der Standard-Eingabe), eine PIPE '|' gilt eben-
- falls für TESTTIME und das auszuführende Programm.
-
- Über verschiedene Schalter kann auf das Verhalten von TESTTIME Ein-
- fluß genommen werden; Schalter für TESTTIME müssen vor dem Namen des
- auszuführenden Programms stehen.
-
- Der Schalter '/B' bewirkt, daß die Ausgaben von TESTTIME über den
- BIOS-Int 10h durchgeführt werden. In diesem Fall, wirken die Ein/Aus-
- gabeumleitung und eine Pipe nur auf das auszuführende Programm.
-
- Das Restaurieren der Interrupt-Vektoren nach der Programmausführung
- kann durch den Schalter '/I' unterdrückt werden.
-
- Durch den Schalter '/S' kann das Bereinigen des Speichers nach der
- Programmausführung verhindert werden, d.h. der von TESTTIME und dem
- auszuführenden Programm belegte Speicher wird nicht freigegeben. Der
- Schalter '/S' wird ignoriert falls das auszuführende Programm nicht
- speicherresident gemacht wird. Ist '/S' nicht gesetzt, werden die
- Interrupt-Vektoren immer zurückgesetzt. D.h. die Angabe von '/I' wird
- ignoriert falls '/S' nicht gesetzt ist.
-
- Durch den Aufruf 'TESTTIME /R' kann der von TESTTIME und dem auszu-
- führenden Programm noch belegte Speicher nachträglich wieder freige-
- geben werden. Ein Aufruf von TESTTIME ohne den Parameter '/R' nach
- dem Aufruf von TESTTIME mit dem Parameter '/S' ist nicht möglich da
- immer nur eine Kopie von TESTTIME im Speicher sein kann. Falls der
- Parameter '/R' angegeben ist, werden alle anderen Parameter ignoriert.
- Durch den Parameter '/R' werden ALLE Speicherblöcke die zu einem
- vor dem ersten Aufruf von TESTTIME noch nicht vorhandenen Hauptblock
- gehören also erst nach dem ersten Aufruf von TESTTIME erstellt wurden
- (z.B. durch Aufruf von speicherresidenten Programmen) wieder frei-
- gegeben! (Ausnahme: Speicherblöcke des Betriebssystems und des aktuel-
- len Shell-Programms) Aus diesem Grund darf zwischen den beiden
- Aufrufen kein Programm daß Interrupt-Vektoren umsetzt geladen werden!
- Auch sollte TESTTIME mit dem Parameter '/R' nicht aus einem Debugger
- heraus aufgerufen werden, da TESTTIME in diesem Fall auch die Speich-
- cherblöcke des Debuggers wieder freigeben würde.
- Der Parameter '/R' ist nicht möglich, falls beim Aufruf mit dem Para-
- meter '/S' zusätzlich der Parameter '/I' angegeben wurde.
-
-
-
-
- Dokumentation zu TESTTIME Seite 6
- ─────────────────────────────────────────────────────────────────────────────
-
-
- Der Schalter '/C' erzwingt die Ausführung über den COMMAND.COM und
- der Schalter '/P' verhindert die Überprüfung des angegebenen Programm-
- namens.
-
- Der Schalter '/!' bewirkt, daß TESTTIME seinen eigenen Speicherbe-
- reich vor der Ausführung nicht verkleinert, so daß das auszuführende
- Programm also in einen weiteren freien Speicherbereich (falls vorhan-
- den) ausgeführt werden muß. Mit dem Schalter '/!' geladene Programme
- können nicht über den Aufruf 'TESTTIME /R' wieder aus dem Speicher ge-
- löscht werden. Falls der Parameter '/!' angegeben ist, gibt TESTTIME
- nach der Ausführung des Programms seinen Speicher immer wieder frei.
- D.h. TESTTIME kann mit den Parameter '/! /S' auch mehrmals hinterei-
- nander aufgerufen werden (siehe auch Fehlermeldungen).
-
-
- Fehlermeldungen von TESTIME:
-
- Fehlerhafter Programm-Name!
-
- - Das angegebene Programm wurde nicht gefunden.
-
- Hinweis: Interne Befehle müssen mit den Schaltern '/C' und '/P'
- ausgeführt werden.
-
- z.B. TESTTIME /C /P DIR *.COM
-
-
- COMSPEC-Variable nicht gefunden!
-
- - TESTTIME ermittelt den Namen des aktuellen Kommando-Interpreters
- aus der Umgebungsvariablen COMSPEC, falls diese leer oder fehler-
- haft ist können keine Befehle über den Kommando-Interpreter ausge-
- führt werden. (das sind BAT-Dateien und alle Aufrufe mit dem Para-
- meter '/C')
-
-
- SYSTEM-Dateien können nicht ausgeführt werden!
-
-
- TESTTIME noch geladen!
-
- - Nach einem Aufruf von TESTTIME mit dem Parameter '/S' muß zuerst
- ein Aufruf von TESTTIME mit dem Parameter '/R' erfolgen, da immer
- nur eine Version von TESTTIME im Speicher sein darf. Falls dies
- umgangen werden soll, kann TESTTIME über den DOS-Befehl RENAME um-
- benannt werden und das umbenannte Programm für den zweiten Aufruf
- verwendet werden.(Ausnahme: Aufruf mit den Schaltern '/S' und '/!')
-
-
- Kein residentes TESTTIME gefunden!
-
- - Der Parameter '/R' kann nur verwendet werden, falls vorher TESTTIME
- mit dem Parameter '/S' aufgerufen wurde.
-
-
-
- Dokumentation zu TESTTIME Seite 7
- ─────────────────────────────────────────────────────────────────────────────
-
-
- Interrupt-Vektoren wurden nicht restauriert!
-
- - Falls TESTTIME mit den Parametern '/S' und '/I' aufgerufen wurde,
- ist der Parameter '/R' bei einen weiteren Aufruf nicht möglich.
-
-
- Kein High-Memory gefunden!
-
- - Der Parameter '/!' ist nur möglich, falls der letzte MCB hinter
- A000:0000 liegt.
-
-
- Folgende Fehler werden von der EXEC-Funktion bzw. von den Funktionen
- zur Freigabe noch belegter Speicherbereiche zurückgeliefert:
-
- - Datei nicht gefunden!
-
-
- - Pfad nicht gefunden!
-
-
- - Speicherkontrollblöcke zerstört!
-
- Das System sollte neu gebootet werden.
-
-
- - Zuwenig Speicher!
-
-
- - Ungültige Speicherkontrollblockadresse!
-
- Das System sollte neu gebootet werden.
-
-
- - Ungültige Umgebung!
-
-
- - Ungültiger Zugriffscode!
-
- und
-
- - Unbekannter Fehler
-
-
- Hinweise:
-
- - Alle Programme die Speicherstellen im Betriebssystem verändern
- dürfen über TESTTIME nur mit den Parametern '/S /I' (keine
- Speicherbereinigung und kein Restaurieren der Interrupt-Vekto-
- ren) ausgeführt werden.
-
-
-
-
-
-
- Dokumentation zu TESTTIME Seite 8
- ─────────────────────────────────────────────────────────────────────────────
-
-
-
- - Soll der COMMAND.COM explizit als auszuführendes Programm an-
- gegeben werden, so muß vor den Parametern für diesen der
- Schalter '/C' (für COMMAND.COM, nicht für TESTTIME) angegeben
- werden, da der COMMAND.COM sonst den angegebenen Programmnamen
- als Inhalt für die Variable COMSPEC interpretiert.
-
- z.B. TESTTIME COMMAND.COM /C DIR
-
-
- - Zum Testen von Programmen die Interruptvektoren verändern
- (TSR) kann folgender Aufruf benutzt werden (hier mit ASSIGN):
-
- TESTTIME /S assign A=C
-
- Der Schalter '/S' veranlasst hier TESTTIME den Speicher nach
- der Ausführung nicht zu bereinigen, d.h. das zu testende
- Programm befindet sich noch im Speicher. Da aber die Inter-
- rupt-Vektoren von TESTTIME zurückgesetzt wurden, ist es nicht
- mehr aktiv. Die von TESTTIME ausgegeben Adressen für die
- Interrupt-Vektoren können jetzt als Einsprungstellen für die
- Untersuchung des Programms mit einem Debugger benutzt werden.
- Nachdem das Programm getestet wurde kann es über den Aufruf
-
- TESTTIME /R
-
- wieder aus den Speicher entfernt werden.
-
-
-
-
-
-