30:T=TIME :Y=2000:M=INT (T/1E4):T=T-M*1E4:D=INT (T/1E2)
40:L=-50
50:WAIT 0
60:CLS :PRINT "Year (";STR$ Y;") ";:INPUT Y
70:CLS :PRINT "Month (";STR$ M;") ";:INPUT M
80:CLS :PRINT "Day (";STR$ D;") ";:INPUT D
90:CLS :WAIT
110:J=INT (365.2422*Y+30.44*(M-1)+D+1)
120:N=M-2+12*(M<3)
130:Z=Y-(M<3)
140:E=INT (Z/100)
150:Z=Z-100*E
160:W=INT (2.61*N-.2)+D+Z+INT (Z/4)+INT (E/4)-2*E
170:W=W-7*INT (W/7)
180:X=J-7*INT (J/7)
190:J=J-X+W-7*(X<W)+1721061
210:P=(J+4.867)/29.53058
220:P=2*(P-INT P)-1
230:N=ABS P
240:Q=INT (N*100+.5)
250:CLS :PRINT "Moon lit about";Q;"%"
260:Z$="full":IF P<0LET Z$="new"
270:CLS :PRINT "Headed for a ";Z$;" moon."
290:IF PEEK &A000<>&C0END
300:WAIT 0:P$="Y":PRINT "Print output (Y/N) ";:INPUT P$
310:IF P$<>"Y"END
320:"MPRINT"CLS :PRINT "Latitude (";STR$ L;") ";:INPUT L
330:IF L<-90LET L=-90
340:IF L>90LET L=90
360:CLS :PRINT "Printing...":WAIT
380:M$=STR$ M:IF M<10LET M$="0"+M$
390:D$=STR$ D:IF D<10LET D$="0"+D$
400:TEXT :CSIZE 3:LPRINT STR$ Y;"-";M$;"-";D$
410:GRAPH :GLCURSOR (216/2,-216/2+15):SORGN :R=108:DEGREE
420:C=9:FOR A=0TO 360STEP 6
430:LINE -(R*SIN (A),R*COS (A)),C
440:C=0:NEXT A
450:V=N*2:C0=9:C1=0
460:IF P>=0LET V=2-V:C0=0:C1=9
470:FOR S=1TO 2:C=9
480:FOR I=-RTO RSTEP 8
490:XO=I*COS (-L):YO=I*SIN (-L)
500:W=√(R*R-I*I)
510:XN=W*SIN (L):YN=W*COS (L)
520:X=XO-XN+V*XN:Y=YO-YN+V*YN
530:IF S=1LINE -(X,Y),C:C=0
540:IF S=2GLCURSOR (XO-XN,YO-YN):LINE -(X,Y),C0:LINE -(XO+XN,YO+YN),C1
550:NEXT I:NEXT S
560:GLCURSOR (-216/2,-216/2-25):SORGN
710:TEXT :CSIZE 2:LPRINT "Moon is lit about"
720:LPRINT STR$ Q;"% and headed"
730:LPRINT "for a ";Z$;" moon."
740:LF 3:END