System Clock_
by Gerald McMullon
The COP provides a system clock after each interrupt (50 times per second).
The COP scans the keyboard and looks after the relays for the cassette motor as well as handling the VF display.
Page zero stores 4 bytes, the current status of the clock in location 52H-55H (82-85 decimal).
The clock can be displayed by the following:
FOR i=1TO1000 :
PUT 12 :
?PEEK(82),PEEK(83),PEEK(84),PEEK(85) :
NEXT i
The most significant byte is PEEK(85).
The true value can be found by
?PEEK(85) + 256( PEEK(84)+256(
PEEK(83) + 256*PEEK(82) ) )
and can be reset by
FOR i=82to85 : POKE i,0 : NEXT i
On the unexpanded NewBrain or simple expansion (disk controller) the following call locations are available:-
CALL 62383 :REM to reset the clock
CALL 62399, ms : REM to obtain the
system clock time
The value in seconds is calculated by ms/50.
Example:
5 REM Waste 10 seconds (approximately)
10 CALL 62383
20 CALL 62399,ms :
IF ms < 500 THEN 20
30 END
The clock is very accurate, and has matched a quartz watch, to within a minute for over 24 hours.
To time a piece of code, reset at the begining and read at the end of the code.
E.g.
CALL 62383
CALL 62399,no :REM time calls
CALL 62383
… : REM your code
CALL 62399,ms :
?”Took”;(ms-no)/50;”secs”
NB note the system clock is normally considered to be the routines at 62383 and 62399.