|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 18688 (0x4900) Types: TextFile Names: »TREK.BAS«
└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games └─ ⟦this⟧ »TREK.BAS«
1 REM *** TREK.BAS *** 10 REM STARTREK GAME 30 N$ = CHR$(10)+CHR$(13) 40 D9=9 :REM NO OF DEVICES 60 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(D9) 70 DATA "WARP ENGINES","S.R. SENSORS","L.R. SENSORS" 71 DATA "PHASER CONTROL","PHOTON TUBES","DAMAGE CONTROL" 72 DATA "SHIELD CONTROL","COMPUTER","HYPERPROBE LAUNCHER" 80 DATA " * ","<E>","<B>",">K<" 90 A1=1.35525E-20 :REM KLINGON ATTACK THRESHOLD 100 DIM D$(D9),Q$(64) 160 PRINT:PRINT 180 PRINT "* * * STAR TREK GAME * * *";N$;N$ 200 PRINT "TYPE YOUR PASS WORD"; 210 INPUT P1$ 220 FOR I=1 TO VAL(RIGHT$(P1$,1)): A=RND(1): NEXT I: REM SET RND GENER 230 DEF FND(D)=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2) 235 PRINT "SCANNING UNIVERSE:";N$;N$;N$; 250 RESTORE 260 FOR I = 1 TO D9 270 D(I) = 0 275 READ D$(I) 280 NEXT I 285 READ ST$,EN$,BA$,KL$ 290 T=INT(RND(1)*20+20)*100:T0=T 300 T9=30:D0=0 310 S9=200:S=0:H8=0 320 E0=4000 325 P0=10 330 P=P0:E=E0 370 Q1=INT(RND(1)*8+1) 380 Q2=INT(RND(1)*8+1) 390 S1=INT(RND(1)*8+1) 400 S2=INT(RND(1)*8+1) 420 C(2,1)=-1:C(3,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1 430 C(1,1)=0:C(3,2)=0:C(5,1)=0:C(7,2)=0:C(9,1)=0 440 C(1,2)=1:C(2,2)=1:C(6,1)=1:C(7,1)=1:C(8,1)=1:C(8,2)=1:C(9,2)=1 480 REM SET UP GALAXY IN G(8,8) AND 481 REM ZERO Z(8,8), WHICH HOLDS GALAXY AS DETECTED BY LR.SCAN 490 K9=0:B9=0 500 FOR I=1 TO 8 510 FOR J=1 TO 8 520 R1=RND(1) 525 K3=0 530 IF R1>2.1684E-20 THEN K3=1 540 IF R1>2.57498E-20 THEN K3=2 550 IF R1>2.6563E-20 THEN K3=3 560 K9=K9+K3 660 R1=RND(1) 665 B3=0 670 IF R1>2.60209E-20 THEN B3 = 1 700 B9=B9+B3 720 S3=INT(RND(1)*8+1) 730 G(I,J)=K3*100+B3*10+S3 740 Z(I,J)=0 750 NEXT J 760 NEXT I 770 K7=K9 776 IF B9>0 GOTO 780 777 G(6,3)=G(6,3)+10 778 B9=1 780 PRINT "STARDATE-";T;N$;N$; 781 PRINT "FRM:STRFLT CMD ";N$;"TO:CMDR ENTERPRISE";N$;N$; 782 PRINT K9;"KLINGONS HAVE INVADED THIS "; 783 PRINT "PART OF THE GALAXY.";N$;"HOSTILITIES HAVE BEEN DECLARED.";N$ 784 PRINT "REPORTS ARE THAT SUFFICIENT WAR MATERIAL EXISTS";N$; 785 PRINT "FOR COMBAT ONLY UNTIL STARDATE ";T+T9; 786 PRINT ". ACT ACCORDINGLY.";N$; 789 A$= "S ARE" 790 IF B9=1 THEN A$= " IS" 792 PRINT N$;B9;"STARBASE";A$;" STANDING BY";N$; 796 PRINT "STARFLEET OUT ";N$;N$; 800 REM *** SETUP SECTOR IN Q$(64) 810 S3=0:K3=0:B3=0 820 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 900 825 IF G(Q1,Q2) = -1 THEN 6000 830 X=G(Q1,Q2)*2.1684E-21 840 K3=INT(X) 850 B3=INT((X-K3)*10) 860 S3=G(Q1,Q2)-INT(G(Q1,Q2)*-5.42101E-21)*10 865 GOSUB 4310 870 IF K3=0 THEN 920 875 A$ = "S " 876 IF K3=1 THEN A$ = " " 880 PRINT "COMBAT AREA -";K3 ;"KLINGON";A$;"WITHIN SHORT RANGE SCAN";N$ 890 IF S<200 THEN PRINT "WARNING!!!! - LOW SHIELD POWER, ";S;"UNITS";N$; 895 GOTO 920 900 PRINT "WARNING - YOU ARE AT GALACTIC COORDINATE "; 902 PRINT Q1+S1/10;",";Q2+S2/10;N$; 904 PRINT "WHICH IS OUTSIDE YOUR OPERATIONS AREA";N$; 906 PRINT "ENTERPRISE DOES NOT CARRY STAR-MAPS FOR THIS AREA"; 908 PRINT N$; 920 FOR I=1 TO 3 930 K(I,3)=0 940 NEXT I 950 FOR I=0 TO 64 960 Q$(I) = " " 970 NEXT I 971 REM *** PUT ENTERPRISE SOMEWHERE 980 Q$(8*S1+S2-9) = EN$ 1010 IF K3<=0 GOTO 1115 1020 FOR I=1 TO K3 1030 GOSUB 5380 1031 REM *** PUT KLINGONS SOMEWHERE 1040 Q$(8*R1+R2-9) = KL$ 1080 K(I,1)=R1: K(I,2)=R2: K(I,3)=S9 1110 NEXT I 1115 IF B3<=0 GOTO 1185 1120 FOR I=1 TO B3 1130 GOSUB 5380 1131 REM *** PUT STARBASE(S) SOMEWHERE 1140 Q$(8*R1+R2-9) = BA$ 1180 NEXT I 1185 IF S3<=0 GOTO 1260 1190 FOR I=1 TO S3 1200 GOSUB 5380 1201 REM *** PUT STARS SOMEWHERE 1210 Q$(8*R1+R2-9) = ST$ 1250 NEXT I 1260 GOSUB 4120 1264 REM *** YOU GET ONE FREE COMMAND WITHOUT BREAKAGE ON ENTERING A QU 1265 GOTO 1274 1270 IF RND(1) > A1 THEN GOSUB 3820 1271 IF RND(1)>2.6563E-20 THEN GOSUB 6100 1272 IF RND(1)>2.1684E-20 THEN GOSUB 6400 1274 GOSUB 8100 1275 PRINT N$;"COMMAND:";:INPUT A$ 1290 IF A$="0" GOTO 1410 1291 IF A$="1" THEN GOSUB 4430:GOTO 1270 1292 IF A$="2" GOTO 2330 1293 IF A$="3" GOTO 2530 1294 IF A$="4" GOTO 2800 1295 IF A$="5" GOTO 3460 1296 IF A$="6" GOTO 3560 1297 IF A$="7" GOTO 4630 1298 IF A$="8" GOTO 5800 1299 IF A$="9" GOTO 5330 1310 PRINT N$;" 0 = SET COURSE";N$; 1320 PRINT " 1 = SHORT RANGE SENSOR SCAN";N$; 1330 PRINT " 2 = LONG RANGE SENSOR SCAN";N$; 1340 PRINT " 3 = FIRE PHASERS";N$; 1350 PRINT " 4 = FIRE PHOTON TORPEDOES";N$; 1360 PRINT " 5 = SHIELD CONTROL";N$; 1370 PRINT " 6 = DAMAGE CONTROL REPORT";N$; 1380 PRINT " 7 = CALL ON LIBRARY COMPUTER";N$; 1385 PRINT " 8 = SEND HYPERPROBE";N$; 1390 PRINT " 9 = BEGIN NEW CONTEST";N$;N$; 1400 GOTO 1275 1401 REM *** COURSE CONTROL CODE BEGINS HERE 1410 PRINT "COURSE (1-9):";:INPUT C1 1430 IF C1=0 THEN 1270 1440 IF C1<1 GOTO 1410 1441 IF C1>9 GOTO 1410 1442 IF C1=9 THEN C1=1 1450 PRINT "WARP FACTOR (0-8):";:INPUT W1 1470 IF W1<=0 GOTO 1410 1471 IF W1<=1.0842E-20 GOTO 1510 1480 IF D(1)>=0 GOTO 1510 1490 PRINT "WARP DRIVE IS DISABLED!":PRINT "IMPULSE ENGINES ACTIVATED." 1495 PRINT "MAXIMUM SPEED = WARP .2" 1500 GOTO 1410 1510 IF K3<=0 THEN 1560 1540 IF S<0 THEN 4000 1550 GOTO 1810 1560 IF E>0 THEN 1810 1570 IF S<1 THEN 3920 1580 PRINT "YOU HAVE";E;"UNITS OF ENERGY" 1590 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE";S; 1591 PRINT "UNITS LEFT" 1600 GOTO 1270 1810 N = INT((W1+-3.38813E-21)*8) 1820 Q$(8*S1+S2-9) = " " 1870 X=S1:Y=S2 1890 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 1900 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 1910 FOR I= 1 TO N:S1=S1+X1:S2=S2+X2 1940 IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 GOTO 2170 1950 IF Q$(S1*8+S2-9) = " " GOTO 2070 2030 S1=INT(S1-X1):S2=INT(S2-X2) 2031 PRINT "WARP ENGINES SHUTDOWN AT SECTOR"; 2035 PRINT S1;",";S2;"DUE TO BAD NAVAGATION" 2040 GOTO 2080 2070 NEXT I 2080 S1=INT(S1):S2=INT(S2) 2090 Q$(8*S1+S2-9) = EN$ 2120 E=E-N+5:T=(INT(10*T+-1.49078E-20))/10:IF W1<1 THEN 2150 2140 T=(INT(10*T+9))/10 2150 IF T>T0+T9 THEN 3970 2160 GOSUB 4120 2165 GOTO 1270 2170 X=Q1*8+X+X1*N:Y=Q2*8+Y+X2*N 2190 Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8):S2=INT(Y-Q2*8) 2230 IF S1<>0 THEN 2260 2240 Q1=Q1-1:S1=8 2260 IF S2<>0 THEN 2290 2270 Q2=Q2-1:S2=8 2290 T=T+1:E=E-N+5 2310 IF T>T0 + T9 THEN 3970 2320 GOTO 810 2321 REM *** LONG RANGE SENSOR SCAN CODE BEGINS HERE 2330 IF D(3)>=0 THEN 2360 2340 PRINT "LONG RANGE SENSORS ARE INOPERABLE" 2350 GOTO 1270 2360 IF D(8) <0 THEN PRINT "COMPUTER UNABLE TO STORE THIS SCAN";N$; 2370 PRINT "Long Range Scan-Quadrant";Q1;",";Q2;N$;N$; 2380 PRINT "+-----+-----+-----+";N$; 2390 FOR I=Q1-1 TO Q1+1 2410 FOR J=Q2-1 TO Q2+1 2420 IF I<1 OR I>8 OR J<1 OR J>8 THEN 2500 2430 N=Z(I,J) 2440 Z(I,J)=G(I,J) 2450 PRINT TAB(6*(J-Q2+1));"!"; 2455 GOSUB 6300 2456 IF D(8)<0 THEN Z(I,J)=N 2460 NEXT J 2470 PRINT TAB(18);"!";N$; 2480 PRINT "+-----+-----+-----+";N$; 2490 NEXT I 2495 GOTO 1270 2500 PRINT TAB(6*(J-Q2+1));"!"; : GOTO 2460 2501 REM *** PHASER CONTROL CODE BEGINS HERE 2530 IF K3<=0 THEN 3670 2540 IF D(4)>=0 THEN 2570 2550 PRINT "PHASERS NOT OPERATIONAL" 2560 GOTO 1270 2570 IF D(8)>=0 THEN 2590 2580 PRINT " COMPUTER FAILURE HAMPERS ACCURACY" 2590 PRINT "PHASERS LOCKED ON TARGET. ENERGY AVAILABLE =";E 2600 PRINT "NUMBER OF UNITS TO FIRE:";:INPUT X 2620 IF X<=0 THEN 1270 2630 IF E-X<0 THEN 2590 2640 E=E-X 2650 GOSUB 3790 2660 IF D(7)>=0 THEN 2680 2670 X=X*RND(1) 2680 PRINT "PHASOR STRIKE REPORT";N$; 2685 FOR I=1 TO 3 2690 IF K(I,3)<=0 THEN 2770 2700 H=INT((X/K3/FND(0))*(2*RND(1))) 2710 K(I,3) = K(I,3) - H 2720 PRINT H;TAB(12);" UNIT HIT IN SECTOR ";K(I,1);",";K(I,2); 2721 PRINT " - TARGET SHIELDS HAVE";K(I,3);"UNITS";N$; 2740 IF K(I,3)>0 THEN 2770 2750 GOSUB 3690 2760 IF K9<=0 THEN 4040 2770 NEXT I 2780 IF E<0 THEN 4000 2790 GOTO 1270 2791 REM *** PHOTON TORPEDO CODE BEGINS HERE 2800 IF D(5)>=0 THEN 2830 2810 PRINT "PHOTON TUBES ARE NOT OPERATIONAL" 2820 GOTO 1270 2830 IF P>0 THEN 2860 2840 PRINT "ALL PHOTON TORPEDOES EXPENDED" 2850 GOTO 1270 2860 PRINT "TORPEDO COURSE (1-9):";:INPUT C1 2880 IF C1=0 THEN 1270 2885 IF C1=9 THEN C1=1 2890 IF C1<1 OR C1>9 GOTO 2860 2900 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 2910 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 2920 X=S1:Y=S2:P=P-1 2950 PRINT "TORPEDO TRACK:" 2960 X=X+X1:Y=Y+X2 2980 IF X<=0 OR X>=9 OR Y<=0 OR Y>=9 GOTO 3420 2990 PRINT " ";X;",";Y 2991 IF INT(X+-6.77626E-21) <> INT(X+2.03288E-20) THEN 2960 2992 IF INT(Y+-6.77626E-21) <> INT(Y+2.03288E-20) THEN 2960 3000 Z1 = INT(X+1.35525E-20): Z2 = INT(Y+1.35525E-20) 3010 A$=" " 3040 GOSUB 5680 3050 IF Z3=0 THEN 3070 3060 GOTO 2960 3070 A$=KL$ 3100 GOSUB 5680 3110 IF Z3=0 THEN 3220 3120 PRINT "*** KLINGON DESTROYED ***" 3130 K3=K3-1:K9=K9-1 3150 IF K9<=0 THEN 4040 3160 FOR I=1 TO 3:IF Z1<>K(I,1) THEN 3190 3180 IF Z2=K(I,2) THEN 3200 3190 NEXT I 3200 K(I,3)=0:GOTO 3360 3220 A$=ST$ 3250 GOSUB 5680 3260 IF Z3=0 THEN 3290 3270 PRINT "YOU CAN'T DESTROY STARS, SILLY" 3280 GOTO 3420 3290 A$=BA$ 3320 GOSUB 5680 3330 IF Z3=0 THEN 2960 3340 PRINT "*** STAR BASE DESTROYED *** .......CONGRATULATIONS" 3350 B3=B3-1 3360 Q$(8*Z1+Z2-9) = " " 3400 G(Q1,Q2)=K3*100+B3*10+S3 3405 IF Z(Q1,Q2)=0 GOTO 3410 3406 Z(Q1,Q2)=G(Q1,Q2) 3410 GOTO 3440 3420 PRINT "TORPEDO MISSED" 3440 IF E<0 THEN 4000 3450 GOTO 1270 3451 REM *** SHIELD CONTROL CODE BEGINS HERE 3460 IF D(7)>=0 THEN 3490 3470 PRINT "SHIELD CONTROL IS NON-OPERATIONAL" 3480 GOTO 1270 3490 PRINT "CURRENT SHIPS ENERGY.....";E;N$; 3491 PRINT "CURRENT SHIELD ENERGY....";S;N$; 3500 PRINT "+ or - ENERGY TO SHIELDS.";:INPUT X 3510 IF X<0 AND S+X<0 THEN 3491 3520 IF X>0 AND E-X<0 THEN 3490 3530 E=E-X:S=S+X 3540 PRINT "SHIP....";E;N$; 3545 PRINT "SHIELD..";S;N$; 3550 GOTO 1270 3551 REM *** DAMAGE CONTROL REPORT CODE BEGINS HERE 3560 IF D(6)>=0 THEN 3590 3570 PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE" 3580 GOTO 1270 3590 PRINT N$;"DEVICE REPAIR INDEX ";N$; 3610 FOR R1=1 TO D9 3620 PRINT D$(R1); 3630 PRINT TAB(21);D(R1);N$; 3640 NEXT R1:PRINT N$; 3660 GOTO 1270 3670 PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT";N$; 3680 GOTO 1270 3690 PRINT "KLINGON AT SECTOR ";K(I,1);",";K(I,2);"DESTROYED ***";N$; 3710 K3=K3-1:K9=K9-1:Z1=K(I,1):Z2=K(I,2) 3760 Q$(8*Z1+Z2-9) = " " 3770 G(Q1,Q2)=K3*100+B3*10+S3 3775 IF Z(Q1,Q2) <1 GOTO 3780 3776 Z(Q1,Q2)=G(Q1,Q2) 3780 RETURN 3790 IF D0=0 THEN RETURN 3800 PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE";N$; 3810 RETURN 3819 REM *** ATTACK SUBROUTINE 3820 IF K3<=0 THEN 3910 3830 A$ = "S ARE" 3831 IF K3=1 THEN A$ = " IS" 3834 PRINT K3;"KLINGON";A$;" ATTACKING" 3835 GOSUB 3790 3836 IF D0=1 THEN RETURN 3840 FOR I=1 TO 3: IF K(I,3)<=0 THEN 3900 3850 H=INT(K(I,3)/FND(0)*RND(1)*4) 3860 S=S-H 3870 PRINT H;TAB(12);"UNIT HIT FROM SECTOR ";K(I,1);",";K(I,2); 3875 A$ = " - SHIELDS HOLDING AT" 3880 IF S<0 THEN A$ = " - SHIELDS FAILED AT " 3885 PRINT A$;S;"UNITS" 3890 IF S<0 THEN 4000 3900 NEXT I 3905 GOSUB 8000 3910 RETURN 3920 PRINT "THE ENTERPRISE IS DEAD IN SPACE."; 3925 PRINT " IF YOU SURVIVE ALL IMPENDING" 3930 PRINT "ATTACKS YOU WILL BE DEMOTED TO THE RANK OF PRIVATE" 3940 IF K9=0 GOTO 4030 3970 PRINT:PRINT "IT IS STARDATE";T 3990 GOTO 4020 3991 REM *** NO ENERGY LEFT 4000 PRINT N$;"THE ENTERPRISE HAS BEEN DESTROYED. ";N$; 4010 PRINT "THE FEDERATION WILL BE CONQUERED";N$; 4020 PRINT "THERE ARE STILL ";K9;" KLINGON BATTLE CRUISERS" 4030 PRINT N$;N$;N$;"YOU GET ANOTHER CHANCE THOUGH....":GOTO 4106 4040 PRINT "THE LAST KLINGON STARSHIP IN THE GALAXY HAS BEEN DESTROYED" 4075 E5=((K7/(T-T0))*100) 4080 PRINT "YOUR EFFICIENCY RATING =";INT(E5) 4100 PRINT "YOUR ACTUAL TIME OF MISSION ="; 4101 PRINT (INT((T-T0)*10))/10;"STARDATES" 4105 PRINT N$;N$; 4106 PRINT "DO YOU WISH TO PLAY AGAIN";:INPUT R$ 4107 IF LEFT$(R$,1)="Y" THEN 235 4110 GOTO 9999 4111 REM *** DOCKING CHECK SUBROUTINE 4120 FOR I=S1-1 TO S1+1 4130 FOR J=S2-1 TO S2+1 4140 IF I<1 OR I>8 OR J<1 OR J>8 GOTO 4200 4150 A$=BA$:Z1=I:Z2=J 4180 GOSUB 5680 4190 IF Z3=1 THEN 4240 4200 NEXT J 4210 NEXT I 4220 D0=0:RETURN 4240 D0=1:C$="DOCKED":E=E0:P=P0 4280 PRINT "SHIELDS DROPPED FOR DOCKING";N$; 4281 GOSUB 3790 4282 REM EMBER TO GET REPAIRS 4283 FOR I=1 TO D9 4284 IF D(I) >= 0 GOTO 4288 4286 D(I)=0 4288 NEXT I 4290 S=0:RETURN 4310 IF K3>0 THEN C$="RED":GOTO 4421 4320 IF E<E0 *-5.42101E-21 THEN C$="YELLOW":GOTO 4421 4330 C$="GREEN" 4421 PRINT N$;"Stardate";TAB(20);T;N$; 4422 PRINT "Enterprise entering Quadrant";Q1;",";Q2; 4424 PRINT " Sector";S1;",";S2;N$; 4428 RETURN 4430 IF D(2)>=0 THEN 4435 4431 PRINT N$;"*** SHORT RANGE SENSORS ARE OUT ***";N$;:RETURN 4435 PRINT " Short Range Scan - Quadrant";Q1;",";Q2;N$; 4436 PRINT " +-1-+-2-+-3-+-4-+-5-+-6-+-7-+-8-+";N$; 4440 FOR J=0 TO 7 4450 GOSUB 7000 4460 NEXT J 4470 RETURN 4620 REM *** LIBRARY COMPUTER CODE BEGINS HERE 4630 IF D(8)>=0 THEN 4660 4640 PRINT "COMPUTER DISABLED":GOTO 1270 4660 PRINT "COMPUTER PROGRAM:";:INPUT A 4670 H8=1 4675 P9=PEEK(3): REM IO ALLOCATION 4680 IF A=0 GOTO 4740 4681 IF A=1 GOTO 4830 4682 IF A=2 GOTO 4880 4683 IF A=3 GOTO 4970 4684 IF A=4 GOTO 4735 4690 PRINT "FUNCTIONS AVAILABLE FROM COMPUTER";N$; 4700 PRINT " 0 = CUMULATIVE GALACTIC RECORD";N$; 4710 PRINT " 1 = STATUS REPORT";N$; 4720 PRINT " 2 = PHOTON TORPEDO DATA";N$; 4725 PRINT " 3 = COURSE COMPUTER";N$; 4726 PRINT " 4 = PRINT GALACTIC RECORD";N$; 4730 GOTO 4660 4731 REM *** CUMULATIVE GALACTIC RECORD CODE BEGINS HERE 4735 POKE 3,128 :REM SET OP DEVICE = LPR 4740 PRINT "COMPUTER RECORD OF GALAXY FOR ALL LONG RANGE SENSOR SCANS" 4750 PRINT N$;N$; 4760 PRINT " 1 2 3 4 5 6 7 8";N$; 4770 PRINT " +-----+-----+-----+-----+-----+-----+-----+-----+";N$; 4780 FOR I=1 TO 8 4790 PRINT I;"!"; 4792 FOR J=1 TO 8 4793 PRINT TAB(6*J-2); 4794 GOSUB 6300 4795 PRINT TAB(6*J+3);"!"; 4796 NEXT J 4798 PRINT N$; 4800 PRINT " +-----+-----+-----+-----+-----+-----+-----+-----+";N$; 4810 NEXT I 4815 POKE 3,P9 : REM RESET IO ALLOC. 4820 GOTO 1270 4821 REM *** STATUS REPORT CODE BEGINS HERE 4830 PRINT "---STATUS REPORT---";N$;N$; 4835 IF K3=0 THEN C$= "GREEN" 4840 PRINT "NUMBER OF KLINGONS LEFT...";K9;N$; 4850 V5=(INT(((T0+T9)-T)*10))/10 4851 PRINT "NUMBER OF STARDATES LEFT..";V5;N$; 4860 PRINT "NUMBER OF STARBASES LEFT..";B9;N$; 4861 PRINT "ALERT CONDITION........... ";C$;N$; 4862 PRINT "QUADRANT..................";Q1;",";Q2;N$; 4863 PRINT "SECTOR....................";S1;",";S2;N$; 4864 PRINT "SHIPS ENERGY..............";E;N$; 4865 PRINT "SHIELD ENERGY.............";S;N$; 4866 PRINT "PHOTON TORPEDOES..........";P;N$; 4870 GOTO 1270 4880 PRINT "AIMING DATA FOR ENEMY:";N$; 4885 IF K3 = 0 THEN 3670 4890 H8=0:PRINT N$; 4899 REM *** PHOTON TORPEDO DATA CODE BEGINS HERE 4900 FOR I=1 TO 3 4910 IF K(I,3)<=0 THEN 5260 4911 REM *** SETS UP WHAT EXISTS IN GALAXY 4920 C1=S1:A=S2:W1=K(I,1):X=K(I,2) 4960 GOTO 5010 4970 PRINT "YOU ARE IN QUADRANT (";Q1;",";Q2;")";N$; 4990 PRINT "SHIP LOCATION SECTOR";:C1=S1:A=S2 4992 PRINT S1;",";S2;N$; 4994 PRINT "ENTER TARGET LOCATION";:INPUT W1,X 5000 IF W1<10 AND X<10 THEN 5010 5005 C1=S1+10*Q1: A=S2+10*Q2 5010 X=X-A:A=C1-W1 5030 IF X<0 THEN 5130 5031 IF A<0 THEN 5190 5050 IF X>0 THEN 5070 5051 IF A=0 THEN 5150 5070 C1=1 5080 IF ABS(A) <= ABS(X) THEN 5110 5085 V5=C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)) 5090 PRINT "DIRECTION =";V5 5100 GOTO 5240 5110 PRINT "DIRECTION =";C1+(ABS(A)/ABS(X)) 5120 GOTO 5240 5130 IF A>0 THEN 5170 5140 IF X=0 THEN 5190 5150 IF X=0 GOTO 4990 5160 C1=5:GOTO 5080 5170 C1=3:GOTO 5200 5190 C1=7 5200 IF ABS(A)>=ABS(X) THEN 5230 5210 PRINT "DIRECTION =";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) 5220 GOTO 5240 5230 PRINT "DIRECTION =";C1+(ABS(X)/ABS(A)) 5240 PRINT "DISTANCE =";SQR(X*X+A*A)/10 5250 IF H8=1 THEN 5320 5260 NEXT I 5270 H8=0 5320 GOTO 1270 5321 REM *** END OF LIBRARY COMPUTER CODE 5330 REM *** NEW BEGIN CODE STARTS HERE 5340 PRINT "TO ABORT TASK, TYPE YOUR PASS WORD"; 5350 INPUT A$:IF A$=P1$ GOTO 235 5360 PRINT "PASS WORD INVALID: CONTINUE TASK";N$;:GOTO 1270 5370 REM *** FIND A FREE SPACE SUBROUTINE 5380 R1=INT(RND(1)*8+1):R2=INT(RND(1)*8+1):A$=" ":Z1=R1:Z2=R2 5430 GOSUB 5680 5440 IF Z3=0 THEN 5380 5450 RETURN 5680 REM ***STRING COMPARISON IN QUADRANT ARRAY*** 5700 Z3=0 5710 IF Q$(Z1*8+Z2-9)=A$ THEN Z3=1 5720 RETURN 5800 REM *** SEND PROBE CODE STARTS HERE 5801 IF D(9) >=0 THEN 5805 5802 PRINT D$(9);" DISABLED";N$; 5803 GOTO 1270 5805 IF Q4=0 GOTO 5810 5806 PRINT "HYPERPROBE ALREADY LAUNCHED";N$; 5807 GOTO 1270 5810 PRINT "SEND PROBE TO QUADRANT"; 5820 INPUT Q4,Q5 5830 IF Q4<1 OR Q4>8 OR Q5<1 OR Q5>8 THEN 5810 5840 GOTO 1270 5999 REM *** NOVA ENTRY SUBROUTINE 6000 PRINT "YOU HAVE ENTERED A SUPERNOVA IN QUADRANT "; 6010 PRINT Q1;",";Q2;N$; 6020 GOTO 4000 6100 REM *** NOVA GENERATION SUBROUTINE 6110 GOSUB 5380 6120 IF Z1=Q1 AND Z2=Q2 THEN 6110 6125 IF G(Z1,Z2)=-1 THEN 6110 6130 X=G(Z1,Z2)/100 6140 X1=INT(X) 6150 PRINT N$;"FRM:STRFLT CMD";N$;"TO:ALL SHIPS";N$; 6155 PRINT "SPACEWATCH HAS DETECTED SUPERNOVA IN QUADRANT "; 6160 PRINT Z1;",";Z2;N$;"DO NOT ENTER AT SUBLIGHT SPEED";N$; 6170 IF X1<=0 GOTO 6200 6180 A$="":IF X1=1 GOTO 6190 6185 A$="S" 6190 PRINT X1;"KLINGON";A$;" DESTROYED";N$; 6195 K9=K9-X1 6196 IF K9<=0 THEN 4040 6200 IF 10*(X-X1)<1 THEN 6230 6210 PRINT "1 STARBASE DESTROYED";N$; 6220 S9=S9-1 6230 G(Z1,Z2)=-1:Z(Z1,Z2)=-1 6240 PRINT "STRFLT OUT";N$; 6250 RETURN 6299 REM *** SUB USED IN LR.SCAN ETC 6300 IF Z(I,J)=-1 THEN 6330 6310 PRINT Z(I,J); 6320 RETURN 6330 PRINT " ***"; 6340 RETURN 6399 REM *** PROBE RETURN SUBROUTINE 6400 IF Q4=0 THEN RETURN 6410 PRINT N$;"HYPERPROBE RETURNED FROM QUADRANT "; 6420 PRINT Q4;",";Q5;N$;"STATUS";N$; 6430 PRINT "+-----+";N$; 6440 I=Q4:J=Q5:Z(I,J)=G(I,J) 6450 PRINT "!"; 6455 GOSUB 6300 6460 PRINT TAB(6);"!";N$; 6470 PRINT "+-----+";N$; 6480 Q4=0 6490 RETURN 7000 REM *** SHORT RANGE SENSOR DISPLAY SUBROUTINE 7010 PRINT J+1; 7020 FOR I = 0 TO 7 7030 PRINT "!";Q$(8*J+I); 7040 NEXT I 7050 PRINT "!";N$; 7060 PRINT " +---+---+---+---+---+---+---+---+";N$; 7080 RETURN 7999 REM *** ATTACK DAMAGE SUBROUTINE 8000 IF K3*RND(1)<1.35525E-20 THEN RETURN 8010 R1=INT(RND(1)*D9+1) 8020 D(R1)=D(R1)-INT(RND(1)*5+2) 8030 PRINT N$;"SIR, THE ";D$(R1); 8050 PRINT " AREA HAS BEEN DAMAGED";N$; 8060 RETURN 8100 REM *** FIX ANY DAMAGED DEVICE 8110 FOR I=1 TO D9:R1=I 8120 IF D(I)>=0 THEN 8180 8130 A$ = " BEING REPAIRED" 8140 D(I)=D(I)+1 8150 IF D(I) >=0 THEN A$ = " FIXED" 8160 PRINT N$;D$(I); 8170 PRINT A$;N$; 8180 NEXT I 8190 RETURN 9999 RUN "MENU «eof»