{ ------- // ------------- . ------------------------------------ //////////////////////// . //////////////////////////////////// ------- // ------------- . ------------------------------------ ÚÄÄ¿ . 04³ . CASE - CLOCK/SCHEDULE EDIT SCREENS ff³ #nxt . ff³ *cas4-1 . ÃÄÄÙ . // . ÚÄÄ¿ . *NScr C0³ . Ä´ . 02³memh . B9³ meml . 08³ Kbyt . ÀÄÄÙ . ÚÄÄ¿ . 01³memh . 07³ meml . =>s 04³ mask . 00³ bits . ?/Rnx ÃÄÄ´ . ff³*4Cdly . =THEN, to 4Cdly,,> FF³ DUM . ELSE, next, ÀÄÄÙ . ÚÄÄ¿ . :Call SnxRGN@ C0³ . Ä´ . 04³memh . 28³ meml . 01³ byt . CALL SnxRGN@ ÀÄÄÙ . ÚÄÄ¿ . 80³ . Ä´ . 01³memh . 07³ meml . 00³ ON . 04³ OFF . CLR Rnx ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ // . ÚÄÄ¿ . :Cursor in Text Slot *NCur C0³ . Ä´ . 02³memh . 0C³ meml . 01³ Kbyt . SET Cursor=1 ÀÄÄÙ . ÚÄÄ¿ . *4Cdly C0³ . Ä´ . 02³memh . B3³ meml . 00³ Konstbyt . CLR Dly ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :CASE 4 *cas4 D1³ . Pattern GoTo Ä´ . 02³memh Pattern . => 04³ meml byt . Ä´ . 1F³ mask . ?no data ff³*NScr . =then, to NScr,,< Ä´ . 03³ . ?Sched Scr#3 ff³*Scr3 . =then, to Scr3,,> Ä´ . 07³ . ?Clock Scr#7 ff³*Scr7 . =then, to Scr7,,> Ä´ . 00³ bits . ?no match ff³*NScr . =then, to NScr,,< ÀÄÄÙ . ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Schedule Scr *Scr3 02³memh . 0C³ meml . =>Cursor 1F³ mask . 06³ bits . ?>5 ÃÄÄ´ . ff³*NCur . =THEN, to NCur,,< 01³ AND . ELSE, next, ÀÄÄÙ . // ------------- . ------------------------------------ ÚÄÄ¿ . :Check for Day Sel 02³memh . 0C³ meml . =>Cursor 5F³ mask . 41³ bits . ?DaySel slot ÃÄÄ´ . 01³ AND . =THEN, next, ff³*pDisp . ff³*pDisp . >ELSE, to pDisp,,> ÀÄÄÙ . ÚÄÄ¿ . :Catch-Up Dly for Show B7³ . Ä´ . IncrKntrToFixLimit 02³memh . B3³ meml Data . => Ä´ . 0A³ Limit . ?LIM:Kntr ÃÄÄ´ . 01³ AND . =THEN, next, ff³*SSS . 01³ AND . >ELSE, next, ÀÄÄÙ . ÚÄÄ¿ . A3³byt . Copy Ä´ . 01³memh from . =>>KeyData 42³ meml . Ä´ . 07³ mask . Ä´ . 04³ memh to . =>DaySel B7³ meml . ÀÄÄÙ . ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Check for nu Disp Data *pDisp 85³ . Ä´ . BytXor 04³memh . B7³ meml Byt1 . =>DaySel Ä´ . 02³memh . B9³ meml Byt2 . =>copy Ä´ . 0F³ mask . 00³ bits . ? ÃÄÄ´ . FF³ FIN . =THEN, FIN,,, FF³ DUM . ELSE, to mScr3,,> ÀÄÄÙ . ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Schedule Scr *Scr7 D1³ . Pattern GoTo Ä´ . 02³memh Pattern . =>Cursor 0C³ meml byt . Ä´ . 0F³ mask . ?no data ff³*NCur . =then, to NCur,,> Ä´ . 03³ . ?DaySel slot ff³*7DyS . =then, to 7DyS,,> Ä´ . 07³ . ?Curs Ovflo ff³*NCur . =then, to NCur,,> Ä´ . 00³ bits . ?no match ff³*cDisp . =then, to cDisp,,> ÀÄÄÙ . // . ------- // ------------- . ------------------------------------ ÚÄÄ¿ . 04³ dumskp . CASE - CLOCK/SCHEDULE EDIT SCREENS ff³ #nxt . // ------------- . ------------------------------------ ÚÄÄ¿ . :Catch-Up Dly for Show *7DyS B7³ . Ä´ . IncrKntrToFixLimit 02³memh . B3³ meml Data . => Ä´ . 0A³ Limit . ?LIM:Kntr ÃÄÄ´ . 01³ AND . =THEN, next, ff³*SSS . 01³ AND . >ELSE, next, ÀÄÄÙ . ÚÄÄ¿ . A3³byt . Copy Ä´ . 01³memh from . =>>KeyData 42³ meml . Ä´ . 07³ mask . Ä´ . 04³ memh to . =>DaySel CC³ meml . ÀÄÄÙ . ------- // ------------- . ------------------------------------ ÚÄÄ¿ . *cDisp 80³ . Ä´ . 01³memh . 07³ meml . =>s 05³ ON . SET Rnx Clk 00³ OFF . ÀÄÄÙ . ÚÄÄ¿ . :Check for nu Disp Data 85³ . Ä´ . BytXor 04³memh . CC³ meml Byt1 . =>DaySel Ä´ . 02³memh . B9³ meml Byt2 . =>copy Ä´ . 0F³ mask . 00³ bits . ? ÃÄÄ´ . FF³ FIN . =THEN, FIN,,, FF³ DUM . ELSE, next, ÀÄÄÙ . // . :Wryt Day Sel ÚÄÄ¿ . A3³byt . Copy Ä´ . 04³memh from . =>DaySel CC³ meml . Ä´ . FF³ mask . Ä´ . 02³ memh to . =>Copy B9³ meml . ÀÄÄÙ . ÚÄÄ¿ . 82³ . Ä´ . 02³memh . B9³ meml . FF³ ADDbyt . DECR DaySel [1-7 -> 0-6] ÀÄÄÙ . 81 . ff> *wTXT . to ,,> ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :SET next REGEN *SSS 80³ . Ä´ . 01³memh . 07³ meml . 04³ ON . SET Rnx 00³ OFF . ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ // . :Read prev Schedule Tyms ÚÄÄ¿ . *mScr3 83³ word . Ä´ . 04³memh . 70³ meml . 00³ ADDxtByt . CLR ERead ÀÄÄÙ . ÚÄÄ¿ . A3³byt . Copy Ä´ . 04³memh from . =>DayK B7³ meml . Ä´ . 0F³ mask . Ä´ . 04³ memh to . =>ERead 71³ meml . ÀÄÄÙ . ÚÄÄ¿ . B5³ . Shift Word Ä´ . 04³memh Source . =>ERead 70³ meml word . Ä´ . 81³ Param . x4 Ä´ . 04³ memh Destin . =>ERead 70³ meml . ÀÄÄÙ . ÚÄÄ¿ . 83³ word . Ä´ . 04³memh . 70³ meml . 60³ ADDxtByt . ADD EAddr bias ÀÄÄÙ . ÚÄÄ¿ . :Prep for possible Wryt nu Sched A4³word . Copy Ä´ . 04³memh from . =>ERead 70³ meml . Ä´ . 04³ memh to . =>EWryt 76³ meml . ÀÄÄÙ . // . ÚÄÄ¿ . C0³ . Ä´ . 04³memh . 30³ meml . 01³ Kbyt . CALL SCOPY@ ÀÄÄÙ . // . :Wryt Day Sel ÚÄÄ¿ . A3³byt . Copy Ä´ . 04³memh from . =>DaySel B7³ meml . Ä´ . FF³ mask . Ä´ . 02³ memh to . =>Copy B9³ meml . ÀÄÄÙ . ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . *wTXT 8E³ . EXECUTE Ä´ . 00³ . 85³$cWByts . DO Wryt Byts [Text] ÃÄÄ´ . 05³ bk . Ä´ . 02³memh Source . =>DayK B9³ meml byt . Ä´ . 09³ List# . List of Texts Ä´ . 02³ memh Destin . =>DayTxt B4³ meml . ÀÄÄÙ . 81 . ff> *SSS . to ,,< ------- // ------------- . ------------------------------------ //////////////////////// . //////////////////////////////////// ------- // ------------- . ------------------------------------ ÚÄÄ¿ . *CASE5 05³ . :CASE 5 - REGEN SEQUENCE ff³ #nxt . ff³ *cas5-1 . ÃÄÄÙ . // . ÚÄÄ¿ . :Off possib Man Op *RSFn 80³ . Ä´ . 01³memh . 07³ meml . 00³ ON . 02³ OFF . OFF Man ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :HoldTym *HTym 80³ . Ä´ . 01³memh . 00³ meml . 00³ ON . 30³ OFF . OFF all Outs ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :CASE 5 *cas5 01³memh . 96³ meml . =>Secs FF³ mask . 01³ bits . ?nu sec ÃÄÄ´ . ff³*nuTYM . =THEN, to nuTYM,,> 01³ AND . ELSE, next, ÀÄÄÙ . ÚÄÄ¿ . :Possib Alert Flag 04³memh . B6³ meml . =>$Rseq 80³ mask . 80³ bits . ?Alrt ÃÄÄ´ . 01³ AND . =THEN, next, FF³ FIN . ELSE, none ÀÄÄÙ . ÚÄÄ¿ . 80³ . Ä´ . 04³memh . B6³ meml . =>$Rseq 00³ ON . 80³ OFF . CLR Alrt ÀÄÄÙ . ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Any Activity *nuTYM 04³memh . B6³ meml . =>$Rseq 1F³ mask . 00³ bits . ? ÃÄÄ´ . ff³*RSFn . =THEN, to RSFn,,< FF³ DUM . ELSE, next, ÀÄÄÙ . ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Always Display C0³ . Ä´ . 04³memh . 00³ meml . 01³ . CALL RSHOW@ ÀÄÄÙ . // . :Select Seq STEP ÚÄÄ¿ . D2³ . Pattern GoTo Ä´ . 04³memh Pattern . =>$Rseq B6³ meml byt . Ä´ . 1F³ mask . 01³ . ?start ff³*IncS . =then, to Start,,> Ä´ . 1F³ mask . 02³ . ?Bwash ff³*BWsh . =then, to BWsh,,> Ä´ . 1F³ mask . 03³ . ?Draw ff³*Draw . =then, to Draw,,> Ä´ . 1F³ mask . 04³ . ?Rinse ff³*Rins . =then, to Rins,,> Ä´ . 18³ mask . 08³ . ?Step Seq. ff³*Step . =then, to Step,,> Ä´ . 18³ mask . 10³ . ?PrepTym ff³*PTym . =then, to Ptym,,> Ä´ . 18³ mask . 18³ . ?HoldTym ff³*HTym . =then, to Htym,,< Ä´ . 00³ bits . ?no match ff³*FRgn . =then, to Frgn,,> ÀÄÄÙ . ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :PrepTym *PTym 80³ . Ä´ . 01³memh . 00³ meml . 00³ ON . 30³ OFF . OFF all Outs ÀÄÄÙ . 81 . ff> *Indx . to ,,> ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :STEP Seq *Step 80³ . Ä´ . 04³memh . B6³ meml . 00³ ON . 08³ OFF . ÀÄÄÙ . 81 . ff> *IncS . to ,,> ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Backwash *BWsh 80³ . Ä´ . 01³memh . 00³ meml . 10³ ON . ON Soln1 20³ OFF . ÀÄÄÙ . 81 . ff> *DoTym . to ,,> ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Draw *Draw 80³ . Ä´ . 01³memh . 00³ meml . 30³ ON . ON Soln1 Soln2 00³ OFF . ÀÄÄÙ . 81 . ff> *DoTym . to ,,> ------- // ------------- . ------------------------------------ ÚÄÄ¿ . 05³ . :CASE 5 - REGEN SEQUENCE ff³ #nxt . ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Rinse *Rins 80³ . Ä´ . 01³memh . 00³ meml . 20³ ON . ON Soln2 10³ OFF . ÀÄÄÙ . ------- // ------------- . ------------------------------------ ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :DECR BCD Secs *DoTym 82³ . Ä´ . 02³memh . A2³ meml . FF³ ADDbyt . DECR Rsec ÀÄÄÙ . ÚÄÄ¿ . 02³memh . A2³ meml . => 0F³ mask . 0F³ bits . ?F [should be 9] ÃÄÄ´ . 01³ AND . =THEN, next, ff³*Rnxt . FF³ DUM . >ELSE, none ÀÄÄÙ . ÚÄÄ¿ . 80³ . Ä´ . 02³memh . A2³ meml . 09³ ON . SET x9 06³ OFF . ÀÄÄÙ . // . ÚÄÄ¿ . *Rnxt 02³memh . A2³ meml . =>Rsec FF³ mask . 59³ bits . ?< ÃÄÄ´ . FF³ FIN . =THEN, FIN,,, FF³ FIN . ELSE, next, ÀÄÄÙ . ÚÄÄ¿ . C0³ . Ä´ . 02³memh . A2³ meml . 59³ byt . RESTART Rsecs ÀÄÄÙ . // ------------- . ------------------------------------ ÚÄÄ¿ . :DECR Mins 83³ word . Ä´ . 04³memh . B4³ meml . FF³ ADDxtByt . DECR Rmin ÀÄÄÙ . ÚÄÄ¿ . 04³memh . B4³ meml . =>Rmin FF³ mask . 01³ bits . ?< ÃÄÄ´ . FF³ FIN . =THEN, FIN,,, FF³ FIN . ELSE, next, ÀÄÄÙ . ------- // ------------- . ------------------------------------ ÚÄÄ¿ . *IncS B7³ . Ä´ . IncrKntrToFixLimit 04³memh . B6³ meml Data . => $Rseq Ä´ . 05³ Limit . ?LIM:Kntr ÃÄÄ´ . ff³*FRgn . =THEN, to FRgn,,> 01³ AND . ELSE, to FRgn,,> ÀÄÄÙ . // . ÚÄÄ¿ . *Indx 83³ word . Ä´ . 02³memh . A0³ meml . 00³ ADDxtByt . CLR Indx ÀÄÄÙ . ÚÄÄ¿ . A3³byt . Copy Ä´ . 04³memh from . =>$Rseq B6³ meml . Ä´ . 0F³ mask . Ä´ . 02³ memh to . =>lsIndx A1³ meml . ÀÄÄÙ . ÚÄÄ¿ . B5³ . Shift Word Ä´ . 02³memh Source . => A0³ meml word . Ä´ . 80³ Param . SL1 Ä´ . 02³ memh Destin . => A0³ meml . ÀÄÄÙ . ÚÄÄ¿ . B2³ . ADD K to Words Ä´ . 02³memh Source1 . =>Indx A0³ meml var . Ä´ . 04³ wrdh Konstant . =>Eeprom bias BE³ wrdl . Ä´ . 02³ memh Destin . =>Indx A0³ meml word . ÀÄÄÙ . ------- // ------------- . ------------------------------------ // . :Prep nxt Tymr ÚÄÄ¿ . *STym A6³word . indexedCopy Ä´ . 02³memh index . =>Rseq Tym A0³ meml . Ä´ . 00³ byt adder . => Ä´ . 04³ memh to . =>RTymr B4³ meml . ÀÄÄÙ . ÚÄÄ¿ . *Csc C0³ . Ä´ . 02³memh . A2³ meml . 00³ Kbyt . CLR Rseq sec ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :FIN Regen *FRgn AC³ . BlockXferConstant Ä´ . 04³memh toRAM . =>RTym B4³ meml . Ä´ . 03³ byk . Ä´ . :Data String 00 . 00 . 00 . ÀÄÄÙ . ÚÄÄ¿ . :OFF Outs 80³ . Ä´ . 01³memh . 00³ meml . 00³ ON . 30³ OFF . OFF Soln1 Soln2 ÀÄÄÙ . ÚÄÄ¿ . C0³ . Ä´ . 04³memh . 00³ meml . F0³ byt . FIN RSHOW@ ÀÄÄÙ . 81 . ff> *Csc . to ,,< ------- // ------------- . ------------------------------------ //////////////////////// . //////////////////////////////////// ------- // ------------- . ------------------------------------ ÚÄÄ¿ . *CASE6 06³ . :CASE 6 - REGEN SCHEDULING ff³ #nxt . ff³ *cas6-1 . ÃÄÄÙ . ------- // ------------- . ------------------------------------ // . :CASE 6 ÚÄÄ¿ . :Possib Minute Flip *cas6 85³ . Ä´ . BytXor 04³memh . CA³ meml Byt1 . => minutes Ä´ . 02³memh . EB³ meml Byt2 . => Copy Ä´ . FF³ mask . 00³ bits . ?no Change ÃÄÄ´ . 01³ AND . =THEN, next, FF³ DUM . ELSE, to cas6a ÀÄÄÙ . ÚÄÄ¿ . :Possib Warn [Missed Regen] 01³memh . CF³ meml . =>Idler 02³ mask . 02³ bits . ?Warn ÃÄÄ´ . ff³*iTRG . =THEN, to iTRG,,> [check now!] FF³ FIN . ELSE, none ÀÄÄÙ . // ------------- . ------------------------------------ ÚÄÄ¿ . *cas6a A3³byt . Copy Ä´ . 04³memh . CA³ meml Byt1 . => minutes Ä´ . FF³ mask . Ä´ . 02³memh . EB³ meml Byt2 . => Copy ÀÄÄÙ . ------- // ------------- . ------------------------------------ // . :CHECK for TARGET Tym equ Clock ÚÄÄ¿ . [every minute] *iTRG 8E³ . EXECUTE Ä´ . 00³ . 73³ $OnTYM . DO OnTYM ÃÄÄ´ . 05³ byts . Ä´ . 04³ . CE³ Clock . ÃÄÄ´ . 04³ Items . Month to Minutes Ä´ . 02³ . F7³ Target . ÀÄÄÙ . ÚÄÄ¿ . 00³memh . 0B³ meml . =>Status 03³ mask . 01³ bits . ?Targ:Clock ÃÄÄ´ . 01³ AND . =THEN, next, ff³*dNxRn . ff³*cWRN . >ELSE, to cWRN,,> [Wait, Targ later] ÀÄÄÙ . ------- // ------------- . ------------------------------------ // . :START Regen ÚÄÄ¿ . [at Targ = Clock to the minute] C0³ . Ä´ . 04³memh . B6³ meml . 01³ byt . START Regen ÀÄÄÙ . ÚÄÄ¿ . :Clear possib Wrn *cWRN 80³ . Ä´ . 01³memh . =>Idler CF³ meml . 00³ ON . 02³ OFF . CLR Warn ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ ÚÄÄ¿ . :Check possib Skipped Regen *dNxRn 01³memh . CF³ meml . =>Idler 02³ mask . 02³ bits . ?Warn ÃÄÄ´ . FF³ FIN . =THEN, FIN,,, [MissedRegen-wait Key] 01³ AND . ELSE, none ÀÄÄÙ . // . :CALC Next REGEN Schedule ÚÄÄ¿ . [Target behind Clock] C0³ . Ä´ . 04³memh . 28³ meml . 01³ byt . CALL SnxRGN@ ÀÄÄÙ . FF FIN . FIN,,, ------- // ------------- . ------------------------------------ //////////////////////// . //////////////////////////////////// ------- // ------------- . ------------------------------------ ÚÄÄ¿ . *CASE7 07³ . :CASE 7 - MESSAGES & ALARMS ff³ #nxt . }