10 ON ERROR:ON ERROR OFF:MODE 26:PRINT REPORT$:END:;" at line ";ERL'';"r1%=";r1%;" r2%=";r2%;" p(p,5)=";p(p,5);" r3%=";r3%;" r4%=";r4%:END
20 MODE 27:r1%=0:r2%=0:r3%=0:r4%=0
30 MODE 26:OFF
40
50 solarplnum%=10
60
70
80 eartsatnum%=1
90 marssatnum%=2
100 jupisatnum%=22:
110 satusatnum%=31:
120 uransatnum%=25:
130 neptsatnum%=8
140 plutsatnum%=1
150
160 DIM p(solarplnum%,6),p$(solarplnum%)
170 DIM s(2,6),s$(2)
180 DIM eartsat(1,6),eartsat$(1)
190 DIM marssat(2,6),marssat$(2)
200 DIM jupisat(jupisatnum%,6),jupisat$(jupisatnum%)
210 DIM satusat(satusatnum%,6),satusat$(satusatnum%)
220 DIM uransat(uransatnum%,6),uransat$(uransatnum%)
230 DIM neptsat(neptsatnum%,6),neptsat$(neptsatnum%)
240 DIM plutsat(1,6),plutsat$(1)
250 DIM ll(2,2),mm(2),nn(2),oo(2,2),pp(2),qq(2)
260 orgx%=640
270 orgy%=480
280 orgxdif%=-640
290 orgydif%=-480
300 planetnames%=1
310 orbitdraw%=1
320 RESTORE
330 COLOUR 1,0,255,0
340 COLOUR 2,255,255,0
350 COLOUR 3,80,80,80
360
370 FOR n=1 TO solarplnum%
380 READ p$(n),p(n,1),p(n,2),sss,p(n,4),p(n,5),p(n,6)
390 p(n,3)=0
400 NEXT n
410
420 FOR n=1 TO eartsatnum%
430 READ eartsat$(n),eartsat(n,1),eartsat(n,2),sss,eartsat(n,4),eartsat(n,5),eartsat(n,6)
440 eartsat(n,3)=0
450 NEXT n
460
470 FOR n=1 TO marssatnum%
480 READ marssat$(n),marssat(n,1),marssat(n,2),sss,marssat(n,4),marssat(n,5),marssat(n,6)
490 marssat(n,3)=0
500 marssat(n,1)=marssat(n,1)+p(4,4)
510 NEXT n
520
530 FOR n=1 TO jupisatnum%
540 READ jupisat$(n),jupisat(n,1),jupisat(n,2),sss,jupisat(n,4),jupisat(n,5),jupisat(n,6)
550 jupisat(n,3)=0
560 jupisat(n,1)=jupisat(n,1)+p(5,4)
570 NEXT n
580
590 FOR n=1 TO satusatnum%
600 READ satusat$(n),satusat(n,1),satusat(n,2),sss,satusat(n,4),satusat(n,5),satusat(n,6)
610 satusat(n,3)=0
620 satusat(n,1)=satusat(n,1)+p(6,4)
630 NEXT n
640
650 FOR n=1 TO uransatnum%
660 READ uransat$(n),uransat(n,1),uransat(n,2),sss,uransat(n,4),uransat(n,5),uransat(n,6)
670 uransat(n,3)=0
680 uransat(n,1)=uransat(n,1)+p(7,4)
690 NEXT n
700
710 FOR n=1 TO neptsatnum%
720 READ neptsat$(n),neptsat(n,1),neptsat(n,2),sss,neptsat(n,4),neptsat(n,5),neptsat(n,6)
730 neptsat(n,3)=0
740 neptsat(n,1)=neptsat(n,1)+p(8,4)
750 NEXT n
760
770
780
790
800
810
820 S1=1:S2=2
830 ORIGIN orgx%,orgy%
840 z=1/13
850 t=100
860 e=0
870 i=1
871 frames%=0
872 timer%=TIME
880 REPEAT
881 frames%=frames%+1
890 VDU 5
900 WAIT:SYS 6,112,S1:SYS 6,113,S2:CLS:SWAP S1,S2
910 GCOL 2
920 CIRCLEFILL 0,0,0.7*z
930 FOR p=1 TO 10
940 p(p,3)=p(p,3)+(t/p(p,2))
950
960 r1% = p(p,1)*z
970 r2% = p(p,1)*z*COSRADi
980
990 IF orbitdraw%=1 THEN
1000 IF r1%<1600 OR r2%<1600 THEN
1010
1020 GCOL 3
1030 IF r1%=r2% THEN
1040 CIRCLE 0,0,r1%
1050 ELSE
1060 IF r2%<>0 THEN
1070 IF r1%<>0 AND r2%<>0 THEN
1080 ELLIPSE 0,0,r1%,r2%,((p(p,5)*PI)/180)
1090 ENDIF
1100 ENDIF
1110 ENDIF
1120 ENDIF
1130 ENDIF
1140
1150
1160
1170
1180 ll(1,1)=COSRADp(p,5)
1190 ll(1,2)=-SINRADp(p,5)
1200 ll(2,1)=SINRADp(p,5)
1210 ll(2,2)=COSRADp(p,5)
1220
1230
1240 mm(1)=SINRADp(p,3)*r1%
1250 mm(2)=COSRADp(p,3)*r2%
1260
1270
1280 nn()=ll().mm()
1290
1300 IFplanetnames%=1 THEN
1310 IF z>0.009 THEN
1320 IF z>0.2 THEN
1330 GCOL 1
1340 MOVE nn(1)+5,nn(2)+5
1350 PRINT p$(p)
1360 ELSE
1370 IF p>4 THEN
1380 GCOL 1
1390 MOVE nn(1)+5,nn(2)+5
1400 PRINT p$(p)
1410 ENDIF
1420 ENDIF
1430 ENDIF
1440 ENDIF
1450 GCOL 2
1460 opx=nn(1)+orgx%
1470 opy=nn(2)+orgy%
1480 IF opx>=0 AND opx<=1280 AND opy>=0 AND opy<=1024 THEN
1490 MOVE SINRADp(p,3)*r1%,COSRADp(p,3)*r2%
1500 GCOL 0
1510 CIRCLE nn(1),nn(2),(p(p,4)*z)+2
1520 GCOL 2
1530 CIRCLE FILL nn(1),nn(2),p(p,4)*z:
1540
1550
1560 ELSE
1570 IF opx<0 AND opy<0 THEN
1580 GCOL 2
1590 MOVE 0+orgxdif%,0+orgydif%
1600 DRAW 20+orgxdif%,20+orgydif%
1610 MOVE 25+orgxdif%,25+orgydif%
1620 PRINT p$(p)
1630 ENDIF
1640 :
1650 IF opx>1280 AND opy>960 THEN
1660 GCOL 2
1670 MOVE 1280+orgxdif%,960+orgydif%
1680 DRAW 1260+orgxdif%,940+orgydif%
1690 MOVE (1260-(LEN(p$(p))*16))+orgxdif%,919+orgydif%
1700 PRINT p$(p)
1710 ENDIF
1720 :
1730 IF opx>0 AND opx<1280 AND opy<0 THEN
1740 GCOL 2
1750 MOVE opx+orgxdif%,0+orgydif%
1760 DRAW opx+orgxdif%,10+orgydif%
1770 MOVE opx+orgxdif%,15+orgydif%
1780 PRINT p$(p)
1790 ENDIF
1800 :
1810 IF opx>1280 AND opy>0 AND opy<960 THEN
1820 GCOL 2
1830 MOVE 1280+orgxdif%,opy+orgydif%
1840 DRAW 1270+orgxdif%,opy+orgydif%
1850 MOVE (1265-(LEN(p$(p))*16))+orgxdif%,(opy+8)+orgydif%
1860 PRINT p$(p)
1870 ENDIF
1880 :
1890 IF opx>0 AND opx<1280 AND opy>960 THEN
1900 GCOL 2
1910 MOVE opx+orgxdif%,960+orgydif%
1920 DRAW opx+orgxdif%,950+orgydif%
1930 MOVE opx+orgxdif%,945+orgydif%
1940 PRINT p$(p)
1950 ENDIF
1960 :
1970 IF opx<0 AND opy>0 AND opy<960 THEN
1980 GCOL 2
1990 MOVE 0+orgxdif%,opy+orgydif%
2000 DRAW 10+orgxdif%,opy+orgydif%
2010 MOVE 15+orgxdif%,(opy+orgydif%)+8
2020 PRINT p$(p)
2030 ENDIF
2040 :
2050 IF opx>1280 AND opy<0 THEN
2060 GCOL 2
2070 MOVE 1280+orgxdif%,0+orgydif%
2080 DRAW 1270+orgxdif%,10+orgydif%
2090 MOVE (1260-(LEN(p$(p))*16))+orgxdif%,15+orgydif%
2100 PRINT p$(p)
2110 ENDIF
2120 :
2130 IF opx<0 AND opy>960 THEN
2140 GCOL 2
2150 MOVE 0+orgxdif%,960+orgydif%
2160 DRAW 10+orgxdif%,950+orgydif%
2170 MOVE 15+orgxdif%,945+orgydif%
2180 PRINT p$(p)
2190 ENDIF
2200 ENDIF
2210 NEXT p
2220 f=360/(t/365)
2230 e=e+(1/f)
2240 VDU 4
2250 @%="+F8.2"
2260 PRINT TAB(0,0);e;" years"
2261 PRINTTAB(0,1);"FPS:";(frames%/(TIME-timer%))*100
2270 IF INKEY(-58) THEN z=z*1.05 :
2280 IF INKEY(-42) THEN z=z/1.05 :
2290 IF INKEY(-122) THEN t=t*1.05:
2300 IF INKEY(-26) THEN t=t/1.05:
2310 IF INKEY(-80) THEN i=i-2 :
2320 IF INKEY(-105) THEN i=i+2 :
2330 IF INKEY(-98) THEN orgx%=orgx%+25:orgxdif%=orgxdif%-25 :
2340 IF INKEY(-67) THEN orgx%=orgx%-25:orgxdif%=orgxdif%+25 :
2350 IF INKEY(-88) THEN orgy%=orgy%-25:orgydif%=orgydif%+25 :
2360 IF INKEY(-104) THEN orgy%=orgy%+25:orgydif%=orgydif%-25 :
2370 IF INKEY(-69) THEN PROCmercury :
2380 IF INKEY(-100) THEN PROCvenus :
2390 IF INKEY(-35) THEN PROCearth :
2400 IF INKEY(-102) THEN PROCmars :
2410 IF INKEY(-70) THEN PROCjupiter :
2420 IF INKEY(-82) THEN PROCsaturn :
2430 IF INKEY(-54) THEN PROCuranus :
2440 IF INKEY(-86) THEN PROCneptune :
2450 IF INKEY(-56) THEN PROCpluto :
2460 IF INKEY(-36) THEN SYS 6,112,S1:SYS 6,15:INPUTTAB(0,1)"Time : "t:IFt=0:t=100 :
2470 IF INKEY(-99) THEN
2480 CASE planetnames% OF
2490 WHEN 1
2500 planetnames%=0
2510 WHEN 0
2520 planetnames%=1
2530 ENDCASE
2540 ENDIF
2550 IF INKEY(-55) THEN
2560 CASE orbitdraw% OF
2570 WHEN 1
2580 orbitdraw%=0
2590 WHEN 0
2600 orbitdraw%=1
2610 ENDCASE
2620 ENDIF
2630
2640 ORIGIN orgx%,orgy%
2650 IF i<0 THEN i=0
2660 IF i>90 THEN i=90
2670 :
2680 m=(1280/z)
2690 PRINT TAB(0,58);z
2700 PRINT TAB(0,57);t
2710 @%="+F8.1"
2720 PRINT TAB(0,59);m;" million km";
2730 UNTIL 0=1
2740
2750
2760
2770 DATA Mercury, 58.34322, 87.969, 0.38, 0.0049, 7, 0
2780 DATA Venus, 107.71056, 224.701, 0.95, 0.0121, 3.39, 0
2790 DATA Earth, 149.598, 365.256, 1, 0.012756, 0, 0
2800 DATA Mars, 227.38896, 686.980, 0.53, 0.0068, 1.85, 0
2810 DATA Jupiter, 777.9096, 4332.59, 11.2, 0.143, 1.30, 0
2820 DATA Saturn, 1427.16492,10759.20, 9.5, 0.12, 2.49, 0
2830 DATA Uranus, 2872.2816, 30684.9, 4, 0.052, 0.77, 0
2840 DATA Neptune, 4502.8998, 60190.3, 3.8, 0.048, 1.77, 0
2850 DATA Pluto, 5909.121, 90465.0, 0.18, 0.003, 17.2, 0
2860 DATA Planet X, 9800.0000, 219000.0, 0, 0.04, 0, 0
2870
2880
2890
2900
2910
2920 DATA Moon, 0.384400, 27.321661, 0, 0.003476, 23.45, 3.1
2930
2940
2950 DATA Phobos, 0.009270, 0.3189, 0, 0.000023, 1.1, 4.1
2960 DATA Deimos, 0.023400, 1.2624, 0, 0.000013, 1.8, 4.2
2970
2980
2990 DATA Metis, 0.127960, 0.295, 0, 0.000040, 0, 5.1
3000 DATA Adrastea, 0.128980, 0.298, 0, 0.000020, 0, 5.2
3010 DATA Amalthea, 0.181300, 0.498, 0, 0.000175, 0.45, 5.3
3020 DATA Thebe, 0.221900, 0.675, 0, 0.000100, 0.9, 5.4
3030 DATA Io, 0.421600, 1.769, 0, 0.003637, 0.04, 5.5
3040 DATA Europa, 0.670900, 3.551, 0, 0.003130, 0.47, 5.6
3050 DATA Ganymede, 1.070000, 7.155, 0, 0.005268, 0.21, 5.7
3060 DATA Callisto, 1.880000, 16.689, 0, 0.004806, 0.51, 5.8
3070 DATA Leda, 11.094000, 238.7, 0, 0.000010, 26.1, 5.9
3080 DATA Himalia, 11.480000, 250.6, 0, 0.000170, 27.6, 5.10
3090 DATA Lysithea, 11.720000, 259.2, 0, 0.000024, 29.0, 5.11
3100 DATA Elara, 11.737000, 259.7, 0, 0.000080, 24.8, 5.12
3110 DATA Ananke, 21.200000, 631, 0, 0.000020, 147, 5.13
3120 DATA Carme, 22.600000, 692, 0, 0.000030, 164, 5.14
3130 DATA Pasiphae, 23.500000, 735, 0, 0.000036, 145, 5.15
3140 DATA Sinope, 23.700000, 758, 0, 0.000028, 153, 5.16
3150
3160
3170 DATA , 0.100000, 0, 0, 0.000001, 1.30, 5.R1close
3180 DATA , 0.122800, 0, 0, 0.000001, 1.30, 5.R1far
3190 DATA , 0.122800, 0, 0, 0.000001, 1.30, 5.R2close
3200 DATA , 0.129200, 0, 0, 0.000001, 1.30, 5.R2far
3210 DATA , 0.129200, 0, 0, 0.000001, 1.30, 5.R3close
3220 DATA , 0.214200, 0, 0, 0.000001, 1.30, 5.R3far
3230
3240
3250 DATA Pan, 0.133600, 0.570, 0, 0.000020, 0.00, 6.1
3260 DATA Atlas, 0.137670, 0.602, 0, 0.000034, 0.30, 6.2
3270 DATA Prometheus, 0.139350, 0.613, 0, 0.000100, 0.00, 6.3
3280 DATA Pandora, 0.141700, 0.629, 0, 0.000088, 0.10, 6.4
3290 DATA Janus, 0.151470, 0.695, 0, 0.000110, 0.10, 6.5
3300 DATA Epimetheus, 0.151420, 0.694, 0, 0.000190, 0.30, 6.6
3310 DATA Mimas, 0.185540, 0.942, 0, 0.000395, 1.52, 6.7
3320 DATA Enceladus, 0.238040, 1.370, 0, 0.000495, 0.02, 6.8
3330 DATA Tethys, 0.294670, 1.888, 0, 0.001046, 1.86, 6.9
3340 DATA Telesto, 0.294670, 1.888, 0, 0.000025, 2.00, 6.10
3350 DATA Calypso, 0.294670, 1.888, 0, 0.000016, 2.00, 6.11
3360 DATA Dione, 0.377420, 2.737, 0, 0.001120, 0.02, 6.12
3370 DATA Helene, 0.377420, 2.737, 0, 0.000035, 0.20, 6.13
3380 DATA Rhea, 0.527040, 4.518, 0, 0.001528, 0.35, 6.14
3390 DATA Titan, 1.221860, 15.945, 0, 0.005150, 0.33, 6.15
3400 DATA Hyperion, 1.481100, 21.277, 0, 0.000280, 0.43, 6.16
3410 DATA Iapetus, 3.561300, 79.331, 0, 0.001436, 7.52, 6.17
3420 DATA Phobe, 12.954000, 550.400, 0, 0.000220, 175.00, 6.18
3430
3440
3450 DATA , 0.067000, 0, 0, 0.00001, 2.49, 19:6.R1
3460 DATA , 0.073200, 0, 0, 0.00001, 2.49, 20:6.R2
3470 DATA , 0.087500, 0, 0, 0.00001, 2.49, 21:6.R3
3480 DATA , 0.092200, 0, 0, 0.00001, 2.49, 22:6.R4
3490 DATA , 0.117500, 0, 0, 0.00001, 2.49, 23:6.R5
3500 DATA , 0.119000, 0, 0, 0.00001, 2.49, 24:6.R6
3510 DATA , 0.121000, 0, 0, 0.00001, 2.49, 25:6.R7
3520 DATA , 0.133500, 0, 0, 0.00001, 2.49, 26:6.R8
3530 DATA , 0.136530, 0, 0, 0.00001, 2.49, 27:6.R9
3540 DATA , 0.135200, 0, 0, 0.00001, 2.49, 28:6.R10
3550 DATA , 0.140600, 0, 0, 0.00001, 2.49, 29:6.R11
3560 DATA , 0.170000, 0, 0, 0.00001, 2.49, 30:6.R12
3570 DATA , 0.230000, 0, 0, 0.00001, 2.49, 31:6.R13
3580
3590
3600 DATA Cordelia, 0.049471, 0.330, 0, 0.000026, 0, 7.1
3610 DATA Ophelia, 0.053796, 0.372, 0, 0.000030, 0, 7.2
3620 DATA Bianca, 0.059173, 0.433, 0, 0.000042, 0, 7.3
3630 DATA Cressida, 0.061777, 0.463, 0, 0.000062, 0, 7.4
3640 DATA Desdemona, 0.062676, 0.475, 0, 0.000054, 0, 7.5
3650 DATA Juliet, 0.064352, 0.493, 0, 0.000084, 0, 7.6
3660 DATA Portia, 0.066085, 0.513, 0, 0.000108, 0, 7.7
3670 DATA Rosalind, 0.069941, 0.558, 0, 0.000054, 0, 7.8
3680 DATA Belinda, 0.075258, 0.622, 0, 0.000066, 0, 7.9
3690 DATA Puck, 0.086000, 0.762, 0, 0.000154, 0, 7.10
3700 DATA Miranda, 0.129400, 1.414, 0, 0.000472, 0, 7.11
3710 DATA Ariel, 0.191000, 2.520, 0, 0.001158, 0, 7.12
3720 DATA Umbriel, 0.266300, 4.144, 0, 0.001169, 0, 7.13
3730 DATA Titania, 0.435000, 8.706, 0, 0.001578, 0, 7.14
3740 DATA Oberon, 0.583500, 13.463, 0, 0.001523, 0, 7.15
3750
3760
3770 DATA , 0.041837, 0, 0, 0.00001, 0.06, 16:7.R1
3780 DATA , 0.042234, 0, 0, 0.00001, 0.05, 17:7.R2
3790 DATA , 0.042570, 0, 0, 0.00001, 0.03, 18:7.R3
3800 DATA , 0.044718, 0, 0, 0.00001, 0.01, 19:7.R4
3810 DATA , 0.045661, 0, 0, 0.00001, 0.005, 20:7.R5
3820 DATA , 0.047175, 0, 0, 0.00001, 0.001, 21:7.R6
3830 DATA , 0.047630, 0, 0, 0.00001, 0.11, 22:7.R7
3840 DATA , 0.048320, 0, 0, 0.00001, 0.04, 23:7.R8
3850 DATA , 0.050023, 0, 0, 0.00001, 0.0, 24:7.R9
3860 DATA , 0.051149, 0, 0, 0.00001, 0.005, 25:7.R10
3870
3880
3890 DATA Naiad, 0.048000, 0.296, 0, 0.000054, 0, 8.1
3900 DATA Thalassa, 0.050000, 0.312, 0, 0.000080, 0, 8.2
3910 DATA Despina, 0.052500, 0.333, 0, 0.000180, 0, 8.3
3920 DATA Galatea, 0.062000, 0.429, 0, 0.000150, 0, 8.4
3930 DATA Larissa, 0.073600, 0.554, 0, 0.000192, 0, 8.5
3940 DATA Proteus, 0.117600, 1.121, 0, 0.000416, 4.5, 8.6
3950 DATA Triton, 0.354800, 5.877, 0, 0.002705,159.9, 8.7
3960 DATA Nereid, 5.514000,360.160, 0, 0.000240, 27.2, 8.8
3970
3980
3990 DATA , 0.041900, 0, 0, 0.00001, 1.77, 9:8.R1
4000 DATA , 0.053200, 0, 0, 0.00001, 1.77, 10:8.R2
4010 DATA , 0.055000, 0, 0, 0.00001, 1.77, 11:8.R3
4020 DATA , 0.062000, 0, 0, 0.00001, 1.77, 12:8.R4
4030 DATA , 0.062900, 0, 0, 0.00001, 1.77, 13:8.R5
4040
4050
4060
4070
4080
4090
4100 DEFPROCmercury
4110 ENDPROC
4120
4130 DEFPROCvenus
4140 ENDPROC
4150
4160 DEFPROCearth
4170 ENDPROC
4180
4190 DEFPROCmars
4200 maxsolar%=0
4210 z=15000
4220 frames%=0
4221 timer%=TIME
4230 REPEAT
4240 frames%=frames%+1
4250 VDU 5
4260 WAIT:SYS 6,112,S1:SYS 6,113,S2:CLS:SWAP S1,S2
4270 GCOL 2
4280 CIRCLEFILL 0,0,p(4,4)*z
4300 FOR p1=1 TO marssatnum%
4310 IF p1<17 THEN
4320 marssat(p1,3)=marssat(p1,3)+(t/marssat(p1,2))
4330 ENDIF
4350 r3% = marssat(p1,1)*z
4360 r4% = marssat(p1,1)*z*COSRADi
4380 IF orbitdraw%=1 THEN
4390 IF r3%<1600 OR r4%<1600 THEN
4400 GCOL 3
4410 IF p1>16 THEN GCOL 2
4420 IF r3%=r4% THEN
4430 CIRCLE 0,0,r3%
4440 ELSE
4450 IF r4%<>0 THEN
4460 IF r3%<>0 AND r4%<>0 THEN
4470 ELLIPSE 0,0,r3%,r4%,((marssat(p1,5)*PI)/180)
4480 ENDIF
4490 ENDIF
4500 ENDIF
4510 ENDIF
4520 ENDIF
4530 ENDIF
4580 oo(1,1)=COSRADmarssat(p1,5)
4590 oo(1,2)=-SINRADmarssat(p1,5)
4600 oo(2,1)=SINRADmarssat(p1,5)
4610 oo(2,2)=COSRADmarssat(p1,5)
4640 pp(1)=SINRADmarssat(p1,3)*r3%
4650 pp(2)=COSRADmarssat(p1,3)*r4%
4680 qq()=oo().pp()
4690 IF planetnames%=1 THEN
4710 GCOL 1
4720 MOVE qq(1)+5,qq(2)+5
4730 PRINT marssat$(p1)
4740 ENDIF
4750 opx1=qq(1)+orgx%
4780 opy1=qq(2)+orgy%
4790 IF opx1>=0 AND opx1<=1280 AND opy1>=0 AND opy1<=1024 AND p1<17 THEN
4810 GCOL 0
4820 CIRCLE qq(1),qq(2),(marssat(p1,4)*z)+2
4830 GCOL 2
4840 CIRCLE FILL qq(1),qq(2),marssat(p1,4)*z
4850 ENDIF
4851 NEXT p1
4880 MOVE 0,0
4900 MOVE p(4,4)*z,0
4910 PLOT &B5,-p(4,4)*z,0
4920 GCOL 0,0
4930 CIRCLE 0,0,p(4,4)*z
4940
4950 f=360/(t/365)
4960 e=e+(1/f)
4970 VDU 4
4980 @%="+F8.2"
4990 PRINT TAB(0,0);e;" years"
4991 PRINTTAB(0,1);"FPS:";(frames%/(TIME-timer%))*100
5000
5010 IF INKEY(-58) THEN z=z*1.05 :
5020 IF INKEY(-42) THEN z=z/1.05 :
5030 IF INKEY(-122) THEN t=t*1.05:
5040 IF INKEY(-26) THEN t=t/1.05:
5050 IF INKEY(-80) THEN i=i-2 :
5060 IF INKEY(-105) THEN i=i+2 :
5070 IF INKEY(-17) THEN maxsolar%=1:i=1:z=1/13:
5080 IF INKEY(-69) THEN PROCmercury :
5090 IF INKEY(-100) THEN PROCvenus :
5100 IF INKEY(-35) THEN PROCearth :
5110 IF INKEY(-102) THEN PROCmars :
5120 IF INKEY(-70) THEN PROCjupiter :
5130 IF INKEY(-82) THEN PROCsaturn :
5140 IF INKEY(-54) THEN PROCuranus :
5150 IF INKEY(-86) THEN PROCneptune :
5160 IF INKEY(-56) THEN PROCpluto :
5170 IF INKEY(-99) THEN
5180 CASE planetnames% OF
5190 WHEN 1
5200 planetnames%=0
5210 WHEN 0
5220 planetnames%=1
5230 ENDCASE
5240 ENDIF
5250 IF INKEY(-55) THEN
5260 CASE orbitdraw% OF
5270 WHEN 1
5280 orbitdraw%=0
5290 WHEN 0
5300 orbitdraw%=1
5310 ENDCASE
5320 ENDIF
5330 IF i<0 THEN i=0
5340 IF i>90 THEN i=90
5350
5360 m=(1280/z)
5370 PRINT TAB(0,58);z
5380 PRINT TAB(0,57);t
5390 @%="+F8.1"
5400 PRINT TAB(0,59);m;" million km";
5410
5420 UNTIL maxsolar%=1
5430 ENDPROC
5440
5450 DEFPROCjupiter
5460 maxsolar%=0
5470 z=20
5480
5490 REPEAT
5500
5510 VDU 5
5520 WAIT:SYS 6,112,S1:SYS 6,113,S2:CLS:SWAP S1,S2
5530 GCOL 2
5540 CIRCLEFILL 0,0,p(5,4)*z
5550
5560 FOR p1=1 TO jupisatnum%
5570 IF p1<17 THEN
5580 jupisat(p1,3)=jupisat(p1,3)+(t/jupisat(p1,2))
5590 ENDIF
5600
5610 r3% = jupisat(p1,1)*z
5620 r4% = jupisat(p1,1)*z*COSRADi
5630
5640 IF orbitdraw%=1 THEN
5650 IF r3%<1600 OR r4%<1600 THEN
5660 GCOL 3
5670 IF p1>16 THEN GCOL 2
5680 IF r3%=r4% THEN
5690 CIRCLE 0,0,r3%
5700 ELSE
5710 IF r4%<>0 THEN
5720 IF r3%<>0 AND r4%<>0 THEN
5730 ELLIPSE 0,0,r3%,r4%,((jupisat(p1,5)*PI)/180)
5740 ENDIF
5750 ENDIF
5760 ENDIF
5770 ENDIF
5780 ENDIF
5790
5800
5810
5820
5830 oo(1,1)=COSRADjupisat(p1,5)
5840 oo(1,2)=-SINRADjupisat(p1,5)
5850 oo(2,1)=SINRADjupisat(p1,5)
5860 oo(2,2)=COSRADjupisat(p1,5)
5870
5880
5890 pp(1)=SINRADjupisat(p1,3)*r3%
5900 pp(2)=COSRADjupisat(p1,3)*r4%
5910
5920
5930 qq()=oo().pp()
5940
5950 IF planetnames%=1 THEN
5960 GCOL 1
5970 MOVE qq(1)+5,qq(2)+5
5980 PRINT jupisat$(p1)
5990 ENDIF
6000
6010 GCOL 2
6020 opx1=qq(1)+orgx%
6030 opy1=qq(2)+orgy%
6040
6050 IF opx1>=0 AND opx1<=1280 AND opy1>=0 AND opy1<=1024 AND p1<17 THEN
6060 GCOL 0
6070 CIRCLE qq(1),qq(2),(jupisat(p1,4)*z)+2
6080 GCOL 2
6090 CIRCLE FILL qq(1),qq(2),jupisat(p1,4)*z
6100 ENDIF
6110
6120 NEXT p1
6130
6140 MOVE 0,0
6150 MOVE p(5,4)*z,0
6160 PLOT &B5,-p(5,4)*z,0
6170 GCOL 0,0
6180 CIRCLE 0,0,p(5,4)*z
6190
6200 f=360/(t/365)
6210 e=e+(1/f)
6220 VDU 4
6230 @%="+F8.2"
6240 PRINT TAB(0,0);e;" years"
6250
6260 IF INKEY(-58) THEN z=z*1.05 :
6270 IF INKEY(-42) THEN z=z/1.05 :
6280 IF INKEY(-122) THEN t=t*1.05:
6290 IF INKEY(-26) THEN t=t/1.05:
6300 IF INKEY(-80) THEN i=i-2 :
6310 IF INKEY(-105) THEN i=i+2 :
6320 IF INKEY(-17) THEN maxsolar%=1:i=1:z=1/13:
6330 IF INKEY(-49) THEN z=1328 :
6340 IF INKEY(-50) THEN z=229 :
6350 IF INKEY(-18) THEN z=39 :
6360 IF INKEY(-19) THEN z=20 :
6370 IF INKEY(-69) THEN PROCmercury :
6380 IF INKEY(-100) THEN PROCvenus :
6390 IF INKEY(-35) THEN PROCearth :
6400 IF INKEY(-102) THEN PROCmars :
6410 IF INKEY(-70) THEN PROCjupiter :
6420 IF INKEY(-82) THEN PROCsaturn :
6430 IF INKEY(-54) THEN PROCuranus :
6440 IF INKEY(-86) THEN PROCneptune :
6450 IF INKEY(-56) THEN PROCpluto :
6460 IF INKEY(-99) THEN
6470 CASE planetnames% OF
6480 WHEN 1
6490 planetnames%=0
6500 WHEN 0
6510 planetnames%=1
6520 ENDCASE
6530 ENDIF
6540 IF INKEY(-55) THEN
6550 CASE orbitdraw% OF
6560 WHEN 1
6570 orbitdraw%=0
6580 WHEN 0
6590 orbitdraw%=1
6600 ENDCASE
6610 ENDIF
6620 IF i<0 THEN i=0
6630 IF i>90 THEN i=90
6640
6650 m=(1280/z)
6660 PRINT TAB(0,58);z
6670 PRINT TAB(0,57);t
6680 @%="+F8.1"
6690 PRINT TAB(0,59);m;" million km";
6700
6710 UNTIL maxsolar%=1
6720 ENDPROC
6730
6740 DEFPROCsaturn
6750 maxsolar%=0
6760 z=36
6770
6780 REPEAT
6790
6800 VDU 5
6810 WAIT:SYS 6,112,S1:SYS 6,113,S2:CLS:SWAP S1,S2
6820 GCOL 2
6830 CIRCLEFILL 0,0,p(6,4)*z
6840 GCOL 2
6850 CIRCLE 0,0,p(6,4)*z
6860
6870 FOR p1=1 TO satusatnum%
6880 IF p1<19 THEN
6890 satusat(p1,3)=satusat(p1,3)+(t/satusat(p1,2))
6900 ENDIF
6910
6920 r3% = satusat(p1,1)*z
6930 r4% = satusat(p1,1)*z*COSRADi
6940
6950 IF orbitdraw%=1 THEN
6960 IF r3%<1600 OR r4%<1600 THEN
6970 GCOL 3
6980
6990 IF p1>18 THEN GCOL 2
7000 IF p1<>21 AND p1<>24 AND p1<>26 AND p1<>27 THEN
7010 IF r3%=r4% THEN
7020 CIRCLE 0,0,r3%
7030 ELSE
7040 IF r4%<>0 THEN
7050 IF r3%<>0 AND r4%<>0 THEN
7060 ELLIPSE 0,0,r3%,r4%,((satusat(p1,5)*PI)/180)
7070 ENDIF
7080 ENDIF
7090 ENDIF
7100 ENDIF
7110 ENDIF
7120 ENDIF
7130 ENDIF
7140
7150
7160
7170 oo(1,1)=COSRADsatusat(p1,5)
7180 oo(1,2)=-SINRADsatusat(p1,5)
7190 oo(2,1)=SINRADsatusat(p1,5)
7200 oo(2,2)=COSRADsatusat(p1,5)
7210
7220
7230 pp(1)=SINRADsatusat(p1,3)*r3%
7240 pp(2)=COSRADsatusat(p1,3)*r4%
7250
7260
7270 qq()=oo().pp()
7280
7290 IF planetnames%=1 THEN
7300 GCOL 1
7310 MOVE qq(1)+5,qq(2)+5
7320 IF planetnames%=1 THEN PRINT satusat$(p1)
7330 ENDIF
7340
7350 GCOL 2
7360 opx1=qq(1)+orgx%
7370 opy1=qq(2)+orgy%
7380
7390 IF opx1>=0 AND opx1<=1280 AND opy1>=0 AND opy1<=1024 AND p1<17 THEN
7400 GCOL 0
7410 CIRCLE qq(1),qq(2),(satusat(p1,4)*z)+2
7420 GCOL 2
7430 CIRCLE FILL qq(1),qq(2),satusat(p1,4)*z
7440 ENDIF
7450
7460 NEXT p1
7470
7480 MOVE 0,0
7490 MOVE p(6,4)*z,0
7500 PLOT &B5,-p(6,4)*z,0
7510 GCOL 0,0
7520 CIRCLE 0,0,p(6,4)*z
7530
7540 f=360/(t/365)
7550 e=e+(1/f)
7560 VDU 4
7570 @%="+F8.2"
7580 PRINT TAB(0,0);e;" years"
7590
7600 IF INKEY(-58) THEN z=z*1.05 :
7610 IF INKEY(-42) THEN z=z/1.05 :
7620 IF INKEY(-122) THEN t=t*1.05:
7630 IF INKEY(-26) THEN t=t/1.05:
7640 IF INKEY(-80) THEN i=i-2 :
7650 IF INKEY(-105) THEN i=i+2 :
7660 IF INKEY(-17) THEN maxsolar%=1:i=1:z=1/13:
7670 IF INKEY(-49) THEN z=1300 :
7680 IF INKEY(-50) THEN z=717 :
7690 IF INKEY(-18) THEN z=36 :
7700 IF INKEY(-69) THEN PROCmercury :
7710 IF INKEY(-100) THEN PROCvenus :
7720 IF INKEY(-35) THEN PROCearth :
7730 IF INKEY(-102) THEN PROCmars :
7740 IF INKEY(-70) THEN PROCjupiter :
7750 IF INKEY(-82) THEN PROCsaturn :
7760 IF INKEY(-54) THEN PROCuranus :
7770 IF INKEY(-86) THEN PROCneptune :
7780 IF INKEY(-56) THEN PROCpluto :
7790 IF INKEY(-99) THEN
7800 CASE planetnames% OF
7810 WHEN 1
7820 planetnames%=0
7830 WHEN 0
7840 planetnames%=1
7850 ENDCASE
7860 ENDIF
7870 IF INKEY(-55) THEN
7880 CASE orbitdraw% OF
7890 WHEN 1
7900 orbitdraw%=0
7910 WHEN 0
7920 orbitdraw%=1
7930 ENDCASE
7940 ENDIF
7950 IF i<0 THEN i=0
7960 IF i>90 THEN i=90
7970
7980 m=(1280/z)
7990 PRINT TAB(0,58);z
8000 PRINT TAB(0,57);t
8010 @%="+F8.1"
8020 PRINT TAB(0,59);m;" million km";
8030
8040 UNTIL maxsolar%=1
8050 ENDPROC
8060
8070 DEFPROCuranus
8080 maxsolar%=0
8090 z=741
8100
8110 REPEAT
8120
8130 VDU 5
8140 WAIT:SYS 6,112,S1:SYS 6,113,S2:CLS:SWAP S1,S2
8150 GCOL 2
8160 CIRCLEFILL 0,0,p(7,4)*z
8170 GCOL 2
8180 CIRCLE 0,0,p(7,4)*z
8190
8200 FOR p1=1 TO uransatnum%
8210 IF p1<16 THEN
8220 uransat(p1,3)=uransat(p1,3)+(t/uransat(p1,2))
8230 ENDIF
8240
8250 r3% = uransat(p1,1)*z
8260 r4% = uransat(p1,1)*z*COSRADi
8270
8280 IF orbitdraw%=1 THEN
8290 IF r3%<1600 OR r4%<1600 THEN
8300 GCOL 3
8310
8320 IF p1>15 THEN GCOL 2
8330 IF r3%=r4% THEN
8340 CIRCLE 0,0,r3%
8350 ELSE
8360 IF r4%<>0 THEN
8370 IF r3%<>0 AND r4%<>0 THEN
8380 ELLIPSE 0,0,r3%,r4%,((uransat(p1,5)*PI)/180)
8390 ENDIF
8400 ENDIF
8410 ENDIF
8420 ENDIF
8430 ENDIF
8440 ENDIF
8450
8460
8470
8480
8490 oo(1,1)=COSRADuransat(p1,5)
8500 oo(1,2)=-SINRADuransat(p1,5)
8510 oo(2,1)=SINRADuransat(p1,5)
8520 oo(2,2)=COSRADuransat(p1,5)
8530
8540
8550 pp(1)=SINRADuransat(p1,3)*r3%
8560 pp(2)=COSRADuransat(p1,3)*r4%
8570
8580
8590 qq()=oo().pp()
8600
8610 IF planetnames%=1 THEN
8620 GCOL 1
8630 MOVE qq(1)+5,qq(2)+5
8640 IF planetnames%=1 THEN PRINT uransat$(p1)
8650 ENDIF
8660
8670 GCOL 2
8680 opx1=qq(1)+orgx%
8690 opy1=qq(2)+orgy%
8700
8710 IF opx1>=0 AND opx1<=1280 AND opy1>=0 AND opy1<=1024 AND p1<17 THEN
8720 GCOL 0
8730 CIRCLE qq(1),qq(2),(uransat(p1,4)*z)+2
8740 GCOL 2
8750 CIRCLE FILL qq(1),qq(2),uransat(p1,4)*z
8760 ENDIF
8770
8780 NEXT p1
8790
8800 MOVE 0,0
8810 MOVE p(7,4)*z,0
8820 PLOT &B5,-p(7,4)*z,0
8830 GCOL 0,0
8840 CIRCLE 0,0,p(7,4)*z
8850
8860 f=360/(t/365)
8870 e=e+(1/f)
8880 VDU 4
8890 @%="+F8.2"
8900 PRINT TAB(0,0);e;" years"
8910
8920 IF INKEY(-58) THEN z=z*1.05 :
8930 IF INKEY(-42) THEN z=z/1.05 :
8940 IF INKEY(-122) THEN t=t*1.05:
8950 IF INKEY(-26) THEN t=t/1.05:
8960 IF INKEY(-80) THEN i=i-2 :
8970 IF INKEY(-105) THEN i=i+2 :
8980 IF INKEY(-17) THEN maxsolar%=1:i=1:z=1/13:
8990 IF INKEY(-49) THEN z=1300 :
9000 IF INKEY(-50) THEN z=717 :
9010 IF INKEY(-18) THEN z=36 :
9020 IF INKEY(-69) THEN PROCmercury :
9030 IF INKEY(-100) THEN PROCvenus :
9040 IF INKEY(-35) THEN PROCearth :
9050 IF INKEY(-102) THEN PROCmars :
9060 IF INKEY(-70) THEN PROCjupiter :
9070 IF INKEY(-82) THEN PROCsaturn :
9080 IF INKEY(-54) THEN PROCuranus :
9090 IF INKEY(-86) THEN PROCneptune :
9100 IF INKEY(-56) THEN PROCpluto :
9110 IF INKEY(-99) THEN
9120 CASE planetnames% OF
9130 WHEN 1
9140 planetnames%=0
9150 WHEN 0
9160 planetnames%=1
9170 ENDCASE
9180 ENDIF
9190 IF INKEY(-55) THEN
9200 CASE orbitdraw% OF
9210 WHEN 1
9220 orbitdraw%=0
9230 WHEN 0
9240 orbitdraw%=1
9250 ENDCASE
9260 ENDIF
9270 IF i<0 THEN i=0
9280 IF i>90 THEN i=90
9290
9300 m=(1280/z)
9310 PRINT TAB(0,58);z
9320 PRINT TAB(0,57);t
9330 @%="+F8.1"
9340 PRINT TAB(0,59);m;" million km";
9350
9360 UNTIL maxsolar%=1
9370 ENDPROC
9380
9390 DEFPROCneptune
9400 maxsolar%=0
9410 z=82
9420
9430 REPEAT
9440
9450 VDU 5
9460 WAIT:SYS 6,112,S1:SYS 6,113,S2:CLS:SWAP S1,S2
9470 GCOL 2
9480 CIRCLEFILL 0,0,p(8,4)*z
9490 GCOL 0
9500 CIRCLE 0,0,p(8,4)*z
9510
9520 FOR p1=1 TO neptsatnum%
9530 IF p1<9 THEN
9540 neptsat(p1,3)=neptsat(p1,3)+(t/neptsat(p1,2))
9550 ENDIF
9560
9570 r3% = neptsat(p1,1)*z
9580 r4% = neptsat(p1,1)*z*COSRADi
9590
9600 IF orbitdraw%=1 THEN
9610 IF r3%<1600 OR r4%<1600 THEN
9620 GCOL 3
9630
9640 IF p1>8 THEN GCOL 2
9650 IF r3%=r4% THEN
9660 CIRCLE 0,0,r3%
9670 ELSE
9680 IF r4%<>0 THEN
9690 IF r3%<>0 AND r4%<>0 THEN
9700 ELLIPSE 0,0,r3%,r4%,((neptsat(p1,5)*PI)/180)
9710 ENDIF
9720 ENDIF
9730 ENDIF
9740 ENDIF
9750 ENDIF
9760 ENDIF
9770
9780
9790
9800
9810 oo(1,1)=COSRADneptsat(p1,5)
9820 oo(1,2)=-SINRADneptsat(p1,5)
9830 oo(2,1)=SINRADneptsat(p1,5)
9840 oo(2,2)=COSRADneptsat(p1,5)
9850
9860
9870 pp(1)=SINRADneptsat(p1,3)*r3%
9880 pp(2)=COSRADneptsat(p1,3)*r4%
9890
9900
9910 qq()=oo().pp()
9920
9930 IF planetnames%=1 THEN
9940 GCOL 1
9950 MOVE qq(1)+5,qq(2)+5
9960 IF planetnames%=1 THEN PRINT neptsat$(p1)
9970 ENDIF
9980
9990 GCOL 2
10000 opx1=qq(1)+orgx%
10010 opy1=qq(2)+orgy%
10020
10030 IF opx1>=0 AND opx1<=1280 AND opy1>=0 AND opy1<=1024 AND p1<17 THEN
10040 GCOL 0
10050 CIRCLE qq(1),qq(2),(neptsat(p1,4)*z)+2
10060 GCOL 2
10070 CIRCLE FILL qq(1),qq(2),neptsat(p1,4)*z
10080 ENDIF
10090
10100 NEXT p1
10110
10120 MOVE 0,0
10130 MOVE p(8,4)*z,0
10140 PLOT &B5,-p(8,4)*z,0
10150 GCOL 0,0
10160 CIRCLE 0,0,p(8,4)*z
10170
10180 f=360/(t/365)
10190 e=e+(1/f)
10200 VDU 4
10210 @%="+F8.2"
10220 PRINT TAB(0,0);e;" years"
10230
10240 IF INKEY(-58) THEN z=z*1.05 :
10250 IF INKEY(-42) THEN z=z/1.05 :
10260 IF INKEY(-122) THEN t=t*1.05:
10270 IF INKEY(-26) THEN t=t/1.05:
10280 IF INKEY(-80) THEN i=i-2 :
10290 IF INKEY(-105) THEN i=i+2 :
10300 IF INKEY(-17) THEN maxsolar%=1:i=1:z=1/13:
10310 IF INKEY(-49) THEN z=1300 :
10320 IF INKEY(-50) THEN z=717 :
10330 IF INKEY(-18) THEN z=36 :
10340 IF INKEY(-69) THEN PROCmercury :
10350 IF INKEY(-100) THEN PROCvenus :
10360 IF INKEY(-35) THEN PROCearth :
10370 IF INKEY(-102) THEN PROCmars :
10380 IF INKEY(-70) THEN PROCjupiter :
10390 IF INKEY(-82) THEN PROCsaturn :
10400 IF INKEY(-54) THEN PROCuranus :
10410 IF INKEY(-86) THEN PROCneptune :
10420 IF INKEY(-56) THEN PROCpluto :
10430 IF INKEY(-99) THEN
10440 CASE planetnames% OF
10450 WHEN 1
10460 planetnames%=0
10470 WHEN 0
10480 planetnames%=1
10490 ENDCASE
10500 ENDIF
10510 IF INKEY(-55) THEN
10520 CASE orbitdraw% OF
10530 WHEN 1
10540 orbitdraw%=0
10550 WHEN 0
10560 orbitdraw%=1
10570 ENDCASE
10580 ENDIF
10590 IF i<0 THEN i=0
10600 IF i>90 THEN i=90
10610
10620 m=(1280/z)
10630 PRINT TAB(0,58);z
10640 PRINT TAB(0,57);t
10650 @%="+F8.1"
10660 PRINT TAB(0,59);m;" million km";
10670
10680 UNTIL maxsolar%=1
10690 ENDPROC
10700
10710 DEFPROCpluto
10720 ENDPROC
10730 GOTO 10730