0'************************************************************ 1 '* * 2 '* Author: Mike J. Sullivan , Houston, Tx. * 3 '* 12402 Campos Dr. ,Houston, Tx. 77065 * 4 '* Date: 09/05/82 * 5 '* Purpose: Display your Basic Programs * 6 '* Title: Digital Clock * 7 '* Comment(s): enjoy * 8 '* * 9 '************************************************************ 10 KEY OFF:WIDTH 80 11 ODD = 0 12 Q15$ = "MbMLP14O4EO4CDO3G" 13 Q30$ = "MbMLP14O3GO4DEC" 15 CHIME = 0 20 LOCATE ,,0 21 ' 22 ' Day of week / Date rollover for Mike Sullivan's digital clock 23 ' This code was merged into the original program already.. 24 ' Day of week will be displayed; 25 ' day and date will change following 23:59:59. 26 ' You can also use the perpetual calendar routine in other programs. 27 ' Clayton Gaskill, Charlotte, NC 28 ' BASICA required!!!!!!!!!! 30 CLS 31 ' Tick and Tock for Mike Sullivan's Digital Clock. This merge was placed 32 ' into his clock to add tick,tock and Big Ben's chimes 33 ' Willis Frick, 8359 Amber Rose Lane, Rosemead, Ca. 91770,213 572 2738 35 ' The tick, tock and chimes will work with/without Clayton Gaskill 36 ' I have added all the enhancements to sullivans clock from these sources 37 ' Rich Schinnell Capital PC Software Exchange, 1982 November 21 40 LOCATE 2,19:PRINT "M I K E S U L L I V A N ' S --- I B M ---" 50 LOCATE 4,19:PRINT " DIGITAL CLOCK 1 . 1 0 " 60 GOSUB 4060 240 DIM ONE$(7),TWO$(7),THR$(7),FOU$(7),FIV$(7) 250 DIM SIX$(7),SEV$(7),EIG$(7),NIN$(7),ZER$(7),TEMP$(7) 260 XH1=.1:XH2=.1:XM1=.1:XM2=.2:XS1=.1:XS2=.1 270 COL$(1)=" " 280 COL$(2)=" " 290 COL$(3)=STRING$(2,CHR$(219)) 300 COL$(4)=" " 310 COL$(5)=STRING$(2,CHR$(219)) 320 COL$(6)=" " 330 COL$(7)=" " 340 ONE$(1)=" "+STRING$(3,CHR$(219))+" " 350 ONE$(2)=" "+CHR$(219)+CHR$(219)+" " 360 ONE$(3)=" "+CHR$(219)+CHR$(219)+" " 370 ONE$(4)=" "+CHR$(219)+CHR$(219)+" " 380 ONE$(5)=" "+CHR$(219)+CHR$(219)+" " 390 ONE$(6)=" "+CHR$(219)+CHR$(219)+" " 400 ONE$(7)=" "+STRING$(6,CHR$(219))+" " 410 TWO$(1)=STRING$(8,CHR$(219)) 420 TWO$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 430 TWO$(3)=" "+CHR$(219)+CHR$(219) 440 TWO$(4)=STRING$(8,CHR$(219)) 450 TWO$(6)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 460 TWO$(5)=CHR$(219)+CHR$(219)+" " 470 TWO$(7)=STRING$(8,CHR$(219)) 480 THR$(1)=STRING$(8,CHR$(219)) 490 THR$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 500 THR$(3)=" "+CHR$(219)+CHR$(219) 510 THR$(4)=STRING$(8,CHR$(219)) 520 THR$(5)=" "+CHR$(219)+CHR$(219) 530 THR$(6)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 540 THR$(7)=STRING$(8,CHR$(219)) 550 FOU$(1)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 560 FOU$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 570 FOU$(3)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 580 FOU$(4)=STRING$(8,CHR$(219)) 590 FOU$(6)=" "+CHR$(219)+CHR$(219) 600 FOU$(5)=" "+CHR$(219)+CHR$(219) 610 FOU$(7)=" "+CHR$(219)+CHR$(219) 620 FIV$(1)=STRING$(8,CHR$(219)) 630 FIV$(2)=CHR$(219)+CHR$(219)+" " 640 FIV$(3)=CHR$(219)+CHR$(219)+" " 650 FIV$(4)=STRING$(8,CHR$(219)) 660 FIV$(6)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 670 FIV$(5)=" "+CHR$(219)+CHR$(219) 680 FIV$(7)=STRING$(8,CHR$(219)) 690 SIX$(1)=STRING$(8,CHR$(219)) 700 SIX$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 710 SIX$(3)=CHR$(219)+CHR$(219)+" " 720 SIX$(4)=STRING$(8,CHR$(219)) 730 SIX$(6)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 740 SIX$(5)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 750 SIX$(7)=STRING$(8,CHR$(219)) 760 SEV$(1)=STRING$(8,CHR$(219)) 770 SEV$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 780 SEV$(3)=" "+CHR$(219)+CHR$(219) 790 SEV$(4)=" "+CHR$(219)+CHR$(219) 800 SEV$(5)=" "+CHR$(219)+CHR$(219) 810 SEV$(6)=" "+CHR$(219)+CHR$(219) 820 SEV$(7)=" "+CHR$(219)+CHR$(219) 830 EIG$(1)=STRING$(8,CHR$(219)) 840 EIG$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 850 EIG$(3)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 860 EIG$(4)=STRING$(8,CHR$(219)) 870 EIG$(5)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 880 EIG$(6)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 890 EIG$(7)=STRING$(8,CHR$(219)) 900 NIN$(1)=STRING$(8,CHR$(219)) 910 NIN$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 920 NIN$(3)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 930 NIN$(4)=CHR$(219)+STRING$(7,CHR$(219)) 940 NIN$(6)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 950 NIN$(5)=" "+CHR$(219)+CHR$(219) 960 NIN$(7)=STRING$(8,CHR$(219)) 970 ZER$(1)=STRING$(8,CHR$(219)) 980 ZER$(2)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 990 ZER$(3)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 1000 ZER$(4)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 1010 ZER$(5)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 1020 ZER$(6)=CHR$(219)+CHR$(219)+" "+CHR$(219)+CHR$(219) 1030 ZER$(7)=CHR$(219)+STRING$(7,CHR$(219)) 1040 H1=VAL(MID$(TIME$,1,1)) 1050 H2=VAL(MID$(TIME$,2,1)) 1060 M1=VAL(MID$(TIME$,4,1)) 1070 M2=VAL(MID$(TIME$,5,1)) 1080 S1=VAL(MID$(TIME$,7,1)) 1090 S2=VAL(MID$(TIME$,8,1)) 1095 XDA$=MID$(DATE$,4,2) 1100 Z$=INKEY$:IF Z$="" THEN 1101 ELSE END 1101 MIN = VAL(MID$(TIME$,4,2)) 1102 HOUR = VAL(MID$(TIME$,1,2)) 1103 IF HOUR = 0 THEN HOUR = 12 1104 IF CHIME = 1 AND MIN = 0 THEN GOSUB 10090 1105 IF CHIME = 1 AND MIN = 15 THEN GOSUB 10090 1106 IF CHIME = 1 AND MIN = 30 THEN GOSUB 10090 1107 IF CHIME = 1 AND MIN = 45 THEN GOSUB 10090 1108 IF (MIN = 14) OR (MIN = 29) OR (MIN = 44) OR (MIN = 59) OR (MIN = 16) OR (MIN = 31) OR (MIN = 46) OR (MIN = 1) THEN CHIME = 1 1110 IF S2=XS2 THEN 1040 1111 GOSUB 10000 1115 IF DA$<>XDA$ THEN GOSUB 4060 1120 IF H1=0 THEN 1130 ELSE 1170 1130 IF H1=XH1 THEN 1450 ELSE XH1=H1 1140 FOR I=1 TO 7 1150 TEMP$(I)=ZER$(I):NEXT I 1160 GOSUB 3100:GOTO 1450 1170 IF H1=XH1 THEN 1450 ELSE XH1=H1 1180 ON H1 GOTO 1190,1220,1250,1280,1310,1340,1370,1400,1430 1190 FOR I=1 TO 7 1200 TEMP$(I)=ONE$(I):NEXT I:GOSUB 3100 1210 GOTO 1450 1220 FOR I=1 TO 7 1230 TEMP$(I)=TWO$(I):NEXT I:GOSUB 3100 1240 GOTO 1450 1250 FOR I=1 TO 7 1260 TEMP$(I)=THR$(I):NEXT I:GOSUB 3100 1270 GOTO 1450 1280 FOR I=1 TO 7 1290 TEMP$(I)=FOU$(I):NEXT I:GOSUB 3100 1300 GOTO 1450 1310 FOR I=1 TO 7 1320 TEMP$(I)=FIV$(I):NEXT I:GOSUB 3100 1330 GOTO 1450 1340 FOR I=1 TO 7 1350 TEMP$(I)=SIX$(I):NEXT I:GOSUB 3100 1360 GOTO 1450 1370 FOR I=1 TO 7 1380 TEMP$(I)=SEV$(I):NEXT I:GOSUB 3100 1390 GOTO 1450 1400 FOR I=1 TO 7 1410 TEMP$(I)=EIG$(I):NEXT I:GOSUB 3100 1420 GOTO 1450 1430 FOR I=1 TO 7 1440 TEMP$(I)=NIN$(I):NEXT I:GOSUB 3100 1450 IF H2=0 THEN 1460 ELSE 1500 1460 IF H2=XH2 THEN 1790 ELSE XH2=H2 1470 FOR I=1 TO 7 1480 TEMP$(I)=ZER$(I):NEXT I 1490 GOSUB 3140:GOTO 1790 1500 IF H2=XH2 THEN 1790 ELSE XH2=H2 1510 ON H2 GOTO 1520,1550,1580,1610,1640,1670,1700,1730,1760 1520 FOR I=1 TO 7 1530 TEMP$(I)=ONE$(I):NEXT I:GOSUB 3140 1540 GOTO 1790 1550 FOR I=1 TO 7 1560 TEMP$(I)=TWO$(I):NEXT I:GOSUB 3140 1570 GOTO 1790 1580 FOR I=1 TO 7 1590 TEMP$(I)=THR$(I):NEXT I:GOSUB 3140 1600 GOTO 1790 1610 FOR I=1 TO 7 1620 TEMP$(I)=FOU$(I):NEXT I:GOSUB 3140 1630 GOTO 1790 1640 FOR I=1 TO 7 1650 TEMP$(I)=FIV$(I):NEXT I:GOSUB 3140 1660 GOTO 1790 1670 FOR I=1 TO 7 1680 TEMP$(I)=SIX$(I):NEXT I:GOSUB 3140 1690 GOTO 1790 1700 FOR I=1 TO 7 1710 TEMP$(I)=SEV$(I):NEXT I:GOSUB 3140 1720 GOTO 1790 1730 FOR I=1 TO 7 1740 TEMP$(I)=EIG$(I):NEXT I:GOSUB 3140 1750 GOTO 1790 1760 FOR I=1 TO 7 1770 TEMP$(I)=NIN$(I):NEXT I:GOSUB 3140 1780 GOTO 3090 1790 IF M1=0 THEN 1800 ELSE 1840 1800 IF M1=XM1 THEN 2120 ELSE XM1=M1 1810 FOR I=1 TO 7 1820 TEMP$(I)=ZER$(I):NEXT I 1830 GOSUB 3210:GOTO 2120 1840 IF M1=XM1 THEN 2120 ELSE XM1=M1 1850 ON M1 GOTO 1860,1890,1920,1950,1980,2010,2040,2070,2100 1860 FOR I=1 TO 7 1870 TEMP$(I)=ONE$(I):NEXT I:GOSUB 3210 1880 GOTO 2120 1890 FOR I=1 TO 7 1900 TEMP$(I)=TWO$(I):NEXT I:GOSUB 3210 1910 GOTO 2120 1920 FOR I=1 TO 7 1930 TEMP$(I)=THR$(I):NEXT I:GOSUB 3210 1940 GOTO 2120 1950 FOR I=1 TO 7 1960 TEMP$(I)=FOU$(I):NEXT I:GOSUB 3210 1970 GOTO 2120 1980 FOR I=1 TO 7 1990 TEMP$(I)=FIV$(I):NEXT I:GOSUB 3210 2000 GOTO 2120 2010 FOR I=1 TO 7 2020 TEMP$(I)=SIX$(I):NEXT I:GOSUB 3210 2030 GOTO 2120 2040 FOR I=1 TO 7 2050 TEMP$(I)=SEV$(I):NEXT I:GOSUB 3210 2060 GOTO 2120 2070 FOR I=1 TO 7 2080 TEMP$(I)=EIG$(I):NEXT I:GOSUB 3210 2090 GOTO 2120 2100 FOR I=1 TO 7 2110 TEMP$(I)=NIN$(I):NEXT I:GOSUB 3210 2120 IF M2=0 THEN 2130 ELSE 2170 2130 IF M2=XM2 THEN 2450 ELSE XM2=M2 2140 FOR I=1 TO 7 2150 TEMP$(I)=ZER$(I):NEXT I 2160 GOSUB 3250:GOTO 2450 2170 IF M2=XM2 THEN 2450 ELSE XM2=M2 2180 ON M2 GOTO 2190,2220,2250,2280,2310,2340,2370,2400,2430 2190 FOR I=1 TO 7 2200 TEMP$(I)=ONE$(I):NEXT I:GOSUB 3250 2210 GOTO 2450 2220 FOR I=1 TO 7 2230 TEMP$(I)=TWO$(I):NEXT I:GOSUB 3250 2240 GOTO 2450 2250 FOR I=1 TO 7 2260 TEMP$(I)=THR$(I):NEXT I:GOSUB 3250 2270 GOTO 2450 2280 FOR I=1 TO 7 2290 TEMP$(I)=FOU$(I):NEXT I:GOSUB 3250 2300 GOTO 2450 2310 FOR I=1 TO 7 2320 TEMP$(I)=FIV$(I):NEXT I:GOSUB 3250 2330 GOTO 2450 2340 FOR I=1 TO 7 2350 TEMP$(I)=SIX$(I):NEXT I:GOSUB 3250 2360 GOTO 2450 2370 FOR I=1 TO 7 2380 TEMP$(I)=SEV$(I):NEXT I:GOSUB 3250 2390 GOTO 2450 2400 FOR I=1 TO 7 2410 TEMP$(I)=EIG$(I):NEXT I:GOSUB 3250 2420 GOTO 2450 2430 FOR I=1 TO 7 2440 TEMP$(I)=NIN$(I):NEXT I:GOSUB 3250 2450 IF S1=0 THEN 2460 ELSE 2500 2460 IF S1=XS1 THEN 2780 ELSE XS1=S1 2470 FOR I=1 TO 7 2480 TEMP$(I)=ZER$(I):NEXT I 2490 GOSUB 3320:GOTO 2780 2500 IF S1=XS1 THEN 2780 ELSE XS1=S1 2510 ON S1 GOTO 2520,2550,2580,2610,2640,2670,2700,2730,2760 2520 FOR I=1 TO 7 2530 TEMP$(I)=ONE$(I):NEXT I:GOSUB 3320 2540 GOTO 2780 2550 FOR I=1 TO 7 2560 TEMP$(I)=TWO$(I):NEXT I:GOSUB 3320 2570 GOTO 2780 2580 FOR I=1 TO 7 2590 TEMP$(I)=THR$(I):NEXT I:GOSUB 3320 2600 GOTO 2780 2610 FOR I=1 TO 7 2620 TEMP$(I)=FOU$(I):NEXT I:GOSUB 3320 2630 GOTO 2780 2640 FOR I=1 TO 7 2650 TEMP$(I)=FIV$(I):NEXT I:GOSUB 3320 2660 GOTO 2780 2670 FOR I=1 TO 7 2680 TEMP$(I)=SIX$(I):NEXT I:GOSUB 3320 2690 GOTO 2780 2700 FOR I=1 TO 7 2710 TEMP$(I)=SEV$(I):NEXT I:GOSUB 3320 2720 GOTO 2780 2730 FOR I=1 TO 7 2740 TEMP$(I)=EIG$(I):NEXT I:GOSUB 3320 2750 GOTO 2780 2760 FOR I=1 TO 7 2770 TEMP$(I)=NIN$(I):NEXT I:GOSUB 3320 2780 IF S2=0 THEN 2790 ELSE 2820 2790 FOR I=1 TO 7 2800 TEMP$(I)=ZER$(I):NEXT I 2810 GOSUB 3360:GOTO 3090 2820 XS2=S2:ON S2 GOTO 2830,2860,2890,2920,2950,2980,3010,3040,3070 2830 FOR I=1 TO 7 2840 TEMP$(I)=ONE$(I):NEXT I:GOSUB 3360 2850 GOTO 3090 2860 FOR I=1 TO 7 2870 TEMP$(I)=TWO$(I):NEXT I:GOSUB 3360 2880 GOTO 3090 2890 FOR I=1 TO 7 2900 TEMP$(I)=THR$(I):NEXT I:GOSUB 3360 2910 GOTO 3090 2920 FOR I=1 TO 7 2930 TEMP$(I)=FOU$(I):NEXT I:GOSUB 3360 2940 GOTO 3090 2950 FOR I=1 TO 7 2960 TEMP$(I)=FIV$(I):NEXT I:GOSUB 3360 2970 GOTO 3090 2980 FOR I=1 TO 7 2990 TEMP$(I)=SIX$(I):NEXT I:GOSUB 3360 3000 GOTO 3090 3010 FOR I=1 TO 7 3020 TEMP$(I)=SEV$(I):NEXT I:GOSUB 3360 3030 GOTO 3090 3040 FOR I=1 TO 7 3050 TEMP$(I)=EIG$(I):NEXT I:GOSUB 3360 3060 GOTO 3090 3070 FOR I=1 TO 7 3080 TEMP$(I)=NIN$(I):NEXT I:GOSUB 3360 3090 XS2=S2:GOTO 1040 3100 FOR I=1 TO 7 3110 LOCATE 9+I,5:PRINT TEMP$(I) 3120 NEXT I 3130 RETURN 3140 FOR I=1 TO 7 3150 LOCATE 9+I,14:PRINT TEMP$(I) 3160 NEXT I 3170 FOR I=1 TO 7 3180 LOCATE 9+I,26:PRINT COL$(I) 3190 NEXT I 3200 RETURN 3210 FOR I=1 TO 7 3220 LOCATE 9+I,32:PRINT TEMP$(I) 3230 NEXT I 3240 RETURN 3250 FOR I=1 TO 7 3260 LOCATE 9+I,42:PRINT TEMP$(I) 3270 NEXT I 3280 FOR I=1 TO 7 3290 LOCATE 9+I,54:PRINT COL$(I) 3300 NEXT I 3310 RETURN 3320 FOR I=1 TO 7 3330 LOCATE 9+I,60:PRINT TEMP$(I) 3340 NEXT I 3350 RETURN 3360 FOR I=1 TO 7 3370 LOCATE 9+I,70:PRINT TEMP$(I) 3380 NEXT I 3390 RETURN 4060 MO$=MID$(DATE$,1,2) 4070 DA$=MID$(DATE$,4,2) 4080 YR$=MID$(DATE$,9,2) 4081 YR4$=MID$(DATE$,7,4) 4090 MO=VAL(MO$) 4091 YR=VAL(YR$) 4092 YR4=VAL(YR4$) 4100 ON MO GOTO 4110,4120,4130,4140,4150,4160,4170,4180,4190,4200,4210,4220 4110 MO$="JANUARY":GOTO 4230 4120 MO$="FEBRUARY":GOTO 4230 4130 MO$="MARCH":GOTO 4230 4140 MO$="APRIL":GOTO 4230 4150 MO$="MAY":GOTO 4230 4160 MO$="JUNE":GOTO 4230 4170 MO$="JULY":GOTO 4230 4180 MO$="AUGUST":GOTO 4230 4190 MO$="SEPTEMBER":GOTO 4230 4200 MO$="OCTOBER":GOTO 4230 4210 MO$="NOVEMBER":GOTO 4230 4220 MO$="DECEMBER":GOTO 4230 4230 YEAR%=YR4 4233 MONTH%=MO 4235 DAY%=VAL(DA$) 4240 IF MONTH%=1 OR MONTH%=2 THEN 4250 ELSE 4270 4250 YEAR%=YEAR%-1 4260 MONTH%=MONTH%+12 4270 DOW.K%=DAY%+YEAR%+MONTH%*2+YEAR%\4+YEAR%\400+(MONTH%+1)*3\5+2-YEAR%\100 4330 DOW%=DOW.K% MOD 7 4360 IF DOW%=0 OR DOW%=1 THEN DOW%=DOW%+7 4370 DOW%=DOW%-1 4500 ON DOW% GOTO 4510,4520,4530,4540,4550,4560,4570 4510 DOW$="MONDAY":GOTO 4580 4520 DOW$="TUESDAY":GOTO 4580 4530 DOW$="WEDNESDAY":GOTO 4580 4540 DOW$="THURSDAY":GOTO 4580 4550 DOW$="FRIDAY":GOTO 4580 4560 DOW$="SATURDAY":GOTO 4580 4570 DOW$="SUNDAY":GOTO 4580 4580 LOCATE 22,29:PRINT DOW$;", ";MO$;" ";DA$;", ";YR4$;" " 4590 RETURN 10000 IF TICKOFF < 0 THEN TICKOFF = TICKOFF + 1:RETURN 10003 IF ODD = 1 THEN SOUND 2000,1:ODD = 0:RETURN 10010 SOUND 5000,1:ODD = 1:RETURN 10090 CHIME = 0 10095 ODD = 0 10100 IF MIN = 15 THEN PLAY Q15$:TICKOFF = -2:RETURN 10110 IF MIN = 30 THEN PLAY Q15$+Q30$:TICKOFF = -5:RETURN 10120 IF MIN = 45 THEN PLAY Q15$+Q30$+Q15$:TICKOFF = -7:RETURN 10130 IF MIN = 0 THEN PLAY Q15$+Q30$+Q15$+Q30$:TICKOFF = -9 + -1*HOUR 10135 PLAY "mbP2" 10140 FOR II = 1 TO HOUR 10150 PLAY"MBO3CN0" 10160 NEXT II 10170 RETURN