1 'This is yet another enhancement to the fine Grandfather clock program by 2 'TW Hensch, later modified by messrs. Staudacher and Luley. This one is 3 'by Steven K. Roberts. It is now a grandfather alarm clock. The dot on the 4 'face corresponding to the selected alarm time will blink once per second -- 5 'until the alarm sounds. There are a couple of other new frills as well. 8 KEYON 9 ONKEY GOSUB 2000 10 DIMEY%(7),PCH%(4):DEFINTI,N 20 FORN=1TO4:READPCH(N):NEXT:DATA4968,5586,6269,8368 30 FORI=0TO7:READEY%(I):NEXT 40 DATA8,5,0,-5,-8,-5,0,5 50 DIMXM%(60),YM%(60) 60 DIMXH%(60),YH%(60),XR%(60),YR%(60) 70 PI=3.14159:CLS 71 PRINT:PRINT"Present time is ";TIME$ 72 PRINT:LINEINPUT"Enter alarm time if desired: ";AL$ 74 IFAL$=""THEN79 75 GOSUB4000 79 CLS 80 PRINT@80,"Accessing National Bureau of Standards" 82 PRINT@130,"Ft. Collins, Colorado..." 90 FORI=0TO59 100 READX,Y 110 XM%(I)=50+18*X:YM%(I)=32+18*Y 120 XH%(I)=50+13*X:YH%(I)=32+13*Y 130 XR%(I)=50+23*X:YR%(I)=32+23*Y 140 NEXT 145 BEEP:PRINT@200,"Synchronizing signal received." 147 FORU=0TO500:NEXTU:BEEP 150 CLS:LINE(20,4)-(80,61),1,B:LINE(23,7)-(77,58),1,B: 160 LINE(20,2)-(4,33):LINE-(20,63):LINE-(20,2):LINE(80,15)-(200,53),1,B: 170 FOR Q=0TO9:LINE(8+Q,33+2*Q)-(8+Q,33-2*Q):NEXT 180 LINE(82,20)-(195,48),1,BF:LINE(200,10)-(215,58),1,B: 190 FORV=13TO53STEP4:LINE(204,V)-(211,V+2),1,B:NEXT 200 FORC=82TO120STEP2:PRESET(C,42):NEXT:LINE(120,41)-(135,43),0,BF: 210 PRESET(136,42):FORC=82TO100STEP2:PRESET(C,26):NEXT: 220 LINE(100,25)-(102,27),0,B 230 LINE(216,5)-(223,63),1,B 240 FORI=0TO59 250 PSET(XR%(I),YR%(I)) 260 IFIMOD5=0THENLINE(XR%(I),YR%(I))-(XM%(I),YM%(I)) 270 NEXT 280 T$=TIME$:M=VAL(MID$(T$,4,2)):H=VAL(LEFT$(T$,2))MOD12: 290 H=H*5+INT(M/12):LINE(50,32)-(XM%(M),YM%(M)),1: 300 LINE(50,32)-(XH%(H),YH%(H)),1:LINE(51,31)-(49,33),1,BF 310 T$=TIME$:V=VAL(RIGHT$(T$,2)):GOTO320 311 IFAL$=""THEN 319 313 IFDF=0THEN316ELSE317 316 PSET(XR%(DOT),YR%(DOT)):DF=1:GOTO318 317 PRESET(XR%(DOT),YR%(DOT)):DF=0 318 IFTIME$=AL$THENGOSUB3000 319 RETURN 320 IFS=VTHENGOTO310ELSEGOSUB490 330 S=V 340 IFS>0ANDS<>(M+1)GOTO310ELSEIFS=0THENGOTO350ELSEGOTO400 350 IFM<>14ANDM<>29ANDM<>44ANDM<>59GOTO400 360 IFM=14THENGOSUB1210:GOTO400 370 IFM=29THENGOSUB1240:GOSUB1270:GOTO400 380 IFM=44THENGOSUB1300:GOSUB1330:GOSUB1210:GOTO400 390 GOSUB1240:GOSUB1270:GOSUB1300:GOSUB1330:GOSUB1180 400 LINE(50,32)-(XM%(M),YM%(M)),0 410 LINE(50,32)-(XH%(H),YH%(H)),0 420 M=VAL(MID$(T$,4,2)) 430 H=VAL(LEFT$(T$,2))MOD12:H=H*5+INT(M/12) 440 S=V 450 LINE(50,32)-(XM%(M),YM%(M)) 460 LINE(50,32)-(XH%(H),YH%(H)) 470 LINE(49,31)-(51,33),1,B 480 GOTO310 490 SOUND8000+4000*(SMOD2),1 500 FORL%=0TO3 510 F%=1 520 LINE(81,33)-(180,33+E%),F%:LINE(180,36+E%)-(186,30+E%),F%,B 530 F%=0:EC%=(EC%+1)MOD8:E%=EY%(EC%) 540 LINE(81,33)-(180,33+E%),F%:LINE(180,36+E%)-(186,30+E%),F%,B 550 FORK%=0TO1:NEXT 560 NEXT 561 GOSUB 311 570 RETURN 580 DATA-1.,0. 590 DATA-.995,-.105 600 DATA-.978,-.208 610 DATA-.951,-.309 620 DATA-.914,-.407 630 DATA-.866,-.500 640 DATA-.809,-.588 650 DATA-.743,-.669 660 DATA-.669,-.743 670 DATA-.588,-.809 680 DATA-.500,-.866 690 DATA-.407,-.914 700 DATA-.309,-.951 710 DATA-.208,-.978 720 DATA-.105,-.995 730 DATA0.,-1. 740 DATA.105,-.995 750 DATA.208,-.978 760 DATA.309,-.951 770 DATA.407,-.914 780 DATA.500,-.866 790 DATA.588,-.809 800 DATA.669,-.743 810 DATA.743,-.669 820 DATA.809,-.588 830 DATA.866,-.500 840 DATA.914,-.407 850 DATA.951,-.309 860 DATA.978,-.208 870 DATA.995,-.105 880 DATA1.,0. 890 DATA.995,.105 900 DATA.978,.208 910 DATA.951,.309 920 DATA.914,.407 930 DATA.866,.500 940 DATA.809,.588 950 DATA.743,.669 960 DATA.669,.743 970 DATA.588,.809 980 DATA.500,.866 990 DATA.407,.914 1000 DATA.309,.951 1010 DATA.208,.978 1020 DATA.105,.995 1030 DATA0.,1. 1040 DATA-.105,.995 1050 DATA-.208,.978 1060 DATA-.309,.951 1070 DATA-.407,.914 1080 DATA-.500,.866 1090 DATA-.588,.809 1100 DATA-.669,.743 1110 DATA-.743,.669 1120 DATA-.809,.588 1130 DATA-.866,.500 1140 DATA-.914,.407 1150 DATA-.951,.309 1160 DATA-.978,.208 1170 DATA-.995,.105 1180 H=VAL(LEFT$(TIME$,2))MOD12:IFH=0THENH=12:FORI=1TO1000:NEXT 1190 FORI=1TOH:SOUND16383,30:FORN=1TO1000:NEXT:NEXT 1200 RETURN 1210 RESTORE1220:FORI=1TO4:READN:SOUNDPCH(N),25:NEXT:FORI=1TO1000:NEXT 1220 DATA1,2,3,4 1230 RETURN 1240 RESTORE1250:FORI=1TO4:READN:SOUNDPCH(N),25:NEXT:FORI=1TO1000:NEXT 1250 DATA3,1,2,4 1260 RETURN 1270 RESTORE1280:FORI=1TO4:READN:SOUNDPCH(N),25:NEXT:FORI=1TO1000:NEXT 1280 DATA3,2,1,3 1290 RETURN 1300 RESTORE1310:FORI=1TO4:READN:SOUNDPCH(N),25:NEXT:FORI=1TO1000:NEXT 1310 DATA1,3,2,4 1320 RETURN 1330 RESTORE1340:FORI=1TO4:READN:SOUNDPCH(N),25:NEXT:FORI=1TO1000:NEXT 1340 DATA4,2,1,3 1350 RETURN 2000 RUN"orwel 3000 FORTY=1TO5 3005 FORNIX=6269TO830STEP-216 3010 SOUND NIX,1 3020 NEXTNIX 3025 NEXTTY 3027 AL$="" 3028 PSET(XR%(DOT),YR%(DOT)) 3030 RETURN 4000 AH=VAL(LEFT$(AL$,2)) 4010 AM=VAL(MID$(AL$,4,2)) 4020 TAM=60*AH+AM:IFTAM=>720THENTAM=TAM-720 4030 DOT=INT(TAM/12) 4040 RETURN