10 CLEAR 1024 20 ON ERROR GOTO 9000 30 DA%=0:D$="":INPUT "Month/year";D$ 40 IF D$="" THEN D$=DATE$:DA%=VAL(LEFT$(D$,2)):D$=RIGHT$(D$,5) 50 I%=INSTR(D$,"/"):IF I%<2 OR I%>3 OR I%=LEN(D$) THEN BEEP:GOTO 30 60 W=VAL(LEFT$(D$,I%-1)):V=VAL(RIGHT$(D$,LEN(D$)-I%)):X=1 70 IF W<1 OR W>12 OR V<0 THEN BEEP:GOTO 30 80 IF V<100 THEN V=V+1900 90 ON ERROR GOTO 0 100 GOSUB 20000 110 FOR I%=1 TO W:READ M$,MD%:NEXT I% 120 IF W=2 THEN MD%=MD%-(0=V MOD 4)+(0=V MOD 100)-(0=V MOD 400) 130 CLS 140 PRINT TAB(7);M$;" ";V 150 PRINT TAB(6);" Sun Mon Tue Wed Thu Fri Sat" 160 D%=D-7*INT(D/7) 170 PRINT TAB(6);SPACE$(4*D%); 180 FOR I%=1 TO MD% 185 IF I%=DA% THEN PRINT CHR$(27);"p"; 190 PRINT USING "####";I%; 195 IF I%=DA% THEN PRINT CHR$(27);"q"; 200 D%=D%+1:IF D%>6 AND I%<>MD% THEN PRINT:PRINT TAB(6);:D%=0 210 NEXT I% 220 C$=INKEY$:IF C$="" THEN 220 230 MENU 9000 IF ERL<>60 THEN ON ERROR GOTO 0:RESUME 9010 BEEP:RESUME 30 20000 Y=-INT ((14-W)/12) 20030 Z=X-32074+INT (1461*(V+4800+Y)/4) 20040 Z=Z+INT (367*(W-2-12*Y)/12) 20050 D=Z-INT (3*INT ((V+4900+Y)/100)/4) 20060 RETURN 50000 DATA January,31 50010 DATA February,28 50020 DATA March,31 50030 DATA April,30 50040 DATA May,31 50050 DATA June,30 50060 DATA July,31 50070 DATA August,31 50080 DATA September,30 50090 DATA October,31 50100 DATA November,30 50110 DATA December,31