home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / pcmag / vol6n20.zip / FIGURES.ZIP / FIGURE.1 next >
Text File  |  1987-10-16  |  1KB  |  45 lines

  1. (*********************************************************)
  2. (* Include this file in your programs as TIMER.INC.      *)
  3. (* A typical use of the routine would look like this:    *)
  4. (*    timer(on);                                         *)
  5. (*    FOR I := 1 to 10000 DO {something};                *)
  6. (*    timer(off);                                        *)
  7. (*    Write('10,000 repetitions of {something} took ');  *)
  8. (*    WriteLn(time:1:2,' seconds.');                     *)
  9. (*********************************************************)
  10.  
  11. TYPE OnOrOff = (On, Off);
  12. VAR start, time : Real;
  13.  
  14.   PROCEDURE timer(O : OnOrOff);
  15.   TYPE
  16.     Registers = RECORD
  17.       CASE Integer OF
  18.         1 : (AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags : Integer);
  19.         2 : (AL, AH, BL, BH, CL, CH, DL, DH : Byte);
  20.       END;
  21.   VAR
  22.     R : Registers;
  23.     hour, min, sec, hun : Integer;
  24.   BEGIN
  25.     R.AH := $2C;
  26.     Intr($21, R);             {call interrupt}
  27.     WITH R DO
  28.       BEGIN
  29.         hour := CH;
  30.         min  := CL;
  31.         sec  := DH;
  32.         hun  := DL;
  33.       END;
  34.     IF O = On THEN
  35.       BEGIN
  36.         start := hour*3600 + min*60 + sec + hun/100;
  37.         time := 0;
  38.       END
  39.     ELSE
  40.       BEGIN
  41.         time := hour*3600 + min*60 + sec + hun/100 - start;
  42.         start := 0;
  43.       END;
  44.   END;
  45.