[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]