10 DIM SC$(8),M(8),C$(8),S$(36),LS(36),SS$(36),SM(36),MP(15),R(15)
20 FOR I=1 TO 8:READ SC$(I),M(I),C$(I):NEXT
30 FOR I=1 TO 17:READ S$(I),SS$(I),SM(I):LS(I)=SM(I)^3.5:NEXT
40 FOR I=18 TO 36:READ S$(I),SS$(I),LS(I):SM(I)=LS(I)^.285714:NEXT
50 DATA O,100,BLUE,B,17,PALE BLUE,A,3.2,WHITE,F,1.54,PALE YELLOW
60 DATA G,1.02,YELLOW,K,.75,ORANGE,M,.38,RED,D,0.,RED
70 DATA SOL,G2,1.0,ALPHA CENTAURI A,G4,1.08,ALPHA CENTAURI B,K1,.88
80 DATA EPSILON ERIDANI,K2,.8,TAU CETI,G8,.82
90 DATA 70 OPHIUCHI A,K1,.9,70 OPHIUCHI B,K5,.65
100 DATA ETA CASSIOPEIAE A,F9,.94,ETA CASSIOPEIAE B,K6,.58
110 DATA SIGMA DRACONIS,G9,.82,36 OPHIUCHI A,K2,.77
120 DATA 36 OPHIUCHI B,K1,.76,HR 7703,K2,.76
130 DATA DELTA PAVONIS,G7,.98,82 ERIDANI,G5,.91
140 DATA BETA HYDRI,G1,1.23,HR 8832,K3,.74
150 DATA SIRIUS,A1,23,CANOPUS,F0,130,VEGA,A0,52,ARCTURUS,K2,100
160 DATA RIGEL,B8,52000,CAPELLA,G8,145,PROCYON,F5,7.6
170 DATA ACHERNAR,B5,1000,ALTAIR,A7,10,BETELGEUSE,M2,8300
180 DATA ALDEBARAN,K5,160,SPICA,B1,760,ANTARES,M1,830
190 DATA POLLUX,K0,33,FOMALHAUT,A3,13,BETA CRUCIS,B0,8300
200 DATA DENEB,A2,52000,REGULUS,B7,160,BARNARD'S STAR,M5,.00044
210 PRINT CHR$(&H1A);"WORLD BUILDER"
220 PRINT"ENTER THE NUMBER FOR THE OPTION YOU WANT"
230 PRINT:PRINT"1. USE A KNOWN STAR"
240 PRINT"2. USE A STAR NOT ON LIST"
250 PRINT"3. LIST KNOWN STARS"
260 PRINT"4. QUIT"
270 INPUT"YOUR CHOICE? ",A
280 IF(A<1 OR A>4)THEN 210
290 ON(A)GOTO 360,500,320,300
300 INPUT"ARE YOU SURE YOU WANT TO QUIT? ",A$
310 IF(ASC(A$)=89 OR ASC(A$)=121)THEN END ELSE 210
320 PRINT CHR$(&H1A);"I KNOW THE FOLLOWING STARS:":PRINT
330 FOR I=1 TO 12
340 PRINT S$(I);TAB(20);S$(I+12);TAB(40);S$(I+24)
350 NEXT
360 PRINT:INPUT"WHICH STAR SHOULD I USE? ",S$
370 IF(S$="NONE" OR S$="")THEN 210
380 FOR I=1 TO 36
390 IF(S$=S$(I))THEN SK=I:GOTO 420
400 NEXT I
410 PRINT"I DON'T KNOW THAT STAR.":GOTO 220
420 SC = VAL(RIGHT$(SS$(SK),1))/10
430 S1$=LEFT$(SS$(SK),1)
440 FOR I=1 TO 7:IF(S1$=SC$(I))THEN J=I:GOTO 460
450 NEXT
460 MS=SM(SK):L=LS(SK):AS=(MS^-2.5)*10
470 P=(1.25-MS/(L^.285714))/.005
480 IF(P/100*AS>10)THEN P=1000/AS
490 GOTO 690
500 INPUT"WHAT IS THE STAR'S NAME? ",S$
510 INPUT"WHAT IS THE STAR'S SPECTRAL CLASS? ",S1$
520 IF(S1$<>"")THEN 590
530 INPUT"WHAT IS THE ABSOLUTE MAGNITUDE (SUN=4.85)? ",M
540 L=EXP(1.94-.4*M):MS=L^.285714
550 FOR I=1 TO 7:IF(M(I)<MS)THEN J=I-1:GOTO 570
560 NEXT
570 S1$=SC$(I-1):SC=INT((MS-M(J))/(M(I)-M(J)))/10
580 GOTO 630
590 SC=VAL(RIGHT$(S1$,1))/10:S1$=LEFT$(S1$,1)
600 FOR I=1 TO 7:IF(S1$=SC$(I))THEN J=I:GOTO 620
610 NEXT:PRINT"I DON'T KNOW THAT CLASS.":GOTO 510
620 MS=M(J)-SC*(M(J)-M(J+1))
630 AS=(MS^-2.5)*10
640 PRINT S$;" HAS AN EXPECTED LIFE OF";AS;" BILLION YEARS."
650 INPUT"WHAT PERCENT (1..100) HAS ALREADY PASSED? ",P
660 IF(P/100*AS>12)THEN PRINT"THE BIG BANG OCCURRED 12 BILLION YEARS AGO.":INPUT"IS THIS WHAT YOU WANT? ",A$:IF(ASC(A$)<>89)THEN 640
670 MS=MS*(1.25-.005*P)
680 L=MS^3.5
690 TS=6000*MS^.35
700 DS=MS^.3333
710 PRINT CHR$(&H1A);"STELLAR DATA:":PRINT
720 PRINT"THE SELECTED STAR, ";S$;", IS A CLASS '";S1$;SC*10;"' STAR."
730 IF(SC>.75)THEN PRINT"IT IS ";C$(J+1);:GOTO 760
740 IF(SC<.25)THEN PRINT"IT IS ";C$(J);:GOTO 760
750 PRINT"IT IS BETWEEN ";C$(J);" AND ";C$(J+1);
760 PRINT" IN COLOR.":PRINT"IT HAS A MASS OF";MS;"SOLAR MASSES,"
770 PRINT"AND IT IS";L;"TIMES AS BRIGHT AS THE SUN."
780 PRINT S$;" HAS AN EXPECTED LIFESPAN OF";AS;"BILLION YEARS."
790 PRINT"IT IS";P;"PERCENT (ABOUT";AS*P/100;"BILLION YEARS) INTO ITS LIFESPAN."
800 IF(P>95)THEN PRINT"IT IS IN ITS DEATH THROES."
810 IF(P<5)THEN PRINT"IT IS JUST A BABY STAR."
820 PRINT"IT HAS A MEAN SURFACE TEMPERATURE OF";TS;"DEGREES KELVIN,"
830 IF(J+SC<2.5 OR J+SC>7)THEN PRINT"AND IT IS NOT BELIEVED TO HAVE PLANETS.":GOTO 850
840 PRINT"AND IT MAY HAVE PLANETS."
850 PRINT S$;" WILL DIE AS A ";
860 IF(MS<1.5)THEN PRINT"WHITE DWARF.":GOTO 900
870 IF(MS<4)THEN PRINT"NEUTRON STAR.":GOTO 900
880 IF(MS<10)THEN PRINT"NEUTRON STAR AFTER GOING NOVA.":GOTO 900
890 PRINT"BLACK HOLE AFTER GOING SUPERNOVA."
900 INPUT"ANOTHER STAR? ",A$
910 IF(ASC(A$)=89)THEN 210
920 P=P/100
930 PRINT CHR$(&H1A);"INFORMATION WILL NOW BE GATHERED ABOUT THE MAIN PLANET OF INTEREST."
940 PRINT:PRINT"THE EARTH HAS AN AVERAGE SURFACE TEMPERATURE OF 60 DEGREES F."
950 INPUT"WHAT SURFACE TEMPERATURE WOULD YOU LIKE? ",TP:TP=TP+460
960 INPUT"DESIRED SURFACE GRAVITY (EARTH = 1)? ",G
970 IF(G<=0)THEN PRINT"COME ON, THE PLANET MUST HAVE SOME GRAVITY!":GOTO 960
980 RP=SQR(L/(TP/520)^4)
990 IF(RP<MS/5)THEN PRINT"THIS PLANET IS TOO CLOSE TO BE STABLE.":GOTO 940
1000 PP=SQR(RP^3/MS)
1010 IS=L/(RP*RP)
1020 RM=.00012*TS
1030 RX=.06452*EXP(.0005*TS)
1040 SA=DS/RP
1050 INPUT"HOW BIG SHOULD THE PLANET BE RELATIVE TO EARTH (EARTH = 1)? ",D
1060 M=G*D*D
1070 IF(M<.055)THEN PRINT"THIS PLANET WON'T RETAIN AN OXYGEN ATMOSPHERE."
1080 IF(M>17.6)THEN PRINT"THIS PLANET WON'T LOSE ITS HYDROGEN ATMOSPHERE."
1090 PRINT"EARTH'S ORBIT HAS AN ECCENTRICITY OF .01672"
1100 INPUT"WHAT IS THE ORBITAL ECCENTRICITY (LESS THAN 1)? ",EC
1110 IF(EC=>1)THEN 1100
1120 CA=(1-EC)*RP:FA=(1+EC)*RP
1130 INPUT"HOW DOES THE AXIS TILT (EARTH=23.5 DEGREES)? ",TI
1140 IF(TI<0 OR TI>90)THEN 1130
1150 INPUT"HOW MANY MOONS DOES THE PLANET HAVE? ",MN
1160 IF(MN>10)THEN PRINT"FOR CONVENIENCE WE'LL CALL IT 10.":MN=10
1170 MM=1000:H=0:R=56*G
1180 IF(MN<=0)THEN 1280
1190 FOR I=1 TO MN
1200 PRINT"MASS OF MOON #";I;"(OUR MOON = 1)";:INPUT"? ",MN(I)
1210 INPUT"ORBIT (OUR MOON = 30)? ",MR(I)
1220 IF(MR(I)<3*G)THEN PRINT"THE MOON IS TOO CLOSE AND WILL BREAK UP.":GOTO 1210
1230 IF(MR(I)>56*G)THEN PRINT"THE MOON IS TOO FAR AWAY AND WILL DRIFT OFF.":GOTO 1210
1240 MP(I)=SQR(MR(I)^3/M)*4
1250 IF(MR(I)<R)THEN MM=MP(I):R=MR(I)
1260 H=MN(I)*.01235/(MR(I)^3)+H
1270 NEXT
1280 H2=.85*D^4/M*(MS*333500!/(11759*RP)^3+H)
1290 DA=1.75926E+06*H2*14+10
1300 IF(DA>MM)THEN DA=MM
1310 PRINT CHR$(&H1A);"PLANETARY INFORMATION:":PRINT:PRINT"THE PLANET'S DAY SHOULD BE ABOUT";DA;"HOURS LONG."
1320 PRINT"THAT MAKES ITS YEAR";8766/DA*PP;"DAYS LONG.  WITH A TILT OF";TI;","
1330 HI=(1+.025*DA/24)*TP-460:LO=(1-.025*DA/24)*TP-460
1340 IF(LO<-460)THEN LO=-460
1350 IF(HI<-460)THEN HI=-460
1360 PRINT"TODAY'S HIGH TEMPERATURE SHOULD BE";HI;"DEGREES F,"
1370 PRINT"AND TONIGHT'S EXPECTED LOW SHOULD BE AROUND";LO;"."
1380 SH=HI+1.9*TI*(1+EC)^2:LL=LO-1.9*TI/(1+EC)^2
1390 IF(LL<-460)THEN LL=-460
1400 IF(SH<-460)THEN SH=-460
1410 PRINT"THIS SUMMER WE EXPECT IT TO GET UP TO";SH;", AND"
1420 PRINT"THIS WINTER WE EXPECT IT TO GET DOWN TO";LL;"DEGREES F."
1430 IF(SH<32 OR LL>175)THEN PRINT"THERE ARE TIMES WHEN NO LIQUID WATER EXISTS."
1440 PRINT"HIT ANY KEY TO CONTINUE.":A$=INPUT$(1)
1450 IF(MN<=0)THEN 1590
1460 IF(MN=1)THEN 1560
1470 FOR I=1 TO MN:FOR K=1 TO (MN-I)
1480 IF(MR(K+1)=>MR(K))THEN 1530
1490 T=MR(K):MR(K)=MR(K+1):MR(K+1)=T
1500 T=MN(K):MN(K)=MN(K+1):MN(K+1)=T
1510 T=MP(K):MP(K)=MP(K+1):MP(K+1)=T
1520 F=1
1530 NEXT K
1540 IF(F=0)THEN 1560
1550 NEXT I
1560 PRINT CHR$(&H1A);"YOUR SELECTED SYSTEM OF MOONS:":PRINT
1570 PRINT"ORBIT","MASS","PERIOD"
1580 FOR I=1 TO MN:PRINT MR(I),MN(I),MP(I);"HRS",MP(I)/DA;"DAYS":NEXT
1590 INPUT"DO YOU WANT A DIFFERENT SET OF MOONS? ",A$
1600 IF(ASC(A$)=89)THEN 1150
1610 PRINT CHR$(&H1A);"PLANETARY DATA:":PRINT
1620 PRINT"OUR PRINCIPAL PLANET OF INTEREST HAS AN AVERAGE SURFACE"
1630 PRINT"TEMPERATURE OF";TP-460;"DEGREES F.  THIS REQUIRES AN ORBIT"
1640 PRINT"OF";RP;"ASTRONOMICAL UNITS, OR";RP*93;"MILLION MILES."
1650 PRINT"THE CLOSEST APPROACH TO ";S$;" IS";CA;"A.U.,"
1660 PRINT"AND THE GREATEST DISTANCE FROM ";S$;" IS";FA;"A.U."
1670 PRINT"THIS ALSO MEANS THAT IT HAS A YEAR THAT IS";PP;" YEARS LONG."
1680 PRINT:PRINT S$;" APPEARS TO BE";
1690 IF(SA>1.5 OR SA<.75)THEN PRINT" MUCH";
1700 IF(SA=1)THEN PRINT" THE SAME SIZE AS";ELSE IF(SA>1)THEN PRINT" LARGER THAN";ELSE PRINT" SMALLER THAN";
1710 PRINT" OUR SUN APPEARS."
1720 IF(G>.95 AND G<1.05)THEN PRINT"GRAVITY IS ESSENTIALLY THE SAME AS EARTH'S.":GOTO 1840
1730 PRINT"SINCE THE PLANET HAS A GRAVITY";:IF(G<1)THEN 1790
1740 PRINT" GREATER THAN EARTH'S, WE EXPECT"
1750 PRINT"A THICKER ATMOSPHERE.  THERE IS GREATER TECTONIC ACTION AND GREATER"
1760 PRINT"RESISTING FORCES; THUS, WE ANTICIPATE MORE CONTINENTS AND SHORTER"
1770 PRINT"MOUNTAINS.  EARTHQUAKES SHOULD BE MORE FREQUENT AND MORE SEVERE."
1780 GOTO 1840
1790 PRINT" LESS THAN EARTH'S, WE EXPECT"
1800 PRINT"A THINNER ATMOSPHERE.  THERE IS LESS TECTONIC ACTION AND LOWER"
1810 PRINT"RESISTING FORCES; THUS, THERE WILL BE FEWER CONTINENTS AND FEWER"
1820 PRINT"MOUNTAINS, ALTHOUGH THEY MAY BE QUITE TALL.  EARTHQUAKES, IF ANY,"
1830 PRINT"WILL NOT BE AS SEVERE AS ON EARTH."
1840 PRINT"A GRAVITY OF";G;"MEANS THAT IF YOU WEIGH 220 POUNDS,"
1850 PRINT"YOU WOULD WEIGH";G*220;"POUNDS ON THE PLANET."
1860 INPUT"WOULD YOU LIKE A NEW GRAVITY? ",A$
1870 IF(ASC(A$)=89)THEN 960
1880 PRINT CHR$(&H1A);"THE SUBJECT OF LIFE...":PRINT
1890 IF(M<.055 OR M>17.6)THEN PRINT"BECAUSE OF THE BAD ATMOSPHERE,":GOTO 2270
1900 IF(RP<RM OR RP>RX)THEN PRINT"BECAUSE OF THE LEVEL OF RADIATION,":GOTO 2270
1910 IF(SH<32 OR LL>175)THEN PRINT"BECAUSE THERE IS NO LIQUID WATER,":GOTO 2270
1920 IF(AS*P<1.5)THEN PRINT"BECAUSE THE PLANET IS TOO YOUNG,":GOTO 2270
1930 IF(P>.95)THEN PRINT"BECAUSE ";S$;" IS IN ITS DEATH THROES,":GOTO 2270
1940 IF(P<.05)THEN PRINT"BECAUSE ";S$;" IS SO YOUNG AND UNSTABLE,":GOTO 2270
1950 PRINT"CONDITIONS ARE RIGHT FOR THERE TO BE SOME ";
1960 IF(AS*P<2*G)THEN PRINT"BACTERIA AND BLUE-GREEN ALGAE.":GOTO 2250
1970 IF(AS*P<3*G)THEN PRINT"SINGLE-CELL LIFE WITH NUCLEI.":GOTO 2250
1980 IF(AS*P<4*G)THEN PRINT"SIMPLE MULTI-CELLED LIFE.":GOTO 2250
1990 IF(AS*P<4.4*G)THEN PRINT"WATER VERTEBRATES AND LAND PLANTS.":GOTO 2250
2000 PRINT"MAJOR LAND ANIMALS, PERHAPS INCLUDING INTELLIGENT LIFE."
2010 IF(G<.95)THEN 2110
2020 IF(G<1.05)THEN 2180
2030 PRINT"HIGHER GRAVITY MEANS A THICK ATMOSPHERE WHICH WILL SUPPORT LARGE"
2040 PRINT"BIRDS.  IT ALSO MEANS THAT SHORT FALLS COULD BE FATAL, SO REACTION"
2050 PRINT"TIMES WILL BE VERY SHORT.  ALL LIFE FORMS WILL BE SHORT AND STOCKY."
2060 IF(G>1.2)THEN PRINT"THERE ARE NO 2-LEGGED ANIMALS."ELSE PRINT"THERE MIGHT BE 2-LEGGED ANIMALS."
2070 PRINT"THE THICK ATMOSPHERE IMPROVES SOUND TRANSMISSION AND REDUCES"
2080 PRINT"VISIBILITY EXCEPT IN THE INFRARED.  ANIMALS WOULD HAVE TO RELY"
2090 PRINT"MORE ON HEARING, BUT THEIR EARS WOULD NOT HAVE TO BE LARGE."
2100 GOTO 2180
2110 PRINT"LOWER GRAVITY MEANS A THINNER ATMOSPHERE.  BIRDS, IF ANY, WILL HAVE"
2120 PRINT"WIDE WINGSPANS.  ALL LIFEFORMS WILL BE TALLER AND MORE SLENDER THAN"
2130 PRINT"THEIR COUNTERPARTS ON EARTH.  THERE PROBABLY ARE MANY 2-LEGGED"
2140 PRINT"ANIMALS.  THE THIN ATMOSPHERE HURTS SOUND TRANSMISSION, SO ANIMALS"
2150 PRINT"WILL EITHER HAVE LARGE EARS OR WILL NOT HAVE DEVELOPED THE SENSE OF"
2160 PRINT"HEARING AT ALL.  LUNGS WILL BE MUCH LARGER."
2170 IF(TP>75)THEN PRINT"SOME FORM OF RADIATION PROTECTION WILL BE NECESSARY."
2180 IF(SA>.75)THEN 2210
2190 PRINT"BECAUSE OF THE SMALL SUN, WE EXPECT ANIMALS EITHER TO HAVE LARGE EYES"
2200 PRINT"OR TO RELY ON OTHER SENSES, HAVING NEVER DEVELOPED SIGHT."
2210 IF(SA<1.5)THEN 2240
2220 PRINT"UNLESS THE ATMOSPHERE IS OBSCURED, WE EXPECT RELIANCE UPON SIGHT"
2230 PRINT"USING RELATIVELY SMALL EYES, AS UPON EARTH."
2240 IF(HI-LO>75)THEN PRINT"EXTREME TEMPERATURE VARIATIONS FAVOR UNDERGROUND AND/OR AQUATIC LIFEFORMS."
2250 HM=((TP-460)>32 AND (TP-460)<90 AND G<1.5 AND G>.65 AND M>.4 AND M<2.35 AND DA<96 AND SH<125 AND LL>-30 AND HI<110 AND LO>-10)
2260 GOTO 2280
2270 PRINT"LIFE, AS WE KNOW IT, CANNOT EXIST ON THIS PLANET."
2280 PRINT"THIS PLANET ";:IF(HM)THEN PRINT"MIGHT BE ";ELSE PRINT"WOULDN'T BE ";
2290 PRINT"CONSIDERED HABITABLE BY MAN."
2300 INPUT"WANT ANOTHER PLANET? ",A$
2310 IF(ASC(A$)=89)THEN 930
2320 PRINT CHR$(&H1A);"OTHER PLANETS...":PRINT
2330 INPUT"HOW MANY PLANETS IN THE SYSTEM (1..15)? ",NP
2340 IF(NP>15)THEN PRINT"TOO MANY...TRY AGAIN.":GOTO 2330
2350 IF(NP<=1)THEN 2790
2360 AM=1180/SQR(MS)-M*SQR(RP)
2370 R(1)=RP:MP(1)=M
2380 FOR I=2 TO NP
2390 PRINT CHR$(&H1A);
2400 PRINT"THE SOLAR SYSTEM IS LAID OUT LIKE THIS:":PRINT
2410 PRINT"PLANET","MASS","DISTANCE (A.U.)"
2420 PRINT"MERCURY",.055,.387
2430 PRINT"VENUS",.815,.723
2440 PRINT"TERRA",1,1
2450 PRINT"MARS",.908,1.524
2460 PRINT"JUPITER",317.9,5.203
2470 PRINT"SATURN",95.2,9.539
2480 PRINT"URANUS",14.6,19.18
2490 PRINT"NEPTUNE",17.2,30.06
2500 PRINT"PLUTO",.1,39.44
2510 PRINT:PRINT"MASS FOR PLANET #";I;:INPUT"? ",MP(I)
2520 IF(MP(I)>1000)THEN PRINT"A BODY THIS LARGE WOULD BECOME A STAR.":GOTO 2510
2530 PRINT"DISTANCE FROM ";S$;" (A.U.)";:INPUT"? ",R(I)
2540 IF(R(I)<MS/5)THEN PRINT"PLANET IS TOO CLOSE TO ";S$;".":GOTO 2530
2550 IF(R(I)>MS*56)THEN PRINT"PLANET IS TOO FAR FROM ";S$;".":GOTO 2530
2560 FOR K=1 TO I-1:IF(R(K)>.9*R(I) AND R(K)<1.1*R(I))THEN 2620
2570 NEXT K
2580 A1=MP(I)*SQR(R(I))
2590 IF(A1>AM)THEN PRINT"THE PLANET HAS TOO MUCH MASS FOR THE SYSTEM":GOTO 2400
2600 AM=AM-A1
2610 NEXT I:GOTO 2640
2620 PRINT"THE PLANET IS TOO CLOSE TO OTHER PLANETS TO HAVE A STABLE ORBIT."
2630 GOTO 2400
2640 FOR I=1 TO NP:F=0:FOR K=1 TO (NP-I)
2650 IF(R(K+1)=>R(K))THEN 2690
2660 T=R(K):R(K)=R(K+1):R(K+1)=T
2670 T=MP(K):MP(K)=MP(K+1):MP(K+1)=T
2680 F=1
2690 NEXT K
2700 IF(F=0)THEN 2720
2710 NEXT I
2720 PRINT CHR$(&H1A);"THE SYSTEM OF ";S$;":":PRINT:PRINT"PLANET #","MASS","ORBIT (A.U.)"
2730 FOR I=1 TO NP
2740 PRINT I,MP(I),R(I);
2750 IF(R(I)>RM AND R(I)<RX AND MP(I)>.055 AND MP(I)<17.6)THEN PRINT " LIFE??" ELSE PRINT
2760 NEXT I
2770 INPUT"WOULD YOU LIKE TO TRY ANOTHER SYSTEM? ",A$
2780 IF(ASC(A$)=89)THEN 2320
2790 INPUT"WOULD YOU LIKE TO TRY ANOTHER STAR? ",A$
2800 IF(ASC(A$)=89)THEN 210
2810 END
,A$
2780 IF(ASC(A$)=89)THE