34 lines
717 B
Forth
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 ;
|