PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #44)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “GAME SERIES NO 7”

A collection of vastly different programs, which includes both graphic
and non-graphic games, text adventures, and printer art.  We also have a
game of chance for the gambler in you, a biorythm generator, and a
banner-printing program.

Special Requirements:  BASIC and some programs require color graphics.

How to Start:  Type GO (press enter).

Suggested Registration:  None.

File Descriptions:

1500     BAS  BASIC program
21       BAS  A game similar to Blackjack
BALL     BAS  Shoot the ball at the target
BANNER   BAS  Produces large letters on printer
BIORYTHM BAS  Print your biorythms
BLKFRI3  BAS  Black Friday on the stockmarket
CHASE    BAS  Maze game
DECISION BAS  Executive decision maker
ENTEP    BAS  Produces Starship Enterprise on printer
HANOI    BAS  Towers of Hanoi
HANOI    DOC  Documentation for HANOI.BAS
HOBBIT   BAS  Adventure text game
HORSE    BAS  BASIC horse program
KING     BAS  Manage your kingdom
LINES    BAS  Draws pattern of lines on screen
MSQUARE  BAS  Builds magic squares
ROCKET   BAS  Rocket launch
ROULETTE BAS  Roulette game
SLOT     BAS  Slotmachine
STARTREK BAS  45K version of popular game
TREKINFO DOC  Documentation for STARTREK.BAS above
USALIST  BAS  Draws map of USA on color display

1500.BAS

10 CLS:KEY OFF
20 REM WRITTEN BY W.A.BURTON NOV.1977
30 REM ADAPTED FOR IBM PC BY CHARLIE VELLA, 1983
40 PRINT CHR$(26) : WIDTH 80
50 PRINT TAB(20); "***  1500 GAME   ***"
60 PRINT : PRINT : PRINT
70 INPUT "              DOES ANYONE NEED INSTRUCTIONS"; A$
80 IF LEFT$(A$,1)="Y" THEN GOSUB 1410
90 CLEAR : BL$=" " : GF=0
100 PRINT CHR$(26)
110 INPUT "                   HOW MANY PLAYERS (2 TO 7)"; P
120 PRINT CHR$(26)
130 IF P<2 OR P>7 OR P<>INT(P) THEN PRINT "WRONG !!"; : GOTO 110
140 DIM PL$(P), PS(P), DI(3), Q(P)
150 FOR X=1 TO P
160 PRINT "PLAYER #"; X; : INPUT "WHAT IS YOUR NAME "; PL$(X)
170 GOSUB 1080 : A=0
180 NEXT X
190 GOSUB 1190
200 '
210 '
220 '
230 REM MAIN MODULE
240 PRINT "HIT RETURN TO PLAY" :
250 A$=INKEY$:IF A$="" THEN 250
260 TF=0 : TP=0
270 GOSUB 540
280 GOSUB 580
290 GOSUB 650
300 IF Q(CO)=0 AND (TP+PS(CO))>=250 THEN Q(CO)=1 : ELSE 330
310 PRINT PL$(CO); ", YOU'RE QUALIFIED"
320 PS(CO)=PS(CO)+TP : GOTO 400
330 IF Q(CO)=1 THEN 370
340 IF Q(CO)=0 AND TF=0 THEN 270
350 IF Q(CO)=0 AND TF=1 THEN PRINT "SORRY, "; PL$(CO); ", YOU BUSTED" ELSE 390
360 PRINT : GOTO 390
370 IF TF=1 THEN PRINT TAB(15); "BUSTED" ELSE 460
380 PRINT
390 PS(CO)=PS(CO)+TP
400 CO=CO+1
410 IF CO>P THEN CO=1
420 PRINT PL$(CO); ", HIT RETURN FOR YOUR TURN"
430 A$=INKEY$:IF A$="" THEN 430
440 GOSUB 990
450 GOTO 260
460 A$="TRAP"
470 INPUT "                     DO YOU WANT TO ROLL AGAIN "; A$ : PRINT
480 IF LEFT$(A$,1)="Y" THEN 270
490 IF LEFT$(A$,1)="N" THEN 390
500 PRINT "TRY AGAIN !!"; : GOTO 460
510 '
520 '
530 '
540 REM THIS 'ROLLS' THE DICE & CHECKS FOR 'TRIPLES'
550 FOR X=1 TO 3
560 DI(X)=INT(RND(1)*6)+1
570 NEXT
580 REM CHECK FOR 'TRIPS'
590 TR$=""
600 IF DI(1)=DI(2) AND DI(2)=DI(3) THEN TR$=" ** TRIPLE **"
610 RETURN
620 '
630 '
640 '
650 REM THIS PRINTS OUT PLAYER'S SCORE
660 PRINT PL$(CO); ", YOUR ROLL WAS";
670 PRINT BL$; DI(1); BL$; DI(2); BL$; DI(3); TR$
680 PRINT : GOSUB 750
690 PRINT TAB(15); "YOUR SCORE FOR THIS TURN   "; TP
700 IF Q(CO)=0 THEN PRINT
710 RETURN
720 '
730 '
740 '
750 REM THIS COMPUTES PLAYER'S SCORE
760 IF TR$<>"" THEN 880
770 IF DI(1)=5 THEN TP=TP+50
780 IF DI(2)=5 THEN TP=TP+50
790 IF DI(3)=5 THEN TP=TP+50
800 IF DI(1)=6 THEN TP=TP+100
810 IF DI(2)=6 THEN TP=TP+100
820 IF DI(3)=6 THEN TP=TP+100
830 IF DI(1)<5 AND DI(2)<5 AND DI(3)<5 THEN TF=1 : TP=0 : RETURN
840 GOTO 920
850 '
860 '
870 '
880 REM SCORING FOR 'TRIPLES'
890 X=DI(1)*100
900 IF X<500 THEN TP=0 : TP=TP-X  : GOTO 920
910 TP=TP+X
920 IF TP<50 THEN TF=1
930 EG=PS(CO)+TP
940 IF EG>=1500 THEN GF=1 : GOTO 1260
950 RETURN
960 '
970 '
980 '
990 REM PRINT SCORES TO DATE
1000 IF GF=0 THEN PRINT "GAME SCORE"; ELSE PRINT "FINAL SCORE";
1010 FOR X=1 TO P
1020 PRINT TAB(15); PL$(X); TAB(27); PS(X)
1030 NEXT X : PRINT
1040 RETURN
1050 '
1060 '
1070 '
1080 REM 'SEED' RANDOM NUMBER GENERATOR
1090 FOR X1=1 TO LEN(PL$(X))
1100 A=A+ASC(MID$(PL$(X),X1,1))
1110 NEXT X1
1120 A=A MOD 137
1130 FOR X1=1 TO A
1140 A1=RND(1) : A1=RND(-X1)
1150 NEXT X1 : RETURN
1160 '
1170 '
1180 '
1190 REM THIS DECIDES WHO WILL GO FIRST
1200 X=INT(RND(1)*P)+1
1210 PRINT CHR$(26) : PRINT PL$(X); ", YOU WILL START THIS GAME" : PRINT : PRINT
1220 CO=X : RETURN
1230 '
1240 '
1250 '
1260 REM WIN ROUTINE
1270 PRINT CHR$(26)
1280 PRINT TAB(22); "*** WINNER ***" : PRINT : PRINT : PRINT
1290 PRINT TAB(12); PL$(CO); ", YOUR WINNING ROLL WAS   ";
1300 PRINT DI(1); DI(2); DI(3) : PRINT : PRINT : PRINT
1310 PRINT TAB(12); PL$(CO); " WINS WITH"; PS(CO)+TP; "POINTS" : PRINT : PRINT : PRINT
1320 PS(CO)=EG
1330 GOSUB 990
1340 A$="TRAP" : INPUT "ANOTHER GAME (Y OR N)"; A$
1350 IF LEFT$(A$,1)="Y" THEN RUN 90
1360 IF LEFT$(A$,1)="N" THEN PRINT CHR$(26) : RESET : END
1370 PRINT "NICE TRY  "; : GOTO 1340
1380 '
1390 '
1400 '
1410 REM INSTRUCTIONS
1420 PRINT CHR$(26)
1430 PRINT TAB(20); "***    INSTRUCTIONS    ***" : PRINT
1440 PRINT "THREE DICE ARE ROLLED, AND ARE SCORED AS FOLLOWS:" : PRINT
1450 PRINT "    EACH '6' ROLLED SCORES 100 POINTS"
1460 PRINT "    EACH '5' ROLLED SCORES  50 POINTS" : PRINT
1470 PRINT "FOR EXAMPLE: A ROLL OF '6  5  1' IS WORTH 150 POINTS - 100 POINTS"
1480 PRINT "FOR THE '6' AND 50 POINTS FOR THE '5';  (NOTHING FOR THE '1')." : PRINT
1490 PRINT "WHEN YOU ROLL 3 OF A KIND, THE SCORING IS AS FOLLOWS:" : PRINT
1500 PRINT "    THREE 1'S    - 100 POINTS"
1510 PRINT "    THREE 2'S    - 200 POINTS"
1520 PRINT "    THREE 3'S    - 300 POINTS"
1530 PRINT "    THREE 4'S    - 400 POINTS"
1540 PRINT "    THREE 5'S    + 500 POINTS"
1550 PRINT "    THREE 6'S    + 600 POINTS" : PRINT
1560 PRINT "GET THE IDEA...?" : PRINT
1570 PRINT "HIT RETURN MORE INSTRUCTIONS" : WAIT 0,1,1
1580 A$=INKEY$:IF A$="" THEN 1580
1590 PRINT "THE GAME CONSISTS OF THREE PHASES..." : PRINT
1600 PRINT TAB(12); "PHASE 1 - WHO GOES FIRST"
1610 PRINT TAB(12); "PHASE 2 - QUALIFYING (REACH 250 POINTS) PHASE"
1620 PRINT TAB(12); "PHASE 3 - WHO WINS (REACHES 1500 POINTS FIRST)" : PRINT
1630 PRINT "THE COMPUTER DECIDES WHO GOES FIRST, THEN THE COMPUTER WILL CONTINUE"
1640 PRINT "TO ROLL FOR EACH PLAYER UNTIL THAT PLAYER REACHES 250 POINTS OR UNTIL"
1650 PRINT "THAT PLAYER HAS A ROLL WITH NO '5' OR '6', AT WHICH POINT THE SCORE"
1660 PRINT "FOR THAT PLAYER IS RESET TO ZERO (UNLESS TRIPLES LESS THAN FIVE ARE"
1670 PRINT "THROWN - IN WHICH CASE THAT PLAYER'S SCORE MAY WELL GO BELOW ZERO)."
1680 PRINT "IN THIS PHASE (2) EACH PLAYER WILL EITHER REACH (OR EXCEED) 250 OR"
1690 PRINT "BE RESET TO ZERO (OR LESS). WHEN A PLAYER HAS QUALIFIED, PLAY PASSES"
1700 PRINT "TO NEXT PLAYER. AFTER QUALIFYING, COMPUTER ROLLS ONCE, IF THAT ROLL"
1710 PRINT "RESULTS IN SCORE LESS THAN 50, TURN WILL PASS TO NEXT PLAYER. IF THAT"
1720 PRINT "PLAYER SCORES 50 (OR MORE) POINTS, THEN THAT PLAYER CAN DECIDE WHETHER"
1730 PRINT "TO TAKE (AND KEEP) THE POINTS FROM THAT ROLL OR TO ROLL AGAIN IN HOPE"
1740 PRINT "OF GETTING MORE POINTS. ANY ROLL OF LESS THAN 50 POINTS WILL CANCEL"
1750 PRINT "ALL POINTS EARNED ON THAT TURN. FIRST PLAYER TO REACH 1500 WINS. IT"
1760 PRINT "IS ONLY NECESSARY TO 'QUALIFY' ONCE IN ANY GIVEN GAME, AND SCORING"
1770 PRINT "RELATED TO 'TRIPLES' IS IN EFFECT DURING ALL PHASES OF THE GAME."
1780 PRINT : PRINT "HIT RETURN TO PLAY" :
1790 A$=INKEY$:IF A$="" THEN 1790
1800 RETURN

21.BAS

10 CLS:KEY OFF
20 PRINT CHR$(26)
30 PRINT"WHAT IS YOUR LUCKY NUMBER (1 TO 25000)"
40 INPUT LN
50 IF LN<1 OR LN>25000 OR LN<>INT(LN) THEN PRINT"FOLLOW INSTRUCTIONS !":GOTO101
60 LN=LN MOD 97
70 FOR X=1 TO LN:NL=RND(1):NL=RND(X):NEXT
80 PRINT : PRINT : PRINT
90 DIM D(208),H(16),O(16),P(16,11),Q(11),S(16),X(16)
100 PRINT
110 PRINT"         ***** BLACKJACK *****"
120 PRINT
130 PRINT"INSTRUCTIONS (Y=YES; N=NO)"
140 INPUT M$
150 IF M$="Y" GOTO 170
160 IF M$<>"N" GOTO 130 ELSE GOTO 180
170 GOSUB 3730
180 PRINT CHR$(26):R=16
190 PRINT  "  HOW MANY DECKS? (1-4)";
200 INPUT N
210 IF N>0 GOTO 240
220 PRINT"    1 TO 4 DECKS ONLY!! REENTER ";
230 GOTO 200
240 IF N>4 GOTO 220
250 E=N*52
260 GOSUB 1840
270 B=1
280 GOSUB 1910
290 A=1
300 PRINT
310 G=1
320 PRINT
330 PRINT
340 PRINT
350 PRINT
360 INPUT"YOUR BET";U
370 IF U=0 GOTO 3690:IF U<0 GOSUB 1910
380 PRINT CHR$(26)
390 PRINT"YOUR BET IS $";U;"   YOUR STANDING IS $";V
400 IF U>0 GOTO 450
410 IF U=0 GOTO 3690
420 B=1
430 GOSUB 1910
440 GOTO 360
450 IF U<=500 GOTO 480
460 PRINT"  HOUSE LIMIT IS $500!! REENTER"
470 GOTO 360
480 GOSUB 2010
490 H(1)=U
500 N=Q(2)
510 PRINT"MY UP CARD";
520 GOSUB 2430
530 PRINT
540 N=P(R,1)
550 PRINT TAB(7)"YOUR 1ST CARD"
560 GOSUB 2430
570 N=P(R,2)
580 PRINT TAB(7)"YOUR 2ND CARD"
590 GOSUB 2430
600 GOSUB 2760
610 IF M<>11 GOTO 630
620 GOSUB 3580
630 IF W<>21 GOTO 720
640 PRINT"I HAVE BLACKJACK, ";
650 IF X(1)<>21 GOTO 690
660 PRINT"SO DO YOU, WE PUSH";
670 GOSUB 3490
680 GOTO 300
690 PRINT"YOU LOSE ";
700 V=V-U
710 GOTO 670
720 IF X(1)<>21 GOTO 760
730 PRINT"YOU HAVE BLACKJACK, YOU WIN!"
740 V=V+3*U/2
750 GOTO 670
760 PRINT"PLAY ";
770 IF R=1 GOTO 790
780 PRINT"FOR HAND ";G;"   ";
790 INPUT F
800 IF F>-1 GOTO 830
810 PRINT"ONLY 0-3 ARE VALID! REENTER";
820 GOTO 790
830 IF F>3 GOTO 810
840 IF F<>1 GOTO 1150
850 IF A<=E GOTO 870
860 GOSUB 2860
870 M=S(G)
880 M=M+1
890 S(G)=M
900 N=D(A)
910 P(G,M)=N
920 PRINT TAB(7)"YOUR CARD IS ";
930 GOSUB 2430
940 GOSUB 2340
950 A=A+1
960 IF N<>11 GOTO 980
970 O(G)=O(G)+1
980 X(G)=X(G)+N
990 IF X(G)<22 GOTO 760
1000 IF O(G)=0 GOTO 1040
1010 O(G)=O(G)-1
1020 X(G)=X(G)-10
1030 GOTO 990
1040 PRINT:PRINT"YOU BUSTED WITH ";X(G)
1050 X(G)=0
1060 Y=Y-1
1070 IF G<R GOTO 1100
1080 GOSUB 2990
1090 GOTO 300
1100 G=G+1
1110 N=P(G,1)
1120 PRINT"YOUR FIRST CARD FOR HAND  ";G;"  WAS  ";
1130 GOSUB 2430
1140 GOTO 760
1150 IF F<>0 GOTO 1210
1160 IF X(G)<22 GOTO 1070
1170 IF O(G)=0 GOTO 1040
1180 X(G)=X(G)-10
1190 O(G)=O(G)-1
1200 G=G+1
1210 IF F<>2 GOTO 1420
1220 IF S(G)=2 GOTO 1250
1230 PRINT"DOUBLE ON FIRST TWO CARDS ONLY!!"
1240 GOTO 760
1250 IF A<=E GOTO 1270
1260 GOSUB 2860
1270 H(G)=2*U
1280 N=D(A)
1290 P(G,3)=N
1300 A=A+1
1310 PRINTTAB(20)"YOU DRAW THE ";
1320 GOSUB 2430
1330 GOSUB 2340
1340 IF N<>11 GOTO 1360
1350 O(G)=O(G)+1
1360 X(G)=X(G)+N
1370 IF X(G)<22 GOTO 1070
1380 IF O(G)=0 GOTO 1040
1390 O(G)=O(G)-1
1400 X(G)=X(G)-10
1410 GOTO 1370
1420 N=P(G,1)
1430 Y=Y+1
1440 GOSUB 2340
1450 M=N
1460 N=P(G,2)
1470 GOSUB 2340
1480 IF M=N GOTO 1510
1490 PRINT"YOU MAY ONLY SPLIT PAIRS!!";
1500 GOTO 760
1510 R=R+1
1520 Y=Y+1
1530 P(R,1)=P(G,2)
1540 S(G)=1
1550 S(R)=1
1560 X(G)=X(G)/2
1570 X(R)=X(G)
1580 H(R)=U
1590 IF N<>11 GOTO 760
1600 IF A<=E GOTO 1620
1610 GOSUB 2860
1620 N=D(A)
1630 P(G,2)=N
1640 PRINT"1ST ACE GETS:";
1650 GOSUB 2430
1660 GOSUB 2340
1670 IF N<>11 GOTO 1690
1680 N=1
1690 X(G)=X(G)+N
1700 A=A+1
1710 IF A<=E GOTO 1740
1720 GOSUB 2860
1730 S=0
1740 N=D(A)
1750 P(R,2)=N
1760 PRINT"2ND ACE GETS:";
1770 GOSUB 2430
1780 GOSUB 2340
1790 IF N<>11 GOTO 1810
1800 N=1
1810 X(R)=X(R)+N
1820 A=A+1
1830 GOTO 1080
1840 FOR I=1 TO N
1850 J=(I-1)*52
1860 FOR K=1 TO 52
1870 D(K+J)=K
1880 NEXT K
1890 NEXT I
1900 RETURN
1910 PRINT"I'M SHUFFLING THE CARDS ",
1920 FOR I=B TO E
1930 C=RND(5)*E
1940 IF C<B GOTO 1930
1950 L=D(I)
1960 D(I)=D(C)
1970 D(C)=L
1980 NEXT I
1990 A=B
2000 RETURN
2010 FOR I=1 TO 11
2020 Q(I)=0
2030 FOR J=1 TO R
2040 P(J,I)=0
2050 NEXT J
2060 NEXT I
2070 R=1
2080 Y=1
2090 IF A+4<=E GOTO 2120
2100 B=1
2110 GOSUB 1910
2120 PRINT"DEALING"
2130 PRINT
2140 P(R,1)=D(A)
2150 Q(1)=D(A+1)
2160 P(R,2)=D(A+2)
2170 Q(2)=D(A+3)
2180 A=A+4
2190 T=2
2200 S(1)=2
2210 GOSUB 2240
2220 M=N
2230 RETURN
2240 Z=0
2250 W=0
2260 FOR I=1 TO 2
2270 N=Q(I)
2280 GOSUB 2340
2290 IF N<>11 GOTO 2310
2300 Z=Z+1
2310 W=W+N
2320 NEXT I
2330 RETURN
2340 IF N<14 GOTO 2370
2350 N=N-13
2360 GOTO 2340
2370 IF N<>1 GOTO 2400
2380 N=11
2390 RETURN
2400 IF N<11 GOTO 2420
2410 LET N=10
2420 RETURN
2430 I=0
2440 IF N<14 GOTO 2480
2450 N=N-13
2460 I=I+1
2470 GOTO 2440
2480 IF N<>1 GOTO 2510
2490 PRINT TAB(17);"ACE";
2500 GOTO 2640
2510 IF N>9 GOTO 2540
2520 PRINT TAB(18);N;
2530 GOTO 2640
2540 IF N>10 GOTO 2570
2550 PRINT TAB(17);N;
2560 GOTO 2640
2570 IF N>11 GOTO 2600
2580 PRINT TAB(16);"JACK";
2590 GOTO 2640
2600 IF N>12 GOTO 2630
2610 PRINT TAB(16);"QUEEN";
2620 GOTO 2640
2630 PRINT TAB(16);"KING";
2640 PRINT" OF ";
2650 IF I<>0 GOTO 2680
2660 PRINT"SPADES"
2670 RETURN
2680 IF I<>1 GOTO 2710
2690 PRINT"HEARTS"
2700 RETURN
2710 IF I<>2 GOTO 2740
2720 PRINT"DIAMONDS"
2730 RETURN
2740 PRINT"CLUBS"
2750 RETURN
2760 O(G)=0
2770 X(G)=0
2780 FOR I=1 TO 2
2790 N=P(G,I)
2800 GOSUB 2340
2810 X(G)=X(G)+N
2820 IF N<>11 GOTO 2840
2830 O(G)=O(G)+1
2840 NEXT I
2850 RETURN
2860 K=T
2870 FOR I=1 TO R
2880 K=K+S(I)
2890 NEXT I
2900 FOR I=1 TO K
2910 A=A-1
2920 J=D(I)
2930 D(I)=D(A)
2940 D(A)=J
2950 NEXT I
2960 B=K+1
2970 GOSUB 1910
2980 RETURN
2990 N=Q(1)
3000 PRINT"MY HOLE CARD"
3010 GOSUB 2430
3020 IF Y=0 GOTO 3280
3030 IF W<17 GOTO 3080
3040 IF W>17 GOTO 3200
3050 IF Z=0 GOTO 3260
3060 W=W-10
3070 Z=Z-1
3080 IF A<=E GOTO 3100
3090 GOSUB 2860
3100 N=D(A)
3110 A=A+1
3120 Q(T)=N
3130 PRINT"I DRAW THE";
3140 GOSUB 2430
3150 GOSUB 2340
3160 IF N<>11 GOTO 3180
3170 Z=Z+1
3180 W=W+N
3190 GOTO 3030
3200 IF W<22 GOTO 3260
3210 IF Z=0 GOTO 3250
3220 Z=Z-1
3230 W=W-10
3240 GOTO 3030
3250 PRINT"I BUSTED ";
3260 PRINT"MY TOTAL IS ";W
3270 PRINT TAB(7)"YOUR TOTAL IS ";X(G)
3280 FOR I=1 TO R
3290 PRINT"YOU ";
3300 IF X(I)<>0 GOTO 3340
3310 PRINT"LOST ";
3320 V=V-H(I)
3330 GOTO 3430
3340 IF W<22 GOTO 3380
3350 PRINT"WON ";
3360 V=V+H(I)
3370 GOTO 3430
3380 IF W<>X(I) GOTO 3410
3390 PRINT"PUSHED ON ";
3400 GOTO 3430
3410 IF W<X(I) GOTO 3350
3420 GOTO 3310
3430 IF R<>1 GOTO 3460
3440 PRINT"THE HAND"
3450 GOTO 3470
3460 PRINT"HAND ";I
3470 NEXT I
3480 PRINT
3490 PRINT"YOU ARE ";
3500 IF V<>0 GOTO 3530
3510 PRINT"EVEN"
3520 RETURN
3530 IF V>0 GOTO 3560
3540 PRINT"LOSING $";V
3550 RETURN
3560 PRINT"WINNING $";V
3570 RETURN
3580 PRINT"INSURANCE ? (Y=YES; N=NO)":INPUT M$
3590 IF M$="Y" GOTO 3610
3600 RETURN
3610 PRINT"YOUR INSURANCE BET ";
3620 IF W<>21 GOTO 3660
3630 PRINT"WINS"
3640 V=V+U
3650 RETURN
3660 PRINT"LOSES"
3670 V=V-U/2
3680 RETURN
3690 PRINT"HERE'S YOUR FINAL STANDING!"
3700 GOSUB 3490
3710 GOTO 3930
3720 PRINT
3730 PRINT"THE DEALER STANDS ON 17 OR MORE,"
3740 PRINT"BUT WILL HIT A SOFT 17."
3750 PRINT"YOU MAY SPLIT ANY PAIR."
3760 PRINT"YOU MAY DOUBLE DOWN ON FIRST TWO CARDS,"
3770 PRINT"AND GET ONLY ONE MORE CARD."
3780 PRINT
3790 PRINT"HOUSE LIMIT IS $500 ON EACH HAND......."
3800 PRINT
3810 PRINT"USE THESE CODES TO PLAY:"
3820 PRINT"   0-STAND"
3830 PRINT"   1-HIT"
3840 PRINT"   2-DOUBLE DOWN"
3850 PRINT"   3-SPLIT A PAIR"
3860 PRINT
3870 PRINT"A ZERO BET ENDS THE GAME."
3880 PRINT"A NEGATIVE BET FORCES A SHUFFLE."
3890 PRINT"TO START, HIT RETURN KEY."
3900 WAIT 0,1,1
3910 RETURN
3920 GOTO 3930
3930 END

BALL.BAS

0 WIDTH 80
10 REM BALL.BAS  2/16/82
20 REM PROGRAM BY TOM SPRINGALL
40 GOTO 110
110 T$=TIME$:X=0
120 FOR I = 2 TO 3:X=X*60+ VAL(MID$(T$,(3*I-2),2)):NEXT:RANDOMIZE X-32000
130 CLS
140 PRINT "The object of this game is to shoot a pea from the peashooter at the upper"
150 PRINT "left hand corner of the screen with the correct velocity so that it lands in"
160 PRINT "the tee at the bottom of the screen.  The bigger the velocity you enter, the"
170 PRINT "farther the pea will travel.  Correct velocities should range from 30-110.":PRINT
180 PRINT "The tee will be in a different position for each game.  A scoreboard in the"
190 PRINT "upper right of the screen will keep track of how many shots it takes in each"
200 PRINT "game to hit the tee.":PRINT
210 PRINT "Press any key to begin.
220 T$=INKEY$:IF T$="" GOTO 220 ELSE IF ASC(T$)=27 GOTO 680
230 DIM R(80),C(80):DEF SEG:POKE 108,0:KEY OFF:E=2:F=1:B=0.05:A=B*2:CLS
240 LOCATE 1,48,0:PRINT STRING$(32,220);
250 LOCATE 2,48,0:PRINT CHR$(221);SPACE$(30);CHR$(222);
260 LOCATE 3,48,0:PRINT CHR$(221);" TOTAL    GAMES WON IN";SPACE$(8);CHR$(222);
270 LOCATE 4,48,0:PRINT CHR$(221);" GAMES  1  2  3  4  5 >5  AVE ";CHR$(222);
280 LOCATE 5,48,0:PRINT CHR$(221);SPACE$(30);CHR$(222);
290 LOCATE 6,48,0:PRINT CHR$(221);SPACE$(30);CHR$(222);
300 LOCATE 7,48,0:PRINT STRING$(32,223);
310 DIM GMS(7)
320 P=19+CINT(58*RND):CNT=0:GOSUB 640
330 LOCATE 1,1,0:PRINT STRING$(2,220);:LOCATE 3,1,0:PRINT STRING$(2,223);
340 LOCATE 25,P-2,0: PRINT "--";CHR$(157);"--";
350 LOCATE 2,1,0:PRINT"o";:CNT=CNT+1:GMS(7)=GMS(7)+1
360 IF CNT>6 THEN H=6 ELSE H=CNT
370 LOCATE 6,51+H*3,0:PRINT"   ^";
380 T$=INKEY$:IF T$<>"" THEN IF ASC(T$)=27 GOTO 680 ELSE 380
390 LOCATE 24,1,1:PRINT SPACE$(30);:LOCATE 24,1,1:INPUT;"VELOCITY";V
400 IF V<1 THEN BEEP:GOTO 390
410 V=V*B:E=2:F=1
420 FOR I = 1 TO 80
430 R(I)=2+CINT(A*I*I):C(I)=2+CINT(V*I)
440 IF C(I)>79 OR R(I)>24 GOTO 460
450 NEXT I
460 I=I-1:IF C(I+1)>79 OR R(I)=24 GOTO 490
470 T=CINT(SQR(24*V*V/A))
480 IF T<80 THEN R(I)=24:C(I)=T
490 FOR J=1 TO I
500 LOCATE E,F,0:PRINT " ";:LOCATE R(J),C(J),0:PRINT "o";:E=R(J):F=C(J)
510 FOR K=1 TO 100:NEXT K
520 NEXT J
530 IF R(I)=24 AND C(I)=P GOTO 560
540 COLOR 7,0
550 LOCATE E,F,0:PRINT " ";:GOTO 330
560 BEEP:GMS(H)=GMS(H)+1:GMS(0)=GMS(0)+1:GOSUB 640
570 LOCATE 24,1,1:PRINT "NEW GAME? (Y/N)";
580 T$=INKEY$:IF T$="" GOTO 580
590 IF T$="N" OR T$="n" OR T$=CHR$(27) GOTO 680
600 LOCATE 24,1,0:PRINT SPACE$(79);
610 LOCATE 25,1,0:PRINT SPACE$(79);
620 LOCATE 6,52,0:PRINT SPACE$(27)
630 GOTO 320
640 LOCATE 5,50,0:PRINT USING " ### ";GMS(0);
650 PRINT USING "###";GMS(1),GMS(2),GMS(3),GMS(4),GMS(5),GMS(6);
660 IF GMS(0)=0 THEN RETURN
670 PRINT USING "###.#";GMS(7)/GMS(0);:RETURN
680 CLS:KEY ON:END

BANNER.BAS

10 CLS:KEY OFF
20 REM PROGRAM BY TOM KELLY TO PLOT WORDS ON TELETYPE
30 REM *************************10/24/75*****************************
40 DIM M(60,6),P(15)
50 PRINT TAB(30) "BANNER PRINTER"
60 PRINT "SIZE  (1-7)";
70 INPUT Z
80 PRINT "WHAT'S YOUR MESSAGE";
90 INPUT B$
100 PRINT
110 PRINT "METHOD (1 OR 2)";
120 INPUT A
130 IF A<>2 THEN 160
140 PRINT " INPUT 2 OF YOUR CHARACTERS";
150 INPUT C$
160 PRINT:A$="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789<>=#+-*/\()[].,;:!"
170 A$=A$+"?&$%":REM "&" GIVES QUOTE
180 FOR N=1 TO 60: FOR N1=1 TO 6:READ M(N,N1):NEXT N1,N
190 FOR I=1 TO 9
200 LET T(I)=2^(I)-1
210 NEXT I
220 FOR I=1 TO LEN(B$)
230 FOR J=1 TO 60
240 IF MID$(A$,J,1)<>MID$(B$,I,1) THEN 270
250 F=J
260 GOTO 280
270 NEXT J
280 FOR K=1 TO 6
290 LET X=M(F,K)
300 IF X=0 THEN 570
310 FOR Q=1 TO 9
320 IF T(Q)<X THEN 350
330 LET Y=Q
340 GOTO 360
350 NEXT Q
360 FOR L=1 TO 9
370 LET P(L)=X-2*INT(X/2)
380 LET X=INT(X/2)
390 NEXT L
400 FOR M=1 TO Z
410 FOR O=1 TO Y
420 IF P(O)=0 THEN 500
430 FOR Z1=1 TO Z
440 ON A GOTO 450,470
450 LPRINT MID$(B$,I,1)MID$(B$,I,1);
460 GOTO 480
470 LPRINT C$;
480 NEXT Z1
490 GOTO 530
500 FOR Z2=1 TO Z
510 LPRINT "  ";
520 NEXT Z2
530 NEXT O
540 LPRINT
550 NEXT M
560 GOTO 590
570 LPRINT
580 LPRINT
590 NEXT K
600 NEXT I
610 LPRINT :LPRINT
620 DATA 511,264,264,264,511,0,511,273,273,273,238,0
630 DATA 511,257,257,257,387,0,511,257,257,257,254,0
640 DATA 511,273,273,273,257,0,511,272,272,256,256,0
650 DATA 511,257,273,273,415,0,511,16,16,16,511,0
660 DATA 0,257,511,257,0,0,3,1,1,1,511,0
670 DATA 511,16,40,68,387,0,511,1,1,1,1,0
680 DATA 511,96,24,96,511,0,511,96,24,6,511,0
690 DATA 511,257,257,257,511,0,511,272,272,272,496,0
700 DATA 511,257,261,259,511,0,511,272,272,272,239,0
710 DATA 499,273,273,273,415,0,256,256,511,256,256,0
720 DATA 510,1,1,1,510,0,496,12,3,12,496,0
730 DATA 511,12,48,12,511,0,387,204,48,204,387,0
740 DATA 384,96,31,96,384,0,259,269,313,353,385,0,0,0,0,0,0,0
750 DATA 511,263,313,449,511,0,0,129,511,1,0,0
760 DATA 391,265,281,273,225,0,387,273,273,273,495,0
770 DATA 496,16,16,16,511,0,499,273,273,273,270,0
780 DATA 511,273,273,273,415,0,384,263,280,352,384,0
790 DATA 238,273,273,273,238,0,499,273,273,273,511,0
800 DATA 16,40,40,68,68,0,68,68,40,40,16,0
810 DATA 40,40,40,40,40,0,40,124,40,124,40,0
820 DATA 16,16,124,16,16,0,16,16,16,16,16,0,68,40,254,40,68,0
830 DATA 3,14,56,224,384,0,384,224,56,14,3,0
840 DATA 0,56,198,387,257,0,257,387,198,56,0,0
850 DATA 0,511,257,257,0,0,0,257,257,511,0,0
860 DATA 0,0,1,1,0,0,0,0,2,3,0,0
870 DATA 0,0,130,131,0,0,0,0,130,130,0,0
880 DATA 0,0,509,509,0,0,128,256,269,285,224,0
890 DATA 0,448,0,448,0,0,0,0,448,0,0,0
900 DATA 499,273,511,273,415,0,387,398,312,483,487,0
910 WAIT 0,1,1:END

BIORYTHM.BAS

5      REM * BIORHYTHM PROGRAM *
10 WIDTH "lpt1:",132
20      REM FROM INTERFACE AGE, AUGUST, 1976
30      REM EDITED & TESTED BY JIM PETERSEN ON 89/27/78
40      REM %% PROGRAM COMPUTES HOW CERTAIN PERSON WILL FEEL PHYSICALLY,
50      REM    EMOTIONALLY AND INTELLECTUALLY ON ANY DAY %%
60      DIM A(12),M$(12)
70      DATA 0,31,59,90,120,151,181,212,243,273,304,334
80      FOR I=1 TO 12:READ A(I):NEXT
90      PI=3.14159
100     CLS:REM Screen clear character
110     PRINT:PRINT
120     PRINT "This program will print out your personal BIO-RHYTHM"
130     PRINT "analysis for any number of days you select."
140     PRINT "Dates should be entered in numerical form with the"
150     PRINT "MONTH, DAY and YEAR separated by commas. I. E."
160     PRINT "July 4, 1976 would be entered as 7,4,76."
170     PRINT
180     INPUT "How many days do you want plotted";S
190     IF S<=0 THEN 180
200     PRINT "What is the date at which you would like the";S;"day"
210     INPUT "analysis to start";M,D,Y
220     S=S-1
230     M=INT(M):D=INT(D):Y=INT(Y)
240     INPUT "What is the date of your birth";MB,DB,YB
250     MB=INT(MB):DB=INT(DB):YB=INT(YB)
260     INPUT "What is your name";A$
280     INPUT "Do you want it on hard copy (Y/N)";HC$
290     IF HC$="Y" OR HC$="y" THEN P=-1
300     DEF FNI(X)=INT(20*SIN(2*PI*X/33)+0.5)
310     DEF FNE(X)=INT(20*SIN(2*PI*X/28)+0.5)
320     DEF FNP(X)=INT(20*SIN(2*PI*X/23)+0.5)
330     T=INT(D+365.25*Y+A(M)+0.01*M-0.03)
340     TB=INT(DB+365.25*YB+A(MB)+0.01*MB-0.03)
350     X=T-TB
360     V=INT((40-LEN(A$))/2)
370     RB=TB-1-INT((TB-1)/7)*7
380     DATA MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
390     FOR I=0 TO 6:READ DAY$(I):NEXT
400     DATA MON,TUE,WED,THU,FRI,SAT,SUN
410     FOR I=0 TO 6:READ D$(I):NEXT
420     DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST
430     PRINT:PRINT
440     DATA SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER
450     FOR I=1 TO 12:READ M$(I):NEXT
455     IF P THEN LPRINT SPC(2):FOR I=1 TO V:LPRINT "*";:NEXT
460     PRINT SPC(2):FOR I=1 TO V:PRINT "*";:NEXT
470     COLOR 8,7:PRINT "BIO-RHYTHM ANALYSIS FOR ";A$;:COLOR 7,0
475     IF P THEN LPRINT "BIO-RHYTHM ANALYSIS FOR ";A$;
480     PRINT "*";:IF POS(0)<66 THEN 480
485     IF P THEN LPRINT "*************************";
490     PRINT:PRINT
495     IF P THEN LPRINT:LPRINT
500     R=T-1-INT((T-1)/7)*7
510     LE=21+LEN(DAY$(R))+LEN(M$(M))+LEN(STR$(D))+LEN(RIGHT$(STR$(Y),2))
520     V2=INT((64-LE)/2)
530     PRINT SPC(2):FOR I=1 TO V2:PRINT "*";:NEXT
535     IF P THEN LPRINT SPC(2):FOR I=1 TO V2:LPRINT "*";:NEXT
540     COLOR 8,7:PRINT "STARTING DATE: ";DAY$(R);", ";M$(M);STR$(D);", 19";
545     IF P THEN LPRINT "STARTING DATE: ";DAY$(R);", ";M$(M);STR$(D);", 19";
550     PRINT RIGHT$(STR$(Y),2);:COLOR 7,0
555     IF P THEN LPRINT RIGHT$(STR$(Y),2);
560     PRINT "*";:IF POS(0)<66 THEN 560
565     IF P THEN LPRINT "*****************";
570     PRINT:PRINT
575     IF P THEN LPRINT:LPRINT
580     LL=LEN(DAY$(RB))+LEN(M$(MB))+LEN(STR$(DB))+LEN(RIGHT$(STR$(YB),2))
590     LB=LL+18
600     VB=INT((64-LB)/2)
610     PRINT SPC(2):FOR I=1 TO VB:PRINT "*";:NEXT
615     IF P THEN LPRINT SPC(2):FOR I=1 TO VB:PRINT "*";:NEXT
620     COLOR 8,7:PRINT "BIRTH DATE: ";DAY$(RB);", ";M$(MB);STR$(DB);", 19";
625     IF P THEN LPRINT "*************** BIRTH DATE: ";DAY$(RB);", ";M$(MB);STR$(DB);", 19";
630     PRINT RIGHT$(STR$(YB),2);:COLOR 7,0
635     IF P THEN LPRINT RIGHT$(STR$(YB),2);
640     PRINT "*";:IF POS(0)<66 THEN 640
645     IF P THEN LPRINT "****************"
650     PRINT:PRINT:PRINT
655     IF P THEN LPRINT:LPRINT:LPRINT
660     PRINT TAB(20);"DOWN",TAB(39);"CRITICAL",TAB(62);"UP"
665     IF P THEN LPRINT TAB(20);"DOWN",TAB(39);"CRITICAL",TAB(62);"UP"
670     PRINT D$(R);D;M$(M);
675     IF P THEN LPRINT D$(R);D;M$(M);
680     F(0)=42:F$(0)="*"
690     F(1)=42+FNI(X):F$(1)="I"
700     F(2)=42+FNE(X):F$(2)="E"
710     F(3)=42+FNP(X):F$(3)="P"
720     FOR I=0 TO 2
730     FOR J=I+1 TO 3
740     IF F(I)<F(J) THEN 790
750     IF F(I)=F(J) THEN F(I)=0:F$(I)="":F$(J)="X":GOTO 790
760     Q=F(I):Q$=F$(I)
770     F(I)=F(J):F$(I)=F$(J)
780     F(J)=Q:F$(J)=Q$
790     NEXT J:NEXT I
800     FOR I=0 TO 3
810     PRINT TAB(F(I));F$(I);
815     IF P THEN LPRINT TAB(F(I));F$(I);
820     NEXT
830     PRINT:X=X+0.5:IF P THEN LPRINT
835     IF INT(X)<>X THEN 680
840     IF Z=S THEN 940
850     R=R+1:IF R=7 THEN R=0
860     D=D+1:IF M=4 OR M=6 OR M=9 OR M=11 THEN L=30:GOTO 900
870     IF M=2 AND Y/4=INT(Y/4) THEN L=29:GOTO 900
880     IF M=2 THEN L=28:GOTO 900
890     L=31
900     IF D>L THEN D=D-L:M=M+1:GOTO 920
910     PRINT D$(R);D;:IF P THEN LPRINT D$(R);D;:Z=Z+1:GOTO 680
920     IF M=13 THEN M=1:Z=Z+1:GOTO 670
930     Z=Z+1:IF D=1 THEN GOTO 670 ELSE GOTO 680
940     PRINT:PRINT
945     IF P THEN LPRINT:LPRINT
950     IF P THEN LPRINT CHR$(12)
960     INPUT "Do you want another Biorhythm";A$:IF LEFT$(A$,1)="Y" OR LEFT$(A$,1)="y" THEN CLEAR 2000:P=0:GOTO 60
970     END

BLKFRI3.BAS

10 CLS:KEY OFF
20 REM   AUTHOR: ROBERT W. BAKER
30 REM   MODIFIED FOR BASIC-E (BARF) BY R S MASON   9-25-77
40 REM   MODIFIED FOR MICROSOFT DISK BASIC BY ZOSO
50 REM   THIS PROGRAM REQUIRES CP/M WITH 26K OF FREE MEMORY (OVERHEAD)
60 REM
70 REM   THIS GAME IS WRITTEN TO PROVIDE A REALISTIC MODEL OF THE
80 REM   ACTUAL STOCK MARKET RATHER THAN A COMPLETELY RANDOMIZED
90 REM   HAPPENING OF EVENTS.
100 REM
110 REM
111 PRINT TAB(30)"BLACK FRIDAY #3"
120 PRINT CHR$(26) : WIDTH  80
130 PRINT "WHAT IS YOUR LUCKY NUMBER (1 TO 25000)"
140 INPUT A
150 IF A<1 OR A>25000 OR A<>INT(A) THEN PRINT "DO IT RIGHT !" : GOTO 130
160 PRINT CHR$(26)
170 PRINT "STAND BY FOR A FEW MOMENTS"
180 A=A MOD 97
190 FOR X=1 TO A : X1=RND(1) : X1=RND(X) : NEXT X
200 DIM A(36,12),U(11,9),E(11,9),K(10),T(10),F(9),M(4,12),X(4)
210 FOR I=1 TO 36: FOR J=1 TO 12: READ A(I,J): NEXT J: NEXT I
220 FOR I=1 TO 11: FOR J=1 TO 9: READ U(I,J): NEXT J: NEXT I
230 FOR I=1 TO 11: FOR J=1 TO 9: READ E(I,J): NEXT J: NEXT I
240 FOR N=1 TO 10
250 READ K(N)
260 NEXT N
270 V$="HIB XP SP ODMRD SO BT KA ZE BPL"
280 Y$="$5  $1  NONE$4  $7  NONENONE$2  $6  $3  "
290 REM
300 REM   DATA TO SIMULATE REAL LIFE STOCK MARKET
310 REM
320 DATA 1,0,0,0,0,0,0,0,0,5,0,0
330 DATA 0,0,0,0,0,0,-25,0,0,0,0,0
340 DATA 1,0,0,0,0,0,0,15,0,0,0,0
350 DATA 0,0,0,0,-5,0,0,0,0,0,0,0
360 DATA 1,0,0,0,0,0,0,0,0,5,0,0
370 DATA 0,0,0,0,0,0,5,0,0,0,0,0
380 DATA 1,0,0,0,0,0,10,0,0,0,0,0
390 DATA 0,0,10,0,0,0,0,0,0,0,0,0
400 DATA 1,0,0,0,0,0,15,0,0,0,0,0
410 DATA 0,0,-5,0,0,0,0,0,0,0,0,0
420 DATA 1,8,5,5,0,0,0,7,0,0,0,0
430 DATA 0,0,0,0,0,0,0,0,-25,0,0,0
440 DATA 1,0,0,0,0,0,0,0,10,0,0,0
450 DATA 0,0,-10,0,0,0,0,0,0,0,0,0
460 DATA 1,0,5,0,0,0,0,0,0,0,0,0
470 DATA 0,10,0,0,0,0,0,0,0,0,1,0
480 DATA 1,0,0,0,0,17,0,0,0,0,0,0
490 DATA 0,0,0,0,0,-15,0,0,0,0,0,0
500 DATA 1,0,0,0,0,0,0,0,10,0,0,0
510 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
520 DATA 1,0,0,0,0,0,0,10,0,0,0,0
530 DATA 0,0,0,0,0,0,0,-15,0,0,0,0
540 DATA 1,0,0,-8,0,8,0,0,5,0,0,0
550 DATA 0,-10,0,0,0,0,0,0,0,0,0,0
560 DATA 1,8,0,0,0,0,0,0,0,0,0,0
570 DATA 0,0,0,0,0,0,0,-10,0,0,0,0
580 DATA 1,0,0,3,0,0,0,0,0,4,0,0
590 DATA 0,-8,0,0,0,0,0,0,0,0,0,0
600 DATA 1,0,0,0,5,0,0,0,0,0,0,0
610 DATA 0,0,0,0,0,-10,0,0,0,0,0,0
620 DATA 1,0,0,0,0,0,0,10,0,0,0,0
630 DATA 0,-8,-5,0,0,0,0,-7,0,0,0,0
640 DATA 1,10,0,0,0,0,0,0,0,0,0,0
650 DATA 0,0,0,0,0,0,0,0,0,-14,0,0
660 DATA 1,-10,0,0,0,0,0,0,0,0,0,0
670 DATA 0,0,0,0,0,0,-5,0,0,0,0,0
680 DATA -2,-10,7,-9,-2,-9,-7,-16,-4
690 DATA 26,16,25,8,-14,21,14,-4,17
700 DATA 18,23,11,12,46,18,-5,34,15
710 DATA 23,28,-2,11,56,19,30,29,14
720 DATA 20,15,15,7,-20,15,13,-10,12
730 DATA 17,21,13,-2,37,23,23,19,14
740 DATA 19,24,17,9,-5,26,13,-7,15
750 DATA 11,18,14,11,67,15,22,18,13
760 DATA 13,31,1,14,-11,18,18,-14,10
770 DATA 14,-8,19,1,-9,25,-10,13,19
780 DATA 24,24,23,20,51,27,38,33,18
790 DATA 12,14,13,10,10,20,21,25,8
800 DATA 7,-6,10,-10,30,6,-19,22,-2
810 DATA 9,10,7,-5,-20,12,21,18,7
820 DATA 7,8,5,-6,-40,3,16,-14,4
830 DATA 8,6,4,-4,40,8,4,-12,3
840 DATA 6,4,3,3,-15,5,8,-8,5
850 DATA 5,7,-1,-3,45,6,-10,10,4
860 DATA -2,6,-3,-8,-20,7,10,14,6
870 DATA 11,11,-5,-7,30,10,-11,-18,-4
880 DATA -5,13,-8,6,25,4,18,-22,-4
890 DATA -8,-10,-10,-15,-20,-20,-23,-25,-7
900 DATA 5,1,0,4,7,0,0,2,6,3
910 REM
920 REM   SECURITY NAMES
930 REM
940 A$="HIGHWAY IMPROVEMENT BONDS"
950 B$="X-PANDO CORPORATION"
960 C$="SEASIDE PROPERTIES INC."
970 D$="OLD DOG MUTUAL FUND"
980 E$="RUBBLE DEVELOPMENT"
990 F$="SLIPPERY OIL COMPANY"
1000 G$="BUMPY TRANSPORT CO."
1010 H$="KRASH AUTO COMPANY"
1020 I$="ZAP ELECTRONICS   "
1030 J$="BLINKEY POWER & LIGHT CO."
1040 REM
1050 REM
1060 PRINT "WANT INSTRUCTIONS";
1070 INPUT R$
1080 IF LEFT$(R$,1)="N" THEN 1320
1090 IF LEFT$(R$,1)<>"Y" THEN 1070
1100 PRINT CHR$(26)
1110 PRINT "THE MAIN OBJECT OF BLACK FRIDAY IS TO SHREWDLY INVEST $5000"
1120 PRINT"IN THE GAME'S 10 SECURITIES, BUYING AND SELLING EACH YEAR FOR"
1130 PRINT"A MAXIMUM OF 10 YEARS (ROUNDS) IN AN ATTEMPT TO BECOME"
1140 PRINT"THE WEALTHIEST PLAYER."
1150 PRINT
1160 PRINT"EACH YEAR ALL PLAYERS WILL RECEIVE DIVIDENDS ON EVERY PAYING"
1170 PRINT"STOCK WHICH IS WORTH $50 OR MORE."
1180 PRINT
1190 PRINT"IF THE VALUE OF ANY STOCK FALLS TO 0,THAT STOCK GOES BANKRUPT"
1200 PRINT"AND ALL SHARES ARE SURRENDERED.THE VALUE OF THE STOCK IS THEN"
1210 PRINT"ESTABLISHED AT $100. IF THE VALUE OF ANY STOCK REACHES $150,"
1220 PRINT"THERE WILL BE A STOCK SPLIT."
1230 PRINT
1240 PRINT"A TABLE WILL BE PRINTED EACH YEAR GIVING THE CHANGE IN VALUE"
1250 PRINT"OF EACH STOCK, THE PRESENT PRICE, AND THE NUMBER OF SHARES"
1260 PRINT"EACH PLAYER OWNS OF EVERY STOCK. ALSO, ANY DIVIDENDS RECEIVED"
1270 PRINT"FOR THE YEAR WILL BE SHOWN ALONG WITH EACH PLAYERS TOTAL CASH"
1280 PRINT
1290 PRINT "PRESS SPACE BAR TO PLAY"
1300 WAIT 0,1,1
1310 PRINT CHR$(26)
1320 PRINT CHR$(26)
1330 PRINT"AVAILABLE SECURITIES, ABBREVIATION, DIVIDENDS PER SHARE"
1340 PRINT
1350 FOR N=1 TO 10
1360 GOSUB 3190
1370 PRINT S$,MID$(V$,3*N-2,3),MID$(Y$,4*N-3,4)
1380 NEXT N
1390 PRINT
1400 INPUT "NUMBER OF PLAYERS (1 TO 4)="; P
1410 IF P>4 THEN 1450
1420 IF P<=0 THEN 1450
1430 FOR I=1 TO 4: FOR J=1 TO 12: M(I,J)=0: NEXT J: NEXT I
1440 INPUT "NUMBER OF YEARS (3 TO 10)="; S
1450 IF S<3 THEN 1510
1460 IF S>10 THEN 1510
1470 PRINT CHR$(26)
1480 FOR I=1 TO 9: F(I)=0: NEXT I
1490 FOR N=1 TO P
1500 M(N,1)=5000
1510 NEXT N
1520 FOR I=1 TO 10: T(I)=100: NEXT I
1530 Y=0
1540 REM
1550 REM
1560 REM   FIND MARKET CHANGES FOR NEXT ROUND,SEE IF BULL OR BEAR MARKET
1570 REM
1580 D=INT(RND(1)*11+1)
1590 C=INT(RND(1)*36+1)
1600 IF A(C,12)=1 THEN 1590
1610 A(C,12)=1
1620 FOR N=2 TO 10
1630 GOSUB 3190
1640 IF A(C,1)=1 THEN 1690
1650 W$="BEAR"
1660 F(N-1)=A(C,N)+E(D,N-1)
1670 T(N)=T(N)+F(N-1)
1680 GOTO 1750
1690 F(N-1)=A(C,N)+U(D,N-1)
1700 W$="BULL"
1710 T(N)=T(N)+F(N-1)
1720 REM
1730 REM   CHECK FOR STOCK SPLITS
1740 REM
1750 IF T(N)<150 THEN 1870
1760 PRINT "*** "+S$+" STOCKS SPLIT ***"
1770 IF T(N)/2=INT(T(N)/2) THEN 1800
1780 T(N)=INT(T(N)/2)+1
1790 GOTO 1810
1800 T(N)=T(N)/2
1810 FOR J=1 TO P
1820 M(J,N+1)=M(J,N+1)*2
1830 NEXT J
1840 REM
1850 REM   CHECK FOR BANKRUPT STOCKS
1860 REM
1870 IF T(N)>0 THEN 1940
1880 T(N)=100
1890 FOR J=1 TO P
1900 M(J,N+1)=0
1910 NEXT J
1920 PRINT "*** "+S$+" WENT BANKRUPT ***"
1930 PRINT "THESE STOCKS MUST BE SURRENDERED"
1940 NEXT N
1950 Y=Y+1
1960 REM
1970 REM   ADD EACH PLAYERS DIVIDENDS TO TOTAL CASH
1980 REM
1990 FOR N=1 TO P
2000 M(N,12)=0
2010 FOR J=1 TO 10
2020 IF T(J)<50 THEN 2040
2030 M(N,12)=M(N,12)+K(J)*M(N,J+1)
2040 NEXT J
2050 IF A(C,11)=0 THEN 2080
2060 M(N,12)=M(N,12)+M(N,3)*2
2070 PRINT "*** X-PANDO CORP. PAYS $2 DIVIDENDS PER SHARE ***"
2080 M(N,1)=M(N,1)+M(N,12)
2090 NEXT N
2100 REM
2110 REM
2120 REM   PRINT WHAT HAPPENED & CURRENT VALUES
2130 REM
2140 PRINT CHR$(26) : PRINT "*** YEAR ";Y;"*** "+W$+" MARKET ***"
2150 PRINT TAB(23);"PLAYER HOLDINGS    YEAR ";Y
2160 PRINT TAB(6);" +/-$    PRICE";
2170 FOR N=1 TO P
2180 PRINT TAB(18+8*N);N;
2190 NEXT N
2200 PRINT
2210 PRINT LEFT$(V$,3);TAB(8);"0";TAB(16);"100";
2220 FOR N=1 TO P
2230 PRINT TAB(18+8*N);M(N,2);
2240 NEXT N
2250 PRINT
2260 FOR N=1 TO 9
2270 PRINT MID$(V$,3*N+1,3);TAB(7);F(N);TAB(15);T(N+1);
2280 FOR J=1 TO P
2290 PRINT TAB(18+8*J);M(J,N+2);
2300 NEXT J
2310 PRINT
2320 NEXT N
2330 PRINT
2340 PRINT "DIVIDENDS FOR YEAR";
2350 FOR N=1 TO P
2360 PRINT TAB(18+8*N);M(N,12);
2370 NEXT N
2380 PRINT
2390 PRINT "NEW CASH TOTAL";
2400 FOR N=1 TO P
2410 PRINT TAB(18+8*N);M(N,1);
2420 NEXT N
2430 PRINT
2440 PRINT "NEW NET WORTH ";
2450 GOSUB 3400
2460 FOR N=1 TO P
2470 PRINT TAB(18+8*N);X(N);
2480 NEXT N
2490 IF Y=S THEN 2930
2500 REM
2510 REM
2520 REM   CHECK IF ANYONE WANTS TO SELL OR BUY ANYTHING
2530 REM
2540 FOR N=1 TO P
2550 PRINT
2560 PRINT "***  PLAYER ";N;" ***"
2570 PRINT "YOU NOW HAVE $";M(N,1)
2580 FOR J=1 TO 10
2590 IF M(N,J+1)<>0 THEN 2620
2600 NEXT J
2610 GOTO 2730
2620 INPUT "WANT TO SELL"; R$
2630 IF R$="N" THEN 2730
2640 IF R$<>"Y" THEN 2760
2650 GOSUB 3080
2660 INPUT "NUMBER OF SHARES"; R
2670 IF R<=M(N,J+1) THEN 2700
2680 PRINT "*** YOU ONLY HAVE ";M(N,J+1);" SHARES ***"
2690 GOTO 2660
2700 M(N,J+1)=M(N,J+1)-R
2710 M(N,1)=M(N,1)+R*T(J)
2720 GOTO 2570
2730 FOR J=1 TO 10
2740 IF M(N,1)>T(J) THEN 2770
2750 NEXT J
2760 GOTO 2890
2770 INPUT "WANT TO BUY"; R$
2780 IF R$="N" THEN 2890
2790 IF R$<>"Y" THEN 2950
2800 GOSUB 3080
2810 INPUT "NUMBER OF SHARES"; R
2820 IF R*T(J)<=M(N,1) THEN 2850
2830 PRINT "ONLY MONEY ENOUGH FOR ";INT(M(N,1)/T(J));"SHARES"
2840 GOTO 2810
2850 M(N,J+1)=M(N,J+1)+R
2860 M(N,1)=M(N,1)-R*T(J)
2870 PRINT "YOU NOW HAVE $";M(N,1)
2880 GOTO 2730
2890 NEXT N
2900 GOTO 1580
2910 REM
2920 REM
2930 REM   CLOSING OUT AT END OF GAME - PRINT FINAL TOTALS
2940 REM
2950 PRINT
2960 PRINT "*** FINAL TOTALS ARE:"
2970 PRINT "PLAYER          TOTAL"
2980 FOR N=1 TO P
2990 FOR J=1 TO 10
3000 M(N,1)=M(N,1)+T(J)*M(N,J+1)
3010 NEXT J
3020 PRINT
3030 PRINT N,M(N,1)
3040 NEXT N
3050 GOTO 3480
3060 REM
3070 REM
3080 REM   SUBROUTINE TO LOOK UP STOCK NAMES FOR BUY & SELL
3090 REM
3100 PRINT "NAME OF STOCK";
3110 INPUT R$
3120 FOR J=1 TO 10
3130 IF LEFT$(R$,2)=MID$(V$,3*J-2,2) THEN 3170
3140 IF LEFT$(R$,2)=MID$(V$,3*J-1,2) THEN 3170
3150 NEXT J
3160 GOTO 3100
3170 RETURN
3180 REM
3190 ON N GOTO 3200,3220,3240,3260,3280,3300,3320,3340,3360,3380
3200 S$=A$
3210 RETURN
3220 S$=B$
3230 RETURN
3240 S$=C$
3250 RETURN
3260 S$=D$
3270 RETURN
3280 S$=E$
3290 RETURN
3300 S$=F$
3310 RETURN
3320 S$=G$
3330 RETURN
3340 S$=H$
3350 RETURN
3360 S$=I$
3370 RETURN
3380 S$=J$
3390 RETURN
3400 FOR N=1 TO P
3410 W=0
3420 FOR J=1 TO 10
3430 W=W+T(J)*M(N,J+1)
3440 NEXT J
3450 X(N)=W+M(N,1)
3460 NEXT N
3470 RETURN
3480 RESET

CHASE.BAS

1 CLS:KEY OFF
10 PRINT "THIS IS THE GAME OF CHASE"
20 PRINT "WANT INSTRUCTIONS";
30 INPUT C$
40 IF LEFT$(C$,1)="N" THEN 140
50 IF LEFT$(C$,1)<>"Y" THEN 20
60 PRINT "YOU ARE '*' IN A HIGH VOLTAGE MAZE WITH 5"
70 PRINT "SECURITY MACHINES '+' TRYING TO DESTROY YOU"
80 PRINT "YOU MUST MANEUVER THE SECURITY MACHINES INTO"
90 PRINT "THE MAZE 'X' TO SURVIVE.  GOOD LUCK !!!"
100 PRINT "MOVES ARE 7,8,9"
110 PRINT "          4,5,6"
120 PRINT "          1,2,3   0 TO END THE GAME"
130 PRINT
140 DIM A(10,20),E(21),F(21)
150 LET G=0
160 FOR B=1 TO 10
170 FOR C=1 TO 20
180 LET A(B,C)=0
190 IF B=1 THEN 240
200 IF B=10 THEN 240
210 IF C=1 THEN 240
220 IF C=20 THEN 240
230 GOTO 250
240 LET A(B,C)=1
250 NEXT C
260 NEXT B
270 FOR D=1 TO 21
280 LET B=INT(RND(1)*8)+2
290 LET C=INT(RND(1)*18)+2
300 IF A(B,C)<>0 THEN 280
310 LET A(B,C)=1
320 IF D<6 THEN 340
330 GOTO 350
340 LET A(B,C)=2
350 IF D=6 THEN 370
360 GOTO 380
370 LET A(B,C)=3
380 LET E(D)=B
390 LET F(D)=C
400 NEXT D
410 FOR B=1 TO 10
420 FOR C=1 TO 20
430 IF A(B,C)<>0 THEN 460
440 PRINT " ";
450 GOTO 540
460 IF A(B,C)<>1 THEN 490
470 PRINT "X";
480 GOTO 540
490 IF A(B,C)<>2 THEN 520
500 PRINT "+";
510 GOTO 540
520 IF A(B,C)<>3 THEN 540
530 PRINT "*";
540 NEXT C
550 PRINT
560 NEXT B
570 LET B=E(6)
580 LET C=F(6)
590 LET A(B,C)=0
600 INPUT Y
610 ON Y+1 GOTO 950,640,640,640,650,690,650,620,620,620
620 LET B=B-1
630 GOTO 650
640 LET B=B+1
650 ON Y GOTO 660,690,680,660,690,680,660,690,680
660 LET C=C-1
670 GOTO 690
680 LET C=C+1
690 IF A(B,C)=1 THEN 970
700 IF A(B,C)=2 THEN 990
710 LET A(B,C)=3
720 LET E(6)=B
730 LET F(6)=C
740 FOR D=1 TO 5
750 IF A(E(D),F(D))<>2 THEN 930
760 LET A(E(D),F(D))=0
770 IF E(D)>=B THEN 800
780 LET E(D)=E(D)+1
790 GOTO 820
800 IF E(D)=B THEN 820
810 LET E(D)=E(D)-1
820 IF F(D)>=C THEN 850
830 LET F(D)=F(D)+1
840 GOTO 870
850 IF F(D)=C THEN 870
860 LET F(D)=F(D)-1
870 IF A(E(D),F(D))=3 THEN 990
880 IF A(E(D),F(D))=0 THEN 910
890 LET G=G+1
900 GOTO 920
910 LET A(E(D),F(D))=2
920 IF G=5 THEN 1010
930 NEXT D
940 GOTO 410
950 PRINT "SORRY TO SEE YOU QUIT"
960 GOTO 1020
970 PRINT "ZAP!!! YOU TOUCHED THE FENCE !!!!!"
980 GOTO 1020
990 PRINT "** YOU HAVE BEEN DESTROYED BY A LUCKY COMPUTER **"
1000 GOTO 1020
1010 PRINT "YOU ARE LUCKY **YOU DESTROYED ALL THE ENEMY**"
1020 PRINT "WANT TO PLAY AGAIN";
1030 INPUT C$
1040 IF LEFT$(C$,1)="Y" THEN 150
1050 IF LEFT$(C$,1)<>"N" THEN 1020
1060 PRINT "HOPE YOU DON'T FEEL FENCED IN."
1070 PRINT "TRY AGAIN SOMETIME"
1080 END

DECISION.BAS

10 CLS:KEY OFF
20 REM EXECUTIVE DECISION MAKER
30 REM WRITTEN BY W.A.BURTON
40 REM INTENDED FOR CRT'S AT HIGH BAUD RATES
50 CLEAR : WIDTH 80 : PRINT CHR$(26)
60 DIM Q$(80) : XX=36
70 PRINT TAB(15); "*** EXECUTIVE DECISION MAKER ***"
80 PRINT : PRINT : PRINT
90 PRINT "WHAT IS THE DECISION THAT YOU WOULD LIKE ME TO MAKE FOR YOU"
100 PRINT "TYPE IN YOUR QUESTION WHICH CAN BE ANSWERED 'YES OR NO'; AND"
110 PRINT "KEEP IT SHORTER THAN ONE LINE (INCLUDING SPACES)."
120 PRINT : PRINT : PRINT : PRINT
130 INPUT Q$
140 PRINT : PRINT
150 REM THIS IS A 'PSEUDO-RANDOMIZE' ROUTINE
160 FOR X=1 TO LEN(Q$)
170 Z$=MID$(Q$,X,1)
180 Z=ASC(Z$)
190 Y=Y+Z
200 NEXT X
210 Y=Y MOD 97
220 FOR X=1 TO Y
230 Z=RND(1) : Z1=RND(Y)
240 NEXT X
250 A$="<*>" : AL$="YES :" : AR$=": NO"
260 PRINT "THE '<*>' IS THE BOUNCING BALL OF FATE..."
270 PRINT "HIT SPACE BAR TO ANSWER YOUR QUESTION"
280 PRINT : PRINT : PRINT
290 PRINT TAB(10); AL$; TAB(XX); A$; TAB(61); AR$
300 WAIT 0,1,1
310 PRINT TAB(10); AL$; TAB(XX); A$; TAB(61); AR$
320 W=RND(1)
330 IF W<0.5 THEN XX=XX+2 ELSE XX=XX-2
340 IF XX<16 THEN PRINT CHR$(26) : GOTO 380
350 IF XX>=59 THEN PRINT CHR$(26) : GOTO 410
360 CX=CX+1
370 GOTO 310
380 GOSUB 440
390 PRINT "YES"
400 GOTO 490
410 GOSUB 440
420 PRINT "NO"
430 GOTO 490
440 PRINT : PRINT
450 PRINT "YOUR QUESTION :"
460 PRINT Q$ : PRINT
470 PRINT "MY ANSWER (AFTER"; CX; "AGONIZING STEPS) :"
480 RETURN
490 PRINT : PRINT
500 PRINT "DO YOU NEED HELP IN MAKING ANOTHER DECISION (Y OR N)"
510 INPUT Q$
520 IF LEFT$(Q$,1)="Y" THEN RUN
530 PRINT CHR$(26) : END

ENTEP.BAS

10 REM Copyright 1977 by Marc Singer
20 LPRINT  "                                        **"
30 LPRINT  "                                       ####"
40 LPRINT  "                                       ####"
50 LPRINT  "                                       ####"
60 LPRINT  "                                       ####"
70 LPRINT  "                                       ####"
80 LPRINT  "                                       ####"
90 LPRINT  "                                       ####"
100 LPRINT "                                       ####"
110 LPRINT "                                       ####"
120 LPRINT "                                       ####"
130 LPRINT "                                       ####"
140 LPRINT "                                       ####"
150 LPRINT "               ##                      ####"
160 LPRINT "              ####                     ####"
170 LPRINT "             ######                    ####"
180 LPRINT "             ######                    ####"
190 LPRINT "             ######                    ####"
200 LPRINT "             ######                    ####"
210 LPRINT "             ######>>>>>>>>>>>>>>>>>>>>####"
220 LPRINT "             ######>>>>>>>>>>>>>>>>>>>>####"
230 LPRINT "             ######                    ####"
240 LPRINT "            #######                    ####"
250 LPRINT "           ########                    ####"
260 LPRINT "          #########                    ####"
270 LPRINT "         ##########                      ##"
280 LPRINT "         ##########                       #"
290 LPRINT "         ##########"
300 LPRINT "         ##########"
310 LPRINT "         ############"
320 LPRINT "         ##############"
330 LPRINT "         #################"
340 LPRINT "         ###################"
350 LPRINT "         #####################"
360 LPRINT "         ##########  ###########"
370 LPRINT "         ##########    ###########  A"
380 LPRINT "         ##########      ##########(#)"
390 LPRINT "         ##########        #######/##I"
400 LPRINT "         ##########          ####/###I"
410 LPRINT "         ##########            #/####I"
420 LPRINT "          ########             /#####I"
430 LPRINT "            ####              /######I"
440 LPRINT "             ##              /#######I"
450 LPRINT "             ^              /########I"
460 LPRINT "            -!-            ###########"
470 LPRINT "          -  !  -        ###############"
480 LPRINT "        -    !    -     <###############>"
490 LPRINT "                       / ###############"
500 LPRINT "                      /    ###########"
510 LPRINT "                     /      `########I"
520 LPRINT "                    /        `#######I"
530 LPRINT "                   /          `######I"
540 LPRINT "                  /            `#####I"
550 LPRINT "                 /              `####I"
560 LPRINT "                /                `###I"
570 LPRINT "               /                  `##I"
580 LPRINT "              /                    (#)"
590 LPRINT "             /                      V"
600 LPRINT " #          /"
610 LPRINT " #         /"
620 LPRINT " # ##     /"
630 LPRINT " # ##    /"
640 LPRINT "  `##   /"
650 LPRINT "   ##  /"
660 LPRINT "   ## /"
670 LPRINT "    #/"
680 LPRINT "    `"
700 LPRINT "     O"
710 LPRINT "FIRE PHASER BANKS!!"
720 LPRINT "PHASERS FIRED."
730 END

FILES44.TXT

Disk No:   44
Program Title:  Game Series No 7
PC-SIG version: 1.1

A collection of vastly different programs, which includes both graphic
and non-graphic games, text adventures, and printer art.  We also have a
game of chance for the gambler in you, a biorythm generator, and a
banner-printing program.

Usage:  Entertainment.

Special Requirements:  BASIC and some programs require color graphics.

How to Start:  Type GO (press enter).

Suggested Registration:  None.

File Descriptions:

1500     BAS  BASIC program
21       BAS  A game similar to Blackjack
BALL     BAS  Shoot the ball at the target
BANNER   BAS  Produces large letters on printer
BIORYTHM BAS  Print your biorythms
BLKFRI3  BAS  Black Friday on the stockmarket
CHASE    BAS  Maze game
DECISION BAS  Executive decision maker
ENTEP    BAS  Produces Starship Enterprise on printer
HANOI    BAS  Towers of Hanoi
HANOI    DOC  Documentation for HANOI.BAS
HOBBIT   BAS  Adventure text game
HORSE    BAS  BASIC horse program
KING     BAS  Manage your kingdom
LINES    BAS  Draws pattern of lines on screen
MSQUARE  BAS  Builds magic squares
ROCKET   BAS  Rocket launch
ROULETTE BAS  Roulette game
SLOT     BAS  Slotmachine
STARTREK BAS  45K version of popular game
TREKINFO DOC  Documentation for STARTREK.BAS above
USALIST  BAS  Draws map of USA on color display

PC-SIG
1030D East Duane Avenue
Sunnyvale  Ca. 94086
(408) 730-9291
(c) Copyright 1984,85,86,87,88,89 PC-SIG, Inc.


GO.TXT

╔═════════════════════════════════════════════════════════════════════════╗
║               <<<<  Disk No: 44  Game Series No 7  >>>>                 ║
╠═════════════════════════════════════════════════════════════════════════╣
║                                                                         ║
║  How to Start: To read DOC files, enter TYPE filename.ext and           ║
║  press <ENTER>.  For instructions on running BASIC programs,            ║
║  please refer to your computer manual concerning BASIC language         ║
║  files.                                                                 ║
║                                                                         ║
╚═════════════════════════════════════════════════════════════════════════╝

HANOI.BAS

1  '
2  '***********************************
3  '*                                 *
4  '*   TOWERS OF HANOI (Recursive)   *
5  '*       @                         *
6  '*      @@@                        *
7  '*     @@@@@                       *
8  '*    @@@@@@@                      *
9  '*   @@@@@@@@@     |        |      *
10 '*  Modified for IBM PC by         *
11 '*  Marty Smith  SOURCE ST2259     *
12 '*  HOU.,TEX COMPUSERVE 72155,1214 *
13 '***********************************
14 REM BASIC recursive routine from COMPUTE, July 1982, p. 58.                         Article by Earl Wuchter.
15 REM This program is best displayed on an 80-col RGB color monitor, although     it will also work on the Monochrome Display. I have both boards and this        program first shifts to Color and defines KEY 7 as a toggle between boards.
16 REM The program first asks which board to use. If you are using one board in    your system, you might want to delete line 31, which controls this function.
17 REM I am using a SONY Profeel monitor in RGB mode, which displays 8 colors.     --Lines 76 and 1010 draw disks in 7 colors. For 15 change MOD 7 to MOD 14.      --Line 33 shifts display to the right. OUT 980,2:OUT 981,90 is standard.
18 REM Line 40 defines the character to draw disks, which is CHR$(1). Try other    values for different effects.
19 REM If you use the color board with an RF modulator or a composite monitor,     you may get no color on your display. This is due to the 80-col mode, which     is very demanding of TV's. Stick with the monochrome display or--
20 REM   you might try using mode COLOR 1,0 and using LINE ,BF or DRAW type        statements for the disks, but this would mean a lot of work.
21 REM Remove the ' in lines 130 and 250 to display the depth of recursion         during the routine.
22 REM Integers are used for speed. This limits the routine to 15 disks, or        32767 moves. Using single precision you could solve for 21 disks in 7 days,     or 2,097,151 moves! Here disks are limited to 13 to fit the 80-col. display.
23 REM I have coded this routine into MMS FORTH, which has just been released     for IBM PC. I had to put a delay routine in because the display was TOO rapid!
30 DEFINT A-Z
31 KEY 7,"GOSUB 65000"+CHR$(13):INPUT "Use Color or Monochrome board (C / M)";C$:IF LEFT$(C$,1)="c" OR LEFT$(C$,1)="C" THEN TOG=2:GOSUB 65010 ELSE IF LEFT$(C$,1)="m" OR LEFT$(C$,1)="M" THEN TOG=1:GOSUB 65010 ELSE GOTO 31
33 OUT 980,2:OUT 981,87: ' 87 is for shifting horizontal screen position
36 COLOR 7,0,0
40 Y$=STRING$(30,1):EZ$=SPACE$(26): ' 1 is character used to make disks
45 DIM N(22),F(22),T(22),D$(21),HERE(13,1),HEIGHT(3)
50 T$=STRING$(4,254)+CHR$(219):P$=T$+T$+T$+T$+T$
60 Z=0:CLS:COLOR 4,7:LOCATE 1,26:PRINT "TOWERS OF HANOI":COLOR 6,0:PRINT :INPUT "Number of Disks (1 TO 13) ";N(1)
70 IF N(1) < 1 OR N(1) > 13 THEN 60
71 PRINTER$="":PRINT "Print results on Printer? (Y to Print) ";
72 PRINTER$=INKEY$:IF PRINTER$="Y" OR PRINTER$="y" THEN LPRINT TAB(19)"TOWERS OF HANOI FOR"N(1)"DISKS"
73 IF PRINTER$="" THEN 72
74 COLOR 7,0:C=CSRLIN:LOCATE 1,1:PRINT SPACE$(25):FOR X=2 TO C:PRINT SPACE$(80);:NEXT
75 FOR X=1 TO N(1):D$(X)=STRING$(26,32):MID$(D$(X),14-X,X*2-1)=Y$:NEXT:IF TOG=1 THEN GOTO 77
76 TOP=20-N(1):FOR X=1 TO N(1):HERE(X,0)=TOP+X:HERE(X,1)=1:LOCATE TOP+X,1:COLOR X MOD 7 + 1,0:PRINT D$(X);:NEXT:LOCATE 1,26:COLOR 4,7:PRINT "TOWERS OF HANOI FOR"N(1)"DISKS":LOCATE 21,1:COLOR 1,0:PRINT STRING$(80,176);:COLOR 7,0:GOTO 79
77 TOP=20-N(1):FOR X=1 TO N(1):HERE(X,0)=TOP+X:HERE(X,1)=1:LOCATE TOP+X,1:PRINT D$(X);:NEXT:LOCATE 1,26:COLOR 4,7:PRINT "TOWERS OF HANOI FOR"N(1)"DISKS":LOCATE 21,1:COLOR 1,0:PRINT STRING$(80,176);:COLOR 7,0
79 HEIGHT(1)=TOP:HEIGHT(2)=20:HEIGHT(3)=20
80 F(1)=1
90 T(1)=3
100 GOSUB 120
110 LOCATE 21,1:PRINT "DONE IN"Z"MOVES"
115 PRINT "DO AGAIN? ( Y/N )";
116 AGAIN$=INKEY$:IF AGAIN$="y" OR AGAIN$="Y" THEN 60 ELSE IF AGAIN$="n" OR AGAIN$="N" THEN END
117 GOTO 116
120 G=G+1
125 REM Remove ' in Line 130 and 250 to show depth of recursion
130 'LOCATE 3,26+G:PRINT SPACE$(22):LOCATE 3,26:COLOR 1,0:PRINT LEFT$(P$,G):COLOR 7,0
140 IF N(G)=0 THEN 240
150 N(G+1)=N(G)-1
160 F(G+1)=F(G)
170 T(G+1)=6-F(G)-T(G)
180 GOSUB 120
190 Z=Z+1:IF PRINTER$="y" OR P$="Y" THEN LPRINT TAB(19);USING"##   DISK No. # FROM # TO #";Z,N(G),F(G),T(G)
195 GOSUB 1000
200 N(G+1)=N(G)-1
210 F(G+1)=6-F(G)-T(G)
220 T(G+1)=T(G)
230 GOSUB 120
240 G=G-1
250 'LOCATE 3,26+G:PRINT SPACE$(22):LOCATE 3,26:COLOR 1,0:PRINT LEFT$(P$,G):COLOR 7,0
260 RETURN
1000 IF T(G)=1 THEN COL=1 ELSE IF T(G)=2 THEN COL=27 ELSE IF T(G)=3 THEN COL=54
1005 IF TOG=1 THEN GOTO 1015
1010 LOCATE HERE(N(G),0),HERE(N(G),1):COLOR 7,0:PRINT EZ$;:HEIGHT(F(G))=HEIGHT(F(G))+1:LOCATE HEIGHT(T(G)),COL:COLOR N(G) MOD 7 + 1,0:PRINT D$(N(G));:COLOR 7,0:GOTO 1020
1015 LOCATE HERE(N(G),0),HERE(N(G),1):PRINT EZ$;:HEIGHT(F(G))=HEIGHT(F(G))+1:LOCATE HEIGHT(T(G)),COL:PRINT D$(N(G));
1020 HERE(N(G),0)=HEIGHT(T(G)):HERE(N(G),1)=COL:HEIGHT(T(G))=HEIGHT(T(G))-1
1100 RETURN
65000 IF TOG=1 THEN TOG=2 ELSE TOG=1
65010 ON TOG GOSUB 65080, 65030
65020 RETURN
65030 REM toggle color graphics
65050 WIDTH 80: DEF SEG=0: A=PEEK(&H410): POKE &H410,(A AND &HCF) OR &H20
65060 SCREEN 1: SCREEN 0:LOCATE ,,1,6,7: SCREEN 0,1,0,0:WIDTH 80
65070 RETURN
65080 REM toggle monochrome display
65100 DEF SEG=0: A=PEEK(&H410): POKE &H410,A OR &H30
65110 WIDTH 80: LOCATE ,,1,12,13:SCREEN 0,0,0
65120 RETURN

HANOI.DOC

THIS PROGRAM IS FOR THE MONOCHROME OR 80 COL COLOR
MONITOR. IT IS A KIND OF GAME PROGRAM AND DEMONSTRATES
SOME OF THE COMPUTERS ABILITIES...


HOBBIT.BAS

1 'COPYRIGHT (C) CLOAD 1979
2 'K. WILLIAMS, 3250 VERMONT SW, GRANDVILLE, MI 49418
5 RANDOMIZE(348)
8 DEFINT A-Z
10 DIM H(9,9),M(9,9),A(7),D(14),AC(7),Z(4)
20 A$="RUBY RED  NORN STONEPALE PEARLOPAL EYE  BLUE FLAMEPALANTIR  SILMARILL     "
30 D$="SCHLOCK   YNGVI     GOLLUM    MARDUK    LOKI      AZATOTH   DAGON     FENRIS    ABRACAX   SAURON    CTHULHU   SATAN    "
40 CLS:PRINT"H O B B I T"
45 FOR Q=1 TO 3000:NEXT Q
50 CLS
100 INPUT"DO YOU WANT INSTRUCTIONS";O$
110 IF O$="YES" OR O$="Y" THEN 2220
120 INPUT"WHAT RATING (1-NOVICE 9-EXPERT)";N
130 N=INT(ABS(N)):IF N<1 OR N>9 THEN 120
140 FOR X=1 TO 9:FOR Y=1 TO 9:H(X,Y)=5:M(X,Y)=1:NEXT Y:NEXT X
190 REM PUT WARPS
200 B=20+RND*N
210 FOR Q=1 TO B
220 X=RND*9 :Y=RND*9 :R=RND*9 :S=RND*9
230 IF X=SANDY=R THEN 220
240 H(X,Y)=R*10+S:NEXT Q
260 REM PUT DEMONS
270 B=N+3
280 FOR Q=1 TO B
290 GOSUB 2440:H(X,Y)=-Q:D(Q)=1
300 NEXT Q
310 REM PUT AMULETS
320 FOR Q=1 TO 7
330 GOSUB 2440:H(X,Y)=Q*100:A(Q)=1
340 AC(Q)=3:NEXT Q
350 REM PUT RUNESTAFF
360 GOSUB 2440:H(X,Y)=-1*(RND*(N+3)):D(13)=1:Z(3)=X:Z(4)=Y
370 REM PUT ORB
380 GOSUB 2440:H(X,Y)=10*(RND*9)+(RND*9):Z(1)=X:Z(2)=Y:D(14)=1
390 REM PUT CURSES
400 FOR Q=1 TO 3:C(Q,1)=1:C(Q,2)=10:C(Q,3)=10:NEXT Q
430 IF N<7 THEN 470
440 FOR Q=1 TO N-6:GOSUB 2440:C(Q,2)=X:C(Q,3)=Y:NEXT Q
470 REM PUT FLARES AND ORACLE
480 GOSUB 2440:H(X,Y)=4:GOSUB 2440:H(X,Y)=2
490 REM PUT HOBBIT
500 GOSUB 2440:K=X:L=Y:PRINT"ALL RIGHT FUR-FOOT "
510 P=125+RND(12-N)
511 T=1:G=0:W=0:F=10:GOTO 1530
520 IF T>P THEN 2120
530 T=T+1
540 IF N<7 OR D(14)=0 THEN 650
550 IF C(1,1)=1 THEN 570
560 T=T+1
570 IF C(2,1)=1 THEN 590
580 G=G-(RND*5)
590 IF C(3,1)=1 OR A(5)=0 OR D(14)=0 THEN 610
595 PRINT:PRINT"'YOU ARE UNDER MY POWER NOW...'":FOR Q=1 TO 500:NEXT C
600 ON (RND*4) GOTO 810,830,850,870
610 FOR Q=1 TO 3
620 IF C(Q,2)<>K OR C(Q,3)<>L THEN 640
630 C(Q,1)=0
640 NEXT Q
650 PRINT:INPUT"YOUR MOVE";O$
651 CLS
660 IF O$="WAIT" OR O$="WT" THEN 1530
670 IF O$="NORTH" OR O$="N" THEN 810
680 IF O$="SOUTH" OR O$="S" THEN 830
690 IF O$="EAST" OR O$="E" THEN 850
700 IF O$="WEST" OR O$="W" THEN 870
710 IF O$="MAP" OR O$="M" THEN 890
720 IF O$="FLARE" OR O$="F" THEN 1110
730 IF O$="KILL" OR O$="K" THEN 2030
740 IF O$="LAMP" OR O$="L" THEN 1200
750 IF O$="QUIT" OR O$="Q" THEN 1460
760 IF O$="TELEPORT" OR O$="T" THEN 1420
770 PRINT"EVEN A STUPID HOBBIT LIKE YOU"
780 PRINT"CAN DO BETTER THAN THAT"
790 GOTO 520
800 REM NORTH
810 K=K-1
811 GOSUB 2460
812 GOTO 1530
820 REM SOUTH
830 K=K+1
831 GOTO 811
840 REM EAST
850 L=L+1
851 GOTO 811
860 REM WEST
870 L=L-1
871 GOTO 811
880 REM MAP
890 CLS:PRINT "        1     2     3     4     5     6     7     8     9"
891 PRINT "    +---+-----+-----+-----+-----+-----+-----+-----+-----+"
892 FOR X=1 TO 9
893 PRINT X;"-| ";
900 FOR Y=1 TO 9
910 IF M(X,Y)>99 THEN 930
920 PRINT " ";
930 PRINT M(X,Y);" ";
940 IF M(X,Y)>9 OR M(X,Y)<-9 THEN 960
950 PRINT" ";
960 NEXT Y
970 PRINT
980 NEXT X:PRINT
985 PRINT"YOU ARE AT (";L;",";K;")":GOSUB 986:GOTO 520
986 IF G>-1 THEN 990
987 G=0
990 PRINT"YOU HAVE";G;"GEMS"
1000 PRINT"AND THESE AMULETS:"
1010 FOR Q=1 TO 7
1020 IF A(Q)=1 THEN 1040
1030 PRINT" ";MID$(A$,Q*10-9,10),
1040 NEXT Q
1050 IF D(13)=1 THEN 1070
1060 PRINT"  RUNESTAFF",
1070 IF D(14)=1 THEN 1090
1080 PRINT"  ORB OF ZOT";
1090 RETURN
1100 REM FLARE
1110 IF F>0 THEN 1140
1120 PRINT"EVEN A SCATTER-BRAINED HOBBIT LIKE YOU"
1130 PRINT"SHOULD KNOW WHEN HE IS OUT OF FLARES":GOTO 520
1140 F=F-1:X=K:Y=L
1150 FOR Q=-1 TO 1:FOR QQ=-1 TO 1:K=Q+X:L=QQ+Y
1151 GOSUB 2460
1159 M(K,L)=H(K,L)
1160 IF M(K,L)>99 THEN 1170:PRINT" ";
1170 PRINT M(K,L);"  ";:IF M(K,L)>9 OR M(K,L)<0 THEN 1180:PRINT " ";
1180 NEXT QQ:PRINT:NEXT Q:K=X:L=Y:GOTO 520
1190 REM LAMP
1200 INPUT"WHICH DIRECTION DO YOU SHINE THE LAMP";O$:X=K:Y=L
1210 IF O$<>"NORTH" AND O$<>"N" THEN 1220
1211 Q=1:GOTO 1250
1220 IF O$<>"SOUTH" AND O$<>"S" THEN 1230
1221 Q=2:GOTO 1250
1230 IF O$<>"EAST" AND O$<>"E" THEN 1240
1231 Q=3:GOTO 1250
1240 IF O$<>"WEST" AND O$<>"W" THEN 770
1241 Q=4
1250 PRINT"THE MAGIC LAMP SHINES AND AT ";
1251 ON Q GOTO 1260,1270,1280,1290
1260 K=K-1:GOTO 1300
1270 K=K+1:GOTO 1300
1280 L=L+1:GOTO 1300
1290 L=L-1
1300 GOSUB 2460
1301 PRINT"(";L;",";K;") YOU SEE ";:M(K,L)=H(K,L)
1310 IF M(K,L)<0 THEN 1380
1320 IF M(K,L)>0 THEN 1330
1321 PRINT"AN EMPTY ROOM":GOTO 1365
1330 IF M(K,L)>2 THEN 1340
1331 PRINT"THE ORACLE":GOTO 1365
1340 IF M(K,L)>4 THEN 1350
1341 PRINT"THE SPARE FLARES":GOTO 1365
1350 IF M(K,L)>5 THEN 1360
1351 PRINT"GEMS":GOTO 1365
1360 IF M(K,L)>99 THEN 1370
1361 PRINT"A WARP"
1365 K=X:L=Y:GOTO 520
1370 PRINT"THE ";MID$(A$,(M(K,L)/100)*10-9,10):GOTO 1365
1380 PRINT MID$(D$,-M(K,L)*10-9,10)
1385 IF K=Z(3) AND L=Z(4) THEN 1365
1390 PRINT"AND HE IS SO ANGRY HE COMES AFTER YOU"
1400 H(X,Y)=H(K,L):M(X,Y)=M(K,L):M(K,L)=0:H(K,L)=0:K=X:L=Y:GOTO 1530
1410 REM TELEPORT
1420 IF D(13)=0 THEN 1440
1421 PRINT"LAME-BRAIN HOBBIT MUST BE SUICIDAL"
1430 PRINT"TO TRY AND TELEPORT WITHOUT THE RUNESTAFF":GOTO 520
1440 INPUT"X-COORD ";L:IF L<0 OR L>9 THEN 1440
1441 INPUT"Y-COORD ";K:IF K<0 OR K>9 THEN 1441
1450 FOR Q=1 TO 7:A(Q)=1:NEXT Q:G=0:M(K,L)=H(K,L):GOTO 1530
1460 REM QUIT
1470 INPUT "DID YOU REALLY WANT TO QUIT";O$:IF O$="YES" OR O$="Y" THEN W=1:GOTO 1481
1480 PRINT"THEN DON'T SAY YOU DO":GOTO 520
1481 PRINT:IF D(14)=0 AND W=1 THEN PRINT"WELL, LITTLE HOBBIT, YOU WON THIS ONE" ELSE PRINT "TOO BAD YOU DIDN'T WIN, HOBBIT"
1482 PRINT:GOSUB 986
1483 PRINT:PRINT"AND YOU KILLED THESE DEMONS:":Q=0
1484 Q=Q+1:IF D(Q)=0 THEN PRINT MID$(D$,Q*10-9,10),
1485 IF Q<N+3 THEN 1484
1486 PRINT
1490 INPUT"DO YOU WANT TO PLAY AGAIN";O$
1491 IF O$<>"YES" AND O$<>"Y" THEN 1510
1500 PRINT"SOME HOBBITS NEVER LEARN":GOTO 100
1510 PRINT"MAYBE DUMB HOBBIT NOT SO DUMB AFTER ALL"
1520 GOTO 9999
1530 PRINT"YOU ARE AT (";L;",";K;")":M(K,L)=H(K,L)
1540 IF M(K,L)<0 THEN 1850
1550 IF M(K,L)=0 THEN 1650
1560 IF M(K,L)=2 THEN 1660
1570 IF M(K,L)=4 THEN 1630
1580 IF M(K,L)=5 THEN 1620
1590 IF M(K,L)<100 THEN 1790
1600 PRINT"WHERE YOU FIND ";MID$(A$,M(K,L)/10-9,10):A(M(K,L)/100)=0:GOTO 1640
1620 Q=(RND*5):H(K,L)=0:M(K,L)=0:G=G+Q:IF G>=0 THEN 1622
1621 G=Q
1622 PRINT"HERE YOU FIND";Q;"GEMS"
1623 PRINT"YOU NOW HAVE";G;"GEMS":GOTO 520
1630 F=F+10:PRINT"HERE YOU FIND THE SPARE FLARES"
1640 H(K,L)=0:M(K,L)=0:GOTO 520
1650 PRINT"LOTS OF HOBBIT TRACKS IN THE DUST":GOTO 520
1660 PRINT"YOU ARE IN THE PRESENCE OF THE ORACLE"
1670 IF A(4)=1 THEN 1690
1680 PRINT"THE OPAL EYE COMPELS IT TO ANSWER A QUESTION":GOTO 1720
1690 IF G>19 THEN 1700
1691 PRINT"BUT YOU ARE TOO POOR TO ASK ANYTHING":GOTO 520
1700 INPUT"WILL YOU SPEND 20 GEMS FOR 1 QUESTION";O$
1710 IF O$<>"YES" AND O$<>"Y" THEN 550 ELSE G=G-20
1720 PRINT"WHAT WOULD YOU KNOW THE LOCATION OF":X=0:Y=0
1730 INPUT"(EX: TO FIND THE OPAL EYE TYPE 400)";Q
1740 FOR R=1 TO 9:FOR S=1 TO 9:PRINT"MUMBLE ";:IF H(R,S)<>Q THEN 1760
1750 IF Q<>0 THEN M(R,S)=H(R,S):X=R:Y=S:Q=0
1760 NEXT S:NEXT R:PRINT:PRINT
1770 IF X<>0 THEN 1780 ELSE PRINT"EVEN THE ORACLE DOES NOT KNOW WHERE THAT IS":GOTO 550
1780 PRINT"THAT WHICH YOU DESIRE WILL BE FOUND AT (";Y;",";X;")":GOTO 550
1790 IF K<>Z(1) OR L<>Z(2) THEN 1830
1800 IF O$<>"TELEPORT" AND O$<>"T" THEN 670
1810 PRINT"OH WOW!!":PRINT"LUCKY HOBBIT NOW HAS THE MIGHTY ORB OF ZOT!"
1820 H(K,L)=0:M(K,L)=0:D(14)=0:GOTO 520
1830 Q=INT(M(K,L)/10):K=M(K,L)-(Q*10):L=Q
1831 G=G-(RND*5):IF G>-1 THEN 1530 ELSE G=0:GOTO 1530
1840 REM DEMON
1850 IF K<>Z(3) OR L<>Z(4) THEN 1870
1860 PRINT"BOLD HOBBIT THIEF NOW HAS THE RUNESTAFF":H(K,L)=0:M(K,L)=0:D(13)=0:GOTO 520
1870 M(K,L)=H(K,L):IF M(K,L)>-1 THEN 1530
1871 PRINT"UH OH - YOU JUST RAN INTO ";MID$(D$,ABS(M(K,L))*10-9,10):Q=0
1880 Q=Q+1:IF A(Q)=0 THEN 2010
1881 IF Q<7 THEN 1880
1890 INPUT"HOW MUCH OF A BRIBE DO YOU OFFER HIM";B:PRINT
1900 IF B>0 THEN 1930
1901 PRINT"NORMALLY ";MID$(D$,-M(K,L)*10-9,10);" WOULD EAT YOU,"
1910 PRINT"BUT HE IS AFRAID THAT YOU ARE SICK OR SOMETHING"
1920 PRINT"SO TEARS YOU INTO SHREDS INSTEAD":GOTO 1481
1930 IF B=INT(B) THEN 1960
1940 PRINT MID$(D$,-M(K,L)*10-9,10);" DOESN'T UNDERSTAND DECIMALS,"
1950 PRINT"SO HE EATS CONFUSING LITTLE FUR-FOOT":GOTO 1481
1960 IF B<=G THEN 1990
1970 PRINT MID$(D$,-M(K,L)*10-9,10);" DOESN'T LIKE HOBBITS WHO OFFER MORE GEMS"
1980 PRINT"THAN THEY HAVE, SO HE EATS YOU":GOTO 1481
1990 G=G-B:IF B>(RND*(-M(K,L))) THEN PRINT"HE TAKES YOUR BRIBE":GOTO 550
1991 PRINT"THAT WASN'T ENOUGH, SO HE EATS YOU":GOTO 1481
2010 PRINT"BUT THE ";MID$(A$,Q*10-9,10);" PROTECTS YOU":GOTO 520
2020 REM KILL
2030 IF M(K,L)<0 THEN 2040
2031 PRINT"YOU HAVE TO FIND A DEMON TO KILL IT":GOTO 520
2040 PRINT"WHICH AMULET DO YOU ATTACK WITH"
2050 INPUT"(EX: OPAL EYE = 400)";Q:IF Q>700 THEN 2050
2051 Q=Q/100:IF A(Q)=0 THEN 2053
2052 PRINT"YOU DON'T POSSESS THAT ONE, STUPID!":GOTO 520
2053 IF AC(Q)>0 THEN 2055
2054 PRINT "THE ";MID$(A$,Q*10-9,10);" IS RECHARGING":GOTO 520
2055 AC(Q)=AC(Q)-1
2060 REM
2070 PRINT"THE ";MID$(A$,Q*10-9,10);" ATTACKS AND ";MID$(D$,-M(K,L)*10-9,10);
2080 IF (RND*Q)+3>(RND*-M(K,L)) THEN 2090
2081 PRINT" IS STAGGERED BUT NOT DEAD":GOTO 520
2090 PRINT" DIES":B=(RND*50):D(-M(K,L))=0:G=G+B:M(K,L)=0:H(K,L)=0
2100 PRINT"AND HERE IS HIS HOARD OF";B;"GEMS":GOTO 520
2110 REM WIZBACK
2120 IF W>0 THEN 2150
2121 PRINT"OH NO!!!"
2130 PRINT"THE WIZARD HAS RETURNED": IF D(14)=1 THEN 2170
2140 PRINT"BUT THE ORB OF ZOT PROTECTS YOU - FOR NOW":W=RND(9):GOTO 650
2150 W=W-1:IF W<>0 THEN 650 ELSE PRINT "SOME HOBBITS KNOW WHEN TO QUIT"
2160 PRINT "YOU DIDN'T."
2170 PRINT "WHAT A DELICIOUS LOOKING TOAD YOU MAKE":Q=0
2180 Q=Q+1
2181 IF D(Q)=1 THEN 2190
2182 IF Q=12 THEN 2200
2183 GOTO 2180
2190 PRINT"AND YOU GET FED TO ";MID$(D$,Q*10-9,10):GOTO 1481
2200 PRINT"AND YOU GET STEPPED ON BY THE WIZARD"
2210 PRINT"    S Q U I S H  ! !":GOTO1481
2220 PRINT"IN THIS GAME YOU BECOME A HOBBIT THIEF"
2222 PRINT"TRYING TO STEAL THE ORB OF ZOT FROM"
2224 PRINT"THE CASTLE OF THE EVIL WIZARD."
2226 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2228 PRINT"THE CASTLE IS A (9 X 9) MATRIX FILLED"
2230 PRINT"WITH MANY THINGS.  AMONG THESE"
2232 PRINT"THINGS (FOLLOWED BY THEIR NUMERIC REPRESENTATION"
2234 PRINT"ON THE MAP) ARE:"
2236 PRINT"GEMS (5), WARPS (11 THRU 99), SPARE FLARES (4)"
2238 PRINT"DEMONS (-1 THRU -12), AN ORACLE (2), AND"
2240 PRINT"AMULETS (100 THRU 700)."
2242 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2244 PRINT"ALSO HIDDEN IN THE CASTLE ARE THE RUNESTAFF"
2246 PRINT"AND THE ORB OF ZOT.  THE ORB IS DISGUISED "
2248 PRINT"AS A WARP AND THE ONLY WAY TO GET IT IS"
2250 PRINT"TO TELEPORT INTO ITS ROOM DIRECTLY."
2252 PRINT"IF YOU TRY TO MOVE INTO ITS ROOM YOU WILL"
2254 PRINT"GO PAST IT IN THE SAME DIRECTION."
2256 PRINT"TO TELEPORT YOU MUST USE THE RUNESTAFF"
2258 PRINT"WHICH IS DISGUISED AS A DEMON. BE CAREFUL"
2260 PRINT"WHEN YOU TELEPORT, HOWEVER, BECAUSE YOU LOSE"
2262 PRINT"ALL YOUR AMULETS AND GEMS (NOTE: YOU MAY ALSO"
2263 PRINT"DROP SOME GEMS EACH TIME YOU MOVE)."
2264 INPUT"HIT ENTER TO CONTINUE ";O$:CLS
2266 PRINT"FIND THE ORB AS QUICKLY AS YOU CAN BECAUSE"
2268 PRINT"THE WIZARD WILL RETURN SHORTLY AND ONLY THE"
2270 PRINT"ORB CAN PREVENT HIM FROM DOING TERRIBLE THINGS"
2272 PRINT"TO YOU."
2280 REM
2290 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2291 PRINT"THE LEGAL MOVES ARE:"
2300 PRINT"NORTH OR N"
2310 PRINT"SOUTH OR S"
2320 PRINT"EAST  OR E"
2330 PRINT"WEST OR W"
2340 PRINT"WAIT OR WT"
2350 PRINT"MAP OR M"
2360 PRINT"FLARE OR F"
2370 PRINT"LAMP OR L"
2380 PRINT"TELEPORT OR T"
2390 PRINT"KILL OR K"
2400 PRINT"QUIT OR Q"
2410 INPUT"HIT ENTER TO CONTINUE";O$:CLS
2420 GOTO 120
2430 REM A
2440 X=(RND*9):Y=(RND*9):IF H(X,Y)<>5 THEN 2440:RETURN
2450 REM B
2460 IF K>0 THEN 2470
2461 K=9
2470 IF K<10 THEN 2480
2471 K=1
2480 IF L>0 THEN 2490
2481 L=9
2490 IF L<10 THEN 2500
2491 L=1
2500 RETURN
9999 CLS:RUN "MENU.PGM"
65399 '** DONE - PRESS ENTER TO RETURN TO MENU **

HORSE.BAS

1 CLS:KEY OFF
10 PRINT"HORSE RACE":Q2=5
20 PRINT "ANY NUMBER OF PLAYERS CAN BET ON THE RESULTS."
30 PRINT "EXAMPLE OF BET; 1,2,200,0 ."
40 PRINT"YOU BORROWED 5$ IN CASE YOU LOST ALOT.":PRINT
50 PRINT"      SEVENTH - 1 MILE, 3 YR. OLDS       POST 2:35"
60 PRINT
70 PRINT"1 MAN O' WAR  (3:1); 2 CITATION    (4:1);";
80 PRINT" 3 WHIRLAWAY   (5:1);"
90 PRINT"4 ASSAULT     (8:1); 5 SEABISCUIT  (9:1);";
100 PRINT" 6 GALLANT FOX(11:1);"
110 PRINT"7 STYMIE     (20:1); 8 COALTOWN   (30:1);"
120 PRINT
130 PRINT"ENTER HORSE(1-8);TO WIN,PLACE,SHOW(1,2,3);AND THE WAGER."
140 PRINT "AND 0 FOR NO MORE BETTING OR 1 OR MORE BETTING."
150 LET S = 0
160 PRINT
170 LET S = S + 1
180 PRINT"BET NO. ";S;
190 INPUT T(S),U(S),V(S),Y1
200 LET T(S)=ABS(INT(T(S)))
210 IF T(S)>8 THEN 260
220 IF T(S)<1 THEN 260
230 LET U(S)=ABS(INT(U(S)))
240 IF U(S)>3 THEN 260
250 IF U(S)>0 THEN 290
260 PRINT"HORSE NO. OR WIN-PLACE-SHOW BET IN ERROR"
270 LET R = 3*(J-1)
280 INPUT V(S)
290 IF V(S) -2=ABS(V(S)-2) THEN 320
300 PRINT"BET MUST BE >$2 AND <$300, BET AGAIN";
310 GOTO 280
320 IF V(S)>300 THEN 300
330 IF Y1 = 1 THEN 170
340 PRINT
350 PRINT"   THEY'RE OFF AND RUNNING -"
360 PRINT
370 LET M(1) = 62.25
380 M(2) = 60
390 M(3) = 350/6
400 M(4) = 500/9
410 M(5) = 55
420 M(6) = 650/12
430 M(7) = 1100/21
440 M(8) = 1600/31
450 LET O(1) = 6
460 O(2) = 8
470 O(3) = 10
480 O(4) = 16
490 O(5) = 18
500 O(6) = 22
510 O(7) = 40
520 O(8) = 60
530 FOR N = 1 TO 8
540 LET H(N)=0
550 NEXT N
560 LET K = 0
570 LET G=1
580 LET J = 1
590 LET N = 4*T(1)-U(1)
600 FOR Z5=S TO 5*V(S)+N
610 LET Z1=RND(1)
620 NEXT Z5
630 FOR Z5=1 TO 500000!
640 IF INT(Z5/N)-G<>0 THEN 820
650 LET H(J)=H(J)+RND(1)*M(J)
660 LET J=J+1
670 LET G=G+1
680 IF J <> 9 THEN 810
690 LET J = 1
700 GOSUB 1340
710 LET D = H(B(1))
720 LET K=K+1
730 PRINT
740 IF K = 8 THEN 780
750 GOSUB 1940
760 GOSUB 1590
770 GOTO 820
780 PRINT"           FINISH"
790 LET Z5=500001!
800 GOSUB 1590
810 LET Z1=RND(1)
820 NEXT Z5
830 PRINT
840 PRINT
850 PRINT"$2 MUTUELS PAID:"
860 PRINT"          STRAIGHT  PLACE     SHOW"
870 LET K = 0
880 FOR I = 1 TO 3
890 GOSUB 1650
900 LET J=I
910 IF J = 1 THEN 950
920 PRINT"         ";
930 LET J=J-1
940 GOTO 910
950 FOR J = I TO 3
960 LET L=I+I+J
970 IF J > 1 THEN 1000
980 LET R = 1
990 GOTO 1010
1000 LET R = 3*(J-1)
1010 LET H(L)=1.5+0.01*INT((O(B(I))/R+RND(1))*100)
1020 PRINT H(L);
1030 NEXT J
1040 PRINT
1050 NEXT I
1060 PRINT
1070 LET Q=0
1080 FOR J=1 TO S
1090 PRINT "BET NO. ";J
1100 LET P=0
1110 FOR I = 1 TO 3
1120 IF B(I) <> T(J) THEN 1190
1130 IF U(J) < I THEN 1250
1140 LET P = 0.01*INT((V(J)*50)*H(I+I+U(J)))
1150 PRINT "YOU COLLECT";P;"ON ";
1160 GOSUB 1650
1170 PRINT
1180 GOTO 1270
1190 NEXT I
1200 LET I = T(J)
1210 PRINT"TEAR UP YOUR TICKET ON ";
1220 FOR I = 4 TO 8
1230 IF B(I) = T(J) THEN 1160
1240 NEXT I
1250 PRINT"NEXT TIME, PURCHASE A SHOW TICKET ON ";
1260 GOTO 1160
1270 LET Q = Q+P-V(J)
1280 NEXT J
1290 GOTO 2280
1300 PRINT"YOUR TOTAL WINNINGS AMOUNT TO $";Q2
1310 GOTO 2170
1320 PRINT"YOUR TOTAL LOSSES AMOUNT TO $";ABS(Q2)
1330 GOTO 2170
1340 LET Q = 1
1350 FOR L1 = 1 TO 8
1360 LET B(L1) = 1
1370 LET A(L1) = 1
1380 NEXT L1
1390 FOR L1 = 1 TO 8
1400 FOR L2 = 1 TO 8
1410 IF L1=L2 THEN 1450
1420 IF H(L1)<>H(L2) THEN 1450
1430 PRINT"RERUN PLEASE"
1440 STOP
1450 IF H(L1)<H(L2) THEN 1470
1460 LET A(L1)=A(L1)+1
1470 NEXT L2
1480 LET A(L1) = A(L1) - 1
1490 NEXT L1
1500 FOR L1=8 TO 1 STEP -1
1510 FOR L2 = 1 TO 8
1520 IF A(L2)<>L1 THEN 1560
1530 LET B(Q) = L2
1540 LET Q=Q+1
1550 LET L2 = 9
1560 NEXT L2
1570 NEXT L1
1580 RETURN
1590 REM
1600 IF K = 8 THEN 1930
1610 PRINT"POS.  HORSE   LENGTHS BEHIND"
1620 PRINT
1630 FOR I = 1 TO 8
1640 PRINT I;
1650 IF B(I)=1 THEN 1860
1660 IF B(I)=2 THEN 1840
1670 IF B(I)=3 THEN 1820
1680 IF B(I)=4 THEN 1800
1690 IF B(I)=5 THEN 1780
1700 IF B(I)=6 THEN 1760
1710 IF B(I)=7 THEN 1740
1720 PRINT"COALTOWN   ";
1730 GOTO 1870
1740 PRINT"STYMIE     ";
1750 GOTO 1870
1760 PRINT"GALLANT FOX";
1770 GOTO 1870
1780 PRINT"SEABISCUIT ";
1790 GOTO 1870
1800 PRINT"ASSAULT    ";
1810 GOTO 1870
1820 PRINT"WHIRLAWAY  ";
1830 GOTO 1870
1840 PRINT"CITATION   ";
1850 GOTO 1870
1860 PRINT"MAN O'WAR  ";
1870 IF K = 0 THEN 1930
1880 IF I > 1 THEN 1910
1890 PRINT
1900 GOTO 1920
1910 PRINT 0.1*INT(D-H(B(I)))
1920 NEXT I
1930 RETURN
1940 IF K=1 THEN 2040
1950 IF K=2 THEN 2060
1960 IF K=3 THEN 2080
1970 IF K=4 THEN 2100
1980 IF K=5 THEN 2120
1990 IF K=6 THEN 2140
2000 IF K = 7 THEN 2020
2010 GOTO 2150
2020 PRINT"   COMING DOWN THE STRETCH -"
2030 GOTO 2150
2040 PRINT"   AS THEY BREAK FROM THE GATE -"
2050 GOTO 2150
2060 PRINT"   AT THE 1/4 MILE POLE -"
2070 GOTO 2150
2080 PRINT"   NEARING THE HALFWAY MARK -"
2090 GOTO 2150
2100 PRINT"   MIDWAY IN THE RACE -"
2110 GOTO 2150
2120 PRINT"   AT 5/8 OF A MILE -"
2130 GOTO 2150
2140 PRINT "   ROUNDING THE TURN -"
2150 RETURN
2160 END
2170 INPUT"DO YOU WANT TO BET ON THE NEXT RACE (Y OR N)";W$
2180 IF W$="N" THEN 2210
2190 IF W$="Y" THEN 50
2200 GOTO 2170
2210 IF Q2>0 THEN 2250
2220 IF Q2<0 THEN 2260
2230 PRINT"BYE NOW!!!!•••••"
2240 GOTO 2160
2250 PRINT"PUT THE MONEY I OWE YOU ON MY TAB•!•!•":GOTO 2160
2260 PRINT"PUT THE MONEY YOU OWE ME ON THE TERMINAL!!!"
2270 GOTO 2160
2280 Q2=Q+Q2
2290 IF Q2=0 THEN 2320
2300 IF Q2<0 THEN 1320
2310 GOTO 1300
2320 PRINT"WELL YOU BROKE EVEN!"
2330 GOTO 2170

KING.BAS

1 CLS:KEY OFF
10 OUT 2,26
30 N5=8:N4=8
100 INPUT "WHAT IS YOUR NAME";A$
105 B$=""
110 IF LEFT$(A$,4)="KING" THEN 370
120 IF LEFT$(A$,4)="QUEE" THEN 370
130 PRINT"ARE YOU KING OR QUEEN ";A$
140 INPUT B$
370 PRINT"GREETINGS ";B$;" ";A$
380 PRINT"YOUR GOAL: TO COMPLETE YOUR ";N4;" YEAR TERM."
390 PRINT"GOOD LUCK••"
400 M=INT(70000!+(RND(1)*1000)-(RND(2)*1000))
410 P=INT(500 +(RND(3)*10)-(RND(4)*10))
420 L=2000
430 W=0:X2=0:E0=0:X1=0:E1=0:S9=0:S0=0:M5=0:S1=0
440 D1=INT(P/3)
450 L1=INT((RND(0)*5)+10)
460 L0=INT(RND(0)*10+95)
470 GOSUB 2220
471 PRINT B$;" ";A$;" ";
472 PRINT"THIS IS THE START OF YEAR ";(N4-N5)+1;"OF YOUR "; N4;"YEAR REIGN."
480 PRINT"YOU HAVE ";M;" RALLODS, ";
490 PRINT P;" COUNTRYMEN,";
500 IF W=0 THEN 520
510 PRINTW;" FOREIGN WORKERS,";
520 PRINT" AND";L;" SQ. MILES OF LAND."
530 PRINT"THIS YEAR INDUSTRY WILL BUY LAND FOR";L0;" RALLODS/SQ. MILE"
540 PRINT"LAND CURRENTLY COSTS";L1;" RALLODS/SQ. MILE TO PLANT"
550 IF S1=0 THEN 570
560 PRINT"POLLUTION LEVEL IS ";S1;" UNITS."
570 GOSUB 2220
580 INPUT"HOW MANY SQ. MILES TO SELL TO INDUSTRY ";L2
600 IF L2<0 THEN 580
610 IF L2<(L-1000) THEN 680
620 PRINT"  THINK AGAIN. YOU'VE ONLY";L-1000;" SQ. MILES OF FARM LAND"
630 IF X<>1 THEN 580
640 PRINT"(FOREIGN INDUSTRY NOT INTERESTED IN FOREST LAND BECAUSE"
650 PRINT"OF GREATER DEVELOPMENT COST)"
660 X1=1
670 GOTO 580
680 M=INT(M+L2*L0)
690 L=INT(L-L2)
700 X9=INT(44*(2000-L))
710 M2=0
720 M3=0
730 M4=0
740 INPUT"HOW MANY RALLODS TO DISTRIBUTE TO YOUR COUNTRYMEN ";M1
770 IF M1<0 THEN 740
780 IF M1<=M THEN 810
790 GOSUB 2250
800 GOTO 740
810 M=INT(M-M1)
820 IF M=0 THEN 1170
830 INPUT"HOW MANY SQ. MILES TO PLANT ";L3
850 IF L3<0 THEN 830
860 IF L3<=P*2 THEN 890
870 PRINT"EACH COUNTRYMAN CAN ONLY PLANT 2 SQ. MILES":GOTO 950
890 IF L3<=L-1000 THEN 920
900 PRINT"ONLY GOT";L-1000;" SQ. MILES OF FARM LAND."
910 GOTO 950
920 M4=INT(L3*L1)
930 IF M4<=M THEN 990
940 GOSUB 2250
950 PRINT"YOU CAN AFFORD";INT(M/L1);
960 PRINT" AND HAVE LABOR FOR";P*2;
970 PRINT" AND HAVE";L-1000;" SQ. MILES":GOTO 830
990 M=INT(M-M4)
1000 IF M=0 THEN 1170
1010 INPUT"HOW MUCH TO SPEND FOR EDUCATION ";M2
1030 IF M2<0 THEN 1010
1040 IF M2<M THEN 1070
1050 GOSUB 2250
1060 GOTO 1010
1070 M=INT(M-M2)
1080 IF M=0 THEN 1170
1090 IF L=2000 THEN 1170
1100 INPUT"HOW MUCH TO SPEND TO COMBAT POLLUTION ";M3
1120 IF M3<0 THEN 1100
1130 IF M3<=M THEN 1160
1140 GOSUB 2250
1150 GOTO 1100
1160 M=INT(M-M3)
1170 GOSUB 2220
1180 D0=0
1190 E2=M2/P
1200 D2=INT(P-M1/100)
1210 IF D2<=0 THEN 1240
1220 D0=D2
1230 PRINT D2;" COUNTRYMEN DIED OF STARVATION."
1240 D3=INT((S1/100000!)*(0.1+0.4*RND(1))*P)
1250 IF D3<=0 THEN 1280
1260 PRINT D3;" COUNTRYMEN DIED OF EXCESS POLLUTION."
1270 D0=D0+D3
1280 IF D0<=0 THEN 1400
1290 F=D0*9
1300 PRINT"YOU WERE FORCE TO SPEND";F;" RALLODS FOR FUNERAL EXPENSES"
1310 M=INT(M-F)
1320 IF M<=0 THEN 1400
1330 PRINT"INSUFFICIENT RESOURCES FORCED SALE OF LAND."
1340 T0=-INT((M-L0+1)/L0)
1350 L=L-T0
1360 IF L>=1000 THEN 1390
1370 PRINT"NOT ENOUGH LAND TO SELL"
1380 GOTO 2270
1390 M=M+T0*L0
1400 IF D0>200 THEN 2300
1410 P=P-D0
1420 D1=D1-D0
1430 IF D1<0 THEN 2410
1440 IF D2<=2 THEN 1460
1450 IF M>500 THEN 2520
1460 IF L2=0 THEN 1520
1470 T0=INT(L2+L2*RND(2)*2)
1480 IF W=0 THEN 1500
1490 T0=INT(T0+0.1*W)
1500 PRINT T0;" WORKERS CAME TO THE ISLAND AND"
1510 W=W+T0
1520 T0=INT(((500-P)/10-D3/3-D2/5)*0.75*(1+RND(1)))
1530 PRINT ABS(T0);" COUNTRYMEN ";
1540 IF T0<0 THEN 1570
1550 PRINT"CAME TO";
1560 GOTO 1580
1570 PRINT"LEFT";
1580 PRINT" THE ISLAND."
1590 P=P+T0
1600 IF P<W THEN 2480
1610 T0=0
1620 IF L=2000 THEN 1680
1630 T0=INT((S1/100000!)*L3)
1640 IF T0<=L3 THEN 1660
1650 T0=L3
1660 IF T0=0 THEN 1680
1670 PRINT"OF";L3;" SQ. MILES PLANTED, ";
1680 PRINT"YOU HARVESTED";L3-T0;" SQ. MILES OF CROPS."
1690 IF T0=0 THEN 1760
1700 IF X2>=2 THEN 1760
1710 PRINT"  (DUE TO ";
1720 IF X2=0 THEN 1740
1730 PRINT"INCREASED ";
1740 PRINT"POLLUTION LEVEL)"
1750 X2=X2+1
1760 T1=INT((39+RND(1)*20)*(1+0.25*(E0+E1)/20))
1770 PRINT"  MAKING";INT(T1*(L3-T0));" RALLODS."
1780 M=M+INT(T1*(L3-T0))
1790 E0=E1
1800 IF E2<=10 THEN 1820
1810 E2=10
1820 E1=E2
1830 T0=2000-L
1840 IF T0<2 THEN 2100
1850 IF T0<=26 THEN 1870
1860 T0=26
1870 T0=INT(T0*500*(0.52+0.5*RND(6)))
1880 T1=S1/100000!
1890 IF T1<=1 THEN 1910
1900 T1=1
1910 T1=T1*T0
1920 PRINT"YOU MADE";INT(T0-T1);" RALLODS FROM TOURIST TRADE"
1930 M=M+INT(T0-T1)
1940 IF INT(T0-T1)<=M5 THEN 2080
1950 IF S1<=S9 THEN 2080
1960 PRINT"  DECREASE BECAUSE ";
1970 T2=RND(1)*10
1980 ON (T2/2)+1 GOTO 1990,2010,2030,2050,2070,2070
1990 PRINT"FISH POPULATIN HAS DWINDLED DUE TO WATER POLLUTION"
2000 GOTO 2080
2010 PRINT"AIR POLLUTION IS KILLING GAME BIRD POPULATION"
2020 GOTO 2080
2030 PRINT"MINERAL BATHS ARE BEING RUINED BY WATER POLLUTION"
2040 GOTO 2080
2050 PRINT"UNPLEASANT SMOG IS DISCOURIGING SUN BATHERS"
2060 GOTO 2080
2070 PRINT"HOTEL ARE LOOKING SHABBY DUE TO SMOG GRIT"
2080 M5=INT(T0-T1)
2090 S9=S1
2100 S2=(2000-L)^2-M3/0.44
2110 PRINT"YOU RECEIVED";X9;" RALLODS FROM TAXES ON INDUSTRY"
2120 IF S2>=0 THEN 2170
2130 S1=INT(S1+S2/2)
2140 IF S1>=S0 THEN 2160
2150 S1=S0
2160 GOTO 2190
2170 S1=INT(S1+S2)
2180 S0=INT(S0+S2/10)
2190 N5=N5-1
2200 IF N5>0 THEN 450
2210 GOTO 2570
2220 PRINT:PRINT:RETURN
2250 PRINT"ONLY GOT";M;" RALLODS LEFT!••":RETURN
2270 PRINT"YOU HAVE BEEN THROWN OUT OF OFFICE AND YOU ARE NOW"
2280 PRINT"RESIDING IN PRISON."
2290 GOTO 2615
2300 PRINT D0;" COUNTRYMEN DIED IN ONE YEAR!!!!!"
2310 PRINT"DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY"
2320 PRINT"BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU"
2330 T0=INT(RND(1)*2.01)+1
2340 ON T0 GOTO 2350,2370,2390
2350 PRINT"ALSO HAD YOUR LEFT EYE GOUGED OUT."
2360 GOTO 2615
2370 PRINT"HAVE ALSO GAINED A VERY BAD REPUTATION."
2380 GOTO 2615
2390 PRINT"HAVE ALSO BEEN DECLARED NATIONAL FINK."
2400 GOTO 2615
2410 PRINT"OVER ONE THIRD OF THE POPULATION HAS DIED SINCE YOU"
2420 PRINT"WERE ELECTED TO OFFICE.  THE PEOPLE (REMAINING)"
2430 PRINT"HATE YOUR GUTS."
2440 GOTO 2450
2450 IF RND(2)<0.25 THEN 2270
2460 PRINT"YOU HAVE BEEN ASSASINATED, AND YOUR BODY THROWN IN"
2465 PRINT" THE BREA DUMP.  "
2470 GOTO 2615
2480 PRINT"THE NUMBER OF FOREIGN WORKERS HAS EXCEEDED THE NUMBER"
2490 PRINT"OF COUNTRYMEN. AS A MAJORITY THEY HAVE REVOLTED AND"
2500 PRINT"TAKEN OVER THE COUNTRY."
2510 GOTO 2450
2520 PRINT"MONEY WAS LEFT OVER IN THE TREASURY WHICH YOU DID NOT"
2530 PRINT"SPEND.  AS A RESULT SOME OF YOUR COUNTRYMEN DIED OF "
2540 PRINT"STARVATION.  THE PUBLIC IS ENRAGED AND YOU HAVE BEEN"
2550 PRINT"FORCED TO EITHER RESIGN OR COMMIT SUICIDE."
2560 GOTO 2615
2570 PRINT
2580 PRINT"CONGRATULATIONS ";B$;" ";A$
2585 PRINT
2590 PRINT"YOU HAVE SUCCESSFULLY COMPLETED YOUR";N4;" YEAR TERM"
2600 PRINT"OF OFFICE.  YOU HAVE DONE SUCH A GOOD JOB THAT YOU MIGHT"
2610 PRINT"WANT TO RUN FOR ELECTION AGAIN THIS TIME."
2615 PRINT:PRINT:PRINT"WOULD YOU LIKE TO TRY AGAIN ";B$;" ";A$;"?"
2620 INPUT"TYPE YES OR NO.";Q$
2625 N5=N4
2630 IF LEFT$(Q$,1)="Y" THEN 440
2640 IF LEFT$(Q$,1)="N" THEN 3000
2660 GOTO 2620
3000 PRINT:PRINT B$;" ";A$;" IS A CHICKEN!!!!!!"
3010 END

LINES.BAS

230 CLS
240 ' walking lines program - from BYTE magazine
250 ' converted to IBM by Grant Irani - Fallston, MD
260 ' additional conversion by Will Fastie
270 ' last edit:  22 Dec 81
280 DEFINT A-Z
290 GOSUB 700
300 RANDOMIZE VAL(RIGHT$(TIME$,2))
310 CLS
320 BACKTINT=0:PALETTE=0
330 KEY (1) ON: ON KEY (1) GOSUB 610
340 KEY (2) ON: ON KEY (2) GOSUB 640
350 SCREEN 1,0
360 KEY (10) ON: ON KEY (10) GOSUB 670
370 COLOR BACKTINT,PALETTE
380 DIM LINES(150,4)
390 DEF FNRAND(LIMIT)=INT(RND(1)*LIMIT)+1
400 X1=FNRAND(320)-1:Y1=FNRAND(200)-1:DX1=FNRAND(11)-6:DY1=FNRAND(11)-6
410 X2=FNRAND(320)-1:Y2=FNRAND(200)-1:DX2=FNRAND(11)-6:DY2=FNRAND(11)-6
420 TINT=1
430 IX=0 'index into lines
440 CNT=0 ' number of lines
450 CHGCNT=FNRAND(250)
460 LINE (X1,Y1)-(X2,Y2),TINT
470 IX=(IX+1)MOD 150
480 IF CNT=150 THEN LINE (LINES(IX,0),LINES(IX,1))-(LINES(IX,2),LINES(IX,3)),BACKGRND
490 LINES(IX,0)=X1:LINES(IX,1)=Y1:LINES(IX,2)=X2:LINES(IX,3)=Y2
500 IF CNT<150 THEN CNT=CNT+1
510 CHGCNT=CHGCNT-1
520 X1=X1+DX1:IF X1<0 OR X1>319 THEN DX1=-DX1:X1=X1+DX1
530 Y1=Y1+DY1:IF Y1<0 OR Y1>199 THEN DY1=-DY1:Y1=Y1+DY1
540 X2=X2+DX2:IF X2<0 OR X2>319 THEN DX2=-DX2:X2=X2+DX2
550 Y2=Y2+DY2:IF Y2<0 OR Y2>199 THEN DY2=-DY2:Y2=Y2+DY2
560 IF CHGCNT>0 GOTO 460
570 ' X1=FNRAND(320)-1:Y1=FNRAND(200)-1:X2=FNRAND(320)-1:Y2=FNRAND(200)-1
580 DX1=FNRAND(11)-6:DY1=FNRAND(11)-6:DX2=FNRAND(11)-6:DY2=FNRAND(11)-6
590 TINT=((TINT+1)MOD 3)+1
600 GOTO 450
610 BACKTINT=(BACKTINT+1)MOD 16
620 COLOR BACKTINT,PALETTE
630 RETURN
640 PALETTE=PALETTE+1
650 COLOR BACKTINT,PALETTE
660 RETURN
670 ' restore monochrome display
680 GOSUB 760
690 END
700 REM DISPC - Simple program to setup Color/Graphics Display
710 REM       - from IBM's "C" program on Dealer Demo
720 KEY OFF: CLS
730 WIDTH 80: DEF SEG=0: A=PEEK(&H410): POKE &H410,(A AND &HCF) OR &H20
740 WIDTH  40 :SCREEN 1: SCREEN 0: LOCATE ,,1,6,7
750 RETURN
760 REM DISPM - Simple program to setup Monochrome Display
770 REM       - from IBM's "B" program on Dealer Demo
780 KEY OFF: CLS
790 WIDTH 40: DEF SEG=0: A=PEEK(&H410): POKE &H410,A OR &H30
800 WIDTH  80: LOCATE ,,1,12,13: SCREEN 0,0,0
810 RETURN

MSQUARE.BAS

10    REM      MSQUARE            WRITTEN BY BILL WEIL    1983
20    REM THIS PROGRAM PRINTS AND DISPLAYS MAGIC SQUARES
30    REM
40    REM
50    REM
60    REM  PRINT EXPLANATION  **********************************************
70    REM
100   CLS
110   PRINT "             THIS PROGRAM PRINTS MAGIC SQUARES."
115   PRINT
120   PRINT "A MAGIC SQUARE IS AN ARRAY OF CONSECUTIVE NUMBERS WHERE ALL THE"
130   PRINT "ROWS, COLUMNS AND DIAGONALS ADD UP TO THE SAME NUMBER.  THE ALGORITHM"
140   PRINT "USED CAN CALCULATE MAGIC SQUARES OF ANY SIZE AS LONG AS THE NUMBERS OF"
150   PRINT "ROWS AND COLUMNS ARE AN ODD NUMBER."
153   REM
154   REM
155   REM  GOTO 910  'BYPASSES EXPLANATION ************************************
156   REM
157   PRINT
160   PRINT "THE LARGEST MAGIC SQUARE THAT CAN FIT ON AN 80 COLUMN SCREEN IS"
170   PRINT "19 BY 19. THE LARGEST SQUARE THAT CAN PRINT ON AN IBM OR EPSON MX-80"
180   PRINT "PRINTER IS 31 BY 31 IN COMPRESSED MODE (17.16 cpi). THE LARGEST SQUARE"
190   PRINT "THAT CAN PRINT ON AN EPSON MX-100 IN COMPRESSED MODE IS 45 BY 45."
200   PRINT
210   PRINT "THIS PROGRAM PRINTS A DOUBLE WIDTH HEADING LINE BY SPECIFYING A"
220   PRINT "CHR$(14) AND PRINTS THE MAGIC SQUARE ITSELF IN COMPRESSED MODE"
230   PRINT "BY SPECIFYING A CHR$(15).  THE PROGRAM ALSO ASSUMES A 132 POSITION"
240   PRINT "PRINT LINE. TO CUSTOMIZE THIS PROGRAM FOR YOUR PRINTER CHANGE THE"
250   PRINT "FOLLOWING LINES OF CODE: 910, 940-960, 10615-10630, 10900-10910"
260   PRINT
270   PRINT "TO BYPASS THESE INSTRUCTIONS REMOVE THE  REM  FROM LINE 155"
280   PRINT
860   REM
870   REM
880   REM
890   REM   START UP  *********************************************************
900   REM
910   WIDTH "LPT1:",132  'EPSON MX-80 PRINTS 132 COLUMNS IN COMPRESSED MODE
920   DEFINT C,O,R,S
930   PRINT
940   INPUT "ENTER AN ODD NUMBER FROM 3 T0 31: ",SIZE
960   IF SIZE < 3 OR SIZE > 31 THEN PRINT "NUMBER IS NOT WITHIN RANGE": GOTO 930
970   IF SIZE MOD 2 = 0 THEN PRINT "MUST BE AN ODD NUMBER": GOTO 930
980   DIM TABLE(SIZE,SIZE)
990   SIZESQ = SIZE^2   'THIS IS THE NUMBER OF CELLS IN THE ARRAY
1000  IF SIZE <= 31 THEN PICTURE$ = "####"                                                     ELSE PICTURE$ = "#####"   'THIS IS USED FOR WIDE PRINTERS
1010  PRINT: PRINT:
10000 REM
10010 REM
10020 REM
10030 REM   FILL ARRAY  *******************************************************
10040 REM
10100 COL = (SIZE +1)/2 -1    'SET POSITION SO THAT LINES 10280 AND 10300 CAUSE
10120 ROW = 2                'THE PROGRAM TO START AT THE MIDDLE OF THE TOP ROW
10200 FOR COUNT = 1 TO SIZESQ
10240     OLDCOL = COL:  OLDROW = ROW  'SAVE LAST ELEMENT POSITION
10280     COL = COL + 1  'FILL IN ARRAY BY MOVING UP TO THE RIGHT
10300     ROW = ROW - 1  'DIAGONALLY
10340     IF COL > SIZE THEN COL = 1      'WRAP FROM RIGHT TO LEFT
10360     IF ROW = 0    THEN ROW = SIZE   'WRAP FROM TOP TO BOTTOM
10400     IF TABLE(ROW,COL) <> 0 THEN COL = OLDCOL: ROW = OLDROW + 1
10410     REM IF CELL IS OCCUPIED THEN DROP DOWN ONE ROW FROM OLD POSITION
10450     TABLE(ROW,COL) = COUNT
10500     IF COUNT MOD 100 = 0 OR COUNT = SIZESQ THEN                                         LOCATE 23,10: PRINT "WORKING ON NUMBER "; COUNT; " OF "; SIZESQ
10540 NEXT COUNT
10560 REM
10570 REM
10580 REM
10590 REM   PRINT ARRAY  ****************************************************
10600 REM
10610 IF SIZE <= 19                                                                     THEN CLS: PRINT "A "; SIZE; " BY "; SIZE; " MAGIC SQUARE": PRINT
10615 LPRINT CHR$(12)  'GO TO TOP OF FORM
10620  LPRINT CHR$(14) "A" SIZE "BY" SIZE "MAGIC SQUARE"
10630  LPRINT CHR$(15)  'SET TO COMPRESSED PRINT MODE
10640 FOR ROW = 1 TO SIZE
10680     FOR COL = 1 TO SIZE
10720         LPRINT USING PICTURE$; TABLE(ROW,COL);
10730           IF SIZE <= 19 THEN PRINT USING PICTURE$; TABLE(ROW,COL);
10760     NEXT COL
10800     LPRINT
10820     IF SIZE <= 19 THEN PRINT
10840  NEXT ROW
10860 REM
10870 REM
10880 REM
10890 REM   FINISH UP *******************************************************
10895 REM
10900 LPRINT  CHR$(18)  'RESTORE TO NORMAL PRINT
10910 WIDTH "LPT1:",80  'RESTORE TO 80 COLUMN WIDTH
10940 LPRINT "THE SUM OF EACH ROW, COLUMN AND DIAGONAL IS" SIZE*(SIZESQ+1)/2
10950 IF SIZE <= 19 THEN PRINT:                                                         PRINT "THE SUM OF EACH ROW, COLUMN AND DIAGONAL IS" SIZE*(SIZESQ+1)/2
10999 END

ROCKET.BAS

0 REM      R O C K E T   L A N D E R
1 CLS:KEY OFF
5 OUT 2,26
10 P=1
11 REM ...P  IS THE INPUT PORT NUMBER FOR YOUR KEYBOARD......
15 REM
20 REM
70 PRINT "LUNER LANDING SIMULATIONS"
80 PRINT "----- ------- -----------"
100 INPUT "DO YOU WANT INSTRUCTIONS (YES OR NO)";A$
120 IF LEFT$(A$,1)="N" THEN 390
160 PRINT
200 PRINT"YOU ARE LANDING ON THE MOON AND HAVE TAKEN OVER MANUAL"
210 PRINT"CONTROL 500 FEEF ABOVE A GOOD LANDING SPOT. YOU HAVE A"
220 PRINT"DOWNWARD VELOCITY OF 50 FT/SEC.   120 UNITS OF FUEL REMAIN."
225 PRINT
230 PRINT"HERE ARE THE RULES THAT GOVERN YOUR SPACE VEHICLE:"
240 PRINT"(1) AFTER EACH SECOND, THE HEIGHT, VELOCITY, AND REMAINING"
250 PRINT"    FUEL WILL BE REPORTED."
260 PRINT"(2) AFTER THE REPORT, A'?'WILL BE TYPED.  ENTER THE"
270 PRINT"    NUMBER OF UNITS OF FUEL YOU WISH TO BURN DURING THE "
280 PRINT"    NEXT SECOND.  EACH UNIT OF FUEL WILL SLOW YOUR DESCENT"
290 PRINT"(3) THE MAXIMUM THRUSTOF YOUR ENGINE IS 30 FT/SEC/SEC OR"
300 PRINT"    30 UNITS OF FUEL PER SECOND"
310 PRINT"(4) WHEN YOU CONTACT THE LUNAR SURFACE, YOUR DESCENT ENGINE"
320 PRINT"    WILL AUTOMATICALLY SHUT OFF AND YOU WILL BE GIVEN A"
330 PRINT"    REPORT OF YOUR LANDING SPEED AND REMAINING FUEL"
340 PRINT"(5) IF YOU RUN OUT OF FUEL, THE'?' WILL NO LONGER APPEAR"
350 PRINT"    BUT YOU SECOND BY SECOND REPORT WILL CONTINUE UNTIL"
360 PRINT"    YOU CONTACT LUNAR SURFACE.":PRINT
365 PRINT:PRINT"HIT SPACE BAR TO CONTINUE..."
366 A$=INKEY$:IF A$="" THEN 366
390 PRINT:PRINT:PRINT"BEGINING LANDING PROCEEDURE.........":PRINT
410 PRINT"G O O D  L U C K ! ! ! "
420 PRINT:PRINT
440 PRINT"SEC   FEET   SPEED   FUEL     PLOT OF DISTANCE"
450 PRINT
455 T=0:H=500:V=50:F=120
490 PRINT T;TAB(4);H;TAB(12);V;TAB(20);F;TAB(29);"I";TAB(H/12+29);"*"
500 INPUT B
510 IF B<0 THEN 650
520 IF B>30 THEN B=30
530 IF B>F THEN B=F
540 V1=V-B+5
560 F=F-B
570 H=H-0.5*(V+V1)
580 IF H<=0 THEN 670
590 T=T+1
600 V=V1
610 IF F>0 THEN 490
615 IF B=0 THEN 640
620 PRINT"***OUT OF FUEL***"
640 PRINT T;TAB(4);H;TAB(12);V;TAB(20);F;TAB(29);"I";TAB(H/12+29);"*"
650 B=0
660 GOTO540
670 PRINT"****CONTACT****"
680 H=H+0.5*(V+V1)
690 IF B=5 THEN 720
700 D=(-V+SQR(V*V+H*(10-2*B)))/(5-B)
710 GOTO 730
720 D=H/V
730 V1=V+(5-B)*D
760 PRINT"   TOUCHDOWN AT";T+D;"SECONDS."
770 PRINT"   LANDING VELOCITY =";V1;"FT/SEC"
780 PRINT F;"UNITS OF FUEL REMAINING."
790 IF V1<>0 THEN 810
800 PRINT"CONGRADULATIONS!!!     A PERFECT LANDING!"
805 PRINT"YOUR LICENSE WILL BE RENEWED.........LATER."
808 GOTO 845
810 IF ABS(V1)<2 THEN 840
820 PRINT" *****  SORRY, BUT YOU BLEW IT KIDO!!!!!"
825 PRINT" THIS WAS OUR ONLY CHANCE TO MAKE CONTACT WITH EXTRATRESTRIAL"
827 PRINT" BEINGS.  NON-APPROPRIATE CONDOLENCES MIGHT BE SENT TO YOUR"
830 PRINT" NEXT OF KIN."
835 GOTO 845
840 PRINT:PRINT"WELL......THAT WAS OK.  BUT NOT TOO SPECTACULAR..."
845 PRINT:PRINT
850 INPUT "ANOTHER MISSION ANYONE";A$
870 IF LEFT$(A$,1)="Y" THEN 390
880 PRINT:PRINT  "CONTROL OUT. ":PRINT
999 END

ROULETTE.BAS

1 CLS:KEY OFF
100 LET P=5000
110 PRINT "THIS PROGRAM IS DESIGNED TO SIMULATE THE FRENCH GAMBLING"
120 DIM G(10)
130 LET P=5000
140 PRINT "GAME ROULETTE."
150 PRINT "DO YOU WISH TO SEE A DESCRIPTION OF THE RULES"
160 INPUT A$
170 IF A$="NO" THEN 450
180 PRINT "YOU BEGIN WITH $5,000 AND MAY BET AS MUCH AS YOU LIKE UNTIL"
190 PRINT "YOU HAVE EITHER WON $100,000 OR YOU GO BROKE, WHICH EVER"
200 PRINT "COMES FIRST.  THE BETTING IS DONE ON A BOARD OR CLOTH"
210 PRINT "SUCH AS APPEARS BELOW.  HALF THE NUMBERS ARE RED AND HALF"
220 PRINT "ARE BLACK EXCEPT ZERO WHICH IS COLORLESS.  BETTING COM-"
230 PRINT "BINATIONS AND ODDS ON THEM ARE AS FOLLOWS:"
240 PRINT
250 PRINT "**************************************************************"
260 PRINT "          BET                          BANK PAYS"
270 PRINT "     -------------         --------------------------------"
280 PRINT " 1.RED OR BLACK             EVEN MONEY (AMOUNT OF BET)"
290 PRINT " 2.EVEN OR ODD              EVEN MONEY"
300 PRINT " 3. HIGH OR LOW             EVEN MONEY"
310 PRINT " 4.COLUMN 1,2,OR 3          2 TO 1"
320 PRINT " 5.DOZEN (LOW,MIDDLE,HIGH)  2 TO 1"
330 PRINT " 6.SINGLE NUMBERS 0-36      36 TO 1"
340 PRINT " 7.TWO NUMBERS(ADJACENT)    17 TO 1"
350 PRINT " 8.THREE NUMBERS ACCROSS    11 TO 1"
360 PRINT " 9.FOUR NUMBERS (SQUARE)    8 TO 1"
370 PRINT "10.SIX NUMBERS(RECTANGLE)   5 TO 1"
380 PRINT "***************************************************************"
400 PRINT"PRESS ANY KEY TO CONTINE"
410 A$=INKEY$:IF A$="" THEN 410
420 PRINT "WHEN ASKED TO PLACE YOUR BET, DO SO BY FIRST INPUTING"
430 PRINT "THE AMOUNT OF THE BET (SMALLEST BET =$1.00) AND THE"
440 PRINT "NUMBER OF THE TYPE OF BET DESIRED FROM THE TABLE ABOVE"
450 PRINT "HERE IS THE ROULETTE LAYOUT:"
460 PRINT "              ***********************"
470 PRINT "              *         0           *"
480 PRINT "              *   1     2      3    *"
490 PRINT "              *   4     5      6    *"
500 PRINT "              *   7     8      9    *"
510 PRINT "              *  10    11     12    *"
520 PRINT "              *  13    14     15    *"
530 PRINT "              *  16    17     18    *"
540 PRINT "              *  19    20     21    *"
550 PRINT "              *  22    23     24    *"
560 PRINT "              *  25    26     27    *"
570 PRINT "              *  28    29     30    *"
580 PRINT "              *  31    32     33    *"
590 PRINT "              *  34    35     36    *"
600 PRINT "              ***********************"
610 PRINT "              ***********************"
620 PRINT "THE ROULETTE WHEEL IS SPINNING-ROUND AND ROUND IT"
630 PRINT "GOES, WHERE SHE STOPS NOBODY KNOWS."
640 LET X=0
650 LET Y=INT(37*RND(1))
660 PRINT "FAITES VOS JEUX MESSIEUR (PLACE YOUR BETS GENTLEMEN)"
670 INPUT B,C
680 IF C=2 THEN 890
690 IF C=3 THEN 990
700 IF C=4 THEN 1090
710 IF C=5 THEN 1280
720 IF C=6 THEN 1430
730 IF C=7 THEN 1490
740 IF C=8 THEN 1560
750 IF C=9 THEN 1640
760 IF C=10 THEN 1730
770 LET E=1
780 PRINT "WHICH COLOR DO YOU WANT TO BET ON"
790 INPUT Z$
800 IF Y=0 THEN 1880
810 IF Y<19 THEN 860
820 PRINT " THE NUMBER IS BLACK"
830 IF Z$="BLACK" THEN 1820
840 GOTO 1880
850 PRINT
860 PRINT "THE NUMBER IS RED"
870 IF Z$="RED" THEN 1820
880 GOTO 1880
890 LET E=1
900 PRINT "WHICH DO WANT TO BET ON, ODD OR EVEN"
910 INPUT D$
920 PRINT "THE NUMBER IS"Y
930 LET D1=Y/2
940 IF D1=INT(Y/2) THEN 970
950 IF D$="ODD" THEN 1820
960 GOTO 1880
970 IF D$="EVEN" THEN 1820
980 GOTO 1880
990 LET E=1
1000 PRINT "DO YOU BET HIGH (19-36) OR LOW (1-18)"
1010 INPUT H$
1020 PRINT "THE NUMBER IS"Y
1030 IF Y=0 THEN 1880
1040 IF Y>18 THEN 1070
1050 IF H$="LOW" THEN 1820
1060 GOTO 1880
1070 IF H$="HIGH" THEN 1820
1080 GOTO 1880
1090 LET E=2
1100 PRINT "WHICH COLUMN DO YOU CHOOSE, 1,2,OR 3"
1110 INPUT F
1120 PRINT "THE NUMBER IS"Y
1130 IF Y=0 THEN 1880
1140 IF F=2 THEN 1200
1150 IF F=3 THEN 1240
1160 FOR F1=1TO34 STEP 3
1170 IF F1=Y THEN 1820
1180 NEXT F1
1190 GOTO 1880
1200 FOR F1=2TO35 STEP 3
1210 IF F1=Y THEN 1820
1220 NEXT F1
1230 GOTO 1880
1240 FOR F1=3TO36 STEP 3
1250 IF F1=Y THEN 1820
1260 NEXT F1
1270 GOTO 1880
1280 LET E=2
1290 PRINT "WHICH DOZEN NUMBERS DO YOU CHOOSE, LOW (1-12), MIDDLE"
1300 PRINT "(13-24), OR HIGH (25-36)"
1310 INPUT I$
1320 PRINT " THE NUMBER IS "Y
1330 IF Y=0 THEN 1880
1340 IF I$="MIDDLE" THEN 1380
1350 IF I$="HIGH" THEN 1410
1360 IF Y<13 THEN 1820
1370 GOTO 1880
1380 IF Y>25 THEN 1880
1390 IF Y<13 THEN 1880
1400 GOTO 1820
1410 IF Y>24 THEN 1820
1420 GOTO 1880
1430 LET E=36
1440 PRINT "OH OH, A LONG SHOT....PICK YOUR NUMBER."
1450 INPUT G
1460 PRINT "AND THE NUMBER COMES UP --------------------------"Y
1470 IF G=Y THEN 1820
1480 GOTO 1880
1490 LET E=17
1500 PRINT "WHAT TWO ADJACENT NUMBERS ARE YOU BETTING ON"
1510 INPUT G1,G2
1520 PRINT " AND THIS TIME THE NUMBER COMES UP-----------------"Y
1530 IF G1=Y THEN 1820
1540 IF G2=Y THEN 1820
1550 GOTO 1880
1560 LET E=11
1570 PRINT "WHAT THREE NUMBERS(RUNNING ACCROSS THE BOARD) DO YOU WANT"
1580 INPUT G1,G2,G3
1590 PRINT "AND THE NUMBER IS ::::::::::::::::::::::::::"Y
1600 IF G1=Y THEN 1820
1610 IF G2=Y THEN 1820
1620 IF G3=Y THEN 1820
1630 GOTO 1880
1640 LET E=8
1650 PRINT "WHAT FOUR NUMBERS( IN A SQUARE ) DO YOU WANT"
1660 INPUT G(1),G(2),G(3),G(4)
1670 PRINT "THE MARBLE FALLS AND BOUNCES AND BOUNCES AND, AND"
1680 PRINT "THE NUMBER COMES UP"Y
1690 FOR I=1TO4
1700 IF G(I)=Y THEN 1820
1710 NEXT I
1720 GOTO 1880
1730 LET E=5
1740 PRINT "WHAT SIX NUMBERS (IN A RECTANGLE OOO THE BOARD) DO YOU "
1750 PRINT "WANT TO BET ON"
1760 INPUT G(1),G(2),G(3),G(4),G(5),G(6)
1770 PRINT "WELL, THE NUMBER CAME UP"Y
1780 FOR I=1TO6
1790 IF G(I)=Y THEN 1820
1800 NEXT I
1810 GOTO 1880
1820 PRINT " *****A WINNER*****"
1830 PRINT "YOU WIN $"E*B
1840 LET P=P+(E*B)
1850 PRINT "YOUR PURSE NOW TOTALS $"P
1860 IF P>100000! THEN 1930
1870 GOTO 650
1880 PRINT " *****YOU LOSE*****"
1890 LET P=P-B
1900 PRINT "YOUR PURSE NOW TOTALS $"P
1910 IF P>0 THEN 650
1920 IF P=<0 THEN 1950
1930 PRINT "END OF GAME YOU BROKE THE HOUSE"
1940 GOTO 1960
1950 PRINT "YOURE BROKE!!!!!"
1960 END

SLOT.BAS

10 DEFINT A-Z
20 DIM RE(25), CE(25), MV(25), VM(10), MC(25), CM(10)
30 KEY OFF : SCREEN 0 : WIDTH 40 :CLS
40 F = 1
50 RANDOMIZE CVI(MID$(TIME$,7,2))
60 VM(1) = 1: VM(2) = 1: VM(3) = 1: VM(4) = 1: VM(5) = 2
70 VM(6) = 2: VM(7) = 2: VM(8) = 3: VM(9) = 3: VM(10) = 5
80 CM(1) = 25:CM(2) =25: CM(3) =25: CM(4) =25: CM(5)=157
90 CM(6) = 157: CM(7) =157: CM(8) = 15:CM(9)=15:CM(10) = 2
100 LOCATE 7,1
140 PRINT "        Press 4 for 40 columns"
150 PRINT "        Press 8 for 80 columns";:LOCATE ,,0
160 X$ = INKEY$
170 IF X$ = "4" THEN GOSUB 1230 : GOTO 200
180 IF X$ = "8" THEN GOSUB 1390 : GOTO 200
181 IF X$ = "Q" THEN CLS :END
185 IF X$ = "r" THEN GOSUB 3000
190 GOTO 160
200 X$ = INKEY$
210 IF X$ = "e" THEN MM=21 : LV=15 : SLV=2 : NE=25-2*F : GOTO 270
220 IF X$ = "m" THEN MM=21 : LV=10 : SLV=7 : NE=20-2*F : GOTO 270
230 IF X$ = "h" THEN MM=21 : LV=10 : SLV=10: NE=15-2*F : GOTO 270
240 IF X$ = "v" THEN MM=21 : LV=5  : SLV=15: NE=10-F : GOTO 270
250 IF X$ = "Q" THEN CLS : END
260 GOTO 200
270 CLS : LOCATE 12,28,0 : PRINT "G o o d   L u c k !";
275 HITS = 0: MISSES =0
280 FOR I = 1 TO 2000 : NEXT I
290 CLS
300 LOCATE 1,SC,0 :PRINT "SCORE 0";
310 LOCATE 1,RM,0 :PRINT "REMAINING ";MM
320 IF SIZE = 40 THEN 370
330 S$ = " 11223344556677889900qqwweerrttyyuuiiooppaassddffgghhjjkkll;;zzxxccvvbbnnmm,,.."
340 LOCATE 25,1,0 : PRINT S$;
350 LOCATE 24,1,0 :PRINT " ";:FOR I = 1 TO 39 :PRINT CHR$(223);CHR$(223); :NEXT
360 GOTO 400
370 S$ = "1234567890qwertyuiopasdfghjkl;zxcvbnm,."
380 LOCATE 25,1,0 : PRINT S$;
390 LOCATE 24,1,0 : FOR I = 1 TO 39 : PRINT CHR$(223); :NEXT
400 OLDPOS = 20 :NEWPOS = 20 : GOSUB 930
410 FOR N = 1 TO NE : GOSUB 1050 :NEXT
420 NP = 1
430 REM
440 RN = RE(NP) + 1 : CN = CE(NP)
450 IF RN < 23 THEN LOCATE RN-1,CN,0 : PRINT " "; :LOCATE RN,CN,0 : PRINT CHR$(MC(NP)); : RE(NP) = RN : GOTO 480
460 LOCATE 22,CN,0 : PRINT " "; : N = NP
470 IF (CN = NEWPOS) OR (CN = NEWPOS+1) THEN GOSUB 1100:GOSUB 1050 ELSE GOSUB 1020
480 X$ = INKEY$
490 IF X$ = "Q" THEN CLS :END
500 IF X$ ="1" THEN NEWPOS =1: GOSUB 930
510 IF X$ ="2" THEN NEWPOS =2: GOSUB 930
520 IF X$ ="3" THEN NEWPOS =3: GOSUB 930
530 IF X$ ="4" THEN NEWPOS =4: GOSUB 930
540 IF X$ ="5" THEN NEWPOS =5: GOSUB 930
550 IF X$ ="6" THEN NEWPOS =6: GOSUB 930
560 IF X$ ="7" THEN NEWPOS =7: GOSUB 930
570 IF X$ ="8" THEN NEWPOS =8: GOSUB 930
580 IF X$ ="9" THEN NEWPOS =9: GOSUB 930
590 IF X$ ="0" THEN NEWPOS =10: GOSUB 930
600 IF X$ ="q" THEN NEWPOS =11: GOSUB 930
610 IF X$ ="w" THEN NEWPOS =12: GOSUB 930
620 IF X$ ="e" THEN NEWPOS =13: GOSUB 930
630 IF X$ ="r" THEN NEWPOS =14: GOSUB 930
640 IF X$ ="t" THEN NEWPOS =15: GOSUB 930
650 IF X$ ="y" THEN NEWPOS =16: GOSUB 930
660 IF X$ ="u" THEN NEWPOS =17: GOSUB 930
670 IF X$ ="i" THEN NEWPOS =18: GOSUB 930
680 IF X$ ="o" THEN NEWPOS =19: GOSUB 930
690 IF X$ ="p" THEN NEWPOS =20: GOSUB 930
700 IF X$ ="a" THEN NEWPOS =21: GOSUB 930
710 IF X$ ="s" THEN NEWPOS =22: GOSUB 930
720 IF X$ ="d" THEN NEWPOS =23: GOSUB 930
730 IF X$ ="f" THEN NEWPOS =24: GOSUB 930
740 IF X$ ="g" THEN NEWPOS =25: GOSUB 930
750 IF X$ ="h" THEN NEWPOS =26: GOSUB 930
760 IF X$ ="j" THEN NEWPOS =27: GOSUB 930
770 IF X$ ="k" THEN NEWPOS =28: GOSUB 930
780 IF X$ ="l" THEN NEWPOS =29: GOSUB 930
790 IF X$ =";" THEN NEWPOS =30: GOSUB 930
800 IF X$ ="z" THEN NEWPOS =31: GOSUB 930
810 IF X$ ="x" THEN NEWPOS =32: GOSUB 930
820 IF X$ ="c" THEN NEWPOS =33: GOSUB 930
830 IF X$ ="v" THEN NEWPOS =34: GOSUB 930
840 IF X$ ="b" THEN NEWPOS =35: GOSUB 930
850 IF X$ ="n" THEN NEWPOS =36: GOSUB 930
860 IF X$ ="m" THEN NEWPOS =37: GOSUB 930
870 IF X$ ="," THEN NEWPOS =38: GOSUB 930
880 IF X$ ="." THEN NEWPOS =39: GOSUB 930
890 IF MISSES > MM THEN GOTO 1130
900 NP = NP + 1 : IF NP = NE THEN NP = 1
910 GOTO 430
920 REM
930 IF SIZE = 40 THEN 980
940 NEWPOS = 2*NEWPOS : LOCATE 23,OLDPOS,0:PRINT "  ";
950 LOCATE 23,NEWPOS,0:PRINT CHR$(211);CHR$(189);
960 OLDPOS = NEWPOS
970 RETURN
980 LOCATE 23,OLDPOS,0 :PRINT " ";
990 LOCATE 23,NEWPOS,0 :PRINT CHR$(127);
1000 OLDPOS = NEWPOS
1010 RETURN
1020 SOUND 15000,1 :SOUND 10000,1 :SOUND 5000,1
1030 MISSES = MISSES + 1
1040 LOCATE 1,RM+11,0 : PRINT MM-MISSES+1;
1050 RE(N) = RND*LV + SLV : CE(N) = RND*RPOS + RS
1060 MT = RND*9 + 1
1070 MV(N) = VM(MT) : MC(N) = CM(MT)
1080 LOCATE RE(N),CE(N),0 :PRINT CHR$(MC(N));
1090 RETURN
1100 SOUND 2000,1 : SOUND 1000,1
1110 HITS = HITS + MV(NP) : LOCATE 1,SC+6,0 : PRINT HITS;
1120 RETURN
1130 REM      levels of achievement
1140 IF HITS < F*10 THEN FOR I = 370 TO 300 STEP -3: SOUND I,1 :NEXT :GOTO 1210
1150 IF HITS < F*60 THEN FOR I = -8 TO 10 STEP 1 : SOUND 420 + I*ABS(I),1 :NEXT  :GOTO 1210
1160 IF HITS < F*100 THEN PLAY "o3cco2cc" :GOTO 1210
1170 IF HITS < F*150 THEN PLAY "o3msl4t210ceeemnl2c" :GOTO 1210
1180 IF HITS < F*200 THEN FOR I = 10000 TO 2700 STEP -53:SOUND I,1:NEXT I :GOTO 1210
1190 IF HITS < F*250 THEN PLAY "l2o4cdefgl4gggo5l1c":GOTO 1210
1200 IF HITS > F*250 THEN GOSUB 1620
1210 LOCATE 3,1,0 : INPUT "GAME OVER press return to continue ",X$
1215 IF SIZE = 40 THEN GOSUB 1230 ELSE GOSUB 1390
1220 GOTO 200
1230 WIDTH 40 : CLS :PRINT
1240 SIZE = 40 : RPOS = 38 : SC = 1: RM = 20 : RS = 1
1250 PRINT "                CATCH88" : PRINT
1260 PRINT "The object of the game is to catch 'em"
1270 PRINT "          before they fall."
1280 PRINT
1290 PRINT : PRINT "       ";CHR$(25);"  is worth 1 point."
1300 PRINT "       ";CHR$(157);"  is worth 2 points."
1310 PRINT "       ";CHR$(15);"  is worth 3 points."
1320 PRINT "       ";CHR$(2);"  is worth 5 points."
1330 PRINT : PRINT : PRINT "   A capital  Q  will stop the game."
1340 PRINT : PRINT
1350 PRINT "   Choose a suitable level of play :"
1360 PRINT :PRINT
1370 PRINT "e(asy  m(edium  h(ard  v(ery hard  Q(uit  ";
1380 RETURN
1390 WIDTH 80 : CLS : SIZE = 80 : RPOS = 77 : SC = 10 : RM = 50:RS = 2
1400 PRINT
1410 PRINT SPC(19) " [[[[  [[[  [[[[[  [[[[ [   [  [[[   [[[ "
1420 PRINT SPC(19) "[     [   [   [   [     [   [ [   [ [   ["
1430 PRINT SPC(19) "[     [   [   [   [     [   [ [   [ [   ["
1440 PRINT SPC(19) "[     [[[[[   [   [     [[[[[  [[[   [[[ "
1450 PRINT SPC(19) "[     [   [   [   [     [   [ [   [ [   ["
1460 PRINT SPC(19) "[     [   [   [   [     [   [ [   [ [   ["
1470 PRINT SPC(19) " [[[[ [   [   [    [[[[ [   [  [[[   [[[ "
1480 PRINT
1490 PRINT SPC(10) "The object of the game is to catch 'em before they fall."
1500 PRINT SPC(12) "Move the basket by pressing the correct letter key."
1510 PRINT
1520 PRINT : PRINT  SPC(29) CHR$(25);"  is worth 1 point."
1530 PRINT  SPC(29) CHR$(157);"  is worth 2 points."
1540 PRINT  SPC(29) CHR$(15);"  is worth 3 points."
1550 PRINT  SPC(29) CHR$(2);"  is worth 5 points."
1560 PRINT : PRINT : PRINT  SPC(24) "A capital  Q  will stop the game."
1570 PRINT
1580 PRINT SPC(24) "Choose a suitable level of play :"
1590 PRINT :PRINT SPC(19) "e(asy  m(edium  h(ard  v(ery hard   Q(uit";
1600 LOCATE 12,1,0
1610 RETURN
1620 CLS : PRINT :PRINT "     I really did'nt think anyone was"
1630 PRINT "that fast.  Rescaling ....":PRINT :PRINT:FOR I = 1 TO 2000:NEXT
1640 SOUND 37,180:FOR I = 1 TO 14000:NEXT:SOUND 37,0
1650 F = F*2 :PRINT "Next time you run this program,"
1660 PRINT "press the letter r before you"
1670 PRINT "enter a 4 or 8.  My very best luck."
1680 PRINT :PRINT "                           RKC"
1690 RETURN
3000 INPUT "Enter your factor number  ",F
3001 IF F > 5 THEN PRINT "Be reasonable !" : GOTO 3000
3002 RETURN

STARTREK.BAS

10 REM   *** SUPER STAR TREK ***
20 REM     INTELLEC MDS VERSION
30 REM WRITTEN IN BASIC BY RON WILLIAMS
40 REM ADAPTED FROM A FORTRAN VERSION WRITTEN
50 REM    FOR THE CDC 6600 IN 1974.
51 REM
60 REM   ADAPTED FOR IBM PC BY CHARLIE VELLA, 1983
61 REM
70 DIM G1$(16),V$(5,5),C$(20),G(8,8),D$(12),Q$(10,10),D4(12),D9(106)
80 DIM S2(8,8):Q$="?"
90 CLS:KEY OFF
100 DATA S.R. SENSORS,L.R. SENSORS,PHASERS,PHOTON TUBES,LIFE SUPPORT
110 DATA WARP ENGINES,IMPULSE ENGINES,SHIELDS,SUBSPACE RADIO
120 DATA SHUTTLE CRAFT,COMPUTER,TRANSFER PANEL,ABANDON,CHART,COMPUTER
130 DATA DAMAGES,DESTRUCT,DOCK,IDLE,IMPULSE,LRSCAN,NAVIGATE,PHASERS,QUIT
140 DATA SHIELDS,SOS,SRSCAN,STATUS,TORPEDO,TRANSFER,VISUAL,WARP,SHORT
150 DATA MEDIUM,LONG,BEGINNER,NOVICE,SENIOR,EXPERT,COURSE,WCOST,ICOST
160 DATA PEFFECT,SCORE,END,ANTARES,SIRIUS,RIGEL,MERAK,PROCYON,CAPELLA
170 DATA VEGA,DENEB,CANOPUS,ALDEBARAN,ALTAIR,REGULUS,BELLATRIX,ARCTURUS
180 DATA POLLUX,SPICA,10.5,12,1.5,9,0,3,7.5,6,4.5
190 DEF FNA(X)=INT(8*RND(X))+1:DEF FNB(X)=INT(10*RND(X))+1
200 DEF FND(X)=X/60
210 DEF FNR(X)=INT(X*10+0.5)/10:DEF FNS(X)=INT(X*100+0.5)/100
220 FOR I=1 TO 12:READ D$(I):NEXT:FOR I=1 TO 20:READ C$(I):NEXT
230 FOR I=1 TO 3:READ T$(I):NEXT:FOR I=1 TO 4:READ S$(I):NEXT:FOR I=1 TO 6
240 READ C2$(I):NEXT:FOR I=1 TO 16:READ G1$(I):NEXT:FOR I=1 TO 9:READ C5(I):NEXT
250 REM CALL SETUP
260 GOSUB 12310:S7$(1)="":S7$(2)="  ":S7$(3)=" ":S7$(4)=""
270 IF A2<>0 THEN 1310
280 J4=0:T1=0:PRINT:INPUT"COMMAND";A$:IF LEN(A$)>1 THEN 300
290 PRINT"USE AT LEAST 2 LETTERS, PLEASE.":GOTO 280
300 FOR I=1 TO 20
310 IF A$=LEFT$(C$(I),LEN(A$)) THEN 380
320 NEXT
330 INPUT"ILLEGAL COMMAND - DO YOU NEED A LIST";B$
340 IF LEFT$(B$,1)="N" THEN 270
350 PRINT:FOR I=1 TO 20 STEP 4
360 PRINT C$(I);TAB(12);C$(I+1);TAB(22);C$(I+2);TAB(32);C$(I+3)
370 NEXT:PRINT:
371 PRINT "COMPASS:                 12
372 PRINT "                       11    1"
373 PRINT "                    10          2"
374 PRINT "                  9      <|>      3"
376 PRINT "                    8           4"
377 PRINT "                       7     5"
378 PRINT "                          6"
379 GOTO 270
380 ON I GOTO 420,450,480,510,540,560,590,660,700,730
390 ON I-10 GOTO 770,820,860,930,960,990,1020,1060,1120,1180
400 PRINT"ERROR AT 170 - SHOULD NOT BE HERE"
410 STOP
420 REM-ABANDON
430 GOSUB 15640
440 GOTO 270
450 REM-CHART
460 GOSUB 2720
470 GOTO 270
480 REM-COMPUTER
490 GOSUB 3370
500 GOTO 270
510 REM-DAMAGES
520 GOSUB 4470
530 GOTO 270
540 REM - DESTRUCT
550 GOSUB 15890:GOTO 270
560 REM-DOCK
570 GOSUB 4350
580 GOTO 270
590 REM-IOLE
600 GOSUB 15000
610 IF J3=0 THEN 270
620 IF A2<>0 THEN 1310
630 IF G(Q1,Q2)=1000 THEN 1260
640 GOSUB 1360
650 GOTO 270
660 REM-IMPULSE
670 GOSUB 7340
680 IF J3=0 THEN 270
690 GOTO 1210
700 REM-LRSCAN
710 GOSUB 7620
720 GOTO 270
730 REM-NAVIGATE
740 GOSUB 15150
750 IF J3=0 THEN 270
760 GOTO 1210
770 REM-PHASERS
780 GOSUB 10400
790 IF J3=0 THEN 270
800 GOSUB 1360
810 GOTO 270
820 REM-QUIT
830 GOTO 1310
840 PRINT"TOO BAD...WE HATE TO LOSE GOOD ASTRONAUTS!"
850 GOTO 16140
860 REM-SHIELDS
870 GOSUB 13070
880 IF J3=0 THEN 270
890 IF A2<>0 THEN 1310
900 GOSUB 1360
910 S9=0
920 GOTO 270
930 REM-SOS
940 GOSUB 6640
950 GOTO 270
960 REM-SRSCAN
970 GOSUB 13830
980 GOTO 270
990 REM - STATUS
1000 PRINT
1010 GOSUB 16120:GOTO 270
1020 REM-TORPEDOS
1030 GOSUB 10810
1040 IF J3=0 THEN 270
1050 GOTO 1210
1060 REM-TRANSFER
1070 GOSUB 14320
1080 IF J3=0 THEN 270
1090 IF A2<>0 THEN 1310
1100 IF G(Q1,Q2)<>1000 THEN 270
1110 GOTO 1260
1120 REM-VISUAL
1130 GOSUB 14480
1140 IF J3=0 THEN 270
1150 IF A2<>0 THEN 1310
1160 IF G(Q1,Q2)<> 1000 THEN 270
1170 GOTO 1260
1180 REM-WARP
1190 GOSUB 12880
1200 GOTO 270
1210 REM-AFTERMOVINGSTARSHIP
1220 IF A2<>0 THEN 1310
1230 IF T1<>0 THEN GOSUB 4600
1240 IF A2<>0 THEN 1310
1250 IF G(Q1,Q2)<1000 THEN 1290
1260 GOSUB 2220
1270 IF A2<>0 THEN 1310
1280 GOTO 1250
1290 GOSUB 1360
1300 GOTO 270
1310 REM-WE'RE FINISHED
1320 PRINT:PRINT:INPUT"WOULD YOU LIKE TO TRY AGAIN";A$
1330 IF LEFT$(A$,1)="Y" THEN 250
1340 GOTO 840
1350 REM-BEGIN SUBROUTINES
1360 REM-ATTACK
1370 IF (C3<>0) AND (J4=0) THEN GOSUB 8670
1380 IF K3=0 THEN RETURN
1390 IF A2<>0 THEN RETURN
1400 P2=1/I8
1410 J5=0
1420 PRINT
1430 IF C5$="DOCKED" THEN 2150
1440 H2=0:H3=0:C6=1
1450 IF S9=1 THEN C6=0.5+0.5*RND(1)
1460 A3=0
1470 FOR L=1 TO K3
1480 IF K6(L)<0 THEN 1910
1490 A3=1
1500 D6=0.8+0.05*RND(1)
1510 H4=K6(L)*D6^K8(L)
1520 IF (S4=0) AND (S9=0) THEN 1590
1530 P3=0.1:IF P2*S3>P3 THEN P3=P2*S3
1540 H5=P3*C6*H4+1
1550 IF H5>S3 THEN H5=S3
1560 S3=S3-H5
1570 H4=H4-H5
1580 IF (P3>0.1) AND (H4<0.005000001*E1) THEN 1910
1590 J5=1
1600 PRINT FNR(H4);"UNIT HIT ON THE ";S5$;" FROM ";
1610 J6=K4(L):J7=K5(L)
1620 IF Q$(J6,J7)="K" THEN PRINT"KLINGON AT";
1630 IF Q$(J6,J7)="C" THEN PRINT"COMMANDER AT";
1640 PRINT J6;"-";J7
1650 IF H4>H2 THEN H2=H4
1660 H3=H3+H4
1670 IF H4<(275-25*S8)*(1+0.5*RND(1)) THEN 1900
1680 N4=1+INT(H4/(500+100*RND(1)))
1690 PRINT"***CRITICAL HIT--";
1700 K9=1
1710 FOR W4=1 TO N4
1720 J9=INT(12*RND(1))+1
1730 C5(W4)=J9
1740 E3=(H4*D5)/(N4*(75+25*RND(1)))
1750 IF J9=6 THEN E3=E3/3
1760 D4(J9)=D4(J9)+E3
1770 IF W4=1 THEN 1840
1780 FOR V=1 TO W4
1790 IF J9=C5(V-1) THEN 1850
1800 NEXT V
1810 K9=K9+1
1820 IF K9=3 THEN PRINT
1830 PRINT " AND ";
1840 PRINT D$(J9);
1850 NEXT W4
1860 PRINT " DAMAGED."
1870 IF D4(8)=0 THEN 1900
1880 IF S4<>0 THEN PRINT"*** SHIELDS KNOCKED DOWN."
1890 S4=0
1900 E1=E1-H4
1910 NEXT L
1920 IF A3=0 THEN RETURN
1930 IF E1<=0 THEN 2120
1940 P4=100*P2*S3+0.5
1950 IF J5<>0 THEN 1980
1960 PRINT"KLINGONS ATTACK--SHIELD STRENGTH REDUCED TO ";
1970 GOTO 2020
1980 PRINT"ENERGY LEFT:";FNS(E1);"   SHIELDS ";
1990 IF S4<>0 THEN PRINT"UP,";
2000 IF (S4=0) AND (D4(8)=0) THEN PRINT"DOWN, ";
2010 IF D4(8)>0 THEN PRINT"DAMAGED, ";
2020 PRINT INT(P4);"%"
2030 IF (H2<200) AND (H3<500) THEN 2170
2040 J8=INT(H3*RND(1)*0.015)
2050 IF J8<2 THEN 2170
2060 PRINT
2070 PRINT"MCCOY - 'SICKBAY TO BRIDGE.  WE SUFFERED ";
2080 PRINT J8;"CASUALTIES"
2090 PRINT"          IN THAT LAST ATTACK'"
2100 C4=C4+J8
2110 GOTO 2170
2120 F9=5
2130 GOSUB 5780
2140 RETURN
2150 PRINT"*** KLINGONS ATTACK-- STARBASE SHIELDS PROTECT ";
2160 PRINT"THE ";S5$
2170 FOR W4=1 TO K3
2180 K8(W4)=K7(W4)
2190 NEXT W4
2200 GOSUB 13700
2210 RETURN
2220 REM-AUTOVER
2230 PRINT
2240 IF J4=0 THEN 2280
2250 PRINT"*** RED ALERT!  RED ALERT!"
2260 PRINT"***THE ";S5$;" HAS STOPPED IN A QUADRANT ";
2270 PRINT "CONTAINING A SUPERNOVA."
2280 PRINT "*** EMERGENCY AUTO-OVERRIDE ATTEMPTS TO HURL ";
2290 PRINT S5$
2300 PRINT"   SAFELY OUT OF THE QUADRANT."
2310 S2(Q1,Q2)=1
2320 GOSUB 9340
2330 IF D4(6)=0 THEN 2530
2340 PRINT
2350 PRINT"WARP ENGINES DAMAGED."
2360 PRINT
2370 PRINT"ATTEMPTING TO ENGAGE IMPULSE ENGINES..."
2380 IF D4(7)=0 THEN 2430
2390 PRINT"IMPULSE ENGINES DAMAGED."
2400 F9=8
2410 GOSUB 5780
2420 RETURN
2430 P2=0.75*E1
2440 D6=0.004*(P2-50)
2450 D7=1.4142+1.2*RND(1)
2460 D1=D6
2470 IF D6>D7 THEN D1=D7
2480 T1=D1/0.4
2490 D2=12*RND(1)
2500 J4=0
2510 GOSUB 7560
2520 GOTO 2640
2530 W1=6+2*RND(1)
2540 W2=W1*W1
2550 P2=0.75*E1
2560 D6=P2/(W1*W1*W1*(S4+1))
2570 D7=1.4142+2*RND(1)
2580 D1=D6
2590 IF D6>D7 THEN D1=D7
2600 T1=10*D1/W2
2610 D2=12*RND(1)
2620 J4=0
2630 GOSUB 15370
2640 IF J4<>0 THEN 2680
2650 F9=8
2660 GOSUB 5780
2670 RETURN
2680 IF R1<>0 THEN RETURN
2690 F9=1
2700 GOSUB 5780
2710 RETURN
2720 REM-CHART
2730 PRINT:PRINT"      1   2   3   4   5   6   7   8"
2740 PRINT"     --- --- --- --- --- --- --- ---"
2750 FOR I=1 TO 8
2760 PRINT I;" ";
2770 FOR J=1 TO 8
2780 ON SGN(S2(I,J))+2 GOTO 2800,2820,2840
2790 PRINT"ERR AT 3065":STOP
2800 PRINT" .1.";
2810 GOTO 2890
2820 PRINT" ...";
2830 GOTO 2890
2840 IF S2(I,J)>1000 THEN 2880
2850 IF G(I,J)<1000 THEN PRINT S7$(LEN(STR$(G(I,J))));STR$(G(I,J));
2860 IF G(I,J)=1000 THEN PRINT" ***";
2870 GOTO 2890
2880 PRINT S2(I,J)-1000;
2890 NEXT J
2900 PRINT
2910 NEXT I:GOSUB 9670
2920 PRINT
2930 PRINT"THE ";S5$;" IS CURRENTLY IN ";G2$;" (";Q1;"-";Q2;")"
2940 RETURN
2950 REM-CHOOSE
2960 FOR I=1 TO 10:PRINT:NEXT:FOR I=1 TO 41:PRINT "*";:NEXT:PRINT
2970 PRINT"**";TAB(39); "**"
2980 PRINT"**  WELCOME TO THE WORLD OF STAR TREK  **"
2990 PRINT"**";TAB(39); "**":FOR I=1 TO 41:PRINT "*";:NEXT:PRINT
3000 PRINT:PRINT
3010 S8=0:L2=0
3020 PRINT"HOW LONG A GAME WOULD YOU LIKE";
3030 INPUT A$
3040 FOR I=1 TO 3
3050 IF A$=LEFT$(T$(I),LEN(A$)) THEN 3090
3060 NEXT I
3070 PRINT"WOULD YOU LIKE A SHORT, MEDIUM OR LONG GAME";
3080 GOTO 3030
3090 L2=I
3100 PRINT"ARE YOU A BEGINNER, NOVICE, SENIOR OR EXPERT PLAYER";
3110 INPUT A$
3120 FOR I=1 TO 4
3130 IF A$=LEFT$(S$(I),LEN(A$)) THEN 3160
3140 NEXT I
3150 GOTO 3100
3160 S8=I
3170 INPUT"ENTER YOUR MISSION PASSWORD...";X$
3180 PRINT
3190 PRINT"....SETTING UP THE GALAXY...."
3200 J=RND(1)
3210 REM-INITIALIZE
3220 D5=0.5*S8
3230 I2=INT(L2+1+RND(1)*3)
3240 IF I2>5 THEN I2=5
3250 R3=I2
3260 I5=7*L2
3270 R5=I5
3280 R7=(S8-2*RND(1)+1)*S8*0.1+0.1
3290 IF R7<0.2 THEN R7=R7+0.1
3300 I1=INT(2*R7*I5)
3310 R1=I1
3320 I4=INT(S8+0.0625*I1*RND(1))
3330 R2=I4
3340 I3=(I1+4*I4)*I5
3350 R4=I3
3360 RETURN
3370 REM-COMPUTE
3380 IF D4(11)=0 THEN 3410
3390 PRINT"LIBRARY COMPUTER DISABLED"
3400 RETURN
3410 PRINT"----LIBRARY COMPUTER ACTIVE----"
3420 INPUT"PROGRAM NAME";B$
3430 FOR I=1 TO 6
3440 IF B$=LEFT$(C2$(I),LEN(B$)) THEN 3500
3450 NEXT
3460 PRINT"VALID PROGRAMS ARE:"
3470 PRINT"  COURSE    WCOST   ICOST"
3480 PRINT"  PEFFECT   SCORE   END"
3490 GOTO 3420
3500 ON I GOTO 3510,3760,3840,3910,3970,4000
3510 REM-COURSE & DIRECTION
3520 INPUT "ENTER QUADRANT AND SECTOR - ";A3,A4
3530 IF (A3<>INT(A3)) OR (A4<>INT(A4)) THEN 4010
3540 IF A3<0 THEN 3420
3550 IF A3=0 THEN A3=10*Q1+Q2
3560 A3=A3+0.5
3570 K=INT(A3/10)
3580 IF (K<1) OR (K>8) THEN 4010
3590 C6(1)=K:K=INT(A3-C6(1)*10)
3600 IF (K<1) OR (K>8) THEN 4010
3610 C6(2)=K:A4=A4+0.5
3620 K=INT(A4/100)
3630 IF (K<1) OR (K>10) THEN 4010
3640 C6(1)=C6(1)+(K-1)/10:K=INT(A4-K*100)
3650 IF (K<1) OR (K>10) THEN 4010
3660 C6(2)=C6(2)+(K-1)/10
3670 X=Q1+((S6-1)/10)-C6(1):Y=Q2+((S7-1)/10)-C6(2)
3680 D1=0:D2=0:IF (X=0) AND (Y=0) THEN 3740
3690 D1=SQR(X*X+Y*Y)
3700 IF X<0 THEN Z7=SGN(Y)*(3.1416-ATN(ABS(Y/X)))
3710 IF X=0 THEN Z7=SGN(Y)*1.5708
3720 IF X>0 THEN Z7=ATN(Y/X)
3730 D2=12-Z7*1.9098593#: IF D2>12 THEN D2=D2-12
3740 PRINT"COURSE IS";FNS(D2);" FOR A DISTANCE OF";
3750 PRINT FNS(D1);"QUADRANTS.":GOTO 3420
3760 REM-COST FOR WARP DRIVE
3770 INPUT"ENTER DISTANCE AND WARP FACTOR";D1,A4
3780 IF (D1<0) THEN 3420
3790 C7=D1*A4*A4*A4
3800 T1=(10*D1)/(A4*A4)
3810 PRINT"IT WOULD TAKE";FNS(T1);"STARDATES AND USE"
3820 PRINT FNR(C7);"UNITS OF ENERGY  (";FNR(C7+C7);"IF SHIELDS ARE UP)"
3830 GOTO 3420
3840 REM-COST FOR IMPULSE POWER
3850 INPUT"ENTER DISTANCE...";D1
3860 IF D1<0 THEN 3420
3870 C7=250*D1+50:T1=D1/0.4
3880 PRINT"IT WOULD TAKE";FNR(T1);"STARDATES AND USE"
3890 PRINT C7;"UNITS OF ENERGY"
3900 GOTO 3420
3910 REM-PHASER EFFECTIVENESS
3920 INPUT"ENTER PHASER RANGE IN QUADRANTS";A3
3930 IF A3<0 THEN 3420
3940 A3=A3*10:C7=(0.9^A3)*100
3950 PRINT"PHASERS ARE ";LEFT$(STR$(C7),5);"% EFFECTIVE AT THAT RANGE"
3960 GOTO 3420
3970 REM- SCORE
3980 GOSUB 11950
3990 GOTO 3420
4000 RETURN
4010 PRINT"FORMAT IS MN,XXYY...WHERE MN IS THE QUADRANT"
4020 PRINT"AND XXYY IS THE SECTOR...E.G. 64,0307 REFERS"
4030 PRINT"TO QUADRANT 6-4, SECTOR 3-7."
4040 PRINT"NOTE: SECTOR COORDINATES MUST BE 4 DIGITS."
4050 GOTO 3420
4060 REM - DEAD KL
4070 IF T2$<>"C" THEN 4170
4080 C3=0:PRINT"***COMMANDER AT";
4090 FOR F=1 TO R2
4100 IF (C1(F)=Q1) AND (C2(F)=Q2) THEN 4120
4110 NEXT F
4120 C1(F)=C1(R2):C2(F)=C2(R2):C1(R2)=0:C2(R2)=0
4130 R2=R2-1:F1(2)=1.000000e+30
4140 IF R2<>0 THEN F1(2)=D0-(I4/R2)*LOG(RND(1))
4150 K2=K2+1
4160 GOTO 4190
4170 PRINT"***KLINGON AT";
4180 K1=K1+1
4190 PRINT A5;"-";A6;"DESTROYED."
4200 Q$(A5,A6)=".":R1=R1-1
4210 IF R1=0 THEN RETURN
4220 R5=R4/(R1+4*R2)
4230 G(Q1,Q2)=G(Q1,Q2)-100
4240 FOR F=1 TO K3
4250 IF (K4(F)=A5) AND (K5(F)=A6) THEN 4270
4260 NEXT F
4270 K3=K3-1
4280 IF F>K3 THEN 4330
4290 FOR G=F TO K3
4300 K4(G)=K4(G+1):K5(G)=K5(G+1):K6(G)=K6(G+1)
4310 K7(G)=K7(G+1):K8(G)=K7(G)
4320 NEXT G
4330 K4(K3+1)=0:K5(K3+1)=0:K7(K3+1)=0:K8(K3+1)=0:K6(K3+1)=0
4340 RETURN
4350 REM-DOCK
4360 IF C5$="DOCKED" THEN 4450
4370 IF B6=0 THEN 4390
4380 IF (ABS(S6-B6)<=1) AND (ABS(S7-B7)<=1) THEN 4410
4390 PRINT S5$;" NOT ADJACENT TO A BASE."
4400 RETURN
4410 C5$="DOCKED"
4420 PRINT"HELMSMAN SULU - 'DOCKING MANEUVER COMPLETED.'"
4430 E1=I7:S3=I8:T4=I9:L1=J1
4440 RETURN
4450 PRINT"MR. SULU - 'BUT CAPTAIN, WE'RE ALREADY DOCKED!'"
4460 RETURN
4470 REM-D REPORT
4480 J=0
4490 PRINT
4500 FOR I=1 TO 12
4510 IF D4(I)<=0 THEN 4570
4520 IF J<>0 THEN 4560
4530 PRINT"     DEVICE";SPC(12);"-REPAIR TIMES-"
4540 PRINT SPC(21);"IN FLIGHT    DOCKED"
4550 J=1
4560 PRINT"  ";D$(I);TAB(23);FNS(D4(I));TAB(33);FNS(D3*D4(I))
4570 NEXT I
4580 IF J=0 THEN PRINT"MR. SPOCK - 'ALL DEVICES FUNCTIONAL, CAPTAIN'"
4590 RETURN
4600 REM-EVENTS
4610 M=0:D7=D0+T1
4620 FOR L=1 TO 5
4630 IF F1(L)>D7 THEN 4650
4640 M=L:D7=F1(L)
4650 NEXT L
4660 X6=D7-D0:D0=D7
4670 R4=R4-(R1+4*R2)*X6
4680 R5=R4/(R1+4*R2)
4690 IF R5>0 THEN 4730
4700 F9=2
4710 GOSUB 5780
4720 RETURN
4730 IF (D4(5)=0) OR (C5$="DOCKED") THEN 4790
4740 IF (L1>=X6) OR (D4(5)<=L1) THEN 4770
4750 F9=3:GOSUB 5780
4760 RETURN
4770 L1=L1-X6
4780 IF D4(5)<=X6 THEN L1=J1
4790 R=X6
4800 IF C5$="DOCKED" THEN R=X6/D3
4810 FOR L=1 TO 12
4820 IF D4(L)<=0 THEN 4870
4830 D4(L)=D4(L)-R
4840 IF D4(L)<0 THEN D4(L)=0
4850 IF D4(L)<>0 THEN 4870
4860 PRINT:PRINT"DAMAGE CONTROL-  '";D$(L);" NOW OPERATIONAL.'"
4870 NEXT L
4880 IF M=0 THEN RETURN
4890 T1=T1-X6
4900 ON M GOTO 4910,4960,5190,5280,5490
4910 REM-SUPERNOVA
4920 X2=0:Y2=0:GOSUB 13230
4930 F1(1)=D0-0.5*I5*LOG(RND(1))
4940 IF G(Q1,Q2)=1000 THEN RETURN
4950 GOTO 4610
4960 REM-TRACTOR BEAM
4970 IF R2=0 THEN 5180
4980 IF C5$="DOCKED" THEN 5160
4990 I=INT(RND(1)*R2)+1
5000 Y6=(C1(I)-Q1)^2+(C2(I)-Q2)^2
5010 IF Y6=0 THEN 5160
5020 Y6=SQR(Y6):T1=0.17778*Y6
5030 PRINT:PRINT"***";S5$;" CAUGHT IN LONG-RANGE TRACTOR BEAM--"
5040 Q1=C1(I):Q2=C2(I)
5050 S6=FNB(1):S7=FNB(1)
5060 PRINT"   PULLED TO QUADRANT";Q1;"-";Q2;", SECTOR";S6;"-";S7
5070 IF R6<>0 THEN PRINT"(REMAINDER OF IDLE PERIOD CANCELLED)"
5080 R6=0
5090 IF S4<>0 THEN 5150
5100 IF (D4(8)=0) AND (S3>0) THEN 5130
5110 PRINT"(SHIELDS NOT CURRENTLY USABLE.)"
5120 GOTO 5150
5130 GOSUB 13100
5140 S9=0
5150 GOSUB 9340
5160 F1(2)=D0+T1-1.5*(I5/R2)*LOG(RND(1))
5170 GOTO 4610
5180 F1(2)=1.000000e+30:GOTO 4610
5190 D9(1)=D0:D9(2)=R1:D9(3)=R2:D9(4)=R3:D9(5)=R4:D9(6)=R5
5200 D9(7)=S1:D9(8)=B1:D9(9)=K1:D9(10)=K2
5210 FOR I=1 TO 8:FOR J=1 TO 8:D9(I-1+8*(J-1)+11)=G(I,J):NEXT J:NEXT I
5220 FOR I=75 TO 84:D9(I)=C1(I-74):NEXT
5230 FOR I=85 TO 94:D9(I)=C2(I-84):NEXT
5240 FOR I=95 TO 99:D9(I)=B2(I-94):NEXT
5250 FOR I=100 TO 104:D9(I)=B3(I-99):NEXT
5260 D9(105)=B4:D9(106)=B5
5270 S0=1:F1(3)=D0-0.3*I5*LOG(RND(1)):GOTO 4610
5280 REM - STARBASE ATTACK
5290 IF (R2=0) OR (R3=0) THEN 5340
5300 FOR I=1 TO R3:FOR J=1 TO R2:IF (B2(I)=C1(J)) AND (B3(I)=C2(J)) THEN 5350
5310 NEXT J:NEXT I
5320 F1(4)=D0+0.5+3*RND(1)
5330 F1(5)=1.000000e+30:GOTO 4610
5340 F1(4)=1.000000e+30:F1(5)=1.000000e+30:GOTO 4610
5350 B4=B2(I):B5=B3(I)
5360 IF (B4=Q1) AND (B5=Q2) THEN 5320
5370 F1(5)=D0+0.5+3*RND(1)
5380 F1(4)=F1(5)-0.3*I5*LOG(RND(1))
5390 IF D4(9)>0 THEN 4610
5400 PRINT
5410 PRINT"LT. UHURA-  'CAPTAIN, THE STARBASE IN";B4;"-";B5
5420 PRINT"  REPORTS THAT IT IS UNDER ATTACK AND CAN HOLD OUT"
5430 PRINT"  ONLY UNTIL STARDATE";FNR(F1(5));"'"
5440 IF R6=0 THEN 4610
5450 PRINT
5460 INPUT"MR. SPOCK-  'CAPTAIN, SHALL WE CANCEL THE IDLE PERIOD";B$
5470 IF LEFT$(B$,1)="Y" THEN R6=0
5480 GOTO 4610
5490 REM - STARBASE DESTROYED
5500 F1(5)=1.000000e+30:IF (R2=0) OR (R3=0) THEN 4610
5510 K=INT(G(B4,B5)/100):IF G(B4,B5)-K*100<10 THEN 4610
5520 FOR I=1 TO R2:IF (C1(I)=B4) AND (C2(I)=B5) THEN 5540
5530 NEXT:GOTO 4610
5540 IF S2(B4,B5)=-1 THEN S2(B4,B5)=0
5550 IF S2(B4,B5)>999 THEN S2(B4,B5)=S2(B4,B5)-10
5560 IF (B4<>Q1) OR (B5<>Q2) THEN 5660
5570 FOR I=1 TO K3:K=K4(I):L=K5(I)
5580 IF Q$(K,L)="C" THEN 5600
5590 NEXT
5600 IF K6(I)<25+50*RND(1) THEN 4610
5610 Q$(B6,B7)=".":B6=0:B7=0
5620 GOSUB 9290
5630 PRINT:PRINT"MR. SPOCK-  'CAPTAIN, I BELIEVE THE STARBASE HAS";
5640 PRINT" BEEN DESTROYED.'"
5650 GOTO 5710
5660 IF (R3=1) OR (D4(9)>0) THEN 5710
5670 PRINT
5680 PRINT"LT. UHURA-  'CAPTAIN, STARFLEET COMMAND REPORTS THAT"
5690 PRINT"  THE STARBASE IN QUADRANT";B4;"-";B5;"HAS BEEN"
5700 PRINT"  DESTROYED BY A KLINGON COMMANDER.'"
5710 G(B4,B5)=G(B4,B5)-10
5720 IF R3<=1 THEN 5760
5730 FOR I=1 TO R3:IF (B2(I)=B4) AND (B3(I)=B5) THEN 5750
5740 NEXT
5750 B2(I)=B2(R3):B3(I)=B3(R3)
5760 R3=R3-1
5770 GOTO 4610
5780 REM-FINISH
5790 A2=1:PRINT:PRINT"IT IS STARDATE";FNR(D0):PRINT
5800 ON F9 GOTO 5820,6050,6140,6200,6220,6250,6260,6290
5810 ON F9-8 GOTO 6320,6380,6410
5820 REM-THE GAME HAS BEEN WON
5830 PRINT"YOU HAVE DESTROYED THE KLINGON INVASION FLEET"
5840 PRINT
5850 PRINT"     ***THE FEDERATION IS SAVED***":G1=1
5860 IF (A1=0) OR (B1<>0) THEN 6030
5870 IF LEFT$(S5$,1)<>"E" THEN 6030
5880 IF 3*S1+35*N1+C4>=100 THEN 6030
5890 IF D0-J2<=6 THEN 5920
5900 R8=0.1*S8*(S8+1)+0.1
5910 IF (K1+K2)/(D0-J2)<R8 THEN 6030
5920 PRINT
5930 PRINT"IN FACT, YOU HAVE DONE SO WELL THAT STARFLEET COMMAND"
5940 IF S8=4 THEN 6000
5950 PRINT"PROMOTES YOU ONE STEP IN RANK, ";
5960 IF S8=1 THEN PRINT"FROM BEGINNER TO NOVICE CLASS!"
5970 IF S8=2 THEN PRINT"FROM NOVICE TO SENIOR CLASS!"
5980 IF S8=3 THEN PRINT"FROM SENIOR TO EXPERT CLASS!"
5990 PRINT"   ***CONGRATULATIONS***":GOTO 6030
6000 PRINT"PROMOTES YOU TO 'COMMODORE EMERITUS'."
6010 PRINT
6020 PRINT"NOW YOU CAN RETIRE AND WRITE YOUR OWN STAR TREK GAME!"
6030 GOSUB 11950
6040 RETURN
6050 REM-FED RESOURCES DEPLETED
6060 PRINT"YOUR TIME HAS RUN OUT, AND THE"
6070 PRINT"FEDERATION HAS BEEN CONQUERED.":PRINT
6080 PRINT"YOUR STARSHIP IS NOW KLINGON PROPERY, AND YOU ARE PUT"
6090 PRINT"ON TRIAL AS A WAR CRIMINAL.  ON THE BASIS OF YOUR RECORD,"
6100 IF R1*3>I1 THEN 6130
6110 PRINT"YOU ARE FOUND GUILTY AND SENTENCED TO DEATH!"
6120 A1=0:GOSUB23000:RETURN
6130 PRINT"YOU ARE ACQUITTED":GOSUB 11950:RETURN
6140 REM- L.S. FAILURE
6150 PRINT"YOUR LIFE SUPPORT RESERVES HAVE RUN OUT, AND"
6160 PRINT"YOU WILL SOON DIE OF ASPHYXIATION"
6170 PRINT
6180 PRINT"YOUR STARSHIP IS A DERELICT IN SPACE."
6190 GOTO 6430
6200 REM-ENERGY GONE
6210 PRINT"YOUR ENERGY SUPPLY IS EXHAUSTED.":GOTO10172
6220 REM-BATTLE DEFEAT
6230 PRINT"THE ";S5$;" HAS BEEN DESTROYED IN BATTLE."
6240 GOTO 6430
6250 PRINT"F9=6 INVALID":RETURN
6260 REM-NOVA
6270 PRINT"YOUR STARSHIP HAS BEEN DESTROYED BY A NOVA."
6280 PRINT"NICE SHOT, YOU HOCKEY PUCK!":GOTO10300
6290 REM-SUPERNOVA
6300 PRINT"THE ";S5$;" HAS BEEN INCINERATED BY A SUPERNOVA."
6310 GOTO 6430
6320 REM-ABANDON(NO BASES)
6330 PRINT"YOU HAVE BEEN CAPTURED BY THE KLINGONS.  IF YOU STILL"
6340 PRINT "HAD A STARBASE TO BE RETURNED TO, YOU WOULD HAVE BEEN"
6350 PRINT"REPATRIATED AND GIVEN ANOTHER CHANCE.  SINCE YOU HAVE"
6360 PRINT"NO STARBASES, YOU WILL BE MERCILESSLY TORTURED TO DEATH!"
6370 GOTO 6430
6380 REM - SELF-DESTRUCT
6390 PRINT:PRINT"THE ";S5$;" IS NOW AN EXPANDING CLOUD"
6400 PRINT"OF SUB-ATOMIC PARTICLES...":GOTO 6430
6410 REM-NOT REMATERIALIZED
6420 PRINT"STARBASE WAS UNABLE TO RE-MATERIALIZE YOUR STARSHIP."
6430 PRINT
6440 IF LEFT$(S5$,1)="F" THEN S5$=""
6450 IF LEFT$(S5$,1)="E" THEN S5$="FAERIE QUEENE"
6460 A1=0
6470 IF R1=0 THEN 6590
6480 G3=R4/I3:B8=(R1+2*R2)/(I1+2*I4)
6490 A3=G3/B8
6500 IF A3<1+0.5+RND(1) THEN 6570
6510 PRINT"AS A RESULT OF YOUR ACTIONS, A TREATY WITH THE KLINGON"
6520 PRINT"EMPIRE HAS BEEN SIGNED.  THE TERMS OF THE TREATY ARE"
6530 IF A3<3*RND(1) THEN 6560
6540 PRINT"FAVORABLE TO THE FEDERATION.":PRINT
6550 PRINT"CONGRATULATIONS.":GOTO 6580
6560 PRINT"HIGHLY UNFAVORABLE TO THE FEDERATION.":GOTO 6580
6570 PRINT"THE FEDERATION WILL BE DESTROYED!"
6580 GOSUB 11950:RETURN
6590 PRINT"SINCE YOU TOOK THE LAST KLINGON WITH YOU, YOU ARE"
6600 PRINT"A MARTYR AND A HERO.  SOMEDAY MAYBE THEY'LL ERECT"
6610 PRINT"A STATUE IN YOUR MEMORY.  REST IN PEACE AND TRY NOT"
6620 PRINT"TO THINK ABOUT PIGEONS!":G1=1:A1=0
6630 GOSUB 11950:RETURN
6640 REM - HELP
6650 IF C5$<>"DOCKED" THEN 6680
6660 PRINT"ENSIGN CHEKOV-  'BUT CAPTAIN, WE'RE ALREADY DOCKED!'"
6670 RETURN
6680 IF D4(9)=0 THEN 6700
6690 PRINT"SUBSPACE RADIO DAMAGED...CANNOT TRANSMIT.":RETURN
6700 IF R3<>0 THEN 6730
6710 PRINT"LT. UHURA-  'CAPTAIN, I'M NOT GETTING ANY RESPONSE";
6720 PRINT" FROM STARBASE!'":RETURN
6730 N1=N1+1:IF B6=0 THEN 6750
6740 GOTO 6810
6750 D1=1.000000e+30
6760 FOR L=1 TO R3:X=10*SQR((B2(L)-Q1)^2+(B3(L)-Q2)^2)
6770 IF X>D1 THEN 6790
6780 D1=X:K=L
6790 NEXT L
6800 Q1=B2(K):Q2=B3(K):GOSUB 9340
6810 Q$(S6,S7)="."
6820 PRINT
6830 PRINT"STARBASE IN QUADRANT";Q1;"-";Q2;"RESPONDS --";
6840 PRINT"  ";S5$;" DEMATERIALIZES."
6850 P2=(1-0.9799999^D1)^0.333333
6860 FOR L=1 TO 3
6870 IF L=1 THEN PRINT"1ST ";
6880 IF L=2 THEN PRINT"2ND ";
6890 IF L=3 THEN PRINT"3RD ";
6900 PRINT"ATTEMPT TO RE-MATERIALIZE THE ";S5$;". . . . .";
6910 IF RND(1)>P2 THEN 6940
6920 PRINT"FAILS.":NEXT L
6930 F9=11:GOSUB 5780:RETURN
6940 FOR L=1 TO 5:I=B6+INT(3*RND(1))-1
6950 IF (I<1) OR (I>10) THEN 6990
6960 J=B7+INT(3*RND(1))-1
6970 IF (J<1) OR (J>10) THEN 6990
6980 IF Q$(I,J)="." THEN 7000
6990 NEXT L:PRINT"FAILS.":GOTO 6930
7000 PRINT"SUCCEEDS.":S6=I:S7=J:Q$(I,J)=LEFT$(S5$,1)
7010 GOSUB 4350:PRINT"LT. UHURA-  'CAPTAIN, WE MADE IT!'":RETURN
7020 REM-H ITEM
7030 P4=2:L5=K3:N=1
7040 FOR K=1 TO L5
7050 IF H3(K)=0 THEN 7310
7060 D6=0.9+0.01*RND(1):H2=H3(K)*D6^K7(N)
7070 P3=K6(N)
7080 P=ABS(P3):IF P4*H2<P THEN P=P4*H2
7090 K6(N)=P3-SGN(P3)*ABS(P)
7100 X8=K4(N):Y8=K5(N)
7110 IF H2>4.99 THEN 7130
7120 PRINT"VERY SMALL HIT ON ":GOTO 7140
7130 PRINT FNR(H2);"UNIT HIT ON ";
7140 M$=Q$(X8,Y8)
7150 IF M$="K" THEN PRINT"KLINGON AT";
7160 IF M$="C" THEN PRINT"COMMANDER AT";
7170 PRINT X8;"-";Y8
7180 IF K6(N)<>0 THEN 7220
7190 A5=X8:A6=Y8:T2$=Q$(X8,Y8):GOSUB 4060
7200 IF R1<>0 THEN 7320
7210 F9=1:GOSUB 5780:GOTO 7320
7220 IF K6(N)<0 THEN 7310
7230 IF RND(1)<0.9 THEN 7310
7240 IF K6(N)>(0.4+0.4*RND(1))*P3 THEN 7310
7250 PRINT
7260 PRINT"***MR. SPOCK - 'CAPTAIN, THE VESSEL AT SECTOR";
7270 PRINT X8;"-";Y8
7280 PRINT"   HAS JUST LOST ITS FIREPOWER.'"
7290 PRINT
7300 K6(N)=-K6(N)
7310 N=N+1
7320 NEXT K
7330 RETURN
7340 REM - IMPULSE
7350 J3=0
7360 IF D4(7)<>0 THEN 7610
7370 IF E1<=75 THEN 7420
7380 INPUT"ENTER COURSE AND DISTANCE";D2,D1
7390 IF D2<0 THEN RETURN
7400 P3=50+250*D1
7410 IF P3<E1 THEN 7500
7420 PRINT
7430 PRINT"1ST OFFICER SPOCK-  'CAPTAIN, THE IMPULSE ENGINES"
7440 PRINT"REQUIRE 50 UNITS OF ENERGY TO ENGAGE, PLUS 250 UNITS"
7450 PRINT"PER ";
7460 IF E1>75 THEN 7480
7470 PRINT"QUADRANT.  THEY ARE, THEREFORE, USELESS NOW.'":RETURN
7480 PRINT"QUADRANT.  WE CAN GO, THEREFORE, A MAXIMUM OF ";
7490 PRINT FNR(0.004*(E1-50)-0.05);"QUADRANTS.'":RETURN
7500 T1=D1/0.4
7510 IF T1<R5 THEN 7560
7520 PRINT"1ST OFFICER SPOCK-  'CAPTAIN, OUR SPEED UNDER IMPULSE"
7530 PRINT"POWER IS ONLY 4 SECTORS PER STARDATE.  ARE YOU SURE"
7540 INPUT"WE DARE SPEND THE TIME'";B$
7550 IF LEFT$(B$,1)<>"Y" THEN RETURN
7560 GOSUB 7840:J3=1
7570 IF A2<>0 THEN RETURN
7580 E1=E1-P3
7590 IF E1>0 THEN RETURN
7600 F9=4:GOSUB 5780:RETURN
7610 PRINT"IMPULSE ENGINES DAMAGED.":RETURN
7620 REM - LR SCAN
7630 N$="    #"
7640 PRINT
7650 IF D4(2)<>0 THEN 7830
7660 PRINT"L.R. SCAN FOR QUADRANT";Q1;"-";Q2:PRINT
7670 I=Q1-1:J=Q1+1:K=Q2-1:L=Q2+1
7680 FOR M=I TO J:FOR N=K TO L
7690 IF (M<=0) OR (M>8) THEN 7750
7700 IF (N<=0) OR (N>8) THEN 7750
7710 IF D4(11)=0 THEN S2(M,N)=1
7720 IF G(M,N)>=1000 THEN PRINT"  ***";
7730 IF G(M,N)<1000 THEN PRINT SPC(5-LEN(STR$(G(M,N))));G(M,N);
7740 GOTO 7760
7750 PRINT N$;
7760 NEXT N
7770 PRINT
7780 NEXT M
7790 IF D4(11)=0 THEN RETURN
7800 PRINT
7810 PRINT"***WARNING*** - COMPUTER DISABLED - SCAN NOT RECORDED."
7820 RETURN
7830 PRINT"LONG RANGE SENSORS DAMAGED.":RETURN
7840 REM - MOVE
7850 A5=(15-D2)*0.5235988
7860 D4=-SIN(A5):D6=COS(A5)
7870 B8=ABS(D4)
7880 IF ABS(D6)>B8 THEN B8=ABS(D6)
7890 D4=D4/B8:D6=D6/B8:T5=0:T6=0
7900 IF D0+T1<F1(2) THEN 7930
7910 T5=1:C5$="RED":D1=D1*(F1(2)-D0)/T1+0.1
7920 T1=F1(2)-D0+0.000009999999
7930 Q$(S6,S7)=".":X7=S6:Y7=S7:H9=INT(10*D1*B8+0.5)
7940 IF H9=0 THEN 8040
7950 FOR L=1 TO H9
7960 X7=X7+D4:X1=INT(X7+0.5):Y7=Y7+D6:Y1=INT(Y7+0.5)
7970 IF (X1<1) OR (X1>10) THEN 8210
7980 IF (Y1<1) OR (Y1>10) THEN 8210
7990 IF Q$(X1,Y1)="O" THEN 8020
8000 IF Q$(X1,Y1)<>"." THEN 8090
8010 NEXT L
8020 D1=0.1*SQR((S6-X1)^2+(S7-Y1)^2)
8030 S6=X1:S7=Y1
8040 F4=S6:F5=S7
8050 IF Q$(X1,Y1)<>"O" THEN 8570
8060 T2=FNA(1):T3=FNA(1)
8070 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):PRINT
8080 PRINT"*** SPACE PORTAL ENTERED ***":GOTO 8540
8090 T6=1:K=50*D1/T1:D1=0.1*SQR((S6-X1)^2+(S7-Y1)^2)
8100 IF (Q$(X1,Y1)="K") OR (Q$(X1,Y1)="C") THEN 8200
8110 PRINT:PRINT S5$;" BLOCKED BY ";
8120 IF Q$(X1,Y1)="*" THEN PRINT"STAR AT";
8130 IF Q$(X1,Y1)="B" THEN PRINT"STARBASE AT";
8140 PRINT" SECTOR";X1;"-";Y1;"...."
8150 PRINT"EMERGENCY STOP REQUIRED";FNR(K);"UNITS OF ENERGY."
8160 E1=E1-K
8170 S6=INT(X7-D4+0.5):F4=S6:S7=INT(Y7-D6+0.5):F5=S7
8180 IF E1>0 THEN 8570
8190 F9=4:GOSUB 5780:RETURN
8200 S6=X1:S7=Y1:GOSUB 11790:F4=S6:F5=S7:GOTO 8570
8210 IF K3=0 THEN 8270
8220 FOR L=1 TO K3
8230 F3=SQR((X1-K4(L))^2+(Y1-K5(L))^2)
8240 K8(L)=0.5*(F3+K7(L)):NEXT L
8250 IF G(Q1,Q2)<>1000 THEN GOSUB 1360
8260 IF A2<>0 THEN RETURN
8270 X7=10*(Q1-1)+S6:Y7=10*(Q2-1)+S7
8280 X1=INT(X7+10*D1*B8*D4+0.5)
8290 Y1=INT(Y7+10*D1*B8*D6+0.5):L6=0
8300 L5=0
8310 IF X1>0 THEN 8330
8320 X1=-X1+1:L5=1
8330 IF Y1>0 THEN 8350
8340 Y1=-Y1+1:L5=1
8350 IF X1<=80 THEN 8370
8360 X1=161-X1:L5=1
8370 IF Y1<=80 THEN 8390
8380 Y1=161-Y1:L5=1
8390 IF L5=0 THEN 8410
8400 L6=1:GOTO 8300
8410 IF L6=0 THEN 8510
8420 PRINT:PRINT"*** MESSAGE FROM STARFLEET COMMAND.....STARDATE";
8430 PRINT FNR(D0):PRINT:PRINT"'PERMISSION TO CROSS GALACTIC ";
8440 PRINT"PERIMETER IS HEREBY DENIED.'"
8450 PRINT"        'SHUT DOWN ENGINES IMMMEDIATELY!'"
8460 PRINT
8470 PRINT"SCOTT HERE - 'ENGINES SHUT DOWN AT ";
8480 Z1=INT((X1+9)/10):Z2=INT((Y1+9)/10)
8490 PRINT"QUADRANT";Z1;"-";Z2;",  ";
8500 PRINT"SECTOR";X1-10*(Z1-1);"-";Y1-10*(Z2-1);"'"
8510 IF T5<>0 THEN RETURN
8520 Q1=INT((X1+9)/10):Q2=INT((Y1+9)/10)
8530 S6=X1-10*(Q1-1):S7=Y1-10*(Q2-1)
8540 GOSUB 9670
8550 PRINT:PRINT"ENTERING THE ";G2$;" QUADRANT  (";Q1;"-";Q2;")"
8560 Q$(S6,S7)=LEFT$(S5$,1):GOSUB 9340:RETURN
8570 Q$(S6,S7)=LEFT$(S5$,1)
8580 IF L6=1 THEN RETURN
8590 IF K3=0 THEN 8660
8600 FOR L=1 TO K3
8610 F3=SQR((F4-K4(L))^2+(F5-K5(L))^2)
8620 K8(L)=0.5*(K7(L)+F3)
8630 K7(L)=F3
8640 NEXT L
8650 GOSUB 13700
8660 GOSUB 9290:RETURN
8670 REM-MOVE COM
8680 A=1:B=1
8690 FOR K=1 TO K3
8700 C=K4(K):D=K5(K)
8710 IF Q$(C,D)="C" THEN 8730
8720 NEXT K
8730 N=0:F=K6(K)+100*K3
8740 IF F>1000 THEN N=INT(RND(1)*K7(K)+1)
8750 IF ((C5$="DOCKED") AND ((B4<>Q1) OR (B5<>Q2))) THEN N=-S8
8760 IF N=0 THEN N=INT(((F+200*RND(1))/150)-5)
8770 IF N=0 THEN RETURN
8780 IF (N>0) AND (K7(K)<1.5) THEN RETURN
8790 IF ABS(N)>S8 THEN N=SGN(N)*ABS(S8)
8800 T=ABS(N):P=S6-C:Q=S7-D
8810 IF 2*ABS(P)<ABS(Q) THEN P=0
8820 IF 2*ABS(Q)<ABS(P) THEN Q=0
8830 IF P<>0 THEN P=SGN(P*N)
8840 IF Q<>0 THEN Q=SGN(Q*N)
8850 R=C:S=D:Q$(C,D)="."
8860 FOR L2=1 TO T:L=R+P:M=S+Q
8870 IF (L>0) AND (L<=10) THEN 8890
8880 ON SGN(N)+2 GOTO 9120,8980,8980
8890 IF (M>0) AND (M<=10) THEN 8910
8900 ON SGN(N)+2 GOTO 9120,8920,8920
8910 IF Q$(L,M)="." THEN 9040
8920 IF (Q=B) OR (P=0) THEN 8980
8930 M=S+B
8940 IF (M>0) AND (M<=10) THEN 8960
8950 ON SGN(N)+2 GOTO 9120,8970,8970
8960 IF Q$(L,M)="." THEN 9040
8970 B=-B
8980 IF (P=A) OR (Q=0) THEN 9050
8990 L=R+A
9000 IF (L>0) AND (L<=10) THEN 9020
9010 ON SGN(N)+2 GOTO 9120,9030,9030
9020 IF Q$(L,M)="." THEN 9040
9030 A=-A:GOTO 9050
9040 R=L:S=M
9050 NEXT L2
9060 Q$(R,S)="C"
9070 IF (R=C) AND (S=D) THEN RETURN
9080 K4(K)=R:K5(K)=S:K7(K)=SQR((S6-R)^2+(S7-S)^2)
9090 K8(K)=K7(K):IF N>0 THEN PRINT"***COMMANDER ADVANCES TO";
9100 IF N<0 THEN PRINT"***COMMANDER RETREATS TO";
9110 PRINT" SECTOR";R;"-";S:GOSUB 13700:RETURN
9120 I=Q1+INT((L+9)/10)-1:J=Q2+INT((M+9)/10)-1
9130 IF (I<1) OR (I>8) THEN 9280
9140 IF (J<1) OR (J>8) THEN 9280
9150 FOR L3=1 TO R2
9160 IF (C1(L3)=I) AND (C2(L3)=J) THEN 9280
9170 NEXT L3:PRINT"***COMMANDER ESCAPES TO ";
9180 PRINT"QUADRANT";I;"-";J;"  (AND REGAINS STRENGTH)"
9190 K4(K)=K4(K3):K5(K)=K5(K3):K7(K)=K7(K3):K8(K)=K8(K3)
9200 K6(K)=K6(K3):K3=K3-1:C3=0
9210 IF C5$<>"DOCKED" THEN GOSUB 9290
9220 GOSUB 13700
9230 G(Q1,Q2)=G(Q1,Q2)-100:G(I,J)=G(I,J)+100
9240 FOR L3=1 TO R2
9250 IF (C1(L3)=Q1) AND (C2(L3)=Q2) THEN 9270
9260 NEXT L3
9270 C1(L3)=I:C2(L3)=J:RETURN
9280 A=-A:B=-B:GOTO 9050
9290 REM - NEW COND
9300 C5$="GREEN"
9310 IF E1<1000 THEN C5$="YELLOW"
9320 IF G(Q1,Q2)>99 THEN C5$="RED"
9330 RETURN
9340 REM- NEW QUAD
9350 J4=1:B6=0:B7=0:K3=0:C3=0
9360 U=G(Q1,Q2)
9370 IF U>999 THEN 9650
9380 K3=INT(0.01*U):FOR A=1 TO 10:FOR B=1 TO 10:Q$(A,B)=".":NEXT B:NEXT A
9390 Q$(S6,S7)=LEFT$(S5$,1):U=G(Q1,Q2):IF U<100 THEN 9510
9400 U=U-100*K3:FOR A=1 TO K3
9410 S=FNB(1):K4(A)=S:T=FNB(1):K5(A)=T
9420 IF Q$(S,T)<>"." THEN 9410
9430 Q$(S,T)="K":K7(A)=SQR((S6-S)^2+(S7-T)^2):K8(A)=K7(A)
9440 K6(A)=RND(1)*150+325:NEXT A
9450 IF R2=0 THEN 9500
9460 FOR A=1 TO R2
9470 IF (C1(A)=Q1) AND (C2(A)=Q2) THEN 9490
9480 NEXT A:GOTO 9500
9490 Q$(S,T)="C":K6(K3)=1000+400*RND(1):C3=1
9500 GOSUB 13700
9510 IF U<10 THEN 9550
9520 U=U-10
9530 B6=FNB(1):B7=FNB(1):IF Q$(B6,B7)<>"." THEN 9530
9540 Q$(B6,B7)="B"
9550 GOSUB 9290:IF U<1 THEN RETURN
9560 FOR A=1 TO U
9570 S=FNB(1):T=FNB(1):IF Q$(S,T)<>"." THEN 9570
9580 Q$(S,T)="*":NEXT A
9590 IF (T2<>Q1) OR (T3<>Q2) THEN RETURN
9600 S=FNB(1):T=FNB(1):IF Q$(S,T)<>"." THEN 9600
9610 Q$(S,T)="O":PRINT
9620 PRINT"MR. SPOCK - 'CAPTAIN, THE SHORT-RANGE SENSORS DETECT A"
9630 PRINT"SPACE WARP SOMEWHERE IN THIS QUADRANT.'"
9640 RETURN
9650 FOR A=1 TO 10:FOR B=1 TO 10:Q$(A,B)=".":NEXT B:NEXT A
9660 Q$(S6,S7)=LEFT$(S5$,1):RETURN
9670 G4$="III":L=2:IF Q2>=5 THEN 9690
9680 L=1
9690 G2$=G1$(2*(Q1-1)+L):L=Q2
9700 IF L<=4 THEN 9720
9710 L=Q2-4
9720 G3$="IV":IF L=4 THEN 9740
9730 G3$=LEFT$(G4$,L)
9740 G2$=G2$+" "+G3$:RETURN
9750 REM - NOVA
9760 IF RND(1)>0.1 THEN 9780
9770 GOSUB 13230:RETURN
9780 Q$(A5,A6)=".":PRINT"***STAR AT SECTOR";A5;"-";A6;"NOVAS."
9790 G(Q1,Q2)=G(Q1,Q2)-1:S1=S1+1
9800 B9=1:T6=1:T7=1:K=0:X1=0:Y1=0
9810 H4(B9,1)=A5:H4(B9,2)=A6
9820 FOR M=B9 TO T6:FOR Q=1 TO 3:FOR J=1 TO 3
9830 IF J*Q=4 THEN 10270
9840 J5=H4(M,1)+Q-2:J6=H4(M,2)+J-2
9850 IF (J5<1) OR(J5>10) THEN 10270
9860 IF (J6<1) OR (J6>10) THEN 10270
9870 IF Q$(J5,J6)="." THEN 10270
9880 IF Q$(J5,J6)="O" THEN 10270
9890 IF Q$(J5,J6)<>"*" THEN 9950
9900 IF RND(1)>=0.1 THEN 9920
9910 X2=J5:Y2=J6:GOSUB 13230:RETURN
9920 T7=T7+1:H4(T7,1)=J5:H4(T7,2)=J6:G(Q1,Q2)=G(Q1,Q2)-1
9930 S1=S1+1:PRINT"***STAR AT SECTOR";J5;"-";J6;"NOVAS."
9940 GOTO 10260
9950 IF Q$(J5,J6)<>"B" THEN 10020
9960 G(Q1,Q2)=G(Q1,Q2)-10:FOR V=1 TO R3
9970 IF (B2(V)<>Q1) OR (B3(V)<>Q2) THEN 9990
9980 B2(V)=B2(R3):B3(V)=B3(R3)
9990 NEXT V:R3=R3-1:B6=0:B7=0:B1=B1+1:GOSUB 9290
10000 PRINT"***STARBASE AT SECTOR";J5;"-";J6;"DESTROYED."
10010 GOTO 10260
10020 IF (S6<>J5) OR (S7<>J6) THEN 10120
10030 PRINT"***STARSHIP BUFFETED BY NOVA.":IF S4<>0 THEN 10050
10040 E1=E1-1000:GOTO 10080
10050 IF S3>=1000 THEN 10100
10060 D6=1000-S3:E1=E1-D6:GOSUB 9290:S3=0:S4=0
10070 PRINT"***STARSHIP SHIELDS KNOCKED OUT.":D4(8)=0.005000001*D5*RND(1))*D6
10080 IF E1>0 THEN 10110
10090 F9=7:GOSUB 5780:RETURN
10100 S3=S3-1000
10110 X1=X1+S6-H4(M,1):Y1=Y1+S7-H4(M,2):K=K+1:GOTO 10270
10120 IF Q$(J5,J6)<>"C" THEN 10250
10130 FOR V=1 TO K3
10140 IF (K4(V)=J5) AND (K5(V)=J6) THEN 10160
10150 NEXT V
10160 K6(V)=K6(V)-800:IF K6(V)<=0 THEN 10250
10170 N5=J5+J5-H4(M,1):N6=J6+J6-H4(M,2)
10180 PRINT"***COMMANDER AT SECTOR";J5;"-";J6;"DAMAGED";
10190 IF (N5<1) OR (N5>10) OR (N6<1) OR (N6>10) THEN 10240
10200 PRINT" AND BUFFETED TO SECTOR";N5;"-";N6
10210 Q$(N5,N6)="C":K4(V)=N5:K5(V)=N6
10220 K7(V)=SQR((S6-N5)^2+(S7-N6)^2):K8(V)=K7(V)
10230 Q$(J5,J6)="."
10240 PRINT:GOTO 10270
10250 A5=J5:A6=J6:T2$=Q$(J5,J6):GOSUB 4060:GOTO 10270
10260 PRINT:Q$(J5,J6)="."
10270 NEXT J:NEXT Q:NEXT M
10280 IF T6=T7 THEN 10300
10290 B9=T6+1:T6=T7:GOTO 9820
10300 IF K=0 THEN RETURN
10310 D1=K*0.1
10320 IF X1<>0 THEN X1=SGN(X1)
10330 IF Y1<>0 THEN Y1=SGN(Y1)
10340 I=3*(X1+1)+Y1+2
10350 D2=C5(I)
10360 IF D2=0 THEN D1=0
10370 IF D1=0 THEN RETURN
10380 PRINT:PRINT"FORCE OF NOVA DISPLACES STARSHIP."
10390 GOSUB 7840:RETURN
10400 REM-PHASERS
10410 P=2:J3=1
10420 IF C5$<>"DOCKED" THEN 10440
10430 PRINT"PHASERS CAN'T BE FIRED THRU BASE SHIELDS.":GOTO 10520
10440 IF D4(3)=0 THEN 10460
10450 PRINT"PHASER BANKS DAMAGED.":GOTO 10520
10460 IF S4=0 THEN 10480
10470 PRINT"SHIELDS MUST BE DOWN TO FIRE PHASERS.":GOTO 10520
10480 IF K3>0 THEN 10530
10490 PRINT
10500 PRINT"MR. SPOCK - 'CAPTAIN, THE SHORT-RANGE SENSORS"
10510 PRINT"    DETECT NO KLINGONS IN THIS QUADRANT.'"
10520 J3=0:RETURN
10530 PRINT"PHASERS LOCKED ON TARGET.  ENERGY AVAILABLE=";
10540 PRINT 0.01*INT(100*E1)
10550 INPUT"UNITS TO FIRE";P1:IF P1<E1 THEN 10570
10560 PRINT"ENERGY AVAILABLE =";:GOTO 10540
10570 IF P1>0 THEN 10590
10580 J3=0:RETURN
10590 E1=E1-P1
10600 IF D4(11)=0 THEN 10630
10610 P1=P1*(RND(1)*0.5+0.5)
10620 PRINT:PRINT"COMPUTER MALFUNCTION HAMPERS PHASER ACCURACY.":PRINT
10630 E=P1:IF K3=0 THEN 10800
10640 E=0:T5=(K3*(K3+1))/2
10650 FOR I=1 TO K3:H3(I)=((K3+1-I)/T5)*P1
10660 H5(I)=ABS(K6(I))/(P*0.9^K7(I))
10670 IF H3(I)<=H5(I) THEN 10690
10680 E=E+(H3(I)-H5(I)):H3(I)=H5(I)
10690 NEXT I
10700 IF E=0 THEN 10770
10710 FOR I=1 TO K3:R7=H5(I)-H3(I)
10720 IF R7<=0 THEN 10750
10730 IF R7>=E THEN 10760
10740 H3(I)=H5(I):E=E-R7
10750 NEXT I:GOTO 10770
10760 H3(I)=H3(I)+E:E=0
10770 GOSUB 7020
10780 IF (E<>0) AND (A2=0) THEN 10800
10790 J3=1:RETURN
10800 PRINT FNR(E);"EXPENDED ON EMPTY SPACE.":J3=1:RETURN
10810 REM - PHOTONS
10820 J3=1:IF D4(4)=0 THEN 10840
10830 PRINT"PHOTON TUBES DAMAGED.":GOTO 10880
10840 IF T4<>0 THEN 10860
10850 PRINT"NO TORPEDOS LEFT.":GOTO 10880
10860 INPUT"TORPEDO COURSE";C6
10870 IF C6>=0 THEN 10890
10880 J3=0:RETURN
10890 INPUT"BURST OF 3";B$:N=1
10900 IF LEFT$(B$,1)="N" THEN 10990
10910 IF LEFT$(B$,1)<>"Y" THEN 10890
10920 IF T4>2 THEN 10940
10930 PRINT"NO BURST.  ONLY";T4;"TORPEDOS LEFT.":GOTO 10880
10940 INPUT"SPREAD ANGLE (3 - 30 DEG)";G2
10950 IF G2<0 THEN 10880
10960 IF (G2<3) OR (G2>30) THEN 10940
10970 G2=FND(G2)
10980 N=3
10990 REM - CONTINUE
11000 FOR Z6=1 TO N
11010 IF C5$<>"DOCKED" THEN T4=T4-1
11020 Z7=Z6:R=RND(1)
11030 R=(R+RND(1))*0.5-0.5
11040 IF (R>=-0.4) AND (R<=0.4) THEN 11110
11050 R=(RND(1)+1.2)*R:IF N=3 THEN 11070
11060 PRINT"***TORPEDO MISFIRES...":GOTO 11080
11070 PRINT"***TORPEDO NUMBER";Z6;"MISFIRES..."
11080 IF RND(1)>0.2 THEN 11110
11090 PRINT"***PHOTON TUBES DAMAGED BY MISFIRE."
11100 D4(4)=D5*(1+2*RND(1)):GOTO 11770
11110 IF (S4<>0) OR (C5$="DOCKED") THEN R=R+0.001*S3*R
11120 A3=C6+0.25*R:IF N=1 THEN 11150
11130 A8=(15-A3+(2-Z6)*G2)*0.5235988:PRINT
11140 PRINT"TRACK FOR TORPEDO NUMBER";Z7;"--":GOTO 11160
11150 PRINT:PRINT"TORPEDO TRACK --":A8=(15-A3)*0.5235988
11160 X4=-SIN(A8):Y4=COS(A8):B8=ABS(X4)
11170 IF ABS(Y4)>ABS(X4) THEN B8=ABS(Y4)
11180 X4=X4/B8:Y4=Y4/B8:X5=S6:Y5=S7
11190 FOR L9=1 TO 15:X5=X5+X4:A5=INT(X5+0.5)
11200 IF (A5<1) OR (A5>10) THEN 11750
11210 Y5=Y5+Y4:A6=INT(Y5+0.5)
11220 IF (A6<1) OR (A6>10) THEN 11750
11230 IF (L9=5) OR (L9=9) THEN PRINT
11240 PRINT FNR(X5);"-";FNR(Y5);", ";
11250 IF Q$(A5,A6)<>"." THEN 11270
11260 GOTO 11740
11270 PRINT:IF Q$(A5,A6)="K" THEN 11320
11280 IF Q$(A5,A6)<>"C" THEN 11540
11290 IF RND(1)>0.1 THEN 11320
11300 PRINT"***COMMANDER AT SECTOR";A5;"-";A6;"USES ANTI-PHOTON";
11310 PRINT" DEVICE!":PRINT"   TORPEDO NEUTRALIZED.":GOTO 11760
11320 FOR V=1 TO K3
11330 IF (A5=K4(V)) AND (A6=K5(V)) THEN 11350
11340 NEXT V
11350 K=K6(V):W3=200+800*RND(1)
11360 IF ABS(K)<W3 THEN W3=ABS(K)
11370 K6(V)=K-SGN(K)*ABS(W3):IF K6(V)<>0 THEN 11390
11380 T2$=Q$(A5,A6):GOSUB 4060:GOTO 11760
11390 IF Q$(A5,A6)="K" THEN PRINT"***KLINGON AT";
11400 IF Q$(A5,A6)="C" THEN PRINT"***COMMANDER AT";
11410 PRINT A5;"-";A6;
11420 A7=A8+2.5*(RND(1)-0.5)
11430 W3=ABS(-SIN(A7)):IF ABS(COS(A7))>W3 THEN W3=ABS(COS(A7))
11440 X7=-SIN(A7)/W3:Y7=COS(A7)/W3
11450 P=INT(A5+X7+0.5):Q=INT(A6+Y7+0.5)
11460 IF (P<1) OR (P>10) OR (Q<1) OR (Q>10) THEN 11530
11470 IF Q$(P,Q)<>"." THEN 11530
11480 Q$(P,Q)=Q$(A5,A6):Q$(A5,A6)=".":PRINT"DAMAGED--"
11490 PRINT"   DISPLACED BY BLAST TO SECTOR";P;"-";Q
11500 K4(V)=P:K5(V)=Q:K7(V)=SQR((S6-P)^2+(S7-Q)^2)
11510 K8(V)=K7(V)
11520 GOSUB 13700:GOTO 11760
11530 PRINT"DAMAGED, BUT NOT DESTROYED.":GOTO 11760
11540 IF Q$(A5,A6)<>"B" THEN 11620
11550 PRINT"***STARBASE DESTROYED...CONGRATULATIONS...YOU TURKEY!"
11560 IF S2(Q1,Q2)<0 THEN S2(Q1,Q2)=0
11570 FOR W=1 TO R3
11580 IF (B2(W)<>Q1) OR (B3(W)<>Q2) THEN 11600
11590 B2(W)=B2(R3):B3(W)=B3(R3)
11600 NEXT W:Q$(A5,A6)=".":R3=R3-1:B6=0:B7=0
11610 G(Q1,Q2)=G(Q1,Q2)-10:B1=B1+1:GOSUB 9290:GOTO 11760
11620 IF Q$(A5,A6)<>"*" THEN 11700
11630 IF RND(1)>0.15 THEN 11660
11640 PRINT"***STAR AT SECTOR";A5;"-";A6;"UNAFFECTED BY PHOTON BLAST"
11650 GOTO 11760
11660 X2=A5:Y2=A6:GOSUB19000:A5=X2:A6=Y2
11670 IF G(Q1,Q2)=1000 THEN RETURN
11680 IF A2<>0 THEN RETURN
11690 GOTO 11760
11700 PRINT:PRINT"AAAAAIIIIIIIEEEEEEEAAAAAAAUUUUUUGGGGGGGHHHHHHHHHH!!!"
11710 PRINT"    HACK!     HACK!    COUGH!      *CHOKE!*"
11720 PRINT:PRINT"MR. SPOCK-  'FASCINATING!'":Q$(A5,A6)="."
11730 T2=0:T3=0:GOTO 11760
11740 NEXT L9
11750 PRINT:PRINT"TORPEDO MISSED!"
11760 NEXT Z6
11770 IF R1<>0 THEN RETURN
11780 F9=1:GOSUB 5780:RETURN
11790 REM - RAM
11800 PRINT:PRINT"*** RED ALERT!!   RED ALERT!! ***":PRINT
11810 PRINT"*** COLLISION IMMINENT!!":PRINT
11820 PRINT"*** ";S5$;" RAMS ";:W7=1:IF Q$(S6,S7)="C" THEN W7=2
11830 IF W7=1 THEN PRINT"KLINGON AT ";
11840 IF W7=2 THEN PRINT"COMMANDER AT ";
11850 PRINT"SECTOR";S6;"-";S7:A5=S6:A6=S7:T2$=Q$(S6,S7)
11860 GOSUB 4060:PRINT"***";S5$;" HEAVILY DAMAGED."
11870 K=INT(5+RND(1)*20):PRINT"***SICKBAY REPORTS";K;"CASUALTIES!"
11880 C4=C4+K:FOR L=1 TO 12:I=RND(1)
11890 J=(3.5*W7*(RND(1)+I)+1)*D5
11900 IF L=6 THEN J=J/3
11910 D4(L)=D4(L)+T1+J:NEXTL:D4(6)=D4(6)-3
11920 IF D4(6)<0 THEN D4(6)=0
11930 S4=0:IF R1<>0 THEN RETURN
11940 F9=1:GOSUB 5780:RETURN
11950 REM - SCORE
11960 P=D0-J2:IF (P<>0) AND (R1=0) THEN 11980
11970 IF P<5 THEN P=5
11980 N=(K2+K1)/P:K=INT(500*N+0.5):L=0
11990 IF G1<>0 THEN L=100*S8
12000 I=0
12010 IF LEFT$(S5$,1)="E" THEN M=0
12020 IF LEFT$(S5$,1)="F" THEN M=1
12030 IF LEFT$(S5$,1)=""THEN M=2
12040 IF A1=0 THEN I=200
12050 J=10*K1+50*K2+K+L-I-100*B1-100*M-35*N1-3*S1-C4
12060 PRINT:IF J<>0 THEN 12080
12070 PRINT"AS YET, YOU HAVE NO SCORE.":RETURN
12080 PRINT"YOUR SCORE --":PRINT:IF K1=0 THEN 12100
12090 PRINT K1;TAB(5);"ORDINARY KLINGON(S) DESTROYED";TAB(36);10*K1
12100 IF K2=0 THEN 12120
12110 PRINT K2;TAB(5);"KLINGON COMMANDER(S) DESTROYED";TAB(36);50*K2
12120 IF K=0 THEN 12150
12130 PRINT FNR(N);TAB(5);"KLINGONS PER STARDATE, AVERAGE";
12140 PRINT TAB(36);K
12150 IF S1=0 THEN 12170
12160 PRINT S1;TAB(5);"STAR(S) DESTROYED";TAB(36);-3*S1
12170 IF B1=0 THEN 12190
12180 PRINT B1;TAB(5);"STARBASES DESTROYED";TAB(36);-100*B1
12190 IF N1=0 THEN 12210
12200 PRINT N1;TAB(5);"SOS CALL(S) TO A STARBASE";TAB(36);-35*N1
12210 IF C4=0 THEN 12230
12220 PRINT C4;TAB(5);"CASUALTIES INCURRED";TAB(36);-C4
12230 IF M=0 THEN 12250
12240 PRINT M;TAB(5);"SHIP(S) LOST OR DESTROYED";TAB(36)-100*M
12250 IF A1<>0 THEN 12270
12260 PRINT"PENALTY FOR GETTING YOURSELF KILLED";TAB(36);-200
12270 IF G1=0 THEN 12290
12280 PRINT TAB(5);"BONUS FOR WINNING ";S$(S8);" GAME";TAB(36);L
12290 PRINT TAB(5);"-------------------------------------"
12300 PRINT TAB(28);"TOTAL";TAB(36);J;"**":RETURN
12310 REM-SETUP
12320 A2=0:G1=0:GOSUB 2950:S5$="ENTERPRISE"
12330 I7=5000:E1=I7:I8=2500:S3=I8:S4=0:S9=S4:J1=4:L1=J1
12340 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):I9=10:T4=I9
12350 W1=5:W2=25:FOR I=1 TO 12:D4(I)=0:NEXT
12360 J2=100*INT(31*RND(1)+20):D0=J2:K1=0:K2=0:N1=0:N2=0:R6=0:C4=0
12370 A1=1:D3=0.25:FOR I=1 TO 8:FOR J=1 TO 8:S2(I,J)=0:NEXT J:NEXT I
12380 F1(1)=D0-0.5*I5*LOG(RND(1)):F1(5)=1.000000e+30
12390 F1(2)=D0-1.5*(I5/R2)*LOG(RND(1)):I6=0
12400 F1(3)=D0-0.3*I5*LOG(RND(1)):F1(4)=D0-0.3*I5*LOG(RND(1))
12410 FOR I=1 TO 8:FOR J=1 TO 8:K=INT(RND(1)*9+1):I6=I6+K
12420 G(I,J)=K:NEXT J:NEXT I:S1=0
12430 FOR I=1 TO I2
12440 X=INT(RND(1)*6+2):Y=INT(RND(1)*6+2)
12450 IF G(X,Y)>=10 THEN 12440
12460 IF I<2 THEN 12500
12470 K=I-1:FOR J=1 TO K:D1=SQR((B2(J)-X)^2+(B3(J)-Y)^2)
12480 IF D1<2 THEN 12440
12490 NEXT J
12500 B2(I)=X:B3(I)=Y:S2(X,Y)=-1:G(X,Y)=G(X,Y)+10:NEXT I
12510 B1=0:K=I1-I4:L=INT(0.25*S8*(9-L2)+1)
12520 M=INT((1-RND(1)^2)*L):IF M>K THEN M=K
12530 N=100*M
12540 X=FNA(1):Y=FNA(1):IF G(X,Y)+N>999 THEN 12540
12550 G(X,Y)=G(X,Y)+N:K=K-M:IF K<>0 THEN 12520
12560 FOR I=1 TO I4
12570 X=FNA(1):Y=FNA(1):IF (G(X,Y)<99) AND(RND(1)<0.75) THEN 12570
12580 IF G(X,Y)>899 THEN 12570
12590 IF I=1 THEN 12620
12600 M=I-1:FOR J=1 TO M:IF (C1(J)=X) AND (C2(J)=Y) THEN 12570
12610 NEXT J
12620 G(X,Y)=G(X,Y)+100:C1(I)=X:C2(I)=Y:NEXT I
12630 I=INT(D0):PRINT:S0=0
12640 T2=FNA(1):T3=FNA(1):IF G(T2,T3)<100 THEN 12640
12650 IF S8<>1 THEN 12770
12660 PRINT"IT IS STARDATE";I;"...THE ORGANIAN PEACE TREATY BETWEEN"
12670 PRINT"THE UNITED FEDERATION OF PLANETS AND THE KLINGON EMPIRE"
12680 PRINT"HAS COLLAPSED AND THE FEDERATION IS BEING ATTACKED BY A"
12690 PRINT"DEADLY KLINGON INVASION FLEET.  AS CAPTAIN OF THE STARSHIP"
12700 PRINT"U.S.S. ENTERPRISE, IT IS YOUR MISSION TO SEEK OUT AND"
12710 PRINT"DESTROY THIS INVASION FORCE OF";I1;"BATTLE CRUISERS."
12720 PRINT:PRINT"YOU HAVE AN INITIAL ALLOTMENT OF";INT(I5);
12730 PRINT"STARDATES":PRINT"TO COMPLETE YOUR MISSION."
12740 PRINT"AS THE MISSION PROCEEDS, YOU MAY BE GIVEN MORE TIME."
12750 PRINT:PRINT"YOU WILL HAVE";I2;"SUPPORTING STARBASE(S).":PRINT
12760 GOTO 12850
12770 PRINT"STARDATE..............";I
12780 PRINT"NUMBER OF KLINGONS....";I1
12790 PRINT"NUMBER OF STARDATES...";INT(I5)
12800 PRINT"NUMBER OF STARBASES...";I2
12810 PRINT"STARBASE LOCATIONS....";
12820 FOR I=1 TO I2:PRINT B2(I);"-";B3(I);
12830 IF I<>I2 THEN PRINT", ";
12840 NEXT I:PRINT:PRINT
12850 GOSUB 9670
12860 PRINT"THE ";S5$;" IS CURRENTLY IN THE ";G2$;" QUADRANT."
12870 GOSUB 9340:RETURN
12880 REM - SETWARP
12890 INPUT"WARP FACTOR";K
12900 PRINT
12910 IF K<1 THEN 13040
12920 IF K>10 THEN 13050
12930 J=W1:W1=K:W2=W1*W1
12940 IF (W1<=J) OR (W1<=6) THEN 12970
12950 IF W1<=8 THEN 12980
12960 IF W1>8 THEN 13000
12970 PRINT"ENSIGN CHEKOV - 'WARP FACTOR";W1;"CAPTAIN'":RETURN
12980 PRINT"ENGINEER SCOTT - 'AYE, BUT OUR MAXIMUM SAFE SPEED";
12990 PRINT" IS WARP 6.'":RETURN
13000 IF W1=10 THEN 13030
13010 PRINT"ENGINEER SCOTT-'AYE, CAPTAIN, BUT OUR ENGINES MAY NOT ";
13020 PRINT"TAKE IT.'":RETURN
13030 PRINT"ENGINEER SCOTT-'AYE, CAPTAIN, WE'LL GIVE IT A TRY.'":RETURN
13040 PRINT"ENSIGN CHEKOV-'WE CAN'T GO BELOW WARP 1, CAPTAIN.'":RETURN
13050 PRINT"ENSIGN CHEKOV-'OUR TOP SPEED IS WARP 10, CAPTAIN.'"
13060 RETURN
13070 REM - SHIELDS
13080 J3=0:IF D4(8)<>0 THEN 13200
13090 IF S4<>0 THEN 13130
13100 INPUT"SHIELDS ARE DOWN.  DO YOU WANT THEM UP";B$
13110 IF LEFT$(B$,1)="Y" THEN 13160
13120 RETURN
13130 INPUT"SHIELDS ARE UP.  DO YOU WANT THEM DOWN";B$
13140 IF LEFT$(B$,1)="Y" THEN 13190
13150 RETURN
13160 S4=1:S9=1:IF C5$<>"DOCKED" THEN E1=E1-50
13170 PRINT"SHIELDS RAISED.":IF E1<=0 THEN 13210
13180 J3=1:RETURN
13190 S4=0:S9=1:PRINT"SHIELDS LOWERED.":J3=1:RETURN
13200 PRINT"SHIELDS DAMAGED AND DOWN.":RETURN
13210 PRINT:PRINT"SHIELDS USE UP LAST OF THE ENERGY."
13220 F9=4:GOSUB 5780:RETURN
13230 REM - SUPERNOVA
13240 IF X2<>0 THEN 13340
13250 N=INT(RND(1)*I6+1):FOR X=1 TO 8:FOR Y=1 TO 8
13260 N=N-(G(X,Y)-INT(G(X,Y)/10)*10):IF N<=0 THEN 13280
13270 NEXT Y:NEXT X:RETURN
13280 IF (X<>Q1) OR (Y<>Q2) THEN 13400
13290 IF J4<>0 THEN 13400
13300 N=INT(RND(1)*(G(X,Y)-INT(G(X,Y)/10)*10))+1
13310 FOR X3=1 TO 10:FOR Y3=1 TO 10:IF Q$(X3,Y3)<>"*" THEN 13330
13320 N=N-1:IF N=0 THEN 13340
13330 NEXT Y3:NEXT X3
13340 PRINT:PRINT"*** RED ALERT!!  RED ALERT!! ***
13350 X3=X2:Y3=Y2
13360 PRINT"*** INCIPIENT SUPERNOVA DETECTED AT SECTOR";X3;"-";Y3
13370 X=Q1:Y=Q2:K=(X2-S6)^2+(Y2-S7)^2
13380 IF K>1.5 THEN 13440
13390 PRINT"*** EMERGENCY AUTO-OVERRIDE JAMMED ***":A2=1:GOTO 13440
13400 IF D4(9)<>0 THEN 13440
13410 PRINT:PRINT"MESSAGE FROM STARFLEET COMMAND...STARDATE";INT(D0)
13420 PRINT"'SUPERNOVA IN QUADRANT";X;"-";Y;
13430 PRINT"....CAUTION ADVISED'"
13440 N=G(X,Y):R=INT(N/100):Q=0
13450 IF (X<>Q1) OR (Y<>Q2) THEN 13470
13460 K3=0:C3=0
13470 IF R=0 THEN 13530
13480 R1=R1-R:IF R2=0 THEN 13530
13490 FOR L=1 TO R2:IF (C1(L)<>X) OR (C2(L)<>Y) THEN 13520
13500 C1(L)=C1(R2):C2(L)=C2(R2):C1(R2)=0:C2(R2)=0
13510 R2=R2-1:R=R-1:Q=1:IF R2=0 THEN F1(2)=1.000000e+30
13520 NEXT L
13530 IF R3=0 THEN 13570
13540 FOR L=1 TO R3:IF (B2(L)<>X) OR (B3(L)<>Y) THEN 13560
13550 B2(L)=B2(R3):B3(L)=B3(R3):B2(R3)=0:B3(R3)=0:R3=R3-1
13560 NEXT L
13570 IF X2=0 THEN 13610
13580 N=G(X,Y)-INT(G(X,Y)/100)*100
13590 S1=S1+(N-INT(N/10)*10):B1=B1+INT(N/10)
13600 K1=K1+R:K2=K2+Q
13610 IF (S2(X,Y)<>0) AND (D4(9)<>0) THEN S2(X,Y)=1000+G(X,Y)
13620 IF (D4(9)=0) OR ((Q1=X) AND (Q2=Y)) THEN S2(X,Y)=1
13630 G(X,Y)=1000
13640 IF (R1<>0) OR ((X=Q1) AND (Y=Q2)) THEN 13680
13650 PRINT:PRINT"MR. SPOCK-  'CAPTAIN, A SUPERNOVA IN QUADRANT";
13660 PRINTX;"-";Y;"HAS JUST DESTROYED THE LAST OF THE KLINGONS.'"
13670 F9=1:GOSUB 5780:RETURN
13680 IF A2=0 THEN RETURN
13690 F9=8:GOSUB 5780:RETURN
13700 REM - SORT KL
13710 IF K3<=1 THEN RETURN
13720 Z4=0
13730 FOR O=1 TO K3-1:IF K7(O)<=K7(O+1) THEN 13800
13740 K=K7(O):K7(O)=K7(O+1):K7(O+1)=K
13750 K=K8(O):K8(O)=K8(O+1):K8(O+1)=K
13760 K=K4(O):K4(O)=K4(O+1):K4(O+1)=K
13770 K=K5(O):K5(O)=K5(O+1):K5(O+1)=K
13780 K=K6(O):K6(O)=K6(O+1):K6(O+1)=K
13790 Z4=1
13800 NEXT O
13810 IF Z4<>0 THEN 13720
13820 RETURN
13830 REM-SR SCAN
13840 IF D (1)<>0 THEN 14080
13850 PRINT:PRINT"    1 2 3 4 5 6 7 8 9 10"
13860 FOR I=1 TO 10:IF I<10 THEN PRINT" ";
13870 PRINT I;:FOR J=1 TO 10:PRINT Q$(I,J);" ";:NEXT J
13880 ON I GOTO 13900,13910,13930,13940,13990
13890 ON I-5 GOTO 14000,14010,14020,14050,14060
13900 PRINT" STARDATE      ";FNR(D0):GOTO 14070
13910 IF C5$<>"DOCKED" THEN GOSUB 9290
13920 PRINT" CONDITION      ";C5$:GOTO 14070
13930 PRINT" POSITION      ";Q1;"-";Q2;", ";S6;"-";S7:GOTO 14070
13940 PRINT" LIFE SUPPORT   ";:IF D4(5)<>0 THEN 13960
13950 PRINT"ACTIVE":GOTO 14070
13960 IF C5$<>"DOCKED" THEN 13980
13970 PRINT"DAMAGED, SUPPORTED BY STARBASE":GOTO 14070
13980 PRINT"DAMAGED, RESERVES=";FNS(L1):GOTO 14070
13990 PRINT" WARP FACTOR   ";FNR(W1):GOTO 14070
14000 PRINT" ENERGY";SPC(8);0.01*INT(100*E1):GOTO 14070
14010 PRINT" TORPEDOS      ";T4:GOTO 14070
14020 PRINT" SHIELDS        ";:B$="DOWN,":IF S4<>0 THEN B$="UP,"
14030 IF D4(8)>0 THEN B$="DAMAGED,"
14040 PRINT B$;INT(100*S3/I8+0.5);"%":GOTO 14070
14050 PRINT" KLINGONS LEFT ";R1:GOTO 14070
14060 PRINT" TIME LEFT     ";FNS(R5)
14070 NEXT I:RETURN
14080 PRINT"SHORT RANGE SENSORS DAMAGED.":RETURN
14090 REM - TIMEWARP
14100 PRINT:PRINT"*** TIME WARP ENTERED ***":PRINT"YOU ARE TRAVELING ";
14110 IF S0<>0 THEN 14150
14120 T1=-0.5*I5*LOG(RND(1))
14130 PRINT"FORWARD IN TIME";FNR(T1);"STARDATES."
14140 F1(2)=F1(2)+T1:GOTO 14310
14150 M=D0:D0=D9(1)
14160 PRINT"BACKWARD IN TIME";FNR(M-D0);"STARDATES.":S0=0
14170 R1=D9(2):R2=D9(3):R3=D9(4):R4=D9(5):R5=D9(6)
14180 S1=D9(7):B1=D9(8):K1=D9(9):K2=D9(10)
14190 FOR I=1 TO 8:FOR J=1 TO 8:G(I,J)=D9(I-1+8*(J-1)+11):NEXT J:NEXT I
14200 FOR I=75 TO 84:C1(I-74)=D9(I):NEXT
14210 FOR I=85 TO 94:C2(I-84)=D9(I):NEXT
14220 FOR I=95 TO 99:B2(I-94)=D9(I):NEXT
14230 FOR I=100 TO 104:B3(I-99)=D9(I):NEXT:B4=D9(105):B5=D9(106)
14240 F1(1)=D0-0.5*I5*LOG(RND(1))
14250 IF R2<>0 THEN F1(2)=D0-(I5/R2)*LOG(RND(1))
14260 F1(3)=D0-0.5*I5*LOG(RND(1))
14270 FOR I=1 TO 8:FOR J=1 TO 8:IF 1<S2(I,J) THEN S2(I,J)=1
14280 NEXT J:NEXT I
14290 PRINT
14300 PRINT"SPOCK HAS RECONSTRUCTED A CORRECT STAR CHART FROM MEMORY."
14310 GOSUB 9340:RETURN
14320 REM - TRANSFER
14330 J3=0
14340 IF D4(12)<>0 THEN 14470
14350 INPUT"NUMBER OF UNITS TO SHIELDS";Z3
14360 IF Z3<0 THEN RETURN
14370 IF E1+S3-Z3>0 THEN 14400
14380 PRINT"SCOTT HERE-  'WE ONLY HAVE";FNR(E1+S3);"UNITS LEFT.'"
14390 RETURN
14400 E1=E1+S3-Z3:S3=Z3:PRINT"--ENERGY TRANSFER COMPLETE--"
14410 PRINT"(SHIP ENERGY=";FNR(E1);"    SHIELD ENERGY=";FNR(S3);")"
14420 J3=1
14430 T1=0.1:P5=(K3+4*C3)/48:IF P5<0.1 THEN P5=0.1
14440 IF P5>RND(1) THEN GOSUB 1360
14450 IF A2<>0 THEN RETURN
14460 GOSUB 4600:RETURN
14470 PRINT"TRANSFER PANEL DAMAGED.":RETURN
14480 REM - VISUAL
14490 INPUT"WHICH DIRECTION";Z
14500 PRINT
14510 J3=0:IF Z<0 THEN RETURN
14520 IF Z<=12 THEN 14540
14530 PRINT"DIRECTIONS ARE FROM 0 TO 12 ONLY":GOTO 14490
14540 T1=0.05:P=(K3+4*C3)/48:IF P<0.05 THEN P=0.05
14550 IF P>RND(1) THEN GOSUB 1360
14560 IF A2<>0 THEN RETURN
14570 GOSUB 4600:J3=1:IF A2<>0 THEN RETURN
14580 D5=INT((Z/12)*8+1.5):IF D5>8 THEN D5=1
14590 FOR I=1 TO 5:FOR J=1 TO 5:V$(I,J)=" ":NEXT J:NEXT I:N=0
14600 V$(3,3)=LEFT$(S5$,1)
14610 ON D5 GOTO 14620,14660,14700,14740,14780,14820,14860,14900
14620 I=S6-2:J=S7-2:V$(1,1)=Q$:IF (J>0) AND (I>0) THEN V$(1,1)=Q$(I,J)
14630 I=S6-1:J=S7-1:V$(2,2)=Q$:IF (I>0) AND (J>0) THEN V$(2,2)=Q$(I,J)
14640 N=N+1:IF N=3 THEN 14950
14650 I=S6-2:V$(1,2)=Q$:IF (I>0) AND (J>0) THEN V$(1,2)=Q$(I,J)
14660 I=S6-2:V$(1,3)=Q$:IF I>0 THEN V$(1,3)=Q$(I,S7)
14670 I=S6-1:V$(2,3)=Q$:IF I>0 THEN V$(2,3)=Q$(I,S7)
14680 N=N+1:IF N=3 THEN 14950
14690 I=S6-2:J=S7+1:V$(1,4)=Q$:IF (I>0) AND (J<11) THEN V$(1,4)=Q$(I,J)
14700 I=S6-2:J=S7+2:V$(1,5)=Q$:IF (I>0) AND (J<11) THEN V$(1,5)=Q$(I,J)
14710 I=S6-1:J=S7+1:V$(2,4)=Q$:IF (I>0) AND (J<11) THEN V$(2,4)=Q$(I,J)
14720 N=N+1:IF N=3 THEN 14950
14730 J=S7+2:V$(2,5)=Q$:IF (I>0) AND (J<11) THEN V$(2,5)=Q$(I,J)
14740 J=S7+2:V$(3,5)=Q$:IF J<11 THEN V$(3,5)=Q$(S6,J)
14750 J=S7+1:V$(3,4)=Q$:IF J<11 THEN V$(3,4)=Q$(S6,J)
14760 N=N+1:IF N=3 THEN 14950
14770 I=S6+1:J=S7+2:V$(4,5)=Q$:IF (I<11) AND (J<11) THEN V$(4,5)=Q$(I,J)
14780 I=S6+2:J=S7+2:V$(5,5)=Q$:IF (I<11) AND (J<11) THEN V$(5,5)=Q$(I,J)
14790 I=S6+1:J=S7+1:V$(4,4)=Q$:IF (I<11) AND (J<11) THEN V$(4,4)=Q$(I,J)
14800 N=N+1:IF N=3 THEN 14950
14810 I=S6+2:V$(5,4)=Q$:IF (I<11) AND (J<11) THEN V$(5,4)=Q$(I,J)
14820 I=S6+2:V$(5,3)=Q$:IF I<11 THEN V$(5,3)=Q$(I,S7)
14830 I=S6+1:V$(4,3)=Q$:IF I<11 THEN V$(4,3)=Q$(I,S7)
14840 N=N+1:IF N=3 THEN 14950
14850 I=S6+2:J=S7-1:V$(5,2)=Q$:IF (I<11) AND (J>0) THEN V$(5,2)=Q$(I,J)
14860 I=S6+2:J=S7-2:V$(5,1)=Q$:IF (I<11) AND (J>0) THEN V$(5,1)=Q$(I,J)
14870 I=S6+1:J=S7-1:V$(4,2)=Q$:IF (I<11) AND (J>0) THEN V$(4,2)=Q$(I,J)
14880 N=N+1:IF N=3 THEN 14950
14890 J=S7-2:V$(4,1)=Q$:IF (I<11) AND (J>0) THEN V$(4,1)=Q$(I,J)
14900 J=S7-2:V$(3,1)=Q$:IF J>0 THEN V$(3,1)=Q$(S6,J)
14910 J=S7-1:V$(3,2)=Q$:IF J>0 THEN V$(3,2)=Q$(S6,J)
14920 N=N+1:IF N=3 THEN 14950
14930 I=S6-1:J=S7-2:V$(2,1)=Q$:IF (I>0) AND (J>0) THEN V$(2,1)=Q$(I,J)
14940 GOTO 14620
14950 FOR I=1 TO 5
14960 IF (V$(I,1)=" ") AND (V$(I,3)=" ") AND (V$(I,5)=" ") THEN 14990
14970 PRINT"  ";
14980 FOR J=1 TO 5:PRINT V$(I,J);" ";:NEXT J:PRINT
14990 NEXT I:RETURN
15000 REM - WAIT
15010 J3=0:INPUT"HOW MANY STARDATES";Z5
15020 IF (Z5<R5) AND (K3=0) THEN 15040
15030 INPUT"ARE YOU SURE";B$:IF LEFT$(B$,1)<>"Y" THEN RETURN
15040 R6=1
15050 IF Z5<=0 THEN R6=0
15060 IF R6=0 THEN RETURN
15070 T1=Z5:Z6=Z5
15080 IF K3=0 THEN 15110
15090 T1=1+RND(1):IF Z5<T1 THEN T1=Z5
15100 Z6=T1
15110 IF T1<Z5 THEN GOSUB 1360
15120 IF A2<>0 THEN RETURN
15130 GOSUB 4600:J3=1:IF A2<>0 THEN RETURN
15140 Z5=Z5-Z6:GOTO 15050
15150 REM:WARP
15160 J3=0:IF D4(6)<>0 THEN 15630
15170 INPUT"ENTER COURSE AND DISTANCE";D2,D1
15180 IF D2<0 THEN RETURN
15190 P=(D1+0.05)*W1*W1*W1*(S4+1):IF P<E1 THEN 15310
15200 J3=0:PRINT:PRINT"ENGINEERING TO BRIDGE--"
15210 IF (S4=0) OR (0.5*P>E1) THEN 15240
15220 PRINT"  WE HAVEN'T THE ENERGY TO GO THAT FAR WITH";
15230 PRINT" THE SHIELDS UP.":RETURN
15240 W=INT((E1/(D1+0.05))^0.333333):IF W<=0 THEN 15290
15250 PRINT"  WE HAVEN'T THE ENERGY.  BUT WE COULD DO IT AT WARP";W
15260 IF S4<>0 THEN 15280
15270 RETURN
15280 PRINT"  IF YOU'LL LOWER THE SHIELDS.":RETURN
15290 PRINT"  WE CAN'T DO IT, CAPTAIN.  WE HAVEN'T GOT THE ENERGY."
15300 RETURN
15310 T1=10*D1/W2:IF T1<0.8*R5 THEN 15370
15320 PRINT:PRINT"MR. SPOCK - 'CAPTAIN, I COMPUTE THAT SUCH A TRIP"
15330 PRINT" WILL REQUIRE APPROXIMATELY";FNR(100*T1/R5);
15340 PRINT"PERCENT":PRINT"   OF OUR REMAINING TIME.  ARE YOU SURE ";
15350 INPUT "THIS IS WISE";B$:IF LEFT$(B$,1)="Y" THEN 15370
15360 J3=0:RETURN
15370 Q4=0:W=0:IF W1<=6 THEN 15530
15380 P=D1*(6-W1)^2/66.66666:IF P>RND(1) THEN Q4=1
15390 IF Q4<>0 THEN D1=RND(1)*D1
15400 W=0:IF W1<10 THEN 15420
15410 IF 0.25*D1>RND(1) THEN W=1
15420 IF (Q4=0) AND (W=0) THEN 15530
15430 A=(15-D2)*0.5235998:X1=-SIN(A):X2=COS(A)
15440 B8=ABS(X1):IF ABS(X2)>ABS(X1) THEN B8=ABS(X2)
15450 X1=X1/B8:Y1=Y1/B8:N=INT(10*D1*B8+0.5):X=S6:Y=S7
15460 IF N=0 THEN 15530
15470 FOR L=1 TO N
15480 X=X+X1:Q=INT(X+0.5):IF (Q<1) OR (Q>10) THEN 15530
15490 Y=Y+Y1:R=INT(Y+0.5):IF (R<1) OR (R>10) THEN 15530
15500 IF Q$(Q,R)="." THEN 15520
15510 Q4=0:W=0
15520 NEXT L
15530 GOSUB 7840:IF A2<>0 THEN RETURN
15540 E1=E1-D1*W1*W1*W1*(S4+1):IF E1>0 THEN 15560
15550 F9=4:GOSUB 5780:RETURN
15560 T1=10*D1/W2:IF W<>0 THEN GOSUB 14090
15570 IF Q4=0 THEN 15620
15580 PRINT:PRINT"ENGINEERING TO BRIDGE--":PRINT"   SCOTT HERE-  ";
15590 PRINT"'WE'VE JUST BLOWN THE WARP ENGINES."
15600 PRINT"   WE'LL HAVE TO SHUT 'ER DOWN HERE, CAPTAIN.'"
15610 D4(6)=D5*(3*RND(1)+1)
15620 J3=1:RETURN
15630 PRINT"WARP ENGINES DAMAGED.":RETURN
15640 REM - ABANDON
15650 ON SGN(D4(10))+2 GOTO 15660,15680!,15670!
15660 PRINT"YE FAERIE QUEENE HAS NO SHUTTLE CRAFT.":RETURN
15670 PRINT"SHUTTLE CRAFT DAMAGED.":RETURN
15680 PRINT:PRINT"***ABANDON SHIP!  ABANDON SHIP!"
15690 PRINT"***ALL HANDS ABANDON SHIP!":PRINT
15700 PRINT"YOU AND THE BRIDGE CREW ESCAPE IN THE GALILEO."
15710 PRINT"THE REMAINDER OF THE CREW BEAMS DOWN"
15720 PRINT"TO THE NEAREST HABITABLE PLANET.":IF R3<>0 THEN 15740
15730 F9=9:GOSUB 5780:RETURN
15740 PRINT:PRINT"YOU ARE CAPTURED BY KLINGONS AND RELEASED TO"
15750 PRINT"THE FEDERATION IN A PRISONER-OF-WAR EXCHANGE."
15760 PRINT"STARFLEET PUTS YOU IN COMMAND OF ANOTHER SHIP,"
15770 PRINT"THE FAERIE QUEENE WHICH IS ANTIQUATED, BUT"
15780 PRINT"STILL USABLE.":N=INT(RND(1)*R3+1):Q1=B2(N):Q2=B3(N)
15790 S6=5:S7=5:GOSUB 9340:Q$(S6,S7)="."
15800 FOR L=1 TO 3:S6=INT(3*RND(1)-1+B6)
15810 IF (S6<1) OR (S7>10) THEN 15840
15820 S7=INT(3*RND(1)-1+B7):IF (S7<1) OR (S7>10) THEN 15840
15830 IF Q$(S6,S7)="." THEN 15850
15840 NEXT L:GOTO 15790
15850 S5$="FAERIE QUEENE":Q$(S6,S7)=LEFT$(S5$,1):C5$="DOCKED"
15860 FOR L=1 TO 12:D4(L)=0:NEXT:D4(10)=-1:E1=3000:I7=E1
15870 S3=1500:I8=S3:T4=6:I9=T4:L1=3:J1=L1:S4=0:W1=5:W2=25
15880 RETURN
15890 REM - DESTRUCT
15900 IF D4(11)=0 THEN 15930
15910 PRINT"COMPUTER DAMAGED - CANNOT EXECUTE DESTRUCT SEQUENCE"
15920 RETURN
15930 PRINT:PRINT"    ---WORKING---"
15940 PRINT"IDENTIFICATION-POSITIVE"
15950 PRINT"SELF-DESTRUCT-SEQUENCE-ACTIVATED":J=3
15960 FOR I=10 TO 6 STEP -1:PRINT SPC(J);I:GOSUB 16110:J=J+3:NEXT
15970 PRINT"ENTER-YOUR-MISSION-PASSWORD-TO-CONTINUE"
15980 PRINT"SELF-DESTRUCT-SEQUENCE-OTHERWISE-DESTRUCT"
15990 PRINT"SEQUENCE-WILL-BE-ABORTED"
16000 INPUT B$:IF B$<>X$ THEN 16090
16010 PRINT"PASSWORD-ACCEPTED":J=10
16020 FOR I=5 TO 1 STEP -1:PRINT SPC(J);I:GOSUB 16110:J=J+3:NEXT
16030 PRINT:PRINT"*****ENTROPY OF ";S5$;" MAXIMIZED*****"
16040 PRINT:IF K3=0 THEN 16080
16050 W=20*E1:FOR L=1 TO K3:IF K6(L)*K7(L)>W THEN 16070
16060 A5=K4(L):A6=K5(L):T2$=Q$(A5,A6):GOSUB 4060
16070 NEXT L
16080 F9=10:GOSUB 5780:RETURN
16090 PRINT"PASSWORD-REJECTED"
16100 PRINT"CONTINUITY-EFFECTED":PRINT:RETURN
16110 K=12345:FOR M=1 TO 90:K=K+1:NEXT M:RETURN
16120 REM - STATUS
16130 FOR I=1 TO 10:GOSUB 13880:RETURN
16140 END

TREKINFO.DOC

			************************
			*** PREPARED BY ZOSO ***
			***   2, 13, 1978    ***
			************************


THE FOLLOWING DOCUMENTS THE RULES AND OPTIONS OF THE GAMES 'STARTREK.TXT' AND
'BIGTREK'.


OBJECTIVE - UNLIKE MOST OTHER STARTREKS, DESTROYING THE KLINGON FLEET IS ONLY
A SECONDARY OBJECTIVE; THIS GAME FEATURES A VERY COMPREHENSIVE SCORING ROU-
TINE, AND THE REAL OBJECTIVE IS TO GET THE HIGHEST POSSIBLE SCORE (NOT UNLIKE
A PINBALL MACHINE).

START OF GAME - WHEN THIS GAME SIGNS ON, IT ASKS: "MISSION DURATION ?"; ANSWER
'S', 'M' OR 'L' (SHORT MEDIUM OR LONG). IT IS WORTH NOTING THAT THE SHORT GAMES
CAN BE VERY, VERY SHORT. NEXT IT ASKS "ARE YOU A BEGINNER, NOVICE, SENIOR OR
EXPERT; ANSWER 'B', 'N', 'S' OR 'E', ALSO WORTH NOTING, IF YOU REPLY 'B' THE
GAME STARTS OUT GIVING THE PLAYER MORE INFORMATION THAN IS AVAILABLE IN ANY OF
THE OTHER THREE MODES. THEN IT REQUESTS YOUR "MISSION PASSWORD"; REMEMBER WHAT
YOU REPLY HERE; YOU WILL NEED TO KNOW THE WORD TO SELF DESTRUCT (WHICH DUE TO
THE EMPHASIS ON POINTS SCORED IS OFTEN THE WISEST OPTION). FINALLY YOU WILL BE
ASKED, "READY TO CONTINUE ?"; ENTER ANY CHARACTER AND HIT RETURN.

NAVIGATION, PHOTON AIMING ETC. - THE COORDINATES USED ARE JUST EXACTLY LIKE
THE NUMBERS ON A CLOCK FACE (12 O'CLOCK AT THE TOP) N.B.!!! IF YOU WANT TO
TRAVEL OR AIM A PHOTON STRAIGHT UP, ENTER COURSE 12 (NOT COURSE 0); FAILURE
TO OBSERVE THIS PRECAUTION WILL LEAD TO AN OCCASIONAL DIVISION BY ZERO ERROR,
AND YOU WILL HAVE LOST THE GAME IN PROGRESS. (NOTE - I INSERTED SEVERAL TRAPS
FOR THIS, BUT I VERY LIKELY MISSED SOME ALSO. Z.) FINALLY IT GOES WITHOUT
SAYING THAT IF YOU WANTED TO TRAVEL ON A COURSE EXACTLY HALF WAY BETWEEN NOON
AND 3:00 O'CLOCK, THE CORRECT COURSE WOULD BE 1.5 (NOT 1:30).

WHAT YOU WILL FIND IN THE QUADRANTS:

E:	THE ENTERPRISE
K:	KLINGON BATTLE CRUISER
O:	ORGANIAN TRUCE-MONITOR VESSEL-SPACE WARPS OFTEN ACCOMPANY THESE.
	(SHOOT THEM JUST FOR PRACTISE).
C:	COMMANDER-MAY BE YOURS, MAY BE ENEMY'S. LONG RANGE SCAN WILL TELL
	YOU WHICH (IF YOU COUNT TOTAL ENEMY IN QUADRANT).
F:	THE FAERIE QUEENE-AN OLD STARSHIP WHICH YOU CAN SOMETIMES USE AFTER
	ENTERPRISE HAS BEEN ABANDONED OR CRIPPLED.
*:	STARS-IF THEY ARE IN YOUR WAY, YOU CAN SHOOT THEM WITH YOUR PHOTONS,
	THERE IS A MINOR PENALTY FOR THIS. (THEY 'NOVA' WHEN DESTROYED.) IF
	YOU ARE TOO CLOSE TO A STAR WHEN YOU SHOOT IT, THE FORCE OF THE NOVA
	MAY WELL DESTROY THE ENTERPRISE.
?	THIS MEANS YOU ARE TRYING TO VIEW BEYOND QUADRANT BOUNDARY WITH THE
	VISUAL-SENSORS (SEE BELOW).
***:	SUPER-NOVA - AVOID THESE AT ALL COSTS !!!

EACH QUADRANT IS A 10 BY 10 GRID, WHICH CAN BE EXACTLY TRANSVERSED EITHER IN A
HORIZONTAL OR VERTICAL (NOT DIAGONAL) DIRECTION WITH A WARP FACTOR OF 1. THE
CORRECT WARP FACTOR FOR FULL DIAGONAL TRANSVERSE IS 1.4142 (2^0.5) [IN BASIC].

			*** COMMAND LEVEL ***

EACH OF THE FOLLOWING COMMANDS MUST BE ENTERED AS TWO (OR MORE) SIGNIFICANT
LETTERS FOLLOWED BY <CR>. (THE 20 COMMAND-LEVEL OPTIONS)

AB-ABANDON
ABANDON SHIP - SACRIFICE THE ENTERPRISE AND (IF YOU STILL HAVE OPERATIONAL
SHUTTLE CRAFT) PROCEED AS CAPTAIN OF THE FAERIE QUEENE.

CH-CHART
CUMULATIVE GALACTIC MAP-EACH 'WINDOW' IS OPENED BY USE OF THE LRSENSORS. UNLIKE
THE USUAL ONES, THIS ONE ALWAYS SHOWS YOU WHERE THE STARBASES AND SUPERNOVAS
ARE LOCATED.

CO-COMPUTER
LIBRARY COMPUTER - SEE COMMAND SUMMARY BELOW

DA-DAMAGES
DAMAGE CONTROL/REPAIR. GET A FEEL FOR THIS BY PLAYING.
	WHAT DAMAGE CONTROL/REPAIR REFERENCES:
		SRSENSORS
		LRSENSORS
		PHASERS
		PHOTON TUBES
		LIFE SUPPORT
		WARP ENGINES
		IMPULSE ENGINES
		SHIELDS
		SUBSPACE-RADIO
		SHUTTLE CRAFT
		COMPUTER
		TRANSFER PANEL
	NOTE: THE ABOVE DO NOT ALL NECESSARILY CORRESPOND TO THE TWENTY
	COMMAND-LEVEL OPTIONS.

DE-DESTRUCT
SELF-DESTRUCT SERVOS. REMEMBER PASSWORD YOU ENTERED AT BEGINNING.

DO-DOCK
WHAT YOU MUST DO WHEN ADJACENT TO A STARBASE, UNLIKE MOST OTHER 'STARTREKS',
THIS MUST BE SPECIFICALLY COMMANDED; IT IS NOT AUTOMATIC.

ID-IDLE
IDLE ENGINES - KILL TIME WHILE WAITING FOR REPAIRS TO BE COMPLETED. THIS
COMMAND IS NULLIFIED WHEN A TRACTOR-BEAM LOCKS ONTO YOUR STARSHIP.

IM-IMPULSE
IMPULSE ENGINES - USE THESE WHEN WARP ENGINES ARE OUT (THEY ARE FAR LESS
ENERGY-EFFICIENT). ALSO CERTAIN STARS HAVE MAGNETIC PROPERTIES, AND IN SUCH
CASES YOU MUST USE IMPULSE ENGINES TO BREAK FREE.

LR-LRSCAN
LONG RANGE SCANNERS - WORKS AS YOU WOULD EXPECT.

NA-NAVIGATE
MOVE YOUR STARSHIP THROUGH SPACE.

PH-PHASERS
PHASER BANKS. UNDER CERTAIN CIRCUMSTANCES MAY BE DIRECTED AT ENEMY IN ANOTHER
QUADRANT (SEE PEFFECT BELOW).

QU-QUIT
TERMINATE GAME WITHOUT SCORING.

SH-SHIELDS
LOWERS RAISED SHIELDS OR RAISES LOWERED SHIELDS. YOU WILL UNDERSTAND WHEN
AND HOW TO USE THIS AFTER A FEW GAMES.

SO-SOS
CALL A STARBASE FOR HELP (THIS INVOLVES A POINT-PENALTY).

SR-SRSCAN
SHORT RANGE SCANNERS - THE USUAL, BUT ALSO INVOKES LRSCAN (IF OPERATIONAL).

ST-STATUS
STATUS REPORT OF GAME IN PROGRESS. (MORE COMPREHENSIVE THAN USUAL)

TO-TORPEDO
PHOTON TORPEDOS - CAN BE FIRED SINGLY OR IN BURSTS OF THREE. THE LATTER OP-
TION IS RECOMMENDED WHEN TRYING TO DESTROY A KLINGON COMMANDER (THEY HAVE
SUPERIOR DEFENSIVE CAPABILITIES).

TR-TRANSFER
TRANSFER PANEL - ALLOWS THE TRANSFER OF ENERGY TO AND FROM PHASER BANKS.

VI-VISUAL
VERY SHORT RANGE SCANNER - USEFUL FOR LIMITED NAVIGATION WHEN SRSCANNERS ARE
NON-FUNCTIONAL. A VERY CUTE OPTION.

WA-WARP
THIS DICTATES CERTAIN PARAMATERS FOR QUADRANT TO QUADRANT TRAVEL WHEN ENGINES
(NAVIGATIONAL OR IMPULSE) ARE DAMAGED. YOU WILL BE ADVISED WHEN TO USE THIS
COMMAND (WASTEFUL TO USE IT OTHERWISE).

			*** COMPUTER OPTIONS ***

THESE MAY BE INVOKED WITH A SINGLE LETTER.

C-COURSE
GIVES EXACT BEARINGS AND DISTANCES (WARP FACTORS) FROM WHEREVER YOU ARE TO
ANYWHERE ELSE IN GALAXY. INVALUABLE FOR LONG PHOTON SHOTS. NOTE THAT THE DATA
MUST BE GIVEN IN THE FOLLOWING FORMAT: IF YOU WISH TO FIND COURSE AND DISTANCE
TO QUADRANT 3-2, SECTOR 4-10, THE CORRECT INPUT IS '32,0410'. NO OTHER SYSTEM
OF ENTRY IS ACCEPTED.

W-WCOST
THIS COMPUTES HOW MUCH ENERGY WILL BE CONSUMED BY A GIVEN DISTANCE OF TRAVEL
WITH THE WARP ENGINES.

I-ICOST
THIS COMPUTES HOW MUCH ENERGY WILL BE CONSUMED BY A GIVEN DISTANCE OF TRAVEL
WITH THE IMPULSE ENGINES.

S-SCORE
THIS GIVES A PLAYER'S CURRENT SCORE AT ANY TIME DURING GAME.

P-PEFFECT
THIS COMPUTES PHASER EFFECTIVENESS AT A GIVEN DISTANCE. WITH EXPERIENCE, IT
HELPS ONE MAKE A GOOD GUESS ABOUT HOW MUCH ENERGY TO ALLOCATE TO PHASERS.

O-OUT
THIS IS COMMAND FOR COMPUTER EXIT. UNTIL THIS COMMAND IS GIVEN, ALL COMMANDS
ONLY REFERENCE COMPUTER OPTIONS.

*****************************************************************************
*************************************** ENJOY !!! - ZOSO ********************
*****************************************************************************

 ENERGY TO ALLOCATE TO PHASERS.

O-OUT
THIS IS COMMAND FOR COMPUTER EXIT. UNTIL THIS COMMAND IS GIVEN, ALL COMMANDS
ONLY REF

USALIST.BAS

1 '    Programmed by Dick Conklin
2 '          ESB Planning
3 '
4 '
10 CLS:SCREEN 1:COLOR 0,1:KEY OFF:OPTION BASE 1:DEFINT X-Z
20 DRAW "c1bm275,165m273,160m270,149m265,145m260,140m262,130m271,120m275,115m277,114m280,110m290,103m288,100m285,95m281,85m283,87m283,92m286,82m283,75m288,80m290,69m300,63m291,68m307,58m310,57"' EAST COAST -- FLORIDA TO CAPE COD
30 DRAW "m310,55m309,56m310,56m303,55m304,44m318,33m305,20m300,20m293,38m280,40m268,52m258,55m258,61m240,69m240,55m225,40m200,30m180,30m170,29m169,24m167,24m167,27"'    Cape Cod to Minnesota
40 DRAW "m140,27m120,26m100,23m80,21m60,19m40,15m25,10m21,13m16,11m15,28m20,29m15,30m5,47m1,63m4,81m9,80m9,83m8,82m11,106m22,111m28,116m29,122m43,124m65,135"'       Minnesota to New Mexico
50 DRAW "m82,138m82,135m97,135m105,145m109,150m118,155m122,150m133,155m140,165m144,172m155,175m154,165m160,160m180,151m200,153m210,152m209,149m202,149m230,143m235,149m241,145m253,150m260,163m270,173m275,172m275,165"'    Back to Delray Beach
60 PAINT (270,172),3,1
70 DRAW "c0bm296,35m304,50m290,53m285,39m295,36m293,53bm290,53m291,66bm290,59m301,57m304,60bm299,57m300,63"'New England
80 DRAW "bm255,61m256,65m280,61m290,66m290,70bm283,64m282,69m285,71m283,75m252,80m250,65bm260,79m261,82m269,80m281,87bm252,73m251,80m243,90m250,97m255,95m270,82m283,90bm281,76m284,84m287,83"'  NY,PA,WV,MD,DE
90 DRAW "bm243,90m230,87m220,95m210,100m204,106m211,105m212,104m240,102m287,96bm204,106m200,116m244,113m249,111m257,110m260,112m267,111m275,115bm238,114m250,100bm240,102m246,96m243,90"'KY,VA,TN,NC
100 DRAW "bm200,116m197,126m198,134m192,142m206,142m207,148m209,148bm215,147m215,115bm229,114m238,142m260,140bm221,145m220,141m236,140bm242,112m262,130"'MS,AL,GA,SC,FL
110 DRAW "bm180,152m180,140m178,138m178,128m176,128m174,90m160,62m161,62m157,27bm200,30m180,47m190,62m192,68m210,67m215,49m187,40bm210,67m240,68bm210,67m216,83m212,100bm228,69m230,88"'LA,AR,MO,IA,MN,WI,MI,IL,IN,OH
120 DRAW "bm178,130m197,130bm175,109m200,108m199,110m203,110bm205,103m190,82m192,68bm190,62m161,62bm190,82m188,81m169,82"'     MO,IA,MN
130 DRAW "bm176,128m160,126m140,120m140,109m121,108m119,136m97,135bm175,105m121,104m121,108bm170,85m129,85m128,105bm163,69m150,67m119,65m118,78m130,79m129,85"'TX,OK,KS,NE
140 DRAW "bm160,48m120,46m119,65bm120,46m121,25bm60,18m60,29m66,35m70,50m81,50m82,47m120,52bm81,50m78,73m118,78bm89,75m80,138BM121,104M55,96"'SD,ND,MT,WY,CO,NM
150 DRAW "m53,102m48,112m43,125bm55,96m61,65m79,67bm61,65m3,53bm45,62m56,16bm52,37m22,32m15,27bm29,59m22,78m49,110"'WA,OR,CA
160 CLR=1:CLRR=2
200 DIM STATE$(50),CAPITAL$(50),XYLIST(50,2)
210 FOR Z=1 TO 50
220 READ STATE$(Z),CAPITAL$(Z),XYLIST(Z,1),XYLIST(Z,2)
230 NEXT Z
300 PAL1=1
302 FOR CLR=1 TO 3
304 FOR ST=1 TO 50
315 'PAINT (XB,YB),3,0
320 XB=XYLIST(ST,1):YB=XYLIST(ST,2)
335 PAINT (XB,YB),CLR,0
340 NEXT ST
342 NEXT CLR
345 SWAP PAL0,PAL1:COLOR ,PAL1
350 GOTO 302
4000 'Lookup the state'
4010 S$=STATE$(ST):C$=CAPITAL$(ST):XB=XYLIST(ST,1):YB=XYLIST(ST,2)
4020 RETURN
5000 'Data on each of the 50 states'
5010 DATA ALABAMA,MONTGOMERY,225,130
5020 DATA ALASKA, JUNEAU,40,155
5030 DATA ARIZONA,PHOENIX,65,115
5040 DATA ARKANSAS,LITTLE ROCK,185,120
5050 DATA caliFORNIA,SACRAMENTO,20,90
5060 DATA COLORADO,DENVER,105,90
5070 DATA CONNECTICUT,HARTFORD,295,60
5080 DATA DELAWARE,DOVER,283,80
5090 DATA FLORIDA,TALLAHASSEE,260,150
5100 DATA GEORGIA,ATLANTA,245,130
5110 DATA HAWAII,HONOLULU,100,180
5120 DATA IDAHO,BOISE,62,55
5130 DATA ILLINOIS,SPRINGFIELD,205,85
5140 DATA INDIANA,INDIANAPOLIS,220,85
5150 DATA IOWA,DES MOINES,175,72
5160 DATA KANSAS,TOPEKA,150,95
5170 DATA KENTUCKY,FRANKFORT,230,97
5180 DATA LOUISIANA,BATON ROUGE,185,145
5190 DATA MAINE,AUGUSTA,305,35
5200 DATA MARYLAND,ANNAPOLIS,278,80
5210 DATA MASSACHUSETTS,BOSTON,300,55
5220 DATA MICHIGAN,LANSING,225,55
5230 DATA MINNESOTA,ST. PAUL,170,45
5240 DATA Mississippi,Jackson,205,130
5250 DATA MISSOURI,JEFFERSON CITY,185,95
5260 DATA MONTANA,HELENA,95,35
5270 DATA NEBRASKA,LINCOLN,145,75
5280 DATA NEVADA,CARSON CITY,40,80
5290 DATA NEW HAMPSHIRE,CONCORD,298,48
5300 DATA NEW JERSEY,TRENTON,288,70
5310 DATA NEW MEXICO,SANTA FE,100,120
5320 DATA NEW YORK,ALBANY,280,55
5330 DATA NORTH CAROLINA,RALEIGH,270,105
5340 DATA NORTH DAKOTA,BISMARCK,140,40
5350 DATA OHIO,COLUMBUS,240,80
5360 DATA OKLAHOMA,OKLAHOMA CITY,160,115
5370 DATA OREGON,SALEM,25,45
5380 DATA PENNSYLVANIA,HARRISBURG,270,70
5390 DATA RHODE ISLAND,PROVIDENCE,301,59
5400 DATA SOUTH CAROLINA,columbia,260,115
5410 DATA SOUTH DAKOTA,PIERRE,140,58
5420 DATA TENNESSEE,NASHVILLE,222,110
5430 DATA TEXAS,AUSTIN,145,140
5440 DATA UTAH,SALT LAKE CITY,70,85
5450 DATA VERMONT,MONTPELIER,290,45
5460 DATA VIRGINIA,RICHMOND,270,90
5470 DATA WASHINGTON,OLYMPIA,35,25
5480 DATA WEST VIRGINIA,CHARLESTON,255,85
5490 DATA WISCONSIN,MADISON,195,55
5500 DATA WYOMING,CHEYENNE,100,65

Directory of PC-SIG Library Disk #0044

 Volume in drive A has no label
 Directory of A:\

1500     BAS      5376   1-01-80  12:46a
21       BAS      5888   1-01-80  12:46a
BALL     BAS      2176   1-01-80  12:44a
BANNER   BAS      2432   1-01-80  12:58a
BIORYTHM BAS      4224   2-27-83   1:02a
BLKFRI3  BAS      8192   1-01-80   2:22a
CHASE    BAS      2176   1-01-80   2:26a
DECISION BAS      1280   1-01-80  12:16a
ENTEP    BAS      3072   1-01-80  12:08a
FILES44  TXT      1496   1-26-89   4:18p
GO       BAT        38  10-19-87   3:56p
GO       TXT       771  12-01-88   4:36p
HANOI    BAS      4864   8-05-82   8:48p
HANOI    DOC       145   8-05-82   9:09p
HOBBIT   BAS     12032   1-01-80   1:40a
HORSE    BAS      4352   1-01-80  12:16a
KING     BAS      6144   1-01-80  12:23a
LINES    BAS      1920   1-01-80  12:01a
MSQUARE  BAS      4096   3-23-83  12:05a
ROCKET   BAS      2688   1-01-80  12:38a
ROULETTE BAS      5504   1-01-80  12:43a
SLOT     BAS      6016   1-01-80   2:50a
STARTREK BAS     45312   1-01-80  12:47a
TREKINFO DOC      7168   1-01-83   1:30a
USALIST  BAS      4608   1-01-80   1:49a
       25 file(s)     141970 bytes
                       13312 bytes free