Here's one that I wrote that does all the magic for you:
;-------------------------------------------------------------------------------
; %1 = input - Time to convert
; #RESULT - Time converted to #:##:## format
sub TM_ConvertTimeHourMinSec
namespace push
namespace local ctime
set !hourpart %1 / 3600
set !secpart ( %1 % 3600 ) % 60
set !minpart ( ( %1 % 3600 ) / 60 )
if !hourpart >= 10
set #RESULT !hourpart , :
else
set #RESULT 0 , !hourpart , :
if !minpart < 10
set #RESULT #RESULT , 0
set #RESULT #RESULT , !minpart , :
if !secpart < 10
set #RESULT #RESULT , 0
set #RESULT #RESULT , !secpart
namespace pop
return #RESULT
So at the beginning of the script, I make a note of the time %online_start_time
set !temp #SCNT - %online_start_time
gosub TM_ConvertTimeHourMinSec !temp ; time in H:MM:SS returned in #RESULT
What I typically do is have another counter that I use to update the display. 2, 3, 5, 10 seconds. Whatever. But you just monitor this counter to determine when you should call the above code and update the display.