10:REM Monthly Calendar
   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