Subject: Re: High Precision Timer for Modula-2
Reply-To: tchannon@black.demon.co.uk
Distribution: world
X-Mailer: cppnews $Revision: 1.20 $
Organization: null
Date: Thu, 19 Nov 1992 00:53:22 +0000

> I am looking for a High Precision Timer Module in Modula-2, especially in
> TopSpeed. It should be something like TPHRT3 for Turbo-Pascal 5.0 to 5.5.
> It should use the 8253-chip on the PC to measure time
> accurate to micro!!seconds.
> 

Well here is something of interest for pc users.

It has bugs but mostly works. The core was translated from UK published C 
source __but it did not work adequately__. The technique now used is wildly 
different.

Contained in this are I think some useful gems including about real bugs in 
the pc bios. How it works depends on the bios -- machine hangs.

A test program (source for the lot under TopSpeed V3.02) is following 
uuencode.
A test shell is included which I hope makes a fair assessment 
of the timer performance. The implication is +-12us over 1 second (timed 
against the real time clock). 1.8MHz crystal inaccuracy is a problem :-)
Long period timers should be fairly easy to make but you would need > 32 bit 
math.

The bombshell -- this timer routine does NOT use interrupts. They are 
unreliable on the pc compats and I have a machine here which I can made to 
appear to run at 1/3rd speed according to the Dos clock! This is done by 
timing dummy disk accesses to find the bad spot. Ever wonder why that clock 
sometimes goes slow on some machines?

The code presented here has at least one dire bug. Someone fix it please the 
reported timings will sometimes go crazy. Minor bugs in test shell please 
ignore and bad style -- this was not intended for public release.

If anyone wants the executable please mail me. It's about 24k uuencoded but if 
many ask I'll try to find somewhere for ftp.
 
  TC. 
    E-mail: tchannon@black.demon.co.uk or tchannon@cix.compulink.co.uk
       
section 1 of uuencode 5.10 of file timetest.zip    by R.E.M.

begin 644 timetest.zip
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
MQ^%:K7@8YBMRT9U;,,@789K1FI_1.\5$"(,M94&8W&FF9IOW<)S1\[!J:#-D
M1"2K4LHT.SH"ZWE=,-D\GGC8IN]"9(B>PFC4Q0GJS6)\"&!*"BOAQ;K(`@\S
M0P0&)T-8D,I8@&FXK[@B)UK+BM[8KDRC$I6/T_M=.10S(B<""&L_3;4/;J90
MR6D4&N\"Q7O,'"J^NQC@[%J=+SU5V_5#*XJ^T:X!=B$4@7?L=JQ4U9:16VV?
MS`7F='+'*EZ`C+CM3C.0W`X"\S(T?1'76'`#8<]"81!_'`JE&$*BA(L&D9Z"
M2$&^J(47\\[+C%49]2IH,[*"H]!_.`AX7)(.4E%%VMT&;B'08_//LX)A*#9^
M#J6XFPJGTB`X>F"R]1*<MYZ"X4S\1&&,3,N8]FR`\&4^*7`_"W9PQBTQOXK-
M$QCD%Q%*R2&V7D>LGS<9R&#\^JB:CLR,/,;O1@0N)*OQ?&D3^W1/^!)+9ARB
MJ0Y!S#A>P;MH"P,2#7`LAH,84$L!`@L`"@````8`'::1%WJ?L@@I`@``-P0`
M``@``````````0`@`````````%1)344N1$5&4$L!`@L`"@`&``8`,6)R&5#5
MK+12#@``?"@```@``````````0`@````3P(``%1)344N34]$4$L!`@L`"@``
M``8`DA*-%Y3U!IJ!`@``^P0```P``````````0`@````QQ```%1)345415-4
M+DU/1%!+`0(+``H````!`&AB<AF.FQ;810```$<````+``````````$`(```
M`'(3``!424U%5$535"Y04E!+`0(+``H````&`)-D<AGZT%XQD@D```H1```*
M``````````$`(````.`3``!214%$344N5$E-4$L%!@`````%``4`%P$``)H=
$````````
`
end
sum -r/size 57279/10889 section (from "begin" to "end")
sum -r/size 29187/7879 entire input file
Newsgroups: comp.lang.modula2