home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* STOPPUHR.INC *)
- (* Routine zum Messen der Laufzeit *)
- (* eines Programms oder von Programmteilen *)
- (* (C) 1988 by Christian Ramsauer & TOOLBOX *)
- (* ------------------------------------------------------ *)
-
- TYPE Zeitangabe = STRING[11]; (* Typ für Zeitausgabe *)
-
- VAR startzeit, endzeit : REAL;
-
- FUNCTION Zeit : REAL; (* liest Uhrzeit ein *)
-
- TYPE Register = RECORD
- AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS : INTEGER;
- END;
-
- VAR regist : Register;
-
- BEGIN
- regist.AX := $2C00;
- INTR($21,regist);
- WITH regist DO
- Zeit := (hi(cx)*3.6E5) + (lo(cx)*6.0E3) +
- (hi(dx)*1.0E2) + lo(dx);
- END;
-
- PROCEDURE Start; (* liest die Startzeit *)
-
- BEGIN
- startzeit := Zeit;
- END;
-
- PROCEDURE Stop; (* liest die Stoppzeit *)
-
- BEGIN
- endzeit := Zeit;
- END;
-
- FUNCTION Stoppzeit : Zeitangabe;
-
- VAR std, min, sek, hun, i : INTEGER;
- dauer : REAL;
- t1, t2, t3, t4 : STRING[2];
- sz : Zeitangabe;
-
- BEGIN
- dauer := endzeit-startzeit;
- IF dauer < 0 THEN dauer := 8.64E6 - startzeit + endzeit;
- std := trunc((dauer/3.6E5) + 1E-6);
- dauer := dauer - (std*3.6E5);
- min := trunc((dauer/6E3) + 1E-6);
- dauer := dauer - (min*6E3);
- sek := trunc((dauer/1E2) + 1E-6);
- dauer := dauer - (sek*1E2);
- hun := trunc(dauer + 1E-6);
- str(std:2,t1);
- str(min:2,t2);
- str(sek:2,t3);
- str(hun:2,t4);
- sz := t1 + #58 + t2 + #58 + t3 + #46 + t4;
- FOR i := 1 TO 11 DO BEGIN
- IF sz[i]=#32 THEN sz[i] := #48;
- END;
- Stoppzeit := sz;
- END;
- (* ------------------------------------------------------ *)
- (* Ende von STOPPUHR.INC *)