From 1a6af4c104ea9d168f947ce082d0f6336f8ea036 Mon Sep 17 00:00:00 2001 From: elioat Date: Fri, 7 Oct 2022 23:55:01 +0000 Subject: pomodoro timer in forth --- forth/pomo.forth | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 forth/pomo.forth (limited to 'forth') diff --git a/forth/pomo.forth b/forth/pomo.forth new file mode 100644 index 0000000..f568bb9 --- /dev/null +++ b/forth/pomo.forth @@ -0,0 +1,44 @@ +( POMO POMO POMO ) + +VARIABLE POMO-TIME +1500000 POMO-TIME ! + +VARIABLE REST-TIME +600000 REST-TIME ! + +( TODO: Consider using VALUE instead of VARIABLE ) + +: 1SEC 1000 MS ; +: 30SEC 30000 MS ; +: 60SEC 60000 MS ; + +: PRETTY-TIME + 1000 / + 60 / +; + +( DECREMENTS POMO-TIME if it is greater than 0 ) +: CHECK-POMO-TIME? + 0> IF + POMO-TIME @ 1000 - POMO-TIME ! ." 🍅" SPACE POMO-TIME @ PRETTY-TIME . ." minutes" CR + ." ....." SPACE POMO-TIME ? CR + ELSE + REST-TIME @ 1000 - REST-TIME ! ." 😴" SPACE REST-TIME @ PRETTY-TIME . ." minutes" CR + ." ....." SPACE REST-TIME ? CR + THEN +; + +( POMO-LOOP exits when POMO-TIME reaches 0 ) +( FIXME: reset POMO-TIME and REST-TIME once they've reached 0 ) +: POMO-LOOP + BEGIN + PAGE + POMO-TIME @ CHECK-POMO-TIME? 1SEC + PAGE + POMO-TIME @ REST-TIME @ + 0= + UNTIL +; + +POMO-LOOP + +BYE -- cgit 1.4.1-2-gfad0