'**** HEADER ************************************************************
'EXDISP03.PF3 (release .02)
'Copyright (c) 1990-1991 Applied Resource Technologies, Inc.
'P.O. Box 64381, Dallas, Texas 75206 U.S.A. (214) 855-0449
'Description: Demonstrates relperf()
'**** FUNCTION DECLARATIONS *********************************************
'library
external relperf()
'core
'**** VARIABLE DECLARATIONS *********************************************
'library
public ptval
'core
' declared public for use with the SmartWare II evaluate() function
public tl_test tl_hi tl_lo tl_avg tl_del tl_std tlstr
public mw_test mw_hi mw_lo mw_avg mw_del mw_std mwstr
'**** CODE **************************************************************

local rpi fact mult limit i j secs1 secs2 cnt

load "\smartii\poptools\lib\displib.psl" in-memory

relperf()
rpi = ptval
cnt = 20
mult = .5                ' number of seconds delay
fact = (65-rpi)*rpi      ' delay calculation of approximately 1 second
limit = mult * fact      ' final timing loop limit

screen clear box 1 1 scrheight scrwidth 0 0 no-border

screen print 1 13 15 0 "rpi timing loop"
screen print 1 30 15 0 "milli-wait"

for j = 1 to cnt
     secs1 = now
     for i = 1 to limit
     end for
     secs2 = now

     tl_test = (secs2-secs1)*100000
     screen print j+2 2 15 0 "Loop"&format(str(j),"R2")|":  " & format(str(tl_test),"6R9")

     secs1 = now
     milli-wait mult * 1000
     secs2 = now

     mw_test = (secs2-secs1)*100000
     screen print j+2 30 15 0 (format(str(mw_test),"6R9"))
     tlstr = tlstr | str(round(tl_test,8)) | ","
     mwstr = tlstr | str(round(mw_test,8)) | ","
end for

tlstr =left(tlstr,len(tlstr)-1)|")"
evaluate("tl_hi=max("|tlstr)
evaluate("tl_lo=min("|tlstr)
evaluate("tl_avg=average("|tlstr)
evaluate("tl_std=stdev("|tlstr)
tl_del = tl_hi-tl_lo

mwstr =left(mwstr,len(mwstr)-1)|")"
evaluate("mw_hi=max("|mwstr)
evaluate("mw_lo=min("|mwstr)
evaluate("mw_avg=average("|mwstr)
evaluate("mw_std=stdev("|mwstr)
mw_del = mw_hi-mw_lo

screen print 1 52 15 0 "Timing loop results"
screen print 3 52 15 0 "high      ="& format(str(round(tl_hi,6)),"6R9")
screen print 4 52 15 0 "low       ="& format(str(round(tl_lo,6)),"6R9")
screen print 5 52 15 0 "delta     ="& format(str(round(tl_del,6)),"6R9")
screen print 6 52 15 0 "average   ="& format(str(round(tl_avg,6)),"6R9")
screen print 7 52 15 0 "std dev   ="& format(str(round(tl_std,6)),"6R9")

screen print 10 52 15 0 "milli-wait results"
screen print 12 52 15 0 "high      ="& format(str(round(mw_hi,6)),"6R9")
screen print 13 52 15 0 "low       ="& format(str(round(mw_lo,6)),"6R9")
screen print 14 52 15 0 "delta     ="& format(str(round(mw_del,6)),"6R9")
screen print 15 52 15 0 "average   ="& format(str(round(mw_avg,6)),"6R9")
screen print 16 52 15 0 "std dev   ="& format(str(round(mw_std,6)),"6R9")

screen print 19 52 15 0 "rpi  ="&str(rpi)

inchar
unload "displib.psl"

