home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1632 / testtime.doc < prev    next >
Encoding:
Text File  |  1993-10-09  |  14.8 KB  |  381 lines

  1. Dokumentation zu TESTTIME                                            Seite  1
  2. ─────────────────────────────────────────────────────────────────────────────
  3.  
  4.  Programmname:    TESTTIME.COM
  5.  
  6.  Version:         V1.16
  7.  
  8.  Funktion:        Ermitteln der Laufzeit und verschiedener Daten
  9.                   eines Programms
  10.  
  11.  Autor:           Bernd Schemmer
  12.                   Bäckerweg 48
  13.                   60316 Frankfurt/M.
  14.                   Tel.: (069) 4 97 04 84
  15.  
  16.  System:          IBM-PC/AT/Kompatibler
  17.  
  18.  BS:              DOS 3.3 oder höher
  19.  Sprache:         Assembler
  20.  Compiler:        A86
  21.  
  22.  Besonderheiten:  Benutzt die undokumentierten Funktionen 37h (Get-DOS-
  23.                   Switch) und 60h (Process File Name) des Interrupt 21h
  24.                   und die MCBs
  25.                   Unterstützt weder EMS noch ExtendedMemory.
  26.  
  27.  Letzter Update:  08.10.1993
  28.  
  29.  Vertriebsart:    Freeware
  30.  
  31.  
  32. Dokumentation zu TESTTIME                                            Seite  2
  33. ─────────────────────────────────────────────────────────────────────────────
  34.  
  35.  
  36.  Update-History:
  37.                   V1.01 - 20.12.1989
  38.                     - erster Release
  39.  
  40.  
  41.                   V1.02 - 11.04.1990
  42.                     - TESTTIME  funktioniert jetzt auch mit Programmen,
  43.                       die die  Parameter an einer  bestimmten Stelle im
  44.                       Parameterstring erwarten, korrekt.
  45.  
  46.                     - TESTTIME belegt  nur noch  ca. 4400 Byte Speicher
  47.                       während der Ausführung  des  Programms.  Außerdem
  48.                       wird das Environment von  TESTTIME  vor der  Aus-
  49.                       führung des Programms wieder freigegeben.
  50.  
  51.                     - Die  Adressen der  Routinen  für die  veränderten
  52.                       Interrupts werden nun ebenfalls ausgegeben.
  53.  
  54.                     - Die Daten  aller vom  Programm  belegten Speicher-
  55.                       blöcke  werden jetzt auch ausgegeben  falls  diese
  56.                       nicht  wieder freigegeben  werden sollen.
  57.  
  58.                     - Die Daten aller veränderten Interrupts werden nun
  59.                       auch  ausgegeben falls  diese  nicht  restauriert
  60.                       werden sollen.
  61.  
  62.                     - Die Strategie  zum  Auffinden  der durch das aus-
  63.                       zuführende  Programm  belegten  und  nicht wieder
  64.                       freigegebenen Speicherblöcke wurde verbessert.
  65.  
  66.                     - Zusätzlich wurde der Schalter '/R' implementiert.
  67.                   
  68.  
  69.                   V1.03 - 12.04.1990
  70.                     - Zusätzlich wurde der Schalter '/!' implementiert.
  71.  
  72.  
  73.                   V1.05 - 15.01.1991
  74.                     - Ein Fehler  bei  der Ermittlung des 1. MCB wurde
  75.                       korrigiert.
  76.  
  77.                   V1.06 - 05.04.1991
  78.                   V1.10 - 29.05.1992
  79.                     - nur interne Korrekturen
  80.  
  81.  
  82. Dokumentation zu TESTTIME                                            Seite  3
  83. ─────────────────────────────────────────────────────────────────────────────
  84.  
  85.  
  86.  
  87.                   V1.15 - 08.05.1993
  88.                     - in der vorherigen Version hat Testtime Programme,
  89.                       die in  einem in der  Variablen PATH  angegebenen
  90.                       Directory  lagen nur  gefunden,  falls  der  ent-
  91.                       sprechende PATH-Eintrag mit einem  ':' oder einem
  92.                       '\' endete. Der Fehler wurde behoben.
  93.  
  94.                     - in der vorherigen  Version hat  TestTime UMBs nur
  95.                       gefunden, falls diese in die Kette der MCBs  ein-
  96.                       gebunden waren. Der Fehler wurde beseitigt.
  97.  
  98.                   V1.16 - 08.10.1993
  99.                     - nur meine Adresse hat sich geändert
  100.  
  101.  
  102. Dokumentation zu TESTTIME                                            Seite  4
  103. ─────────────────────────────────────────────────────────────────────────────
  104.  
  105.  
  106.  
  107.  
  108.  Aufruf:          TESTTIME {schalter} [programm] {parameter_für_programm}
  109.  
  110.  Parameter:
  111.  
  112.  schalter         - Schalter für TESTTIME
  113.  
  114.                     /B  - Bildschirmausgaben von TESTTIME über das BIOS
  115.                     /I  - Sichern und Restaurieren der Interrupts
  116.                           unterdrücken
  117.                     /S  - Reinigen des Speichers unterdrücken, d.h.
  118.                           TESTTIME und das auszuführende Programm
  119.                           bleiben im Speicher
  120.                     /C  - Ausführung über den COMMAND.COM erzwingen
  121.                     /P  - Angegebenen Namen nicht überprüfen
  122.                     /R  - 'altes' TESTTIME aus den Speicher entfernen
  123.                           (alle weiteren Parameter werden ignoriert)
  124.                     /!  - Programm in High-Memory laden
  125.  
  126.  programm         - Name des auszuführenden Programms
  127.  
  128.  parameter_für_das_programm
  129.                   - Parameter für das auszuführende Programm
  130.  
  131.  
  132.  TESTTIME dient zum Ermitteln des  Laufzeit-Verhaltens eines Programms.
  133.  Dazu ermittelt TESTTIME  verschiedene  Daten des  auszuführenden  Pro-
  134.  gramms und gibt diese auf die Standard-Ausgabe aus.
  135.  
  136.  Vor dem Starten des Programms  werden der ermittelte Programm-Name und
  137.  die ermittelten Parameter auf der Standard-Ausgabe ausgegeben.  Ausge-
  138.  geben  wird  der Name  des Programms  inclusive  dem ermittelten  Pfad
  139.  (wobei  logische  Laufwerke  nicht aufgelöst werden).  Zur  Erinnerung
  140.  werden diese Daten auch nach der Ausführung noch einmal ausgegeben.
  141.  
  142.  Nach  der Ausführung  werden die Startzeit, die Endzeit, die Laufzeit,
  143.  der Errorlevel, der Return-Code und evtl.  die veränderten  Interrupts
  144.  auf die  Standard-Ausgabe  ausgegeben. Zu  jedem veränderten Interrupt
  145.  wird  auch  die geänderte  Adresse ausgegeben.  Die  Interrupts werden
  146.  über die Funktion 25h bzw. 35h des Interrupt 21h gesichert und restau-
  147.  riert. Der Interrupt 22h (= Rückkehr-Adresse) ist immer geändert.
  148.  
  149.  Ausgegeben  werden auch  die Daten  vom ausgeführten Programm belegter
  150.  und nicht wieder freigegebener Speicherblöcke. Für jeden Speicherblock
  151.  wird hier  die Segment-Adresse des MCB, die  Segmentadresse  des zuge-
  152.  hörigen  PSP und die Länge des Blocks  in Paragraphen ausgegeben.  (in
  153.  hexadezimaler  Schreibweise).  TESTTIME  geht  davon  aus,  daß  jeder
  154.  Speicherblock, der nach der Ausführung des Programms einem  Hauptblock
  155.  welcher vor der Ausführung  nicht  vorhanden war  zugeordnet ist,  ein
  156.  vom auszuführenden Programm belegter Speicherblock ist.
  157.  
  158.  Der Errorlevel  und der Return-Code werden nicht ausgegeben, falls das
  159.  Programm mit dem Schalter '/C' über den  COMMAND.COM ausgeführt wurde.
  160.  
  161.  z.B. TESTTIME /C LABEL
  162.  
  163.  
  164. Dokumentation zu TESTTIME                                            Seite  5
  165. ─────────────────────────────────────────────────────────────────────────────
  166.  
  167.  Ausgeführt werden können nur Programme  mit den  Extensions  EXE,  COM
  168.  oder  BAT.  EXE  und  COM-Programme werden direkt ausgeführt, BAT-Pro-
  169.  gramme  werden in  jedem Fall über den COMMAND.COM ausgeführt. Interne
  170.  Befehle müssen  durch die  Schalter '/C' und '/P' über den COMMAND.COM
  171.  ausgeführt werden.
  172.  
  173.  TESTTIME überprüft, ob ein  ausführbares  Programm vorhanden ist äqui-
  174.  valent zu  DOS, inclusive Berücksichtigung der Variablen PATH. Ist die
  175.  Extension explizit angegeben, so wird das  angegebene  Programm aller-
  176.  dings auch ausgeführt, DOS ignoriert die Extension. Wird kein ausführ-
  177.  bares  Programm gefunden,  bricht TESTTIME mit einer Fehlermeldung ab.
  178.  
  179.  Die Ein/Ausgabe-Umleitung mittels '<' bzw. '>'  in der  Kommando-Zeile
  180.  gilt  für TESTTIME und  das auszuführende  Programm (TESTTIME benötigt
  181.  aber keine Eingabe von der Standard-Eingabe), eine PIPE '|' gilt eben-
  182.  falls für TESTTIME und das auszuführende Programm.
  183.  
  184.  Über verschiedene Schalter  kann auf das  Verhalten von  TESTTIME Ein-
  185.  fluß  genommen werden; Schalter  für TESTTIME müssen vor dem Namen des
  186.  auszuführenden Programms stehen.
  187.  
  188.  Der Schalter '/B' bewirkt,  daß  die  Ausgaben von  TESTTIME  über den
  189.  BIOS-Int 10h durchgeführt werden.  In diesem Fall, wirken die Ein/Aus-
  190.  gabeumleitung und eine Pipe nur auf das auszuführende Programm.
  191.  
  192.  Das Restaurieren der  Interrupt-Vektoren  nach der  Programmausführung
  193.  kann durch den Schalter '/I' unterdrückt werden.
  194.  
  195.  Durch den  Schalter  '/S' kann das Bereinigen des  Speichers  nach der
  196.  Programmausführung  verhindert werden,  d.h. der von TESTTIME und  dem
  197.  auszuführenden Programm  belegte Speicher wird nicht  freigegeben. Der
  198.  Schalter '/S' wird ignoriert  falls das  auszuführende  Programm nicht
  199.  speicherresident  gemacht  wird.  Ist  '/S'  nicht gesetzt, werden die
  200.  Interrupt-Vektoren immer zurückgesetzt. D.h. die Angabe von '/I'  wird
  201.  ignoriert falls '/S' nicht gesetzt ist.
  202.  
  203.  Durch  den Aufruf  'TESTTIME /R' kann  der von TESTTIME und dem auszu-
  204.  führenden  Programm noch  belegte Speicher nachträglich wieder freige-
  205.  geben  werden. Ein Aufruf von  TESTTIME ohne  den Parameter  '/R' nach
  206.  dem  Aufruf von  TESTTIME mit dem Parameter '/S' ist  nicht möglich da
  207.  immer nur eine  Kopie von  TESTTIME im Speicher  sein kann. Falls  der
  208.  Parameter '/R' angegeben ist, werden alle anderen Parameter ignoriert.
  209.  Durch  den  Parameter '/R'  werden  ALLE  Speicherblöcke  die zu einem
  210.  vor dem ersten  Aufruf von  TESTTIME noch nicht vorhandenen Hauptblock
  211.  gehören also  erst nach dem ersten Aufruf von TESTTIME erstellt wurden
  212.  (z.B. durch  Aufruf von speicherresidenten  Programmen)  wieder  frei-
  213.  gegeben! (Ausnahme: Speicherblöcke des Betriebssystems und des aktuel-
  214.  len  Shell-Programms)  Aus  diesem  Grund  darf  zwischen  den  beiden
  215.  Aufrufen kein Programm daß  Interrupt-Vektoren umsetzt geladen werden!
  216.  Auch sollte TESTTIME mit dem Parameter '/R'  nicht  aus einem Debugger
  217.  heraus aufgerufen werden, da TESTTIME in  diesem Fall auch die Speich-
  218.  cherblöcke des Debuggers wieder freigeben würde.
  219.  Der Parameter '/R' ist nicht  möglich, falls beim Aufruf mit dem Para-
  220.  meter '/S' zusätzlich der Parameter '/I' angegeben wurde.
  221.  
  222.  
  223.  
  224.  
  225. Dokumentation zu TESTTIME                                            Seite  6
  226. ─────────────────────────────────────────────────────────────────────────────
  227.  
  228.  
  229.  Der Schalter '/C' erzwingt die  Ausführung über  den  COMMAND.COM  und
  230.  der Schalter '/P' verhindert die Überprüfung des angegebenen Programm-
  231.  namens.
  232.  
  233.  Der  Schalter '/!'  bewirkt,  daß  TESTTIME seinen eigenen Speicherbe-
  234.  reich  vor der Ausführung nicht verkleinert, so daß  das auszuführende
  235.  Programm  also in einen weiteren freien Speicherbereich (falls vorhan-
  236.  den) ausgeführt werden  muß.  Mit dem Schalter '/!' geladene Programme
  237.  können nicht über den Aufruf 'TESTTIME /R' wieder aus dem Speicher ge-
  238.  löscht werden. Falls der Parameter '/!'  angegeben ist, gibt  TESTTIME
  239.  nach der  Ausführung des  Programms seinen Speicher immer wieder frei.
  240.  D.h. TESTTIME kann mit  den  Parameter '/! /S' auch mehrmals hinterei-
  241.  nander aufgerufen werden (siehe auch Fehlermeldungen).
  242.  
  243.  
  244.  Fehlermeldungen von TESTIME:
  245.  
  246.   Fehlerhafter Programm-Name!  
  247.  
  248.    - Das angegebene Programm wurde nicht gefunden.
  249.  
  250.      Hinweis: Interne  Befehle  müssen  mit den Schaltern '/C' und '/P'
  251.               ausgeführt werden.
  252.  
  253.               z.B.   TESTTIME /C /P DIR *.COM
  254.  
  255.  
  256.   COMSPEC-Variable nicht gefunden!
  257.  
  258.    - TESTTIME ermittelt den  Namen des aktuellen  Kommando-Interpreters
  259.      aus der Umgebungsvariablen COMSPEC, falls  diese leer oder fehler-
  260.      haft ist können keine Befehle über den Kommando-Interpreter ausge-
  261.      führt werden. (das sind BAT-Dateien und alle Aufrufe mit dem Para-
  262.      meter '/C')
  263.  
  264.  
  265.   SYSTEM-Dateien können nicht ausgeführt werden!
  266.  
  267.  
  268.   TESTTIME noch geladen!
  269.  
  270.   - Nach einem Aufruf von TESTTIME  mit dem Parameter '/S'  muß  zuerst
  271.     ein Aufruf von TESTTIME mit dem  Parameter '/R' erfolgen,  da immer
  272.     nur eine  Version von TESTTIME  im Speicher  sein darf.  Falls dies
  273.     umgangen werden soll, kann  TESTTIME über den DOS-Befehl RENAME um-
  274.     benannt  werden und  das umbenannte Programm für den zweiten Aufruf
  275.     verwendet werden.(Ausnahme: Aufruf mit den Schaltern '/S' und '/!')
  276.  
  277.  
  278.   Kein residentes TESTTIME gefunden!
  279.  
  280.   - Der Parameter '/R' kann nur verwendet werden, falls vorher TESTTIME
  281.     mit dem Parameter '/S' aufgerufen wurde.
  282.  
  283.  
  284.  
  285. Dokumentation zu TESTTIME                                            Seite  7
  286. ─────────────────────────────────────────────────────────────────────────────
  287.  
  288.  
  289.   Interrupt-Vektoren wurden nicht restauriert!
  290.  
  291.   - Falls TESTTIME mit den Parametern '/S' und '/I'  aufgerufen  wurde,
  292.     ist der Parameter '/R' bei einen weiteren Aufruf nicht möglich.
  293.  
  294.  
  295.   Kein High-Memory gefunden!
  296.  
  297.   - Der Parameter '/!'  ist nur  möglich,  falls der  letzte MCB hinter
  298.     A000:0000 liegt.
  299.  
  300.  
  301.   Folgende Fehler werden von der EXEC-Funktion bzw. von den  Funktionen
  302.   zur Freigabe noch belegter Speicherbereiche zurückgeliefert:
  303.  
  304.   - Datei nicht gefunden!
  305.  
  306.  
  307.   - Pfad nicht gefunden!
  308.  
  309.  
  310.   - Speicherkontrollblöcke zerstört!
  311.  
  312.     Das System sollte neu gebootet werden.
  313.  
  314.  
  315.   - Zuwenig Speicher!
  316.  
  317.  
  318.   - Ungültige Speicherkontrollblockadresse!
  319.  
  320.     Das System sollte neu gebootet werden.
  321.  
  322.  
  323.   - Ungültige Umgebung!
  324.  
  325.  
  326.   - Ungültiger Zugriffscode!
  327.  
  328.   und
  329.  
  330.   - Unbekannter Fehler
  331.  
  332.  
  333.  Hinweise:
  334.  
  335.        - Alle Programme die Speicherstellen im Betriebssystem verändern
  336.          dürfen  über  TESTTIME nur  mit  den Parametern '/S /I' (keine
  337.          Speicherbereinigung und kein Restaurieren der Interrupt-Vekto-
  338.          ren) ausgeführt werden.
  339.          
  340.  
  341.  
  342.  
  343.  
  344.  
  345. Dokumentation zu TESTTIME                                            Seite  8
  346. ─────────────────────────────────────────────────────────────────────────────
  347.  
  348.  
  349.  
  350.        - Soll der  COMMAND.COM explizit als auszuführendes Programm an-
  351.          gegeben  werden,  so  muß  vor  den Parametern  für diesen der
  352.          Schalter '/C' (für  COMMAND.COM, nicht für TESTTIME) angegeben
  353.          werden, da der COMMAND.COM sonst den angegebenen Programmnamen
  354.          als Inhalt  für  die Variable  COMSPEC interpretiert.
  355.  
  356.           z.B.  TESTTIME COMMAND.COM /C DIR
  357.  
  358.  
  359.         - Zum  Testen von  Programmen die  Interruptvektoren  verändern
  360.           (TSR) kann folgender Aufruf benutzt werden (hier mit ASSIGN):
  361.  
  362.           TESTTIME /S assign A=C
  363.  
  364.           Der Schalter '/S' veranlasst hier TESTTIME den  Speicher nach
  365.           der  Ausführung  nicht zu  bereinigen,  d.h.  das zu testende
  366.           Programm  befindet  sich noch im Speicher. Da aber die Inter-
  367.           rupt-Vektoren von TESTTIME zurückgesetzt wurden, ist es nicht
  368.           mehr  aktiv.  Die von TESTTIME  ausgegeben Adressen  für  die
  369.           Interrupt-Vektoren können jetzt  als Einsprungstellen für die
  370.           Untersuchung des Programms mit einem Debugger benutzt werden.
  371.           Nachdem das Programm getestet wurde kann es über den Aufruf
  372.  
  373.           TESTTIME /R
  374.  
  375.           wieder aus den Speicher entfernt werden.
  376.  
  377.  
  378.  
  379.  
  380.  
  381.