[IFDEF] my-code my-code [ENDIF] marker my-code require ./tasker.fs 0 value task1-id 0 value task2-id variable counter1 variable counter2 : (task1) ( -- ) begin 1 counter1 +! pause again ; : (task2) ( -- ) begin 1 counter2 +! pause again ; : start-task1 ( -- ) task1-id activate (task1) ; : start-task2 ( -- ) task2-id activate (task2) ; : show ( -- ) counter1 ? ." " counter2 ? ; : commands ( -- flag ) \ Execute commands, return a flag for quit. key case [char] 1 of task1-id sleep false endof [char] 2 of task2-id sleep false endof [char] 3 of task1-id wake false endof [char] 4 of task2-id wake false endof [char] q of true endof false swap endcase ; 630 value cal \ Calibration of the wait delay set for my machine. variable wait-end-time : wait ( n -- ) \ Wait about n millisecs. 1000 * utime drop + wait-end-time ! begin utime drop cal + wait-end-time @ <= while 1 ms pause repeat ; \ 1 ms before pause to give back to CPU. : calibration ( -- ) \ Displays the average of 100 one second wait calls in u-seconds. 0 ( accumulator -- ) 100 0 do utime drop 1000 wait utime drop swap - + loop 100 / . ; : run ( -- ) 0 counter1 ! 0 counter2 ! page 0 23 at-xy ." Press 'q' to quit." 1000 newtask to task1-id 1000 newtask to task2-id start-task1 task1-id sleep start-task2 task2-id sleep begin 10 10 at-xy show key? if commands else false then ( flag -- ) 250 wait \ wait about .25 seconds until task1-id kill task2-id kill page ." Done" ; \ run bye