10 DEFFNR(R)=INT(((T/1000+RND(1))-INT(T/1000+RND(0)))*R) 20 GS=645:PRINTCHR$(12);:GOSUB8000:GOTO1000 50 D=SQR((E3-K(1,I))*(E3-K(1,I))+(E4-K(2,I))*(E4-K(2,I))):RETURN 1000 FORI=0TO9:FORJ=0TO9:S(I,J)=0:NEXTJ,I 1010 S(E3,E4)=4:N=PEEK(GS+E1+E2*10) 1011 IFN>99THENN=N-100 1012 NS=FNR(3)+30/SQR((E1-5)*(E1-5)+(E2-5)*(E2-5)+3) 1014 FORI=1TONS:S(FNR(10),FNR(10))=1:NEXT 1020 NK=INT(N/10):NB=N-NK*10 1025 FORI=0TO4:K(0,I)=0:NEXT 1030 BS$="RED":IFNK=0THENBS$="GREEN":GOTO1100 1040 FORI=1TONK:K(0,I-1)=100-100*(RND(1)>.8) 1050 X=FNR(10):Y=FNR(10):IFS(X,Y)>0THEN1050 1060 S(X,Y)=2:K(1,I-1)=X:K(2,I-1)=Y:NEXTI 1100 IFNB=0THEN1140 1110 FORI=1TONB 1120 X=FNR(10):Y=FNR(10):IFS(X,Y)<>0THEN1120 1130 S(X,Y)=3:NEXT 1140 IFD=0THENGOSUB9400 1195 S(E3,E4)=4:GOSUB61000 1197 PRINTCHR$(12):PRINT 1200 PRINT" TIME ENERGY SHIELDS KLINGONS TORPEDOES" 1210 PRINT:PRINT" POWER PLANT WARP DRIVE IMPULSE DRIVE" 1220 PRINT:PRINT" BATTLE STATUS:":PRINT 1230 FORI=0TO9:PRINT:PRINT" ";:FORJ=0TO9 1240 PRINTMID$(S$,S(J,I)+1,1);" ";:NEXTJ:PRINT" "; 1250 IFI<3THENPRINTD$(I); 1260 IFI=5THEND=-1:GOSUB1299 1265 IFI=7THEND=0:GOSUB1299 1267 IFI=9THEND=1:GOSUB1299 1269 IFI<9THENPRINT 1270 NEXTI:POKE55026,32 1280 GOSUB60050:GOTO2000 1299 FORJ1=-1TO1:X=E1+J1:Y=E2+D 1300 P=PEEK(GS+X+Y*10):POKE(GS+X+Y*10),P-(P<99)*100 1305 IFP>99THENP=P-100 1310 IFX<0ORX>9ORY<0ORY>9THENPRINT" 9";:GOTO1360 1320 PRINTRIGHT$(" "+STR$(P),3); 1360 NEXTJ1:RETURN 2000 GOSUB60050 2002 PRINT"a";INT(T);" c";INT(E);" e";INT(S);" "; 2010 PRINT"i";T1;" ";"g";INT(K);" ";"k";INT(P(0));"% "; 2015 PRINT"m";INT(P(1));"% o";INT(P(2));"% "; 2020 PRINT"q";BS$;" ";L$; 2030 PS=53647 2035 PS=PS+192 2040 E3=INT(E3):E4=INT(E4) 2050 IFD=0THENGOSUB9400 2099 PRINT"s "; 2100 NK=0:FORI=0TO4:IFK(0,I)<=0THENNEXT:GOTO2300 2101 E3=INT(E3):E4=INT(E4) 2102 NK=NK+1:IFFNR(30)>9THEN2290 2105 POKEPS+E3*2+E4*128,187 2110 GOSUB50 2120 HT=(200-(K(0,I)>100)*200)/D 2130 IFHT>STHENS=0:HT=HT-S 2140 IFS>=HTTHENS=S-HT:GOTO2290 2145 H1=FNR(4):HT=HT/5 2150 IFH1=0THENPRINT"sPOWER PLANT HIT!";:P(0)=P(0)-HT 2160 IFH1=1THENPRINT"sWARP DRIVE HIT!";:P(1)=P(1)-HT 2170 IFH1=2THENPRINT"sIMPULSE DRIVE HIT!";:P(2)=P(2)-HT 2180 IFH1=3THENPRINT"sTORPEDO TUBES HIT!";:IFFNR(8)0THENBS$="RED" 2302 PP=PEEK(GS+E1+E2*10):PP=PP-INT(PP/10)*10 2304 POKEGS+E1+E2*10,(PP+NK*10+100) 2309 IFE<100ORNK=0THEN2400 2320 POKEKEY,253:IF(PEEK(KEY)AND2)>0THEN2400 2330 E=E-100:FORI=0TO4:IFK(0,I)<=0THEN2390 2340 GOSUB50:PK=PS+K(1,I)*2+K(2,I)*128:POKEPK,187 2350 IFK(0,I)<=100/D/NKTHENK=K-1 2351 K(0,I)=K(0,I)-100/D/NK 2360 IFK(0,I)>0THENPOKEPK,75:FORII=1TO200:NEXT 2370 IFK(0,I)<=0THENPOKEPK,213:S(K(1,I),K(2,I))=0 2390 NEXT 2400 IFE<100ORS>=500THEN2500 2410 POKEKEY,247:IF(PEEK(KEY)AND128)>0THEN2500 2420 IFS>400THENE=E-500+S:S=500:GOTO2500 2430 S=S+100:E=E-100 2500 POKEKEY,239:IF(PEEK(KEY)AND32)>0THEN2600 2510 FORI=0TO2:IFP(I)>90THEN2590 2520 R=FNR(9)+1:IFE69THENPOKEPT,213 2620 TX=TX+D(0,TF):TY=TY+D(1,TF) 2630 IFTX<0ORTX>9ORTY<0ORTY>9THENTF=0:GOTO2700 2640 PT=PS+TX*2+TY*128:IFPEEK(PT)=213THEN2690 2645 POKEPT,213:TF=0 2650 IFS(TX,TY)<>2THEN2660 2652 FORI=0TO4:IFK(1,I)=TXANDK(2,I)=TYTHENK(0,I)=0 2654 NEXT:S(TX,TY)=0:K=K-1:NK=NK-1:GOTO2700 2660 IFS(TX,TY)=1THEN7000 2670 IFS(TX,TY)=3THENS(TX,TY)=0:GOTO2700 2675 GOSUB61000:STOP 2690 POKEPT,TF+15 2700 POKEKEY,239:K1=PEEK(KEY) 2710 IFK1=127THENL$="W" 2720 IFK1=239THENL$="T" 2730 IFK1=253THENL$="I" 2735 POKEKEY,191:IFPEEK(KEY)=127THENP1=8:GOTO2750 2740 POKEKEY,127:K1=PEEK(KEY):IFK1=255THEN3000 2745 FORI=2TO8:IFABS(K1+2^(I-1)-255)<.1THENP1=9-I 2746 NEXT 2750 IFL$<>"I"ORP(2)<50ORE<5000/P(2)THEN2800 2755 S(E3,E4)=0:D=0:POKEPS+E3*2+E4*128,213 2760 E5=E1*10+E3:E6=E2*10+E4:E5=E5+D(0,P1):E6=E6+D(1,P1) 2765 E=E-5000/P(2) 2770 F1=INT(E5/10):F2=INT(E6/10):F3=E5-F1*10:F4=E6-F2*10 2775 MM=PEEK(PS+F3*2+F4*128):IFMM<>42ANDMM<>75THEN2777 2776 PRINT"sMANOUVRE ABORTED!!";:F3=E3:F4=E4:F1=E1:F2=E2 2777 E3=F3:E4=F4:POKEPS+E3*2+E4*128,69 2780 IFE1=F1ANDE2=F2THEN2000 2790 E1=F1:E2=F2:GOTO1000 2800 IFL$<>"W"THEN2850 2805 IFP(1)<50ORE<10000/P(1)THEN2850 2810 S(E3,E4)=0:E5=E1*10+E3:E6=E2*10+E4 2815 E=E-10000/P(1) 2820 E5=E5+D(0,P1)*10+(100-P(1))^2/100*(RND(1)-.5) 2830 E6=E6+D(1,P1)*10+(100-P(1))^2/100*(RND(1)-.5) 2840 F1=INT(E5/10):F2=INT(E6/10) 2842 IFF1<0ORF1>9ORF2<0ORF2>9THEN2776 2844 E3=INT(E5-F1*10):E4=INT(E6-F2*10):GOTO2780 2850 IFL$<>"T"THEN3000 2900 IFT1=0ORTF>0THEN3000 2910 T1=T1-1:TF=P1:TX=E3:TY=E4 3000 IFBS$="RED"THEN3100 3010 POKEKEY,247:IF(PEEK(KEY)AND16)>0THEN3100 3015 K=0:GOSUB61000 3020 PRINTCHR$(12):PRINT:PRINT:PRINT:PRINT:PRINT:PRINT 3025 PRINT" 0 1 2 3 4 5 6 7 8 9" 3030 FORY=0TO9:PRINTY;:FORX=0TO9:N=PEEK(GS+X+Y*10) 3040 IFN>99THENPRINTRIGHT$(" "+STR$(N-100),3); 3050 IFN<100THENPRINT" **"; 3055 K=K+INT(N/10)-INT(N/100)*10 3060 NEXTX:PRINT:NEXTY 3065 PRINT:PRINT"YOU ARE AT SECTOR";E1;E2 3070 IF(PEEK(KEY)AND16)=0THEN3070 3080 GOSUB60050:T=T-10:GOTO1000 3100 T=T-1:IFE<3000THENE=E+P(0)/10 3101 IFP(0)<1THENPRINT"sSHIP EXPLODES!!!";:GOTO11000 3110 IFT>0ANDK>0THEN2000 3115 GOSUB61000:PRINT 3120 IFK>0THEN10000 3130 PRINT:PRINT"YOU HAVE DESTROYED ALL THE KLINGONS" 3140 PRINT"AND SAVED THE GALAXY!":END 7000 FL=745:S(TX,TY)=0:S(E3,E4)=4 7005 FORA=-1TO1:FORB=-1TO1:X1=TX+A:Y1=TY+B 7010 IFX1<0ORX1>9ORY1<0ORY1>9THEN7100 7020 IFS(X1,Y1)=4THENDR=1 7025 IFS(X1,Y1)=1THENFL=FL+2:POKEFL,X1:POKEFL+1,Y1 7030 IFS(X1,Y1)<>2THEN7100 7035 FORII=0TO4:IFK(0,II)<=0THEN7050 7040 IFK(1,II)=X1ANDK(2,II)=Y1THENK(0,II)=0 7050 NEXT:NK=NK-1:K=K-1 7100 NEXTB,A 7102 FORA=-3TO3:FORB=-3TO3:POKEPS+TX*2+A+(TY*2+B)*64,161:NEXTB,A 7105 FORI=1TO1000:NEXT:IFDR=1THEN7500 7107 FORA=-3TO3:FORB=-3TO3:POKEPS+TX*2+A+(TY*2+B)*64,32:NEXTB,A 7110 FORA=-1TO1:FORB=-1TO1:X1=TX+A:Y1=TY+B 7120 IFX1<0ORX1>9ORY1<0ORY1>9THEN7200 7130 S(X1,Y1)=0:POKEPS+X1*2+Y1*128,213 7200 NEXTB,A: 7210 IFFL>745THENTX=PEEK(FL):TY=PEEK(FL+1):FL=FL-2:GOTO7005 7220 GOTO2000 7500 GOSUB61000:PRINT:PRINT"TRIGGER HAPPY FOOL!!":END 8000 PRINT:PRINT" REAL-TIME STARTREK!":KEY=57088 8001 DIMD(1,8),S(9,9),K(2,4),P(2),D$(2) 8002 PRINT:PRINT:PRINT"DIFFICULTY(1-4)?";:POKE530,1:POKEKEY,127 8003 II=RND(1):J=PEEK(KEY):IFJ=255THEN8003 8005 PRINT"...":PRINT:FORI=0TO99:POKEGS+I,0:NEXT 8020 S$=CHR$(213)+"*KBE" 8040 K=45-((J>127)+(J>191)+(J>222))*20+FNR(7):FORI=1TOK 8045 X=FNR(10):T=T+1:Y=FNR(10):IFPEEK(GS+X+Y*10)>=50THEN8045 8050 POKEGS+X+Y*10,(PEEK(GS+X+Y*10)+10):NEXT 8060 B=3+FNR(2)-(J>127)-(J>191)-(J>222) 8065 FORI=1TOB:X=FNR(10):Y=FNR(10) 8070 POKEGS+X+Y*10,(PEEK(GS+X+Y*10)+1):NEXT 8080 E1=FNR(10):E2=FNR(10):E3=FNR(10):E4=FNR(10) 8100 T=3600:GOSUB9000:GOSUB60000:GOSUB61000 8107 PRINT"THERE ARE";K;"KLINGONS" 8110 D$(0)="8 1 2":D$(1)="7 E 3":D$(2)="6 5 4" 8120 PRINT"YOU HAVE";T;"STARDATES":PRINT"AND";B;"STARBASES" 8128 PRINT"YOU ARE IN SECTOR";E1;E2:PRINT" GOOD LUCK!":PRINT 8132 PRINT"PRESS SPACE":POKEKEY,253 8150 IFPEEK(KEY)=255THEN8150 8152 D(0,2)=1:D(0,6)=-1:D(0,7)=-1:D(0,8)=-1:D(1,5)=1:D(1,6)=1 8170 D(0,3)=1:D(0,4)=1:D(1,8)=-1:D(1,1)=-1:D(1,2)=-1:D(1,4)=1 9000 T1=8:E=3000:S=0:P(0)=100:P(1)=100:P(2)=100:RETURN 9400 IFBS$="RED"THENRETURN 9410 IFS(E3-1-(E3<1),E4)=3ORS(E3,E4-1-(E4<1))=3THENGOTO9500 9430 IFS(E3+1+(E3>=9),E4)=3ORS(E3,E4+1+(E4>=9))=3THENGOTO9500 9460 RETURN 9500 PRINT"sDOCK WITH BASE(Y/N)?"; 9505 FORII=1TO500:NEXT 9510 POKEKEY,239:HT=1:IF(PEEK(KEY)AND8)=0THENHT=89 9520 IFHT=89THENT=T-10:D=1:GOSUB9000 9530 RETURN 10000 PRINT:PRINT"OUT OF TIME!" 10010 PRINT"THE KLINGONS WIN!":END 11000 GOSUB61000:PRINT:PRINT"SHIP EXPLODES":GOTO10010 60000 DATA8,133,80,152,72,138,72,165,80,201,97,48,18,201,122,16 60010 DATA14,170,189,5,2,133,81,189,6,2,133,82,24,144,22,165,82 60020 DATA41,7,9,208,133,82,165,80,160,0,132,14,145,81,230,81 60030 DATA208,2,230,82,104,170,104,168,165,80,40,96,255 60032 DATA207,0,213,0,220,0,228,0,237,0,79,1,92,1,104,1,157,1,212,1 60040 FORI=552TO633:READA:POKEI,A:NEXT 60050 POKE538,40:POKE539,2:RETURN 61000 POKE538,212:POKE539,251:RETURN