home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1986 June / 1986-06.d64 / solarpix (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  8KB  |  280 lines

  1. 10 poke56,132:clr
  2. 20 poke792,193:poke648,132
  3. 30 poke56576,(peek(56576)and252)or1
  4. 40 poke53280,3:poke53281,3:dims(255),c(255),m$(9,17)
  5. 50 bp=34808:v=53248:lc=49152:ey=1984.82
  6. 60 pp=2*(NULL):p$(0)="ac":p$(1)="de":sa=1.1
  7. 70 print"[147]"spc(14)"please wait"
  8. 80 sp$=chr$(32):x$=sp$+"z=exit"
  9. 90 re$=chr$(18):rx$=chr$(146)
  10. 100 t$(1)=re$+"sun & planets"+rx$
  11. 110 t$(2)=re$+"sun,earth & moon"+rx$
  12. 120 t$(3)=re$+"comets"+rx$
  13. 130 t$(4)=re$+"facts"+rx$
  14. 140 forj=49152to49240:readk:pokej,k:next
  15. 150 forj=34816to35199:readk:pokej,k:next
  16. 160 forj=35520to35775:pokej,0:next
  17. 170 forl=1to10:readj,k:poke35584+j,k:next
  18. 180 forj=0to7:readk:pokebp+j,k:next
  19. 190 forj=0to7:readh(j):next
  20. 200 forj=0to10:readf$(j),u$(j)
  21. 210 l=0:h=10:ifj>4thenl=1:h=9
  22. 220 fork=ltoh:readz(k,j):next:next
  23. 230 forj=1to9:d(j)=z(j,5)
  24. 240 p(j)=z(j,6):next
  25. 250 forj=0to10:readn$(j)
  26. 260 ifj<4orj=10then280
  27. 270 fork=1toz(j,10):readm$(j,k):next
  28. 280 next:forj=1to9:readr:r(j)=r/360:next
  29. 290 forn=0to255:m=n*2*(NULL)/256
  30. 300 s(n)=sin(m):c(n)=cos(m):next
  31. 310 forj=32to36:k=74-j
  32. 320 poke251,j:poke252,2:poke253,k
  33. 330 poke254,2:sys49175:next
  34. 340 forj=0to7:pokev+39+j,h(j):next
  35. 350 pokev+23,0:pokev+29,0:pokev+16,128
  36. 360 gosub550:pokev+39,7:pokev+40,3
  37. 370 pokev+32,3:pokev+33,3:poke646,6
  38. 380 print"[147]":syslc,4,14
  39. 390 print"solarpix":print:print
  40. 400 forj=1to4:printtab(8)j;t$(j):print
  41. 410 next:printtab(9)"q quit"
  42. 420 gosub470:onkgoto630,1010,1280,1460
  43. 430 ifk$<>"q"then420
  44. 440 poke56576,peek(56576)or3
  45. 450 poke648,4:poke792,71:gosub550
  46. 460 print"[147]":poke56,160:clr:end
  47. 470 poke198,0
  48. 480 getk$:ifk$=""then480
  49. 490 k=val(k$):return
  50. 500 syslc,18,31:print"g=go"
  51. 510 printtab(31)"s=stop"
  52. 520 printtab(31)"+=faster"
  53. 530 printtab(31)"-=slower"
  54. 540 printtab(30)x$:return
  55. 550 pokev+21,0:forj=0to15
  56. 560 pokev+j,0:next:return
  57. 570 syslc,23,30:printx$
  58. 580 syslc,2,0:return
  59. 590 getk$:ifk$="s"thenfl=1
  60. 600 ifk$="g"thenfl=0
  61. 610 ifk$="-"thenm=m/2
  62. 620 return
  63. 630 pokev+32,11:pokev+33,0:poke646,7
  64. 640 gosub550:print"[147]"t$(1):gosub570
  65. 650 print"[154]please select planets (max5)"
  66. 660 print:forj=1to9:printj;n$(j):next
  67. 670 print:print"inner planet?";
  68. 680 gosub470:ifk$="z"then360
  69. 690 l=k:ifl<1then680
  70. 700 printn$(l):print"outer planet?";
  71. 710 gosub470:ifk$="z"then360
  72. 720 h=k:ifh<lorh>9orh-l>4then710
  73. 730 printn$(h):print:x=1
  74. 740 forj=1toh-l+1:x=x+2^j:next
  75. 750 forj=ltoh:f(j)=d(j)*90/d(h)
  76. 760 e(j)=f(j)*sa:next:m=p(l)/50:ml=m*9
  77. 770 input"starting year (1-2000)";k$
  78. 780 sy=val(k$):ifsy<1orsy>2000then630
  79. 790 print"[147][158]"t$(1):k=1
  80. 800 forj=ltoh:poke646,h(k)
  81. 810 printtab(31)n$(j):k=k+1:next
  82. 820 poke646,14:gosub500:syslc,7,31
  83. 830 print"earth":printtab(31)"year"
  84. 840 e=.25:t=sy-ey:fl=1
  85. 850 pokev,130:pokev+1,148:pokev+21,x
  86. 860 forj=ltoh:a=t/p(j)+r(j)
  87. 870 a=int((a-int(a))*256):ifj=9then890
  88. 880 x(j)=c(a):y(j)=-s(a):goto910
  89. 890 z=1+e*c(a):x(j)=e+(e+c(a))/z
  90. 900 y(j)=(e*e-1)*s(a)/z
  91. 910 x(j)=int(131+x(j)*e(j))
  92. 920 y(j)=int(149+y(j)*f(j)):next
  93. 930 k=1:forj=ltoh:pokev+2*k,x(j)
  94. 940 pokev+2*k+1,y(j):k=k+1:next
  95. 950 t$=str$(int((t+ey)*10)/10)
  96. 960 syslc,9,30:printt$sp$sp$
  97. 970 gosub590:ifk$="z"then630
  98. 980 ifflthen970
  99. 990 ifk$="+"andm<mlthenm=m*2
  100. 1000 t=t+m:goto860
  101. 1010 pokev+32,14:pokev+33,0:poke646,14
  102. 1020 print"[147]"t$(2):printtab(31)"moon"
  103. 1030 printtab(31)"phase":gosub500
  104. 1040 syslc,24,1:print"(earth-moon distance magnified by 30)";
  105. 1050 syslc,7,31:print"earth"
  106. 1060 printtab(31)"day"
  107. 1070 e=84:d=e*sa:f=d*30/390:g=f/sa
  108. 1080 m=0.3/365.25:t=0:h=13.3685
  109. 1090 pokev+39,14:pokev+40,12
  110. 1100 pokev+12,141:pokev+13,147
  111. 1110 pokev+14,24:pokev+15,80
  112. 1120 pokev+21,195:fl=1
  113. 1130 a=t-int(t):b=t*h:b=b-int(b)
  114. 1140 c=int(12*(b-a)+.5-7)
  115. 1150 ifc<0thenc=c+12:goto1150
  116. 1160 a=a*pp:b=b*pp
  117. 1170 x=int(142.5+cos(a)*d)
  118. 1180 y=int(148.5-sin(a)*e)
  119. 1190 w=int(x+1+cos(b)*f)
  120. 1200 z=int(y+1-sin(b)*g)
  121. 1210 pokev,x:pokev+1,y:pokev+2,w
  122. 1220 pokev+3,z:pokebp+7,32+c
  123. 1230 syslc,9,30:printint(t*365.25)
  124. 1240 gosub590:ifk$="z"then360
  125. 1250 ifflthen1240
  126. 1260 ifk$="+"andm<.006thenm=m*2
  127. 1270 t=t+m:goto1130
  128. 1280 pokev+32,5:pokev+33,0:poke646,5
  129. 1290 gosub550:print"[147]"re$t$(3):gosub570
  130. 1300 input"eccentricity(0-0.96)";k$
  131. 1310 e=val(k$):ifk$="z"then360
  132. 1320 ife<0ore>.96orlen(k$)=0then1280
  133. 1330 fl=1:ifright$(k$,1)="r"thenfl=-1
  134. 1340 print"[147]"re$t$(3):gosub570
  135. 1350 print"eccentricity="e:syslc,2,27
  136. 1360 ifethenprint"accelerating"
  137. 1370 m=0.01:t=0:f=65*sa:g=65*fl
  138. 1380 pokev,106:pokev+1,148:pokev+21,3
  139. 1390 a=(t-int(t))*pp:z=1+e*cos(a)
  140. 1400 x=e+(e+cos(a))/z:y=(e*e-1)*sin(a)/z
  141. 1410 x=int(107+x*f):y=int(149+y*g)
  142. 1420 j=int(a/(NULL)):pokev+2,x:pokev+3,y
  143. 1430 ife>0.1thensyslc,2,27:printp$(j)
  144. 1440 getk$:ifk$="z"then1280
  145. 1450 t=t+m:goto1390
  146. 1460 pokev+32,3:pokev+33,6:poke646,3
  147. 1470 print"[147]"re$t$(4)" menu":syslc,4,0
  148. 1480 gosub570:syslc,4,0
  149. 1490 print" s sun":print" m moon"
  150. 1500 forj=1to9:printj;n$(j):next
  151. 1510 syslc,4,0:forj=0to10
  152. 1520 printtab(20)chr$(j+65)" "f$(j):next
  153. 1530 gosub470:ifk$="z"then360
  154. 1540 ifk$="s"thenk=0:goto1590
  155. 1550 ifk$="m"thenk=10:goto1590
  156. 1560 ifk>0andk<10then1590
  157. 1570 k=asc(k$)-65:ifk<0ork>10then1530
  158. 1580 goto1720
  159. 1590 pokev+32,3:pokev+33,11:poke646,3
  160. 1600 print"[147]"re$n$(k)rx$;
  161. 1610 h=4:ifk=0ork=10thenprint:goto1630
  162. 1620 h=10:print" planet #"k"from sun"
  163. 1630 print:forj=0toh
  164. 1640 printf$(j)tab(18)z(k,j)tab(28)u$(j)
  165. 1650 next:ifk<10then1680
  166. 1660 print"dist.from earth"tab(19)"243000 miles"
  167. 1670 printf$(9)tab(19)"6 months"
  168. 1680 print:ifk<4ork=10then1770
  169. 1690 forj=1toz(k,10):c=int((j-1)/7)
  170. 1700 l=13+j-c*7:syslc,l,c*13
  171. 1710 printm$(k,j):next:goto1770
  172. 1720 pokev+32,3:pokev+33,11:poke646,3
  173. 1730 print"[147]"re$f$(k)rx$tab(19)u$(k)
  174. 1740 l=0:h=10:ifk>4thenl=1:h=9
  175. 1750 syslc,5,0:forj=ltoh
  176. 1760 printn$(j)tab(18)z(j,k):next
  177. 1770 gosub570:gosub470:goto1460
  178. 1780 data 32,13,192,132,251,32,13
  179. 1790 data 192,166,251,76,240,255,32
  180. 1800 data 253,174,32,158,173,32,170
  181. 1810 data 177,96,162,6,6,251,38
  182. 1820 data 252,6,253,38,254,202,208
  183. 1830 data 245,169,21,133,2,160,2
  184. 1840 data 177,251,162,8,106,38,255
  185. 1850 data 202,208,250,192,1,240,4
  186. 1860 data 152,73,2,168,165,255,145
  187. 1870 data 253,192,1,240,4,152,73
  188. 1880 data 2,168,136,16,223,162,3
  189. 1890 data 230,251,230,253,202,208,249
  190. 1900 data 198,2,208,208,96
  191. 1910 data 0,15,0,0,0,192,0,0,48
  192. 1920 data 0,0,56,0,0,28,0,0,28
  193. 1930 data 0,0,14,0,0,14,0,0,7
  194. 1940 data 0,0,7,0,0,7,0,0,7
  195. 1950 data 0,0,7,0,0,14,0,0,14
  196. 1960 data 0,0,28,0,0,28,0,0,56
  197. 1970 data 0,0,48,0,0,192,0,15,0,0
  198. 1980 data 0,15,0,0,7,192,0,3,240
  199. 1990 data 0,1,248,0,1,252,0,1,252
  200. 2000 data 0,0,254,0,0,254,0,0,255
  201. 2010 data 0,0,255,0,0,255,0,0,255
  202. 2020 data 0,0,255,0,0,254,0,0,254
  203. 2030 data 0,1,252,0,1,252,0,1,248
  204. 2040 data 0,3,240,0,7,192,0,15,0,0
  205. 2050 data 0,15,0,0,15,192,0,15,240
  206. 2060 data 0,15,248,0,15,252,0,15,252
  207. 2070 data 0,15,254,0,15,254,0,15,255
  208. 2080 data 0,15,255,0,15,255,0,15,255
  209. 2090 data 0,15,255,0,15,254,0,15,254
  210. 2100 data 0,15,252,0,15,252,0,15,248
  211. 2110 data 0,15,240,0,15,192,0,15,0,0
  212. 2120 data 0,15,0,0,31,192,0,63,240
  213. 2130 data 0,127,248,0,127,252,0,127,252
  214. 2140 data 0,255,254,0,255,254,0,255,255
  215. 2150 data 0,255,255,0,255,255,0,255,255
  216. 2160 data 0,255,255,0,255,254,0,255,254
  217. 2170 data 0,127,252,0,127,252,0,127,248
  218. 2180 data 0,63,240,0,31,192,0,15,0,0
  219. 2190 data 0,31,0,0,255,192,3,255,240
  220. 2200 data 3,255,248,7,255,252,7,255,252
  221. 2210 data 15,255,254,15,255,254,31,255,255
  222. 2220 data 31,255,255,31,255,255,31,255,255
  223. 2230 data 31,255,255,15,255,254,15,255,254
  224. 2240 data 7,255,252,7,255,252,3,255,248
  225. 2250 data 3,255,240,0,255,192,0,31,0,0
  226. 2260 data 0,255,0,3,255,192,15,255,240
  227. 2270 data 31,255,248,63,255,252,63,255,252
  228. 2280 data 127,255,254,127,255,254,255,255,255
  229. 2290 data 255,255,255,255,255,255,255,255,255
  230. 2300 data 255,255,255,127,255,254,127,255,254
  231. 2310 data 63,255,252,63,255,252,31,255,248
  232. 2320 data 15,255,240,3,255,192,0,255,0,0
  233. 2330 data 0,112,3,248,6,248,9,248,12,112
  234. 2340 data 64,192,67,192
  235. 2350 data 128,224,131,224,134,224
  236. 2360 data 46,45,45,45,45,45,44,37
  237. 2370 data 7,3,4,14,8,6,7,12
  238. 2380 data diameter,miles
  239. 2390 data 864000,3100,7700,7926
  240. 2400 data 4200,88000,71000,32000
  241. 2410 data 31000,1500,2160
  242. 2420 data mass,(earth=1)
  243. 2430 data 332830,0.055,0.815,1
  244. 2440 data 0.107,318,95.2,14.5
  245. 2450 data 17.2,0.01,0.012
  246. 2460 data density,(water=1)
  247. 2470 data 1.4,5.4,5.2,5.5,3.9,1.3
  248. 2480 data 0.7,1.2,1.7,1.4,3.4
  249. 2490 data rotation period,earthdays
  250. 2500 data 25,58.9,243,1,1.03,0.404
  251. 2510 data 0.444,0.67,0.77,6.3