10  REM          STREK: STAR TREK
20  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
30  REM
40  REM       STTR1: STAR TREK
50  REM
60  REM       36243  REV B  --  10/73
70  REM
80  REM ****  CONTRIBUTED PROGRAM  ***********************************
90  REM *****************************************************************
100  REM ***                                                           ***
110  REM ***     STAR TREK: BY MIKE MAYFIELD, CENTERLINE ENGINEERING   ***
120  REM ***                                                           ***
130  REM ***        TOTAL INTERACTION GAME - ORIG. 20 OCT 1972
140  REM ***                                                           ***
150  REM *****************************************************************
160  PRINT LIN(3)
170  PRINT "                          STAR TREK "
180  REM *****  PROGRAM STARTS HERE *****
190  Z$="                                                                      "
200  PRINT LIN(3)
210  DIM G[8,8],C[9,2],K[3,3],N[3],Z[8,8]
220  DIM C$[6],D$[72],E$[24],A$[255],Q$[72],R$[72],S$[72]
230  DIM Z$[72]
240  T0=T=INT(RND(1)*20+20)*100
250  T9=30
260  A=1
270  D0=0
280  E0=E=3000
290  P0=P=10
300  S9=200
310  S=H8=0
320  DEF FND()=SQR((K[I,1]-S1)^2+(K[I,2]-S2)^2)
330  Q1=INT(RND(1)*8+1)
340  Q2=INT(RND(1)*8+1)
350  S1=INT(RND(1)*8+1)
360  S2=INT(RND(1)*8+1)
370  T7=TIM(0)+60*TIM(1)
380  C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1
390  C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0
400  C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1
410  MAT D=ZER
420  D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
430  D$[49]="PHOTON TUBESDAMAGE CNTRL"
440  E$="SHIELD CNTRLCOMPUTER"
450  B9=K9=0
460  FOR I=1 TO 8
470  FOR J=1 TO 8
480  R1=RND(1)
490  IF R1>.98 THEN 540
500  IF R1>.95 THEN 570
510  IF R1>.8 THEN 600
520  K3=0
530  GOTO 620
540  K3=3
550  K9=K9+3
560  GOTO 620
570  K3=2
580  K9=K9+2
590  GOTO 620
600  K3=1
610  K9=K9+1
620  R1=RND(1)
630  IF R1>.94 THEN 660
640  B3=0
650  GOTO 680
660  B3=1
670  B9=B9+1
680  S3=INT(RND(1)*8+1)
690  G[I,J]=K3*100+B3*10+S3
700  Z[I,J]=0
710  NEXT J
720  NEXT I
730  K7=K9
740  IF B9 <= 0 OR K9 <= 0 THEN 450
750  PRINT "YOU MUST DESTROY"K9;" KLINGONS IN"T9;" STARDATES WITH"B9;" STARBASES"
760  K3=B3=S3=0
770  IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 870
780  X=G[Q1,Q2]*.01
790  K3=INT(X)
800  B3=INT((X-K3)*10)
810  S3=G[Q1,Q2]-INT(G[Q1,Q2]*.1)*10
820  IF K3=0 THEN 860
830  IF S>200 THEN 860
840  PRINT "COMBAT AREA      CONDITION RED"
850  PRINT "   SHIELDS DANGEROUSLY LOW"
860  MAT K=ZER
870  FOR I=1 TO 3
880  K[I,3]=0
890  NEXT I
900  Q$=Z$
910  R$=Z$
920  S$=Z$[1,48]
930  A$="<*>"
940  Z1=S1
950  Z2=S2
960  GOSUB 5990
970  FOR I=1 TO K3
980  GOSUB 5910
990  A$="+++"
1000  Z1=R1
1010  Z2=R2
1020  GOSUB 5990
1030  K[I,1]=R1
1040  K[I,2]=R2
1050  K[I,3]=S9
1060  NEXT I
1070  FOR I=1 TO B3
1080  GOSUB 5910
1090  A$=">!<"
1100  Z1=R1
1110  Z2=R2
1120  GOSUB 5990
1130  NEXT I
1140  FOR I=1 TO S3
1150  GOSUB 5910
1160  A$=" * "
1170  Z1=R1
1180  Z2=R2
1190  GOSUB 5990
1200  NEXT I
1210  GOSUB 4270
1220  PRINT "COMMAND:";
1230  ENTER 60/(K3+1),Z9,A$
1240  PRINT 
1250  IF Z9 >= 0 THEN 1320
1260  PRINT LIN(1);"YOU'RE INDECISION IS JEOPARDIZING THE ENTERPRISE"
1270  IF K3>0 THEN 1300
1280  PRINT "YOU'RE VERY FORTUNATE, ";
1290  GOTO 3790
1300  GOSUB 3910
1310  GOTO 1220
1320  IF A$="GSCAN" THEN 6320
1330  IF A$="SELF-DESTRUCT" THEN 6480
1340  IF A$="FIX" THEN 6390
1350  CONVERT A$ TO A,2561
1360  GOTO A+1 OF 1480,1210,2400,2600,2890,3560,3680,4800
1370  PRINT 
1380  PRINT "   0 = SET COURSE"
1390  PRINT "   1 = SHORT RANGE SENSOR SCAN"
1400  PRINT "   2 = LONG RANGE SENSOR SCAN"
1410  PRINT "   3 = FIRE PHASERS"
1420  PRINT "   4 = FIRE PHOTON TORPEDOES"
1430  PRINT "   5 = SHIELD CONTROL"
1440  PRINT "   6 = DAMAGE CONTROL REPORT"
1450  PRINT "   7 = CALL ON LIBRARY COMPUTER"
1460  PRINT 
1470  GOTO 1220
1480  PRINT "COURSE (0-8):";
1490  INPUT C1
1500  C1=C1+1
1510  IF C1=0 THEN 1220
1520  IF C1<1 OR C1 >= 9 THEN 1480
1530  PRINT "WARP FACTOR (0-8):";
1540  INPUT W1
1550  IF W1<0 OR W1>8 THEN 1480
1560  IF D[1] >= 0 OR W1 <= .2 THEN 1590
1570  PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
1580  GOTO 1480
1590  IF K3 <= 0 THEN 1640
1600  GOSUB 3910
1610  IF K3 <= 0 THEN 1640
1620  IF S<0 THEN 4120
1630  GOTO 1690
1640  IF E>0 THEN 1690
1650  IF S<1 THEN 4040
1660  PRINT "YOU HAVE"E" UNITS OF ENERGY"
1670  PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE"S" UNITS LEFT"
1680  GOTO 1220
1690  FOR I=1 TO 8
1700  IF D[I] >= 0 THEN 1720
1710  D[I]=D[I]+1
1720  NEXT I
1730  IF RND(1)>.2 THEN 1890
1740  R1=INT(RND(1)*8+1)
1750  IF RND(1) >= .5 THEN 1830
1760  D[R1]=D[R1]-(RND(1)*5+1)
1770  PRINT 
1780  PRINT "DAMAGE CONTROL REPORT:";
1790  GOSUB 6090
1800  PRINT " DAMAGED"
1810  PRINT 
1820  GOTO 1890
1830  D[R1]=D[R1]+(RND(1)*5+1)
1840  PRINT 
1850  PRINT "DAMAGE CONTROL REPORT:";
1860  GOSUB 6090
1870  PRINT " STATE OF REPAIR IMPROVED"
1880  PRINT 
1890  N=INT(W1*8)
1900  A$="   "
1910  Z1=S1
1920  Z2=S2
1930  GOSUB 5990
1940  X=S1
1950  Y=S2
1960  C2=INT(C1)
1970  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
1980  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
1990  FOR I=1 TO N
2000  S1=S1+X1
2010  S2=S2+X2
2020  IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN 2240
2030  A$="   "
2040  Z1=S1
2050  Z2=S2
2060  GOSUB 6160
2070  IF Z3 THEN 2120
2080  PRINT  USING 5900;S1,S2
2090  S1=S1-X1
2100  S2=S2-X2
2110  GOTO 2130
2120  NEXT I
2130  A$="<*>"
2140  S1=INT(S1+.5)
2150  S2=INT(S2+.5)
2160  Z1=S1
2170  Z2=S2
2180  GOSUB 5990
2190  E=E-N+5
2200  IF W1<1 THEN 2220
2210  T=T+1
2220  IF T>T0+T9 THEN 4090
2230  GOTO 1220
2240  X=Q1*8+X+X1*N
2250  Y=Q2*8+Y+X2*N
2260  Q1=INT(X/8)
2270  Q2=INT(Y/8)
2280  S1=INT(X-Q1*8+.5)
2290  S2=INT(Y-Q2*8+.5)
2300  IF S1 THEN 2330
2310  Q1=Q1-1
2320  S1=8
2330  IF S2 THEN 2360
2340  Q2=Q2-1
2350  S2=8
2360  T=T+1
2370  E=E-N+5
2380  IF T>T0+T9 THEN 4090
2390  GOTO 760
2400  IF D[3] >= 0 THEN 2440
2410  PRINT "LONG RANGE SENSORS ARE INOPERABLE"
2420  IMAGE "LONG RANGE SENSOR SCAN FOR QUADRANT ",D,",",D
2430  GOTO 1220
2440  PRINT  USING 2420;Q1,Q2
2450  PRINT  USING 2590
2460  FOR I=Q1-1 TO Q1+1
2470  MAT N=ZER
2480  FOR J=Q2-1 TO Q2+1
2490  IF I<1 OR I>8 OR J<1 OR J>8 THEN 2530
2500  N[J-Q2+2]=G[I,J]
2510  IF D[7]<0 THEN 2530
2520  Z[I,J]=G[I,J]
2530  NEXT J
2540  PRINT  USING 2580;N[1],N[2],N[3]
2550  PRINT  USING 2590
2560  NEXT I
2570  GOTO 1220
2580  IMAGE ": ",3(3D," :")
2590  IMAGE "-----------------"
2600  IF K3 <= 0 THEN 3790
2610  IF D[4] >= 0 THEN 2640
2620  PRINT "PHASER CONTROL IS DISABLED"
2630  GOTO 1220
2640  IF D[7] >= 0 THEN 2660
2650  PRINT " COMPUTER FAILURE HAMPERS ACCURACY"
2660  PRINT "PHASERS LOCKED ON TARGET.  ENERGY AVAILABLE="E
2670  PRINT "NUMBER OF UNITS TO FIRE:?";
2680  ENTER 60/(K3+1),Z9,X
2690  PRINT 
2700  IF Z9=-256 THEN 1260
2710  IF X <= 0 THEN 1220
2720  IF E-X<0 THEN 2640
2730  E=E-X
2740  GOSUB 3910
2750  IF D[7] >= 0 THEN 2770
2760  X=X*RND(1)
2770  FOR I=1 TO 3
2780  IF K[I,3] <= 0 THEN 2860
2790  H=(X/K3/FND(0))*(2*RND(1))
2800  K[I,3]=K[I,3]-H
2810  PRINT  USING 2820;H,K[I,1],K[I,2],K[I,3]
2820  IMAGE 4D," UNIT HIT ON KLINGON AT SECTOR ",D,",",D,"   (",3D," LEFT)"
2830  IF K[I,3]>0 THEN 2860
2840  GOSUB 3810
2850  IF K9 <= 0 THEN 4190
2860  NEXT I
2870  IF E<0 THEN 4120
2880  GOTO 1220
2890  IF D[5] >= 0 THEN 2920
2900  PRINT "PHOTON TUBES ARE NOT OPERATIONAL"
2910  GOTO 1220
2920  IF P>0 THEN 2950
2930  PRINT "ALL PHOTON TORPEDOES EXPENDED"
2940  GOTO 1220
2950  PRINT "TORPEDO COURSE (0-8):";
2960  ENTER 60/(K3+1),Z9,C1
2970  PRINT 
2980  IF Z9=-256 THEN 1260
2990  C1=C1+1
3000  IF C1=0 THEN 1220
3010  IF C1<1 OR C1 >= 9 THEN 2950
3020  C2=INT(C1)
3030  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
3040  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
3050  X=S1
3060  Y=S2
3070  P=P-1
3080  X=X+X1
3090  Y=Y+X2
3100  IF X<.5 OR X >= 8.5 OR Y<.5 OR Y >= 8.5 THEN 3520
3110  A$="   "
3120  Z1=X
3130  Z2=Y
3140  GOSUB 6160
3150  IF Z3=0 THEN 3170
3160  GOTO 3080
3170  A$="+++"
3180  Z1=X
3190  Z2=Y
3200  GOSUB 6160
3210  IF Z3=0 THEN 3320
3220  PRINT '7"*** KLINGON DESTROYED ***"
3230  K3=K3-1
3240  K9=K9-1
3250  IF K9 <= 0 THEN 4190
3260  FOR I=1 TO 3
3270  IF INT(X+.5) <> K[I,1] THEN 3290
3280  IF INT(Y+.5)=K[I,2] THEN 3300
3290  NEXT I
3300  K[I,3]=0
3310  GOTO 3460
3320  A$=" * "
3330  Z1=X
3340  Z2=Y
3350  GOSUB 6160
3360  IF Z3=0 THEN 3390
3370  PRINT "YOU CAN'T DESTROY STARS SILLY"
3380  GOTO 3520
3390  A$=">!<"
3400  Z1=X
3410  Z2=Y
3420  GOSUB 6160
3430  IF Z3=0 THEN 3080
3440  PRINT '7"*** STAR BASE DESTROYED ***  .......CONGRATULATIONS"
3450  B3=B3-1
3460  A$="   "
3470  Z1=INT(X+.5)
3480  Z2=INT(Y+.5)
3490  GOSUB 5990
3500  G[Q1,Q2]=K3*100+B3*10+S3
3510  GOTO 3530
3520  PRINT "TORPEDO MISSED"
3530  GOSUB 3910
3540  IF E<0 THEN 4120
3550  GOTO 1220
3560  IF D[7] >= 0 THEN 3590
3570  PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
3580  GOTO 1220
3590  PRINT "ENERGY AVAILABLE ="E+S"   NUMBER OF UNITS TO SHIELDS:?";
3600  ENTER 60/(K3+1),Z9,X
3610  PRINT 
3620  IF Z9=-256 THEN 1260
3630  IF X <= 0 THEN 1220
3640  IF E+S-X<0 THEN 3590
3650  E=E+S-X
3660  S=X
3670  GOTO 1220
3680  IF D[6] >= 0 THEN 3710
3690  PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
3700  GOTO 1220
3710  PRINT 
3720  PRINT "DEVICE        STATE OF REPAIR"
3730  FOR R1=1 TO 8
3740  GOSUB 6090
3750  PRINT "",D[R1]
3760  NEXT R1
3770  PRINT 
3780  GOTO 1220
3790  PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUANDRANT"
3800  GOTO 1220
3810  PRINT  USING 3820;K[I,1],K[I,2]
3820  IMAGE"KLINGON AT SECTOR ",D,",",D," DESTROYED ****"
3830  K3=K3-1
3840  K9=K9-1
3850  A$="   "
3860  Z1=K[I,1]
3870  Z2=K[I,2]
3880  GOSUB 5990
3890  G[Q1,Q2]=K3*100+B3*10+S3
3900  RETURN 
3910  IF C$ <> "DOCKED" THEN 3940
3920  PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE"
3930  RETURN 
3940  IF K3 <= 0 THEN 4030
3950  FOR I=1 TO 3
3960  IF K[I,3] <= 0 THEN 4020
3970  H=(K[I,3]/FND(0))*(2*RND(1))
3980  S=S-H
3990  PRINT  USING 4000;H,K[I,1],K[I,2],S
4000  IMAGE 4D," UNIT HIT ON ENTERPRISE AT SECTOR ",D,",",D,"   (",4D," LEFT)"
4010  IF S<0 THEN 4120
4020  NEXT I
4030  RETURN 
4040  PRINT "THE ENTERPRISE IS DEAD IN SPACE. IF YOU SURVIVE ALL IMPENDING"
4050  PRINT "ATTACK YOU WILL BE DEMOTED TO THE RANK OF PRIVATE"
4060  IF K3 <= 0 THEN 4140
4070  GOSUB 3910
4080  GOTO 4060
4090  PRINT 
4100  PRINT "IT IS STARDATE"T
4110  GOTO 4140
4120  PRINT 
4130  PRINT "THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED"
4140  PRINT "THERE ARE STILL"K9" KLINGON BATTLE CRUISERS"
4150  PRINT LIN(1);"PLAY AGAIN";
4160  INPUT A$[1,1]
4170  IF A$="Y" THEN 180
4180  STOP 
4190  PRINT 
4200  PRINT "THE LAST KLIGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED"
4210  PRINT "THE FEDERATION HAS BEEN SAVED !!!"
4220  PRINT 
4230  PRINT "YOUR EFFICIENCY RATING ="((K7/(T-T0))*1000)
4240  T1=TIM(0)+TIM(1)*60
4250  PRINT "YOUR ACTUAL TIME OF MISSION ="INT((((T1-T7)*.4)-T7)*100)" MINUTES"
4260  GOTO 4150
4270  FOR I=S1-1 TO S1+1
4280  FOR J=S2-1 TO S2+1
4290  IF I<1 OR I>8 OR J<1 OR J>8 THEN 4350
4300  A$=">!<"
4310  Z1=I
4320  Z2=J
4330  GOSUB 6160
4340  IF Z3=1 THEN 4390
4350  NEXT J
4360  NEXT I
4370  D0=0
4380  GOTO 4460
4390  D0=1
4400  C$="DOCKED"
4410  E=3000
4420  P=10
4430  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
4440  S=0
4450  GOTO 4530
4460  IF K3>0 THEN 4500
4470  IF E<E0*.1 THEN 4520
4480  C$="GREEN"
4490  GOTO 4530
4500  C$="RED"
4510  GOTO 4530
4520  C$="YELLOW"
4530  IF A THEN 4550
4540  RETURN 
4550  IF D[2] >= 0 THEN 4600
4560  PRINT 
4570  PRINT "*** SHORT RANGE SENSORS ARE OUT ***"
4580  PRINT 
4590  GOTO 4700
4600  PRINT  USING 4710
4610  PRINT  USING 4720;Q$[1,3],Q$[4,6],Q$[7,9],Q$[10,12],Q$[13,15],Q$[16,18],Q$[19,21],Q$[22,24]
4620  PRINT  USING 4730;Q$[25,27],Q$[28,30],Q$[31,33],Q$[34,36],Q$[37,39],Q$[40,42],Q$[43,45],Q$[46,48],T
4630  PRINT  USING 4740;Q$[49,51],Q$[52,54],Q$[55,57],Q$[58,60],Q$[61,63],Q$[64,66],Q$[67,69],Q$[70,72],C$
4640  PRINT  USING 4750;R$[1,3],R$[4,6],R$[7,9],R$[10,12],R$[13,15],R$[16,18],R$[19,21],R$[22,24],Q1,Q2
4650  PRINT  USING 4760;R$[25,27],R$[28,30],R$[31,33],R$[34,36],R$[37,39],R$[40,42],R$[43,45],R$[46,48],S1,S2
4660  PRINT  USING 4770;R$[49,51],R$[52,54],R$[55,57],R$[58,60],R$[61,63],R$[64,66],R$[67,69],R$[70,72],E
4670  PRINT  USING 4780;S$[1,3],S$[4,6],S$[7,9],S$[10,12],S$[13,15],S$[16,18],S$[19,21],S$[22,24],P
4680  PRINT  USING 4790;S$[25,27],S$[28,30],S$[31,33],S$[34,36],S$[37,39],S$[40,42],S$[43,45],S$[46,48],S
4690  PRINT  USING 4710
4700  RETURN 
4710  IMAGE"---------------------------------"
4720  IMAGE 8(X,3A)
4730  IMAGE 8(X,3A),8X,"STARDATE",8X,5D
4740  IMAGE 8(X,3A),8X,"CONDITION",8X,6A
4750  IMAGE 8(X,3A),8X,"QUADRANT",9X,D,",",D
4760  IMAGE 8(X,3A),8X,"SECTOR",11X,D,",",D
4770  IMAGE 8(X,3A),8X,"ENERGY",9X,6D
4780  IMAGE 8(X,3A),8X,"PHOTON TORPEDOES",3D
4790  IMAGE 8(X,3A),8X,"SHIELDS",8X,6D
4800  IF D[8] >= 0 THEN 4830
4810  PRINT "COMPUTER DISABLED"
4820  GOTO 1220
4830  PRINT "COMPUTER ACTIVE AND AWAITING COMMAND";
4840  INPUT A
4850  GOTO A+1 OF 4910,5000,5050
4860  PRINT '10"FUNCTIONS AVAILABLE FROM COMPUTER"'10
4870  PRINT "   0 = CUMULATIVE GALATIC RECORD"
4880  PRINT "   1 = STATUS REPORT"
4890  PRINT "   2 = PHOTON TORPEDO DATA"
4900  GOTO 4830
4910  PRINT  USING 4920;Q1,Q2
4920  IMAGE"COMPUTER RECORD OF GALAXY FOR QUADRANT ",D,",",D
4930  PRINT  USING 5860
4940  PRINT  USING 5890
4950  FOR I=1 TO 8
4960  PRINT  USING 5880;I,Z[I,1],Z[I,2],Z[I,3],Z[I,4],Z[I,5],Z[I,6],Z[I,7],Z[I,8]
4970  PRINT  USING 5890
4980  NEXT I
4990  GOTO 1220
5000  PRINT '10"   STATUS REPORT"'10
5010  PRINT "NUMBER OF KLINGONS LEFT ="K9
5020  PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T
5030  PRINT "NUMBER OF STARBASES LEFT ="B9
5040  GOTO 3680
5050  PRINT 
5060  H8=0
5070  FOR I=1 TO 3
5080  IF K[I,3] <= 0 THEN 5800
5090  C1=S1
5100  A=S2
5110  W1=K[I,1]
5120  X=K[I,2]
5130  FOR O2=1 TO 24
5140  IF Q$[O2*3-2,O2*3]="+++" THEN 5190
5150  IF R$[O2*3-2,O2*3]="+++" THEN 5300
5160  IF S$[O2*3-2,O2*3]="+++" THEN 5340
5170  NEXT O2
5180  GOTO 5820
5190  GOSUB 5210
5200  GOTO 5150
5210  Q5=1
5220  Q5=Q5+(O2>8)+(O2>16)
5230  Q6=O2
5240  IF Q6<9 THEN 5270
5250  Q6=Q6-8
5260  GOTO 5240
5270  PRINT  USING 5290;Q5,Q6
5280  RETURN 
5290  IMAGE "KLINGON AT ",D,",",D
5300  GOSUB 5210
5310  Q5=Q5+3
5320  PRINT  USING 5290;Q5,Q6
5330  GOTO 5160
5340  Q5=7
5350  Q5=Q5+(O2>8)
5360  Q6=O2
5370  IF Q6<9 THEN 5400
5380  Q6=Q6-8
5390  GOTO 5370
5400  PRINT  USING 5290;Q5,Q6
5410  GOTO 5170
5420  PRINT  USING 5430;Q1,Q2,S1,S2
5430  IMAGE"YOU ARE AT QUADRANT ( ",D,",",D," )  SECTOR ( ",D,",",D," )"
5440  PRINT "SHIP'S & TARGET'S COORDINATES ARE ";
5450  ENTER 7,Z9,A$
5460  PRINT 
5470  IF Z9=-256 THEN 1260
5480  V2=POS(A$,",")
5490  V3=POS(A$[V2+1],",")
5500  V4=POS(A$[V2+V3+1],",")
5510  CONVERT A$[1,V2-1] TO C1
5520  CONVERT A$[V2+1,V2+V3-1] TO A
5530  CONVERT A$[V2+V3+1,V2+V3+V4-1] TO W1
5540  CONVERT A$[V2+V3+V4+1] TO X
5550  X=X-A
5560  A=C1-W1
5570  IF X<0 THEN 5670
5580  IF A<0 THEN 5730
5590  IF X>0 THEN 5610
5600  IF A=0 THEN 5690
5610  C1=0
5620  IF ABS(A) <= ABS(X) THEN 5650
5630  PRINT "DIRECTION ="C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A))
5640  GOTO 5780
5650  PRINT "DIRECTION ="C1+(ABS(A)/ABS(X))
5660  GOTO 5780
5670  IF A>0 THEN 5710
5680  IF X=0 THEN 5730
5690  C1=4
5700  GOTO 5620
5710  C1=2
5720  GOTO 5740
5730  C1=6
5740  IF ABS(A) >= ABS(X) THEN 5770
5750  PRINT "DIRECTION ="C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X))
5760  GOTO 5780
5770  PRINT "DIRECTION ="C1+(ABS(X)/ABS(A))
5780  PRINT "DISTANCE ="(SQR(X^2+A^2))
5790  IF H8=1 THEN 5850
5800  NEXT I
5810  H8=0
5820  PRINT "DO YOU WANT TO USE THE CALCULATOR";
5830  INPUT A$[1,1]
5840  IF A$="Y" THEN 5420
5850  GOTO 1220
5860  IMAGE"     1     2     3     4     5     6     7     8"
5870  IMAGE"---------------------------------------------------"
5880  IMAGE D,8(3X,3D)
5890  IMAGE"   ----- ----- ----- ----- ----- ----- ----- -----"
5900  IMAGE" WARP ENGINES SHUTDOWN AT SECTOR ",D,",",D," DUE TO BAD NAVIGATION"
5910  R1=INT(RND(1)*8+1)
5920  R2=INT(RND(1)*8+1)
5930  A$="   "
5940  Z1=R1
5950  Z2=R2
5960  GOSUB 6160
5970  IF Z3=0 THEN 5910
5980  RETURN 
5990  REM ******  INSERTION IN STRING ARRAY FOR QUADRANT ******
6000  S8=Z1*24+Z2*3-26
6010  IF S8>72 THEN 6040
6020  Q$[S8,S8+2]=A$
6030  GOTO 6080
6040  IF S8>144 THEN 6070
6050  R$[S8-72,S8-70]=A$
6060  GOTO 6080
6070  S$[S8-144,S8-142]=A$
6080  RETURN 
6090  REM ****  PRINTS DEVICE NAME FROM ARRAY *****
6100  S8=R1*12-11
6110  IF S8>72 THEN 6140
6120  PRINT D$[S8,S8+11];
6130  GOTO 6150
6140  PRINT E$[S8-72,S8-61];
6150  RETURN 
6160  REM *******  STRING COMPARISON IN QUADRANT ARRAY **********
6170  Z1=INT(Z1+.5)
6180  Z2=INT(Z2+.5)
6190  S8=Z1*24+Z2*3-26
6200  Z3=0
6210  IF S8>72 THEN 6250
6220  IF Q$[S8,S8+2] <> A$ THEN 6310
6230  Z3=1
6240  GOTO 6310
6250  IF S8>144 THEN 6290
6260  IF R$[S8-72,S8-70] <> A$ THEN 6310
6270  Z3=1
6280  GOTO 6310
6290  IF S$[S8-144,S8-142] <> A$ THEN 6310
6300  Z3=1
6310  RETURN 
6320  PRINT  USING 5860
6330  PRINT  USING 5890
6340  FOR I=1 TO 8
6350  PRINT  USING 5880;I,G[I,1],G[I,2],G[I,3],G[I,4],G[I,5],G[I,6],G[I,7],G[I,8]
6360  PRINT  USING 5890
6370  NEXT I
6380  GOTO 1220
6390  PRINT "WHAT FUNCTION?";
6400  ENTER 7,Z9,F
6410  IF Z9=-256 THEN 1260
6420  IF  NOT (F=INT(F) AND F >= 0 AND F<8) THEN 1370
6430  PRINT SPA(20);"TO WHAT EXTENT?";
6440  ENTER 7,Z9,F1
6450  D[F+1+(F=5)-(F=6)]=F1
6460  PRINT 
6470  GOTO 1220
6480  PRINT "YOUR SELF-DESTRUCT RESULTED IN A";
6490  PRINT  USING "#,X3D.2DX";100*RND(1)+150
6500  PRINT "UNIT BLAST, THAT RESULTED IN DESTROYING YOUR";
6510  IMAGE #,XDX,"REMAINING STARBASES",/,"THE",X2DX,"REMAINING KLINGONS"
6520  PRINT  USING 6510;B9,K9
6530  PRINT "AND, OF COURCE, YOURSELF.",LIN(1),"YOU LOSE."
6540  GOTO 4150
6550  END 
