aboutsummaryrefslogtreecommitdiff
path: root/j1demo/firmware/clock.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/clock.fs
Import j1demo
Diffstat (limited to 'j1demo/firmware/clock.fs')
-rw-r--r--j1demo/firmware/clock.fs90
1 files changed, 90 insertions, 0 deletions
diff --git a/j1demo/firmware/clock.fs b/j1demo/firmware/clock.fs
new file mode 100644
index 0000000..4bb35bb
--- /dev/null
+++ b/j1demo/firmware/clock.fs
@@ -0,0 +1,90 @@
+( Clock JCB 10:54 11/17/10)
+
+variable seconds
+variable minutes
+variable hours
+variable days
+variable months
+variable years
+variable weekday
+
+: show2 ( a -- ) @ s>d <# # # #> type ;
+
+: setdate ( ud -- )
+ [ -8 3600 * ] literal s>d d+
+ d# 1 d# 60 m*/mod seconds !
+ d# 1 d# 60 m*/mod minutes !
+ d# 1 d# 24 m*/mod hours !
+ d# 59. d- \ Days since Mar 1 1900
+ 2dup d# 1 d# 7 m*/mod weekday ! 2drop
+ d# 365 um/mod ( days years )
+ dup d# 1900 + years !
+ d# 4 / 1- - \ subtract leaps ( daynum 0-365 )
+ dup d# 5 * d# 308 + d# 153 / d# 2 - months !
+ months @ d# 4 + d# 153 d# 5 */ - d# 122 + days !
+
+ home
+ 'emit @ >r
+ ['] vga-bigemit 'emit !
+
+ s" ThuFriSatSunMonTueWed" drop
+ weekday @ d# 3 * + d# 3 type cr
+ s" MarAprMayJunJulAugSepOctNovDecJanFeb" drop
+ months @ d# 3 * + d# 3 type
+ space days @ d# 0 .r cr
+ years @ . cr
+
+ true if
+ hours show2
+ minutes show2
+ seconds show2
+ home
+ then
+
+ r> 'emit !
+;
+
+: setdelay ( ud -- )
+ 'emit @ >r
+ ['] vga-emit 'emit !
+ d# 32 d# 0 vga-at-xy
+ s" ntp " type <# # # # [char] . hold #s #> type
+ s" ms " type
+ r> 'emit !
+;
+
+include ntp.fs
+
+2variable ntp-alarm
+
+: clock-main
+ vga-page
+ d# 1000000. ntp-alarm setalarm
+ begin
+ begin
+ mac-fullness
+ while
+ arp-handler
+ OFFSET_ETH_TYPE packet@ h# 800 =
+ if
+ d# 2 OFFSET_IP_DSTIP mac-inoffset mac@n net-my-ip d=
+ if
+ icmp-handler
+ then
+ loader-handler
+ ntp-handler
+ then
+
+ depth if .s cr then
+ mac-consume
+ repeat
+
+ ntp-alarm isalarm if
+ ntp-request
+ d# 1000000. ntp-alarm setalarm
+ then
+
+ next?
+ until
+;
+