10 GOTO 10000 100 REM EDITION OF 2 NOV 1985 1000 A$ = LEFT$ (A$ + " ",1): IF A$ = "?" OR A$ = "CHANGE" THEN INPUT "WHAT SHIP LETTER? > ";A$:A$ = LEFT$ ("A" + A$,1):TY = ASC (A$) - 64: GOSUB 1500 1030 RETURN 1500 PRINT CHR$ (4);"OPEN SHIPS, L100": PRINT CHR$ (4);"READ SHIPS, R";TY: INPUT SH$: PRINT CHR$ (4);"CLOSE": HOME : GOSUB 3000: PRINT FI$;" ";TI$;" ";NA$;: HTAB 30: PRINT " ";DA$: PRINT "5";BL$: VTAB 4: PRINT MID$ (SH$,69,15);" "; MID$ (SH$,52,15) 1600 TN = VAL ( MID$ (SH$,3,4)): PRINT "TONNAGE: ";TN;:A$ = "STREAMLINED":SL$ = MID$ (SH$,28,1): IF SL$ = "U" THEN A$ = "UN" + A$ 1610 PRINT " ";A$: PRINT "PERFORMANCE: ";: PRINT "JUMP-"; MID$ (SH$,8,1);:JP = VAL ( MID$ (SH$,8,1)):PN = VAL ( MID$ (SH$,10,1)):NA$ = MID$ (SH$,52,15):G = VAL ( MID$ (SH$,9,1)): PRINT " ";G;"-G":FU = VAL ( MID$ (SH$,23,4)): PRINT "FUEL TANKAGE: ";FU:FY = FU:CH = VAL ( MID$ (SH$,18,4)): PRINT "CARGO HOLD: ";CH 1690 SR = VAL ( MID$ (SH$,12,2)): PRINT "STATEROOMS: ";SR:LP = VAL ( MID$ (SH$,15,2)): PRINT "LOW BERTHS: ";LP:CW = VAL ( MID$ (SH$,49,2)): PRINT "CREW: ";CW:SA = VAL ( MID$ (SH$,34,6)): PRINT "CREW SALARIES: ";SA:CS = VAL ( MID$ (SH$,41,7)): PRINT "SHIP COST: ";CS;" MCR" 1740 AL$ = MID$ (SH$,86,2): PRINT "ALLEGIANCE: ";AL$: PRINT "SERVICE: ";:SE = VAL ( MID$ (SH$,32,1)): PRINT SE$(SE): PRINT "OPERATIONS: ";:OP = VAL ( MID$ (SH$,30,1)):TI$ = SE$(OP): PRINT TI$: PRINT "PAYMENTS: ";:PA$ = MID$ (SH$,89,3):PA = VAL (PA$): IF LEFT$ (PA$,1) = "S" THEN PRINT "HALF OF REVENUES." 1820 IF VAL (PA$) > 0 THEN PRINT INT ((CS / 240) * 1E + 6);" FOR ";PA$;" MONTHS." 1830 IF LEFT$ (PA$,1) < > "S" AND VAL (PA$) < 1 THEN PRINT "PAID OFF." 1840 PRINT "CR FUND: ";CR:OV = (FU * 500) + ((CST / 480) * 1000000) + (LP * 100) + (SR * 2000) + (SAL / 2) + (CST * .001) + 100:OV = INT (OV): PRINT "MAX OVERHEAD: ";OV: VTAB 22: PRINT " ACCEPT SHIP. A-Z DISPLAYS OTHERS " : HTAB 1 : VTAB 23 : PRINT " / RETURNS TO SHIP LIST" 1882 INPUT "ACCEPT SHIP? > ";A$: IF LEFT$ (A$,1) = "" THEN 1920 1900 TY = ASC ( LEFT$ (A$,1)) - 64: IF TY < 1 OR TY > 26 THEN A$ = "/":CR = 0:OH = 0: GOTO 1920 1910 GOTO 1500 1920 RETURN 2000 PRINT CHR$ (4);"OPEN ";FI$;",L50": PRINT CHR$ (4);"READ ";FI$;",R";A: INPUT A$: IF OP < > 6 THEN 2110 2050 IF XL = 0 THEN 2110 2060 IF MID$ (A$,42,1) < > "*" THEN CR = CR + 50000 2070 A$ = LEFT$ (A$,41) + "*" + " ": PRINT CHR$ (4);"WRITE ";FI$;",R";A: PRINT A$:XR = XR - 1 2110 PRINT CHR$ (4);"CLOSE": RETURN 3000 IF DA = 0 THEN 3060 3020 DD = DD + 1:DA = DA - 1: IF DD / 28 = INT (DD / 28) AND PA < > 0 THEN CR = CR - ((CST * 1E + 6) / 480):PA = PA - 1 3040 IF DD / 28 = INT (DD / 28) THEN CR = CR - SAL 3050 IF DA > 0 THEN 3020 3060 IF DD > 365 THEN YR = YR + 1:DD = DD - 365:MNT = 1 3070 DA$ = RIGHT$ ("00" + STR$ (DD),3) + "-" + STR$ (YR): RETURN 4000 P2 = VAL ( MID$ (A1$,10,1)): IF P2 = 0 AND ( MID$ (A1$,10,1)) < > "0" THEN P2 = ASC ( MID$ (A1$,10,1)) - 55 4020 T2 = VAL ( MID$ (A1$,14,1)): IF T2 = 0 AND ( MID$ (A1$,14,1)) < > "0" THEN T2 = ASC ( MID$ (A1$,14,1)) - 55 4030 P1 = VAL ( MID$ (A$(0),10,1)): IF P1 = 0 AND ( MID$ (A$(0),10,1)) < > "0" THEN P1 = ASC ( MID$ (A$(0),10,1)) - 55 4040 T1 = VAL ( MID$ (A$(0),14,1)): IF T1 = 0 AND ( MID$ (A$(0),14,1)) < > "0" THEN T1 = ASC ( MID$ (A$(0),14,1)) - 55 4050 TZ = 0: IF MID$ (A1$,36,1) = "A" THEN TZ = 1 4060 IF MID$ (A1$,36,1) = "R" THEN TZ = 2 4070 RETURN 5000 D = FN B(8) + BR: IF D > 15 THEN D = 15 5050 IF D < 2 THEN D = 2 5060 AV = AV(D):CD = AV * CC * (1 - (BR * .05)):CC = CD * B: RETURN 6000 FL = 0:J = JP: FOR FL = 1 TO 169:FL(FL) = 0:J(FL) = 0: NEXT :FL = 0: FOR M = 7 - J TO 7 + J:X = XC - 7 + M: FOR N = 7 - J TO 7 + J:Y = YC - 7 + N: IF X < 1 OR X > 32 THEN 6200 6120 IF Y < 1 OR Y > 40 THEN 6200 6130 IF PO(X,Y) = 0 THEN 6200 6140 IF X = XC AND Y = YC THEN 6200 6150 IF OP > 7 AND PO(X,Y) > 0 THEN 6200 6160 IF XC / 2 = INT (XC / 2) THEN 6190 6170 IF OD(N,M) = < J THEN FL = FL + 1:J(FL) = OD(N,M):FL(FL) = PO(X,Y): GOTO 6200 6180 GOTO 6200 6190 IF OD(14 - N,M) = < J THEN FL = FL + 1:J(FL) = OD(14 - N,M):FL(FL) = PO(X,Y): GOTO 6200 6200 VTAB 11: HTAB 2: PRINT " "; RIGHT$ ("0" + STR$ (X),2); RIGHT$ ("0" + STR$ (Y),2):FL(FL) = ABS (FL(FL)): NEXT : NEXT : RETURN 7000 CC = 4000: FOR X = 18 TO 33 STEP 3: IF MID$ (A1$,X,2) = " " THEN 7090 7040 FOR X1 = 1 TO 23 STEP 2: IF X1 > 10 THEN 7070 7060 IF MID$ (A1$,X,2) = MID$ ("AGASHIINPO",X1,2) THEN CC = CC - 1000: GOTO 7080 7065 IF X1 < 11 THEN 7080 7070 IF MID$ (A1$,X,2) = MID$ ("BADEFLLONIVARI",X1 - 10,2) THEN CC = CC + 1000: GOTO 7080 7080 NEXT 7090 NEXT : TL = VAL ( MID$ (A1$,14,1)): IF TL = 0 AND MID$ (A1$,14,1) = "0" THEN TL = 0: GOTO 7110 7103 IF TL > 0 AND TL < 10 THEN 7110 7105 TL = ASC ( MID$ (A1$,14,1)) - 55: IF TL > 19 THEN TL = TL - 1: IF TL > 24 THEN TL = TL - 1 7110 CC = CC + (TL * 100):ST$ = MID$ (A1$,6,1): IF ST$ = "A" THEN CC = CC - 1000 7140 IF ST$ = "C" THEN CC = CC + 1000 7150 IF ST$ = "D" THEN CC = CC + 2000 7160 IF ST$ = "E" THEN CC = CC + 3000 7170 IF ST$ = "X" THEN CC = CC + 5000 7180 CA$ = ST$ + "-" + MID$ (HE$,TL + 1,1) + " " + MID$ (A1$,18,15) + " CR" + STR$ (CC):A$ = CA$: RETURN 8000 CC = 5000: FOR X = 5 TO 20 STEP 3: IF MID$ (B$,X,2) = " " THEN 8620 8040 FOR Y = 5 TO 20 STEP 3: IF MID$ (A$,Y,2) = "BA" THEN CC = CC - 2000: GOTO 8600 8060 IF MID$ (A$,Y,2) = " " THEN 8600 8070 IF MID$ (B$,X,2) < > "AG" THEN 8110 8080 FOR Z = 1 TO 15 STEP 2: IF MID$ (A$,Y,2) = MID$ ("AGASDEHIINLONARI",Z,2) THEN CC = CC + 1000 8100 NEXT 8110 IF MID$ (B$,X,2) < > "AS" THEN 8150 8120 FOR Z = 1 TO 9 STEP 2: IF MID$ (A$,Y,2) = MID$ ("ASINNARIVA",Z,2) THEN CC = CC + 1000 8140 NEXT 8150 IF MID$ (B$,X,2) < > "BA" THEN 8190 8160 FOR Z = 1 TO 3 STEP 2: IF MID$ (A$,Y,2) = MID$ ("AGIN",Z,2) THEN CC = CC + 1000 8180 NEXT 8190 IF MID$ (B$,X,2) < > "DE" THEN 8230 8200 FOR Z = 1 TO 3 STEP 2: IF MID$ (A$,Y,2) = MID$ ("DENA",Z,2) THEN CC = CC + 1000 8220 NEXT 8230 IF MID$ (B$,X,2) < > "FL" THEN 8270 8240 FOR Z = 1 TO 3 STEP 2: IF MID$ (A$,Y,2) = MID$ ("FLIN",Z,2) THEN CC = CC + 1000 8260 NEXT 8270 IF MID$ (B$,X,2) < > "HI" THEN 8310 8280 FOR Z = 1 TO 3 STEP 2: IF MID$ (A$,Y,2) = MID$ ("HILORI",Z,2) THEN CC = CC + 1000 8300 NEXT 8310 IF MID$ (B$,X,2) = "IC" AND MID$ (A$,Y,2) = "IN" THEN CC = CC + 1000 8320 IF MID$ (B$,X,2) < > "IN" THEN 8360 8330 FOR Z = 1 TO 21 STEP 2: IF MID$ (A$,Y,2) = MID$ ("AGASFLHILONIPORI",Z,2) THEN CC = CC + 1000 8350 NEXT 8360 IF MID$ (B$,X,2) < > "LO" THEN 8400 8370 FOR Z = 1 TO 3 STEP 2: IF MID$ (A$,Y,2) = MID$ ("INRI",Z,2) THEN CC = CC + 1000 8390 NEXT 8400 IF MID$ (B$,X,2) < > "NA" THEN 8440 8410 FOR Z = 1 TO 7 STEP 2: IF MID$ (A$,Y,2) = MID$ ("AGASDEVA",Z,2) THEN CC = CC + 1000 8430 NEXT 8440 IF MID$ (B$,X,2) < > "NI" THEN 8470 8450 IF MID$ (A$,Y,2) = "IN" THEN CC = CC + 1000 8460 IF MID$ (A$,Y,2) = "NI" THEN CC = CC - 1000 8470 IF MID$ (B$,X,2) = "PO" AND MID$ (A$,Y,2) = "PO" THEN CC = CC - 1000 8480 IF MID$ (B$,X,2) < > "RI" THEN 8520 8490 FOR Z = 1 TO 11 STEP 2: IF MID$ (A$,Y,2) = MID$ ("AGDEHIINNARI",Z,2) THEN CC = CC + 1000 8510 NEXT 8520 IF MID$ (B$,X,2) < > "VA" THEN 8560 8530 FOR Z = 1 TO 5 STEP 2: IF MID$ (A$,Y,2) = MID$ ("ASINVA",Z,2) THEN CC = CC + 1000 8550 NEXT 8560 IF MID$ (B$,X,2) < > "WA" THEN 8600 8570 FOR Z = 1 TO 5 STEP 2: IF MID$ (A$,Y,2) = MID$ ("INRIWA",Z,2) THEN CC = CC + 1000 8590 NEXT 8600 REM 8610 NEXT 8620 NEXT :TR = VAL ( MID$ (B$,3,1)): IF TR = 0 AND MID$ (B$,3,1) = "0" THEN TR = 0: GOTO 8640 8635 TR = ASC ( MID$ (B$,3,1)) - 55: IF TR > 19 THEN TR = TR - 1: IF TR > 24 THEN TR = TR - 1 8640 TT = (TR - TL) * .1: IF TT = < - 1 THEN CC = 0: GOTO 8670 8660 CC = CC + (CC * TT) 8670 IF CC < 0 THEN CC = 0 8680 RETURN 9000 DM = (T1 - T2) + ( - 3 * (P2 < 5)) + (3 * (P2 > 7)) + (TZ * - 6):PH = 0:PM = 0:PL = 0:CG = 0: ON P1 GOTO 9060,9070,9080,9090,9100,9110,9120,9130,9140,9150 9050 GOTO 9160 9060 PM = FN A(6) + DM - 2:PL = FN B(6) + DM - 6: GOTO 9160 9070 PH = FN A(6) + DM - FN A(6):PM = FN A(6) + DM:PL = FN B(6) + DM: GOTO 9160 9080 PH = FN B(6) + DM - FN B(6):PM = FN B(6) + DM - FN A(7):PL = FN B(6) + DM: GOTO 9160 9090 PH = FN B(6) + DM - FN A(6):PM = FN B(6) + DM - FN A(7):PL = FN C(6) + DM - FN A(5): GOTO 9160 9100 PH = FN B(6) + DM - FN A(6):PM = FN C(6) + DM - FN B(7):PL = FN C(6) + DM - FN A(5): GOTO 9160 9110 PH = FN C(6) + DM - FN B(6):PM = FN C(6) + DM - FN B(7):PL = FN C(6) + DM: GOTO 9160 9120 PH = FN C(6) + DM - FN B(6):PM = FN C(6) + DM - FN A(7):PL = FN C(6) + DM: GOTO 9160 9130 PH = FN C(6) + DM - FN A(6):PM = FN C(6) + DM - FN A(7):PL = FN B(6) + FN B(8) + DM: GOTO 9160 9140 PH = FN C(6) + DM - FN A(6):PM = FN C(6) + DM:PL = FN B(6) + FN B(8) + FN A(5) + DM: GOTO 9160 9150 PH = FN C(6) + DM:PM = FN B(6) + FN B(5) + DM:PL = FN B(6) + FN B(8) + FN B(5) + DM: GOTO 9160 9160 PH = PH + V1:PM = PM + V2:PL = PL + V3: IF PH < 0 THEN PH = 0 9170 IF OP > 8 OR OP < 7 THEN PH = 0:PM = 0:PL = 0:CG = 0 9180 IF PM < 0 THEN PM = 0 9190 IF PL < 0 THEN PL = 0 9210 DM = (T1 - T2) + ( - 4 * (P2 < 5)) + (1 * (P2 > 7)):CG = 0:K1 = FN A(5):K2 = FN A(6):K3 = FN A(7): IF TZ = 2 THEN CG = 0: GOTO 9510 9240 IF TZ = 1 THEN ON P1 GOTO 9280,9300,9320,9340,9360,9380,9410,9430,9460,9490 9250 ON P1 GOTO 9270,9290,9310,9330,9350,9370,9400,9420,9450,9480 9260 CG = 0: GOTO 9510 9270 CG = 10 * (K1 + DM - 4) 9280 CG = CG + 5 * (K2 + DM - 4 + V4): GOTO 9510 9290 CG = 10 * (K1 + DM - 2) 9300 CG = CG + 5 * (K2 + DM - 1 + V4): GOTO 9510 9310 CG = 10 * (K1 + DM - 1) 9320 CG = CG + 5 * (K2 + DM + V4): GOTO 9510 9330 CG = 10 * (K1 + DM) 9340 CG = CG + 5 * (K2 + DM + 1 + V4): GOTO 9510 9350 CG = 10 * (K1 + DM + 1) 9360 CG = CG + 5 * (K2 + DM + 2 + V4): GOTO 9510 9370 CG = 10 * (K1 + DM + 2) 9380 CG = CG + 5 * (K2 + DM + 3 + V4):CG = CG + (K3 + DM - 3): GOTO 9510 9400 CG = 10 * (K1 + DM + 3) 9410 CG = CG + 5 * (K2 + DM + 4 + V4):CG = CG + (K3 + DM - 3): GOTO 9510 9420 CG = 10 * (K1 + DM + 4) 9430 CG = CG + 5 * (K2 + DM + 5 + V4):CG = CG + (K3 + DM - 2): GOTO 9510 9450 CG = 10 * (K1 + DM + 5) 9460 CG = CG + 5 * (K2 + DM + 6 + V4):CG = CG + (K3 + DM - 2): GOTO 9510 9480 CG = 10 * (K1 + DM + 6) 9490 CG = CG + 5 * (K2 + DM + 7 + V4):CG = CG + (K3 + DM) 9510 IF CG < 0 THEN CG = 0 9520 RETURN 10000 SP = 255: REM 10001 HOME :FI$ = "SPINWARD": VTAB 4: PRINT "USE SECTOR: > ";FI$: VTAB 4: INPUT "USE SECTOR: > ";F$: IF F$ < > "" THEN FI$ = F$ 10012 PRINT : PRINT "READING SECTOR...": PRINT CHR$ (4);"MONICO": PRINT CHR$ (4);"OPEN ";FI$;".MAP,L7": PRINT CHR$ (4);"READ ";FI$;".MAP,R0": INPUT R: DIM HX$(R),AV(15),PO(32,40),OD(13,13),FL(169),J(169),A$(169): FOR Z = 1 TO R: VTAB 15: PRINT CHR$ (4);"READ ";FI$;".MAP,R";Z: INPUT A$:X = VAL ( LEFT$ (A$,2)):Y = VAL ( MID$ (A$,3,2)):PO(X,Y) = Z 10032 IF MID$ (A$,5,1) = "T" THEN PO(X,Y) = PO(X,Y) * ( - 1) 10034 HX$(Z) = LEFT$ (A$,4): NEXT : PRINT CHR$ (4);"CLOSE": PRINT CHR$ (4);"NOMONICO":DA = 1:YR = 1107:DA$ = "001-1107": DEF FN A(N) = INT ( RND (5) * 6) + 1: DEF FN B(N) = FN A(N) + FN A(N): DEF FN C(N) = FN B(N) + FN A(N): DEF FN D(N) = FN C(N) + FN A(N):BL$ = "------------------------------------" 10170 TEXT : HOME : PRINT FI$;" ";TI$;" ";NA$;: HTAB 30: PRINT " ";DA$: PRINT "0";BL$: PRINT CHR$ (4);"OPEN OD JUMP": PRINT CHR$ (4);"READ OD JUMP": FOR X = 1 TO 13: FOR Y = 1 TO 13: INPUT OD(X,Y): NEXT : NEXT : PRINT CHR$ (4);"CLOSE": PRINT CHR$ (4);"OPEN DATAFILE": PRINT CHR$ (4);"READ DATAFILE": INPUT HE$: FOR X = 0 TO 9: INPUT SE$(X): NEXT : FOR X = 1 TO 15: INPUT AV(X): NEXT : PRINT CHR$ (4);"CLOSE" 20000 REM 20010 HOME : GOSUB 3000: PRINT FI$;" ";TI$;" ";NA$;: HTAB 30: PRINT " ";DA$: PRINT "1";BL$: PRINT CHR$ (4);"OPEN SHIPS, L100": FOR X = 0 TO 25 STEP 2: PRINT CHR$ (4);"READ SHIPS, R";X + 1: INPUT A$: VTAB (X / 2) + 4: PRINT CHR$ (X + 65);" "; MID$ (A$,69,16): PRINT CHR$ (4);"READ SHIPS, R";X + 2: INPUT A$: VTAB (X / 2) + 4: HTAB 20: PRINT CHR$ (X + 66);" "; MID$ (A$,69,16): NEXT : PRINT CHR$ (4);"CLOSE" 20150 PRINT : INPUT "SELECT YOUR SHIP? > ";A$:A$ = LEFT$ (A$ + "A",1):TY = ASC (A$) - 64: IF TY < 1 OR TY > 26 THEN 20150 20170 GOSUB 1500: IF A$ = "/" THEN 20000 20175 HOME : PRINT "SHIP CHARACTERISTICS": PRINT BL$: INPUT "SHIP NAME? > ";A$: IF A$ = "" THEN 20200 20190 NA$ = A$ 20200 PRINT "CREW SKILLS: ": INPUT " STEWARD- ";A$: GOSUB 1000:V1 = VAL (A$):SA = SA + (V1 * 300): INPUT " ADMIN- ";A$: GOSUB 1000:V2 = VAL (A$): INPUT " STREETWISE- ";A$: GOSUB 1000:V3 = VAL (A$): INPUT " LIAISON- ";A$: GOSUB 1000:V4 = VAL (A$): INPUT "CREDIT BALANCE? > ";CR$:CR = VAL (CR$) 20300 VTAB 13: PRINT "STARTPOINT? (0000) > ";HX$(SP) 20310 VTAB 13: INPUT "STARTPOINT? (0000) > ";A$: IF A$ = "" THEN 20381 20320 A$ = RIGHT$ ("0000" + A$,4):X = VAL ( LEFT$ (A$,2)):Y = VAL ( RIGHT$ (A$,2)): IF Y < 1 OR Y > 40 OR X < 1 OR X > 32 THEN 20310 20360 IF PO(X,Y) < > 0 THEN SP = ABS (PO(X,Y)) 20370 IF PO(X,Y) = 0 THEN PRINT "INVALID STARTPOINT.": GOTO 20300 20380 PRINT "NEW STARTPOINT: ";HX$(SP) 20381 VTAB 15: PRINT "DATE? (000-0000) > ";DA$: VTAB 15: INPUT "DATE? (000-0000) > ";A$: IF A$ = "" THEN 20390 20383 DD = VAL ( LEFT$ (A$,3)): IF DD < 1 OR DD > 365 THEN 20381 20385 YR = VAL ( MID$ (A$,5)): GOSUB 3000: PRINT "DATE: ";DA$ 20390 PRINT : PRINT "PROCESSING...":A = SP 30020 X = FRE (X): HOME : GOSUB 3000: PRINT FI$;" ";TI$;" ";NA$;: HTAB 30: PRINT " ";DA$: PRINT "2";BL$: GOSUB 2000:XC = VAL ( LEFT$ (A$,2)):YC = VAL ( MID$ (A$,3,2)): PRINT "SYSTEM: "; LEFT$ (A$,14);:A$(0) = A$: HTAB 30: PRINT MID$ (A$,33): PRINT "OVERHEAD: "; INT (OH);" (MAX= ";OV;"). ": PRINT "CR BALANCE: "; INT (CR);: IF UF > 0 THEN PRINT " UNREFINED FUEL."; 30120 PRINT :A1$ = A$(0): IF MSG = 1 AND CG$ = HX$(A) THEN PRINT "MESSAGE DELIVERED.":MSG = 0:BB$ = "":CG$ = "" 30150 IF OP = 5 AND MSG = 1 THEN PRINT "MESSAGE TO: ";BB$ 30160 IF OP = 6 THEN PRINT XR;" UNSURVEYED WORLDS." 30180 GOSUB 7000: IF B < > 0 THEN PRINT "CARGO: ";CG$: GOTO 30220 30200 PRINT "CARGO HERE: ";CA$:B$ = CA$ 30220 PRINT "FARES RCVD: ";(PH * 10000) + (PM * 8000) + (PL * 1000) + (CG * 1000): PRINT "FARES- HI "; SPC( PH < 10);PH;" MD "; SPC( PM < 10);PM;" LO "; SPC( PL < 10);PL;" CG "; SPC( CG < 10); SPC( CG < 100);CG: VTAB 11: PRINT "--------------DESTINATIONS-------------": GOSUB 6000 30260 VTAB 12: PRINT " # HEX SHGZB AL PRICE PROFIT FARES?": PRINT "--";BL$: IF FL = 0 THEN PRINT "YOUR SHIP CAN'T REACH ANY WORLDS.": END 30280 PRINT CHR$ (4);"OPEN ";FI$;",L50" 30290 I = 1:I1 = 1 30300 PRINT CHR$ (4);"READ ";FI$;",R";FL(I): INPUT A1$: PRINT CHR$ (4):XPL = 0: IF MID$ (A1$,42,1) = "*" OR MID$ (A1$,16,1) = "S" OR MID$ (A1$,16,1) = "W" OR MID$ (A1$,16,1) = "A" OR MID$ (A1$,16,1) = "B" THEN XPL = 1 30350 E$ = MID$ (A1$,6,1):F$ = " ": IF VAL ( MID$ (A1$,9,1)) > 0 AND MID$ (A1$,8,1) > "1" THEN F$ = "O" 30380 IF VAL ( MID$ (A1$,9,1)) > 0 AND MID$ (A1$,8,1) < "2" THEN F$ = "I" 30390 E$ = E$ + F$ + MID$ (A1$,38,1) + MID$ (A1$,36,1) + MID$ (A1$,16,1) + " " + MID$ (A1$,33,2) + " ": GOSUB 4000: IF OP = 5 AND MSG = 0 AND ( MID$ (A1$,16,1) = "N" OR MID$ (A1$,16,1) = "A") THEN MSG = 1:BB$ = HX$( INT ( RND (R) * R) + 1) 30420 IF OP = 9 OR OP = 5 OR OP = 6 THEN 30470 30430 GOSUB 7000: IF B < > 0 THEN CC = VAL ( MID$ (CG$,23)):B$ = CG$ 30450 GOSUB 8000: GOSUB 9000 30470 A$(I) = A$:CA = VAL ( MID$ (B$,23)): VTAB I1 + 13: PRINT SPC( I < 10);I;". ";: PRINT HX$(FL(I));" ";: IF OP = 6 AND XPL = 0 THEN PRINT " UNSURVEYED.": GOTO 30670 30530 PRINT E$;: IF SL$ = "U" AND ( MID$ (A1$,6,1) > "C" AND MID$ (A1$,38,1) < > "G") THEN PRINT "INACCESSIBLE.": GOTO 30680 30550 IF OP > 7 AND MID$ (A1$,40,1) = " " THEN PRINT "NOT A TRADEWORLD.": GOTO 30680 30560 IF OP = 5 AND MSG = 1 AND HX$(FL(I)) = BB$ THEN PRINT "MESSAGE ADDRESSEE.": GOTO 30670 30570 IF OP = 9 OR OP = 5 OR OP = 6 THEN PRINT " ": GOTO 30670 30580 G$ = RIGHT$ (" " + STR$ ( INT (CC)),6): HTAB 19: PRINT G$;:G$ = RIGHT$ (" " + STR$ ( INT (CC - CA)),6): HTAB 25: PRINT G$;" ";: IF PH > SR - CW THEN PH = SR - CW 30620 IF PM > SR - (CW + PH) THEN PM = SR - (CW + PH) 30630 IF PL > LP THEN PL = LP 30640 IF CG > CH THEN CG = CH 30650 PF = (PH * 10000) + (PM * 8000) + (PL * 1000) + (CG * 1000): HTAB 33: PRINT SPC( PF < 10); SPC( PF < 100); SPC( PF < 1000); SPC( PF < 10000); SPC( PF < 100000); INT (PF) 30670 GOTO 30710 30680 PRINT CHR$ (4): IF I = FL THEN 30760 30700 IF FL(I + 1) = 0 THEN 30760 30710 IF I = FL THEN 30760 30720 IF I1 < 6 THEN I1 = I1 + 1:I = I + 1: GOTO 30300 30730 VTAB 21: INPUT "SHOW MORE? (Y/N) > ";A$: GOSUB 1000: IF A$ < > "Y" THEN 30760 30750 I1 = 1:I = I + 1: GOTO 30300 30760 VTAB 21: INPUT "WHAT DESTINATION? > ";A$: IF A$ = "A" THEN 30290 30780 IF A$ = "" THEN 30760 30790 DE = VAL (A$): IF DE > FL OR DE < 1 THEN 30730 30800 JF = J(DE):DE = FL(DE): VTAB 11: HTAB 33: PRINT HX$(DE): IF OP = 9 OR OP = 5 THEN DA = DA + 1: GOTO 31230 30830 IF OP = 6 THEN DA = DA + 7: GOTO 31230 30850 A = DE: GOSUB 2000:A1$ = A$: GOSUB 4000: GOSUB 9000: IF PH > SR - CW THEN PH = SR - CW 30910 IF PM > SR - (CW + PH) THEN PM = SR - (CW + PH) 30920 IF PL > LP THEN PL = LP 30930 IF CG + B > CH THEN CG = CH - B 30940 VTAB 21: INPUT "BOARD PASSENGERS & FREIGHT? > ";A$: GOSUB 1000: IF A$ = "W" THEN INPUT "WAIT HOW MANY DAYS? > ";A$: GOSUB 1000:DA = DA + VAL (A$): GOTO 30940 30942 IF A$ = "N" THEN PH = 0:PM = 0:PL = 0:CG = 0: GOTO 31000 30944 IF A$ = "P" THEN CG = 0 30946 IF A$ = "F" THEN PH = 0:PM = 0:PL = 0 30950 PF = (PH * 10000) + (PM * 8000) + (PL * 1000) + (CG * 1000): IF MID$ (SH$,89,1) = "S" THEN CR = CR + INT (PF / 2): GOTO 30980 30970 CR = CR + PF 30980 PRINT "FARES= ";PF;: IF MID$ (SH$,89,1) = "S" THEN PRINT " LESS 50% FOR SUBSIDY."; 30990 PRINT 31000 VTAB 23: PRINT "HI: ";PH;" MID: ";PM;" LOW: ";PL;" CARGO: ";CG;" TONS.": IF B < > 0 THEN 31200 31020 IF CR < CC THEN 31200 31030 IF CG + B = CH THEN 31200 31040 VTAB 21: CALL - 868: INPUT "BUY GOODS? > ";A$: GOSUB 1000: IF A$ < > "Y" THEN 31220 31050 IF A$ = "Y" THEN VTAB 21: CALL - 868: INPUT "HOW MANY TONS? > ";A$ 31060 IF A$ = "" THEN A$ = "9999" 31070 BC = VAL (A$): IF BC < 1 THEN BC = 0: GOTO 31190 31080 BA = CH - CG:A1$ = A$(0): GOSUB 7000:BB = INT (CR / CC): IF (BC > BA) THEN BC = BA 31130 IF BC > BB THEN BC = BB 31140 B$ = A$:CG$ = B$:CW$ = A$(0):CR = CR - (BC * CC): VTAB 21: HTAB 20: PRINT " ";BC;" FOR ";(BC * CC) 31190 HTAB 20: INPUT "ADVANCE DELIVERY? > ";A$: GOSUB 1000: IF A$ = "Y" THEN CR = CR - (.2 * (BC * CC)):DA = DA + 3: GOTO 31230 31200 REM 31210 IF PM = 0 AND PH = 0 AND PL = 0 AND CG = 0 AND BC = 0 THEN INPUT "LEAVE IMMEDIATELY? > ";A$: GOSUB 1000: IF A$ = "Y" THEN DA = DA + 1: GOTO 31230 31220 DA = DA + 5 31230 REM 31240 A = DE:XF = VAL ( LEFT$ (A1$,2)):YF = VAL ( MID$ (A1$,3,2)):FY = FY - ((JF * TN / 10) + (10 * PN)): IF FY < 0 AND MID$ (B$,5,5) = "HI IN" THEN FY = FY + B:B$ = " ":B = 0 31290 DA = DA + 9:A = DE: GOSUB 2000:XC = VAL ( LEFT$ (A$,2)):YC = VAL ( MID$ (A$,3,2)):A$(0) = A$: IF SE = 1 OR SE = 2 THEN 40000 31370 Z1 = FN B(5) + (UF > 0) + (MNT > 0): IF Z1 < 13 THEN 40000 31380 PRINT "MISJUMP (";Z1;"): ";:X = INT ( RND (6) * 32) + 1:Y = INT ( RND (4) * 40) + 1:A = PO(X,Y): IF A = 0 THEN PRINT NA$;" IS LOST IN DEEP SPACE (HEX ";X;Y;"). ALL CARGO, CREW, AND PASSENGERS ARE LOST." 31420 A = ABS (A): IF A < > 0 THEN 31440 31430 IF A < > 0 THEN PRINT "SHIP IS THROWN TO "; LEFT$ (A$,4);"." 31440 INPUT "CONTINUE? > ";Z$: IF DE < > A AND LEFT$ (Z$ + " ",1) = "I" THEN 40000 31460 DE = A: IF A = 0 THEN END 40000 REM 40010 CR = CR - ((CW + PH + PM) * 2000) + (LP * 100): HOME : GOSUB 3000: VTAB 1: PRINT FI$;" ";TI$;" ";NA$;: HTAB 30: PRINT " ";DA$: PRINT "3";BL$: PRINT "LIFE SUPPORT COSTS: ";((CW + PH + PM) * 2000) + (LP * 100): PRINT "FUEL USED: ";FU - FY:A = DE:XL = 1: GOSUB 2000:XL = 0:A$ = A$(0): PRINT "SYSTEM: "; LEFT$ (A$,14); 40140 HTAB 30: PRINT MID$ (A$,33,2);" "; MID$ (A$,36,1): IF OP = 9 AND MID$ (A$,40,1) < > " " THEN PRINT "XBOAT TENDER REFUELS SHIP.":FY = FU:DA = DA + 1: GOTO 40440 40160 IF ( MID$ (A$(0),16,1) = "S" OR MID$ (A$(0),16,1) = "W" OR MID$ (A$(0),16,1) = "A" OR MID$ (A$(0),16,1) = "B") AND SE = 2 THEN PRINT "SCOUT BASE REFUELS SHIP.":FY = FU: GOTO 40440 40170 IF ( MID$ (A$(0),16,1) = "N" OR MID$ (A$(0),16,1) = "D" OR MID$ (A$(0),16,1) = "A" OR MID$ (A$(0),16,1) = "B") AND SE = 1 THEN PRINT "NAVAL BASE REFUELS SHIP.":FY = FU: GOTO 40440 40180 PRINT "GAS GIANT: ";:C$ = "ABSENT.":GG = 0: IF MID$ (A$(0),38,1) = "G" THEN C$ = "PRESENT.":GG = 1 40190 PRINT C$;: IF SL$ = "U" THEN PRINT : GOTO 40270 40210 HTAB 22: PRINT "OCEANS: ";:C$ = "ABSENT. ":HY = 0: IF ASC ( MID$ (A$(0),9,1)) > 48 AND ASC ( MID$ (A$(0),8,1)) < 50 THEN C$ = "ICE-CAPPED.":HY = 2 40250 IF ASC ( MID$ (A$(0),9,1)) > 48 AND VAL ( MID$ (A$(0),8,1)) > 1 THEN C$ = "PRESENT. ":HY = 1 40260 PRINT C$ 40270 IF GG = 1 THEN INPUT "SKIM GAS GIANT? > ";A$ 40280 GOSUB 1000: IF A$ = "Y" THEN DA = DA + 2:FY = FU:UF = UF + 1: GOTO 40430 40290 IF HY = 1 AND SL$ < > "U" THEN INPUT "OCEAN REFUEL? > ";A$ 40300 GOSUB 1000: IF A$ = "Y" THEN DA = DA + 1:FY = FU:UF = UF + 1: GOTO 40430 40310 IF HY = 2 THEN INPUT "ICECAP REFUEL? > ";A$ 40320 GOSUB 1000: IF A$ = "Y" THEN DA = DA + 4:FY = FU:UF = UF + 1: GOTO 40430 40330 IF FY > = FU THEN 40440 40340 RF = 0: IF MID$ (A$(0),6,1) = "A" OR MID$ (A$(0),6,1) = "B" THEN RF = 1 40350 IF RF = 1 THEN PRINT "REFINED AND "; 40360 PRINT "UNREFINED FUEL AVAILABLE.": IF MID$ (SH$,28,1) = "U" AND MID$ (A$(0),6,1) > "C" THEN PRINT "SURFACE REFUELLING FACILITIES ARE INACCESSIBLE. REFUELLING TAKES 14 DAYS.":DA = 14: GOSUB 3000:UF = UF + 1:FY = FU: GOTO 40440 40380 INPUT "REFUEL WITH (R/U) > ";A$:A$ = LEFT$ (A$ + "R",1): IF A$ = "R" AND RF = 0 THEN A$ = "U" 40400 IF A$ = "R" THEN CF = (FU - FY) * 500:FY = FU:UF = UF - 1 40410 IF A$ = "U" THEN CF = (FU - FY) * 100:FY = FU:UF = UF + 1 40420 IF CF < > 0 THEN PRINT "BOUGHT CR";CF;" OF FUEL." 40430 IF UF < 1 THEN UF = 0 40440 PRINT :B = BC: IF OP < > 7 THEN 50000 40480 PRINT CHR$ (4);"OPEN ";FI$;", L50": PRINT CHR$ (4);"WRITE ";FI$;", R";DE: PRINT LEFT$ (A$(0),41);"* ": PRINT CHR$ (4);"CLOSE" 50000 REM 50001 IF B < 1 THEN 50350 50010 VTAB 11: GOSUB 3000: PRINT FI$;" ";TI$;" ";NA$;: HTAB 30: PRINT " ";DA$: PRINT "4";BL$:B$ = CG$:A1$ = A$(0): GOSUB 7000: GOSUB 8000: PRINT B;" TONS OF ";: PRINT B$: PRINT "BASE COST: "; MID$ (B$,19);: HTAB 21: PRINT "BASE PRICE: ";CC:CB = VAL ( MID$ (B$,23)): INPUT "SELL GOODS? > ";A$: GOSUB 1000: IF A$ < > "Y" THEN 50420 50140 BR = ASC ( MID$ (A$(0),6,1)) - 64:BR = 5 - BR: IF BR < 1 THEN PRINT "NO BROKERS AVAILABLE.":BR = 0: GOTO 50230 50170 IF BR = 1 THEN PRINT "BROKER-1 AVAILABLE." 50180 IF BR > 1 THEN PRINT "BROKER-1 TO ";BR;" AVAILABLE." 50190 INPUT "USE A BROKER? > ";A$: GOSUB 1000: IF LEFT$ (A$,1) = "Y" THEN INPUT "WHICH NUMBER? > ";A$ 50210 IF VAL (A$) < 0 OR VAL (A$) > BR THEN 50190 50220 BR = VAL (A$) 50230 A$ = A$(0): PRINT B;" TONS AT CR";CB;" BASE COST.": GOSUB 5000:E = INT (100 * CD / CB): IF E = 100 THEN PRINT "SOLD AT NO PROFIT.": GOTO 50300 50280 IF E < 100 THEN PRINT "SOLD AT ";100 - E;"% LOSS.": GOTO 50300 50290 IF E > 100 THEN PRINT "SOLD AT ";E - 100;"% PROFIT.": GOTO 50300 50300 PRINT "BROKER COMMISSION: ";BR * 5;"%.": PRINT "PROCEEDS: ";CC;" ("; INT (CC / B);" PER TON).":CR = CR + CC:B$ = "":B = 0:BC = 0 50350 IF MNT < 1 THEN 50410 50360 PRINT FI$;" ";TI$;" ";NA$;: HTAB 30: PRINT " ";DA$: PRINT "6";BL$: IF MNT > 0 THEN PRINT : PRINT "THE SHIP NEEDS ANNUAL MAINTENANCE." 50375 IF OP = 5 AND ( MID$ (A$(0),26,1) = "B" OR MID$ (A$(0),26,1) = "W") THEN 50380 50377 IF ST < 3 THEN 50380 50379 GOTO 50400 50380 INPUT "PERFORM IT NOW? > ";A$: GOSUB 1000: IF A$ = "Y" THEN DA = DA + 14:MNT = 0: PRINT "MAINTENANCE COST: ";((CST * 1E + 6) * .001) 50400 REM 50410 VTAB 23: INPUT "CONTINUE? > ";Z$ 50420 OH = (LP * 100) + ((PH + PM + CW) * 2000) + (SAL * .5) + 100 + ((.001 / 24) * 1E + 6 * CST) + (SAL / 24):CR = CR - OH: GOTO 30020