5 'Solar System
6 'Graeme Watt Porteous 7 'Amstrad Action December 1988 10 DATA 1,114.7122,102.972,0.016773,1.000018,0,0 20 DATA 0.24085,209.6643,77.434,0.205629,0.387099,48.350,7.0059 30 DATA 0.61519,67.1413,131.70,0.006772,0.723326,76.723,3.3947 40 DATA 1.8807,11.8733,335.942,0.093298,1.523638,49.604,1.8509 50 DATA 11.861,300.3429,15.662,0.048058,5.20248,100.467,1.3047 60 DATA 29.57,227.2512,93.444,0.050916,9.56329,113.713,2.4846 70 DATA 84.746,249.2488,177.048,0.047285,19.2937,74.056,0.7746 80 DATA 166.57,272.2648,357.07,0.006851,30.2743,131.8,1.7693 90 DATA 249.98,217.4574,224.499,0.252786,39.6823,110.421,17.1313 100 PEN 1:INK 0,0:BORDER 0,0:DIM D(9,13) 110 FOR H=1 TO 9:FOR L=1 TO 7:READ C:D(H,L)=C:NEXT L:NEXT H 120 MODE 1:LOCATE 11,2:PRINT"PLANETARY POSITIONS":GOSUB 2100 130 PRINT:PRINT:INPUT"YEAR ";Y:Y$=STR$(Y):Y$=MID$(Y$,2,LEN(Y$)) 140 INPUT"MONTH ";M:WHILE M<1 OR M>12:GOTO 140:WEND:MN=M:MN$=STR$(MN):IF LEN(MN$)=2 THEN MN$="0"+MID$(MN$,2,1) ELSE MN$=MID$(MN$,2,2) 150 INPUT"DAY ";DA:WHILE DA<1 OR DA>31:GOTO 150:WEND:DA$=STR$(DA):IF LEN(DA$)=2 THEN DA$="0"+MID$(DA$,2,1) ELSE DA$=MID$(DA$,2,2) 160 INPUT"HOUR ";HR:WHILE HR<0 OR HR>23:GOTO 160:WEND:HOUR=HR*(1/24):HR$=STR$(HR):IF LEN(HR$)=2 THEN HR$="0"+MID$(HR$,2,1) ELSE HR$=MID$(HR$,2,2) 170 INPUT"MINUTE";MI:WHILE MI<0 OR MI>59:GOTO 170:WEND:MINUTE=MI*(1/1440):MI$=STR$(MI):IF LEN(MI$)=2 THEN MI$="0"+MID$(MI$,2,1) ELSE MI$=MID$(MI$,2,2) 180 IF M=1 OR M=2 THEN GOSUB 1000 190 A=INT(Y/100):B=2-A+INT(A/4):C=INT(365.25*Y):D=INT(30.6001*(M+1))+B+C+DA+HOUR+MINUTE-725085.75 200 MODE 1:DEG 210 LOCATE 9,1:PRINT"MERCURY/VENUS/EARTH/MARS" 220 LOCATE 1,4:PRINT"DATE:";DA$;"/";MN$;"/";Y$:LOCATE 1,6:PRINT"TIME:";HR$;"h ";MI$;"m" 230 ORIGIN 435,160:FOR AN=1 TO 360 STEP 12:PLOT 2*COS(AN),2*SIN(AN),1:NEXT 240 INK 2,10:FOR AN=1 TO 50:PLOT 195+AN,0:NEXT AN 250 FOR P=1 TO 9:GOSUB 700:NEXT P 260 FOR P=2 TO 9 270 T=SIN(D(P,8)-D(P,6))*SIN(D(P,7)):D(P,11)=ATN(T/SQR(-T*T+1)) 280 Y=SIN(D(P,8)-D(P,6))*COS(D(P,7)) 290 X=COS(D(P,8)-D(P,6)) 300 F=ATN(Y/X):GOSUB 1010 310 D(P,12)=F+D(P,6):D(P,13)=D(P,10)*COS(D(P,11)) 320 NEXT P 330 FOR P=2 TO 3 340 A=ATN((D(P,13)*SIN(D(1,8)-D(P,12)))/(D(1,10)-D(P,13)*COS(D(1,8)-D(P,12)))) 350 L=180+D(1,8)+A:IF L<0 THEN L=L+360 360 IF L>360 THEN L=L-360 370 B=ATN((D(P,13)*TAN(D(P,11))*SIN(L-D(P,12)))/(D(1,10)*SIN(D(P,12)-D(1,8)))):GOSUB 1210 380 PEN 1:IF P=2 THEN LOCATE 1,9:PRINT"MERCURY":L=10:GOSUB 650 390 PEN 1:IF P=3 THEN LOCATE 1,13:PRINT"VENUS":L=14:GOSUB 650 400 NEXT P 410 P=4:GOSUB 670:GOSUB 1210 420 PEN 1:LOCATE 1,17:PRINT"MARS":L=18:GOSUB 650 430 S=100 440 FOR P=1 TO 4:GOSUB 1500:GOSUB 800:NEXT P 450 PRINT CHR$(7) 460 A$=INKEY$:IF A$<>"S" AND A$<>"s" AND A$<>"C" AND A$<>"c" THEN GOTO 460 470 IF A$="S" OR A$="s" THEN ùSCREENSWAP,1,2 480 MODE 1:DEG:ORIGIN 380,160:PEN 1:LOCATE 1,1:PRINT"EARTH/JUPITER/SATURN":LOCATE 1,2:PRINT"URANUS/NEPTUNE/PLUTO":FOR AN=1 TO 360 STEP 36:PLOT 1*COS(AN),1*SIN(AN),1:NEXT 490 FOR AN=1 TO 360 STEP 36:PLOT 1*COS(AN),1*SIN(AN),1:NEXT 500 FOR AN=1 TO 25:PLOT 250+AN,0:NEXT AN 510 PEN 1:P=5:GOSUB 670:GOSUB 1210:LOCATE 1,5:PRINT"JUPITER":L=6:GOSUB 650 520 PEN 1:P=6:GOSUB 670:GOSUB 1210:LOCATE 1,9:PRINT"SATURN":L=10:GOSUB 650 530 PEN 1:P=7:GOSUB 670:GOSUB 1210:LOCATE 1,13:PRINT"URANUS":L=14:GOSUB 650 540 PEN 1:P=8:GOSUB 670:GOSUB 1210:LOCATE 1,17:PRINT"NEPTUNE":L=18:GOSUB 650 550 PEN 1:P=9:GOSUB 670:GOSUB 1210:LOCATE 1,21:PRINT"PLUTO":L=22:GOSUB 650 560 S=5:P=1:K=28 570 GOSUB 800 580 S=5 590 FOR P=5 TO 9 600 GOSUB 1550:GOSUB 800 610 NEXT P:PRINT CHR$(7) 620 A$=INKEY$:IF A$="S" OR A$="s" THEN ùSCREENSWAP,1,2:GOTO 620 630 IF A$="e" OR A$="E" THEN END 640 GOTO 620 650 LOCATE 1,L:PEN 2:PRINT"R.A. ";B$;"h ";B1$;"m":LOCATE 1,L+1:PEN 3:PRINT"DEC. ";SD$;C$;"d ";C1$;"m" 660 RETURN 670 L=ATN(D(1,10)*SIN(D(P,12)-D(1,8))/(D(P,13)-D(1,10)*COS(D(P,12)-D(1,8))))+D(P,12):IF L>360THEN L=L-360 680 IF L<0 THEN L=L+360 690 B=ATN(D(P,13)*TAN(D(P,11))*SIN(L-D(P,12))/(D(1,10)*SIN(D(P,12)-D(1,8)))):RETURN 700 N=(360*D)/(365.2422*D(P,1)) 710 WHILE N>360:N=N-360:WEND 720 M=N+D(P,2)-D(P,3):IF M<0 THEN M=M+360 730 RAD:M=M*PI/180:E=M:DL=1 740 WHILE DL>0.000001:J=E-(D(P,4)*SIN(E))-M 750 DE=J/(1-D(P,4)*COS(E)):E=E-DE:DL=ABS(J) 760 WEND:E=E+DE 770 X=SQR((1+D(P,4))/(1-D(P,4))):X=X*TAN(E/2):V=2*ATN(X):V=V*180/PI:DEG:D(P,9)=V:L=V+D(P,3):D(P,8)=L 780 R=D(P,5)*(1-D(P,4)^2)/(1+D(P,4)*COS(D(P,9))):D(P,10)=R 790 RETURN 800 FOR AN=1 TO 360 STEP K 810 X=D(P,5)*(COS(AN)-D(P,4)):Y=D(P,5)*SIN(AN)*SQR(1-D(P,4)^2) 820 X1=X*COS(D(P,3))-Y*SIN(D(P,3)):Y1=X*SIN(D(P,3))+Y*COS(D(P,3)) 830 PLOT X1*S,Y1*S,2 840 NEXT AN 850 X2=D(P,5)*(COS(D(P,9))-D(P,4))*S:Y2=D(P,5)*SIN(D(P,9))*SQR(1-D(P,4)^2)*S 860 X3=X2*COS(D(P,3))-Y2*SIN(D(P,3)):Y3=X2*SIN(D(P,3))+Y2*COS(D(P,3)) 870 FOR AN=1 TO 360 STEP 12:MOVE X3,Y3 880 DRAW X3+2*COS(AN),Y3+2*SIN(AN),3 890 NEXT AN:RETURN 1000 Y=Y-1:M=M+12:RETURN 1010 IF SGN(X)=1 AND SGN(Y)=1 THEN Q=1 1020 IF SGN(X)=-1 AND SGN(Y)=1 THEN Q=2 1030 IF SGN(X)=-1 AND SGN(Y)=-1 THEN Q=3 1040 IF SGN(X)=1 AND SGN(Y)=-1 THEN Q=4 1050 IF F<0 THEN F=F+360 1060 GOSUB 1160 1070 IF Q1=Q THEN RETURN 1080 F=F+180 1090 GOSUB 1160 1100 IF Q1=Q THEN RETURN 1110 F=F-360 1120 GOSUB 1160 1130 IF Q1=Q THEN RETURN 1140 F=F-720 1150 RETURN 1160 IF F>=0 AND F<=90 THEN Q1=1 1170 IF F>90 AND F<=180 THEN Q1=2 1180 IF F>180 AND F<=270 THEN Q1=3 1190 IF F>270 AND F<=360 THEN Q1=4 1200 RETURN 1210 E=23.441884:D=SIN(B)*COS(E)+COS(B)*SIN(E)*SIN(L):D=ATN(D/SQR(-D*D+1)):Y=SIN(L)*COS(E)-TAN(B)*SIN(E):X=COS(L) 1220 F=ATN(Y/X):GOSUB 1010:A=F/15 1230 IF SGN(A)=-1 THEN GOSUB 1300 1240 IF SGN(A)>=0 THEN GOSUB 1310 1250 GOSUB 1340 1260 IF SGN(D)=-1 THEN GOSUB 1320:SD$="-" 1270 IF SGN(D)>=0 THEN GOSUB 1330:SD$="+" 1280 GOSUB 1400 1290 RETURN 1300 B=ABS(FIX(A)):B1=INT((ABS(A)-ABS(B))*60):RETURN 1310 B=INT(A):B1=INT((A-B)*60):RETURN 1320 C=ABS(FIX(D)):C1=INT((ABS(D)-ABS(C))*60):RETURN 1330 C=INT(D):C1=INT((D-C)*60):RETURN 1340 B$=STR$(B):B1$=STR$(B1) 1350 IF LEN(B$)=2 THEN B$=MID$(B$,2,1):B$="0"+B$ 1360 IF LEN(B$)=3 THEN B$=MID$(B$,2,2) 1370 IF LEN(B1$)=2 THEN B1$=MID$(B1$,2,1):B1$="0"+B1$ 1380 IF LEN (B1$)=3 THEN B1$=MID$(B1$,2,2) 1390 RETURN 1400 C$=STR$(C):C1$=STR$(C1) 1410 IF LEN(C$)=2 THEN C$=MID$(C$,2,1):C$="0"+C$ 1420 IF LEN(C$)=3 THEN C$=MID$(C$,2,2) 1430 IF LEN(C1$)=2 THEN C1$=MID$(C1$,2,1):C1$="0"+C1$ 1440 IF LEN(C1$)=3 THEN C1$=MID$(C1$,2,2) 1450 RETURN 1500 IF P=1 THEN K=1 ELSE IF P=2 THEN K=3 ELSE IF P=3 THEN K=1.5 ELSE IF P=4 THEN K=0.7 1540 RETURN 1550 IF P=5 THEN K=3.5 ELSE IF P=6 THEN K=2 ELSE IF P=7 THEN K=1.1 ELSE IF P=8 THEN K=0.7 ELSE IF P=9 THEN K=0.6 1600 RETURN 2100 PRINT:PRINT:PRINT"Enter year(e.g.1978)":PRINT " month(1-12)":PRINT" day(1-31)":PRINT" hour(0-23)":PRINT" minute(0-59)":PRINT:PRINT:RETURN |