time.fs 717 B

123456789101112131415161718192021222324252627282930313233
  1. ( Time access JCB 13:27 08/24/10)
  2. variable prevth \ previous high time
  3. 2variable timeh \ high 32 bits of time
  4. : time@ ( -- time. )
  5. begin
  6. time 2@
  7. time 2@
  8. 2over d<>
  9. while
  10. 2drop
  11. repeat
  12. \ dup prevth fall? if
  13. \ d# 1. timeh d+!
  14. \ then
  15. ;
  16. : timeq ( -- d d ) \ 64-bit time
  17. time@ timeh 2@ ;
  18. : setalarm ( d a -- ) \ set alarm a for d microseconds hence
  19. >r time@ d+ r> 2! ;
  20. : isalarm ( a -- f )
  21. 2@ time@ d- d0<= ;
  22. 2variable sleeper
  23. : sleepus sleeper setalarm begin sleeper isalarm until ;
  24. : sleep.1 d# 100000. sleepus ;
  25. : sleep1 d# 1000000. sleepus ;
  26. : took ( d -- ) time@ 2swap d- s" took " type d. cr ;