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