34 lines
717 B
Forth

( Time access JCB 13:27 08/24/10)
variable prevth \ previous high time
2variable timeh \ high 32 bits of time
: time@ ( -- time. )
begin
time 2@
time 2@
2over d<>
while
2drop
repeat
\ dup prevth fall? if
\ d# 1. timeh d+!
\ then
;
: timeq ( -- d d ) \ 64-bit time
time@ timeh 2@ ;
: setalarm ( d a -- ) \ set alarm a for d microseconds hence
>r time@ d+ r> 2! ;
: isalarm ( a -- f )
2@ time@ d- d0<= ;
2variable sleeper
: sleepus sleeper setalarm begin sleeper isalarm until ;
: sleep.1 d# 100000. sleepus ;
: sleep1 d# 1000000. sleepus ;
: took ( d -- ) time@ 2swap d- s" took " type d. cr ;