REM Reissued 13.1.2003 to replace crashing version on site! REM Jupiter's Moons RGW 1.2.2001 REM This is very much in development so the listing is still a mess REM as its come from a very different starting program originally REM for the spectrum I think. 100 a$="h" flag=0 :REM to get display to halt intitially 110 REM Jupiter's Satellites. 120 MODE7 130 DIM x(5),t$(5),x$(30) 140 t$="1234J":s$="" 150 r1=PI/180 160 m$="JanFebMarAprMayJunJulAugSepOctNovDec" 170 REM Titles / Date input 180 PRINT"Gallilean Satellites of Jupiter" 190 INPUT'"Year: "yr 200 d$=STR$(yr) 210 REPEAT:INPUT'"Month(1-12): "mh :UNTIL mh>0 AND mh<12.1 220 m$=MID$(m$,mh*3-2,3) 230 PRINT'"Month= "m$ 240 d$=d$+" "+m$ 250 REPEAT:INPUT'"Day: "dy:UNTIL dy>.9 AND dy<31.1 260 a$="h" 270 d$=d$+" "+STR$(dy) 280 REM Set up titles 290 MODE8 300 VDU23;8202;0;0;0; 310 COLOUR2 320 PRINTTAB(20)"Gallilean Satellites of Jupiter" 330 COLOUR3 340 PRINTTAB(0,3);d$ 350 COLOUR1:PRINT'"1: Io" 360 COLOUR2:PRINT"2: Europa" 370 COLOUR3:PRINT"3: Ganymede" 380 COLOUR6:PRINT"4: Callisto" 390 REM Calc days/leap yrs 400 m=mh:y=yr 410 IF mh>=3 THEN GOTO 430 420 m=m+12:y=y-1 430 f=INT(y/100)-INT(y/400) 440 REM Calc Julian Day 450 a=INT(365.25*(y+4712))-2415020 460 b=INT((367*(m-1)+5)/12) 470 hr=0 480 REPEAT 490 d=dy+hr/24+a+b-f-.5 500 M=FNz(358.476+.9856003*d) 510 N=FNz(225.328+.0830853*d) 520 J=FNz(221.647+.9025179*d) 530 aa=1.92*SIN(M*r1)+.02*SIN(2*M*r1) 540 bb=5.5537*SIN(N*r1)+.167*SIN(2*N*r1) 550 K=J+aa-bb 560 delta=SQR(28.07-10.406*COS(K*r1)) 570 psi=ASN(SIN(K*r1)/delta)/r1 580 u1=FNz(84.5506+203.405863*(d-delta/173)+psi-bb) 590 u2=FNz(41.5015+101.291632*(d-delta/173)+psi-bb) 600 u3=FNz(109.977+50.2345169*(d-delta/173)+psi-bb) 610 u4=FNz(176.3586+21.4879802*(d-delta/173)+psi-bb) 620 x(1)=5.906*SIN(u1*r1) 630 x(2)=9.397*SIN(u2*r1) 640 x(3)=14.989*SIN(u3*r1) 650 x(4)=26.364*SIN(u4*r1) 660 x(5)=0 670 REM Print Jupiter and plot moons 680 COLOUR3:VDU4:PRINTTAB(12,3);" + ";INT(hr);" hr" 690 PROCdisplay:REM PROCwait(.1) 700 REM PROCsort 710 IF a$="d" OR a$="D" dy=dy+.01 720 IF a$="h" OR a$="H" hr=hr+.01 730 UNTIL FALSE 740 END 750 : 760 DEF FNz(i)=i-360*INT(i/360) 770 : 780 DEF PROCdisplay 790 GCOL0,2 800 VDU24,1;350;1279;450; 810 VDU29,640;400; 820 VDU5 830 CLG 840 FOR moon=1 TO 4 850 GCOL0,7 860 MOVE 0,16:PRINT;"o" 870 colour=moon:IF moon=4 THEN colour=6 880 GCOL0,colour 890 PLOT69,-x(moon)*20,0 900 NEXT IF flag =0:PROCwait(5):flag=1 910 ENDPROC DEF PROCwait(s):TIME=0:REPEAT UNTIL TIME>100*s:ENDPROC