DEF SEG dsam$ = "NO" GOTO 2100 dsam$ = "YES" 2100 DEF SEG = 0 DEF SEG ON ERROR GOTO 2600 GOTO 3000 2600 COLOR 31, 0, 0 PRINT "THIS PROGRAM REQUIRES GWBASIC": COLOR 15, 0, 0: FOR i = 1 TO 9000: NEXT: RESUME 2800 2800 ON ERROR GOTO 0 IF dsam$ = "YES" THEN CHAIN "cafdemo" ELSE COLOR 7, 0, 0: WIDTH 80: CLS : END 3000 REM DIM m$(12) DIM d(12, 48) DIM w$(7) FOR p = 1 TO 12: READ m$(p): NEXT p FOR p = 1 TO 7: READ w$(p): NEXT p DATA " JANUARY "," FEBRUARY"," MARCH"," APRIL"," MAY"," JUNE"," JULY"," AUGUST"," SEPTEMBER"," OCTOBER"," NOVEMBER"," DECEMBER" DATA " SUN"," MON"," TUE"," WED"," THU"," FRI"," SAT" Again = -99.99: first = -99.99 3900 CLS LET l = 1: m1 = 0 LOCATE 10, 25: PRINT "Which year ____" LOCATE 10, 36: INPUT y LOCATE 12, 25: PRINT "Which month __ (RETURN for whole year)" LOCATE 12, 37: INPUT m1 CLS IF Again = y THEN GOTO 7600 ELSE Again = y LOCATE 12, 30: PRINT "Please wait ..." IF first = -99.99 THEN GOTO 4900 FOR i = 1 TO 12: FOR j = 1 TO 48: d(i, j) = 0: NEXT j, i 4900 first = 99.99: LET y1 = y - 1980 LET i = 3 LET n2 = 28 IF y = INT(y / 4) * 4 THEN LET n2 = 29 IF y1 > 0 THEN GOTO 5800 IF y1 = 0 THEN GOTO 6000 LET y2 = INT(365 * ABS(y1) = ABS(y1) / 4) LET i = 7 - INT(y2 - INT(y2 / 7) * 7) + i GOTO 6000 5800 LET y2 = INT(365 * y1 + (y1 - 1) / 4 + 1) LET i = y2 - INT(y2 / 7) * 7 + i 6000 FOR p1 = 1 TO 12 IF i > 7 THEN LET i = i - 7 LET x = 0 FOR p2 = i TO 48 LET x = x + 1 IF p2 = INT(p2 / 8) * 8 THEN GOTO 6800 LET d(p1, p2) = x ON p1 GOTO 7200, 7000, 7200, 7100, 7200, 7100, 7200, 7200, 7100, 7200, 7100, 7200 6800 LET x = x - 1 GOTO 7300 7000 IF x = n2 THEN GOTO 7400 7100 IF x = 30 THEN GOTO 7400 7200 IF x = 31 THEN GOTO 7400 7300 NEXT p2 7400 LET i = p2 - INT(p2 / 8) * 8 + 1 NEXT p1 7600 ON m1 GOTO 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100, 12100 CLS : PRINT : PRINT TAB(36); "Year :"; y REM PRINT REM PRINT FOR a = 0 TO 10 STEP 2 GOSUB 9900 FOR k = 0 TO 40 STEP 8 PRINT " "; FOR i = a + 1 TO a + 2 FOR j = k + 1 TO k + 8 IF j = INT(j / 8) * 8 THEN GOTO 9200 IF d(i, j) = 0 THEN GOTO 9000 PRINT USING "####"; d(i, j); GOTO 9100 9000 PRINT " "; 9100 NEXT j 9200 PRINT " "; NEXT i PRINT NEXT k IF a = 10 THEN GOTO 9700 ELSE PRINT TAB(39); y 9700 NEXT a GOTO 13800 9900 REM print LET j = 0 FOR i = 1 TO 2 PRINT TAB(18 + j); m$(l); LET l = l + 1 LET j = j + 37 NEXT i PRINT PRINT GOSUB 11000 RETURN 11000 PRINT TAB(9); FOR i = 1 TO 2 FOR j = 1 TO 7 PRINT w$(j); NEXT j PRINT " "; NEXT i PRINT RETURN REM A$=INKEY$:IF A$=CHR$(27) THEN 2330 REM IF A$<>"" THEN 4810 ELSE GOTO 4080 12100 REM REM PRINT REM PRINT GOSUB 14500 FOR k = 0 TO 40 STEP 8 PRINT " "; FOR j = k + 1 TO k + 8 IF j = INT(j / 8) * 8 THEN GOTO 13500 i = m1 IF d(i, j) = 0 THEN GOTO 13300 PRINT USING "####"; d(i, j); GOTO 13400 13300 PRINT " "; 13400 NEXT j 13500 PRINT " "; PRINT NEXT k 13800 PRINT : PRINT TAB(11); "Press SPACE bar to continue or to exit" 13900 IF INKEY$ <> "" THEN GOTO 13900 14000 choice$ = INKEY$ IF choice$ = "" THEN GOTO 14000 IF choice$ = CHR$(27) THEN GOTO 2800 IF choice$ = " " THEN GOTO 3900 GOTO 13900 14500 CLS CLS : PRINT : PRINT TAB(27); " Year :"; y PRINT : PRINT STRING$(29, " "); : PRINT USING "Month: ####"; m1 LOCATE 10, 28 PRINT m$(m1): PRINT GOSUB 15200 RETURN 15200 PRINT TAB(19); FOR j = 1 TO 7 PRINT w$(j); NEXT j PRINT RETURN