From 6f86ce7057dd7cd1b491e8f09501258822d2ea74 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 23 May 2017 17:06:09 +0200 Subject: Import j1demo --- j1demo/firmware/clock.fs | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 j1demo/firmware/clock.fs (limited to 'j1demo/firmware/clock.fs') 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 +; + -- cgit v1.2.3