10 PRINT TAB(15);"**************" 20 PRINT TAB(15);"*** ***" 30 PRINT TAB(15);"*** STTR ***" 40 PRINT TAB(15);"*** ***" 50 PRINT TAB(15);"**************" 60 PRINT 100 DIM D(12),E(30),H(30),J(9),K(9),O(78),P(30) 110 DIM Q(78),S(30),T(30),V(30),M(78),X(30),Y(30) 120 P=1 130 K9=INT(RND(0)*15)+5: K1=K9+1 140 D=INT(RND(0)*15)+10+K9 150 B9=INT(RND(0)*5)+1: B=B9 160 FOR X=1 TO 30: E(X)=-1: NEXT 200 E(1)=3000: S(1)=500: T(1)=1: P(1)=10 300 FOR X=5 TO B9+4 310 E(X)=INT((RND(0)*5)*1000)+5000 320 T(X)=2 330 P(X)=INT(RND(0)*11)+5 340 GOSUB 900 390 NEXT 400 FOR X=10 TO K9+10 410 E(X)=2000 420 S(X)=200 430 T(X)=10 440 GOSUB 900 450 NEXT 500 FOR X=1 TO K9+10 510 IF E(X)>0 THEN GOSUB 900 520 NEXT 550 FOR X=1 TO 7: D(X)=0: NEXT 560 FOR X=0 TO 77: M(X)=0: NEXT 600 PRINT " YOU HAVE ";D;" STARDATES TO DESTROY ";K9;" KLINGONS" 610 PRINT 620 PRINT "***** ENTER '-1' FOR A LIST OF COMMANDS *****" 630 PRINT 700 FOR X=0 TO 77: Q(X)=0: NEXT 710 FOR X=0 TO 77: O(X)=INT(RND(0)*9)+1: NEXT 800 DATA 0,-1,-1,-1,0,1,1,1,0 810 DATA 1,1,0,-1,-1,-1,0,1,1 820 FOR X=1 TO 9: READ J(X): NEXT 830 FOR X=1 TO 9: READ K(X): NEXT 890 GOTO 5000 900 V(X)=INT(RND(0)*8) 910 H(X)=INT(RND(0)*8) 920 Y(X)=INT(RND(0)*8) 930 X(X)=INT(RND(0)*8) 940 RETURN 950 IF C1=0 THEN PRINT "GREEN" 960 IF C1=1 THEN PRINT "YELLOW" 970 IF C1=2 THEN PRINT "RED" 980 IF C1=3 THEN PRINT "DOCKED" 990 RETURN 1000 REM ++++++ PLOT COURSE +++++++ 1010 Y=Y1-Y2: X=X1-X2 1020 IF X=0 THEN 1030 1022 Z=Y/X 1025 IF Z>1 THEN 1030 1026 GOTO 1040 1030 C0=7: IF Y>0 THEN C0=3 1035 IF X=0 THEN 1090 1039 Z=X/Y: GOTO 1080 1040 IF Z>-1 THEN 1050 1041 C0=6: IF Y>0 THEN C0=2 1045 IF Z=-1 THEN 1090 1049 Z=1-ABS(X/Y): GOTO 1080 1050 IF Z>0 THEN IF Z<=1 THEN 1052 1051 GOTO 1060 1052 C0=8: IF Y>0 THEN C0=4 1055 IF Z=1 THEN 1090 1059 Z=1-ABS(Z): GOTO 1080 1060 IF Z>-1 THEN IF Z<=0 THEN 1070 1065 Z=X/Y: GOTO 1080 1070 C0=5: IF X<0 THEN C0=1 1080 C0=C0+ABS(Z) 1090 D0=SQR(((X1-X2)*(X1-X2))+((Y1-Y2)*(Y1-Y2))) 1095 RETURN 1100 C1=0: REM +++++ CONDITION +++++ 1110 FOR Z=10 TO K9+10 1120 IF C1=3 THEN 1190 1130 IF C1=2 THEN 1190 1140 IF E(Z)<=0 THEN 1190 1150 FOR V=V(P)-1 TO V(P)+1 1155 FOR H=H(P)-1 TO H(P)+1 1160 IF C1=0 THEN IF V=V(Z) THEN IF H=H(Z) THEN C1=1 1170 IF V(P)=V(Z) THEN IF H(P)=H(Z) THEN C1=2 1180 NEXT 1185 NEXT 1190 NEXT 1200 FOR Z=P+1 TO 9: REM ++++ DOCK CHECK ++++ 1205 IF E(Z)<=0 THEN 1290 1210 IF V(Z)=V(P) THEN IF H(P)=H(Z) THEN 1230 1220 GOTO 1290 1230 FOR Y1=Y(Z)-1 TO Y(Z)+1 1240 FOR X1=X(Z)-1 TO X(Z)+1 1245 IF C1=3 THEN 1280 1250 IF Y(P)=Y1 THEN IF X(P)=X1 THEN 1260 1255 GOTO 1280 1260 PRINT " SHIELDS DROPPED FOR DOCKING ": PRINT 1270 S(P)=50: E(P)=3000: P(P)=10: C1=3 1280 NEXT 1285 NEXT 1290 NEXT 1295 RETURN 1300 N=INT(W0*10) 1320 Y=J(C0)+(J(C0+1)-J(C0))*(C0-INT(C0)) 1330 X=K(C0)+(K(C0+1)-K(C0))*(C0-INT(C0)) 1340 RETURN 1500 REM +++++ PLOT COURSE ++++++ 1510 Y1=Y(P): X1=X(P) 1515 FOR Z1=1 TO W0*10 1520 Y1=Y1+Y: X1=X1+X 1530 IF Y1<0 THEN 1600 1540 IF X1<0 THEN 1600 1550 IF X1>7 THEN 1600 1560 IF Y1>7 THEN 1600 1570 NEXT 1580 Y(P)=Y1: X(P)=X1 1590 E(P)=E(P)-(N*2): Y(P)=INT(Y(P)): X(P)=INT(X(P)) 1595 RETURN 1600 REM Y(P)=INT(Y(P)-(Y)): X(P)=INT(Y(P)-(X)) 1610 Y=((V(P)*10)+Y(P))+(Y*W0*10) 1620 X=((H(P)*10)+X(P))+(X*W0*10) 1630 V(P)=INT(Y/10): H(P)=INT(X/10) 1640 Y(P)=INT(Y-V(P)*10): X(P)=INT(X-H(P)*10) 1650 IF X(P)>7 THEN X(P)=7 1652 IF X(P)<0 THEN X(P)=0 1655 IF Y(P)>7 THEN Y(P)=7 1657 IF Y(P)<0 THEN Y(P)=0 1660 IF V(P)>7 THEN V(P)=7: GOTO 1700 1665 IF V(P)<0 THEN V(P)=0: GOTO 1700 1670 IF H(P)>7 THEN H(P)=7: GOTO 1700 1675 IF H(P)<0 THEN H(P)=0: GOTO 1700 1695 GOTO 1590 1700 PRINT " *** STARFLEET COMMAND FORBIDS LEAVING THE GALAXY ***" 1710 PRINT : PRINT "### WARP ENGINES SHUT DOWN ###": PRINT 1740 GOSUB 7500: PRINT " IS AT QUADRANT ";V(P);H(P); 1760 PRINT " SECTOR ";Y(P);X(P): PRINT 1795 GOTO 1590 1800 Z=0: REM ==== COUNT WITHIN YOUR QUADRANT ==== 1810 FOR X=10 TO K9+10 1820 IF E(X)<=0 THEN 1880 1830 IF V(P)=V(X) THEN IF H(P)=H(X) THEN Z=Z+1 1880 NEXT 1890 RETURN 2000 FOR Q=10 TO K9+10: REM <<<< KLINGONS SHOOT >>>> 2010 IF E(Q)<=0 THEN 2090 2020 IF V(Q)=V(P) THEN IF H(Q)=H(P) THEN 2040 2030 GOTO 2090 2040 E(Q)=INT(E(Q)/2): Y1=Y(P): X1=X(P): Y2=Y(Q): X2=X(Q) 2050 IF E(Q)=0 THEN PRINT "*** *** ENERGY GONE!": GOTO 2090 2060 H=SQR(((X1-X2)*(X1-X2))+((Y1-Y2)*(Y1-Y2)))+(2*RND(0)) 2070 H=INT((E(Q)/H)*(2*RND(0))): IF H>E(Q)+S(Q) THEN H=E(Q) 2080 GOSUB 3000 2090 NEXT 2095 RETURN 3000 IF H<=0 THEN 3100: REM === HIT MSG DISPLAY === 3010 IF T(Q)=10 THEN PRINT TAB(7);"*#* Z Z A A A P P H ! *#*" 3050 PRINT H;" UNIT HIT ON ";: 3060 GOSUB 7500 3070 PRINT " FROM ";: GOSUB 7000 3080 PRINT " AT SECTOR ";Y(Q);X(Q) 3090 S(P)=S(P)-H 3100 IF E(Q)>12 THEN 3190 3110 GOSUB 7000 3120 PRINT " ## TRANSFERING ENERGY FROM SHIELDS ##" 3140 E(Q)=E(Q)+(S(Q)/2): S(Q)=INT(S(Q)/2) 3190 IF S(P)<=0 THEN GOSUB 7500: PRINT "### DESTROYED ###" 3195 RETURN 5000 PRINT : REM === MAIN EXEC === 5400 IF D<0 THEN 40000 5410 IF E(P)<0 THEN 40000 5420 IF S(P)<0 THEN 40000 5430 IF K1<=0 THEN 40000 5450 GOSUB 2000 5500 PRINT 5510 GOSUB 7500 5520 INPUT " NEXT COMMAND ( 0 TO 7 ) ---=>"C 5540 PRINT : IF C>10 THEN 5600 5545 IF C<0 THEN 5600 5550 IF D(C)=>0 THEN 5600 5560 GOSUB 7600: GOSUB 7700 5600 IF C=0 THEN 10000 5610 IF C=1 THEN 11000 5620 IF C=2 THEN 12000 5630 IF C=3 THEN 13000 5640 IF C=4 THEN 14000 5650 IF C=5 THEN 15000 5660 IF C=6 THEN 16000 5670 IF C=7 THEN 17000 5690 IF C=9 THEN 19000 5700 IF C=10 THEN 20000 5800 PRINT TAB(10);"*=*=*=*=* COMMAND SUMMARY *=*=*=*=*" 5810 PRINT 5820 PRINT "COMMAND # 0 --- MOVE ";: GOSUB 7500: PRINT 5830 PRINT "COMMAND # 1 --- QUADRANT SHORT-RANGE SCAN" 5840 PRINT "COMMAND # 2 --- LONG-RANGE SCAN" 5850 PRINT "COMMAND # 3 --- FIRE ";: GOSUB 7500: PRINT " PHAZERS" 5860 PRINT "COMMAND # 4 --- FIRE ";: GOSUB 7500: PRINT " PHOTONS" 5870 PRINT "COMMAND # 5 --- TRANSFER ENERGY TO & FROM SHIELDS" 5880 PRINT "COMMAND # 6 --- DAMAGE REPORT" 5890 PRINT "COMMAND # 7 --- COMPUTOR ACCESS" 5895 PRINT "COMMAND # 10--- WORK ON DAMAGES" 5900 PRINT 5910 PRINT "DO YOU WANT A LIST OF COMPUTOR COMMANDS ?" 5920 INPUT "-----------( 1=YES 0=NO )---------->"Y 5930 IF Y=1 THEN 17100 5995 GOTO 5500 7000 IF T(Q)<1 THEN PRINT " ";: RETURN : REM === SYMBOLS === 7010 IF T(Q)=1 THEN PRINT "";: RETURN 7050 IF T(Q)=5 THEN PRINT ">B<";: RETURN 7080 IF T(Q)=8 THEN PRINT "-X-";: RETURN 7090 IF T(Q)=9 THEN PRINT " * ";: RETURN 7100 IF T(Q)=10 THEN PRINT "";: RETURN 7200 RETURN 7500 IF P=1 THEN PRINT "";: REM === YOUR SHIP'S SYMBOL === 7590 RETURN 7600 REM ---- DAMAGE MESSAGES ------ 7610 IF C=0 THEN PRINT " WARP ENGINES"; 7620 IF C=1 THEN PRINT " SHORT RANGE SCANNERS"; 7630 IF C=2 THEN PRINT " LONG RANGE SCANNERS"; 7640 IF C=3 THEN PRINT " PHAZER CONTROLS"; 7650 IF C=4 THEN PRINT " PHOTON CONTROLS"; 7660 IF C=5 THEN PRINT " SHIELD CONTROLS"; 7670 IF C=6 THEN PRINT " DAMAGE INDICATORS"; 7680 IF C=7 THEN PRINT " COMPUTOR CONTROLS"; 7690 RETURN 7700 PRINT " ARE DAMAGED AND UNAVAILIBLE." 7710 PRINT 7720 PRINT " REPAIRS ARE UNDERWAY - - - BUT IT WILL TAKE TIME" 7730 PRINT 7790 RETURN 10000 GOSUB 7500: REM ----------- MOVE ------------- 10020 INPUT " COURSE - ( 1 TO 8.99 )--=>"C0 10025 PRINT 10030 IF C0=0 THEN PRINT " MOVE ABORTED": GOTO 5000 10040 IF C0<0 THEN PRINT " # TOO LOW #": GOTO 10000 10050 IF C0=>9 THEN PRINT " # TOO HIGH #": GOTO 10000 10100 GOSUB 7500 10110 INPUT " WARP FACTOR - ( 0 TO 8 )--=>"W0 10120 PRINT 10130 IF W0=0 THEN PRINT " MOVE ABORTED": GOTO 5000 10140 IF W0<0 THEN PRINT " NEGATIVE WARPS ILLEGAL": GOTO 10100 10150 IF W0>8 THEN PRINT " # TOO MUCH #": GOTO 10100 10200 Y2=0: X2=0 10210 GOSUB 1300 10220 GOSUB 1500 10300 FOR X=0 TO 77 10310 Q(X)=0 10320 NEXT 10350 D=D-1 10360 PRINT TAB(10);: GOSUB 7500: PRINT " *MOVING*": PRINT 10370 GOSUB 1100 10380 GOSUB 10500 10490 GOTO 5000 10500 REM ------ SHORT RANGE SCAN ------ 10510 FOR Z=K9+10 TO P STEP -1 10520 IF V(Z)=V(P) THEN IF H(Z)=H(P) THEN 10540 10530 GOTO 10590 10540 IF E(Z)<=0 THEN 10590 10550 Q((Y(Z)*10)+X(Z))=T(Z) 10590 NEXT 10600 GOSUB 11600 10610 IF S=O((V(P)*10)+H(P)) THEN 10990 10620 FOR X=0 TO 77 10625 IF Q(X)=-1 THEN Q(X)=0 10630 NEXT 10700 FOR Z=1 TO O((V(P)*10)+H(P)) 10710 Z2=INT(RND(0)*8): Z3=INT(RND(0)*8): Z1=(Z2*10)+Z3 10740 IF Q(Z1)>0 THEN 10710 10750 IF Q(Z1)=-1 THEN 10710 10760 Q(Z1)=-1 10790 NEXT 10990 RETURN 11000 GOSUB 10500: REM ------ SHORT RANGE SCAN ------ 11200 PRINT " XXX-0--1--2--3--4--5--6--7-XXX" 11210 FOR Y=0 TO 7 11220 PRINT Y;"-X"; 11300 FOR X=0 TO 7 11310 Q=(Y*10)+X 11320 IF Q(Q)=0 THEN PRINT " ";: GOTO 11400 11330 IF Q(Q)=-1 THEN PRINT " * ";: GOTO 11400 11340 IF Q(Q)=10 THEN PRINT "";: GOTO 11400 11350 IF Q(Q)=5 THEN PRINT ">B<";: GOTO 11400 11360 IF Q(Q)=1 THEN PRINT "";: GOTO 11400 11380 IF Q(Q)=8 THEN PRINT "-X-";: GOTO 11400 11390 PRINT "-?-"; 11400 IF Q=7 THEN PRINT "X-0 STARDATES LEFT: ";D 11410 IF Q=17 THEN PRINT "X-1 CONDITION: ### ";: GOSUB 950 11420 IF Q=27 THEN PRINT "X-2 QUADRANT: ";V(P);H(P) 11430 IF Q=37 THEN PRINT "X-3 SECTOR : ";Y(P);X(P) 11440 IF Q=47 THEN PRINT "X-4 ENERGY : ";E(P) 11450 IF Q=57 THEN PRINT "X-5 SHIELDS : ";S(P) 11460 IF Q=67 THEN PRINT "X-6 PHOTONS : ";P(P) 11470 IF Q=77 THEN PRINT "X-7" 11490 NEXT 11495 NEXT 11500 PRINT " XXX-0--1--2--3--4--5--6--7-XXX" 11590 GOTO 5000 11600 S=0 11610 FOR Z=0 TO 77 11620 IF Q(Z)=-1 THEN S=S+1 11630 NEXT 11690 RETURN 12000 REM ------- LONG RANGE SCAN ------ 12010 PRINT " LONG RANGE SCAN FROM QUADRANT ";V(P);H(P) 12020 PRINT 12050 PRINT "XXX---";H(P)-1;" ----";H(P);" ----";H(P)+1;" ---XXX" 12100 FOR V=V(P)-1 TO V(P)+1 12110 Z1=3: REM +++++ "TAB" 12200 FOR H=H(P)-1 TO H(P)+1 12300 IF H=H(P)-1 THEN PRINT "XXX"; 12305 IF V<0 THEN PRINT " LIMBO";: GOTO 12700 12310 IF V>7 THEN PRINT " LIMBO";: GOTO 12700 12320 IF H<0 THEN PRINT " LIMBO ";: GOTO 12610 12330 IF H>7 THEN PRINT " LIMBO";: GOTO 12700 12400 Z=0: REM +++++ "COUNT" 12405 Z2=(V*10)+H 12410 FOR Z4=5 TO K9+10 12420 IF V(Z4)=V THEN IF H(Z4)=H THEN 12430 12425 GOTO 12480 12430 IF E(Z4)<=0 THEN 12480 12440 IF T(Z4)=10 THEN Z=Z+100 12450 IF T(Z4)=5 THEN Z=Z+10 12480 NEXT 12490 Z=Z+O(Z2): M(Z2)=Z 12500 Z3=3: IF Z>9 THEN Z3=2 12510 IF Z>99 THEN Z3=1 12600 PRINT TAB(Z1+Z3);Z;" "; 12610 Z1=Z1+7 12700 NEXT 12710 PRINT TAB(26);"X";V 12800 NEXT 12950 PRINT "XXX---";H(P)-1;" ----";H(P);" ----";H(P)+1;" ---XXX" 12990 GOTO 5000 13000 Y=0: REM --------- PHAZERS ------------ 13010 IF C1>1 THEN 13100 13020 PRINT TAB(9);"CONDITION ";: GOSUB 950: GOTO 5000 13100 FOR Q=10 TO K9+10 13110 IF E(Q)<=0 THEN 13190 13120 IF V(P)=V(Q) THEN IF H(P)=H(Q) THEN 13140 13130 GOTO 13190 13140 PRINT "***** PHAZERS LOCKED ON "; 13150 GOSUB 7000: PRINT " AT SECTOR ";V(Q);H(Q) 13160 Y=Y+1 13190 NEXT 13200 PRINT E(P);" ENERGY UNITS AVAILABLE ON THE "; 13210 GOSUB 7500 13220 PRINT : INPUT " HOW MANY UNITS TO FIRE ? ======>"U 13230 PRINT 13240 IF U<=0 THEN PRINT "*** SHOOTING ABORTED ***": GOTO 5000 13250 IF U<=E(P) THEN 13270 13260 PRINT "### YOU ONLY HAVE ";E(P);" UNITS ###": GOTO 13000 13270 E(P)=E(P)-U 13300 FOR Q=10 TO K9+10 13310 IF E(Q)<=0 THEN 13390 13320 IF V(P)=V(Q) THEN IF H(P)=H(Q) THEN 13340 13330 GOTO 13390 13340 Y1=Y(P): X1=X(P): Y2=Y(Q): X2=X(Q): H1=INT(U/Y) 13350 H=SQR(((X1-X2)*(X1-X2))+((Y1-Y2)*(Y1-Y2)))+(2*RND(0)) 13360 H=INT((H1/H)*(5*RND(0))): PRINT "*** Z A W O O O M M ***" 13370 PRINT H;" *** UNIT HIT *** ON THE "; 13375 GOSUB 7000: PRINT " AT SECTOR ";Y(Q);X(Q) 13380 S(Q)=S(Q)-H: IF S(Q)<=0 THEN E(Q)=-1: K1=K1-1 13385 IF S(Q)<=0 THEN PRINT TAB(10);: GOSUB 7000 13387 IF S(Q)<=0 THEN PRINT " ##### D E S T R O Y E D #####" 13388 IF S(Q)<=0 THEN Q((Y(Q)*10)+X(Q))=0 13390 NEXT 13990 GOTO 5000 14000 REM --------- PHOTONS ------------ 14010 GOSUB 1800 14020 IF Z=0 THEN PRINT "SENSORS SHOW NO KLINGONS": GOTO 5000 14100 PRINT : PRINT "SENSORS COUNT ";Z;" ENEMY SHIP"; 14110 IF Z>1 THEN PRINT "S": PRINT 14120 PRINT : GOSUB 7500 14130 INPUT " TORPEDO COURSE - (1-8.99) ---=>"C0 14140 PRINT : IF C0<1 THEN PRINT "NUMBER TOO LOW": GOTO 14000 14150 IF C0=>9 THEN PRINT "NUMBER TOO HIGH": GOTO 14000 14200 GOSUB 1320 14210 GOSUB 14500 14220 P(P)=P(P)-1 14490 GOTO 5000 14500 Y1=Y(P): X1=X(P): Y2=Y1: X2=X1: REM === TORPEDO TRACK === 14510 IF C=4 THEN PRINT TAB(12);"*** TORPEDO TRACK ***" 14520 GOTO 14540 14530 Y2=Y2+Y: X2=X2+X 14540 IF Y2<0 THEN 14595 14550 IF Y2>7 THEN 14595 14560 IF X2<0 THEN 14595 14570 IF X2>7 THEN 14595 14580 PRINT TAB(16);Y2;TAB(22);" -=- ";X2: Q=0: GOSUB 14600 14590 GOTO 14530 14595 RETURN 14600 FOR Z=10 TO K9+10: REM === LOOK FOR === 14610 IF E(Z)<=0 THEN 14780 14620 IF Q>0 THEN 14780 14630 IF V(Z)=V(P) THEN IF H(Z)=H(P) THEN 14650 14640 GOTO 14780 14650 IF Y(Z)=INT(Y2) THEN IF X(Z)=INT(X2) THEN 14700 14660 GOTO 14780 14700 PRINT TAB(10);"### B A A W O O M M ###": PRINT 14710 PRINT TAB(10);: Q=Z: GOSUB 7000 14720 PRINT " *** DESTROYED *** - AT SECTOR ";Y(Z);X(Z) 14730 K1=K1-1: E(Z)=-1: S(Z)=-1: X2=-2: T(Z)=8 14740 Q((Y(Z)*10)+X(Z))=8 14780 NEXT 14790 RETURN 15000 REM --------- SHIELDS ------------ 15100 PRINT "TOTAL ENERGY AVAILIBLE = ";E(P)+S(P) 15110 PRINT 15120 INPUT " HOW MUCH FOR THE SHIELDS--->"Y 15130 PRINT 15140 IF Y<0 THEN PRINT " NO NEGATIVE ENERGIES !!!": GOTO 15000 15145 IF Y>E(P)+S(P) THEN PRINT "YOU ONLY HAVE ": GOTO 15000 15150 E(P)=(E(P)+S(P))-Y 15160 S(P)=Y 15170 PRINT Y;" UNITS TRANSFERED TO SHIELDS." 15180 PRINT E(P);" UNITS LEFT" 15195 GOTO 5000 16000 Z1=0: REM ------- DAMAGE REPORT -------- 16020 FOR Z=0 TO 7 16030 IF D(Z)<0 THEN Z1=Z1+1 16040 NEXT 16050 IF Z1=0 THEN PRINT "*** EVERYTHING'S O.K. ***": GOTO 5000 16100 Z1=C 16110 FOR C=0 TO 7 16120 PRINT C;" ";: GOSUB 7600 16130 PRINT TAB(30);D(C) 16150 NEXT 16190 C=Z1 16195 GOTO 5000 17000 GOSUB 7500: REM --------- COMPUTOR -------- 17020 INPUT " COMPUTOR AWAITING COMMAND ( 0 TO 3 )--->"K 17030 PRINT 17050 IF K=0 THEN 17300 17060 IF K=1 THEN 17400 17070 IF K=2 THEN 17500 17080 IF K=3 THEN 17600 17100 PRINT TAB(10);"##### COMPUTOR COMMANDS #####" 17110 PRINT 17120 PRINT "COMMAND # 0 --- MAP OF YOUR GALAXY" 17130 PRINT "COMMAND # 1 --- GAME STATUS - LEFT ETC..." 17140 PRINT "COMMAND # 2 --- TRAJECTORY CALCULATOR" 17150 PRINT "COMMAND # 3 --- TORPEDO TRAJECTORIES TO 'S" 17180 PRINT 17190 IF C=7 THEN 17000 17195 GOTO 5000 17300 REM --------------- GALAXY MAP ---------- 17305 PRINT "XXXX--0----1----2----3----4----5----6----7---XXXX" 17310 FOR Y=0 TO 7 17320 PRINT Y;" X";: Z=5 17330 FOR X=0 TO 7 17340 IF M((Y*10)+X)<10 THEN PRINT TAB(Z);M((Y*10)+X); 17345 IF M((Y*10)+X)=>10 THEN PRINT TAB(Z-1);M((Y*10)+X); 17350 Z=Z+5 17360 NEXT 17365 PRINT TAB(45);"X ";Y;" "; 17370 IF Y

P THEN PRINT 17380 NEXT 17390 PRINT "XXXX--0----1----2----3----4----5----6----7---XXXX" 17395 GOTO 5000 17400 REM --------- GAME STATUS -------- 17410 PRINT " *@* STARSHIPS LEFT *@*" 17420 FOR Q=1 TO 4 17430 IF E(Q)>0 THEN PRINT TAB(10);: GOSUB 7000: PRINT 17450 PRINT 17460 PRINT D;" STARDATES LEFT" 17470 PRINT B;" BASE(S) LEFT" 17480 PRINT K1;" KLINGON(S) ( ) LEFT" 17495 GOTO 5000 17500 REM --------- TRAJECTORY CALCULATOR -------- 17510 PRINT TAB(20);: GOSUB 7500: PRINT : PRINT 17530 PRINT " *** YOU ARE IN QUADRANT ";V(P);H(P); 17540 PRINT " AT SECTOR ";Y(P);X(P): PRINT 17550 PRINT "ENTER LOCATION (Y1,X1) AND DESTINATION (Y2,X2) IN" 17560 PRINT "THIS FORMAT - - - > Y1, X1, Y2, X2 (AS NUMBERS)" 17565 PRINT "*** NOTE *** ANY NUMBERS >7 OR <0 GIVE WRONG ANSWERS" 17570 INPUT "INPUT THE 4 NUMBERS -----=>"Y1,X1,Y2,X2 17580 PRINT : GOSUB 1000: PRINT : PRINT "*** COURSE ===>";C0 17585 PRINT : Z=INT(D0*10)/10 17590 PRINT "*** WARP FACTOR BETWEEN QUADRANTS ===>";Z 17592 PRINT "*** WARP FACTOR BETWEEN SECTORS =====>";Z/10 17595 GOTO 5000 17600 PRINT : REM --------- TRAJECTORIES ---- 17610 FOR Q=10 TO 30 17620 IF E(Q)<=0 THEN 17690 17630 IF V(P)=V(Q) THEN IF H(P)=H(Q) THEN 17650 17640 GOTO 17690 17650 Y1=Y(P): X1=X(P): Y2=Y(Q): X2=X(Q) 17660 GOSUB 1000: GOSUB 7000: PRINT " AT ";Y(Q);X(Q); 17670 PRINT TAB(25);"COURSE ===>";C0 17680 PRINT TAB(25);"DISTANCE ===>";INT(D0*10)/10 17690 NEXT 17695 GOTO 5000 19000 REM --------- DE-BUG ------------- 19010 PRINT " # UNIT ENERGY SHIELDS V,H,Y,X" 19030 FOR Q=1 TO K9+10 19040 PRINT Q;TAB(4);: GOSUB 7000: PRINT TAB(10);E(Q); 19050 PRINT TAB(20);S(Q);TAB(27);V(Q);H(Q);" ---";Y(Q);X(Q); 19055 PRINT " (";T(Q);" )" 19060 IF Q=10 THEN INPUT " SEE MORE--->"Y 19070 IF Q=20 THEN INPUT " SEE MORE--->"Y 19080 NEXT 19195 GOTO 5000 20000 REM --------- WORK ON DAMAGES ------------ 20010 FOR C=0 TO 7 20020 IF D(C)=>0 THEN 20080 20030 D(C)=D(C)+RND(0) 20050 GOSUB 7600: PRINT TAB(30); 20060 IF D(C)<0 THEN PRINT " ...MAKING PROGRESS" 20070 IF D(C)>0 THEN PRINT " ### HAVE BEEN FIXED ###": D(C)=0 20080 NEXT 20090 D=D-1 20900 GOTO 5000 40000 PRINT "---===<<< GAME OVER >>>===---": PRINT 40010 IF K1<=0 THEN PRINT "### ALL KLINGONS DESTROYED ###" 40020 IF E(P)<=0 THEN PRINT "*** YOU RAN OUT OF ENERGY ***" 40030 IF S(P)<=0 THEN PRINT "#@# YOUR SHIELDS WERE DESTROYED #@#" 40040 IF K1>0 THEN PRINT TAB(10);K1;" KLINGONS ARE LEFT." 40100 PRINT 40110 IF K1<=0 THEN PRINT "### THE FEDERATION IS SAVED ###" 40200 PRINT 40210 INPUT " DO YOU WANT TO TRY AGAIN (1=YES 0=NO)--=>"Y 40220 PRINT 40230 RESTORE 40240 IF Y=1 THEN CLEAR 40250 IF Y=1 THEN 10 50000 END