!*! Updated on 09-Jun-93 at 9:50 AM by Jim Randazzo; edit time: 0:00:24 ! Mods: jhb - Digidata Computer Systems, Inc., Oakland, CA 3/17/88 ! change object displays: ship <E>, base >B<, klingon +K+ ! change LongRange scan display ! only turn cursor on when at Command: prompt ! add short range scanner to guages ! enhance (?) program intro ! Challenge: set up a common system area to retain galaxy chart, et al; ! first user on system becomes starship, subsequent users are klingons; ! everyone against everyone ! If you like these enhancements: send $2; otherwise, make more enhancements ! and put on AMUS Network ! Would like to have: allow fractional course entry (i.e. decimal point x.x) ! when entering photon torpedo course; 'trillium' (?) logic which at ! random attempts to build a web around Enterprise ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! USAMUS.BAS the never ending final frontier. ! Fly the United Star Ship AMUS on a galactic adventure fighting ! Klingons in somewhat real-time action. ! The ongoing revision of TREK. ! Written for AMUS users to enjoy. ! Release Version 1.0 ! ! James A. Jarboe IV ! 1401 19th Street ! Huntsville, Texas 77340 ! GR/AM ! ! Derived from a 1978 version of TREK by DEMARCO-SHATZ ! Started 1979 - JAJ ! Upgraded 1979 - 1987 JAJ ! Most recent version 10-15-87 by JAJ ! Phaser routine taken from JEDI.BAS by Marc McCauly 12/30/85 ! ! Plays best at baud 19200, with a terminal that has graphics ! characters. ! Also plays better with INKEY.SBR loaded in memory (system or user) ! and no one else using the system. ! Level one is real easy, level 5 is challenging, level 9 us unwinnable. ! ! Also get: ! USAMUS.CMD ! USAMUS.HLP ! INKEY.SBR (INKEY.M68 by James A. Jarboe on AMUS system.) ! ! Locate USAMUS.CMD on DSK0:[2,2] ! Locate USAMUS.RUN on DSK0:[7,6] ! Locate USAMUS.HLP on DSK0:[7,1] ! Locate INKEY .SBR on DSK0:[7,6] ! ! If you like this program send $500.00. I've got car payments ! ! If you don't like this program send $500.00 anyways. ! I still have car payments. ! If you don't have $500.00 to send then just enjoy flying ! the U.S.S. AMUS and send a comment or two. ! GR/AM ! PROGRAM PRGNAM,87.10A(15) ON ERROR GOTO ABORT ! NOEXPAND RANDOMIZE MAP1 KLINGON,F,6 ! number of klingons MAP1 A$,S,2 MAP1 B$,S,1 MAP1 KKIILLEEDD,F,6 ! number killed in Phaser routine MAP1 CD,F MAP1 KM,F ! Kilometers distance Phaser routine MAP1 BR,F ! Bearing Phaser routine MAP1 EV,F ! Elevation Phaser routine MAP1 DAMAGER,F ! Damage to enemy Phaser routine MAP1 FQ,F MAP1 FX,F ! phaser row MAP1 FY,F ! phaser column MAP1 FZ,F MAP1 X,F MAP1 Y,F MAP1 A9,F ! phaser action determinator MAP1 FL$,S,1 MAP1 DM$,S,1 MAP1 LRS,S,3 MAP1 RECORD MAP2 CAPTAIN,S,15 MAP2 LAST'SCORE,F MAP2 LAST'LEVEL,B,1 MAP2 LAST'REC,B,1 MAP2 REC'FIL,X,9 MAP1 C$,S,6 ! combat status condition MAP1 SHORTRANGESCREEN ! main view screen MAP2 ROW(8) MAP3 COL(8),S,1 MAP4 SECTOR,S,3 MAP1 DEVICE(8),S,10 ! devices DEVICE(1)="1 IMPULSE" : DEVICE(2)="2 WARP " DEVICE(3)="3 SENSORS" : DEVICE(4)="4 PHASERS" DEVICE(5)="5 PHOTONS" : DEVICE(6)="6 SHIELDS" DEVICE(7)="7 LR SCAN ": DEVICE(8)="8 COMPUTER" MAP1 DAMAGE(8),F,6 ! damage status of devices MAP1 HLP,S,80 MAP1 FAM,S,24,": #ZZ : #ZZ : #ZZ : " MAP1 FRM,S,50," #ZZ #ZZ #ZZ #ZZ #ZZ #ZZ #ZZ #ZZ" MAP1 VAR1,B,1,1 MAP1 VARA,S,1 MAP1 FILL'1 MAP2 COMMAND,F MAP2 ACOURSE,F MAP2 LAG,S,77 MAP1 PHOTON'POWER,F,6 ! power draw for photon usage MAP1 PHASER'POWER,F,6 ! power draw for phaser usage MAP1 ACTION,F,6 ! speed of action !!!! CALL OPEN'BEGIN ? TAB(24,11);:INPUT "Do You need INSTRUCTIONS on Ship Operations? ",A$ IF UCS(A$[1,1])="Y" THEN CALL HELP'US ENTRY: ? TAB(-1,0); ? TAB(3,10);:INPUT "Please Enter Your Last Name ",CAPTAIN CAPTAIN=UCS(CAPTAIN) IF CAPTAIN="" THEN GOTO GIVE'CAP CALL LEVEL START: ? TAB(-1,0); DIM GALAXY(8,8),C(10,2),K(3,3),N(3),Z(8,8) BEGIN: T0=INT(RND(0)*20+20)*100 ! set up start up values STARTIME=T0 : T9=30 : D0=0 E0=4000 : ENERGY=4000 : P0=10 : PHOTON=10 S9=200 : SHIELD=0 : H8=0 Q1=INT(RND(0)*8+1):Q2=INT(RND(0)*8+1) ! starting quadrant S1=INT(RND(0)*8+1):S2=INT(RND(0)*8+1) ! starting sector C(1,1)=1:C(1,2)=-1 : C(2,1)=1:C(2,2)=0 C(3,1)=1:C(3,2)=1 : C(4,1)=0:C(4,2)=-1 C(5,1)=0:C(5,2)=0 : C(6,1)=0:C(6,2)=1 C(7,1)=-1:C(7,2)=-1: C(8,1)=-1:C(8,2)=0 C(9,1)=-1:C(9,2)=1 : C(10,1)=1:C(10,2)=-1 FOR I=1 TO 8 ! clear damage status DAMAGE(I)=0 NEXT I MAKE'GALAXY: BASES=0:KLINGON=0 ! clear FOR I=1 TO 8 ! Randomly set up klingons, FOR J=1 TO 8 ! Starbases and stars R1=RND(0) ! for each quadrant IF R1>.98 LET NUMKLING=3 ELSE IF R1>.95 LET NUMKLING=2 ELSE IF R1>.8 LET NUMKLING=1 ELSE NUMKLING=0 KLINGON=KLINGON+NUMKLING IF RND(0)>.96 LET NUMBASE=1:BASES=BASES+1 ELSE NUMBASE=0 NUMSTAR=INT(RND(0)*8+1) GALAXY(I,J)=NUMKLING*100+NUMBASE*10+NUMSTAR Z(I,J)=0 NEXT J NEXT I K7=KLINGON IF BASES <= 0 OR KLINGON <= 0 GOTO MAKE'GALAXY CALL MAIN'DISPLAY ? TAB(15,25);"CAPTAIN ";CAPTAIN;"," ? TAB(16,25);"You must destroy";KLINGON;"KLINGONS" ? TAB(17,25);"in";T9;"Stardates with";BASES;"StarBases"; ? TAB(18,25);" READY? ";:INPUT "",ANS$ CALL CLR'CMD NUMKLING=0:NUMBASE=0:NUMSTAR=0 RESET: CALL RANDOM'MOVE ! setup location for all MAIN: ? TAB(1,1); CALL MAIN'INFO CALL BOT'SCREEN COMMAND'IT: CALL CLR'POINT ? TAB(13,3); "COMMAND: "; CALL XIN CALL CLR'CMD CALL PRINT'COMPAS COMMAND=VAR1:WARP=0 IF COMMAND < 1 OR COMMAND > 8 GOTO COMMAND'IT IF DAMAGE(COMMAND)=>0 THEN ? TAB(COMMAND+3,3);DEVICE(COMMAND); ON COMMAND GOTO COURSE,COURSE,LR'SCAN,PHASERS,PHOTONS,SHIELDS,COMPUTER'RECORDS,DAMAGE'GO ! ! IMPULSE & WARP DRIVE CONTROL CENTER ! COURSE: CALL CLR'CMD COURSE1: ? TAB(13,3);"COURSE (1-9):"; VAR1=0 CALL XIN CALL COMPAS ACOURSE=VAR1 IF ACOURSE=0 THEN ? TAB(13,3);SPACE$(15);:GOTO COMMAND'IT IF ACOURSE>9 THEN GOTO COURSE CALL CLR'CMD IF COMMAND = 1 THEN ? TAB(13,4);"SPEED (0-8)";: GOTO GO'COURSE ? TAB(13,3);"FACTOR (0-8):"; GO'COURSE: VAR1=0 CALL XIN WARP = VAR1 CALL CLR'CMD IF WARP<1 OR WARP>8 THEN GOTO COMMAND'IT IF COMMAND = 1 THEN W$[1;1]=".":W$[2;2]=WARP:WARP=W$[1,2] IF DAMAGE(2) >= 0 OR WARP <= .2 GOTO CH'KLIN ? TAB(COMMAND+3,15);"DAMAGE";TAB(15,2);CHR$(7); ? TAB(15,25);"CAPTAIN ";CAPTAIN;"," ? TAB(16,25);"Warp Drives are Damaged. MAXIMUM" ? TAB(17,25);"SPEED is obtainable only by using" ? TAB(18,25);"IMPULSE ENGINES at a speed of 2." CALL PRINT'COMPAS GOTO COURSE1 CH'KLIN: IF NUMKLING <= 0 GOTO CHECK'GO CALL FIRE'BACK IF NUMKLING <= 0 GOTO CHECK'GO IF SHIELD<0 GOTO DESTROYED GOTO DO'DAMAGE CHECK'GO: IF ENERGY>0 GOTO DO'DAMAGE IF SHIELD<0 GOTO DEAD ? TAB(15,25);"CAPTAIN ";CAPTAIN;"," ? TAB(16,25);"You have";ENERGY;"Units of Energy." ? TAB(17,25);"May I suggest you trade some Energy" ? TAB(18,25);"From your shiels which have" ? TAB(19,25);SHIELD;" units if Energy." GOTO COMMAND'IT DO'DAMAGE: FOR I=1 TO 8:IF DAMAGE(I)<0 THEN DAMAGE(I)=DAMAGE(I)+1:NEXT I IF RND(0)>.2 GOTO PAS'DAM R1=INT(RND(0)*8+1) IF R1 <1 THEN GOTO PAS'DAM IF R1 >8 THEN GOTO PAS'DAM IF RND(0)>=.5 GOTO DO'IMPROVE DAMAGE(R1)=DAMAGE(R1)-(RND(0)*5+1) FOR I = 1 TO 4 IF DAMAGE(R1)<0 ? TAB((R1)+3,15);"DAMAGE";CHR$(7); NEXT I GOTO PAS'DAM DO'IMPROVE: DAMAGE(R1)=DAMAGE(R1)+(RND(0)*5+1) FOR I = 1 TO 4 IF DAMAGE(R1)< 0 ? TAB((R1)+3,15);"DAMAGE";CHR$(7); NEXT I PAS'DAM: N=INT(WARP*8) SECTOR(S1,S2)=" " X=S1:Y=S2 IF ACOURSE=0 THEN ACOURSE=1 C2=INT(ACOURSE) X1=C(C2,1)+(C(C2+1,1)-C(C2,1))*(ACOURSE-C2) X2=C(C2,2)+(C(C2+1,2)-C(C2,2))*(ACOURSE-C2) FOR I=1 TO N S1=S1+X1 S2=S2+X2 IF VAR1=0 THEN VAR1=.4 IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN I=N:NEXT I:GOTO NEW'SCR IF SECTOR(S1,S2)=" " GOTO MOR'LOOK ? TAB(15,25);"CAPTAIN ";CAPTAIN;"," ? TAB(16,25);"WARP Drives have shut down at" ? TAB(17,25);"Sector ";CHR$(48+S1);",";CHR$(48+S2);" due to improper" ? TAB(18,25);"navigation. Please retry." S1=S1-X1 S2=S2-X2 I=N MOR'LOOK: NEXT I S1=INT(S1+.5):S2=INT(S2+.5) SECTOR(S1,S2)="<E>" ENERGY=ENERGY-N+5 NEW'LOOK: IF WARP>=1 THEN STARTIME=STARTIME+1 IF STARTIME>T0+T9 GOTO TIM'UP ? TAB(X+3,26);ROW(X) ? TAB(S1+3,26);ROW(S1) CALL MAIN'INFO IF VAR1=0 THEN GOTO NEW'SCR GOTO COMMAND'IT NEW'SCR: X=Q1*8+X+X1*N Y=Q2*8+Y+X2*N Q1=INT(X/8) Q2=INT(Y/8) S1=INT(X-Q1*8+.5) S2=INT(Y-Q2*8+.5) IF S1=0 THEN Q1=Q1-1:S1=8 IF S2=0 THEN Q2=Q2-1:S2=8 NEWNE: STARTIME=STARTIME+1 ENERGY=ENERGY-N+5 IF STARTIME>T0+T9 GOTO TIM'UP GOTO RESET ! ! SHORT RANGE SCAN ROUTINE ! LR'SCAN: IF DAMAGE(3)>=0 GOTO GO'SCAN ? TAB(6,15);"DAMAGE" GOTO COMMAND'IT GO'SCAN: NUM=5 ? TAB(4,26);SPACE$(8);"S.R.SENSOR SCAN"; CALL QUAD ? TAB(5,26);SPACE$(7);"__KBS___KBS___KBS__";SPACE$(7); FOR I=Q1-1 TO Q1+1 N(1)=0:N(2)=0:N(3)=0 FOR J=Q2-1 TO Q2+1 IF I<1 OR I>8 OR J<1 OR J>8 GOTO MORE'SCAN N(J-Q2+2)=GALAXY(I,J) IF DAMAGE(7)<0 GOTO MORE'SCAN Z(I,J)=GALAXY(I,J) MORE'SCAN: NEXT J NUM=NUM+1 ? TAB(NUM,33); ? USING FAM,N(1),N(2),N(3) NUM=NUM+1 ? TAB(NUM,26);SPACE$(7);"-------------------";SPACE$(7); NEXT I VAR1=0 CALL XIN CALL BOT'SCREEN GOTO COMMAND'IT ! ! PHASER ROUTINE ! PHASERS: IF NUMKLING <= 0 GOTO NO'KLINGS IF DAMAGE(4)<0 ? TAB(7,15);"DAMAGE":GOTO COMMAND'IT IF DAMAGE(8)<0 ? TAB(15,2);:?" COMPUTER FAILURE HAMPERS ACCURACY" PRINT TAB(-1,0) PRINT CALL CHECK'DOCK IF ACTION<6 THEN A9=0 IF ACTION=6 THEN A9=1 IF ACTION=7 THEN A9=2 IF ACTION=8 THEN A9=3 IF ACTION=9 THEN A9=4 GRID: B$="" KKIILLEEDD=0 PRINT TAB(-1,0);TAB(-1,36);TAB(-1,29);TAB(-1,11); PRINT TAB(1,11);"RANGE: KM ELEVATION: DEG BEARING: DEG" PRINT TAB(2,11);"ENERGY: DAMAGE: SHIELDS:" PRINT TAB(8);"-90 -75 -60 -45 -30 -15 0 +15 +30 +45 +60 +75 +90" PRINT TAB(5);"+90 ";TAB(-1,23);tab(-1,38); FOR I=1 TO 11 FOR A=1 TO 4 ? TAB(-1,46); NEXT A ? TAB(-1,42); NEXT I FOR I= 1 TO 4 ? TAB(-1,46); NEXT I ? TAB(-1,39); ? TAB(-1,24);" +90" PRINT TAB(9);TAB(-1,23);TAB(-1,47);SPACE(59);TAB(-1,47):PRINT TAB(9);TAB(-1,47);SPACE(59);TAB(-1,47);TAB(-1,24) PRINT TAB(5);"+60 ";TAB(-1,23);tab(-1,44);SPACE(59);tab(-1,43);TAB(-1,24);" +60" PRINT TAB(9);TAB(-1,23);TAB(-1,47);SPACE(59);TAB(-1,47):PRINT TAB(9);TAB(-1,47);SPACE(59);TAB(-1,47);TAB(-1,24) PRINT TAB(5);"+30 ";TAB(-1,23);tab(-1,44);SPACE(59);tab(-1,43);TAB(-1,24);" +30" PRINT TAB(9);TAB(-1,23);TAB(-1,47);SPACE(59);TAB(-1,47):PRINT TAB(9);TAB(-1,47);SPACE(59);TAB(-1,47);TAB(-1,24) PRINT TAB(6);"0 ";TAB(-1,23);TAB(-1,48);SPACE(59);TAB(-1,48);TAB(-1,24);" 0" PRINT TAB(9);TAB(-1,23);TAB(-1,47);SPACE(59);TAB(-1,47):PRINT TAB(9);TAB(-1,47);SPACE(59);TAB(-1,47);TAB(-1,24) PRINT TAB(5);"-30 ";TAB(-1,23);tab(-1,44);SPACE(59);tab(-1,43);TAB(-1,24);" -30" PRINT TAB(9);TAB(-1,23);TAB(-1,47);SPACE(59);TAB(-1,47):PRINT TAB(9);TAB(-1,47);SPACE(59);TAB(-1,47);TAB(-1,24) PRINT TAB(5);"-60 ";TAB(-1,23);tab(-1,44);SPACE(59);tab(-1,43);TAB(-1,24);" -60" PRINT TAB(9);TAB(-1,23);TAB(-1,47);SPACE(59);TAB(-1,47):PRINT TAB(9);TAB(-1,47);SPACE(59);TAB(-1,47);TAB(-1,24) PRINT TAB(5);"-90 ";TAB(-1,23);tab(-1,40); FOR I=1 TO 11 FOR A=1 TO 4 ? TAB(-1,46); NEXT A ? TAB(-1,45); NEXT I FOR I= 1 TO 4 ? TAB(-1,46); NEXT I ? TAB(-1,41); ? TAB(-1,24);" -90" PRINT TAB(8);"-90 -75 -60 -45 -30 -15 0 +15 +30 +45 +60 +75 +90";TAB(-1,12) ? tab(-1,37); ! ! *** INPUT CONTROL SCAN ROUTINE *** ! CALL ROVING CD=200+INT(200+RND(1)):FL$=ROVING ? TAB(2,19);ENERGY USING "####" ? TAB(2,61);INT(SHIELD) USING "####" SCAN'ROUTINE: IF ENERGY<50 GOTO ALLGOOD IF FL$="0" THEN GOTO FIRE'WEAPON SCAN2: XCALL INKEY,B$ IF B$>="0" AND B$<="9" THEN FL$=B$ ELSE IF B$<>"" THEN DM$=B$ IF B$=5 THEN CALL MAIN'DISPLAY:GOTO MAIN CALL FIGHTER'POSITION ? TAB(7,20);"+";TAB(19,20);"+";TAB(10,30);"+";TAB(16,30);"+";TAB(13,40);"+"; ? TAB(10,50);"+";TAB(16,50);"+";TAB(7,60);"+";TAB(19,60);"+"; GOTO SCAN'ROUTINE ! ! *** FIRE PHASER ROUTINE *** ! FIRE'WEAPON: FOR I=8 TO 1 STEP -1 ? TAB(13+I,40-I);TAB(-1,23);TAB(-1,64); ? TAB(13+I,40+I);TAB(-1,64);TAB(-1,24); IF I>6 THEN GOTO JNXI ? TAB(15+I,38-I);" "; ? TAB(15+I,42+I);" "; JNXI: NEXT I I=0 IF FLAG=1 THEN GOTO FIRE2 FIRE1: I=I+1 IF I>3 THEN GOTO FIRE2 IF K(I,3) =< 0 GOTO FIRE1 H=(K(I,3)/SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2))*(2*RND(0)) SHIELD=SHIELD-H ? TAB(2,61);INT(SHIELD) USING "####" ? TAB(2,38);H; IF SHIELD=<100 THEN ? TAB(2,51);TAB(-1,21);"SHIELDS:";TAB(-1,22) IF SHIELD<0 THEN GOTO DESTROYED FIRE2: ENERGY=ENERGY-PHASER'POWER ? TAB(2,19);INT(ENERGY) USING "####" IF ENERGY<100 THEN ? TAB(2,10);TAB(-1,21);"ENERGY";TAB(-1,22) IF ENERGY<50 THEN GOTO ALLGOOD CALL ROVING PRINT TAB(15,38);" ";TAB(15,42);" ";TAB(14,39);" ";TAB(14,41);" "; IF FX<>44 OR FY<>70 THEN GOTO NJED1 IF KM>5000 THEN GOTO SCAN2 PHASE'KILL: DAMAGE=0 FOR I= 1 TO 5 ? TAB(-1,36); ? TAB(24,70);TAB(-1,37); NEXT I FOR I=1 TO 5:NEXT I ? TAB(24,70);TAB(-1,37); FOR B=1 TO 3 FOR I=1 TO 500:NEXT I NEXT B KKIILLEEDD = KKIILLEEDD+1 CALL ROVING ZROW=FX-31:ZCOL=FY-31 ? TAB(ZROW-1,ZCOL);" ";TAB(-1,33); ? TAB(ZROW-1,ZCOL);TAB(-1,32);;"<|>";TAB(-1,33); ? TAB(ZROW,ZCOL);" ";TAB(-1,33); ? TAB(ZROW,ZCOL);TAB(-1,32);" ";TAB(-1,33); ? TAB(ZROW+1,ZCOL);">|<";TAB(-1,33); ? TAB(ZROW+1,ZCOL);TAB(-1,32);">|<";TAB(-1,33); ? TAB(ZROW+1,ZCOL);TAB(-1,32);">|<";TAB(-1,33); FOR I=1 TO 50:PRINT CHR$(7);:NEXT I ? TAB(ZROW,ZCOL);"***" FOR I=1 TO 50:NEXT I ? TAB(ZROW-1,ZCOL);" " ? TAB(ZROW,ZCOL);"***" ? TAB(ZROW+1,ZCOL);" " FOR I=1 TO 50:NEXT I ? TAB(ZROW,ZCOL);" " FQ=0 I=0 PHASE1: I=I+1 IF I>3 THEN GOTO PHASE2 IF K(I,3) =<0 GOTO PHASE1 CALL A'KLIN PHASE2: IF KLINGON <= 0 GOTO WON IF ENERGY<50 THEN GOTO ALLGOOD IF ENERGY<0 GOTO DESTROYED IF NUMKLING=0 THEN GOTO ALLGOOD ELSE GOTO SCAN2 NJED1: IF FX<43 OR FX>45 THEN GOTO ALLSHOT IF FY<68 OR FY>72 THEN GOTO ALLSHOT DAMAGE=DAMAGE+1:IF DAMAGE=3 THEN GOTO PHASE'KILL ZROW=FX-31:ZCOL=FY-31 PRINT TAB(ZROW-1,ZCOL);TAB(-1,11);"\=/";TAB(-1,12); PRINT TAB(ZROW,ZCOL-1);"^" PRINT TAB(ZROW,ZCOL+3);"v" PRINT TAB(ZROW+1,ZCOL);"/~\" PRINT TAB(ZROW+1,ZCOL);TAB(-1,11);"/~\";TAB(-1,12); FOR I=1 TO 50:NEXT I PRINT TAB(ZROW-1,ZCOL);" " PRINT TAB(ZROW,ZCOL-1);" " PRINT TAB(ZROW,ZCOL+3);" " PRINT TAB(ZROW+1,ZCOL);" " GOTO SCAN2 ALLSHOT: ? TAB(24,15);TAB(-1,9); GOTO SCAN2 ! !FIGHTER POSITION UPDATE *** ! FIGHTER'POSITION: B$="X" IF FQ=1 THEN GOTO NNJED1 ELSE FQ=1 NJED2: LET FX=INT(100*RND(1)) IF FX<36 OR FX>52 THEN GOTO NJED2 NJED3: LET FY=INT(200*RND(1)) IF FY<44 OR FY>97 THEN GOTO NJED3 LET KM=INT(10000*RND(1)) FZ=INT(16*RND(1)) NNJED1: IF INT(100*RND(1))>6 THEN GOTO NJED4 FZ=INT(16*RND(1)) NJED4: IF INT(10*RND(1))<A9 THEN GOTO NJED5 ELSE X=FX:Y=FY:GOTO NJED6 NJED5: IF FZ<>0 THEN GOTO NJED7 ELSE X=FX-1:Y=FY+1 NJED7: IF FZ<>1 THEN GOTO NJED8 ELSE X=FX:Y=FY+1 NJED8: IF FZ<>2 THEN GOTO NJED9 ELSE X=FX+1:Y=FY+1 NJED9: IF FZ<>3 THEN GOTO NJED10 ELSE X=FX+1:Y=FY NJED10: IF FZ<>4 THEN GOTO NJED11 ELSE X=FX+1:Y=FY-1 NJED11: IF FZ<>5 THEN GOTO NJED12 ELSE X=FX:Y=FY-1 NJED12: IF FZ<>6 THEN GOTO NJED13 ELSE X=FX-1:Y=FY-1 NJED13: IF FZ<>7 THEN GOTO NJED14 ELSE X=FX-1:Y=FY NJED14: IF FZ<>8 THEN GOTO NJED15 ELSE X=FX-1:Y=FY+2 NJED15: IF FZ<>9 THEN GOTO NJED16 ELSE X=FX-1:Y=FY+3 NJED16: IF FZ<>10 THEN GOTO NJED17 ELSE X=FX+1:Y=FY+3 NJED17: IF FZ<>11 THEN GOTO NJED18 ELSE X=FX+1:Y=FY+2 NJED18: IF FZ<>12 THEN GOTO NJED19 ELSE X=FX+1:Y=FY-2 NJED19: IF FZ<>13 THEN GOTO NJED20 ELSE X=FX+1:Y=FY-3 NJED20: IF FZ<>14 THEN GOTO NJED21 ELSE X=FX-1:Y=FY-3 NJED21: IF FZ<>15 THEN GOTO NJED6 ELSE X=FX-1:Y=FY-2 NJED6: IF FL$<>"1" THEN GOTO NJED22 ELSE X=X-1:Y=Y+1 NJED22: IF FL$<>"2" THEN GOTO NJED23 ELSE X=X-2:Y=Y NJED23: IF FL$<>"3" THEN GOTO NJED24 ELSE X=X-1:Y=Y-1 NJED24: IF FL$<>"4" THEN GOTO NJED25 ELSE X=X:Y=Y+2 NJED25: IF FL$<>"6" THEN GOTO NJED26 ELSE X=X:Y=Y-2 NJED26: IF FL$<>"7" THEN GOTO NJED27 ELSE X=X+1:Y=Y+1 NJED27: IF FL$<>"8" THEN GOTO NJED28 ELSE X=X+2:Y=Y NJED28: IF FL$<>"9" THEN GOTO NJED29 ELSE X=X+1:Y=Y-1 NJED29: IF X>39 AND X<50 AND Y>55 AND Y<87 THEN GOTO NJED30 IF SGN(KM)=+1 THEN KM=KM+INT(200*RND(1)) IF SGN(KM)=-1 THEN KM=KM-INT(200*RND(1)) IF KM<10000 THEN GOTO NJED31 ELSE GOTO NJED32 NJED30: IF SGN(KM)=+1 THEN KM=KM-INT(200*RND(1)) IF SGN(KM)=-1 THEN KM=KM+INT(200*RND(1)) NJED31: IF X<36 OR X>52 OR Y<42 OR Y>98 THEN GOTO NJED32 IF X=FX AND Y=FY THEN RETURN ZROW=FX-31:ZCOL=FY-31 PRINT TAB(ZROW,ZCOL);" " FX=X:FY=Y ZROW=FX-31:ZCOL=FY-31 PRINT TAB(ZROW,ZCOL);TAB(-1,23);tab(-1,44);TAB(-1,24);"o";TAB(-1,23);tab(-1,43);TAB(-1,24); PRINT TAB(1,19);KM EV=10*(44-FX):PRINT TAB(1,42);EV BR=3*(FY-70):PRINT TAB(1,62);BR IF DAMAGE(8)<0 THEN ? TAB(24,26);"COMPUTER DAMAGE HINDERS ACCURACY";:RETURN IF KM<5000 AND EV>-11 AND EV<11 AND BR>-11 AND BR<11 THEN ? TAB(24,26);"PHASERS LOCKED ON TARGET"; & ELSE ? TAB(24,1);TAB(-1,9); RETURN NJED32: ZROW=FX-31:ZCOL=FY-31 PRINT TAB(ZROW,ZCOL);" "; FQ=0:RETURN ALLGOOD: CALL MAIN'DISPLAY GOTO MAIN ROVING: ROVING=INT(10*RND(1)) FL$=ROVING IF FL$="0" OR FL$="5" THEN GOTO ROVING RETURN ! !*** FIRE PHOTON ROUTINE ! PHOTONS: CALL CLR'CMD IF DAMAGE(5)<0 THEN ? TAB(13,26);" PHOTON TUBES NOT OPERATIONAL":GOTO COMMAND'IT IF PHOTON<=0 THEN ? TAB(13,26);" ALL PHOTON TORPEDOES EXPENDED":GOTO COMMAND'IT FIR'PHO: ? TAB(13,4);"COURSE (1-9): "; VAR1=0:CALL XIN CALL COMPAS CALL CLR'CMD C1=VAR1 IF C1=5 THEN GOTO FIR'PHO IF C1<1 THEN CALL PRINT'COMPAS:GOTO COMMAND'IT IF C1<1 OR C1 >9 GOTO FIR'PHO PHOTON=PHOTON-1 ENERGY=ENERGY-PHOTON'POWER IF ACTION<5 THEN GOTO NO'MOV IF INT(10*RND(1))<ACTION-2 THEN CALL RANDOM'MOVE & :CALL MAIN'INFO:CALL BOT'SCREEN NO'MOV: C2=INT(C1) X1=C(C2,1)+(C(C2+1,1)-C(C2,1))*(C1-C2) X2=C(C2,2)+(C(C2+1,2)-C(C2,2))*(C1-C2) X=S1:Y=S2 CALL ENE CALL PHO WAS=0 : TER=0 AG'PHO: X=X+X1:Y=Y+X2 IF X<1 OR X>=9 OR Y< 1 OR Y>=9 GOTO MISSED PROW=CHR$(48+X)+3:PCOL=CHR$(48+Y)*4+24 IF X<=0 OR Y<=0 GOTO MISSED IF SECTOR(X,Y)=" " THEN ? TAB(PROW,PCOL);"+";:CALL PHO'FIX : GOTO AG'PHO IF SECTOR(X,Y)<>"+K+" THEN GOTO NO'STAR CALL PHO'FIX PCOL=PCOL-1 ? TAB(PROW,PCOL);" "; ? TAB(13,62);"KLINGON AT SECTOR"; ? TAB(14,62);" "X","Y;" IS" ? TAB(15,62);"*** DESTROYED ***";CHR$(7); NUMKLING=NUMKLING-1 KLINGON=KLINGON-1 CALL KLI CALL CON IF KLINGON<=0 GOTO WON FOR I=1 TO 3 IF INT(X+.5)<>K(I,1) GOTO NEX'PHO IF INT(Y+.5)=K(I,2) LET K(I,3)=0:I=3 NEX'PHO: NEXT I GOTO BAS'DES NO'STAR: IF SECTOR(X,Y)=" * " :? TAB(13,26);"YOU CAN'T DESTROY STARS" : GOTO MISSED IF SECTOR(X,Y)<>">B<" GOTO AG'PHO ? TAB(13,26);"*** STAR BASE DESTROYED **** " NUMBASE=NUMBASE-1 BAS'DES: SECTOR(X,Y)=" " CALL BOT'SCREEN GALAXY(Q1,Q2)=NUMKLING*100+NUMBASE*10+NUMSTAR GOTO MIS1 MISSED: ? TAB(14,62);"TORPEDO MISSED";CHR$(7); MIS1: CALL FIRE'BACK IF ENERGY<0 GOTO DESTROYED ELSE GOTO COMMAND'IT ! !*** SHIELD ALLOCATION ROUTINE ! SHIELDS: IF DAMAGE(6)<0 THEN ? TAB(9,15);TAB(-1,21);TAB(9,15);"DAMAGE";TAB(-1,22);:GOTO COMMAND'IT NO'SHIELD: ? TAB(15,25);"CAPTIAN ";CAPTAIN;"," ? TAB(16,25);"You have enough Energy for "; IF ENERGY+SHIELD>1999 THEN ? "100%" IF ENERGY+SHIELD<2000 AND ENERGY+SHIELD>1499 THEN ? "75%" IF ENERGY+SHIELD<1500 AND ENERGY+SHIELD>999 THEN ? "50%" IF ENERGY+SHIELD<999 THEN ? "25%" AMT'SHELD=0 PERC'SHIELD: ? TAB(17,25);"Power to the SHIELDS." ? TAB(18,25);"0=0% 1=25% 2=50% 3=75% 4=100%" ? TAB(19,25);"Enter Amount of SHIELD Power "; CALL XIN AMT'SHELD=VAR1 IF AMT'SHELD>4 THEN GOTO PERC'SHIELD IF AMT'SHELD=1 THEN AMT'SHELD=500 IF AMT'SHELD=2 THEN AMT'SHELD=1000 IF AMT'SHELD=3 THEN AMT'SHELD=1500 IF AMT'SHELD=4 THEN AMT'SHELD=2000 CALL CLR'CMD IF AMT'SHELD <= 0 THEN ENERGY=ENERGY+SHIELD:SHIELD=0:GOTO SHIELD'RET IF ENERGY + SHIELD < AMT'SHELD THEN AMT'SHELD=(ENERGY+SHIELD)/2 ENERGY = ENERGY + SHIELD - AMT'SHELD SHIELD = AMT'SHELD SHIELD'RET: CALL ENE:CALL SHE GOTO COMMAND'IT ! ! COMPUTER REPORT & REPAIR ROUTINE ! DAMAGE'GO: IF DAMAGE(8)<0 THEN GOTO COMMAND'IT ? TAB(15,25);"COMPUTER ON. MAKE SELECTION" ? TAB(17,25);"(1) DAMAGE REPORT" ? TAB(18,25);"(2) DAMAGE REPAIR" ? TAB(15,54); CALL XIN CALL CLR'CMD IF VAR1=0 THEN GOTO DAM'RET IF VAR1=1 THEN GOTO D'REPORT REPAIR: CALL CLR'POINT ? TAB(15,25);"Each unit of REPAIR will take " ? TAB(16,25);"100 units of ENERGY." ? TAB(17,25);"Enter Device number to REPAIR ";:CALL XIN IF VAR1<1 THEN GOTO MAIN IF VAR1>8 THEN GOTO MAIN RP=VAR1 ? TAB(18,25);DEVICE(RP)[3,10] ;" has damage of ";DAMAGE(RP) ? TAB(19,25);"Number of REPAIR units for " ? TAB(20,25);DEVICE(RP)[3,10];" ";:CALL XIN DAMAGE(RP)=DAMAGE(RP)+VAR1 RP=VAR1*100 ENERGY=ENERGY-RP DAM'RET: CALL CLR'CMD GOTO MAIN D'REPORT: FOR R1=1 TO 8:PROW = R1+3 TEMPD=100+DAMAGE(R1) ? TAB(PROW,15);TEMPD USING "###.##%" NEXT R1 VAR1=0:CALL XIN GOTO MAIN NO'KLINGS: ? TAB(19,10);"Short Range Sensors report no KLINGONS in this QUADRANT." GOTO COMMAND'IT A'KLIN: ? TAB(24,20);"**** KLINGON AT SECTOR ";CHR$(48+K(I,1));",";CHR$(48+K(I,2));" DESTROYED ****"; FOR ZZ=1 TO 750:NEXT ZZ NUMKLING=NUMKLING-1 KLINGON=KLINGON-1 SECTOR(K(I,1),K(I,2))=" " GALAXY(Q1,Q2)=NUMKLING*100+NUMBASE*10+NUMSTAR K(I,3) =0 RETURN FIRE'BACK: IF C$<>"DOCKED" GOTO FIR'KI ? TAB(13,26);"BASE SHIELDS PROTECT U.S.S. AMUS"; RETURN FIR'KI: IF NUMKLING <= 0 GOTO FIR'RE FOR I=1 TO 3 IF K(I,3)<=0 THEN GOTO FIR'NE H=(K(I,3)/SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2))*(2*RND(0)) SHIELD=SHIELD-H ? TAB(19,25);"Shield DAMAGE REPORT" ? TAB(I+20,25);H;"hit on SHIELD from SECTOR ";CHR$(48+K(I,1));",";CHR$(48+K(I,2)); CALL SHE IF SHIELD<0 I=3:NEXT I:GOTO DESTROYED FIR'NE: NEXT I FIR'RE: RETURN DEAD: ? TAB(15,25);"THE U.S.S AMUS IS DEAD IN SPACE." ? TAB(17,25);"IF YOU SURVIVE ALL IMPENDING" ? TAB(18,25);"ATTACK YOU WILL BE DEMOTED" ? TAB(19,25);"TO PRIVATE" DEADY: IF NUMKLING<=0 GOTO STIL'KLIN CALL FIRE'BACK GOTO DEADY TIM'UP: ?TAB(15,25);"IT IS STARDATE";T GOTO STIL'KLIN DESTROYED: ? TAB(16,25);"THE U.S.S AMUS HAS BEEN DESTROYED." ? TAB(17,25);"THE FEDERATION WILL BE CONQUERED" STIL'KLIN: ? TAB(18,25);"THERE ARE STILL";KLINGON;"KLINGON CRUISERS" ! ? ENERGY ;" ";SHIELD PLAY: ? TAB(20,25); INPUT "Do you want to Fly Again? ";RESP$ ? TAB(-1,0); IF UCS(RESP$[1,1])= "Y" GOTO BEGIN ELSE END WON: ? TAB(15,25);"THE LAST KLINGON BATTLE CRUISER" ? TAB(16,25);"IN THE GALAXY HAS BEEN DESTROYED" ? TAB(17,25);"THE FEDERATION HAS BEEN SAVED" ? TAB(19,25);"YOUR EFFICIENCY RATING =";((K7/(STARTIME-T0))*1000) GOTO PLAY MAIN'INFO: CALL CHECK'DOCK IF FLAG=0 GOTO MAIN'D D0=1:C$="DOCKED":ENERGY=4000:PHOTON=10:SHIELD=0 FOR I = 1 TO 8 IF DAMAGE(I)< 0 THEN DAMAGE(I)=DAMAGE(I)+1 NEXT I ? TAB(13,26);"SHIELDS DROPPED FOR DOCKING "; GOTO MAIN'DA MAIN'D: D0=0 IF NUMKLING>0 LET C$=" RED " ELSE IF ENERGY<E0*.1 LET C$="YELLOW" ELSE LET C$="GREEN " MAIN'DA: IF DAMAGE(1) >= 0 GOTO REP BAD'SCR: ? TAB(4,26);" ************* " ? TAB(5,26);" " ? TAB(6,26);" VISUAL SCREEN DAMAGED " ? TAB(7,26);" ALONG WITH IMPULSE ENGINE " ? TAB(8,26);" GUAGES INCORRECT " ? TAB(9,26);" ************* " ? TAB(10,26);" " ? TAB(11,26);" "; GOTO RET REP: FOR I = 1 TO 8 IF DAMAGE(I)=>0 THEN ? TAB(I+3,15);" OK " IF DAMAGE(I)<0 THEN ? TAB(I+3,15);"DAMAGED" NEXT I ST$=STARTIME USING "####" ? TAB(4,74);ST$; CALL CON CALL QUAD CALL SEC CALL ENE ? TAB(7,74);BASES CALL KLI CALL PHO IF SHIELD < 100 THEN ? TAB(9,15);TAB(-1,21);" LOW ";TAB(-1,22); CALL SHE RET: RETURN COMPUTER'RECORDS: IF DAMAGE(7)<0 THEN ? TAB(10,15); "DAMAGED";: GOTO COMMAND'IT ? TAB(-1,0);"LONG-RANGE SCAN ";TAB(-1,11);"[KBS]";TAB(-1,12) PRINT ! +--1--+--2--+--3--+--4--+--5--+--6--+--7--+--8--+ PRINT " 1 2 3 4 5 6 7 8" CALL H'BAR FOR I = 1 TO 8 PRINT CHR(48+I); FOR J = 1 TO 8 CALL V'BAR LRS = Z(I,J) USING "#ZZ" IF Q1 = I AND Q2 = J THEN PRINT TAB(-1,32); & ELSE IF LRS[2,2] <> "0" THEN PRINT TAB(-1,21); & ELSE PRINT " "; IF LRS = "000" THEN PRINT " "; ELSE PRINT LRS; IF Q1 = I AND Q2 = J THEN PRINT TAB(-1,33); & ELSE IF LRS[2,2] <> "0" THEN PRINT TAB(-1,22); & ELSE PRINT " "; NEXT J CALL V'BAR PRINT CALL H'BAR NEXT I ! FOR I=1 TO 8 ! ?CHR$(48+I) ! ?USING FRM,Z(I,1),Z(I,2),Z(I,3),Z(I,4),Z(I,5),Z(I,6),Z(I,7),Z(I,8) ! IF I=7 GOTO COMP'BOT ! IF I=8 GOTO COMP'NEX ! ?" _____ _____ _____ _____ _____ _____ _____ _____" : GOTO COMP'NEX COMP'BOT: ! ?" __1__ __2__ __3__ __4__ __5__ __6__ __7__ __8__" COMP'NEX: ! NEXT I ? TAB(10,55);"COMPUTER RECORD OF"; ? TAB(12,55);"GALAXY FOR QUADRANT"; ? TAB(14,62);CHR$(48+Q1);",";CHR$(48+Q2); PRINT TAB(Q1*2+3,Q2*6-1); ! LL1=(CHR$(48+Q1)*3)-2 :LL2=(CHR$(48+Q2)*6)-1 ! ? TAB(LL1,LL2);CHR(A1); NFLAG=1 VAR1=0:CALL XIN ? TAB(-1,0); CALL MAIN'DISPLAY GOTO MAIN H'BAR: PRINT " ";TAB(-1,23); FOR K = 1 TO 8 PRINT TAB(-1,48); FOR L = 1 TO 5 : PRINT TAB(-1,46); : NEXT L NEXT K PRINT TAB(-1,48);TAB(-1,24); PRINT RETURN V'BAR: PRINT TAB(-1,23);TAB(-1,47);TAB(-1,24); RETURN HELP'US: LOOKUP "DSK0:USAMUS.HLP[7,1]",ANSWER IF ANSWER<1 THEN GOTO NOT'IN'HLP OPEN #1,"DSK0:USAMUS.HLP[7,1]",INPUT GOTO SEE'IN NOT'IN'HLP: OPEN #1, "USAMUS.HLP",INPUT GOTO SEE'IN SEE'HEL: INPUT "HIT RETURN TO CONTINUE",RESP$ ? TAB(-1,0); SEE'IN: INPUT LINE #1,HLP IF EOF(1) # 0 THEN GOTO CL'HELP LCONT=LCONT+1 ? HLP IF LCONT=22 THEN LCONT=0:?:GOTO SEE'HEL GOTO SEE'IN CL'HELP: INPUT "HIT RETURN TO CONTINUE",RESP$ CLOSE #1 RETURN CLR'CMD: CALL CON ? TAB(13,3);SPACE$(19); FOR I=15 TO 18 ? TAB(I,25);SPACE$(34); NEXT I FOR I=19 TO 23 ? TAB(I,25);TAB(-1,9); NEXT I FOR I=12 TO 17 ? TAB(I,62);SPACE$(17); NEXT I ? TAB(13,26);SPACE$(32); RETURN CLR'POINT: ? TAB(-1,11); FOR I = 4 TO 11 ? TAB(I,3);DEVICE(I-3); NEXT I ? TAB(-1,12); RETURN XIN: DFLAG=0 ? TAB(-1,28); VAR1=0 :VARA="" FOR LONI=1 TO TIM'LEN XCALL INKEY,VARA VAR1=VAL(VARA) IF LONI=TIM'LEN/2 THEN DFLAG=1 IF VARA#"" THEN LONI=TIM'LEN NEXT LONI ? TAB(-1,29); IF NFLAG=1 THEN NFLAG=0 :RETURN IF DFLAG=1 THEN CALL RANDOM'MOVE:CALL MAIN'INFO:CALL BOT'SCREEN RETURN BOT'SCREEN: IF DAMAGE(1)<0 CALL BAD'SCR:RETURN FOR I = 1 TO 8 ? TAB(I+3,26);ROW(I) NEXT I RETURN STA: ? TAB(4,74);STARTIME; RETURN CON: IF NUMKLING>0 LET C$=" RED " ELSE IF ENERGY<E0*.1 LET C$="YELLOW" ELSE LET C$="GREEN " IF C$=" RED " THEN ? TAB(15,11);TAB(-1,21); ELSE ? TAB(15,11);TAB(-1,22); ? TAB(15,12);"CONDITION"; IF C$=" RED " THEN ? TAB(-1,22);TAB(17,12);TAB(-1,21); ELSE ? TAB(17,12);TAB(-1,22); ? TAB(17,13);C$; IF C$=" RED " THEN ? TAB(-1,22); RETURN QUAD: ? TAB(5,74);CHR$(48+Q1);","CHR$(48+Q2); IF VAL(CHR$(48+Q1))<1 OR VAL(CHR$(48+Q1))>8 THEN CALL BAD'QUAD IF VAL(CHR$(48+Q2))<1 OR VAL(CHR$(48+Q2))>8 THEN CALL BAD'QUAD RETURN SEC: ? TAB(6,74);CHR$(48+S1);",";CHR$(48+S2); RETURN ENE: ? TAB(9,72);INT(ENERGY);" " RETURN BSS: ? TAB(7,72);BASES RETURN KLI: ? TAB(8,72);KLINGON; RETURN PHO: IF DAMAGE(5)<0 THEN RETURN ? TAB(8,15);PHOTON;" "; RETURN SHE: IF SHIELD < 100 THEN ? TAB(9,15);TAB(-1,21);"LOW ";TAB(-1,22);CHR$(7); IF SHIELD=0 THEN RETURN IF DAMAGE(6)<0 THEN RETURN ? TAB(9,15);INT(SHIELD);" " RETURN PHO'FIX: IF WAS=0 AND TER=0 THEN WAS=PROW:TER=PCOL:RETURN ? TAB(WAS,TER);" "; WAS=PROW:TER=PCOL RETURN BAD'QUAD: ? TAB(15,25);"CAPTAIN ";CAPTAIN;"," ? TAB(16,25);"You have flown out of the GALAXY " ? TAB(17,25);"into a Black Hole. Retrace flight" ? TAB(18,25);"path to get back to the GALAXY." RETURN CHECK'DOCK: FLAG=0 FOR I=S1-1 TO S1+1 FOR J=S2-1 TO S2+1 IF I>0 AND I<9 AND J>0 AND J<9 THEN IF SECTOR(I,J)=">B<" LET FLAG=1 NEXT J NEXT I RETURN COMPAS: IF VAR1=1 THEN ? TAB(17,4);"1"; IF VAR1=2 THEN ? TAB(17,6);"2"; IF VAR1=3 THEN ? TAB(17,8);"3"; IF VAR1=4 THEN ? TAB(16,4);"4"; IF VAR1=6 THEN ? TAB(16,8);"6"; IF VAR1=7 THEN ? TAB(15,4);"7"; IF VAR1=8 THEN ? TAB(15,6);"8"; IF VAR1=9 THEN ? TAB(15,8);"9"; RETURN PRINT'COMPAS: !! ? TAB(15,3);TAB(-1,11); ? TAB(15,4);TAB(-1,11);"7 8 9";TAB(-1,12); ? TAB(16,4);TAB(-1,11);"4 * 6";TAB(-1,12); ? TAB(17,4);TAB(-1,11);"1 2 3";TAB(-1,12); !PRINT SHORT-RANGE SCAN NUM = 19 FOR I=Q1-1 TO Q1+1 N(1)=0:N(2)=0:N(3)=0 FOR J=Q2-1 TO Q2+1 IF I<1 OR I>8 OR J<1 OR J>8 THEN N(J-Q2+2) = 999 : GOTO MORE'SCANN N(J-Q2+2)=GALAXY(I,J) IF DAMAGE(7)<0 GOTO MORE'SCAN Z(I,J)=GALAXY(I,J) MORE'SCANN: NEXT J NUM=NUM+1 ? TAB(NUM,4); FOR J = 1 TO 3 IF N(J) = 999 THEN PRINT "***"; & ELSE IF I = 2 AND J = 2 THEN PRINT TAB(-1,11);N(J) USING "#ZZ";TAB(-1,12); & ELSE PRINT N(J) USING "#ZZ"; IF J < 3 THEN PRINT " "; NEXT J NEXT I RETURN ABORT: ? TAB(-1,0); ? ? "CAPTAIN ";CAPTAIN;"," IF ERR(0)=8 THEN GOTO BAD'GALAXY IF ERR(0)>1 THEN GOTO REAL'PROBLEM ? ? "The U.S.S AMUS has been destroyed by a CLASS ^C Asteroid" ? ? "Try Commanding the U.S.S AMUS again, sometime after it is" ? "Repaired !!!" GOTO FLASHY BAD'GALAXY: ? ? "You have exceeded the limits of your GALAXY, (You got lost)." ? "Your last coordinates were ";CHR$(48+Q1);",";CHR$(48+Q2) ? "well out of the designated 8 by 8 GALAXY. Where did you learn" ? "how to navigate? At Sears? You have been destroyed by a " ? "Galactic Subscript out of range of your comprehension." ? ? "Try again when the U.S.S. AMUS is rebuilt !!!" FLASHY: FOR I=1 TO 5 ? TAB(-1,36); ? TAB(-1,37); NEXT I FOR I=1 TO 3:NEXT I ? TAB(-1,37);TAB(-1,37);TAB(-1,28); END LEVEL: PRINT TAB(-1,12);TAB(-1,29); PRINT TAB(5,30); "LEVEL OF ACTION"; PRINT TAB(6,20); " "; PRINT TAB(7,12); "Lowest"; TAB(7,56); " Highest"; PRINT TAB(9,13); TAB(-1,23); TAB(-1,11); TAB(-1,40); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,12); TAB(-1,46); TAB(-1,11); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,45); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,45); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,45); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,41); PRINT TAB(10,13); TAB(-1,24); ""; TAB(-1,12); "1"; TAB(10,19); "2"; TAB(10,25); PRINT "3"; TAB(10,31); "4"; TAB(10,37); "5"; TAB(10,43); "6"; TAB(10,49); "7"; TAB(10,55); PRINT "8"; TAB(10,61); "9"; PRINT TAB(-1,12); TAB(-1,28); LEVEL'AG: ? TAB(15,10);:INPUT "Enter Level of Action desired ",ACTION IF ACTION <1 OR ACTION>9 THEN GOTO GIVE'LEVEL IF ACTION=1 THEN TIM'LEN=5000 IF ACTION=2 THEN TIM'LEN=4500 IF ACTION=3 THEN TIM'LEN=4000 IF ACTION=4 THEN TIM'LEN=3000 IF ACTION=5 THEN TIM'LEN=2500 IF ACTION=6 THEN TIM'LEN=2000 IF ACTION=7 THEN TIM'LEN=1500 IF ACTION=8 THEN TIM'LEN=1000 IF ACTION=9 THEN TIM'LEN=500 PHOTON'POWER=(ACTION*2)*10 PHASER'POWER=ACTION*10 RETURN GIVE'LEVEL: ? TAB(22,1);" Regulation 48.432-444b states that all potential Captains must select an " ? TAB(23,1);" ACTION level greater than 0. CR to continue"; INPUT "",ACTION GOTO LEVEL'AG ! ! RANDOM MOVEMENT OF KLINGONS ON SCREEN DISPLAY ! RANDOM'MOVE: IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 GOTO NO'ENEM X=GALAXY(Q1,Q2)*.01 NUMKLING=INT(X) NUMBASE=INT((X-NUMKLING)*10) NUMSTAR=GALAXY(Q1,Q2)-INT(GALAXY(Q1,Q2)*.1)*10 IF NUMKLING=0 GOTO S'NEX ? TAB(13,26);TAB(-1,21);" COMBAT AREA ";TAB(-1,22);CHR$(7); IF SHIELD>200 GOTO S'NEX ? TAB(9,3);DEVICE(6); ? TAB(15,25);"CAPTAIN ";CAPTAIN;"," ? TAB(16,25);"SHIELDS are DANGEROUSLY LOW !";CHR$(7); FOR I=1 TO 10 :? CHR$(7);: NEXT I S'NEX: FOR I=1 TO 3:FOR J=1 TO 3:K(I,J)=0:NEXT J:NEXT I NO'ENEM: FOR I=1 TO 3:K(I,3)=0:NEXT I SHORTRANGESCREEN=SPACE(256) SECTOR(S1,S2)="<E>" IF NUMKLING=0 GOTO NO'NEX ELSE FOR I=1 TO NUMKLING MO'EN: R1=INT(RND(0)*8+1):R2=INT(RND(0)*8+1) IF SECTOR(R1,R2)<>" "GOTO MO'EN SECTOR(R1,R2)="+K+":K(I,1)=R1:K(I,2)=R2:K(I,3)=S9 NEXT I NO'NEX: IF NUMBASE=0 GOTO NO'BAS ELSE FOR I=1 TO NUMBASE MOR'BAS: R1=INT(RND(0)*8+1):R2=INT(RND(0)*8+1) IF SECTOR(R1,R2)<>" " GOTO MOR'BAS SECTOR(R1,R2)=">B<" NEXT I NO'BAS: IF NUMSTAR=0 GOTO RANDOM'RETURN ELSE FOR I=1 TO NUMSTAR MO'STAR: R1=INT(RND(0)*8+1):R2=INT(RND(0)*8+1) IF SECTOR(R1,R2)<>" " GOTO MO'STAR SECTOR(R1,R2)=" * " NEXT I RANDOM'RETURN: RETURN GIVE'CAP: ? TAB(22,1);"Regulation 43.234-90 states that all potential Captains must give their name." ? TAB(23,1);" CR to continue "; INPUT "",CAPTAIN GOTO ENTRY ! ! SCREENS ! MAIN'DISPLAY: PRINT TAB(-1,0); TAB(-1,29); PRINT TAB(-1,12); PRINT " "; TAB(1,34); " "; TAB(-1,32); " U.S.S. AMUS "; TAB(1,49); TAB(-1,33); PRINT TAB(3,2); TAB(-1,23); TAB(-1,38); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,11); TAB(-1,39); PRINT TAB(-1,24); ""; TAB(-1,12); " "; TAB(-1,23); TAB(-1,38); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,42); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,42); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,39); TAB(-1,24); " "; PRINT TAB(-1,23); TAB(-1,11); TAB(-1,38); TAB(-1,46); TAB(-1,12); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,42); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,11); TAB(-1,46); TAB(-1,39); PRINT TAB(4,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(4,14); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,44); PRINT TAB(4,55); TAB(-1,24); " "; TAB(4,59); TAB(-1,23); TAB(-1,43); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); PRINT ""; TAB(-1,12); "STARDATE"; TAB(4,71); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(-1,24); ""; TAB(-1,12); " "; TAB(4,79); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT PRINT TAB(5,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(5,14); PRINT TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,47); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,44); TAB(5,44); TAB(-1,24); PRINT " "; TAB(5,59); TAB(-1,23); TAB(-1,43); TAB(-1,24); " "; TAB(-1,23); PRINT TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); "QUADRANT "; PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(5,79); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(6,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,47); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; PRINT TAB(-1,23); TAB(-1,44); TAB(6,30); TAB(-1,24); " "; TAB(6,59); PRINT TAB(-1,23); TAB(-1,43); TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(-1,24); ""; TAB(-1,12); "SECTOR "; TAB(6,71); TAB(-1,23); TAB(-1,47); PRINT TAB(-1,24); " "; TAB(6,79); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT PRINT TAB(7,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(7,14); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,44); PRINT TAB(7,52); TAB(-1,24); " "; TAB(7,59); TAB(-1,23); TAB(-1,43); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); PRINT ""; TAB(-1,12); "STARBASE"; TAB(7,71); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(7,73); TAB(-1,24); ""; TAB(-1,12); " "; TAB(7,79); TAB(-1,23); PRINT TAB(-1,11); TAB(-1,47); PRINT TAB(8,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(8,14); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(8,20); " "; TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,44); PRINT TAB(8,51); TAB(-1,24); " "; TAB(8,59); TAB(-1,23); TAB(-1,43); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); PRINT ""; TAB(-1,12); "KLINGONS "; TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(8,73); TAB(-1,24); ""; TAB(-1,12); " "; TAB(8,76); " "; TAB(8,79); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(9,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(9,14); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,44); PRINT TAB(9,29); TAB(-1,24); " "; TAB(9,59); TAB(-1,23); TAB(-1,43); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); PRINT ""; TAB(-1,12); "FUEL RODS"; TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(-1,24); ""; TAB(-1,12); " "; TAB(9,79); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT PRINT TAB(10,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); PRINT TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,44); PRINT TAB(10,59); TAB(-1,43); TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,44); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,12); TAB(-1,45); TAB(-1,11); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,12); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,11); TAB(-1,46); TAB(-1,43); PRINT TAB(11,2); TAB(-1,12); TAB(-1,47); TAB(-1,24); " "; TAB(11,14); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(11,20); " "; TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,44); PRINT TAB(11,59); TAB(-1,43); TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(-1,24); ""; TAB(-1,12); " ATTACK STATUS "; TAB(-1,23); TAB(-1,47); PRINT TAB(-1,24); " "; PRINT TAB(12,2); TAB(-1,23); TAB(-1,44); TAB(-1,46); TAB(-1,11); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,12); TAB(-1,46); PRINT TAB(-1,11); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,12); TAB(-1,46); PRINT TAB(-1,11); TAB(-1,46); TAB(-1,12); TAB(-1,46); TAB(-1,11); TAB(-1,43); PRINT TAB(-1,24); ""; TAB(-1,12); " "; TAB(-1,23); TAB(-1,44); PRINT TAB(-1,11); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); TAB(-1,12); TAB(-1,43); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); PRINT ""; TAB(-1,12); " "; TAB(-1,23); TAB(-1,47); PRINT TAB(13,2); TAB(-1,47); TAB(-1,24); "COMMAND "; TAB(13,20); " "; TAB(13,23); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(-1,23); TAB(-1,47); TAB(-1,24); " "; TAB(-1,23); TAB(-1,47); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); PRINT ""; TAB(-1,12); " "; TAB(13,78); " "; TAB(-1,23); TAB(-1,47); PRINT PRINT TAB(14,2); TAB(-1,44); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,42); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,11); TAB(-1,46); TAB(-1,46); TAB(-1,43); PRINT TAB(-1,24); ""; TAB(-1,12); " "; TAB(-1,23); TAB(-1,40); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,41); TAB(-1,24); " "; PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; PRINT TAB(-1,23); TAB(-1,47); PRINT TAB(15,2); TAB(-1,11); TAB(-1,47); TAB(15,4); TAB(-1,24); ""; PRINT TAB(-1,11); "7 8 9";TAB(-1,12); TAB(15,10); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(-1,24); ""; TAB(-1,12); " "; TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(15,61); TAB(-1,47); TAB(-1,24); ""; TAB(-1,12); " "; TAB(15,79); PRINT TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(16,2); TAB(-1,47); TAB(16,4); TAB(-1,24); ""; TAB(-1,11); "4"; PRINT TAB(16,6); "*"; TAB(16,8); "6";TAB(-1,12); TAB(16,10); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(16,16); TAB(-1,24); ""; TAB(-1,12); " "; TAB(16,23); TAB(-1,23); PRINT TAB(-1,11); TAB(-1,47); TAB(16,61); TAB(-1,47); TAB(-1,24); ""; PRINT TAB(-1,12); " "; TAB(16,79); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT PRINT TAB(17,2); TAB(-1,47); TAB(17,4); TAB(-1,24); ""; TAB(-1,11); "1"; PRINT TAB(17,6); "2"; TAB(17,8); "3";TAB(-1,12); TAB(17,10); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT TAB(17,13); TAB(-1,24); ""; TAB(-1,12); " "; TAB(17,23); TAB(-1,23); PRINT TAB(-1,11); TAB(-1,47); TAB(17,61); TAB(-1,47); TAB(-1,24); ""; PRINT TAB(-1,12); " "; TAB(17,79); TAB(-1,23); TAB(-1,11); TAB(-1,47); PRINT PRINT TAB(18,2); TAB(-1,40); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,45); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,41); TAB(18,61); PRINT TAB(-1,40); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); TAB(-1,46); PRINT TAB(-1,41); ! SHORT RANGE BOX HERE PRINT TAB(19,2);TAB(-1,38); FOR X = 1 TO 15 : PRINT TAB(-1,46); : NEXT X PRINT TAB(-1,24);TAB(19,4);"KBS";TAB(19,9);"KBS";TAB(19,14);"KBS";TAB(-1,23); PRINT TAB(19,18);TAB(-1,39); FOR X = 1 TO 3 PRINT TAB(19+X,2);TAB(-1,47); PRINT TAB(19+X,18);TAB(-1,47); NEXT X PRINT TAB(23,2);TAB(-1,40); FOR X = 1 TO 15 : PRINT TAB(-1,46); : NEXT X PRINT TAB(-1,41) PRINT TAB(-1,24); TAB(-1,28); RETURN OPEN'BEGIN: PRINT TAB(-1,0); TAB(-1,29); PRINT TAB(-1,98);TAB(24,20);"Once upon a time, in a faraway place......."; Z$ = "*+@:#" FOR X = 1 TO 24 FOR XX = 1 TO 5 RND'MIZE: Z = INT(24*RND(0)+1) ZZ = INT(80*RND(0)+1) IF Z => X AND Z <= 24 AND ZZ => 1 AND ZZ <= 80 & THEN PRINT TAB(Z,ZZ);TAB(-1,11);Z$[XX,XX];TAB(-1,12); NEXT XX PRINT TAB(24,80) NEXT X PRINT TAB(-1,95);TAB(-1,36); PRINT TAB(2,6); " "; PRINT TAB(3,9); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(3,22); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(3,36); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; TAB(3,50); PRINT TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(3,62); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(4,9); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(4,22); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(4,36); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(4,50); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(4,62); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(4,74); TAB(-1,24); " "; PRINT TAB(5,9); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(5,22); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(5,30); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(5,36); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(5,45); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(5,50); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(5,62); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(5,74); PRINT TAB(-1,24); " "; PRINT TAB(6,9); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(6,22); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(6,30); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(6,36); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(6,45); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(6,50); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(6,62); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(7,9); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(7,22); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(7,36); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(7,50); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(7,62); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(8,16); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(8,22); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(8,36); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(8,45); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(8,50); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(8,62); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(9,16); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(9,22); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(9,36); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(9,45); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(9,50); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(9,62); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(10,9); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(10,62); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(11,9); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(11,22); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(11,36); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(11,45); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(11,50); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(11,62); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(11,75); TAB(-1,24); " "; PRINT TAB(12,75); " "; PRINT TAB(14,14); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(14,29); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); ""; PRINT TAB(-1,11); " "; TAB(14,43); " "; TAB(-1,12); " "; TAB(14,45); TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(14,58); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(14,65); TAB(-1,24); " "; PRINT TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(15,14); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(15,29); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(15,43); TAB(-1,24); " "; PRINT TAB(15,45); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(15,58); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(15,64); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; PRINT TAB(16,19); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); PRINT " "; TAB(16,29); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(16,37); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(16,43); TAB(-1,24); " "; TAB(16,45); TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(16,58); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; PRINT TAB(17,19); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(17,29); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(17,36); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(17,43); TAB(-1,24); PRINT " "; TAB(17,45); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(17,58); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); PRINT " "; PRINT TAB(18,19); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(18,29); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; TAB(18,43); PRINT " "; TAB(18,45); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(18,58); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; PRINT TAB(19,19); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(19,29); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(19,35); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; TAB(19,43); PRINT " "; TAB(19,45); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(19,58); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(19,64); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); PRINT " "; PRINT TAB(20,19); TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(20,29); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(20,35); TAB(-1,24); PRINT " "; TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,24); " "; TAB(20,43); " "; TAB(20,45); TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); " "; TAB(20,58); PRINT TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(20,64); PRINT TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); PRINT TAB(21,19); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(21,29); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(21,35); TAB(-1,24); " "; PRINT TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(21,43); PRINT TAB(-1,24); " "; TAB(21,45); TAB(-1,23); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(21,58); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(21,64); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(22,19); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(22,29); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(22,37); TAB(-1,24); " "; PRINT TAB(-1,23); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,24); PRINT " "; TAB(22,43); " "; TAB(22,45); TAB(-1,23); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(-1,49); TAB(22,58); TAB(-1,49); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); TAB(22,64); TAB(-1,24); " "; TAB(-1,23); TAB(-1,49); PRINT TAB(-1,49); TAB(-1,49); PRINT TAB(-1,24); TAB(-1,28);TAB(-1,37); RETURN ! ! REPORT SYSTEM ERRORS ! REAL'PROBLEM: ? ? "Computer Reports that the System "; IF ERR(0)=2 THEN ? "has a System error" IF ERR(0)=3 THEN ? "is out of Memory (get more!)" IF ERR(0)=4 THEN ? "is out of Data" IF ERR(0)=5 THEN ? "has a NEXT without FOR situation" IF ERR(0)=6 THEN ? "has a RETURN without a CALL" IF ERR(0)=7 THEN ? "has a RESUME without Error" IF ERR(0)=9 THEN ? "has Floating Point Overflow problem" IF ERR(0)=10 THEN ? "has a divide by Zero situation" IF ERR(0)=11 THEN ? "has an Illegal Function Value" IF ERR(0)=12 THEN ? "cannot find the INKEY.SBR subroutine " IF ERR(0)=13 THEN ? "already has that File Open" IF ERR(0)=14 THEN ? "is trying IO to unopened File" IF ERR(0)=15 THEN ? "has a Record Size overflow problem" IF ERR(0)=16 THEN ? "has a File Specification error" IF ERR(0)=17 THEN ? "cannot find the USAMUS.HLP File requested." IF ERR(0)=18 THEN ? "Device Not Ready" IF ERR(0)=19 THEN ? "Device Full" IF ERR(0)=20 THEN ? "Device is in Error" IF ERR(0)=21 THEN ? "Device In use" IF ERR(0)=22 THEN ? "has an Illegal user code" IF ERR(0)=23 THEN ? "is in a Protection Violation situation" IF ERR(0)=24 THEN ? "Write protected" IF ERR(0)=25 THEN ? "has a File type mismatch situation" IF ERR(0)=26 THEN ? "Device does not exist" IF ERR(0)=27 THEN ? "Bitmap is Kaput! (better check that out) " IF ERR(0)=28 THEN ? "Disk is not mounted (Dummy!) " IF ERR(0)=29 THEN ? "is requesting a File already exists" IF ERR(0)=30 THEN ? "Redimensioned array" IF ERR(0)=31 THEN ? "is requesting an Illegal Record number" IF ERR(0)=32 THEN ? "is requesting an Invalid File Name" IF ERR(0)=33 THEN ? "has a Stack overflow" IF ERR(0)=34 THEN ? "has an Invalid Syntax code" IF ERR(0)=35 THEN ? "has an Unsupported function situation" IF ERR(0)=36 THEN ? "is trying to use an Invalid subroutine Version" ? ? "This situation was not designed as part of the program!" ? "Thus it gotta be fixed or it gonna happen again sooner or later.";TAB(-1,28) END