70: 80*TV255,1 90 ENVELOPE1,1,0,0,0,0,0,0,126,0,0,-2,126,126 100 ENVELOPE2,1,1,0,0,255,0,0,126,0,0,-2,126,126 110 ENVELOPE3,1,8,1,0,0,0,0,16,0,0,-2,126,126 120 MODE7: VDU23;8202;0;0;0; 130 VDU&A,&81,&9D,&93,&A,&D 135 VDU&81,&9D,&93,&7E,&2F,&2F,&FF,&6A,&2F,&FF,&2F,&35,&FF,&2F,&6F,&35,&FF,&2F,&6F,&34,&20,&6A,&2F,&FF,&2F,&35,&FF,&2F,&6F,&34,&FF,&2F,&2F,&35,&FF,&20,&78,&37,&20,&20 140 VDU&81,&9D,&93,&FF,&70,&70,&70,&20,&20,&FF,&20,&20,&FF,&2C,&6E,&35,&FF,&2C,&6E,&21,&20,&20,&20,&FF,&20,&20,&FF,&2C,&6E,&21,&FF,&2C,&2C,&20,&FF,&70,&3F,&20,&20,&20 145 VDU&81,&9D,&93,&20,&20,&20,&FF,&20,&20,&FF,&20,&20,&FF,&20,&6A,&35,&FF,&20,&6A,&35,&20,&20,&20,&FF,&20,&20,&FF,&20,&6A,&35,&FF,&7C,&7C,&35,&FF,&60,&7D,&20,&20,&20 150 VDU&81,&9D,&93,&FF,&7C,&7C,&3F,&28,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&2C,&24,&FF,&20,&2A,&75,&20,&20,&81,&9D,&93 160 PRINT TAB(11,6) CHR$&86+ CHR$&9C;"T h e G a m e"; CHR$&81+ CHR$&9D 170 PRINT CHR$&91+ STRING$(39, CHR$(&60)) 180R1= RND(- TIME): 190 DIMG(8,8),Z(8,8),C(9,2),K(3,3),N(3),D(9),Q$(9,9),D$(9) 200 DATA warp engines,s.r.sensors,l.r.sensors,phaser control,photon tubes,damage control,shield control,central computer,hyperprobe launcher 210C(1,1)=-1:C(2,1)=-1:C(7,2)=-1 220C(8,1)=-1:C(8,2)=-1:C(6,2)=-1 230C(9,1)=-1:C(1,2)=0:C(3,1)=0 240C(5,2)=0:C(7,1)=0:C(9,2)=0 250C(2,2)=1:C(3,2)=1:C(4,1)=1 260C(4,2)=1:C(5,1)=1:C(6,1)=1 270CM$="NAVSRSLRSPHATORSHECOMMAPDAMHYPRES" 280CP$="MAPSTAPTDCCMKLIACTCOMDOCMOV" 290 FORI%=1 TO9: READD$(I%): NEXT 300 ON ERROR: IF ERR=17 PRINT' CHR$&83"Resignation accepted.": GOTO2370: ELSE IF ERR<>18 REPORT: PRINT" in line "; ERL: GOTO880: ELSE880 320T=( INT(( RND(1)+3)*1E4))/10:T0=T 330T9=25+ INT( RND(10)):T8=T9+T:Q4=0 340S9=200:E0=4000:P0=10:P=P0:E=E0:S=0 350 FORI%=1 TO9:D(I%)=4: NEXT 360 FORI%=1 TO8: FORJ%=1 TO8 370R1= RND(1):K3=0 380 IFR1>.8 THENK3=1 390 IFR1>.95 THENK3=2 400 IFR1>.98 THENK3=3 410K9=K9+K3:R1= RND(1):B3=0: IFR1>.96 THENB3=1 420B9=B9+B3:S3= RND(8):G(I%,J%)=K3*100+B3*10+S3 430Z(I%,J%)=0: NEXT: NEXT 440 IFB9>0 THEN460 450G(6,3)=G(6,3)+10:B9=1 460 PRINT TAB(0,9);: VDU&84,&9D,&D,&A,&84,&9D,&87: PRINT"Your orders are as follows:" 470 VDU&84,&9D,&87,&A,&D,&84,&9D,&86: PRINT" Seek & destroy the ";K9;" Klingons" 480 VDU&84,&9D,&86: PRINT" which have invaded Federation"' CHR$&84; CHR$&9D; CHR$&86;" territory." 490A$="is ":C$=" ": IFB9>1 THENA$="are ":C$="s " 500 VDU&84,&9D,&86,&A,&D,&84,&9D,&86: PRINT" There ";A$;B9;" starbase";C$;"at your" 510 VDU&84,&9D,&86: PRINT" disposal and you have until ";T8 520 VDU&84,&9D,&86: PRINT" to complete in.": VDU&84,&9D 530 PRINT TAB(0,22);: VDU&81,&9D,&87: PRINT"Press SPACE BAR when ready to assume" 540 PRINT TAB(0,23);: VDU&81,&9D,&87: PRINT"command of Enterprise." 550Q1= RND(8):Q2= RND(8):S1= RND(8):S2= RND(8) 560 REPEAT UNTIL GET=&20: CLS: VDU23;4618;0;0;0; 570 PRINT" Your mission begins with your ship"'" located in the galactic quadrant;";Q2;",";Q1: GOTO590 580 PRINT" Now entering quadrant ";Q2;",";Q1;" sector ";S2;",";S1 590 IFQ1<1 ORQ1>8 ORQ2<1 ORQ2>8 THEN660 600 IFG(Q1,Q2)=-1 THEN3680 610X=G(Q1,Q2)*.01:Z(Q1,Q2)=G(Q1,Q2) 620K3= INT(X):B3= INT((X-K3)*10) 630S3=G(Q1,Q2)- INT(G(Q1,Q2)*.1)*10 640 IFK3=0 THEN710 650 IFS>200 THEN710 ELSE PRINT CHR$7 CHR$131"WARNING!!! SHIELD POWER ONLY ";S;" UNITS": GOTO710 660 VDU129: PRINT"WARNING-You are @ galactic co-ordinate" 670 VDU129: PRINTQ2+S2/10;",";Q1+S1/10;" which is outside your" 680 VDU129: PRINT" operations area." 690 VDU129: PRINT"Enterprise does not carry charts for " CHR$129"this region." 700 PRINT: GOTO880 710 FORI%=1 TO8: FORJ%=1 TO8:Q$(I%,J%)=" ": NEXT: NEXT:Q$(S1,S2)= CHR$134+"-E-" 720 IFK3<=0 THEN750 730 FORI%=1 TOK3: PROCrnd:Q$(R1,R2)= CHR$(129)+"+K+" 740K(I%,1)=R1:K(I%,2)=R2:K(I%,3)=S9: NEXT 750 IFB3<1 THEN770 760 PROCrnd:Q$(R1,R2)= CHR$(134)+">!<" 770 IFS3<=0 THEN800 780 FORI%=1 TOS3: PROCrnd:Q$(R1,R2)= CHR$131+"* ": NEXT 790 PROCDOK 800 GOTO2600 810 PROCATAK 820 IF RND(1)>0.98 PROCnova 830 IF RND(1)>.5 PROCproberet 840 IF RND(1)>.99 PROCmystery 850 IF RND(1)>.996 PROCdilithium 860 IF RND(1)>.99 PROCneutron 870 PROCREP 880L%=0: VDU&86: INPUT"Command:"A$: CLS: FORI%=1 TO11 890 IF LEFT$(A$,3)= MID$(CM$,3*I%-2,3) THENL%=I% 900 NEXT: PROCANAL: IFL%>0 THEN1020 910 PRINT'" NAV = Set course (0-8)" 920 PRINT" SRS = Short Range Scan" 930 PRINT" LRS = Long Range Scan" 940 PRINT" PHA = To fire PHAsors" 950 PRINT" TOR = To fire TORpedoes" 960 PRINT" SHE = Shield control" 970 PRINT" COM = To access central computer" 980 PRINT" DAM = For damage report" 990 PRINT" HYP = To send hyperprobe" 1000 PRINT" RES = To resign" 1010 GOTO880 1020 ONL% GOTO1030,2600,1390,1500,1680,1980,2690,2880,2090,3630,2370 1030 IF LEN(A$)<=4 THEN1090 1040 IFL29 ORC1<1 THEN880 1130 IFW1>8 ORW1<.1 THEN880 1140 IFW1<=.2 THEN1160 1150 IFD(1)<0 VDU7: PRINT CHR$&88"Warp drive is disabled."' CHR$&83"Impulse power max speed:=0.2": GOTO1090 1160N= INT((W1+.0625)*8) 1170 IFE-N>0 THEN1190 1180 VDU7,&88: PRINT"Insufficient energy.": IFE<=0 ANDS<=0 THEN2330 ELSE810 1190Q$(S1,S2)=" ":X=S1:Y=S2: PROCXY 1200I%=0 1210S1=S1+X1:S2=S2+X2 1220 IFS1<1 ORS1>8 ORS2<1 ORS2>8 THEN1320 1230 IFQ$(S1,S2)=" " THEN1260 1240S1= INT(S1-X1):S2= INT(S2-X2) 1250 PRINT" Warp engines shut down at sector ";S2;",";S1'" due to bad navigation.": GOTO1270 1260I%=I%+1: IFI%T0+T9 THEN2340 1310 PROCDOK: PRINT: GOTO2600 1320X=Q1*8+X+X1*N:Y=Q2*8+Y+X2*N 1330Q1= INT(X/8):Q2= INT(Y/8):S1= INT(X-Q1*8):S2= INT(Y-Q2*8) 1340 IFS1<>0 THEN1360 1350Q1=Q1-1:S1=8 1360 IFS2<>0 THEN1380 1370Q2=Q2-1:S2=8 1380T=T+1:E=E-N+5: IFT>T0+T9 THEN2340 ELSE580 1390 IFD(3)<0 VDU7,&81,&88,&AA,&89: PRINT'"Long range sensors inoperable": GOTO810 1400 PRINT TAB(1,5)"Long Range Scan,Quad ";Q2;",";Q1 1410SR$= CHR$129+ STRING$(19,"_") 1420 PRINTSR$: FORI%=Q1-1 TOQ1+1:N(1)=0:N(2)=0:N(3)=0 1430 FORJ%=Q2-1 TOQ2+1 1440 IFI%>0 ANDI%<9 ANDJ%>0 ANDJ%<9N(J%-Q2+2)=G(I%,J%):Z(I%,J%)=G(I%,J%) 1450 NEXT: FORL%=1 TO3: PRINT CHR$129": "; 1460 IFN(L%)=0 PRINT" _ ";: GOTO1490 1470 IFN(L%)=-1 PRINT"***";: GOTO1490 1480 PRINT RIGHT$( STR$(N(L%)+1000),3); 1490 NEXT: PRINT" :": PRINTSR$: NEXT: GOTO810 1500 IFK3>0 THEN1530 1510 PRINT" Short range sensors report no Klingons in this quadrant,Captain.": GOTO810 1520 IFD(4)<0 VDU7,129,136,&AA,137: PRINT"Phasors are damaged *": GOTO810 1530 IF LEN(A$)<=4 THEN1550 1540X= VAL( MID$(A$,L1+1, LEN(A$)-1)): GOTO1570 1550 PRINT" Phasers locked on target"'" Energy available=";E;" units"' 1560 INPUT" Enter number of units to fire:"X 1570 IFX<0 THEN880 ELSE IFE-X<0 THEN1550 1580E=E-X 1590 SOUND0,3,4,5 1600 PRINT CHR$131"Phaser strike report:" 1610 FORI%=1 TO3: IFK(I%,3)<=0 THEN1670 1620H= INT(X/K3/( FND(0)/2)):K(I%,3)=K(I%,3)-H 1630 PRINT,H;" unit hit in sector ";K(I%,2);",";K(I%,1) 1640 PRINT TAB(6)"Target shields have ";K(I%,3);" units" 1650 IFK(I%,3)>0 THEN1670 1660 GOSUB2150: IFK9<=0 THEN2380 1670 NEXT: IFE<1 ANDS<1 THEN2330 ELSE810 1680 IFP=0 VDU7,&88: PRINT"All torpedoes expended.": GOTO810 1690 IFD(5)<0 VDU7,129,136,&AA,137: PRINT"Photon tubes are damaged *": GOTO810 1700 IF LEN(A$)<5 THEN1730 1710C1= VAL( MID$(A$,L1+1, LEN(A$)-L1)) 1720C1=C1+1: IFC1<1 ORC1>9 THEN1730 ELSE1740 1730 INPUT" Torpedo course:"C1:C1=C1+1: IFC1>9 THEN880 1740 PROCXY 1750X=S1:Y=S2:P=P-1: PRINT" Torpedo track:" 1760 SOUND1,2,0,20 1770X=X+X1:Y=Y+X2: FORI%=1 TO2000: NEXT 1780 IFX<1 ORX>8 ORY<1 ORY>8 THEN1970 1790 PRINT TAB(20, VPOS-1); INT(Y+.5);","; INT(X+.5): IF INT(X+.25)<> INT(X+.75) THEN1770 1800 IF INT(Y+.25)<> INT(Y+.75) THEN1770 1810Z1= INT(X+.5):Z2= INT(Y+.5):A$=" ": PROCcheck 1820 IFZ3<>0 THEN1770 1830A$= CHR$(129)+"+K+": PROCcheck: IFZ3=0 THEN1880 1840 PRINT CHR$131"* KLINGON DESTROYED *": SOUND0,1,6,7:K3=K3-1:K9=K9-1: IFK9<=0 THEN2380 1850 FORI%=1 TO3: IFZ1<>K(I%,1) THEN1870 1860 IFZ2=K(I%,2) THENK(I%,3)=0:Q$(Z1,Z2)=" " 1870 NEXT: GOTO1950 1880A$= CHR$131+"* ": PROCcheck: IFZ3=0 THEN1900 1890 PRINT CHR$131"Star at sector ";Y;",";X;" absorbed torpedo": IF RND(1)>.8 THEN4020 ELSE810 1900A$= CHR$134+">!<": PROCcheck 1910 IFZ3=0 THEN1770 1920 VDU131,136: PRINT" *** STARBASE DESTROYED ***": SOUND0,1,6,7 1930 PRINT CHR$129"If you survive,you will appear before"' CHR$129"a court marshall!" 1940B3=B3-1:B9=B9-1:Q$(Z1,Z2)=" " 1950G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2) 1960 IFE<1 THEN2350 ELSE810 1970 VDU7,&88: PRINT"Torpedo missed": IFE<1 THEN2350 ELSE810 1980 IFD(7)<0 VDU7,129,136,&AA,137: PRINT"Shield control is not operational": GOTO810 1990 IF LEN(A$)<5 THEN2010 2000X= VAL( MID$(A$,L1+1, LEN(A$)-L1)): GOTO2030 2010 PRINT" Energy available = ";E+S;" units." 2020 INPUT" Enter # of units to shields:"X 2030 IFX>E+S THEN PRINT CHR$129"This is not the Federation treasury!": GOTO2010 2040 PRINT CHR$131"Deflector control room reports:" 2050 IFX<=0 ORX=S THEN2080 2060E=E+S-X:S=X 2070 PRINT" < Shields now at ";S;" units >": GOTO810 2080 PRINT" < Shields unchanged @ ";S;" units >": GOTO810 2090 IFD(6)>=0 THEN2110 2100 VDU7,129,136,&AA,137: PRINT"Damage report is not available": GOTO880 2110 PRINT' CHR$&82"Device Repair index" 2120 FORI%=1 TO9: PRINT CHR$&82+D$(I%); 2130 PRINT TAB(23);D(I%) 2140 NEXT: PRINT: GOTO810 2150 PRINT CHR$131"* Klingon at ";K(I%,2);",";K(I%,1);" destroyed *": SOUND0,1,6,7 2160K3=K3-1:K9=K9-1:Z1=K(I%,1):Z2=K(I%,2):Q$(Z1,Z2)=" " 2170G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2): RETURN 2180 DEF PROCATAK 2190 IFK3=0 THEN2320 2200A$="s are": IFK3=1A$=" is" 2210 PRINTK3;" Klingon";A$;" attacking." 2220 IFD%=1 PRINT" Starbase shields protect Enterprise.": GOTO2320 2230I%=1: REPEAT 2240 IFK(I%,3)<=0 THEN2310 2250H= INT(K(I%,3)/ FND(0)* RND(8)) 2260S=S-H 2270 PRINTH;" unit hit from sector ";K(I%,2);",";K(I%,1) 2280 IFS<0 PRINT CHR$136"*** SHIELDS FAILED ***": GOTO2350 2290 PRINT" * shields holding @ ";S;" units." 2300 PROCDAM: PROCMOV 2310I%=I%+1: UNTILI%=4 2320 ENDPROC 2330 VDU7,&81: PRINT"Enterprise is dead in space!": GOTO2360 2340 PRINT' CHR$&86"It is stardate ";T' CHR$&86"You have run out of time, Lieutenant.": SOUND1,1,127,5: GOTO2370 2350 PRINT' CHR$129"ENTERPRISE HAS BEEN DESTROYED."' CHR$129"The Federation will be conquered." 2360 FORI%=127 TO0 STEP-1: SOUND1,-15,I%,1: NEXT 2370 PRINT' CHR$&86"There were" CHR$&88;K9; CHR$&89"Klingons left at the"' CHR$&86"end of your mission.":K9=0:B9=0: GOTO2400 2380 PRINT CHR$134"The last Klingon starship has been des-" CHR$134"troyed. Well done Captain." 2390 FORI%=1 TO3: FORJ%=0 TO255 STEP12: SOUND1,-15,J%,2: SOUND2,-15,J%+85,2: NEXT: NEXT 2400 PRINT' CHR$131"The Federation is in need of a new"' CHR$131"starship commander for a similar"' CHR$131"mission.If there is a volunteer, let"' CHR$131"him now step forward and enter 'AYE'"' 2410 VDU&86: INPUT">"A$: IFA$="AYE" CLS: GOTO320 ELSE END 2420 DEF PROCDOK 2430D%=0: FORI%=S1-1 TOS1+1: FORJ%=S2-1 TOS2+1 2440 IFI%<1 ORI%>8 ORJ%<1 ORJ%>8 THEN2490 2450A$= CHR$134+">!<":Z1=I%:Z2=J%: PROCcheck 2460 IFZ3=0 THEN2490 2470D%=1:E=E0:P=P0:S=0 2480 VDU7,130: PRINT"* DOCKED * Shields lowered." 2490 NEXTJ%,I%: IFD%=0 THEN2590 2500N%=0:J%=0: FORI%=1 TO9: IFD(I%)<4N%=N%+D(I%)-4:J%=J%+1 2510 NEXT: IFJ%=0 THEN2590 ELSETl= ABS((N%/J%)/4): IFTl>5Tl=5 2520 VDU130: PRINT"Estimated time for full overhaul:-"' CHR$130;Tl;" stardates.Do you require a full"' CHR$130"overhaul"; 2530 INPUTA$: IF LEFT$(A$,1)="Y"N%=4:T=T+Tl: ELSE PRINT CHR$&86"OK": ENDPROC 2550 FORI%=1 TO9: IFD(I%)>=N% GOTO2570 2560D(I%)=4 2570 NEXT 2580 PRINT CHR$&86"All systems functional and ready." 2590 ENDPROC 2600 IFD(2)<0 VDU7,&81,&88,&AA,&89: PRINT"Short range sensors are out *": GOTO880 2610C$= CHR$&82+"Green": IFE0 THENC$= CHR$&81+ CHR$&88+"*RED*" 2630 IFD%=1C$= CHR$&82+"Docked - shields OFF" 2640 PRINT'" Stardate ";T 2650 PRINT" Condition - ";C$ 2660SR$=+ CHR$&83+" -1--2--3--4--5--6--7--8-" 2670 PRINTSR$: FORJ%=1 TO8 2680 GOSUB4070: NEXT: PRINTSR$: GOTO880 2690F%=0: IFD(8)>=0 THEN2710 2700 VDU7,&81,&88,&AA,&89: PRINT"Computer disabled *"': GOTO810 2710 IF LEN(A$)<=4 THEN2740 2720A$= MID$(A$,L1+1, LEN(A$)-L1) 2730 GOTO2750 2740 VDU&85: INPUT"Program:"A$ 2750L%=0: FORI%=1 TO9 2760 IF LEFT$(A$,3)= MID$(CP$,3*I%-2,3) THENL%=I% 2770 NEXT: PROCANAL: IFL%>0 THEN2870 2780 PRINT" Programs available:" 2790 PRINT" MAP := Cumulative galactic record" 2800 PRINT" STA := Status report" 2810 PRINT" PTD := Photon torpedo data" 2820 PRINT" CCM := Course calculator" 2830 PRINT" KLI := Enemy positions & strengths" 2840 PRINT" ACT := Activates auto torpedo launcher ( use with PTD )" 2850 PRINT" COM := Return to COMMAND mode" 2860 PRINT: GOTO2740 2870 ONL% GOTO2890,2970,3080,3140,4030,3510,880,2780,2780 2880 CLS: FORI%=1 TO2: VDU132,157,135,141: PRINT" COMPUTER RECORD OF GALAXY": NEXT 2890 VDU132,157,10,13,132,157,135: PRINT" _1___2___3___4___5___6___7___8_" 2900 FORI%=1 TO8: VDU132,157,135: PRINT;I%;: FORJ%=1 TO8: PRINT TAB(4*J%-1); 2910 IFZ(I%,J%)=-1 PRINT"***";: GOTO2960 2920 IFZ(I%,J%)=0 THEN2950 2930N%=Z(I%,J%)+1000 2940 PRINT; RIGHT$( STR$(N%),3);: GOTO2960 2950 PRINT" - "; 2960 NEXT: PRINT: VDU132,157,135: PRINT: NEXT: PRINT TAB(10) CHR$131" You are at ";Q2+(S2/10);",";Q1+(S1/10): GOTO810 2970 VDU12,10: FORI%=1 TO2: PRINT TAB(7) CHR$&83+ CHR$&8D"___STATUS REPORT___": NEXT 2980B$="s": IFB9=1B$="" 2990 VDU10,131: PRINT" It is stardate" CHR$135;T; CHR$131":The Federation"' CHR$131"is currently maintaining"; CHR$135;B9; CHR$131;"starbase";B$;' CHR$131"in this part of the galaxy."' 3000 PRINT CHR$131" You have"; CHR$135;( INT(T8-T)*10)/10; CHR$131"stardates left in which"' CHR$131"to eliminate the"; CHR$135;K9; CHR$131"remaining Klingons;"' 3010 PRINT CHR$&83"Alert condition.....";C$ 3020 PRINT CHR$&83"Quadrant............"; CHR$&87;Q2;",";Q1 3030 PRINT CHR$&83"Sector.............."; CHR$&87;S2;",";S1 3040 PRINT CHR$&83"Ships energy........"; CHR$&87;E 3050 PRINT CHR$&83"Shield energy......."; CHR$&87;S 3060 PRINT CHR$&83"Photon torpedoes...."; CHR$&87;P 3070 PRINT: GOTO2740 3080 IFK3=0 THEN1510 3090 PRINT CHR$&83"Aiming data for enemy:" 3100 FORI%=1 TO3: IFK(I%,3)<=0 THEN3130 3110C1=S1:A=S2:W1=K(I%,1):X=K(I%,2) 3120 PRINT CHR$&83"(";I%;")";: GOSUB3190 3130 NEXT:F%=1: GOTO3430 3140 VDU&85: INPUT"This sector or new quadrant?"A$: IF LEFT$(A$,1)="S"B$="sector" ELSEB$="quadrant": IFA$<>"Q" THEN880 3150 VDU&85: PRINT"Enter ";B$;" co-ordinates:";: INPUTX,W1: IFX<1 ORX>8 ORW1<1 ORW1>8 THEN880 3160C1=S1:A=S2: IFB$="quadrant"C1=Q1:A=Q2 3170 PRINT TAB(3) CHR$&83;: GOSUB3190: IFB$="quadrant" PRINT TAB(6, VPOS-1)"Distance:= "; INT( SQR(X*X+A*A)); STRING$(20," ") 3180 GOTO3430 3190X=X-A:A=C1-W1 3200 IFX<0 THEN3300 3210 IFA<0 THEN3350 3220 IFX>0 THEN3240 3230 IFA=0 THEN3320 3240C1=0 3250 IF ABS(X)<= ABS(A) THEN3280 3260DR=C1+((( ABS(X)- ABS(A))+ ABS(X))/ ABS(X)) 3270 GOTO3400 3280DR=C1+( ABS(X)/ ABS(A)) 3290 GOTO3400 3300 IFA>0 THEN3340 3310 IFX=0 THEN3350 3320 IFX=0 THEN RETURN 3330C1=4: GOTO3250 3340C1=6: GOTO3360 3350C1=2 3360 IF ABS(X)>= ABS(A) THEN3390 3370DR=C1+((( ABS(A)- ABS(X))+ ABS(A))/ ABS(A)) 3380 GOTO3400 3390DR=C1+( ABS(A)/ ABS(X)) 3400 PRINT" Bearing := ";DR 3410 PRINT CHR$&83; TAB(6)"Distance:= "; SQR(X*X+A*A)/10 3420 RETURN 3430 IFL1>= LEN(A$) OR LEN(A$)<=4 THEN880 3440A$= MID$(A$,L1+1, LEN(A$)-L1) 3450 GOTO2750 3460 DEF PROCrnd 3470R1= RND(8):R2= RND(8) 3480A$=" ":Z1=R1:Z2=R2: PROCcheck 3490 IFZ3=0 THEN3470 3500 ENDPROC 3510 IFF%<1 PRINT" No aiming data": GOTO2740 3520 IFP=0 VDU7,&81,&88,&AA,&89: PRINT"All torpedoes expended *": GOTO810 3530 IFD(5)<0 VDU7,&81,&88,&AA,&89: PRINT"Photon tubes damaged *": GOTO810 3540C1=DR+1: GOTO1740 3550 DEF PROCANAL 3560L1=0:L2=0: FORI%= LEN(A$) TO1 STEP-1 3570 IF MID$(A$,I%,1)=" " THENL1=I% 3580 IF MID$(A$,I%,1)="/" THENL2=I% 3590 NEXT: ENDPROC 3600 DEF PROCcheck 3610Z3=0: IFQ$(Z1,Z2)=A$ THENZ3=1 3620 ENDPROC 3630 IFD(9)<0 VDU7,&81,&88,&AA,&89: PRINT"Hyperprobe is damaged *": GOTO810 3640 IFQ4<>0 PRINT CHR$&83"Probe already launched.": GOTO810 3650 VDU&86: INPUT"Send probe to quadrant:"Q5,Q4 3660 IFQ4<1 ORQ4>8 ORQ5<1 ORQ5>8 PRINT CHR$&81"Sir, the probe is now on an"' CHR$&81" irretrievable trajectory.":Q4=-1: ELSE PRINT CHR$&83"Probe launched to ";Q5;",";Q4;"; sir." 3670 GOTO810 3680 PRINT' CHR$&85"You have entered a"; CHR$&88"SUPERNOVAE"; CHR$&89"in ";Q2;",";Q1' 3690 GOTO2350 3700 DEF PROCnova 3710 PROCrnd 3720 IFZ1<>Q1 THEN3740 3730 IFZ2=Q2 THEN3710 3740 IFG(Z1,Z2)=-1 THEN3710 3750X=G(Z1,Z2)/100 3760X1= INT(X) 3770 PRINT CHR$&83"Lft. O'Hura reports message from SFC:" 3780 PRINT" Space watch has detected supernova in quadrant ";Z2;",";Z1;"." 3790 PRINT" Do NOT enter at sublight speed." 3800 IFX1<=0 GOTO3850 3810A$="": IFX1=1 GOTO3830 3820A$="s" 3830 PRINTX1;" Klingon";A$;" destroyed." 3840K9=K9-X1: IFK9<=0 THEN2380 3850 IF10*(X-X1)<1 THEN3880 3860 PRINT1;" Starbase destroyed." 3870B9=B9-1 3880G(Z1,Z2)=-1:Z(Z1,Z2)=-1 3890 PRINT TAB(30)"SFC out." 3900 ENDPROC 3910 DEF PROCproberet: IFQ4<1 THEN ENDPROC 3920N%=G(Q4,Q5): IFN%<0 PRINT CHR$&83"Lost contact with hyperprobe, sir.":Q4=-1: ENDPROC 3930 PRINT" Hyperprobe returned from ";Q5;",";Q4 3940 PRINT CHR$&83" STATUS..." 3950 PRINT CHR$&81" _______" 3960Z(Q4,Q5)=G(Q4,Q5) 3970 PRINT CHR$&81" : "; 3980Z(Q4,Q5)=G(Q4,Q5) 3990 PRINT RIGHT$( STR$(N%+1000),3);" :" 4000 PRINT CHR$&81" _______" 4010Q4=0: ENDPROC 4020 VDU7,&88: PRINT"You have caused a star to go nova!!": GOTO2350 4030 IFK3=0 THEN1510 4040 FORI%=1 TOK3 4050 PRINT CHR$&83"Klingon at sector ";K(I%,2);",";K(I%,1);" has ";K(I%,3);" units." 4060 NEXT: GOTO880 4070 PRINT CHR$131;J%;: FORI%=1 TO8: PRINTQ$(J%,I%);: NEXT: PRINT CHR$128; 4080 ONJ% GOTO4100,4110,4120,4130,4140,4150,4160,4090 4090 PRINT': RETURN 4100 PRINT TAB(29); CHR$135+"QUAD-";Q2;",";Q1': RETURN 4110 PRINT TAB(29); CHR$135"SECT-";S2;",";S1': RETURN 4120 PRINT TAB(29); CHR$135"ENRG-";E': RETURN 4130 PRINT TAB(29); CHR$135"SHLD-";S': RETURN 4140 PRINT TAB(29); CHR$135"TORP-";P': RETURN 4150 PRINT TAB(29); CHR$135"KLNG-";K9': RETURN 4160 PRINT TAB(29); CHR$135"TIME-"; INT(T8-T)': RETURN 4170 DEF PROCDAM: IFH<100 THEN4210 4180R1= INT( RND(9)) 4190D(R1)=D(R1)- INT( RND(5)+2) 4200 VDU131: PRINT"Sir, the ";D$(R1);" area is damaged" 4210 ENDPROC 4220 DEF PROCREP 4230 FORI%=1 TO9 4240 IFD(I%)>=0 THEN4290 4250A$=" being repaired." 4260D(I%)=D(I%)+1 4270 IFD(I%)>=0A$=" now operational." 4280 VDU131: PRINT;D$(I%);A$ 4290 NEXT: ENDPROC 4300 DEF PROCMOV 4310Z1=K(I%,1):Z2=K(I%,2) 4320 IFS1-Z1>0Z1=Z1+1 4330 IFS2-Z2>0Z2=Z2+1 4340 IFS1-Z1<0Z1=Z1-1 4350 IFS2-Z2<0Z2=Z2-1 4360A$=" ": PROCcheck: IFZ3=0 THEN4390 4370Q$(K(I%,1),K(I%,2))=" " 4380K(I%,1)=Z1:K(I%,2)=Z2:Q$(Z1,Z2)= CHR$129+"+K+" 4390 ENDPROC 4400 DEF FND(D)= SQR((K(I%,1)-S1)^2+(K(I%,2)-S2)^2) 4410 DEF PROCmystery 4420E9= RND(1): IFE9<.2 ORE9>.6 THEN4420 4430E= INT(E*E9+1) 4440 VDU7,&83: PRINT"Spock to captain:" 4450 PRINT" Mystery power drain has reduced"'" ships power to ";E;" units." 4460 ENDPROC 4470 DEF PROCdilithium 4480 VDU7,&83: PRINT"Scottie to captain:" 4490 PRINT" Dilithium crystals have been stolen by an intruder. No warp power." 4500D(1)=-1E2: GOTO4550 4510 DEF PROCneutron 4520 VDU7,&83: PRINT"Spock to captain:" 4530 PRINT" Collision with neutron mine has disabled shields & shield control." 4540D(7)=-1E2:S=0 4550 PRINT" Return to starbase for repairs.": ENDPROC 4560 DEF PROCXY 4570X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1- INT(C1)) 4580X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1- INT(C1)) 4590 ENDPROC