\ 2006-07-25 EW adv2_0.fs Variable newtimer Variable lastsec Variable tickflag Variable tick Variable secflag Variable sec Variable minflag Variable min 500 Constant cycles.tick \ timerC cycles/tick 2 Constant ticks.sec \ ticks/second : tickover? ( -- ) newtimer @ timer @ - 0< ; : timeup ( -- ) cycles.tick newtimer +! 1 tickflag ! \ tick over! 1 tick +! tick @ ticks.sec >= IF 0 tick ! 1 secflag ! \ sec over! 1 sec +! ENDIF sec @ 60 >= IF 0 sec ! 1 minflag ! \ min over! 1 min +! ENDIF min @ 60 >= IF 0 min ! ENDIF ; : led0 ( -- ) 3 port1 bclr ; : led1 ( -- ) 3 port1 bset ; : job.tick tick @ $01 and IF led0 ELSE led1 ENDIF ; : job.sec timer @ dup lastsec @ - swap dup lastsec ! sec @ min @ cr . . . . ; : job.min cr ." running minute job ..." ; : run cr ." min sec timer timer-lastsec" timer @ newtimer ! BEGIN tickover? IF timeup ENDIF tickflag @ IF job.tick 0 tickflag ! ELSE secflag @ IF job.sec 0 secflag ! ELSE minflag @ IF job.min 0 minflag ! ENDIF ENDIF ENDIF key? UNTIL ;