home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 02 / tricks / stoppuhr.inc < prev    next >
Encoding:
Text File  |  1988-11-18  |  1.9 KB  |  69 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     STOPPUHR.INC                       *)
  3. (*            Routine zum Messen der Laufzeit             *)
  4. (*        eines Programms oder von Programmteilen         *)
  5. (*      (C) 1988 by Christian Ramsauer  &  TOOLBOX        *)
  6. (* ------------------------------------------------------ *)
  7.  
  8. TYPE  Zeitangabe = STRING[11];     (* Typ für Zeitausgabe *)
  9.  
  10. VAR  startzeit, endzeit : REAL;
  11.  
  12. FUNCTION Zeit : REAL;              (*   liest Uhrzeit ein *)
  13.  
  14. TYPE Register = RECORD
  15.                  AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS : INTEGER;
  16.                 END;
  17.  
  18. VAR  regist : Register;
  19.  
  20. BEGIN
  21.   regist.AX := $2C00;
  22.   INTR($21,regist);
  23.   WITH regist DO
  24.     Zeit := (hi(cx)*3.6E5) + (lo(cx)*6.0E3) +
  25.             (hi(dx)*1.0E2) + lo(dx);
  26. END;
  27.  
  28. PROCEDURE Start;                   (* liest die Startzeit *)
  29.  
  30. BEGIN
  31.   startzeit := Zeit;
  32. END;
  33.  
  34. PROCEDURE Stop;                    (* liest die Stoppzeit *)
  35.  
  36. BEGIN
  37.   endzeit := Zeit;
  38. END;
  39.  
  40. FUNCTION Stoppzeit : Zeitangabe;
  41.  
  42. VAR  std, min, sek, hun, i : INTEGER;
  43.      dauer                 : REAL;
  44.      t1, t2, t3, t4        : STRING[2];
  45.      sz                    : Zeitangabe;
  46.  
  47. BEGIN
  48.   dauer := endzeit-startzeit;
  49.   IF dauer < 0 THEN dauer := 8.64E6 - startzeit + endzeit;
  50.   std := trunc((dauer/3.6E5) + 1E-6);
  51.   dauer := dauer - (std*3.6E5);
  52.   min := trunc((dauer/6E3) + 1E-6);
  53.   dauer := dauer - (min*6E3);
  54.   sek := trunc((dauer/1E2) + 1E-6);
  55.   dauer := dauer - (sek*1E2);
  56.   hun := trunc(dauer + 1E-6);
  57.   str(std:2,t1);
  58.   str(min:2,t2);
  59.   str(sek:2,t3);
  60.   str(hun:2,t4);
  61.   sz := t1 + #58 + t2 + #58 + t3 + #46 + t4;
  62.   FOR i := 1 TO 11 DO BEGIN
  63.     IF sz[i]=#32 THEN sz[i] := #48;
  64.   END;
  65.   Stoppzeit := sz;
  66. END;
  67. (* ------------------------------------------------------ *)
  68. (*                Ende von STOPPUHR.INC                   *)
  69.