home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Compute! Gazette 1986 June
/
1986-06.d64
/
solarpix
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-09-20
|
8KB
|
280 lines
10 poke56,132:clr
20 poke792,193:poke648,132
30 poke56576,(peek(56576)and252)or1
40 poke53280,3:poke53281,3:dims(255),c(255),m$(9,17)
50 bp=34808:v=53248:lc=49152:ey=1984.82
60 pp=2*(NULL):p$(0)="ac":p$(1)="de":sa=1.1
70 print"[147]"spc(14)"please wait"
80 sp$=chr$(32):x$=sp$+"z=exit"
90 re$=chr$(18):rx$=chr$(146)
100 t$(1)=re$+"sun & planets"+rx$
110 t$(2)=re$+"sun,earth & moon"+rx$
120 t$(3)=re$+"comets"+rx$
130 t$(4)=re$+"facts"+rx$
140 forj=49152to49240:readk:pokej,k:next
150 forj=34816to35199:readk:pokej,k:next
160 forj=35520to35775:pokej,0:next
170 forl=1to10:readj,k:poke35584+j,k:next
180 forj=0to7:readk:pokebp+j,k:next
190 forj=0to7:readh(j):next
200 forj=0to10:readf$(j),u$(j)
210 l=0:h=10:ifj>4thenl=1:h=9
220 fork=ltoh:readz(k,j):next:next
230 forj=1to9:d(j)=z(j,5)
240 p(j)=z(j,6):next
250 forj=0to10:readn$(j)
260 ifj<4orj=10then280
270 fork=1toz(j,10):readm$(j,k):next
280 next:forj=1to9:readr:r(j)=r/360:next
290 forn=0to255:m=n*2*(NULL)/256
300 s(n)=sin(m):c(n)=cos(m):next
310 forj=32to36:k=74-j
320 poke251,j:poke252,2:poke253,k
330 poke254,2:sys49175:next
340 forj=0to7:pokev+39+j,h(j):next
350 pokev+23,0:pokev+29,0:pokev+16,128
360 gosub550:pokev+39,7:pokev+40,3
370 pokev+32,3:pokev+33,3:poke646,6
380 print"[147]":syslc,4,14
390 print"solarpix":print:print
400 forj=1to4:printtab(8)j;t$(j):print
410 next:printtab(9)"q quit"
420 gosub470:onkgoto630,1010,1280,1460
430 ifk$<>"q"then420
440 poke56576,peek(56576)or3
450 poke648,4:poke792,71:gosub550
460 print"[147]":poke56,160:clr:end
470 poke198,0
480 getk$:ifk$=""then480
490 k=val(k$):return
500 syslc,18,31:print"g=go"
510 printtab(31)"s=stop"
520 printtab(31)"+=faster"
530 printtab(31)"-=slower"
540 printtab(30)x$:return
550 pokev+21,0:forj=0to15
560 pokev+j,0:next:return
570 syslc,23,30:printx$
580 syslc,2,0:return
590 getk$:ifk$="s"thenfl=1
600 ifk$="g"thenfl=0
610 ifk$="-"thenm=m/2
620 return
630 pokev+32,11:pokev+33,0:poke646,7
640 gosub550:print"[147]"t$(1):gosub570
650 print"[154]please select planets (max5)"
660 print:forj=1to9:printj;n$(j):next
670 print:print"inner planet?";
680 gosub470:ifk$="z"then360
690 l=k:ifl<1then680
700 printn$(l):print"outer planet?";
710 gosub470:ifk$="z"then360
720 h=k:ifh<lorh>9orh-l>4then710
730 printn$(h):print:x=1
740 forj=1toh-l+1:x=x+2^j:next
750 forj=ltoh:f(j)=d(j)*90/d(h)
760 e(j)=f(j)*sa:next:m=p(l)/50:ml=m*9
770 input"starting year (1-2000)";k$
780 sy=val(k$):ifsy<1orsy>2000then630
790 print"[147][158]"t$(1):k=1
800 forj=ltoh:poke646,h(k)
810 printtab(31)n$(j):k=k+1:next
820 poke646,14:gosub500:syslc,7,31
830 print"earth":printtab(31)"year"
840 e=.25:t=sy-ey:fl=1
850 pokev,130:pokev+1,148:pokev+21,x
860 forj=ltoh:a=t/p(j)+r(j)
870 a=int((a-int(a))*256):ifj=9then890
880 x(j)=c(a):y(j)=-s(a):goto910
890 z=1+e*c(a):x(j)=e+(e+c(a))/z
900 y(j)=(e*e-1)*s(a)/z
910 x(j)=int(131+x(j)*e(j))
920 y(j)=int(149+y(j)*f(j)):next
930 k=1:forj=ltoh:pokev+2*k,x(j)
940 pokev+2*k+1,y(j):k=k+1:next
950 t$=str$(int((t+ey)*10)/10)
960 syslc,9,30:printt$sp$sp$
970 gosub590:ifk$="z"then630
980 ifflthen970
990 ifk$="+"andm<mlthenm=m*2
1000 t=t+m:goto860
1010 pokev+32,14:pokev+33,0:poke646,14
1020 print"[147]"t$(2):printtab(31)"moon"
1030 printtab(31)"phase":gosub500
1040 syslc,24,1:print"(earth-moon distance magnified by 30)";
1050 syslc,7,31:print"earth"
1060 printtab(31)"day"
1070 e=84:d=e*sa:f=d*30/390:g=f/sa
1080 m=0.3/365.25:t=0:h=13.3685
1090 pokev+39,14:pokev+40,12
1100 pokev+12,141:pokev+13,147
1110 pokev+14,24:pokev+15,80
1120 pokev+21,195:fl=1
1130 a=t-int(t):b=t*h:b=b-int(b)
1140 c=int(12*(b-a)+.5-7)
1150 ifc<0thenc=c+12:goto1150
1160 a=a*pp:b=b*pp
1170 x=int(142.5+cos(a)*d)
1180 y=int(148.5-sin(a)*e)
1190 w=int(x+1+cos(b)*f)
1200 z=int(y+1-sin(b)*g)
1210 pokev,x:pokev+1,y:pokev+2,w
1220 pokev+3,z:pokebp+7,32+c
1230 syslc,9,30:printint(t*365.25)
1240 gosub590:ifk$="z"then360
1250 ifflthen1240
1260 ifk$="+"andm<.006thenm=m*2
1270 t=t+m:goto1130
1280 pokev+32,5:pokev+33,0:poke646,5
1290 gosub550:print"[147]"re$t$(3):gosub570
1300 input"eccentricity(0-0.96)";k$
1310 e=val(k$):ifk$="z"then360
1320 ife<0ore>.96orlen(k$)=0then1280
1330 fl=1:ifright$(k$,1)="r"thenfl=-1
1340 print"[147]"re$t$(3):gosub570
1350 print"eccentricity="e:syslc,2,27
1360 ifethenprint"accelerating"
1370 m=0.01:t=0:f=65*sa:g=65*fl
1380 pokev,106:pokev+1,148:pokev+21,3
1390 a=(t-int(t))*pp:z=1+e*cos(a)
1400 x=e+(e+cos(a))/z:y=(e*e-1)*sin(a)/z
1410 x=int(107+x*f):y=int(149+y*g)
1420 j=int(a/(NULL)):pokev+2,x:pokev+3,y
1430 ife>0.1thensyslc,2,27:printp$(j)
1440 getk$:ifk$="z"then1280
1450 t=t+m:goto1390
1460 pokev+32,3:pokev+33,6:poke646,3
1470 print"[147]"re$t$(4)" menu":syslc,4,0
1480 gosub570:syslc,4,0
1490 print" s sun":print" m moon"
1500 forj=1to9:printj;n$(j):next
1510 syslc,4,0:forj=0to10
1520 printtab(20)chr$(j+65)" "f$(j):next
1530 gosub470:ifk$="z"then360
1540 ifk$="s"thenk=0:goto1590
1550 ifk$="m"thenk=10:goto1590
1560 ifk>0andk<10then1590
1570 k=asc(k$)-65:ifk<0ork>10then1530
1580 goto1720
1590 pokev+32,3:pokev+33,11:poke646,3
1600 print"[147]"re$n$(k)rx$;
1610 h=4:ifk=0ork=10thenprint:goto1630
1620 h=10:print" planet #"k"from sun"
1630 print:forj=0toh
1640 printf$(j)tab(18)z(k,j)tab(28)u$(j)
1650 next:ifk<10then1680
1660 print"dist.from earth"tab(19)"243000 miles"
1670 printf$(9)tab(19)"6 months"
1680 print:ifk<4ork=10then1770
1690 forj=1toz(k,10):c=int((j-1)/7)
1700 l=13+j-c*7:syslc,l,c*13
1710 printm$(k,j):next:goto1770
1720 pokev+32,3:pokev+33,11:poke646,3
1730 print"[147]"re$f$(k)rx$tab(19)u$(k)
1740 l=0:h=10:ifk>4thenl=1:h=9
1750 syslc,5,0:forj=ltoh
1760 printn$(j)tab(18)z(j,k):next
1770 gosub570:gosub470:goto1460
1780 data 32,13,192,132,251,32,13
1790 data 192,166,251,76,240,255,32
1800 data 253,174,32,158,173,32,170
1810 data 177,96,162,6,6,251,38
1820 data 252,6,253,38,254,202,208
1830 data 245,169,21,133,2,160,2
1840 data 177,251,162,8,106,38,255
1850 data 202,208,250,192,1,240,4
1860 data 152,73,2,168,165,255,145
1870 data 253,192,1,240,4,152,73
1880 data 2,168,136,16,223,162,3
1890 data 230,251,230,253,202,208,249
1900 data 198,2,208,208,96
1910 data 0,15,0,0,0,192,0,0,48
1920 data 0,0,56,0,0,28,0,0,28
1930 data 0,0,14,0,0,14,0,0,7
1940 data 0,0,7,0,0,7,0,0,7
1950 data 0,0,7,0,0,14,0,0,14
1960 data 0,0,28,0,0,28,0,0,56
1970 data 0,0,48,0,0,192,0,15,0,0
1980 data 0,15,0,0,7,192,0,3,240
1990 data 0,1,248,0,1,252,0,1,252
2000 data 0,0,254,0,0,254,0,0,255
2010 data 0,0,255,0,0,255,0,0,255
2020 data 0,0,255,0,0,254,0,0,254
2030 data 0,1,252,0,1,252,0,1,248
2040 data 0,3,240,0,7,192,0,15,0,0
2050 data 0,15,0,0,15,192,0,15,240
2060 data 0,15,248,0,15,252,0,15,252
2070 data 0,15,254,0,15,254,0,15,255
2080 data 0,15,255,0,15,255,0,15,255
2090 data 0,15,255,0,15,254,0,15,254
2100 data 0,15,252,0,15,252,0,15,248
2110 data 0,15,240,0,15,192,0,15,0,0
2120 data 0,15,0,0,31,192,0,63,240
2130 data 0,127,248,0,127,252,0,127,252
2140 data 0,255,254,0,255,254,0,255,255
2150 data 0,255,255,0,255,255,0,255,255
2160 data 0,255,255,0,255,254,0,255,254
2170 data 0,127,252,0,127,252,0,127,248
2180 data 0,63,240,0,31,192,0,15,0,0
2190 data 0,31,0,0,255,192,3,255,240
2200 data 3,255,248,7,255,252,7,255,252
2210 data 15,255,254,15,255,254,31,255,255
2220 data 31,255,255,31,255,255,31,255,255
2230 data 31,255,255,15,255,254,15,255,254
2240 data 7,255,252,7,255,252,3,255,248
2250 data 3,255,240,0,255,192,0,31,0,0
2260 data 0,255,0,3,255,192,15,255,240
2270 data 31,255,248,63,255,252,63,255,252
2280 data 127,255,254,127,255,254,255,255,255
2290 data 255,255,255,255,255,255,255,255,255
2300 data 255,255,255,127,255,254,127,255,254
2310 data 63,255,252,63,255,252,31,255,248
2320 data 15,255,240,3,255,192,0,255,0,0
2330 data 0,112,3,248,6,248,9,248,12,112
2340 data 64,192,67,192
2350 data 128,224,131,224,134,224
2360 data 46,45,45,45,45,45,44,37
2370 data 7,3,4,14,8,6,7,12
2380 data diameter,miles
2390 data 864000,3100,7700,7926
2400 data 4200,88000,71000,32000
2410 data 31000,1500,2160
2420 data mass,(earth=1)
2430 data 332830,0.055,0.815,1
2440 data 0.107,318,95.2,14.5
2450 data 17.2,0.01,0.012
2460 data density,(water=1)
2470 data 1.4,5.4,5.2,5.5,3.9,1.3
2480 data 0.7,1.2,1.7,1.4,3.4
2490 data rotation period,earthdays
2500 data 25,58.9,243,1,1.03,0.404
2510 data 0.444,0.67,0.77,6.3