DataMuseum.dk

Presents historical artifacts from the history of:

Christian Rovsing CR7, CR8 & CR16 CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Christian Rovsing CR7, CR8 & CR16 CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦fcf226611⟧ TextFile

    Length: 18432 (0x4800)
    Types: TextFile
    Names: »STAR.BAS«

Derivation

└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games
    └─ ⟦this⟧ »STAR.BAS« 

TextFile

1 REM *** STAR.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=.5 :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>.8 THEN K3=1
540 IF R1>.95 THEN K3=2
550 IF R1>.98 THEN K3=3
560 K9=K9+K3
660 R1=RND(1)
665 B3=0
670 IF R1>.96 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)*.01
840 K3=INT(X)
850 B3=INT((X-K3)*10)
860 S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*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)>.98 THEN GOSUB 6100
1272 IF RND(1)>.8 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<=.2 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+.0625)*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) = "   " GOTO2070
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.1))/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+.25) <> INT(X+.75) THEN 2960
2992 IF INT(Y+.25) <> INT(Y+.75) THEN 2960
3000 Z1 = INT(X+.5): Z2 = INT(Y+.5)
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 REMEMBER 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 *.1 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=1TO3
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 THEN5070
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:GOTO5200
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)<.5 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 END
«eof»