A simple digital flip-clock.
PROG : 16509
D-FILE: 20494
VARS : 21287
E-LINE: 21288
STKBOT: 21288
STKEND: 21288
9999 means line number
PRINT means treat as KEYWORD P
10 REM **FLIP-CLOCK*SLR/2025**
20 GOSUB 1000
30 REM --- MAIN LOOP ---
100 LET NOW=PEEK 16436
110 LET DIFF=LAST-NOW
120 IF DIFF<0 THEN LET DIFF=DIF
F+W
130 IF DIFF<R THEN GOTO 100
140 LET SA=INT (DIFF/R)
150 LET LAST=LAST-(SA*R)
160 IF LAST<0 THEN LET LAST=LAS
T+W
170 FOR I=1 TO SA
180 LET SC=NOT SC
190 GOSUB 300
200 NEXT I
210 IF M2=LM THEN GOTO 240
220 GOSUB 550
230 LET LM=M2
240 REM --- PULSE COLON ---
250 IF SC THEN PRINT AT 3,8;"¸"
;AT 5,8;"¸"
260 IF NOT SC THEN PRINT AT 3,8
;" ";AT 5,8;" "
270 GOTO 100
300 REM --- INCREMENT ---
310 LET S2=S2+1
320 IF S2<11 THEN RETURN
330 LET S2=1
340 LET S1=S1+1
350 IF S1<7 THEN RETURN
360 LET S1=1
370 LET M2=M2+1
380 IF M2<11 THEN RETURN
390 LET M2=1
400 LET M1=M1+1
410 IF M1<7 THEN RETURN
420 LET M1=1
430 LET H2=H2+1
440 IF H1=3 AND H2=5 THEN GOTO
490
450 IF H2<11 THEN RETURN
460 LET H2=1
470 LET H1=H1+1
480 RETURN
490 LET H1=1
500 LET H2=1
510 RETURN
550 REM --- CONCATENATE ---
560 FOR J=1 TO 5
570 LET L$(J)=D$(H1,J)+" "+D$(H
2,J)+" "+D$(M1,J)+" "+D$(M2,J)
575 REM LET L$(J)=D$(H1,J)+" "+
D$(H2,J)+" : "+D$(M1,J)+" "+D$(M
2,J)+" : "+D$(S1,J)+" "+D$(S2,J)
580 NEXT J
600 REM --- DRAWING ---
610 PRINT AT 2,0;L$(1);L$(2);L$
(3);L$(4);L$(5)
620 RETURN
900 REM --- SAVE ---
910 SAVE "FLIPCLK"
920 RUN
950 REM --- SETUP ---
1000 DIM D$(12,5,3)
1010 REM DIGIT 0 (ARRAY 1)
1020 LET D$(1,1)="¸¸¸"
1030 LET D$(1,2)="¸ ¸"
1040 LET D$(1,3)="¸ ¸"
1050 LET D$(1,4)="¸ ¸"
1060 LET D$(1,5)="¸¸¸"
1070 REM DIGIT 1 (ARRAY 2)
1080 LET D$(2,1)=" ¸"
1090 LET D$(2,2)=" ¸"
1100 LET D$(2,3)=" ¸"
1110 LET D$(2,4)=" ¸"
1120 LET D$(2,5)=" ¸"
1130 REM DIGIT 2 (ARRAY 3)
1140 LET D$(3,1)="¸¸¸"
1150 LET D$(3,2)=" ¸"
1160 LET D$(3,3)="¸¸¸"
1170 LET D$(3,4)="¸ "
1180 LET D$(3,5)="¸¸¸"
1190 REM DIGIT 3 (ARRAY 4)
1200 LET D$(4,1)="¸¸¸"
1210 LET D$(4,2)=" ¸"
1220 LET D$(4,3)="¸¸¸"
1230 LET D$(4,4)=" ¸"
1240 LET D$(4,5)="¸¸¸"
1250 REM DIGIT 4 (ARRAY 5)
1260 LET D$(5,1)="¸ ¸"
1270 LET D$(5,2)="¸ ¸"
1280 LET D$(5,3)="¸¸¸"
1290 LET D$(5,4)=" ¸"
1300 LET D$(5,5)=" ¸"
1310 REM DIGIT 5 (ARRAY 6)
1320 LET D$(6,1)="¸¸¸"
1330 LET D$(6,2)="¸ "
1340 LET D$(6,3)="¸¸¸"
1350 LET D$(6,4)=" ¸"
1360 LET D$(6,5)="¸¸¸"
1370 REM DIGIT 6 (ARRAY 7)
1380 LET D$(7,1)="¸¸¸"
1390 LET D$(7,2)="¸ "
1400 LET D$(7,3)="¸¸¸"
1410 LET D$(7,4)="¸ ¸"
1420 LET D$(7,5)="¸¸¸"
1430 REM DIGIT 7 (ARRAY 8)
1440 LET D$(8,1)="¸¸¸"
1450 LET D$(8,2)=" ¸"
1460 LET D$(8,3)=" ¸"
1470 LET D$(8,4)=" ¸"
1480 LET D$(8,5)=" ¸"
1490 REM DIGIT 8 (ARRAY 9)
1500 LET D$(9,1)="¸¸¸"
1510 LET D$(9,2)="¸ ¸"
1520 LET D$(9,3)="¸¸¸"
1530 LET D$(9,4)="¸ ¸"
1540 LET D$(9,5)="¸¸¸"
1550 REM DIGIT 9 (ARRAY 10)
1560 LET D$(10,1)="¸¸¸"
1570 LET D$(10,2)="¸ ¸"
1580 LET D$(10,3)="¸¸¸"
1590 LET D$(10,4)=" ¸"
1600 LET D$(10,5)="¸¸¸"
1610 DIM L$(5,32)
1620 REM --- INIT CONSTANTS ---
1630 LET W=256
1640 LET LM = 99
1650 LET R=50
1660 IF PEEK 16424=31 THEN LET R
=60
1670 LET SC=1
1680 LET NOW=0
1690 LET LAST=0
1700 LET DIFF=0
2000 CLS
2010 PRINT "SETTING 24HR TIME (P
RESS 0-9)","PRESS D WHEN DONE"
2040 LET H1=1
2050 LET H2=1
2060 LET M1=1
2070 LET M2=1
2080 LET S1=1
2090 LET S2=1
2100 GOSUB 550
2110 PRINT AT 3,8;"¸";AT 5,8;"¸"
2200 LET K$=INKEY$
2210 IF K$="" THEN GOTO 2200
2220 IF K$="D" THEN GOTO 2400
2230 IF K$<"0" OR K$>"9" THEN
GOTO 2200
2240 REM --- SHIFT DIGITS ---
2250 LET H1=H2
2260 LET H2=M1
2270 LET M1=M2
2290 LET M2=CODE K$-27
2300 IF INKEY$<>"" THEN GOTO 230
0
2310 GOTO 2100
2400 REM --- CHECK TIME ---
2410 LET LAST=PEEK 16436
2420 IF (H1*10+H2)>34 THEN GOTO
2500
2430 IF (M1*10+M2)>70 THEN GOTO
2500
2440 CLS
2450 LET LM=99
2460 RETURN
2500 PRINT AT 7,0;"INVALID TIME"
2510 FOR I=1 TO 100
2520 NEXT I
2530 PRINT AT 7,0;" "
2540 GOTO 2100