aboutsummaryrefslogtreecommitdiff
path: root/docs/j1demo/firmware/time.fs
blob: 4d53113399031b1aeb92dc64739eec30a24d97eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
( 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 ;