home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / c / comp1188.zip / SOLAR.BAS < prev    next >
BASIC Source File  |  1988-08-05  |  10KB  |  225 lines

  1. 10 KEY OFF:SCREEN 1,0:DEFINT A-Z
  2. 20 DEF FNCAP$(K$)=CHR$(ASC(LEFT$(K$+" ",1))-(K$>="a")*(K$<="z")*32)
  3. 40 DIM MX(2,12),S!(255),C!(255),M$(9,17),MASK0(124),MASK1(124),CYAN(6),MAGENTA(6),MAGENTA2(7),WHITE(6),WHITE2(7),CYAN3(14)
  4. 45 DIM MOON0(108),MOON1(108),MOON2(108),MOON3(108),MOON4(108),MOON5(108),MOON6(108),MOON7(108),MOON8(108),MOON9(108),MOON10(108),MOON11(108)
  5. 50 EY!=1984.82
  6. 60 PI!=3.14159:PP!=2*PI!:P$(0)="Ac":P$(1)="De":SA!=1.1
  7. 70 CLS:PRINT"Please wait..."
  8. 80 SP$=CHR$(32):X$=SP$+"ESC"+CHR$(26)+"Exit":Z$=CHR$(27)
  9. 100 T$(1)="Sun & Planets"
  10. 110 T$(2)="Sun, Earth & Moon"
  11. 120 T$(3)="Comets"
  12. 130 T$(4)="Facts"
  13. 135 CIRCLE(162,102),2,1:PAINT(162,102),1,1:GET(160,100)-(164,104),CYAN3
  14. 140 LINE(160,100)-(162,102),3,BF
  15. 150 GET(160,100)-(162,102),WHITE2:GET(160,100)-(161,101),WHITE
  16. 160 LINE(160,100)-(216,107),2,BF:GET(160,100)-(216,107),MASK1
  17. 170 GET(160,100)-(161,101),MAGENTA:GET(160,100)-(162,102),MAGENTA2
  18. 180 LINE(160,100)-(216,107),1,BF:GET(160,100)-(216,107),MASK0
  19. 190 GET(160,100)-(161,101),CYAN:LINE(160,100)-(216,107),0,BF
  20. 191 FOR J=0 TO 2:FOR I=0 TO 12:READ MX(J,I):NEXT I,J:DATA 11,8,6,5,4,3,2,1,1,0,0,0,0,12,10,8,7,6,5,4,3,3,2,2,2,2,13,12,11,11,10,10,9,9,9,8,8,8,8
  21. 192 K=3:GOSUB 1771
  22. 196 GET(0,100)-(15,125),MOON5:GET(16+40,100)-(31+40,125),MOON6:GET(16+80,100)-(31+80,125),MOON7:GET(120+16,100)-(31+120,125),MOON8:GET(160,100)-(15+160,125),MOON9:GET(200,100)-(15+200,125),MOON10
  23. 197 GET(0,140)-(15,165),MOON11:GET(16+40,140)-(31+40,165),MOON0:GET(16+80,140)-(31+80,165),MOON1:GET(16+120,140)-(31+120,165),MOON2:GET(160,140)-(15+160,165),MOON3:GET(200,140)-(15+200,165),MOON4
  24. 200 K=0:GOSUB 1771:FOR J=0 TO 10:READ F$(J),U$(J)
  25. 210 L=0:H=10:IF J>4 THEN L=1:H=9
  26. 220 FOR K=L TO H:READ Z$(K,J):NEXT K,J
  27. 230 FOR J=1 TO 9:D!(J)=VAL(Z$(J,5))
  28. 240 P!(J)=VAL(Z$(J,6)):NEXT
  29. 250 FOR J=0 TO 10:READ N$(J)
  30. 260 IF J<4 OR J=10 THEN 280
  31. 270 FOR K=1 TO VAL(Z$(J,10)):READ M$(J,K):NEXT
  32. 280 NEXT:FOR J=1 TO 9:READ R!:R!(J)=R!/360:NEXT
  33. 290 FOR N=0 TO 255:M!=N*2*PI!/256
  34. 300 S!(N)=SIN(M!):C!(N)=COS(M!):NEXT
  35. 310 FOR J=32 TO 36:K=74-J:NEXT
  36. 380 CLS:LOCATE 5,15
  37. 390 PRINT"SOLARPIX":PRINT:PRINT
  38. 400 FOR J=1 TO 4:PRINT TAB(9)J;T$(J):PRINT
  39. 410 NEXT:PRINT TAB(10)"Q Quit"
  40. 420 GOSUB 480:ON K GOTO 640,1020,1280,1470
  41. 430 IF K$<>"Q" THEN 420
  42. 460 CLS:CLEAR:END
  43. 480 K$=FNCAP$(INKEY$):IF K$=" " THEN 480
  44. 490 K=VAL(K$):RETURN
  45. 500 LOCATE 19,32:PRINT"G=Go"
  46. 510 PRINT TAB(32)"S=Stop"
  47. 520 PRINT TAB(32)"+=Faster"
  48. 530 PRINT TAB(32)"-=Slower"
  49. 540 PRINT TAB(31)X$:RETURN
  50. 570 LOCATE 24,31:PRINT X$;
  51. 580 LOCATE 3,1:RETURN
  52. 590 K$=FNCAP$(INKEY$):IF K$="S" THEN FL=1
  53. 600 IF K$="G" THEN FL=0
  54. 610 IF K$="-" THEN M!=M!/2
  55. 620 RETURN
  56. 640 CLS:PRINT T$(1):GOSUB 570
  57. 650 PRINT"Please Select Planets (Max. 5)"
  58. 660 PRINT:FOR J=1 TO 9:PRINT J;N$(J):NEXT
  59. 670 PRINT:PRINT"Inner planet? ";
  60. 680 GOSUB 480:IF K$=Z$ THEN 380
  61. 690 L=K:IF L<1 THEN 680
  62. 700 PRINT N$(L):PRINT"Outer planet? ";
  63. 710 GOSUB 480:IF K$=Z$ THEN 380
  64. 720 H=K:IF H<L OR H>9 OR H-L>4 THEN 710
  65. 730 PRINT N$(H):PRINT:X=1
  66. 740 FOR J=1 TO H-L+1:X=X+2^J:NEXT
  67. 750 FOR J=L TO H:F!(J)=D!(J)*90/D!(H):PX(J)=0:PY(J)=198
  68. 760 E!(J)=F!(J)*SA!:NEXT:M!=P!(L)/50:ML!=M!*9
  69. 770 INPUT"Starting year (1-2000)";K$
  70. 775 IF K$="" THEN K$="1"
  71. 780 SY=VAL(K$):IF SY<1 OR SY>2000 THEN 640
  72. 790 CLS:PRINT T$(1):K=1
  73. 800 COL=0:FOR J=L TO H:PRINT TAB(32)N$(J):IF COL=0 THEN PUT(248,K*8),MASK0,AND ELSE IF COL=1 THEN PUT(248,K*8),MASK1,AND
  74. 810 COL=K MOD 3:K=K+1:NEXT
  75. 820 GOSUB 500:LOCATE 8,32
  76. 830 PRINT"Earth":PRINT TAB(32)"Year"
  77. 840 E!=.25:T!=SY-EY!:FL=1
  78. 850 PUT(106,98),WHITE2
  79. 860 FOR J=L TO H:A!=T!/P!(J)+R!(J)
  80. 870 A!=INT((A!-INT(A!))*256):IF J=9 THEN 890
  81. 880 X!(J)=C!(A!):Y!(J)=-S!(A!):GOTO 910
  82. 890 Z!=1+E!*C!(A!):X!(J)=E!+(E!+C!(A!))/Z!
  83. 900 Y!(J)=(E!*E!-1)*S!(A!)/Z!
  84. 910 X!(J)=INT(107+X!(J)*E!(J))
  85. 920 Y!(J)=INT(99+Y!(J)*F!(J)):NEXT
  86. 930 K=1:COL=0:FOR J=L TO H:IF PX(J)<>INT(X!(J)) OR PY(J)<>INT(Y!(J)) THEN PUT(PX(J),PY(J)),WHITE,PRESET:PX(J)=INT(X!(J)):PY(J)=INT(Y!(J)):IF COL=0 THEN PUT(PX(J),PY(J)),CYAN ELSE IF COL=1 THEN PUT(PX(J),PY(J)),MAGENTA ELSE PUT(PX(J),PY(J)),WHITE
  87. 940 COL=K MOD 3:K=K+1:NEXT
  88. 950 T$=STR$(INT(INT((T!+EY!)*10)/10))+"."+RIGHT$(STR$(INT(T!+EY!*10)),1)
  89. 960 LOCATE 10,31:PRINT T$SP$SP$
  90. 970 GOSUB 590:IF K$=Z$ THEN 640
  91. 980 IF FL THEN 970
  92. 990 IF K$="+" AND M!<ML! THEN M!=M!+M!
  93. 1000 T!=T!+M!:GOTO 860
  94. 1020 CLS:PRINT T$(2):PRINT TAB(32)"Moon"
  95. 1030 PRINT TAB(32)"Phase":GOSUB 500
  96. 1040 LOCATE 25,2:PRINT"(Earth-Moon distance magnified by 30.)";
  97. 1050 LOCATE 8,32:PRINT"Earth"
  98. 1060 PRINT TAB(32)"Day"
  99. 1070 E!=84:D!=E!*SA!:F!=D!*30/390:G!=F!/SA!
  100. 1080 M!=.3/365.25:T!=0
  101. 1090 PX=100:PY=50:PW=100:PZ=50
  102. 1100 PUT(117,97),CYAN3
  103. 1120 FL=1:PUT(266,25),MOON2,PSET
  104. 1130 A!=T!-INT(T!):B!=T!*13.3685:B!=B!-INT(B!)
  105. 1140 C=INT(12*(B!-A!)+.5)-7
  106. 1150 IF C<0 THEN C=C+12:GOTO 1150
  107. 1160 A!=A!*PP!:B!=B!*PP!
  108. 1170 X=INT(118.5+COS(A!)*D!)
  109. 1180 Y=INT(98.5-SIN(A!)*E!)
  110. 1190 W=INT(X+1+COS(B!)*F!)
  111. 1200 Z=INT(Y+1-SIN(B!)*G!)
  112. 1210 IF PX<>X OR PY<>Y THEN PUT(PX,PY),WHITE2,PRESET:PUT(X,Y),MAGENTA2,PSET:PX=X:PY=Y
  113. 1211 IF PW<>W OR PZ<>Z THEN PUT(PW,PZ),WHITE,PRESET:PUT(W,Z),WHITE,PSET:PW=W:PZ=Z
  114. 1212 ON C GOTO 1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224
  115. 1213 PUT(266,25),MOON0,PSET:GOTO 1230
  116. 1214 PUT(266,25),MOON1,PSET:GOTO 1230
  117. 1215 PUT(266,25),MOON2,PSET:GOTO 1230
  118. 1216 PUT(250,25),MOON3,PSET:GOTO 1230
  119. 1217 PUT(250,25),MOON4,PSET:GOTO 1230
  120. 1218 PUT(252,25),MOON5,PSET:GOTO 1230
  121. 1219 PUT(268,25),MOON6,PSET:GOTO 1230
  122. 1220 PUT(268,25),MOON7,PSET:GOTO 1230
  123. 1221 PUT(266,25),MOON8,PSET:GOTO 1230
  124. 1222 PUT(252,25),MOON9,PSET:GOTO 1230
  125. 1223 PUT(252,25),MOON10,PSET:GOTO 1230
  126. 1224 PUT(252,25),MOON11,PSET:GOTO 1230
  127. 1230 LOCATE 10,31:PRINT INT(T!*365.25)
  128. 1240 GOSUB 590:IF K$=Z$ THEN 380
  129. 1250 IF FL THEN 1240
  130. 1260 IF K$="+" AND M!<.006 THEN M!=M!+M!
  131. 1270 T!=T!+M!:GOTO 1130
  132. 1280 GOSUB 570:PX=0:PY=0
  133. 1290 CLS:PRINT T$(3):GOSUB 570
  134. 1300 PRINT"Eccentricity(0-0.96)? ";:LINE(176,16)-(183,23),3,BF:GOSUB 480:IF FNCAP$(K$)=Z$ THEN 380
  135. 1310 PRINT K$;:IF K$=CHR$(13) THEN K$="0":E$="" ELSE INPUT "",E$
  136. 1320 E!=VAL(K$+E$):IF E!<0 OR E!>.96 OR LEN(K$)=0 THEN 1280
  137. 1330 FL=1:IF FNCAP$(RIGHT$(K$+E$,1))="R" THEN FL=-1
  138. 1340 CLS:PRINT T$(3):GOSUB 570
  139. 1350 PRINT"Eccentricity = ";:IF E!=0 THEN PRINT"0" ELSE PRINT K$+E$
  140. 1360 LOCATE 3,28:IF E!>0 THEN PRINT"Accelerating"
  141. 1370 M!=.01:T!=0:F!=65*SA!:G!=65*FL
  142. 1380 PUT(82,98),WHITE2:PUT(O,0),WHITE
  143. 1390 A!=(T!-INT(T!))*PP!:Z!=1+E!*COS(A!)
  144. 1410 X=INT(83+(E!+(E!+COS(A!))/Z!)*F!):Y=INT(99+(E!*E!-1)*SIN(A!)/Z!*G!)
  145. 1420 J=INT(A!/PI!):IF PX<>X OR PY<>Y THEN PUT(PX,PY),WHITE:PUT(X,Y),WHITE:PX=X:PY=Y
  146. 1430 IF E!>.1 THEN LOCATE 3,28:PRINT P$(J)
  147. 1440 K$=FNCAP$(INKEY$):IF K$=Z$ THEN 1280
  148. 1450 T!=T!+M!:GOTO 1390
  149. 1470 CLS:PRINT T$(4)" Menu":LOCATE 5,1
  150. 1480 GOSUB 570:LOCATE 5,1
  151. 1490 PRINT" S Sun":PRINT" M Moon"
  152. 1500 FOR J=1 TO 9:PRINT J;N$(J):NEXT
  153. 1510 LOCATE 5,1:FOR J=0 TO 10
  154. 1520 LOCATE ,20:PRINT CHR$(J+65)" "F$(J):NEXT
  155. 1530 GOSUB 480:IF K$=Z$ THEN 380
  156. 1540 IF K$="S" THEN K=0:GOTO 1600
  157. 1550 IF K$="M" THEN K=10:GOTO 1600
  158. 1560 IF K>0 AND K<10 THEN 1600
  159. 1570 K=ASC(K$)-65:IF K<0 OR K>10 THEN 1530
  160. 1580 GOTO 1730
  161. 1600 CLS:PRINT N$(K);
  162. 1610 H=4:IF K=0 OR K=10 THEN PRINT:GOTO 1630
  163. 1620 H=10:PRINT" Planet #"K"from sun"
  164. 1630 PRINT:FOR J=0 TO H
  165. 1640 PRINT F$(J)TAB(19)Z$(K,J)TAB(29)U$(J)
  166. 1650 NEXT:IF K<10 THEN 1680
  167. 1660 PRINT"Dist. from earth"TAB(20)"243000 Miles"
  168. 1670 PRINT F$(9)TAB(20)"6 Months"
  169. 1680 PRINT:IF K<4 OR K=10 THEN 1770
  170. 1690 FOR J=1 TO Z!(K,10):C=INT((J-1)/7)+1
  171. 1700 L=14+J-C*7:LOCATE L,C*13
  172. 1710 PRINT M$(K,J):NEXT:GOTO 1770
  173. 1730 CLS:PRINT F$(K)TAB(20)U$(K)
  174. 1740 L=0:H=10:IF K>4 THEN L=1:H=9
  175. 1750 LOCATE 6,1:FOR J=L TO H
  176. 1760 PRINT N$(J)TAB(19)Z$(J,K):NEXT
  177. 1770 LOCATE 24,1:PRINT"Press any key to continue.";:WHILE INKEY$="":WEND:GOTO 1470
  178. 1771 FOR I=0 TO 12:FOR J=0 TO 1:Y1=113-((J=0)*2+1)*(12-I):Y2=Y1+40:LINE(MX(0,I),Y1)-(31-MX(0,I),Y1),K:LINE(MX(0,I)+40,Y1)-(12-MX(1,I)+55,Y1),K
  179. 1772 LINE(MX(0,I)+80,Y1)-(13-MX(2,I)+95,Y1),K:LINE(MX(0,I)+120,Y1)-(135,Y1),K:LINE(MX(0,I)+160,Y1)-(160+MX(2,I),Y1),K
  180. 1773 LINE(MX(0,I)+200,Y1)-(200+MX(1,I),Y1),K:LINE(31-MX(1,I)+40,Y2)-(31-MX(0,I)+40,Y2),K:LINE(31-MX(2,I)+80,Y2)-(31-MX(0,I)+80,Y2),K:LINE(16+120,Y2)-(31-MX(0,I)+120,Y2),K
  181. 1774 LINE(MX(2,I)+163,Y2)-(31-MX(0,I)+160,Y2),K:LINE(MX(1,I)+203,Y2)-(31-MX(0,I)+200,Y2),K
  182. 1775 NEXT J,I:RETURN
  183. 2380 DATA Diameter,Miles
  184. 2390 DATA 864000,3100,7700,7926
  185. 2400 DATA 4200,88000,71000,32000
  186. 2410 DATA 31000,1500,2160
  187. 2420 DATA Mass,(Earth=1)
  188. 2430 DATA 332830,0.055,0.815,1
  189. 2440 DATA 0.107,318,95.2,14.5
  190. 2450 DATA 17.2,0.01,0.012
  191. 2460 DATA Density,(Water=1)
  192. 2470 DATA 1.4,5.4,5.2,5.5,3.9,1.3
  193. 2480 DATA 0.7,1.2,1.7,1.4,3.4
  194. 2490 DATA Rotation Period,Earthdays
  195. 2500 DATA 25,58.9,243,1,1.03,0.404
  196. 2510 DATA 0.444,0.67,0.77,6.39,27.3
  197. 2520 DATA Temperature,Fahrenheit
  198. 2530 DATA 10000,620,900,72,-10,-240
  199. 2540 DATA -300,-340,-370,-400,-10
  200. 2550 DATA Distance from Sun,Mill. Miles
  201. 2560 DATA 36,67.2,92.9,142,483
  202. 2570 DATA 887,1783,2795,3670
  203. 2580 DATA Length of Year,Earthyears
  204. 2590 DATA 0.241,0.615,1,1.88,11.86
  205. 2600 DATA 29.46,84,164,248
  206. 2610 DATA Orbit Speed,MPH
  207. 2620 DATA 107000,78000,66000,54000
  208. 2630 DATA 29000,22000,15000,12000,10000
  209. 2640 DATA Axis Tilt,Degrees
  210. 2650 DATA 0,179,23.5,25,3.1
  211. 2660 DATA 26.7,97.9,28.8,0
  212. 2670 DATA Drivetime(55 MPH),Years
  213. 2680 DATA 75,139,193,295,1002
  214. 2690 DATA 1840,3698,5797,7612
  215. 2700 DATA Moons,-
  216. 2710 DATA 0,0,1,2,16,17,5,3,1
  217. 2720 DATA Sun,Mercury,Venus,Earth,Mars,Phobos,Deimos
  218. 2730 DATA Jupiter,Metis,Adrastrea,Amalthea,Thebe,Io,Europa,Ganymede,Callisto
  219. 2740 DATA Leda,Himalia,Lysithea,Elara,Ananke,Carme,Pasiphae,Sinope
  220. 2750 DATA Saturn,Atlas,X,X,Janus,Epimetheus,Mimas,Enceladus,Tethys,Telesto
  221. 2760 DATA Calypso,Dione,X,Rhea,Titan,Hyperion,Iapetus,Phoebe
  222. 2770 DATA Uranus,Miranda,Ariel,Umbriel,Titania,Oberon
  223. 2780 DATA Neptune,Triton,Nereid,X,Pluto,Charon,Moon
  224. 2790 DATA 198,255,351,285,249,180,204,227,173
  225.