10:
20:IF PEEK &A000<>&C0PRINT "Printer required.":END
30:M=INT (TIME /1E4):IF Y<1900OR Y>2100LET Y=2000
40:WAIT 0
50:CLS :PRINT "Year (";STR$ Y;") ";:INPUT Y
60:CLS :PRINT "Month (";STR$ M;") ";:INPUT M
70:CLS :INPUT "Colour? (Y/N) ";C$
80:IF C$<>"Y"AND C$<>"N"THEN 70
90:C=C$="Y":CLS
100:E=M-INT ((M-1)/7)*7:E=30+E-INT (E/2)*2
120:IF M=2LET E=29-((Y/4<>INT (Y/4))+((Y/100=INT (Y/100))*(Y/400<>INT (Y/400))))
130:Z=Y:N=M+1:IF M>2THEN 150
140:Z=Y-1:N=M+13
150:V=INT (365.25*Z)+INT (30.6*N)-621049
160:V=1+INT (V/7)*7-V
170:TEXT :CSIZE 5
180:V$=STR$ M:IF LEN V$<2LET V$="0"+V$
190:V$=STR$ Y+"-"+V$
200:COLOR 0:LPRINT V$
210:GRAPH :CSIZE 2:SORGN :R=0
220:FOR X=1TO 7:GLCURSOR (X*30-24,0)
230:COLOR (2+(X>5))*C
240:LPRINT MID$ ("MoTuWeThFrSaSu",X*2-1,2);
250:NEXT X
260:R=R-24
270:FOR X=1TO 7:IF V<1OR V>ETHEN 310
280:GLCURSOR (X*30-24,R):COLOR (1+2*(X>5))*C
290:V$=STR$ V:IF LEN V$<2LET V$=" "+V$
300:LPRINT V$;
310:V=V+1
320:NEXT X
330:IF V<=ETHEN 260
340:COLOR 0
350:FOR X=1TO 8
360:LINE (X*30-27,R-6)-(X*30-27,18)
370:NEXT X
380:FOR X=18TO R-6STEP -24
390:LINE (3,X)-(213,X)
400:NEXT X
410:TEXT :LF 4