1000 FILES * 1010 REM BY JEFF BROWN / ARAGON - SAN MATEO - CALIF. / 11/08/74 1020 REM MODIFIED BY JEFF BROWN FROM BOCES BASIC TO HP BASIC 12/12/75 1030 REM 'TREK' ** THE STAR TREK GAME ** 8075 WORDS = 32 RECORDS. 1040 REM INSTRUCRIONS ARE CHAINED TO THIS PROGRAM IN PROGRAM *TREKB1 1050 DEF FND(Z)=((FNI(Z)-Z1)^2) MAX ((FNJ(Z)-Z2)^2) 1060 DEF FNE(M)=INT(-M*LOG(RND(0))+.5) 1070 DEF FNI(Z)=INT((Z+7)/8) 1080 DEF FNJ(Z)=Z-8*FNI(Z)+8 1090 DEF FNL(X)=INT((X+RND(0)*X)/((K3 AND D0)*((K3>4)+(K3>6)+(K3>7))+1)) 1100 DEF FNR(X)=INT(RND(0)*64)+1 1110 DEF FNS(X)=8*X+Z2-8 1120 DIM C[9,2],D[8],G[8,8],N[3,3],Q[68,4],Z[8,8],Y[8] 1130 DIM D$[72],E$[20],T$[32],Y$[55],Z$[1],C$[6],P$[19],N$[13],F$[11] 1140 PRINT LIN(4);TAB(26)"STAR TREK"LIN(3) 1150 PRINT "DO YOU WANT INSTRUCTIONS ? (THEY'RE LONG) ? "; 1160 LINPUT Z$[1,1] 1170 IF Z$#"Y" THEN 1220 1180 CHAIN B5,"*TREKB1" 1190 PRINT " SORRY, THE INSTRUCTIONS ARE NOT IN. THEY ARE NORMALLY" 1200 PRINT "CHAINED TO IN PROGRAM '*TREKB1'. THIS PROGRAM IS MISSING. TELL" 1210 PRINT "YOUR TEACHER OR THE SYSTEM MANAGER TO HAVE THIS CORRECTED."LIN(2) 1220 N$="0123456789., " 1230 P$=" <*> * >!< +++" 1240 F8=4 1250 R8=55000. 1260 S7=1000 1270 E0=5000 1280 P0=10 1290 S9=200 1300 C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1 1310 C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0 1320 C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1 1330 D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL" 1340 D$[49]="PHOTON TUBESSHIELD CNTRL" 1350 E$="DAMAGE CNTRLCOMPUTER" 1360 PRINT "DO YOU WISH TO RETRIEVE A FILE (YES OR NO) ? "; 1370 LINPUT Z$[1,1] 1380 IF Z$="Y" THEN 7650 1390 E=E0 1400 P=P0 1410 S=P3=N0=T1=0 1420 T0=T=INT(20*RND(0)+20)*100 1430 T9=2 1440 Q2=FNR(0) 1450 Q1=FNI(Q2) 1460 Q2=FNJ(Q2) 1470 S2=FNR(0) 1480 S1=FNI(S2) 1490 S2=FNJ(S2) 1500 MAT D=ZER 1510 K9=K8=B9=0 1520 FOR I=1 TO 8 1530 FOR J=1 TO 8 1540 R1=RND(0) 1550 K3=(R1>.98)+(R1>.96)+(R1>.94)+(R1>.92)+(R1>.9)+(R1>.85)+(R1>.8)+(R1>.75) 1560 K9=K9+K3 1570 T9=T9+(K3>0) 1580 IF RND(1)>.96 THEN 1620 1590 B3=0 1600 K8=K8+K3 1610 GOTO 1650 1620 B3=1 1630 B9=B9+1 1640 T9=T9-1 1650 S3=INT(RND(0)*8)+1 1660 G[I,J]=K3*100+B3*10+S3 1670 Z[I,J]=0 1680 NEXT J 1690 NEXT I 1700 T7=T9+INT(K8/10)-1 1710 T9=T9+INT((K8+5)/10) 1720 T9=20 MAX (T9+INT(4*RND(0)+.5)) 1730 IF B9 <= 0 OR K9 <= 0 THEN 1510 1740 K7=K9 1750 PRINT LIN(2) 1760 PRINT USING 1770;K9,T9,B9 1770 IMAGE"YOU MUST DESTROY",4DX,"KLINGONS IN",4DX,"STARDATES WITH",3DX,"STARBASES." 1780 MAT Q=ZER 1790 FOR I=65 TO 68 1800 Q[I,3]=Q[I,4]=I 1810 NEXT I 1820 K3=B3=G[Q1,Q2] 1830 K3=INT(.01*K3) 1840 B3=S3=(B3-100*K3) 1850 B3=INT(.1*B3) 1860 S3=S3-10*B3 1870 IF NOT K3 OR S>200 THEN 1900 1880 PRINT "COMBAT AREA CONDITION RED" 1890 PRINT " SHIELDS DANGEROUSLY LOW" 1900 IF P3 THEN 2150 1910 Z1=S1 1920 Z2=S2 1930 Q[FNS(Z1),1]=1 1940 Z0=65 1950 FOR I=1 TO K3 1960 GOSUB 6270 1970 Q[Z,1]=4 1980 Q[Z,2]=S9 1990 GOSUB 6300 2000 NEXT I 2010 Z0=66 2020 FOR I=1 TO B3 2030 GOSUB 6270 2040 Q[Z,1]=3 2050 Q[Z,2]=S7 2060 GOSUB 6300 2070 NEXT I 2080 Z0=67 2090 FOR I=1 TO S3 2100 GOSUB 6270 2110 Q[Z,1]=2 2120 Q[Z,2]=S7 2130 GOSUB 6300 2140 NEXT I 2150 GOSUB 5080 2160 P3=0 2170 IF E+(S*(D[6] >= 0))<10 AND (D[5]<0 OR P=0 OR K3=0) THEN 4740 2180 IF N0 THEN 2360 2190 PRINT "COMMAND "; 2200 ENTER FNL(35),H,Y$ 2210 PRINT 2220 IF H#-256 THEN 2360 2230 GOSUB 2250 2240 GOTO 2170 2250 PRINT '10"YOUR INDECISIVENESS IS JEOPARDIZING THE ENTERPRISE!"'7 2260 N0=0 2270 T7=T7-.5 2280 IF NOT K3 THEN 2340 2290 PRINT LIN(1)"KLINGONS FIRING:"LIN(1) 2300 GOSUB 4550 2310 PRINT LIN(1) 2320 IF S<0 THEN 4950 2330 RETURN 2340 PRINT "YOU'RE SAFE!"'7" THERE ARE NO KLINGONS IN THIS QUADRANT."LIN(1) 2350 RETURN 2360 IF Y$[1,5]="GSCAN" THEN 6660 2370 IF Y$[1,3]="FIX" THEN 7380 2380 IF Y$[1,4]="SAVE" THEN 7810 2390 IF Y$="SELF-DESTRUCT" THEN 8320 2400 GOSUB 6710 2410 IF N4 OR N5 THEN 2190 2420 GOTO N1+1 OF 2540,5330,3460,3630,3910,4290,4430,5730 2430 PRINT 2440 PRINT " 0 = SET COURSE" 2450 PRINT " 1 = SHORT RANGE SENSOR SCAN" 2460 PRINT " 2 = LONG RANGE SENSOR SCAN" 2470 PRINT " 3 = FIRE PHASERS" 2480 PRINT " 4 = FIRE PHOTON TORPEDOES" 2490 PRINT " 5 = SHIELD CONTROL" 2500 PRINT " 6 = DAMAGE CONTROL REPORT" 2510 PRINT " 7 = CALL ON LIBRARY COMPUTER" 2520 PRINT 2530 GOTO 2190 2540 GOSUB 7090 2550 IF N4 THEN 2190 2560 IF N0 THEN 2630 2570 PRINT "WARP FACTOR "; 2580 ENTER FNL(15),H,Y$ 2590 PRINT 2600 IF H#-256 THEN 2630 2610 GOSUB 2250 2620 GOTO 2570 2630 GOSUB 6710 2640 GOTO N4 OF 2550,2570 2650 W1=N1 2660 N=INT(8*(W1+N2*N3)+.5) 2670 E3=5*N+5 2680 IF D[1] >= 0 OR N <= 2 THEN 2710 2690 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2" 2700 GOTO 2540 2710 GOSUB 4550 2720 IF S<0 THEN 4950 2730 IF N <= 97 THEN 2760 2740 PRINT "WARP ENGINE BLOWOUT - DAMAGE CONTROL EFFECTING REPAIR." 2750 D[1]=(D[1] MIN 1)-3*RND(0) 2760 IF E >= E3 THEN 2800 2770 PRINT "YOU HAVE ONLY"E" UNITS OF ENERGY" 2780 PRINT "YOU NEED"E3" FOR THAT MANEUVER" 2790 GOTO 2190 2800 FOR I=1 TO 8 2810 D[I]=D[I]+(D[I]<0) 2820 NEXT I 2830 IF RND(1)>.2 THEN 2980 2840 R9=.5 2850 GOSUB 2870 2860 GOTO 2980 2870 R1=INT(RND(1)*8+1) 2880 PRINT LIN(2);"DAMAGE CONTROL REPORT : "; 2890 IF RND(1) >= R9 THEN 2940 2900 D[R1]=D[R1]-(RND(1)*5+1) 2910 GOSUB 6590 2920 PRINT " DAMAGED"LIN(1) 2930 RETURN 2940 D[R1]=D[R1]+(RND(1)*5+1) 2950 GOSUB 6590 2960 PRINT " STATE OF REPAIR IMPROVED"LIN(1) 2970 RETURN 2980 Z1=S1 2990 Z2=S2 3000 Q[FNS(Z1),1]=0 3010 FOR I=1 TO N 3020 Z1=S1+INT(I*X1+.5) 3030 Z2=S2+INT(I*X2+.5) 3040 IF Z1 MIN Z2 <= 0 OR Z1 MAX Z2 >= 9 THEN 3210 3050 IF NOT Q[FNS(Z1),1] THEN 3110 3060 PRINT USING 3070;Z1,Z2 3070 IMAGE"WARP ENGINES SHUTDOWN AT SECTOR",2XDX,",",XD 3080 Z1=S1+INT((I-1)*X1+.5) 3090 Z2=S2+INT((I-1)*X2+.5) 3100 GOTO 3120 3110 NEXT I 3120 S1=Z1 3130 S2=Z2 3140 Q[FNS(Z1),1]=1 3150 E=E-E3 3160 GOSUB 5080 3170 IF W1<1 THEN 3190 3180 T=T+1 3190 IF T>T0+T9 THEN 4930 3200 GOTO 2170 3210 Q0=0 3220 Y1=8*Q1+S1-1 3230 Y2=8*Q2+S2-1 3240 X=Y1+N*X1 3250 Y=Y2+N*X2 3260 Q1=INT(X/8) 3270 Q2=INT(Y/8) 3280 S1=INT(X-8*Q1+1.5) 3290 S2=INT(Y-8*Q2+1.5) 3300 IF Q1 MIN Q2 >= 1 AND Q1 MAX Q2 <= 8 THEN 3340 3310 N=N-1 3320 Q0=1 3330 GOTO 3240 3340 IF S1<9 AND S2<9 THEN 3390 3350 S1=S1 MIN 8 3360 S2=S2 MIN 8 3370 PRINT "YOU HAVE ENCOUNTERED THE BARRIER - S.R. SENSORS DAMAGED." 3380 D[2]=(D[2] MIN 1)-RND(0)*5 3390 T=T+1 3400 E=E-E3 3410 IF NOT Q0 THEN 3440 3420 PRINT "WARP ENGINES SHUTDOWN AT EDGE OF GALAXY" 3430 T=T+1 3440 IF T>T0+T9 THEN 4930 3450 GOTO 1780 3460 IF D[3] >= 0 THEN 3490 3470 PRINT "LONG RANGE SENSORS ARE INOPERABLE" 3480 GOTO 2190 3490 PRINT USING 3500;Q1,Q2 3500 IMAGE"LONG RANGE SCAN FOR QUADRANT",3XDX,",",XD 3510 MAT N=ZER 3520 FOR I=(Q1-1) MAX 1 TO (Q1+1) MIN 8 3530 I0=I-Q1+2 3540 FOR J=(Q2-1) MAX 1 TO (Q2+1) MIN 8 3550 N[I0,J-Q2+2]=G[I,J] 3560 IF D[8]<0 THEN 3580 3570 Z[I,J]=G[I,J] 3580 NEXT J 3590 NEXT I 3600 MAT PRINT USING 3610;N 3610 IMAGE 3(19("-"),":::",3(4D,":"),"::",19("-")/) 3620 GOTO 2170 3630 IF K3 <= 0 THEN 4530 3640 GOTO (D[4] >= 0)*(1+(D[8] >= 0)) OF 3670,3680 3650 PRINT "PHASER CONTROL IS DISABLED" 3660 GOTO 2190 3670 PRINT "COMPUTER FAILURE HAMPERS ACCURACY" 3680 IF E>15 THEN 3710 3690 PRINT "YOUR DILITHIUM CRYSTALS ARE DRAINED. NO POWER TO FIRE PHASERS." 3700 GOTO 2190 3710 PRINT "PHASERS ENERGIZED" 3720 PRINT "ENERGY AVAILABLE ="E" NUMBER OF UNITS TO FIRE ? "; 3730 ENTER FNL(12),H,X 3740 PRINT 3750 GOTO 1+(H<0)+(H=-256) OF 3780,3720,3760 3760 GOSUB 2250 3770 GOTO 3720 3780 IF X <= 0 THEN 2190 3790 IF E-X<0 THEN 3720 3800 E=E-X 3810 GOSUB 4550 3820 IF S<0 THEN 4950 3830 IF D[8] >= 0 THEN 3850 3840 X=X*(1 MIN (2*RND(0))) 3850 Z0=65 3860 Z1=S1 3870 Z2=S2 3880 GOSUB 7240 3890 IF K9 <= 0 THEN 4990 3900 GOTO 2170 3910 IF D[5] >= 0 THEN 3940 3920 PRINT "PHOTON TUBES ARE NOT OPERATIONAL" 3930 GOTO 2190 3940 IF P>0 THEN 3970 3950 PRINT "ALL PHOTON TORPEDOES ARE EXPENDED" 3960 GOTO 2190 3970 GOSUB 7090 3980 IF N4 THEN 2190 3990 P=P-1 4000 I=0 4010 I=I+1 4020 Z1=INT(S1+I*X1+.5) 4030 Z2=INT(S2+I*X2+.5) 4040 IF Z1 MIN Z2 <= 0 OR Z1 MAX Z2 >= 9 THEN 4240 4050 Z=FNS(Z1) 4060 GOTO Q[Z,1]+1 OF 4010,4010,4190,4210,4220 4070 GOSUB 6350 4080 X=.75*S7*(1+RND(0)) 4090 Z=Q[68,3] 4100 IF Z=68 THEN 4250 4110 Z1=FNI(Z) 4120 Z2=FNJ(Z) 4130 FOR Z0=65 TO 67 4140 GOSUB 7240 4150 NEXT Z0 4160 Z=FNS(Z1) 4170 GOSUB 6350 4180 GOTO 4090 4190 PRINT "YOU CAN'T DESTROY STARS SILLY" 4200 GOTO 4250 4210 PRINT "NICE GOING --"; 4220 GOSUB 6350 4230 GOTO 4250 4240 PRINT "TORPEDO MISSED" 4250 GOSUB 4550 4260 IF S<0 THEN 4950 4270 IF K9 <= 0 THEN 4990 4280 GOTO 2170 4290 IF D[6] >= 0 THEN 4320 4300 PRINT "SHIELD CONTROL IS NON-OPERATIONAL" 4310 GOTO 2190 4320 PRINT "ENERGY AVAILABLE ="E+S" NUMBER OF UNITS TO SHIELDS ? "; 4330 ENTER FNL(18),H,X 4340 PRINT 4350 GOTO 1+(H<0)+(H=-256) OF 4380,4320,4360 4360 GOSUB 2250 4370 GOTO 4320 4380 IF X<0 THEN 4320 4390 IF E+S-X<0 THEN 4320 4400 E=E+S-X 4410 S=X 4420 GOTO 2170 4430 IF D[7] >= 0 THEN 4460 4440 PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE" 4450 GOTO 2190 4460 PRINT LIN(1)"DEVICE STATE OF REPAIR" 4470 FOR R1=1 TO 8 4480 GOSUB 6590 4490 PRINT TAB(16);D[R1] 4500 NEXT R1 4510 PRINT 4520 GOTO 2170 4530 PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT" 4540 GOTO 2170 4550 IF NOT K3 THEN 4730 4560 IF NOT D0 THEN 4590 4570 PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE" 4580 RETURN 4590 Y3=S 4600 Z1=S1 4610 Z2=S2 4620 Z=Z0=65 4630 Z=Q[Z,3] 4640 IF Z=Z0 THEN 4710 4650 H=F8*Q[Z,2]*RND(0)/FND(Z) 4660 S=S-H 4670 IF RND(0)0 AND D0=0) THEN 4890 4770 T7=T7-4 4780 PRINT LIN(1)"STARBASE REPAIR CREW ON THE WAY !"'7 4790 IF D0 THEN 4870 4800 PRINT "THE ENTERPRISE HAS BEEN RESCUED BY THE STARBASE!"'7'7"!"'7"!"LIN(1) 4810 FOR E=1 TO 8 4820 D[E]=D[E] MAX 0 4830 NEXT E 4840 P=P0 4850 E=E0-S 4860 GOTO 2190 4870 GOSUB 5170 4880 GOTO 2190 4890 IF K3 <= 0 THEN 4970 4900 GOSUB 4560 4910 IF S<0 THEN 4950 4920 GOTO 4900 4930 PRINT LIN(2);"IT IS STARDATE"T 4940 GOTO 4970 4950 PRINT 4960 PRINT "THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION IS SCREWED." 4970 PRINT "THERE ARE STILL"K9" KLINGON CRUISERS." 4980 GOTO 5040 4990 PRINT 5000 PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED." 5010 PRINT "THE FEDERATION HAS BEEN SAVED !!!"LIN(2) 5020 PRINT USING 5030;((T7/(T1+(T-T0)))*100) MIN 100 5030 IMAGE"YOUR EFFICIENCY RATING = ",3D.2D,"%" 5040 PRINT LIN(2)"ANOTHER GAME ? "; 5050 LINPUT Z$[1,1] 5060 IF Z$="Y" THEN 1360 5070 STOP 5080 FOR Z1=(S1-1) MAX 1 TO (S1+1) MIN 8 5090 FOR Z2=(S2-1) MAX 1 TO (S2+1) MIN 8 5100 IF Q[FNS(Z1),1]=3 THEN 5150 5110 NEXT Z2 5120 NEXT Z1 5130 D0=0 5140 RETURN 5150 D0=1 5160 C$="DOCKED" 5170 FOR E=1 TO 8 5180 D[E]=D[E] MAX 0 5190 NEXT E 5200 E=E0 5210 P=P0 5220 PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES." 5230 S=0 5240 RETURN 5250 IF K3>0 THEN 5290 5260 IF E= 0 THEN 5370 5350 PRINT LIN(1)"**** SHORT RANGE SENSORS ARE OUT ****"LIN(1) 5360 GOTO 2190 5370 GOSUB 5250 5380 PRINT USING 5720 5390 Z0=1 5400 GOSUB 5580 5410 PRINT USING "32A";T$ 5420 GOSUB 5580 5430 PRINT USING 5650;T$,T 5440 GOSUB 5580 5450 PRINT USING 5660;T$,C$ 5460 GOSUB 5580 5470 PRINT USING 5670;T$,Q1,Q2 5480 GOSUB 5580 5490 PRINT USING 5680;T$,S1,S2 5500 GOSUB 5580 5510 PRINT USING 5690;T$,E 5520 GOSUB 5580 5530 PRINT USING 5700;T$,P 5540 GOSUB 5580 5550 PRINT USING 5710;T$,S 5560 PRINT USING 5720 5570 GOTO 2170 5580 T$="" 5590 Z=Z0 5600 Z0=Z0+8 5610 T$[LEN(T$)+1]=P$[4*Q[Z,1]+1,4*Q[Z,1]+4] 5620 Z=Z+1 5630 IF Z= 0 THEN 5760 5740 PRINT "COMPUTER DISABLED" 5750 GOTO 2190 5760 IF N0 THEN 5830 5770 PRINT "COMPUTER ACTIVE AND AWAITING COMMAND "; 5780 ENTER FNL(30),H,Y$ 5790 PRINT 5800 IF H#-256 THEN 5830 5810 GOSUB 2250 5820 GOTO 5770 5830 GOSUB 6710 5840 IF N4 OR N5 THEN 5770 5850 GOTO N1+1 OF 5910,6050,6100 5860 PRINT "FUNCTIONS AVAILABLE FROM COMPUTER" 5870 PRINT " 0 = CUMULATIVE GALACTIC RECORD" 5880 PRINT " 1 = STATUS REPORT" 5890 PRINT " 2 = KLINGON SHIP LOCATIONS" 5900 GOTO 5770 5910 PRINT USING 6020;Q1,Q2 5920 PRINT USING 6030 5930 FOR I=1 TO 8 5940 FOR J=1 TO 8 5950 Y[J]=Z[I,J] 5960 NEXT J 5970 PRINT USING 6040;I 5980 MAT PRINT USING "5X,8(3D3X)/";Y 5990 NEXT I 6000 PRINT USING 6040 6010 GOTO 2170 6020 IMAGE"COMPUTER RECORD OF GALAXY -- QUADRANT ",DX,",",XD 6030 IMAGE" 1 2 3 4 5 6 7 8" 6040 IMAGE 5X,8("----- "),2D 6050 PRINT " STATUS REPORT" 6060 PRINT "NUMBER OF KLINGONS LEFT ="K9 6070 PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T 6080 PRINT "NUMBER OF STARBASES LEFT ="B9 6090 GOTO 2170 6100 PRINT 6110 IF D[2] >= 0 THEN 6140 6120 PRINT "SORRY...SHORT RANGE SENSORS ARE STILL OUT" 6130 GOTO 2190 6140 IF K3>0 THEN 6170 6150 PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT." 6160 GOTO 2170 6170 Z0=65 6180 GOSUB 6200 6190 GOTO 2170 6200 Z=Z0 6210 Z=Q[Z,3] 6220 IF Z=Z0 THEN 6260 6230 PRINT USING 6240;FNI(Z),FNJ(Z) 6240 IMAGE "KLINGON SHIP AT ",DX,",",XD 6250 GOTO 6210 6260 RETURN 6270 Z=FNR(0) 6280 IF Q[Z,1] THEN 6270 6290 RETURN 6300 Z3=Q[Z0,4] 6310 Q[Z3,3]=Q[Z0,4]=Z 6320 Q[Z,4]=Z3 6330 Q[Z,3]=Z0 6340 RETURN 6350 GOTO Q[Z,1]+1 OF 6550,6580,6400,6490 6360 PRINT "*** KLINGON DESTROYED ***" 6370 K3=K3-1 6380 K9=K9-1 6390 GOTO 6540 6400 PRINT USING 6410;FNI(Z),FNJ(Z) 6410 IMAGE"STAR EXPLODES AT ",DX,",",XD 6420 S3=S3-1 6430 GOSUB 6540 6440 Z9=Z0 6450 Z0=68 6460 GOSUB 6300 6470 Z0=Z9 6480 RETURN 6490 PRINT USING 6500;FNI(Z),FNJ(Z) 6500 IMAGE"*** STARBASE DESTROYED AT ",DX,",",XD3X,"***" 6510 B3=B3-1 6520 B9=B9-1 6530 D0=0 6540 Q[Z,1]=0 6550 Q[Q[Z,3],4]=Q[Z,4] 6560 Q[Q[Z,4],3]=Q[Z,3] 6570 G[Q1,Q2]=100*K3+10*B3+S3 6580 RETURN 6590 REM ******* PRINTS OUT NAME FROM ARRAY ******* 6600 S8=R1*12-11 6610 IF S8>72 THEN 6640 6620 PRINT D$[S8,S8+11]; 6630 GOTO 6650 6640 PRINT E$[S8-72,S8-61]; 6650 RETURN 6660 MAT PRINT USING "8(8(5D4X)/)";G 6670 T7=T7-1 6680 IF LEN(Y$)<7 THEN 2190 6690 Y$=Y$[7] 6700 GOTO 2360 6710 REM 6720 N0=N2=N5=N6=0 6730 N3=1 6740 GOSUB 6930 6750 N1=N8 6760 IF N4 THEN 6870 6770 IF N9 <> 11 THEN 6840 6780 N6=N7 6790 GOSUB 6930 6800 IF N4 THEN 6870 6810 N2=N8 6820 N3=.125^N7 6830 N5=N7 6840 IF N9 <= 10 THEN 6880 6850 IF N6+N7 <= 0 OR N9=11 THEN 6910 6860 N0=N9<14 6870 RETURN 6880 PRINT "REMEMBER -- THIS IS OCTAL" 6890 N4=2 6900 RETURN 6910 N4=1 6920 RETURN 6930 REM 6940 N4=N7=N8=0 6950 IF LEN(Y$) <= 0 THEN 7070 6960 Z$=Y$[1,1] 6970 Y$=Y$[2] 6980 FOR N9=1 TO 13 6990 IF Z$=N$[N9,N9] THEN 7030 7000 NEXT N9 7010 N4=1 7020 RETURN 7030 IF N9>8 THEN 7080 7040 N8=8*N8+N9-1 7050 N7=N7+1 7060 IF LEN(Y$)>0 THEN 6960 7070 N9=14 7080 RETURN 7090 IF N0 THEN 7160 7100 PRINT "COURSE "; 7110 ENTER FNL(12)+((N1=0)*FNL(6)),H,Y$ 7120 PRINT 7130 IF H#-256 THEN 7160 7140 GOSUB 2250 7150 GOTO 7100 7160 GOSUB 6710 7170 GOTO N4 OF 7230,7100 7180 IF N1<8 THEN 7210 7190 N4=1 7200 RETURN 7210 X1=C[N1+1,1]+(C[N1+2,1]-C[N1+1,1])*N2*N3 7220 X2=C[N1+1,2]+(C[N1+2,2]-C[N1+1,2])*N2*N3 7230 RETURN 7240 Z=Z0 7250 Z=Q[Z,3] 7260 IF Z=Z0 THEN 7370 7270 H=F8*X*RND(0)/FND(Z) 7280 Q[Z,2]=Q[Z,2]-H 7290 IF Q[Z,1] <> 4 THEN 7320 7300 PRINT USING 7310;H,FNI(Z),FNJ(Z),Q[Z,2] 7310 IMAGE5DX,"UNIT HIT ON KLINGON AT",XDX,",",XD4X,5DX,"LEFT" 7320 IF Q[Z,2] >= 0 THEN 7250 7330 Z8=Q[Z,3] 7340 GOSUB 6350 7350 Z=Z8 7360 GOTO 7260 7370 RETURN 7380 B5=POS(Y$,",") 7390 IF B5<4 THEN 7430 7400 Y$=Y$[B5+1] 7410 J5=1 7420 GOTO 1+(LEN(Y$)>0) OF 7440,7470 7430 J5=0 7440 PRINT "WHAT OPERATION ? "; 7450 ENTER 255,H,Y$ 7460 IF H=-256 THEN 7450 7470 GOSUB 6710 7480 IF N4 OR N5 OR N1<0 OR N1>7 THEN 2430 7490 D1=N1+1 7500 IF LEN(Y$)>0 THEN 7530 7510 PRINT TAB(27*(J5=0))"TO WHAT STATUS ? "; 7520 LINPUT Y$ 7530 B5=POS(Y$,",") 7540 IF B5<2 THEN 7590 7550 CONVERT Y$[1,B5-1] TO D[D1],7630 7560 Y$=Y$[B5+1] 7570 T7=T7-2 7580 GOTO 2360 7590 CONVERT Y$ TO D[D1],7630 7600 Y$="" 7610 T7=T7-2 7620 GOTO 2190 7630 PRINT "THE STATUS MUST BE NUMERIC." 7640 GOTO 2190 7650 PRINT "ENTER FILE NAME : "; 7660 ENTER 255,H,F$ 7670 PRINT 7680 IF H<0 THEN 7650 7690 ASSIGN F$,1,K 7700 IF K <= 2 THEN 7730 7710 PRINT "FILE '"F$"' DOESN'T EXIST OR IS INACCESSIBLE." 7720 GOTO 1360 7730 READ #1,1 7740 IF END #1 THEN 8280 7750 MAT READ #1;D,Q,Z,G 7760 READ #1;S,E,P,T0,T,T9,T1,Q1,Q2,S1,S2,K9,B9,T7 7770 P3=1 7780 N0=0 7790 PRINT USING 1770;K9,T9,B9 7800 GOTO 1820 7810 B5=POS(Y$,"-") 7820 IF B5<5 THEN 7970 7830 IF POS(Y$,",") AND (POS(Y$,",")1 THEN 7930 7870 IF LEN(Y$)<12 AND LEN(Y$)>0 THEN 7900 7880 PRINT "FILES CAN HAVE 1-6 CHARACTER NAMES PLUS THE '.ID'." 7890 GOTO 8020 7900 F$=Y$ 7910 Y$="" 7920 GOTO 8060 7930 IF B5>11 OR B5<1 THEN 7880 7940 F$=Y$[1,B5-1] 7950 Y$=Y$[B5+1] 7960 GOTO 8060 7970 B5=POS(Y$,",") 7980 IF B5<5 THEN 8010 7990 Y$=Y$[B5+1] 8000 GOTO 8020 8010 Y$="" 8020 PRINT LIN(2)"ENTER FILE NAME : "; 8030 ENTER 255,H,F$ 8040 PRINT 8050 IF H<0 THEN 8020 8060 N0=LEN(Y$)>0 8070 ASSIGN F$,1,K 8080 IF K=0 THEN 8220 8090 IF K=1 OR K=2 THEN 8200 8100 PRINT "FILE '"F$"' DOES NOT EXIST OR IS INACCESSIBLE." 8110 PRINT "DO YOU WISH TO HAVE THE FILE CREATED (Y/N) ? "; 8120 LINPUT Z$[1,1] 8130 IF Z$#"Y" THEN 2190 8140 CREATE B5,F$,4 8150 GOTO B5+1 OF 8070,8160,8160,8180,8180 8160 PRINT "CREATE ATTEMPT UNSUCESSFUL - FILE NOT SAVED."LIN(1) 8170 GOTO 2190 8180 PRINT "THERE IS NO ROOM ON YOUR ACCOUNT OR SYSTEM OVERLOAD."LIN(1) 8190 GOTO 2190 8200 PRINT "FILE IS READ-ONLY OR INVALID ASSIGNMENT."LIN(1) 8210 GOTO 2190 8220 IF END #1 THEN 8300 8230 READ #1,1 8240 MAT PRINT #1;D,Q,Z,G 8250 PRINT #1;S,E,P,T,T,(T0+T9)-T,((T1+(T-T0))),Q1,Q2,S1,S2,K9,B9,T7 8260 PRINT LIN(1)" ENTERPRISE LOG SAFELY AWAY TO STARFLEET."LIN(1) 8270 GOTO 1+(N0=1) OF 2190,2360 8280 PRINT "NO GAME STORED IN FILE : "F$;LIN(2) 8290 GOTO 1360 8300 PRINT "THE FILE IS NOT LARGE ENOUGH TO ACCOMODATE THIS GAME."LIN(1) 8310 GOTO 2190 8320 PRINT LIN(2) 8330 PRINT USING 8340;(250+(RND(0)*100-50)) 8340 IMAGE "YOUR SELF-DESTRUCT RESULTED IN A",X3D.2DX,"QUADRATON BLAST DESTROYING" 8350 PRINT "THE "K9"REMAINING KLINGONS, ALL FEDERATION STARBASES AND" 8360 PRINT "OF COURSE, YOURSELF."LIN(2)"YOU LOSE."LIN(3) 8370 GOTO 5040 8380 END