0 'TIMER.BA 10/23/87 1 'Copyright 1987, Mike Aiello 2 'Simple timer/alarm clock program 30 DIM CT$,CL,HT$,AL,WT$,LL,TF,AF,CN#,CH#,CM#,CS#,HV#,HN#,HH#,HM#,HS#,WV#,WN#,WH#,WM#,WS# 60 PP=45:CT$=TIME$:CL=PP+18:HT$=FN$:AL=PP+58:WT$=FN$:LL=PP+98:TF=-1:AF=0 65 POWER CONT 170 DATA "Set ","Hour","Strt","Clr ","Exit" 175 FOR II=4TO8:READ KY$(II):KX=II:GOSUB 9100:GOSUB 9300:NEXT II 220 IF CT$<>TIME$THENGOSUB260:PRINT@CL,CT$:RETURN:ELSERETURN 225 IF CT$<>TIME$THENGOSUB260:GOSUB280:PRINT@CL,CT$:PRINT@CL+80,WT$:RETURN:ELSERETURN 230 ON ERROR GOTO 235:GOSUB10100:HV#=EV#:HH#=INT(HV#):HM#=INT((HV#-HH#)*100):HS#=INT(((HV#-HH#)*100-HM#)*100):HN#=HS#+(HH#*60+HM#)*60:GOSUB275:WN#=0:WT$=FN$:RETURN 235 BEEP:RESUME230 250 ONERROR GOTO255:GOSUB10100:WV#=EV#:WH#=INT(WV#):WM#=INT((WV#-WH#)*100):WS#=INT(((WV#-WH#)*100-WM#)*100):WN#=WS#+(WH#*60+WM#)*60:GOSUB285:HN#=0:HT$=FN$:RETURN 255 BEEP:RESUME250 260 CT$=TIME$:CH#=INT(VAL(LEFT$(CT$,2))):CM#=INT(VAL(MID$(CT$,4,2))):CS#=INT(VAL(RIGHT$(CT$,2))):CN#=CS#+(CH#*60+CM#)*60:RETURN 270 HN#=CN#+WN#:HH#=INT(HN#/3600):HM#=INT((HN#-HH#*3600)/60):HS#=HN#-HH#*3600-HM#*60:GOSUB275:RETURN 275 HT$=RIGHT$(STR$(HH#),2)+":"+RIGHT$(STR$(HM#),2)+":"+RIGHT$(STR$(HS#),2):RETURN 280 WN#=HN#-CN#:WH#=INT(WN#/3600):WM#=INT((WN#-WH#*3600)/60):WS#=WN#-WH#*3600-WM#*60:GOSUB285:RETURN 285 WT$=RIGHT$(STR$(WH#),2)+":"+RIGHT$(STR$(WM#),2)+":"+RIGHT$(STR$(WS#),2):RETURN 300 AF=0:IFHN#=0THENRETURN 310 GOSUB 220:BEEP:FORII=1TO500:NEXTII:SS$=INKEY$:IFSS$=""GOTO300ELSERETURN 350 AF=0:HN#=0:WN#=0:WT$=FN$:HT$=FN$:RETURN 4000 KX=4:GOSUB 9500:GOSUB 9800 4100 IFTFTHENGOSUB230ELSEGOSUB250 4900 GOSUB 9000 4920 KX=4:GOSUB 9500:GOSUB 9700 4990 EX=-1:RETURN 5000 KX=5:GOSUB 9500:GOSUB 9800 5100 TF=NOTTF:IFTFTHENKY$(5)="Hour"ELSEKY$(5)="Wait" 5110 GOSUB 350 5900 GOSUB 9000 5920 KX=5:GOSUB 9500:GOSUB 9700 5990 EX=-1:RETURN 6000 KX=6:GOSUB 9500:GOSUB 9800 6020 KV=0:GOSUB 9600 ' all keys n/a 6030 KX=7:GOSUB 9100:GOSUB 9300 'key on 6100 AF=-1:IFTFTHENGOSUB280ELSEGOSUB270 6105 IFHN#=0THEN6210 6110 GOSUB 9000 6120 IF NOT AF THEN GOTO 6210 6130 GOSUB 225 6140 IF CN# >= HN# THEN GOSUB 300 6150 GOTO 6120 6210 GOSUB 350 6900 GOSUB 9000 6910 KV=-1:GOSUB 9600 'all keys av 6920 KX=6:GOSUB 9500:GOSUB 9700 6990 EX=-1:RETURN 7000 KX=7:GOSUB 9500:GOSUB 9800 7100 GOSUB 350 7900 GOSUB 9000 7920 KX=7:GOSUB 9500:GOSUB 9700 7990 EX=-1:RETURN 9010 PRINT@PP, "Current time ===> ";:PRINT@CL,CT$; 9020 PRINT@PP+40," Alarm time ===> ";:PRINT@AL,HT$; 9030 PRINT@PP+80," Time left ===> ";:PRINT@LL,WT$; 9040 PRINT@PP+160," Enter times as HH.MMSS"; 9050 PRINT@PP+200," Press any key to stop alarm"; 9600 FOR KX=4TO8 9700 FOR KX=4TO8 9800 FOR KX=4TO8 29010 PRINT@122,"* * TIMER - A Simple Alarm Clock * *" 29020 PRINT@205," Copyright 1987 M. Aiello" 32200 GOSUB 220:IF EX THEN GOTO 32200 'wait for fn key 32280 POWER 100