jsbasic/samples/sample.sectorgen.txt
2012-02-08 22:13:44 -05:00

424 lines
18 KiB
Plaintext

0 REM From Challenge Magazine #26, by Marc Miller
0 REM *** CORRECTIONS ***
0 REM 1220 Missing "once" and spacing
0 REM 1230 Missing INPUT
0 REM 1253 Typo: "C" -> "CH" for Chirper
0 REM 2050 DR$ initialized with " should be ""
0 REM 2070 LO$(B( should be LO$(B)
0 REM 2130 Unnecessary GOTO 2140
0 REM 2740 REM / merged with subsequent line
0 REM 3015 Typo: "O" -> "OR"
0 REM 3020 Typo: "HY 9" --> "HY = 9"
0 REM 3550 Typo: "AM 10" --> "AM = 10"
0 REM 3820 Typo: <> " should be <> ""
0 REM 4320 "(5-ST)" should be "(5-S1)"
0 REM Typo: line 4460 printed as 460
0 REM 4530 "ST = -3" should be "DM = -3"
0 REM 4622 "DM = +1" unary plus unnecessary
0 REM 4624 "D = 3" should be "DM = 3"
0 REM 5030 "ST$="B" AND ST$="C"" should be "ST$="B" OR ST$="C""
0 REM 6210 " " should be 15 spaces
0 REM 6625 DR$ initialized with " should be ""
0 REM 6650 goto target missing; split 6640 to ensure AL$ appended if DR$ set
0 REM 2070 Missing ) at end of SQR
0 REM 2070 Unnecessary GOTO 2080
0 REM *** INVESTIGATE ***
0 REM 6120 Rule seems bogus - verify?
0 REM 4150/4160 inverted?
0 REM 4120 Jump to 4150 leaves DM unset, must be incorrect; changed to 4120 (no bases if ST$ = "E" or "X")
0 PR#0
1000 TEXT : HOME : PRINT "Traveller Sector Generator"
1010 PRINT " This program generates world UPP data"
1020 PRINT " for Traveller. Copyright 1986 GDW, Inc."
1100 HX$ = "0123456789ABCDFGHJKLMNPQRSTUVWXYZ"
1105 SP$ = "AAAABBCCDEEX"
1110 BA$ = "ABCDEFGHJKLMNPQRSTUVWXYZ"
1140 DEF FN A(X) = INT ( RND (4) * 6) + 1
1150 DEF FN B(X) = FN A(X) + FN A(X)
1200 REM DETERMINE ALLEGIANCES
1210 PRINT : PRINT "Allegiances."
1220 PRINT " You may assign up to 10 allegiances (with a base location and a radius for each). The same allegiance may be used more than once (to allow non-circular regions).": PRINT
1230 INPUT "How many allegiances in the area? > ";A: IF A<1 OR A>10 THEN 1230
1240 HOME : PRINT "Allegiances"
1250 PRINT " Allegiances are two-letter codes. The following use special procedures in this program:"
1253 PRINT "A* CS CH DR HV IM KK NA SO V* Z*"
1254 PRINT "(* = Wildcard)"
1260 PRINT : PRINT " The first allegiance is the default (automatic) allegiance for the sector.": PRINT
1270 FOR B = 1 TO A
1280 PRINT "Allegiance ";B;
1290 INPUT " is: ";AL$(B):AL$(B) = LEFT$ (AL$(B) + "BB",2)
1300 IF B = 1 THEN LO$(B) = "1620":RA(B) = 22: GOTO 1330
1310 INPUT "Location (Hex) is: ";LO$(B):LO$(B) = LEFT$ (LO$(B) + "0000",4)
1320 INPUT "Radius (parsecs) is: ";RA(B)
1325 IF RA(B)<1 THEN RA(B) = 1
1330 NEXT B
1400 REM DESIGNATE DENSITIES
1410 HOME : PRINT "Densities"
1420 PRINT " You may assign up to 10 densities (with a base location and a radius for each).": PRINT
1430 INPUT "How many densities in the area? > ";A1
1435 IF A1<1 OR A1>10 THEN 1430
1440 PRINT " Densities are decimal fractions.": PRINT
1450 PRINT " The first density is the default (automatic) density for the sector.": PRINT
1460 FOR B = 1 TO A1
1470 PRINT "Density ";B;
1480 INPUT " is: ";DE(B): IF DE(B)>1 THEN 1480
1490 IF B = 1 THEN L1$(B) = "1620":RD(B) = 22: GOTO 1520
1500 INPUT "Location (hex) is: ";L1$(B):L1$(B) = LEFT$ (L1$(B) + "0000",4)
1510 INPUT "Radius (parsecs) is: ";RD(B)
1515 IF RD(B)<1 THEN RD(B) = 1
1520 NEXT B
1530 HOME
2000 REM PRODUCE SECTOR
2010 PRINT CHR$ (4);"OPEN SECTOR, L50"
2020 FOR X = 1 TO 32
2030 FOR Y = 1 TO 40
2040 REM FIND ALLEGIANCE
2050 DR$ = "":AL$ = AL$(1):DR = 0
2060 FOR B = A TO 2 STEP - 1
2070 D = SQR((VAL(LEFT$(LO$(B),2))-X)*(VAL(LEFT$(LO$(B),2))-X)+(VAL(MID$(LO$(B),3,2))-Y)*(VAL(MID$(LO$(B),3,2))-Y)): IF D<RA(B) THEN AL$=AL$(B): IF D>(0.9*RA(B)) AND FN B(4)>9 THEN AL$="NA": IF FN B(4)>6 THEN AL$="CS" : GOTO 2080
2080 NEXT B
2100 REM WORLD OCCURRENCE
2110 DE = DE(1): IF A1<2 THEN 2150
2120 FOR B = A1 TO 2 STEP - 1
2130 D = SQR (( VAL ( LEFT$ (L1$(B),2)) - X) * ( VAL ( LEFT$ (L1$(B),2)) - X) - ( VAL ( MID$ (L1$(B),3,2)) - Y) * ( VAL ( MID$ (L1$(B),3,2)) - Y)): IF D<RD(B) THEN DE = DE(B) : GOTO 2140
2140 NEXT B
2150 RN = RND (4): IF RN>DE THEN 7070
2200 REM GENERATOR WORLD UPP
2210 ST = FN B(4):ST$ = MID$ (SP$,ST,1)
2220 SI = FN B(4) - 2: IF AL$ = "DR" THEN SI = FN A(6)
2230 AM = FN B(2) - 7 + SI:AM = AM * (AM>0): IF SI = 0 THEN AM = 0
2240 HY = FN B(2) - 7 + SI: IF SI<2 THEN HY = 0
2250 IF AM<2 OR AM>9 THEN HY = HY - 4
2260 IF HY<0 THEN HY = 0
2270 IF HY>10 THEN HY = 10
2300 PO = FN B(3) - 2
2310 GO = FN B(3) - 7 + PO:GO = GO * (GO>0)
2320 LA = FN B(4) - 7 + GO:LA = LA * (LA>0)
2330 IF PO<1 THEN 2600
2400 REM FIND DROYNE PRESENCE
2410 DM = - 5: IF SI>0 THEN DM = 0: IF SI>1 THEN DM = 1: IF SI>2 THEN DM = 2: IF SI>3 THEN DM = 3: IF SI>4 THEN DM = 2: IF SI>5 THEN DM = 1: IF SI>6 THEN DM = 0: IF SI>7 THEN DM = - 2: IF SI>8 THEN DM = - 4: IF SI>9 THEN DM = - 6
2420 DN = - 5: IF AM>0 THEN DN = - 4: IF AM>1 THEN DN = - 3: IF AM>2 THEN DN = - 2: IF AM>3 THEN DN = - 1: IF AM>4 THEN DN = 0: IF AM>5 THEN DN = 2: IF AM>6 THEN DN = 1: IF AM>7 THEN DN = 4: IF AM>8 THEN DN = 3: IF AM>9 THEN DN = - 5
2430 IF AM>10 THEN DN = - 6: IF AM>11 THEN DN = - 7: IF AM>12 THEN DN = - 3
2440 DO = 1: IF HY<3 THEN DO = 0: IF HY = 0 THEN DO = - 1
2450 IF HY>7 THEN DO = 0: IF HY>9 THEN DO = - 3
2460 DP = - 5: IF PO>0 THEN DP = - 4: IF PO>1 THEN DP = - 3: IF PO>2 THEN DP = - 2: IF PO>3 THEN DP = - 1: IF PO>5 THEN DP = 1: IF PO>7 THEN DP = 0: IF PO>8 THEN DP = - 2
2470 RR = FN B(5):RL = FN B(5)
2480 DM = DM + DN + DO + DP + RR
2490 IF DM<( - 8) THEN 2600
2500 IF (DM> - 9) AND (RL>11) THEN DR = - 5:DR$ = "DR"
2510 IF (DM>0) AND (RL>10) THEN DR = - 4:DR$ = "DR"
2520 IF (DM>9) AND (RL>9) THEN DR = - 2:DR$ = "DR"
2530 IF (DM>15) AND (RL>8) THEN DR = 0:DR$ = "DR"
2540 IF DR$ = "" THEN 2600
2550 IF FN B(4)>5 THEN DR$ = "CH"
2560 PP = ( FN B(3) - 2) + DR: IF PP<0 THEN PP = 0
2570 IF PP>9 THEN PP = 9
2580 DR$ = LEFT$ (DR$,1) + STR$ (PP)
2600 REM FIND SPECIFIC ALLEGIANCE
2610 IF LEFT$ (AL$,1) = "A" THEN 2700
2620 IF AL$ = "CH" THEN 2800
2630 IF AL$ = "DR" THEN 2800
2640 IF AL$ = "HV" THEN 2900
2650 IF AL$ = "KK" THEN 3000
2660 IF AL$ = "SO" THEN 3100
2670 IF LEFT$ (AL$,1) = "V" THEN 3200
2680 IF LEFT$ (AL$,1) = "Z" THEN 3300
2690 GOTO 3400
2700 REM ASLAN
2705 IF ASC ( MID$ (AL$,2,1))<48 OR ASC ( MID$ (AL$,2,1))>57 THEN 2720
2710 GO = 20: IF PO<4 AND FN B(6)<11 THEN GO = 16
2715 GOTO 2730
2720 WD = FN A(4):RD = FN A(3) + (1 * (PO<4)) + (2 * (PO = 9)) + (3 * (PO = 10)): IF RD<0 THEN WD = 0
2725 GO = 16 + WD: IF RD>6 THEN GO = 17
2730 AR = VAL ( MID$ (AL$,2,1)): IF GO = 20 AND AR = 0 AND MID$ (AL$,2,1)<>"0" THEN AL$ = "A" + STR$ ( INT ( RND (5) * 10))
2735 LA = FN B(5)
2740 REM
2745 DM = 3: IF ST>4 THEN DM = 2: IF ST>6 THEN DM = 0: IF ST>8 THEN DM = - 1: IF ST>9 THEN DM = - 2
2750 IF PO<3 AND GO = 16 THEN DM = DM - 3: GOTO 2760
2755 IF PO<8 THEN DM = DM - 1: IF PO<7 THEN DM = DM - 1
2760 TL = FN A(4) + 8 + DM: IF TL>14 THEN TL = 14
2765 GOTO 3600
2800 REM DROYNE
2810 IF AL$ = "DR" OR AL$ = "CH" THEN PO = FN A(4) + 2
2820 IF AL$ = "DR" THEN A = FN A(4):GO = 31: IF A<5 THEN GO = 7: IF A<3 THEN GO = 6
2830 LA = ( FN B(4) - 6) + PO:TL = ( FN B(5) + FN A(3)) - 2
2835 ST = ( FN B(4) - 7) + TL
2840 LA = LA * (LA>0):TL = TL * (TL>0):ST = ST * (ST>0)
2850 IF ST>12 THEN ST = 12
2860 ST$ = MID$ ("XXXXEEDCCBBAAAA",ST + 1,1)
2870 GOTO 3700
2900 REM HIVERS
2905 IF PO<1 THEN GO = 0:LA = 0:TL = 0: GOTO 3700
2910 NH = 0: IF ((AM>0 AND AM<5) OR (AM>9 AND AM<13)) AND FN B(5)>8 AND PO>0 THEN NH = 1
2915 GO = PO - FN A(6): IF GO<0 THEN GO = 0
2920 IF GO = 4 OR GO = 5 THEN GO = 26
2925 IF GO = 6 OR GO = 7 THEN GO = 27
2930 IF GO = 8 THEN GO = 28
2935 IF GO = 9 THEN GO = 29
2940 IF GO = 3 THEN GO = 6
2945 IF PO<7 AND NH = 1 THEN GO = 6
2950 LA = FN A(4): IF NH = 1 THEN LA = FN B(5)
2955 DM = 3: IF ST$>"A" THEN DM = 2: IF ST$>"B" THEN DM = 0: IF ST$>"C" THEN DM = - 1: IF ST$>"D" THEN DM = - 2
2960 IF (PO<4 AND GO<>6) THEN DM = DM - 3
2965 IF (PO>3 AND PO<7) THEN DM = DM - 2
2970 IF PO = 7 THEN DM = DM - 2
2975 TL = FN B(4) + 8 + DM
2980 IF TL>15 THEN TL = 15
2985 GOTO 3700
3000 REM KKREE
3005 GO = 23: IF PO>2 THEN GO = 24: IF PO>5 THEN GO = 25
3010 DM = (2 * (ST$ = "A")) + (ST$ = "B") + ( - 1 * (ST$ = "E")) + ( - 6 * (ST$ = "x"))
3015 DM = DM + ( - 2 * (AM<3)) + ( - 1 * (AM = 3)) + (3 * (AM = 5 OR AM = 6 OR AM = 8)) + ( - 1 * (AM = 10)) + ( - 2 * (AM = 11 OR AM = 13 OR AM = 14 OR AM = 15)) + ( - 3 * (AM = 12))
3020 DM = DM + ( - 2 * (HY = 0)) + (1 * (HY = 2 OR HY = 6)) + (2 * (HY = 3 OR HY = 4 OR HY = 5)) + ( - 1 * (HY = 8)) + ( - 2 * (HY = 9)) + ( - 3 * (HY = 10))
3025 NK = 0:PO = FN A(4) - 2 + DM: IF PO>11 THEN PO = 12:NK = 1:PO = FN B(4) - 2:GO = ( FN B(4) - 7) + PO:GO = GO * (GO> - 0):LA = ( FN B(4) - 7) + GO:LA = LA * (LA>0): GOTO 3040
3030 GO = 23: IF PO>2 THEN GO = 24: IF PO>5 THEN GO = 25
3035 LA = 19
3040 IF PO<1 THEN PO = 0:ST = 10:ST$ = "E":GO = 0:LA = 0
3045 REM
3050 DM = 3: IF ST>4 THEN DM = 2: IF ST>6 THEN DM = 0: IF ST>8 THEN DM = - 1: IF ST>9 THEN DM = - 2: IF ST>11 THEN DM = - 9
3055 IF GO = 23 THEN DM = DM - 3
3060 IF GO = 24 THEN DM = DM - 1
3065 IF GO = 25 THEN DM = DM + 1
3070 TL = FN A(4) + 9 + DM
3075 IF TL>15 THEN TL = 15
3080 GOTO 3600
3100 REM SOLOMANI
3110 GOTO 3400
3200 REM VARGR
3210 IF ( FN B(5) + PO)>15 THEN GO = 7
3220 GOTO 3400
3300 REM ZHODANI
3310 IF ST>11 THEN PO = FN A(4) + 4
3320 GOTO 3400
3400 REM FIND TECH LEVEL
3410 TL = FN A(6)
3420 IF ST$ = "A" THEN TL = TL + 6
3430 IF ST$ = "B" THEN TL = TL + 4
3440 IF ST$ = "C" THEN TL = TL + 2
3450 IF ST$ = "X" THEN TL = TL - 4
3460 IF SI<5 THEN TL = TL - 1: IF SI<2 THEN TL = TL - 1
3470 IF AM<4 THEN TL = TL + 1
3480 IF AM>9 THEN TL = TL + 1
3490 IF HY>8 THEN TL = TL + 1: IF HY>9 THEN TL = TL + 1
3500 IF PO>0 AND PO<6 THEN TL = TL + 1
3510 IF PO>8 THEN TL = TL + 2: IF PO>9 THEN TL = TL + 2
3520 IF GO = 0 OR GO = 5 THEN TL = TL + 1
3550 IF LEFT$ (AL$,1) = "Z" AND ((AM<3 AND TL<8) OR (AM = 3 AND TL<7) OR ((AM = 4 OR AM = 7 OR AM = 9) AND TL<6) OR ((AM = 10 OR AM = 11) AND TL<9) OR (AM = 12 AND TL<10)) THEN PO = 0:GO = 0:LA = 0:TL = 0
3560 GOTO 3700
3600 REM BASIC ALIEN TL LEVELLER
3610 IF AM<3 AND TL>7 THEN TL = 7
3620 IF AM = 3 AND TL<6 THEN TL = 6
3630 IF (AM = 4 OR AM = 7 OR AM = 9) AND TL<5 THEN TL = 5
3640 IF (AM = 10 OR AM = 11) AND TL<8 THEN TL = 8
3650 IF AM = 12 AND TL<9 THEN TL = 9
3700 REM GENERATE GAS GIANT
3710 GG = 0: IF FN B(4)<10 THEN GG = 1
3800 REM GENERATE TRAVEL ZONES
3810 TZ = 0
3815 IF AL$<>"IM" THEN 3845
3820 IF DR$<>"" AND TZ = 0 THEN IF FN B(5)>8 THEN TZ = 1
3830 IF ST$ = "X" THEN TZ = 2
3840 IF TZ = 0 AND FN B(4)>10 THEN TZ = 1
3845 IF LEFT$ (AL$,1)<>"z" THEN 4000
3850 IF LEFT$ (AL$,1) = "Z" and (st$="C" or ST$="D" or ST$="E") and FNB(5)>10 then tz=4
3860 IF ST$ = "x" AND LEFT$ (AL$,1) = "z" THEN TZ = 3
4000 REM GENERATE BASES
4010 B1 = 0:B2 = 0:B$ = " "
4020 IF LEFT$ (AL$,1) = "A" THEN 4300
4030 IF AL$ = "DR" THEN 4900
4040 IF AL$ = "HV" THEN 5000
4050 IF AL$ = "KK" THEN 4500
4060 IF AL$ = "SO" THEN 4800
4070 IF LEFT$ (AL$,1) = "V" THEN 4600
4080 IF LEFT$ (AL$,1) = "Z" THEN 4700
4100 REM IMPERIAL BASES
4110 IF ST$<"C" AND FN B(5)>7 THEN B1 = 1
4120 IF ST$>"D" THEN 4210
4130 DM = - 3: IF ST>4 THEN DM = - 2: IF ST>6 THEN DM = - 1: IF ST>8 THEN DM = 0: IF ST>9 THEN 4150
4140 IF ( FN B(5) + DM)>6 THEN B2 = 1
4150 IF B1 = 1 AND B2 = 0 THEN B$ = "N"
4160 IF ( FN B(4) + DM)>6 THEN B2 = 1
4170 IF B1 = 0 AND B2 = 1 THEN B$ = "S"
4180 IF B1 = 1 AND B2 = 1 THEN B$ = "A"
4190 IF (AL$<>"IM" AND AL$<>"CS") AND B1<>0 THEN B$ = "J"
4200 IF (AL$<>"IM" AND AL$<>"CS") AND B2<>0 THEN B$ = "M"
4210 GOTO 6000
4300 REM ASLAN BASES
4310 B1 = 0:B2 = 0:T1 = FN B(5):T2 = FN B(4):S1 = ASC (ST$) - 64:B$ = " "
4320 IF GO = 16 AND S1<3 AND T1 + (5 - S1)>13 THEN B1 = 1
4330 IF GO = 16 AND S1<3 AND T2 + (5 - S1)>12 THEN B2 = 1
4340 IF GO = 17 AND S1<5 AND T1 + (5 - S1)>8 THEN B1 = 1
4350 IF GO = 20 AND S1<5 AND T1 + (5 - S1)>6 THEN B1 = 1
4360 IF GO = 20 AND S1>5 AND T1>7 THEN B1 = 1
4370 IF GO = 22 AND S1<5 AND T1 + (5 - S1)>9 THEN B1 = 1
4380 IF (GO = 17 OR GO = 18 OR GO = 21) AND S1<5 AND T2 + (5 - S1)>7 THEN B2 = 1
4390 IF GO = 19 AND S1<5 AND T2 + (5 - S1)>6 THEN B2 = 1
4400 IF GO = 22 AND S1<5 AND T2 + (5 - S1)>8 THEN B2 = 1
4410 IF GO = 18 AND S1>5 AND T2>7 THEN B2 = 1
4420 IF GO = 19 AND S1>5 AND T2>8 THEN B2 = 1
4430 IF B1 = 1 THEN B$ = "T"
4440 IF B2 = 1 THEN B$ = "R"
4450 IF B1 = 1 AND B2 = 1 THEN B$ = "U"
4460 IF GO = 16 AND B1 = 1 THEN B$ = "T"
4470 GOTO 6000
4500 REM KKREE BASES
4510 IF FN B(5)>6 THEN B1 = 1:B2 = 0:B$ = "K": GOTO 4550
4520 IF ST$>"D" THEN 4550
4530 DM = 0: IF ST<9 THEN DM = - 1: IF ST<7 THEN DM = - 2: IF ST<5 THEN DM = - 3
4540 IF FN B(5) + DM>6 THEN B2 = 1:B$ = "O"
4550 GOTO 6000
4600 REM VARGR BASES
4610 IF FN B(5)>6 THEN B1 = 1:B$ = "G": GOTO 4650
4620 DM = - 2: IF ST>4 THEN DM = - 1: IF ST>6 THEN DM = 2
4622 IF ST>8 THEN DM = + 1: IF ST>9 THEN DM = 2
4624 IF ST>11 THEN DM = 3
4630 IF FN B(5) + DM>8 THEN B2 = 1:B$ = "C"
4640 IF B1 = 1 AND B2 = 1 THEN B$ = "H"
4650 GOTO 6000
4700 REM ZHODANI BASES
4710 DM = 2: IF ST>4 THEN DM = 1: IF ST>6 THEN DM = 0: IF ST>9 THEN 4740
4720 IF FN B(6) + DM>8 THEN B1 = 1:B$ = "Z"
4730 IF ST<5 AND FN B(4)>10 THEN B1 = 2:B$ = "Y"
4740 REM
4750 GOTO 6000
4800 REM SOLOMANI BASES
4810 B2 = 0
4820 IF ST$<"C" AND FN B(5)>7 THEN B1 = 1
4830 IF B1 = 1 THEN B$ = "J"
4840 GOTO 6000
4900 REM DROYNE BASES
4910 IF ST$>"D" THEN 4950
4920 IF FN B(5) + (4 - ( ASC (ST$) - 64))>7 THEN B1 = 1:B$ = "P"
4930 IF GO = 6 THEN B1 = 2:B$ = "N"
4940 IF ( FN B(5) - 7) + TL>6 THEN B2 = 1:B$ = "Q"
4950 GOTO 6000
5000 REM HIVER BASES
5010 B0 = FN B(5):B1 = 0:B2 = 0
5020 IF ST$ = "A" AND B0<6 THEN B1 = 6
5030 IF ST$ = "A" AND B0>7 THEN B1 = 7: IF B0 = 12 THEN B1 = 8
5040 IF (ST$ = "B" OR ST$ = "C") AND B0<3 THEN B2 = 8
5050 IF ST$ = "B" AND (B0 = 10 OR B0 = 11) THEN B1 = 7
5060 IF ST$ = "B" AND B0 = 12 THEN B2 = 9
5070 IF ST$ = "C" AND (B0 = 10 OR B0 = 11) THEN B2 = 8
5080 IF ST$ = "C" AND B0 = 12 THEN B2 = 9
5090 IF ST$ = "D" AND (B0 = 2 OR B0 = 11) THEN B2 = 8
5100 IF ST$ = "D" AND B0 = 12 THEN B2 = 9
5110 IF ST$ = "E" AND B0 = 12 THEN B2 = 8
5120 IF ST$ = "X" AND B0 = 12 THEN B2 = 8
5130 IF B1 = 6 THEN B$ = "E"
5140 IF B1 = 7 THEN B$ = "L"
5150 IF B2 = 8 THEN B$ = "M"
5160 IF B2 = 9 THEN B$ = "F"
5170 GOTO 6000
6000 REM TRADE CLASSIFICATIONS
6010 TC$ = "": IF AL$ = "KK" AND NK = 1 THEN TC$ = TC$ + "NK "
6030 IF AL$ = "HV" AND NH = 1 THEN TC$ = TC$ + "NH "
6040 IF AL$ = "HV" AND NH = 1 AND PO>7 AND (AM = 3 OR AM = 4 OR AM = 10 OR AM = 11 OR AM = 12) THEN TC$ = TC$ + "FA "
6045 IF PO>8 THEN TC$ = TC$ + "HI "
6047 IF PO<4 THEN TC$ = TC$ + "LO "
6050 IF (AM<3 OR AM = 4 OR AM = 7 OR AM = 9) AND PO>8 THEN TC$ = TC$ + "IN "
6055 IF (AM<2 AND HY>0) THEN TC$ = TC$ + "IC "
6060 IF PO<7 THEN TC$ = TC$ + "NI "
6065 IF AM>9 AND HY>0 THEN TC$ = TC$ + "FL "
6070 IF ( LEFT$ (AL$,1) = "A" OR AL$ = "HV" OR AL$ = "KK") AND (AM = 6 OR AM = 8) AND (PO>5 AND PO<9) THEN TC$ = TC$ + "RI ": GOTO 6120
6080 IF LEFT$ (AL$,1) = "v" AND (AM = 6 OR AM = 8) AND (PO>5 AND PO<9) AND (GO<>7) THEN TC$ = TC$ + "RI ": GOTO 6120
6090 IF AL$ = "DR" AND (AM = 6 OR AM = 8) AND (PO>5 AND PO<9) THEN TC$ = TC$ + "RI ": GOTO 6120
6100 IF LEFT$ (AL$,1) = "Z" AND (TZ = 3 OR TZ = 4) AND (AM = 6 OR AM = 8) AND (PO>5 AND PO<9) THEN TC$ = TC$ + "RI ": GOTO 6120
6110 IF (AM = 6 OR AM = 8) AND (PO>5 OR PO<9) AND (GO>3 AND GO<10) THEN TC$ = TC$ + "RI "
6120 IF (AM>1 AND AM<6) AND HY<4 THEN TC$ = TC$ + "PO "
6130 IF HY = 10 THEN TC$ = TC$ + "WA "
6140 IF HY = 0 AND AM>1 THEN TC$ = TC$ + "DE "
6150 IF SI = 0 THEN TC$ = TC$ + "AS "
6160 IF AM = 0 AND SI<>0 THEN TC$ = TC$ + "VA "
6170 IF AL$ = "KK" AND (SI = 7 OR SI = 8) AND (AM = 6 OR AM = 8) AND (HY>2 AND HY<6) THEN TC$ = TC$ + "ST "
6180 IF (AM>3 AND AM<10) AND (HY>3 AND HY<9) AND (PO>4 AND PO<8) THEN TC$ = TC$ + "AG "
6190 IF AM<4 AND HY<4 AND PO>5 THEN TC$ = TC$ + "NA "
6200 IF PO = 0 AND GO = 0 AND LA = 0 THEN TC$ = TC$ + "BA "
6210 TC$ = LEFT$ (TC$ + " ",15)
6500 REM CREATE WORLD DATA STRING
6510 A$ = "": IF X<10 THEN A$ = "0"
6530 A$ = A$ + STR$ (X): IF Y<10 THEN A$ = A$ + "0"
6550 A$ = A$ + STR$ (Y) + " "
6560 IF HY<0 THEN HY = 0
6570 IF AM<0 THEN AM = 0
6580 A$ = A$ + ST$ + MID$ (HX$,SI + 1,1) + MID$ (HX$,AM + 1,1) + MID$ (HX$,HY + 1,1)
6590 A$ = A$ + MID$ (HX$,PO + 1,1) + MID$ (HX$,GO + 1,1) + MID$ (HX$,LA + 1,1) + "-"
6600 IF TL<0 THEN TL = 0
6610 A$ = A$ + MID$ (HX$,TL + 1,1) + " ":A$ = A$ + B$ + " "
6625 IF PO = 0 THEN DR$ = ""
6630 IF DR$<>"" THEN A$ = A$ + DR$ + " " + LEFT$ (TC$,12): GOTO 6650
6640 A$ = A$ + TC$
6650 A$ = A$ + AL$ + " "
6660 IF TZ = 1 THEN A$ = A$ + "A "
6670 IF TZ = 2 THEN A$ = A$ + "R "
6680 IF TZ = 3 THEN A$ = A$ + "F "
6690 IF TZ = 4 THEN A$ = A$ + "U "
6700 IF TZ = 0 THEN A$ = A$ + " "
6710 IF GG = 0 THEN A$ = A$ + " "
6720 IF GG = 1 THEN A$ = A$ + "G "
7000 REM SAVE TO DISK
7010 R = R + 1
7020 PRINT CHR$ (4);"WRITE SECTOR, R";R
7030 PRINT A$
7040 PRINT CHR$ (4)
7040 PRINT A$
7070 NEXT Y: NEXT X
7090 REM SAVE FILE LENGTH
7100 PRINT CHR$ (4);"WRITE SECTOR, R0"
7110 PRINT R
7120 PRINT CHR$ (4);"CLOSE"
7130 REM SAVE FILE PARAMETERS
7140 INPUT "NAME THIS FILE? > ";FI$
7150 PRINT CHR$ (4);"RENAME SECTOR,";FI$
7160 PRINT CHR$ (4);"OPEN ";FI$;"@"
7170 PRINT CHR$ (4);"WRITE ";FI$;"@"
7180 PRINT 9: PRINT R: PRINT 49
7190 PRINT "HEX ": PRINT 4
7200 PRINT "UPP ": PRINT 9
7210 PRINT "BASES ": PRINT 1
7220 PRINT "TRADE CLA ": PRINT 14
7280 PRINT "ALLEG ": PRINT 2
7290 PRINT "TRAVEL ZO ": PRINT 1
7300 PRINT "GAS GIANT ": PRINT 1
7310 PRINT "TRADEWRLD ": PRINT 1
7320 PRINT "EXPLORED? ": PRINT 1
7390 PRINT CHR$ (4);"CLOSE"
7400 END