5 ? CHR$(12):REM HYPERTERMINAL CLS 7 POKE 15,80:? 10 ? " ____ _____ ___ ____ _____ ____ _____ _ ___ 11 ? " / __//____//__ \ /__ \ /____//__ \ /____//_X__/ 12 ? " ( ( __ __| | ___) / __ ___) / ____ ___ 13 ? " \ \ / / ,/,/| | / _/ / / / _/ / __/ / _ \ 14 ? " ____) )/ /,/ /__| | / /\ \ / / / /\ \ / /__ / / \ \ 15 ? " /_____//_//________|/_/ /_/ /_/ /_/ /_//____//_/ \_\ 50 ? TAB(12);" ___ 51 ? TAB(12);" ___....-----'---'-----....___ 52 ? TAB(12);" ========================================= 53 ? TAB(12);" ___'---..._______...---'___ 54 ? TAB(12);" (___) _|_|_|_ (___) 55 ? TAB(12);" \\____.-'_.---._'-.____// 56 ? TAB(12);" cccc'.__'---'__.'cccc 57 ? TAB(12);" ccccc 58 ? 59 ? TAB(10);"U S S E N T E R P R I S E N C C - 1 7 0 1 - D 60 ? 70 ? TAB(18);"Conversion to SBC6502 by Igi 2018":? 75 ? TAB (30);"Please wait ..." 77 FOR QU=0 TO 20000:NEXT QU:? CHR$(12) 80 GOSUB 4000 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 ? " YOU HAVE ";D;" STARDATES TO DESTROY ";K9;" KLINGONS" 610 ? 620 ? "***** ENTER '-1' FOR A LIST OF COMMANDS *****" 630 ? 640 FOR QU=0 TO 10000:NEXT QU 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 ? "GREEN" 960 IF C1=1 THEN ? "YELLOW" 970 IF C1=2 THEN ? "RED" 980 IF C1=3 THEN ? "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 ? " SHIELDS DROPPED FOR DOCKING ": ? 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 ? " *** STARFLEET COMMAND FORBIDS LEAVING THE GALAXY ***" 1710 ? : ? "### WARP ENGINES SHUT DOWN ###": ? 1740 GOSUB 7500: ? " IS AT QUADRANT ";V(P);H(P); 1760 ? " SECTOR ";Y(P);X(P): ? 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 ? "*** *** 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 ? TAB(7);"*#* Z Z A A A P P H ! *#*" 3050 ? H;" UNIT HIT ON ";: 3060 GOSUB 7500 3070 ? " FROM ";: GOSUB 7000 3080 ? " AT SECTOR ";Y(Q);X(Q) 3090 S(P)=S(P)-H 3100 IF E(Q)>12 THEN 3190 3110 GOSUB 7000 3120 ? " ## 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: ? "### DESTROYED ###" 3195 RETURN 4000 ?" ______ ______ 4001 ?" _/_/__\_\_/_/__\_\_ 4002 ?" /.-- / //-\\ \ --.\ 4003 ?" _____.------(___,-|-|=====|-|-,___)------._____ 4004 ?" _.-' \-\_*_/-/ `-._ 4005 ?"(o) '-----' (o) 4006 ?" Klingon ship 4010 ?:RETURN 5000 ? : 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 ? 5510 GOSUB 7500 5520 ? " NEXT COMMAND ( 0 TO 7 ) ---=>";:INPUT C 5540 ? : 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 ? TAB(10);"*=*=*=*=* COMMAND SUMMARY *=*=*=*=*" 5810 ? 5820 ? "COMMAND # 0 --- MOVE ";: GOSUB 7500: ? 5830 ? "COMMAND # 1 --- QUADRANT SHORT-RANGE SCAN" 5840 ? "COMMAND # 2 --- LONG-RANGE SCAN" 5850 ? "COMMAND # 3 --- FIRE ";: GOSUB 7500: ? " PHAZERS" 5860 ? "COMMAND # 4 --- FIRE ";: GOSUB 7500: ? " PHOTONS" 5870 ? "COMMAND # 5 --- TRANSFER ENERGY TO & FROM SHIELDS" 5880 ? "COMMAND # 6 --- DAMAGE REPORT" 5890 ? "COMMAND # 7 --- COMPUTOR ACCESS" 5895 ? "COMMAND # 10--- WORK ON DAMAGES" 5900 ? 5910 ? "DO YOU WANT A LIST OF COMPUTOR COMMANDS ?" 5920 ? "---( 1=YES 0=NO )--->";:INPUT Y 5930 IF Y=1 THEN 17100 5995 GOTO 5500 7000 IF T(Q)<1 THEN ? " ";: RETURN : REM === SYMBOLS === 7010 IF T(Q)=1 THEN ? "";: RETURN 7050 IF T(Q)=5 THEN ? ">B<";: RETURN 7080 IF T(Q)=8 THEN ? "-X-";: RETURN 7090 IF T(Q)=9 THEN ? " * ";: RETURN 7100 IF T(Q)=10 THEN ? "";: RETURN 7200 RETURN 7500 IF P=1 THEN ? "";: REM === YOUR SHIP'S SYMBOL === 7590 RETURN 7600 REM --- DAMAGE MESSAGES --- 7610 IF C=0 THEN ? " WARP ENGINES"; 7620 IF C=1 THEN ? " SHORT RANGE SCANNERS"; 7630 IF C=2 THEN ? " LONG RANGE SCANNERS"; 7640 IF C=3 THEN ? " PHAZER CONTROLS"; 7650 IF C=4 THEN ? " PHOTON CONTROLS"; 7660 IF C=5 THEN ? " SHIELD CONTROLS"; 7670 IF C=6 THEN ? " DAMAGE INDICATORS"; 7680 IF C=7 THEN ? " COMPUTOR CONTROLS"; 7690 RETURN 7700 ? " ARE DAMAGED AND UNAVAILIBLE." 7710 ? 7720 ? " REPAIRS ARE UNDERWAY - - - BUT IT WILL TAKE TIME" 7730 ? 7790 RETURN 10000 GOSUB 7500: REM --- MOVE --- 10020 ? " COURSE - ( 1 TO 8.99 )--=>";:INPUT C0 10025 ? 10030 IF C0=0 THEN ? " MOVE ABORTED": GOTO 5000 10040 IF C0<0 THEN ? " # TOO LOW #": GOTO 10000 10050 IF C0=>9 THEN ? " # TOO HIGH #": GOTO 10000 10100 GOSUB 7500 10110 ? " WARP FACTOR - ( 0 TO 8 )--=>";:INPUT W0 10120 ? 10130 IF W0=0 THEN ? " MOVE ABORTED": GOTO 5000 10140 IF W0<0 THEN ? " NEGATIVE WARPS ILLEGAL": GOTO 10100 10150 IF W0>8 THEN ? " # 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 ? TAB(10);: GOSUB 7500: ? " *MOVING*": ? 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 ? " XXX-0--1--2--3--4--5--6--7-XXX" 11210 FOR Y=0 TO 7 11220 ? Y;"-X"; 11300 FOR X=0 TO 7 11310 Q=(Y*10)+X 11320 IF Q(Q)=0 THEN ? " ";: GOTO 11400 11330 IF Q(Q)=-1 THEN ? " * ";: GOTO 11400 11340 IF Q(Q)=10 THEN ? "";: GOTO 11400 11350 IF Q(Q)=5 THEN ? ">B<";: GOTO 11400 11360 IF Q(Q)=1 THEN ? "";: GOTO 11400 11380 IF Q(Q)=8 THEN ? "-X-";: GOTO 11400 11390 ? "-?-"; 11400 IF Q=7 THEN ? "X-0 STARDATES LEFT: ";D 11410 IF Q=17 THEN ? "X-1 CONDITION: ### ";: GOSUB 950 11420 IF Q=27 THEN ? "X-2 QUADRANT: ";V(P);H(P) 11430 IF Q=37 THEN ? "X-3 SECTOR : ";Y(P);X(P) 11440 IF Q=47 THEN ? "X-4 ENERGY : ";E(P) 11450 IF Q=57 THEN ? "X-5 SHIELDS : ";S(P) 11460 IF Q=67 THEN ? "X-6 PHOTONS : ";P(P) 11470 IF Q=77 THEN ? "X-7" 11490 NEXT 11495 NEXT 11500 ? " 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 ? " LONG RANGE SCAN FROM QUADRANT ";V(P);H(P) 12020 ? 12050 ? "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 ? "XXX"; 12305 IF V<0 THEN ? " LIMBO";: GOTO 12700 12310 IF V>7 THEN ? " LIMBO";: GOTO 12700 12320 IF H<0 THEN ? " LIMBO ";: GOTO 12610 12330 IF H>7 THEN ? " 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 ? TAB(Z1+Z3);Z;" "; 12610 Z1=Z1+7 12700 NEXT 12710 ? TAB(26);"X";V 12800 NEXT 12950 ? "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 ? 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 ? "***** PHAZERS LOCKED ON "; 13150 GOSUB 7000: ? " AT SECTOR ";V(Q);H(Q) 13160 Y=Y+1 13190 NEXT 13200 ? E(P);" ENERGY UNITS AVAILABLE ON THE "; 13210 GOSUB 7500 13220 ? :?" HOW MANY UNITS TO FIRE ? ===>";:INPUT U 13230 ? 13240 IF U<=0 THEN ? "*** SHOOTING ABORTED ***": GOTO 5000 13250 IF U<=E(P) THEN 13270 13260 ? "### 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))): ? "*** Z A W O O O M M ***" 13370 ? H;" *** UNIT HIT *** ON THE "; 13375 GOSUB 7000: ? " 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 ? TAB(10);: GOSUB 7000 13387 IF S(Q)<=0 THEN ? " ##### 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 ? "SENSORS SHOW NO KLINGONS": GOTO 5000 14100 ? : ? "SENSORS COUNT ";Z;" ENEMY SHIP"; 14110 IF Z>1 THEN ? "S": ? 14120 ? : GOSUB 7500 14130 ? " TORPEDO COURSE - (1-8.99) ---=>";:INPUT C0 14140 ? : IF C0<1 THEN ? "NUMBER TOO LOW": GOTO 14000 14150 IF C0=>9 THEN ? "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 ? 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 ? 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 ? TAB(10);"### B A A W O O M M ###": ? 14710 ? TAB(10);: Q=Z: GOSUB 7000 14720 ? " *** 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 ? "TOTAL ENERGY AVAILIBLE = ";E(P)+S(P) 15110 ? 15120 ? " HOW MUCH FOR THE SHIELDS--->";:INPUT Y 15130 ? 15140 IF Y<0 THEN ? " NO NEGATIVE ENERGIES !!!": GOTO 15000 15145 IF Y>E(P)+S(P) THEN ? "YOU ONLY HAVE ": GOTO 15000 15150 E(P)=(E(P)+S(P))-Y 15160 S(P)=Y 15170 ? Y;" UNITS TRANSFERED TO SHIELDS." 15180 ? 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 ? "*** EVERYTHING'S O.K. ***": GOTO 5000 16100 Z1=C 16110 FOR C=0 TO 7 16120 ? C;" ";: GOSUB 7600 16130 ? TAB(30);D(C) 16150 NEXT 16190 C=Z1 16195 GOTO 5000 17000 GOSUB 7500: REM --- COMPUTOR --- 17020 ? " COMPUTOR AWAITING COMMAND ( 0 TO 3 )--->";:INPUT K 17030 ? 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 ? TAB(10);"##### COMPUTOR COMMANDS #####" 17110 ? 17120 ? "COMMAND # 0 --- MAP OF YOUR GALAXY" 17130 ? "COMMAND # 1 --- GAME STATUS - LEFT ETC..." 17140 ? "COMMAND # 2 --- TRAJECTORY CALCULATOR" 17150 ? "COMMAND # 3 --- TORPEDO TRAJECTORIES TO 'S" 17180 ? 17190 IF C=7 THEN 17000 17195 GOTO 5000 17300 REM --- GALAXY MAP --- 17305 ? "XXXX--0----1----2----3----4----5----6----7---XXXX" 17310 FOR Y=0 TO 7 17320 ? Y;" X";: Z=5 17330 FOR X=0 TO 7 17340 IF M((Y*10)+X)<10 THEN ? TAB(Z);M((Y*10)+X); 17345 IF M((Y*10)+X)=>10 THEN ? TAB(Z-1);M((Y*10)+X); 17350 Z=Z+5 17360 NEXT 17365 ? TAB(45);"X ";Y;" "; 17370 IF Y

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