aboutsummaryrefslogtreecommitdiff
path: root/j1demo/firmware/time.fs
diff options
context:
space:
mode:
authorDimitri Sokolyuk <ds@doozer.de>2017-05-23 17:06:09 +0200
committerDimitri Sokolyuk <ds@doozer.de>2017-05-23 17:06:09 +0200
commit6f86ce7057dd7cd1b491e8f09501258822d2ea74 (patch)
treeb3bfa11f0f72d0e1ca7c84d948af20b7494dd26b /j1demo/firmware/time.fs
Import j1demo
Diffstat (limited to 'j1demo/firmware/time.fs')
-rw-r--r--j1demo/firmware/time.fs33
1 files changed, 33 insertions, 0 deletions
diff --git a/j1demo/firmware/time.fs b/j1demo/firmware/time.fs
new file mode 100644
index 0000000..4d53113
--- /dev/null
+++ b/j1demo/firmware/time.fs
@@ -0,0 +1,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 ;