10 CLEAR1000
15 BL$="                                "
17 LN$="--------------------------------"
18 WT=2000
19 ST$="********************************"
20 CLS:PRINT@234,"STAR TREK"
30 PRINT@172,"*":PRINT@202,"*       *";:PRINT@265,"* * * * * *":PRINT@299,"*  *":PRINT@332,"*"
40 PRINT@465,"PLEASE WAIT";
50 GOSUB4490
60 DIMG(8,8),KL(9,3),Q(8,8),D(6),NDF$(7)
70 FORI=1TO6:D(I)=0:NEXTI
80 NDF$(1)=(CHR$(128+16*(3-1)+1)):NDF$(2)="E":NDF$(3)=(CHR$(128+16*(8-1)+15))
90 NDF$(4)="B":NDF$(5)=( CHR$(128+16*(2-1)+3)):NDF$(6)="t":NDF$(7)="x"
100 R3=RND(8):R4=RND(8):RM=0
110 T1=RND(8):T2=RND(8)
120 A2$(1)="WARP ENGINES":A2$(2)="S. R. SENSORS":A2$(3)="L. R. SENSORS"
130 A2$(4)="PHASOR CONTROL":A2$(5)="PHOTON TUBES":A2$(6)="DAMAGE CONTROL"
140 T$="EFGDACB":P$="BB-AA-GG-FEE-DD-C":B$="CC+DD+EFF+GG+AA+B"
180 T0=3000+ RND(500):T=T0:T9=T0+40:E=3000:P=10
190 Q1=RND(8):Q2=RND(8):S1=RND(8):S2=RND(8):B9=0:K9=0
200 FORI=1TO8
210 FORJ=1TO8
220 K3=0:RL= RND(0)*100
230 IF RL<.0001 THEN K3=K3+1
240 IF RL<.01 THEN K3=K3+1
250 IF RL<.03 THEN K3=K3+1
260 IF RL<.1 THEN K3=K3+1
270 IF RL<.5 THEN K3=K3+1
280 IF RL<3 THEN K3=K3+1
290 IF RL<5 THEN K3=K3+1
300 IF RL<10 THEN K3=K3+1
310 K9=K9+K3:B3=0
320 IF RND(0)>.96 THEN B3=1
330 B9=B9+B3:S3=RND(8):G(I,J)=K3*100+B3*10+S3
340 NEXTJ:NEXTI
350 K0=K9:IF B9>0 THEN 360
355 I= RND(8):J= RND(8):G(I,J)=G(I,J)+10:B9=1
360 CLS:INPUT"ENTER SECRET CODE OF YOUR CHOICEFOR POSSIBLE USE LATER: ";CO$
365 CLS:PRINT"DO YOU WANT YOUR ORDERS?"
370 A$=INKEY$:B4=RND(8):IFA$=""THEN370
380 B4= RND(8):B5= RND(8):G(B4,B5)=G(B4,B5)+10
390 IFA$="Y"ORA$="YES" THEN470
400 IFA$<>"N"ANDA$<>"NO" THEN370
410 CLS:GOTO580
420 IFC$="RED"THEN4440
425 GOSUB1180:PRINT@352,"";:INPUT"    COMMAND";I
430 PRINT@352,BL$;:PRINT@352,"":IFI<00ORI>8THEN420
440 F1=0
450 I=I+1:ONIGOTO2890,810,2320,1290,1540,1200,3870,2090,550
460 REM
470 CLS
480 PRINT"ORDERS:    STARDATE =";T0:PRINT
490 PRINT"   AS COMMANDER OF THE UNITED   SPACESHIP ENTERPRISE, YOUR MIS- SION IS TO RID THE GALAXY OF"
500 PRINT"THE DEADLY KLINGON MENACE.  TO  DO  THIS, YOU MUST DESTROY THE KLINGON INVASION FORCE OF";K9
510 PRINT"BATTLE CRUISERS.":PRINT"  YOU HAVE 40 SOLAR YEARS TO    COMPLETE YOUR MISSION  (I.E.    UNTIL STARDATE";T9;")."
520 PRINT"THE ENTERPRISE IS CURRENTLY     LOCATED IN:"
530 PRINT"QUADRANT";Q1;"-";Q2;"  SECTOR";S1;"-";S2;
540 IFINKEY$<>CHR$(13)THEN540
545 GOTO410
550 PRINT@352,"   QUIT GAME";:INPUTA$
560 IFLEFT$(A$,1)="Y"THEN2860
570 GOTO430
580 REM
590 K3=0:B3=0:S3=0:TH=0:X=0:RM=0
600 IFQ1<1 ORQ1>8 ORQ2<1 ORQ2>8 THEN 640
610 K3=INT(G(Q1,Q2)/100):B3=INT((G(Q1,Q2)-K3*100)/10):S3=INT(G(Q1,Q2)-K3*100-B3*10)
615 PRINTK3;B3;S3;:PRINT@384,"";
620 IF T1=Q1 AND T2=Q2 THEN TH= RND(2)+2
630 FORI=1TO9:FORJ=1TO3:KL(I,J)=0:NEXTJ:NEXTI
640 FORI=1TO8:FORJ=1TO8:Q(I,J)=0:NEXTJ:NEXTI
650 Q(S1,S2)=1
660 IF K3<1 THEN 700
670 FORI=1TOK3
680 GOSUB790
690 Q(R1,R2)=2:KL(I,1)=R1:KL(I,2)=R2:KL(I,3)=200:NEXTI
700 IF B3<1 THEN 730
710 FORI=1TOB3:GOSUB790:Q(R1,R2)=3:NEXTI
720 IFB4=Q1 ANDB5=Q2 THENB6=R1:B7=R2
730 IF S3<1 THEN 750
740 FORI=1TOS3: GOSUB790:Q(R1,R2)=4:NEXTI
750 IF TH<1 THEN 770
760 FORI=1TOTH:GOSUB790:Q(R1,R2)=5:NEXTI
770 IFRM=1 ORR3=Q1 ANDR4=Q2 THENRM=1:GOSUB790:R3=R1:R4=R2
780 GOTO810
790 R1=RND(8):R2=RND(8)
800 IF Q(R1,R2)<>0 THEN 790
805 RETURN
810 REM
820 FORI=1TO3
830 FORJ=1TO3
840 IF S1+I-2<1 OR S1+I-2>8 OR S2+J-2<1 OR S2+J-2>8 THEN 930
850 IF Q(S1+I-2,S2+J-2)<>3 THEN 930
860 C$="DOCKED":E=3000:P=10:GOTO900
870 FOR DD=1 TO 6
880 IFD(DD)<>0THENPRINT@384,"** ";A2$(DD):PRINT"NOW FULLY REPAIRED**":D(DD)=0:PRINTBL$;:GOSUB4600
890 NEXTDD:RETURN
900 IFS1+I-2=B6ANDS2+J-2=B7THENPRINT@352,"* THE ENTERPRISE HAS TRIGGERED  A KLINGON MINE *":PRINTBL$;:GOSUB4600:GOTO2710
905 GOSUB870
910 IFK3>0THENPRINT@384,"STARBASE SHIELDS PROTECT THE","ENTERPRISE.":GOSUB4600
920 GOTO1030
930 NEXTJ:NEXTI
940 IFK3 >0 ORRM=1 ORTH>1 THEN970
950 IFE<300 THEN980
960 C$="GREEN":GOTO990
970 C$="RED":F1=1:GOTO990
980 C$="YELLOW"
990 PRINT""
1000 IFRM=1 THEN GOSUB4370
1010 IFTH>1 THEN GOSUB4160
1020 IFE<0 THEN2710
1030 IFD(2)<>0THENCLS:PRINT"** SHORT RANGE SENSORS OUT **":GOTO420
1040 CLS:PRINT"** SHORT RANGE SENSOR SCAN **"
1050 PRINTLN$;:K=T9-T
1060 FORI=1TO8
1070 FORJ=1TO8
1080 PRINT( CHR$(128+16*(3-1)+0));NDF$(Q(I,J)+1);:NEXTJ:PRINT:NEXTI
1090 PRINTLN$;
1100 PRINT@82,"STRDTE =";T;
1110 PRINT@114,"COND. = ";C$;
1120 PRINT@146,"QUAD";Q1;"-";Q2;
1130 PRINT@178,"SECT";S1;"-";S2;
1140 PRINT@210,"ENERGY ="; INT(E);
1150 PRINT@242,"PHOT.TP.=";P;
1160 PRINT@274,"KLINGONS=";K9;
1170 PRINT@306,"YRS LEFT=";K;:GOTO420
1180 PRINT@410,"4 3 2":PRINT@442,"5 + 1":PRINT@474,"6 7 8":RETURN
1190 REM
1200 PRINT
1210 IFD(6)<>0THENPRINT" DAMAGE CONTROL REPORT           NOT AVAILABLE";:GOSUB4590:GOSUB2660:GOTO420
1220 CLS:PRINT@32,"*****DAMAGE CONTROL REPORT****"
1230 PRINT"DEVICE","STATE OF REPAIR"
1240 J=0:FORI=1TO5:J=J+D(I):IFD(I)<0 THEN PRINTA2$(I),"  ";D(I)
1250 NEXTI
1260 IFJ=0 THENPRINT"ALL SYSTEMS OPERABLE";
1270 GOSUB4590
1280 GOSUB2660:GOTO420
1290 REM
1300 IFD(4)<>0THENPRINT"PHASOR CONTROL IS DAMAGED.":GOSUB4590:GOSUB2660:GOTO420
1310 IFC$="DOCKED"THENPRINT"OFFENSIVE WEAPONS MAY NOT":PRINT"BE USED WHILE DOCKED.":GOTO420
1315 GOSUB2885
1320 PRINT@384,"PHASORS LOCKED ON TARGET.":PRINT"ENERGY AVAIL. =";E
1330 INPUT"UNITS TO FIRE";U
1340 IFU=0THEN420
1345 IFU<0ORE-U<0THEN1320
1350 SOUND225,5
1360 E=E-U
1370 IFQ1=B4ANDQ2=B5THENIFU>499THENGOSUB2305:GOSUB2660:GOTO420
1380 IFTH<1 THEN1420
1390 WB=WB-U
1400 IFWB<0THENPRINT@384,"WEB DISRUPTED --":PRINT"THOLIANS DESTROYED!",BL$;:GOSUB1535
1410 IFWB<0THENGOSUB4590:GOSUB2660:GOTO420
1420 FORI=1TO9
1430 IFKL(I,3)<=0 THEN1520
1440 DI=((KL(I,1)-S1)^2)+((KL(I,2)-S2)^2)
1450 H=U*(.5+.5*RND(0))/SQR(DI)
1460 KL(I,3)=KL(I,3)-H
1470 PRINT@352,"":PRINT@383,INT(H);"UNIT HIT ON KLINGON":PRINT"AT SECTOR";KL(I,1);"-";KL(I,2)
1480 IFKL(I,3)>0THENPRINTKL(I,3);"UNITS LEFT":GOSUB4590:GOTO1520
1490 PRINT"** KLINGON DESTROYED! **":K3=K3-1:K9=K9-1:GOSUB4590:IFK3=0THENC$="GREEN"
1500 Q(KL(I,1),KL(I,2))=0:G(Q1,Q2)=K3*100+B3*10+S3
1510 IFK9<=0 THEN2790
1520 NEXTI
1530 GOSUB2660:GOTO420
1535 TH=0:T1=-1:FORI=1TO8:FORJ=1TO8
1536 IFQ(I,J)=5 OR Q(I,J)=6 THEN Q(I,J)=0
1537 NEXTJ:NEXTI:RETURN
1540 REM
1550 IFD(5)<>0THENPRINT"PHOTON TUBES NOT OPERATIONAL":GOSUB4590:GOSUB2660:GOTO420
1560 IFC$="DOCKED"THENPRINT"OFFENSIVE WEAPONS MAY NOT":PRINT"BE USED WHILE DOCKED.":GOTO420
1570 IFP=0THENPRINT"ALL PHOTON TORPEDOS EXPENDED":GOSUB2660:GOTO420
1580 GOSUB2885:PRINT@384,"TORPEDO COURSE";:INPUTC1
1590 IFC1=0 THEN420
1600 IFC1<1 ORC1>8.9999 THEN1580
1610 SOUND1,1
1620 X1=-SIN((C1-1)*.785398):X2=COS((C1-1)*.785398)
1630 IFABS(X1)>ABS(X2)THENXY=ABS(X1):GOTO1640
1635 XY= ABS(X2)
1640 X=S1:Y=S2:P=P-1
1650 X=X+X1/XY:Y=Y+X2/XY
1660 IFX<.5ORX>8.5ORY<.5ORY>8.5THENPRINT"TORPEDO MISSED.":GOSUB4600:GOSUB2660:GOTO420
1670 L1=X+.5:L2=Y+.5
1680 PRINT@XX(L1,L2),"+";:SOUND125,1
1690 PRINT@384,"";
1700 IFRM=1ANDR3=INT(L1)ANDR4=INT(L2)THENGOSUB2070:PRINT"ROMULAN DESTROYED!":RM=0:R3=-1:GOSUB2660:GOTO420
1710 IFQ(L1,L2)=0 THEN1650
1720 IFINT(L1)=B6ANDINT(L2)=B7THENGOSUB2070:GOSUB2305:GOSUB2660:GOTO420
1730 IFRND(0)<.9THEN1850
1740 PRINT"TORPEDO FAILED TO DETONATE"
1750 IFQ(L1,L2)<>2THENGOSUB2660:GOTO420
1760 PRINT"* KLINGON HAS TAKEN":PRINT"EVASIVE ACTION *":GOSUB4590
1770 Q(L1,L2)=0
1780 FORI=1TO8
1790 IFINT(L1)=KL(I,1)ANDINT(L2)=KL(I,2)THEN1810
1800 NEXTI
1810 L1= RND(8):L2= RND(8)
1820 IFQ(L1,L2)<>0 ORL1=KL(I,1)ANDL2=KL(I,2) THEN1810
1830 KL(I,1)=L1:KL(I,2)=L2:Q(L1,L2)=2
1840 GOTO810
1850 IFQ(L1,L2)<>2 THEN1930
1860 GOSUB2070:PRINT"** KLINGON DESTROYED! **":PRINTBL$;
1870 K3=K3-1:K9=K9-1:IFK3=0 THENC$="GREEN"
1880 IFK9<=0 THEN2790
1890 L1=X+.5:L2=Y+.5
1900 FORI=1TO9
1910 IF(INT(L1))=KL(I,1)AND(INT(L2))=KL(I,2)THENKL(I,3)=0:GOTO2050
1920 NEXTI
1930 IFQ(L1,L2)<>4 THEN1980
1940 IFRND(0)<.1THENCLS:PRINTST$;ST$:PRINT"TORPEDO TRIGGERED A SUPERNOVA":PRINTST$;ST$:GOSUB4590:GOTO2710
1950 GOSUB2070:PRINT"STAR DESTROYED.":GOSUB4600
1960 S3=S3-1
1970 GOTO2050
1980 IFQ(L1,L2)<>5 THEN2010
1990 TH=TH-1:Q(L1,L2)=0
2000 GOSUB2070:PRINT"** THOLIAN DESTROYED! **":GOSUB2660:GOTO420
2010 IFQ(L1,L2)<>6 THEN2030
2020 PRINT"PHOTON TORPEDO IS CAUGHT IN WEB":GOSUB4600:GOSUB2660:GOTO420
2030 GOSUB2070:PRINT"*** STARBASE DESTROYED...":PRINT"CONGRATULATIONS !!! ***"
2040 B3=B3-1
2050 Q(L1,L2)=0:G(Q1,Q2)=K3*100+B3*10+S3
2060 GOSUB2660:GOTO420
2070 PRINT@XX(L1,L2),"o";:PRINT@384,"";:RETURN
2080 REM
2090 PRINT@384,"";
2095 IFT<T0+10THENPRINT"THE DEATH RAY IS STILL"
2096 PRINT"EXPERIMENTAL. IT MAY NOT BE USEDUNTIL";T0+10:GOSUB4590:GOSUB2660:GOTO420
2100 J=0
2110 I=RND(6)
2120 ONIGOTO2160,2130,2140,2130,2160,2180
2130 PRINT@384,"*** WARNING:":PRINT"DEATH RAY MALFUNCTIONING ***":GOSUB4600
2140 J=J+1:IFJ>5THENPRINT@384,"SPONTANEOUS EMISSIONS,","DIRECTIVE CANCELED ***":GOSUB4600:GOSUB2660:GOTO420
2150 GOTO2110
2160 PRINT@384,">>>> EMERGENCY <<<<"
2170 PRINT"*** ANTI STOKES DECAY IS","LEADING TO THERMAL DEGRADATION":GOSUB4600:GOTO2720
2180 PRINT@384,"":PRINT"ENERGY TRANSFER SUCCESSFUL":GOSUB4600
2190 IFRM=1THENPRINT"** ROMULAN DESTROYED! **":RM=0:R3=-1:GOSUB4590
2200 FORI=1TO9
2210 IFKL(I,3)=0 THEN2240
2220 PRINT@384,"KLINGON AT SECTOR";KL(I,1);"-";KL(I,2),"DESTROYED!":GOSUB4600
2230 K9=K9-1:Q(KL(I,1),KL(I,2))=0:KL(I,3)=0:K3=0
2240 NEXT I
2250 G(Q1,Q2)=B3*10+S3
2260 IFTH<1 THEN2300
2270 FORI=1TO8:FORJ=1TO8:IFQ(I,J)=5 THENQ(I,J)=0
2275 NEXTJ:NEXTI
2280 PRINT@384,"** THOLIANS DESTROYED! **",BL$;:GOSUB4600
2290 TH=0:T1=-1
2295 IFK9<=0THEN2790
2300 PRINT@352,BL$;BL$;BL$:GOTO420
2305 PRINT@384,"KLINGON MINE DESTROYED!",BL$;BL$;:Q(B6,B7)=0:B4=-1:B6=-1:GOSUB4600
2307 B3=B3-1:G(Q1,Q2)=K3*100+B3*10+S3
2308 RETURN
2310 REM
2320 PRINTA6$
2330 IFD(3)<>0THENPRINT"**LONG RANGE SENSORS OUT**":GOTO420
2340 CLS:PRINT
2350 PRINT" * LONG RANGE SCAN FOR";Q1;"-";Q2;" *"
2360 A5$="     "
2370 Q3=Q2-1:Q4=Q2+1:IFQ3=0 THENQ3=8
2375 IF Q4=9 THEN Q4=1
2380 PRINT"      ";Q3;A5$;Q2;A5$;Q4
2390 PRINT"   ";LEFT$(LN$,25)
2400 K=Q1+7- INT((Q1+6)/8)*8
2410 GOSUB2515:GOSUB2517
2430 IFQ1=1THENPRINT"   ";LEFT$(LN$,25)
2440 K=Q1+8- INT((Q1+7)/8)*8
2450 GOSUB2515:GG$(2)="  E "
2460 GOSUB2517
2470 IFQ1=8THENPRINT"   ";LEFT$(LN$,25)
2480 K=Q1+9- INT((Q1+8)/8)*8
2490 GOSUB2515:GOSUB2517
2510 GOSUB2660:GOTO420
2515 GG$(1)=STR$(G(K,Q3)):GG$(2)=STR$(G(K,Q2)):GG$(3)=STR$(G(K,Q4)):RETURN
2517 PRINTK":  ";:FORI=1TO3:PRINTRIGHT$("00"+RIGHT$(GG$(I),LEN(GG$(I))-1),3);"  :  ";:NEXTI
2518 PRINT:PRINT"   ";LEFT$(LN$,25):RETURN
2520 REM
2530 PRINT@352,""
2540 IFC$="DOCKED"THENPRINT@384,"STARBASE SHIELDS PROTECT THE","ENTERPRISE.":GOSUB4600:RETURN
2550 FORI=1TO9
2560 IFKL(I,3)<=0 THEN2650
2570 D=(KL(I,1)-S1)^2+(KL(I,2)-S2)^2
2580 D=SQR(D)+.5
2590 H=INT(KL(I,3)*( RND(0)*.75+.25)/D)
2600 E=INT(E-H)
2610 PRINT@352,BL$:PRINT@383,H;"UNIT HIT ON ENTERPRISE":PRINT"FROM KLINGON AT";KL(I,1);"-";KL(I,2)
2620 IFE<300THENPRINT"(";E;"UNITS LEFT )":GOTO2630
2625 PRINT "                              "
2630 SOUND1,1
2640 FORZZ=1TO15:SOUND(RND(250)),1:NEXTZZ
2650 NEXTI:RETURN
2660 REM
2670 IFK3>0 THEN GOSUB2520
2680 IFRM=1 THEN GOSUB4370
2690 IFTH>1 THEN GOSUB4150
2700 IFE>0ANDT<T9 THENRETURN
2710 REM
2720 CLS
2730 PRINT"IT IS NOW STARDATE";T
2740 PRINT"THE ENTERPRISE HAS BEEN":PRINT"DESTROYED."
2750 PRINT"THE FEDERATION WILL BE":PRINT"CONQUERED."
2760 IFK9=1THENPRINT"THERE IS STILL 1 KLINGON":PRINT"BATTLE CRUISER LEFT.":GOTO2770
2765 PRINT"THERE ARE STILL";K9;"KLINGON":PRINT"BATTLE CRUISERS LEFT."
2770 PRINT"                  YOU ARE DEAD!":GOTO2860
2780 REM
2790 CLS:FORI=0TO3:PRINTST$;:NEXTI
2800 PRINT"IT IS STARDATE";T;".":PRINT"THE LAST KLINGON BATTLE CRUISER"
2810 PRINT"IN THE GALAXY HAS BEEN          DESTROYED.":PRINT"YOU HAVE BEEN PROMOTED TO       ADMIRAL."
2820 D=0
2830 J=T-T0:IFJ=0THENJ=1
2840 I=K0*1000/J-(R3=-1)*75-(B4=-1)*55-D
2850 PRINTK0;"KLINGONS IN";J;"YEARS.":PRINT"RATING =";I:FORI=1TO3:PRINTST$;:NEXTI
2860 INPUT"ANOTHER GAME";A$
2870 IF A$="Y"ORA$="YES" THEN10
2880 END
2885 PRINT@384,LEFT$(BL$,26);:PRINT@416,LEFT$(BL$,26);:PRINT@448,LEFT$(BL$,26);:PRINT@480,LEFT$(BL$,26);:RETURN
2890 REM
2900 GOSUB2885
2910 GOSUB1180:PRINT@384,"";:INPUT"COURSE (1-8.9999)";C1
2920 IFC1=0 THEN420
2930 IFC1<0ORC1>8.9999 THEN2890
2940 INPUT"WARP FACTOR (0-12)";W1
2950 IFW1=0 THEN420
2960 IFW1<0ORW1>12 THEN2940
2970 IFW1>.2ANDD(1)<0THENSOUND200,2:PRINT@384,"WARP ENGINES ARE DAMAGED,","MAXIMUM SPEED = WARP .2":GOTO2940
2980 IFK3>0ORTH>0 THEN GOSUB2520:IFE<=0 THEN2710
2990 IFW1>=1THENGOSUB3000:GOTO3040
2995 GOTO3040
3000 FORI=1TO6
3010 IFD(I)=-1THENPRINT@384,"* ";A2$(I):PRINT"NOW FULLY REPAIRED *":GOSUB4600
3020 IFD(I)<0 THEN D(I)=D(I)+1:IFD(I)>0 THEN D(I)=0
3030 NEXT I:RETURN
3040 IF RND(0)<.95 THEN3190
3050 REM
3060 CLS:PRINT:PRINT"* YOU HAVE BEEN ACCELERATED BY":PRINT"A BLACK HOLE INTO ANOTHER":PRINT"TIME AND PLACE IN THE GALAXY.*"
3070 L1=RND(8):L2= RND(8):IFL1=Q1 ANDL2=Q2 THEN3070
3080 Q1=L1:Q2=L2
3090 K=RND(0)*7-3.5:IFK=0 THEN3090
3100 T=INT(T+K):IFT>T9 THEN2710
3110 PRINT"IT IS NOW STARDATE";T
3120 PRINT"THE ENTERPRISE IS NOW IN","QUADRANT";Q1;"-";Q2:GOSUB4600
3130 FORI=1TO8
3140 FORJ=1TO8
3150 Q(I,J)=0
3160 NEXT J:NEXT I
3170 Q1=-1:GOTO3840
3180 REM
3190 IF RND(0)>.25 THEN3400
3200 R1=RND(6)
3210 IF RND(0)>.5 THEN3260
3220 D(R1)=D(R1)- RND(5)
3230 PRINT@384,"* SPACE STORM, ";A2$(R1),"DAMAGED *"
3240 GOSUB4590:GOTO3400
3250 REM
3260 FORI=R1 TO5
3270 IFD(I)<0 THEN3340
3280 NEXT I
3290 J=R1-1
3300 FORI=1TOJ
3310 IFD(I)<0 THEN3340
3320 NEXT I
3330 GOTO3400
3340 R1=I
3350 D(I)=D(I)+ RND(5)
3360 IFD(I)>0 THEND(I)=0
3370 IFD(I)=0THENPRINT@384,"* TRUCE, ";A2$(I),"NOW FULLY REPAIRED ***":GOTO3380
3375 PRINT@384,"*TRUCE, ";A2$(I),"STATE OF REPAIR IMPROVED ***"
3380 GOSUB4600
3390 REM
3400 J=W1*8:E=E-2*J:IFW1>=1 THENT=T+1
3410 IFT>T9 ORE<=0 THEN2710
3420 IFJ=0 THEN810
3430 Q(S1,S2)=0:X=S1:Y=S2
3440 X1=- SIN((C1-1)*.785398):X2= COS((C1-1)*.785398)
3450 IFABS(X1)>ABS(X2)THENXY=ABS(X1):GOTO3460
3455 XY= ABS(X2)
3460 J=J*XY+.5
3470 FORI=1TOJ
3480 X=X+X1/XY:Y=Y+X2/XY
3490 IF X<.5 OR X>8.5 OR Y<.5 OR Y>8.5 THEN3770
3500 L1= INT(X+.5):L2= INT(Y+.5)
3510 IFQ(L1,L2)<>0 THEN3560
3520 S1=L1:S2=L2
3530 NEXTI
3540 Q(S1,S2)=1:GOTO810
3550 REM
3560 PRINT@352,"":PRINT"THE ENTERPRISE HAS COLLIDED WITH";:K=Q(L1,L2):ONKGOTO3570,3570,3660,3700,3680,3690
3570 PRINT"A KLINGON BATTLE CRUISER.":GOSUB4600
3580 PRINT@352,"":PRINT"THE KLINGON HAS BEEN DESTROYED  AND THE ENTERPRISE DAMAGED."
3590 FORK=1TO9
3600 IFKL(K,1)=INT(L1)ANDKL(K,2)=INT(L2)THEN3620
3610 NEXT K
3620 E=E-KL(K,3)
3630 KL(K,3)=0:K3=K3-1:K9=K9-1
3640 IFK9<=0 THEN2790
3650 Q(L1,L2)=1:S1=L1:S2=L2:G(Q1,Q2)=K3*100+B3*10+S3:GOTO3720
3660 PRINT"A STARBASE AND SUFFERED DAMAGE":Q(S1,S2)=1:GOTO3720
3680 PRINT"A THOLIAN AND SUFFERED DAMAGE":Q(S1,S2)=1:GOTO3720
3690 PRINT"A THOLIAN WEB AND SUFFERED DAM- AGE";:Q(S1,S2)=1:GOTO3720
3700 PRINT"A STAR AND SUFFERED DAMAGE."
3710 Q(S1,S2)=1
3720 PRINTBL$;:GOSUB4590:R1=RND(6)
3730 K=J-I+1:IFK>5 THENK=5
3740 D(R1)=D(R1)-K
3750 PRINT@352,"":PRINTA2$(R1):PRINT"DAMAGED BY COLLISION.":PRINTBL$;:GOSUB4600:GOTO810
3760 REM
3770 IFW1<1 THENW1=1:T=T+1: GOSUB3000
3780 X=Q1+W1*X1/XY
3790 L1= INT(X+.5)-1
3800 IFL1<0ANDL1>-9THENL1=9+L1:GOTO3810
3805 L1= ABS((L1/8- INT(L1/8))*8)+1
3810 X=Q2+W1*X2/XY
3820 L2= INT(X+.5)-1
3830 IFL2<0ANDL2>-9THENL2=9+L2:GOTO3840
3835 L2= ABS((L2/8- INT(L2/8))*8)+1
3840 Q1=L1:Q2=L2:S1= RND(8):S2= RND(8)
3850 GOTO580
3860 REM
3870 CLS:PRINT"SELF-DESTRUCT SEQUENCE INITIATED":I=1: GOSUB4120
3880 FORII=1TO400:NEXTII:ONI GOSUB3910,3920,3930,3940,3950,3960,3970,3980,3990,4000,4010,4020,4030,4040,4050,4110
3890 I=I+1
3900 FORJ=0TO1:GOSUB4120:NEXTJ:IFI<=16THEN3880
3905 GOTO420
3910 PRINT@64,"10":RETURN
3920 PRINT@96,"9":RETURN
3930 PRINT@128,"8":RETURN
3940 PRINT@160,"1ST OFFICER SPOCK ENTERS CODE.":RETURN
3950 PRINT@194,"*** CODE VERIFIED ***":RETURN
3960 PRINT@192,"7";:RETURN
3970 PRINT@224,"6":RETURN
3980 PRINT@256,"5":RETURN
3990 PRINT@258,"ENTER SECRET CODE: ";:INPUTA$:IFA$<>CO$THENI=15
3995 RETURN
4000 PRINT@290,"*** CODE VERIFIED ***"
4010 PRINT@288,"4";:RETURN
4020 PRINT@320,"3":RETURN
4030 PRINT@352,"2":RETURN
4040 PRINT@384,"1":RETURN
4050 PRINT@416,"* SELF-DESTRUCT ACTIVATED *":GOSUB4600
4070 CLS:PRINT@160,"  THE ENTROPY OF THE UNIVERSE            HAS BEEN MAXIMIZED":FORI=0TO2500:NEXT I
4080 FORI=1TO8:FORJ=1TO8:IFQ(I,J)=2 THENK9=K9+1
4090 NEXT J:NEXT I
4100 K0=K0-K9:D=500:GOTO2860
4110 CLS:PRINT@160,"** CODE VERIFICATION FAILS **":PRINT"**** SELF-DESTRUCT ABORTED ****":RETURN
4120 SOUND100,1
4130 RETURN
4140 REM
4150 PRINT@384,"";
4160 IFB3<>0 THEN4180
4170 IFC$="DOCKED" THENPRINT" STARBASE SHIELDS PROTECT THE ENTERPRISE":RETURN
4180 PRINT@384,"THOLIANS ATTACK ENTERPRISE****"
4190 X=0:L=0
4200 FORI=-1TO1
4210 FORJ=-1TO1
4220 IFS1+J<1ORS1+J>8ORS2+I<1ORS2+I>8THENL=L+1:GOTO4240
4230 IFQ(S1+J,S2+I)=0 THENX=X+1
4240 NEXT J:NEXT I
4250 FORI=1TOTH
4260 WB=WB+270-20* RND(4)
4270 IFX=0THENGOSUB790:Q(R1,R2)=6:GOTO4310
4280 R1=S1-2+ RND(3):R2=S2-2+ RND(3)
4290 IFR1<1 OR R1>8 OR R2<1 OR R2>8 THEN4280
4295 IF Q(R1,R2)<>0 THEN 4280
4300 Q(R1,R2)=6:X=X-1
4310 NEXT I
4320 X=(8-L-X)/8*100
4330 PRINT"*** WEB";X;"% COMPLETED ***"
4340 IFX>99THENPRINT"THE ENTERPRISE HAS BEEN TRAPPED":FORZZ=1TOWT:NEXTZZ:GOTO2720
4350 GOSUB4590:RETURN
4360 REM
4370 PRINT@384,BL$:H=INT(120*(RND(0)*.75+.25)):E=E-H:PRINT@383,H;"UNIT HIT ON ENTERPRISE":PRINT"FROM ROMULAN AT";R3;"-";R4
4380 PRINT"*** ROMULAN HAS RECLOAKED ***":GOSUB4600
4390 IF RND(0)>.5 THEN RETURN
4400 R1=R3+ RND(3)-2:IFR1>8 ORR1<1 THEN4400
4410 R2=R4+ RND(3)-2:IFR2>8 ORR2<1 THEN4410
4420 R3=R1:R4=R2
4430 RETURN
4440 IFK3=0ANDRM=0ANDTH<=1THENC$="GREEN":GOTO420
4445 PRINT@352,"    COMMAND?": GOSUB1180
4450 A$=INKEY$:IFRND(0)>.96THENGOSUB2660:GOTO420
4460 IFA$=""THENFORZZ=1TO200:NEXTZZ:PRINT@372,AL$;:GOTO4470
4465 I=VAL(A$):A$=RIGHT$(STR$(I),1):GOTO4480
4470 A$=INKEY$:IFA$=""THENSOUND1,1:PRINT@372,"A L E R T";:GOTO4450
4475 I=VAL(A$):A$= RIGHT$(STR$(I),1)
4480 PRINT@356,"COMMAND? ";A$;CHR$(127+RND(7)*16):IFRND(0)>.995THENGOSUB2660:GOTO4480
4482 I$=INKEY$:IFI$=CHR$(8)THENA$="":GOTO4480
4484 IFI$=CHR$(13)THENI=VAL(A$):GOTO430
4486 A$=A$+I$:GOTO4480
4490 DIM XX(8,8)
4500 DATA65,67,69,71,73,75,77,79
4510 DATA97,99,101,103,105,107,109,111
4520 DATA129,131,133,135,137,139,141,143
4530 DATA161,163,165,167,169,171,173,175
4540 DATA193,195,197,199,201,203,205,207
4550 DATA225,227,229,231,233,235,237,239
4560 DATA257,259,261,263,265,267,269,271
4570 DATA289,291,293,295,297,299,301,303
4580 FORYY=1TO8:FORZZ=1TO8:READXX(YY,ZZ):NEXTZZ:AL$=AL$+CHR$(191):NEXTYY:AL$=AL$+CHR$(191):RETURN
4590 REM
4600 FORZZ=1TOWT:NEXTZZ:RETURN
