{****************************************************************************}
{                                                                            }
{                            File: Pas/TIMES                                 }
{                                                                            }
{                 (C) Copyright 1983, 1984  Apple Computer, Inc.             }
{                                                                            }
{                                                                24-Mar-83   }
{ 24-Mar-83 removed "Xhwint" kludge for A2/Mon version                       }
{****************************************************************************}

{$I flags.text }
{$r-}

UNIT Times;

  INTERFACE

    USES {$u HWInt} HWInt;

    TYPE
       RepStrPtr = ^TimeStrng;
       TimeStrng = String[80];

    PROCEDURE StartTimer;

    PROCEDURE MarkTime;

    FUNCTION ReportTime: RepStrPtr;

  IMPLEMENTATION

    VAR
      T1, E: Milliseconds;
      ReportStr: String[80];

    PROCEDURE StartTimer;

      BEGIN {StartTimer}
        ReportStr[0] := Chr(0);
        T1 := Timer;
      END; {StartTimer}

    PROCEDURE MarkTime;

      VAR
        T2: Milliseconds;

      BEGIN {MarkTime}
        T2 := Timer; E := T2 - T1;
      END; {MarkTime}

    FUNCTION ReportTime{: RepStrPtr};

      VAR
        Secs, Ms, i: Integer;
        SecsStr: String[11];
        MSstr: String[4];

      BEGIN {ReportTime}
        IF Length(ReportStr) = 0 THEN
          BEGIN
          Secs := E DIV 1000;
          SecsStr[0] := Chr(11); i := 11;
          REPEAT
            SecsStr[i] := Chr(Ord('0') + Secs MOD 10);
            i := i -1;
            Secs := Secs DIV 10;
          UNTIL Secs = 0;
          Delete(SecsStr, 1, i);

          Ms := E MOD 1000;
          MsStr := '.000'; i := 4;
          WHILE Ms <> 0 DO
            BEGIN
            MsStr[i] := Chr(Ord('0') + Ms MOD 10);
            i := i - 1; Ms := Ms DIV 10;
            END;

          ReportStr := Concat('Elapsed time: ', SecsStr, MsStr, ' seconds.');
          END;

        ReportTime := @ReportStr;
      END; {ReportTime}
END.

