Source Code
2 REM Perpetual Calendar 2068
4 REM \* 1984 I. Auersbacher
8 BORDER 5: DIM M$(12,9)
10 CLS : PRINT PAPER 6;"*** CALENDAR (1583-9999 AD) *** "
15 LET Z$=" 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031": BEEP 0.05,20
20 INPUT "MONTH (1-12):";A: IF (A<1)+(A>12) THEN GO TO 20
30 INPUT "YEAR (YYYY):";B: IF B<1582 THEN BEEP 1,-20: GO TO 30
60 LET B=INT B: LET E=B-(A<3)
65 LET C=A+12*(A<3)+1
70 LET D=INT (E/400)-INT (E/100)+INT (1.25*E)+INT (2.6*C)
75 LET D=D-(7*INT (D/7))+1
80 IF (A=4)+(A=6)+(A=9)+(A=11) THEN LET C=30
85 IF (A=1)+(A=3)+(A=5)+(A=7)+(A=8)+(A=10)+(A=12) THEN LET C=31
90 IF A<>2 THEN GO TO 200
100 LET C=28: IF (B/4=INT (B/4))*(B/100<>INT (B/100))+(B/400=INT (B/400)) THEN LET C=29
200 PLOT 10,132: DRAW 225,0: DRAW 0,-112: DRAW -225,0: DRAW 0,112
210 PLOT 10,118: DRAW 225,0
220 PRINT AT 6,3;"S M T W Th F S": PRINT AT 3,0;
230 FOR Z=1 TO 6: PLOT 10,116-(Z-1)*16: DRAW 225,0: NEXT Z
240 FOR Z=1 TO 6: PLOT 40+(Z-1)*32,132: DRAW 0,-112: NEXT Z
250 RESTORE : FOR Z=1 TO 12: READ M$(Z): NEXT Z
252 PRINT TAB 8;M$(A);TAB 18;B
264 DIM C$(74): LET J=8: LET K=2: LET C$=C$( TO 2*D-2)+Z$
270 FOR Z=1 TO C+D-1: PRINT AT J,K;C$(2*Z-1 TO 2*Z): LET K=K+4
280 IF (Z/7=INT (Z/7)) THEN LET J=J+2: LET K=2
290 NEXT Z: STOP : STOP
300 DATA "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"
999 SAVE "cal" LINE 8