[Back to TIMING SWAG index] [Back to Main SWAG index] [Original]

    {    Here's a little OOP stopwatch unit that may help: }

    unit StopWtch;
    (*
      Written by Steve Rogers - sometime in 1993
      Released to Public Domain sometime in 1995 - enjoy
    *)

    interface

    type
      tStopWatchObject=object
        StartTicks : longint;
        procedure Start;
        function Elapsed : longint;
      end;

    implementation
    var
      TicksSinceMidnight : longint ABSOLUTE $0040:$006c;

      {-----------------------}
      procedure tStopWatchObject.Start;
      begin
        StartTicks:= TicksSinceMidnight;
        repeat until (TicksSinceMidnight<>StartTicks);
      end;

      {-----------------------}
      function tStopWatchObject.Elapsed : longint;  { elapsed time in seconds }
      const
        TicksPerDay=1572480;
        TicksPerSecond=18.2;

      var
        ElapsedTicks : longint;

      begin
        ElapsedTicks:= TicksSinceMidnight;

        if (ElapsedTicks > StartTicks) then
          ElapsedTicks:= ElapsedTicks - StartTicks
        else      { Midnight rollover occurred }
          ElapsedTicks:= TicksPerDay - StartTicks + ElapsedTicks;

        Elapsed:= round(ElapsedTicks / TicksPerSecond);
      end;

      {-----------------------}
    end.

[Back to TIMING SWAG index] [Back to Main SWAG index] [Original]