E000R LOMEM=768 HIMEM=4096 10 DIM C$(6),D$(15) 20 Q=640:S=704:D$=" * >!<+++<*>" 30 INPUT "TYPE A NUMBER ",R 40 FOR J=1 TO R:C=RND(256):NEXT J 50 B=Q:GOSUB 1100 60 S1=75:N=S1:V=1:L=10:GOSUB 1200 70 B1=2:N=B1:V=10:L=20:GOSUB 1200 80 K1=7:N=K1:V=20:L=40:GOSUB 1200 90 T=15:GOSUB 1300:E0=RND(4096):GOSUB 1400:GOSUB 1000 110 PRINT:INPUT "COMMAND ",C:IF C<0 OR C>5 THEN 110:GOTO 100*C+200 200 INPUT "VECTOR ",X,Y:X0=X0+X:Y0=Y0+Y:E1=E1-ABS (X)-ABS (Y) 210 IF X0<0 OR X0>63 OR Y0<0 OR Y0>63 THEN 250 220 E0=E0+X+64*Y:Q1=Q0:S1=S0:GOSUB 1400:IF Q0=Q1 THEN 255 230 E1=E1-25:T=T-1:GOSUB 1000:GOSUB 1400:IF T>=0 THEN 260 240 C$="TIME":GOTO 980 250 C$="GALAXY":GOTO 980 255 POKE S+S1,0:GOSUB 1050 260 GOSUB 1800:IF B2=0 THEN 290:IF ABS (X6-X2)+ABS (Y6-Y2)#1 THEN 290 270 PRINT "- DOCKED -":GOSUB 1300:B1=B1-1:B2=0 280 POKE Q+Q0,PEEK (Q+Q0)-10:POKE S+X6+8*Y6,0:GOTO 110 290 IF K2#0 THEN GOSUB 550:GOTO 110 300 C$="SHORT":GOSUB 350:GOSUB 2000:GOTO 110 350 PRINT C$;" RANGE SENSOR SCAN":GOSUB 360:RETURN 360 PRINT "FOR QUADRANT ";X1;",";Y1:RETURN 400 C$="LONG":GOSUB 350:N=3:GOSUB 880 410 FOR Y=Y1+1 TO Y1-1 STEP -1:F2=0:IF Y<0 OR Y>7 THEN F2=1:GOSUB 470:GOSUB 480 420 FOR X=X1-1 TO X1+1:F1=0:IF X<0 OR X>7 THEN F1=1 430 IF F1=0 AND F2=0 THEN 440:PRINT C$;:GOTO 460 440 Q9=X+8*Y:GOSUB 1500:POKE Q+Q9,C9+40:PRINT "! ";K2;B2;S2;" "; 460 NEXT X:PRINT "!":GOSUB 480:NEXT Y:GOSUB 470:GOSUB 890:GOTO 110 470 C$="+-----":GOSUB 1600:RETURN 480 C$="! ":GOSUB 1600:RETURN 500 IF K2=0 THEN 690:GOSUB 790:PRINT "ENERGY: ";E1:INPUT "FIRE ",C:IF C<1 THEN 110 520 E1=E1-C:GOSUB 1800:K5=K5-C-(R*9):IF K5>0 THEN 530:GOSUB 1900:GOTO 110 530 GOSUB 550:GOTO 500 550 J5=K5/5:K5=K5-J5:E1=E1-J5/R:PRINT J5/R;" UNITS OF PHASER DAMAGE":GOSUB 1800:RETURN 600 IF K2=0 THEN 690:IF E2#0 THEN 610:PRINT "NO MORE TORPEDOES":GOTO 110 610 E2=E2-1:IF R>RND(15) THEN 640:GOSUB 1900:GOTO 110 640 PRINT "YOU MISSED!":GOSUB 550:GOTO 110 690 PRINT "NOTHING TO SHOOT AT!":GOTO 110 700 INPUT "COMPUTER REQUEST ",C:IF C=0 THEN 800 710 PRINT "STATUS REPORT:":PRINT 720 GOSUB 790:PRINT "KLINGONS =",K1 730 GOSUB 790:PRINT "STARDATES =",T 740 GOSUB 790:PRINT "STARBASES =",B1 750 GOSUB 790:PRINT "TORPEDOES =",E2 760 GOSUB 790:PRINT "ENERGY =",E1 770 GOTO 110 790 PRINT "REMAINING ";:RETURN 800 PRINT " GALACTIC MAP":PRINT " ";:GOSUB 360:C$=" ---":N=8 810 GOSUB 880:FOR Y=7 TO 0 STEP -1:GOSUB 1600 820 FOR X=0 TO 7:Q9=X+8*Y:GOSUB 1500:P=PEEK (Q+Q9) 830 IF P>39 THEN 840:PRINT " ";:GOTO 850 840 PRINT " ";K2;B2;S2; 850 NEXT X:PRINT 860 NEXT Y:GOSUB 1600:GOSUB 890:GOTO 110 880 B8=B2:K8=K2:RETURN 890 B2=B8:K2=K8:RETURN 980 PRINT:PRINT "-- OUT OF ";C$;" --" 990 PRINT "YOU LEFT ";K1;" KLINGONS":END 1000 B=S:GOSUB 1100:Q9=Q0:GOSUB 1500:POKE Q+Q9,C9+40 1010 N=S2:V=1:L=2:GOSUB 1200 1020 N=K2:V=3:L=4:GOSUB 1200:K5=100:Y5=I/8:X5=I-8*Y5 1030 N=B2:V=2:L=3:GOSUB 1200:Y6=I/8:X6=I-8*Y6 1035 C$="GREEN":IF K2#0 THEN C$="RED!":PRINT:PRINT "STARDATE: ";3278-T;", CONDITION: ";C$ 1040 PRINT "QUADRANT ";X1;",";Y1;" - SECTOR ";X2;",";Y2 1050 P=PEEK (S+S0):POKE S+S0,4:IF P=0 THEN RETURN 1060 PRINT:PRINT "*** COLLISION WITH A "; 1070 IF P=1 THEN PRINT "STAR";:IF P=2 THEN PRINT "STARBASE";:IF P=3 THEN PRINT "KLINGON"; 1080 PRINT " ***":IF P=3 THEN K1=K1-1:GOTO 990 1100 FOR K=0 TO 63:POKE B+K,0:NEXT K:RETURN 1200 IF N=0 THEN RETURN :FOR K=1 TO N 1210 I=RND(64):P=PEEK (B+I):IF P+V>=L THEN 1210:POKE B+I,P+V:NEXT K:RETURN 1300 E1=500:E2=3:RETURN 1400 Y0=E0/64:X0=E0-64*Y0:Y1=Y0/8:X1=X0/8:Y2=Y0-8*Y1:X2=X0-8*X1 1410 Q0=X1+8*Y1:S0=X2+8*Y2:R=ABS (X5-X2)+ABS (Y5-Y2):RETURN 1500 C9=PEEK (Q+Q9):IF C9>=40 THEN C9=C9-40 1510 S2=C9-10*(C9/10):K2=C9/20:B2=(C9-S2-20*K2)/10:RETURN 1600 FOR J=1 TO N:PRINT C$;:NEXT J:PRINT C$(1,1):RETURN 1800 IF E1>0 THEN RETURN 1810 C$="ENERGY":GOTO 980 1900 PRINT "*** BOOM ***":K1=K1-1:K2=0:POKE Q+Q0,PEEK (Q+Q0)-20:POKE S+X5+8*Y5,0 1910 IF K1 THEN RETURN :PRINT:PRINT "MISSION ACCOMPLISHED!":END 2000 C$="+---":N=8:GOSUB 1600 2010 FOR Y=7 TO 0 STEP -1:FOR X=0 TO 7 2020 P=3*PEEK (S+X+8*Y)+1:IF X=0 THEN PRINT "!";:IF X#0 THEN PRINT " ";:PRINT D$(P,P+2); 2030 NEXT X:PRINT "!":IF Y=0 THEN 2040:PRINT "+";:TAB 33:PRINT "+" 2040 NEXT Y:GOSUB 1600:RETURN RUN