PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #71)

[PCjs Machine "ibm5150"]

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

Information about “GAME SERIES NO 10”

This is truly a game collection for the adventurous.  Can you fly a
starship into a hostile galaxy?  How about finding the minerals you
need?  Can you survive a journey into a dangerous castle, hunt the
elusive, (and sometimes dangerous), Wumpus?  Challenge the unknown,
accompanied by your trusty computer, and live to tell about it!

System Requirements:  BASIC.

How to Start: To read DOC files, enter TYPE filename.ext and press
<ENTER>.  For instructions on running BASIC programs, please refer to
the GETTING STARTED section in this catalog.

File Descriptions:

STARTREK BAS  Another Startrek
ZAP'EM   BAS  IPCO shoot'em type game
STARTREK DOC  Documentation for STARTREK.BAS
CYCLE    BAS  IPCO motorcycle race, Q&A type game
LOSTGOLD BAS  IPCO Adventure type game
DROIDS   BAS  IPCO Hunt for minerals (board game)
WIZARD   BAS  IPCO The Wizards Castle
MEMORY   BAS  IPCO game to test your memory
SPELLER  BAS  IPCO spelling word drill (input your own words)

CRC.TXT

PC-SIG Disk No. #71, version v1

The following is a list of the file checksums which should be produced by
the CRCK4 program on disk #9 (and others).  If the CRC numbers do not match
you may have a bad file.  To use type:  CRCK4 <filespec>

CRCK4 output for this disk:


CRCK ver 4.2B (MS DOS VERSION )
CTL-S pauses, CTL-C aborts

--> FILE:  ZAP'EM  .BAS         CRC = D4 7A

--> FILE:  MEMORY  .BAS         CRC = ED 48

--> FILE:  STARTREK.BAS         CRC = FA CD

--> FILE:  STARTREK.DOC         CRC = 3B B2

--> FILE:  CYCLE   .BAS         CRC = D7 05

--> FILE:  DROIDS  .BAS         CRC = 51 F3

--> FILE:  LOSTGOLD.BAS         CRC = 14 79

--> FILE:  WIZARD  .BAS         CRC = 87 92

--> FILE:  SPELLER .BAS         CRC = 1A A3

 ---------------------> SUM OF CRCS = D7 E7

DONE

These and other Public Domain and user-supported programs from:

PC Software Interest Group
1125 Stewart Ct  Suite G
Sunnyvale, CA 94086
(408) 730-9291

CYCLE.BAS

10 KEY OFF:CLS
20  DIM I2(14),I$(84)
30  REM  INITIALIZATION OF RANDOM FUNCTION
40  LOCATE 1,1
50 I$ = "R.ARM L.ARM R.LEG L.LEG BACK  NECK  SKULL RIBS  KNEE  BUTT  FACE  PELVISPRIDE BIKE  "
60 T = .1
70  REM  T IS RATE OF JUMP CALCULATION
80 T2 = 0
90 T3 = 0
100  LOCATE 1,1 : PRINT
110  PRINT "WE'RE AT THE SCENE OF THE BIG MOTORCYCLE JUMP!"
120  PRINT : PRINT "JUMP YOUR BIKE FROM ONE RAMP OVER": PRINT "ANY NUMBER OF BUSES AND LAND ON THE"
130  PRINT "OTHER RAMP, MISS AND BOTH BONES & BIKE WILL BREAK"
140  PRINT : INPUT "HOW MANY BUSSES WILL YOU TRY TO JUMP? ";N
150  IF N > 40 THEN 1140
160 J = N * 15
170  PRINT N;" BUSSES?  THAT'S ";J;" FEET!"
180  PRINT
190  INPUT "WHAT RAMP ANGLE WILL YOU USE? ";A2
200  PRINT
210  IF A2 < 89 AND A2 > 0 THEN 240
220  PRINT A2;" DEGREES?  THAT'S IMPOSSISBLE. COME ON NOW, "
230  GOTO 190
240 A = A2 * .01745
250  INPUT "HOW FAST WILL YOU LEAVE THE RAMP? ";S
260  PRINT "      GOOD LUCK!"
270  IF S > 0 THEN 310
280  PRINT "A PRACTICE JUMP!"
290  PRINT "OK,  THIS TIME."
300  GOTO 250
310 H = 6
320 D = 0
330 G = 6
340 R2 = 0
350 S2 = 0
360 S = S * 1.5
370  PRINT
380  PRINT "THERE HE GOES!!!!!!"
390  REM  JUMP CALCULATION LOOP
400 LOCATE 20,1:PRINT "/"+STRING$(N,254)+"\";
410 S = S - S2
420 F = S * T
430 D2 = F *  COS (A)
440 R = F *  SIN (A)
450 R2 = R2 + (32 * T)
460 R3 = R2 * T
470 H = H + R - R3
480 D = D + D2
490 LOCATE 19,1:PRINT SPACE$(79);
500 HZ=INT(D/15):IF HZ>78 THEN HZ=78 ELSE IF HZ<1 THEN HZ=1
510 LOCATE 19,HZ:PRINT "o+o";
520  REM  S2 IS DRAG FACTOR
530 S2 = (S / 120) * 32 * T
540  IF D >  = J THEN G = G - R
550  REM  CALCULATE HEIGHT ABOVE GROUND (ALLOW FOR OFFRAMP)
560  IF G <  = 0 THEN G = 0
570  IF H > G THEN 410
580  PRINT
590  IF D < J THEN 680
600  PRINT:PRINT "HE JUMPED ";D;" FEET"
610  PRINT "THE DISTANCE WAS ";J;" FEET
620  IF D > J + 20 THEN 730
630 L = ((D - J) / 30) +  RND (1)
640  IF L > .8 THEN 740
650  PRINT:PRINT "HE MADE IT!!  GREAT JUMP, KILLER! "
660 T2 = T2 + 1
670  GOTO 1060
680  PRINT:PRINT "HE'S SHORT OF THE RAMP ......."
690  PRINT "HE ONLY JUMPED ";D;" FEET
700  REM  CALCULATION OF INJURIES
710 L2 =  INT ((((J - D) / 5) * 2) + ( RND (1) * 5) + .5)
720  GOTO 770
730  PRINT:PRINT "HE JUMPED TOO FAR!"
740  PRINT "HE MISSED THE RAMP."
750  IF D > J + 50 THEN 1170
760 L2 =  INT (((D + 20 - J) / 20) + ( RND (1) * 5))
770  PRINT "I THINK HE'S HURT ........."
780  FOR XX = 1 TO 2500: NEXT XX
790  FOR K = 1 TO 14
800 I2(K) = K
810  NEXT K
820 K2 = 14
830  IF L2 > 14 THEN L2 = 14
840  IF L2 <  = 0 THEN L2 = 1
850  REM  LISTING OF INJURIES
860  REM  RANDOM PERMUTATION OF LENGTH OF L2
870  FOR K = 1 TO L2
880 V =  INT ( RND (0) * 1000)
890 V = (V - ( INT (V / K2) * K2)) + 1
900 H2 = I2(V)
910 I2(V) = I2(K2)
920 I2(K2) = H2
930 K2 = K2 - 1
940  NEXT K
950  PRINT
960  PRINT "WELL ... KILLER, THE DOCTOR SAYS YOU BROKE YOUR ";
970  REM  GET SPECIFIC INJURIES LIST
980  FOR K = (15 - L2) TO 14
990 P = (6 * I2(K)) - 5
1000 A$ =  MID$ (I$,P,6)
1010  PRINT ", "+A$;
1020 CNT.INJ=CNT.INJ+1:IF CNT.INJ>3 THEN K=14
1030  NEXT K
1040 CNT.INJ=0
1050  PRINT : PRINT "HOPE YOU GET WELL SOON."
1060 T3 = T3 + 1
1070  PRINT
1080  PRINT "WANT TO JUMP AGAIN(Y/N)? ": INPUT A$
1090  IF A$ = "Y" OR A$="y" THEN 1130
1100  PRINT "YOU MADE IT ";T2;" OUT OF ";T3;" TIMES."
1110  PRINT "BETTER LUCK NEXT TIME"
1120  END
1130  LOCATE 1,1 :CLS: PRINT : GOTO 140
1140  PRINT
1150  PRINT "THAT IMPOSSIBLE!"
1160  GOTO 140
1170 PRINT " ADIOS ":END

DROIDS.BAS

10 KEY OFF:CLS
20 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
30 PRINT"░┌───────────────────────────────────┐░"
40 PRINT"░│                                   │░"
50 PRINT"░│            2043-A.BAS             │░"
60 PRINT"░│              DROIDS               │░"
70 PRINT"░│                                   │░"
80 PRINT"░│                                   │░"
90 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF  │░"
100 PRINT"░│      ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄      │░"
110 PRINT"░│        █   █   █ █     █   █      │░"
120 PRINT"░│        █   █▄▄▄█ █     █   █      │░"
130 PRINT"░│        █   █     █     █   █      │░"
140 PRINT"░│      ▄▄█▄▄ █     █▄▄▄▄ █▄▄▄█      │░"
150 PRINT"░│                                   │░"
160 PRINT"░│      International PC Owners      │░"
170 PRINT"░│                                   │░"
180 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
190 PRINT"░│                                   │░"
200 PRINT"░└───────────────────────────────────┘░"
210 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
220 PRINT
230 PRINT "       PRESS ANY KEY TO CONTINUE
240 A$=INKEY$: IF A$="" THEN 240
250 CLS
1000 REM DROIDS GAME
1010 SAMPLE$="NO"
1020 GOTO 1040
1030 SAMPLE$="YES"
1040 BL$="                                       "
1050 DEF SEG=64:POKE 23,64:REM CAPITAL LETTERS
1060 ORE=254
1070 DIM PL$(4),CH(4)
1080 CH(1)=65:CH(2)=66:CH(3)=67:CH(4)=68
1090 SCREEN 0,1,0,0:WIDTH 40:LOCATE ,,0:GOSUB 1350
1100 GOSUB 1700
1110 GOSUB 1850
1120 NP=1:NP1=0
1130 GOSUB 2290
1140 GOSUB 2030
1150 GOSUB 2200
1160 NP1=NP1+1:NP1=NP1 MOD NPLAY:NP=NP1+1
1170 GOTO 1130
1180 REM GAMEBOARD
1190 CLS:COLOR 14,0,0
1200 X$=CHR$(ORE)
1210 X15$=X$
1220 FOR I=1 TO 14:X15$=X15$+X$:NEXT
1230 FOR J=3 TO 12:LOCATE J,5:PRINT X15$:NEXT
1240 RETURN
1250 REM COMPASS
1260 YC=8:XC=30
1270 LOCATE YC,XC-3:PRINT "W";CHR$(196);CHR$(196);CHR$(197);CHR$(196);CHR$(196);"E"
1280 LOCATE YC-3,XC:PRINT "N"
1290 LOCATE YC-2,XC-3:PRINT "NW ";CHR$(179);" NE"
1300 LOCATE YC+2,XC-3:PRINT "SW ";CHR$(179);" SE"
1310 LOCATE YC-1,XC-1:PRINT "\";CHR$(179);"/"
1320 LOCATE YC+1,XC-1:PRINT "/";CHR$(179);"\"
1330 LOCATE YC+3,XC:PRINT "S"
1340 RETURN
1350 REM INSTRUCTIONS
1360 COLOR 7,0:CLS
1370 LOCATE 5,12:PRINT "WELCOME TO DROIDS"
1380 PRINT :PRINT "   DO YOU WANT INSTRUCTIONS? (Y OR N)"
1390 RESP$=INKEY$:IF RESP$="" THEN GOTO 1390
1400 IF RESP$="N" OR RESP$="n" THEN RETURN
1410 CLS
1420 PRINT :PRINT "DROIDS ARE USED TO HUNT FOR MINERALS"
1430 PRINT "ON THE PLANET MERCURY.  THE HUMANS ON"
1440 PRINT "MERCURY PLAY THIS GAME WITH FOUR DROIDS"
1450 PRINT "ON A FIELD WHICH CONTAINS VALUABLE ORE!"
1460 PRINT :PRINT "THE VALUABLE ORE LOOKS LIKE THIS: ";:COLOR 14:PRINT CHR$(ORE):COLOR 7
1470 PRINT :PRINT "DO YOU WANT TO SEE THE GAME BOARD (Y/N)?";
1480 RESP$=INKEY$:IF RESP$="" THEN GOTO 1480
1490 IF RESP$="Y" OR RESP$="y" THEN GOSUB 1180
1500 COLOR 7:PRINT:PRINT "THE DROIDS ARE  NAMED ";CHR$(CH(1));", ";CHR$(CH(2));", ";CHR$(CH(3));" AND ";CHR$(CH(4));"."
1510 PRINT "GOING IN TURN, THE PLAYERS (UP TO 4)"
1520 PRINT "MOVE ANY DROID WHICH CAN COLLECT ORE."
1530 PRINT "YOU GET ONE POINT FOR EACH ";:COLOR 14:PRINT CHR$(ORE);:COLOR 7:PRINT " (PIECE"
1540 PRINT "OF ORE) AND HIGH SCORE WINS.
1550 PRINT "DROIDS GO NORTH, SOUTH, EAST, WEST, OR"
1560 PRINT "DIAGONALLY, BUT ONLY IN A STRAIGHT LINE"
1570 PRINT "AND ONLY ONTO SQUARES WITH ORE."
1580 PRINT :PRINT "ANY PLAYER MAY MOVE ANY DROID."
1590 PRINT :PRINT "PRESS ANY KEY TO CONTINUE."
1600 RESP$=INKEY$:IF RESP$="" THEN GOTO 1600
1610 CLS:GOSUB 1250
1620 PRINT :PRINT :PRINT "TO MOVE A DROID TYPE ITS SYMBOL AND"
1630 PRINT "DIRECTION TO GO (N,NE,E,SE,S,SW,W,NW)."
1640 PRINT :PRINT "THE DROID WILL GO THAT WAY UNTIL IT"
1650 PRINT "RUNS OUT OF ORE. "
1660 PRINT :PRINT "YOU GET ONE POINT FOR EACH ";:COLOR 14:PRINT CHR$(ORE);:PRINT ".":COLOR 7
1670 PRINT :PRINT "PRESS ANY KEY TO CONTINUE."
1680 RESP$=INKEY$:IF RESP$="" THEN GOTO 1680
1690 RETURN
1700 REM GET PLAYER NAMES PL$(NP)
1710 CLS
1720 PRINT "HOW MANY PLAYERS? (1 TO 4)"
1730 RESP$=INKEY$:IF RESP$="" THEN GOTO 1730
1740 IF RESP$<"1" OR RESP$>"4" THEN PRINT "PLEASE TYPE 1,2,3, OR 4":GOTO 1730
1750 NPLAY=VAL(RESP$)
1760 PRINT NPLAY;"PLAYERS, RIGHT? (Y OR N)"
1770 RESP$=INKEY$:IF RESP$="" THEN GOTO 1770
1780 IF RESP$="N" OR RESP$="n" THEN GOTO 1720
1790 PRINT "NOW, ENTER THE NAMES OF THE PLAYERS."
1800 FOR I=1 TO NPLAY
1810 PRINT "TYPE THE NAME FOR PLAYER ";I;" AND PRESS ENTER KEY.":INPUT "",PL$(I)
1820 PRINT "WELCOME ";PL$(I);"!"
1830 NEXT
1840 RETURN
1850 REM SETUP PLAYING ENVIRONMENT
1860 GOSUB 1180
1870 GOSUB 1250
1880 COLOR 1
1890 RANDOMIZE VAL(MID$(TIME$,7,2)+MID$(TIME$,4,2))
1900 FOR J=1 TO 4
1910 IX(J)=INT(15*RND)+5
1920 IY(J)=INT(10*RND)+3
1930 CHT=SCREEN (IY(J),IX(J)):IF CHT<>ORE THEN 1910
1940 LOCATE IY(J),IX(J):PRINT CHR$(CH(J))
1950 NEXT
1960 COLOR 7:LOCATE 14,5
1970 PRINT "SCORE     PLAYER'S NAME"
1980 FOR J=1 TO NPLAY
1990 SC(J)=0
2000 LOCATE 14+J,5:PRINT SC(J),PL$(J)
2010 NEXT
2020  RETURN
2030 REM PLAYER NUMBER NP'S MOVE
2040 LOCATE 20,1:FOR I=1 TO 3:PRINT BL$:NEXT
2050 LOCATE 20,1:PRINT PL$(NP);", TYPE A DROID'S SYMBOL ":INPUT "AND PRESS ENTER ",DJ$
2060 IF DJ$=CHR$(CH(1)) OR DJ$=CHR$(CH(2)) OR DJ$=CHR$(CH(3)) OR DJ$=CHR$(CH(4)) THEN GOTO 2070 ELSE GOTO 2040
2070 LOCATE 22,1:INPUT "TYPE A DIRECTION AND PRESS ENTER ",DIR$
2080 IF DIR$="N" THEN DY=-1:DX=0:GOTO 2170
2090 IF DIR$="NE" THEN DY=-1:DX=1:GOTO 2170
2100 IF DIR$="E" THEN DY=0:DX=1:GOTO 2170
2110 IF DIR$="SE" THEN DY=1:DX=1:GOTO 2170
2120 IF DIR$="S" THEN DY=1:DX=0:GOTO 2170
2130 IF DIR$="SW" THEN DY=1:DX=-1:GOTO 2170
2140 IF DIR$="W" THEN DY=0:DX=-1:GOTO 2170
2150 IF DIR$="NW" THEN DY=-1:DX=-1:GOTO 2170
2160 GOTO 2070
2170 FOR J=1 TO 4:IF CHR$(CH(J))=DJ$ THEN DN=J
2180 NEXT
2190 RETURN
2200 REM GAME MOVE FOR PLAYER NUMBER NP WITH DROID SYMBOL DJ$ AND DIRECTION DX,DY AND SCORE SC(NP) DROID NUMBER DN
2210 CT=SCREEN (IY(DN)+DY,IX(DN)+DX)
2220 IF CT<>ORE THEN RETURN
2230 LOCATE IY(DN),IX(DN):PRINT CHR$(0)
2240 IY(DN)=IY(DN)+DY:IX(DN)=IX(DN)+DX
2250 SC(NP)=SC(NP)+1:LOCATE 14+NP,5:PRINT SC(NP)
2260 LOCATE IY(DN),IX(DN):COLOR 1:PRINT CHR$(CH(DN)):COLOR 7
2270 PLAY "O1 T200 G"
2280 GOTO 2210
2290 REM CHECK ENDGAME
2300 STP$="YES"
2310 FOR J=1 TO 4
2320 FOR JX=-1 TO 1
2330 FOR JY=-1 TO 1
2340 CT=SCREEN (IY(J)+JY,IX(J)+JX)
2350 IF CT=ORE THEN STP$="NO"
2360 NEXT :NEXT :NEXT
2370 IF STP$="NO" THEN RETURN
2380 LOCATE 17+6,5:PRINT "GAME IS OVER"
2390 PRINT "PLAY AGAIN? (Y OR N)"
2400 RESP$=INKEY$:IF RESP$="" THEN  GOTO 2400
2410 IF RESP$="Y" OR RESP$="y" THEN  GOTO 1090
2420 IF SAMPLE$="YES" THEN CHAIN "SAMPLES",1000 ELSE END
2430 GOTO 1030

LOSTGOLD.BAS

10 KEY OFF:CLS
20 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
30 PRINT"░┌───────────────────────────────────┐░"
40 PRINT"░│                                   │░"
50 PRINT"░│            2038-A.BAS             │░"
60 PRINT"░│        LOST DUTCHMAN'S GOLD       │░"
70 PRINT"░│                                   │░"
80 PRINT"░│                                   │░"
90 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF  │░"
100 PRINT"░│      ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄      │░"
110 PRINT"░│        █   █   █ █     █   █      │░"
120 PRINT"░│        █   █▄▄▄█ █     █   █      │░"
130 PRINT"░│        █   █     █     █   █      │░"
140 PRINT"░│      ▄▄█▄▄ █     █▄▄▄▄ █▄▄▄█      │░"
150 PRINT"░│                                   │░"
160 PRINT"░│      International PC Owners      │░"
170 PRINT"░│                                   │░"
180 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
190 PRINT"░│                                   │░"
200 PRINT"░└───────────────────────────────────┘░"
210 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
220 PRINT
230 PRINT "       PRESS ANY KEY TO CONTINUE
240 A$=INKEY$: IF A$="" THEN 240
250 CLS
1000 REM	THIS IS THE 'ADVENTURE' GAME OF 'LOST DUTCHMAN'S GOLD',
1010 REM	FROM THE LISTING IN BYTE OF DECEMBER 1980 (PAGE 268 +)
1020 REM
1030 REM				** CHRIS SIDENER **
1040 REM				SPRINGFIELD, VIRGINIA
1050 REM	*******************************************************************
1060 CLEAR,,4000
1070 CLS:KEY OFF
1080 PRINT "WELCOME TO THE SEARCH FOR THE LOST DUTCHMAN'S GOLD." : PRINT "I'M THE GHOST OF BACK-PACK SAM, YER GUIDE ON THIS ADVENTURE."
1090 PRINT : PRINT"YA CAN USE TWO WORD COMMANDS TO FIND CLUES 'N MOVE 'BOUT. GET, GO, PUT, DROP,"
1100 PRINT "SCORE, INVENTORY, 'N 'BOUT 100 MORE WORDS MAKE SENSE TA ME." : PRINT"ASK FER HELP IF YA GET STUMPED." : PRINT "I HOPE YA DON'T END UP A GHOST,    LIKE ME!!"
1110 PRINT:PRINT"                    GOOD LUCK ! !" : PRINT
1120 DIM T$(200)
1130 DIM N$(26,7),O$(32,3),R$(46) : B=0 : IN=B : LN=100 : LM=LN : X1=B : X2=B : T$="" : M1$=T$ : M2$=T$ : QM$=T$ : U=B : U1=B : IM=2 : BD=21 : L=1 : C$=CHR$(13)
1140 FOR L=B TO 26 : FOR I=B TO 7 : READ N$(L,I) : NEXT I,L
1150 FOR I=B TO 32 : READ O$(I,0),O$(I,1),O$(I,2) : O$(I,3)=" " : NEXT
1160 FOR I=B TO 46 : READ R$(I) : NEXT
1170 PRINT "HIT 'RETURN' TO START." : INPUT ZX : L=1 :
1180 IF ((O$(12,2)=STR$(L) OR O$(12,3)="1") AND CL > 0) OR L < 15 THEN 1230
1190 PRINT "IT'S TOO DARK TA SEE !!" : IF L=15 AND O$(6,3) <> "1" AND O$(4,3) <> "1" THEN PRINT "YA HEAR A STRANGE NOISE !"
1200 GOTO 1560
1210 T$="OK" : RETURN
1220 B=1 : PRINT : PRINT "YA SEE : "; : RETURN
1230 IF CL=1 THEN LN=LN-1 : IF LN < 1 THEN CL=0
1240 L1=L
1250 B=0 : PRINT "YER "N$(L,0)"." : FOR J=0 TO 32 : IF VAL(O$(J,2)) <> L THEN 1370
1260 IF B=0 THEN GOSUB 1220
1270 IF O$(J,3)="-7" OR O$(J,3)="-2" THEN PRINT "BURNT ";
1280 IF J <> 1 OR VAL(O$(1,2)) <> L THEN 1310
1290 IF O$(1,3)="" THEN PRINT "UNTIED "; : GOTO 1310
1300 IF O$(1,3)="-9" THEN PRINT "DEAD ";
1310 IF O$(J,3)="-3" THEN PRINT "SMASHED ";
1320 IF L <> 26 OR J <> 32 THEN 1350
1330 IF U1 <> 0 THEN PRINT "UN";
1340 PRINT "LOCKED ";
1350 IF CL=1 AND J=12 THEN PRINT "LIT ";
1360 PRINT O$(J,0)". ";
1370 NEXT J
1380 IF U1=1 AND L=1 THEN PRINT "OPEN TRAP DOOR. ";
1390 IF N$(L,1)="" THEN PRINT : GOTO 1500
1400 IF B=0 THEN GOSUB 1220
1410 IF L <> 16 THEN 1440
1420 IF U <> 0 THEN PRINT "UN";
1430 PRINT "LOCKED "; : GOTO 1470
1440 IF L <> 17 THEN 1470
1450 IF U=1 THEN PRINT "UNLOCKED "; : GOTO 1470
1460 PRINT "BLOCKED ";
1470 PRINT N$(L,1)".
1480 IF L=17 AND U=0 THEN N$(L,2)=" "+RIGHT$(N$(L,2),3)
1490 IF L=16 AND U=1 THEN N$(L,2)="E"+RIGHT$(N$(L,2),3)
1500 PRINT : IF N$(L,2)="" THEN 1560
1510 PRINT "OBVIOUS EXITS : "; : FOR I=1 TO 4 : P$=MID$(N$(L,2),I,1) : IF P$="N" THEN PRINT "NORTH ";
1520 IF P$="S" THEN PRINT "SOUTH ";
1530 IF P$="E" THEN PRINT "EAST ";
1540 IF P$="W" THEN PRINT "WEST ";
1550 NEXT : PRINT
1560 B=0 : PRINT "=======================================
1570 PRINT: IF L=9 AND O$(22,2)="11" THEN PRINT "THAR'S NOISE UP AHEAD." : PRINT "SOUNDS LIKE INJUNS.
1580 IF L=9 AND O$(22,2)="" THEN O$(22,2)="11"
1590 INPUT " --NOW WHAT";QM$
1600 IF LN <10 AND CL=1 THEN PRINT "YER RUNNIN' LOW ON KEROSENE.
1610 REM
1620 IF QM$ <> "SCORE" THEN 1680
1630 IF L <> 6 THEN T$= "YA GET NOTHIN' FOR BEIN' HERE!" : GOTO 3820
1640 Z=0 :FOR I=14 TO 17 : IF O$(I,2) = "6" THEN Z=Z+1
1650 NEXT
1660 PRINT "YA GOT "Z" TREASURES, TOT'LIN "(Z/4)*100"%" : IF Z = 4 THEN PRINT "YA MADE IT!!": GOTO 4130
1670 T$= "YA MISSED SUN TREASURE!" : GOTO 3820
1680 IF CL=0 AND L=15 AND O$(6,3) <> "1" THEN PRINT "YE GAD!" : PRINT "YA BEEN BIT BY A RATTLER." : PRINT "YER DEAD." :GOTO 4130
1690 IF L=17 AND U=1 AND RND(1)*9+1 < 2 THEN PRINT "HOLEY CRAP! WOWIE!! IT'S A CAVE IN !! ": PRINT "THE IRON DOOR'S BLOCKED, " : PRINT "YER TRAPPED!!" : U=0
1700 IF QM$="HELP" THEN X=VAL(N$(L,3)) : ON X GOSUB 4150,4160,4170,4180,4200,4220,4230,4240, : GOTO 1180
1710 IF LEFT$(QM$,2)="GO" THEN  X1=LEN(QM$):QM$=RIGHT$(QM$,X1-2):QM$="GOO"+QM$
1720 X1 =LEN(QM$) : IF X1 <3 THEN T$="WHAT?" : GOTO 3820
1730 X3=0 : FOR X2=3 TO X1 : M1$= MID$(QM$,X2,1) : IF M1$=" " THEN X3 = X2 : X2=X1
1740 NEXT X2 : X2 = X3 : IF X3 =0 THEN X2 = X1
1750 P$ = LEFT$(QM$,3) : IF X2 < > X1 AND X2+ 3 > X1 THEN 1990
1760 II =-1 : FOR I= 0 TO 42 : IF P$=R$(I) THEN II=I
1770 NEXT : IF II > -1 THEN I= II : GOTO 1810
1780 IF X1 = X2 THEN T$= "WHAT?" : GOTO 3820
1790 T$="SORRY, BUT YA CAN'T "+ LEFT$(QM$,X2) : IF X2 < X1 THEN T$=T$ + RIGHT$(QM$,X1 - X2)
1800 T$=T$+ "." : GOTO 3820
1810 IF I < 8 AND X1=X2 THEN ON I+1 GOSUB 3970,3970,3970,4130,2060,3980,3840,3940 : GOTO 3820
1820 JJ= -1 : M1$ = MID$(QM$,X2+1,3) : FOR J= 0 TO 32 : IF M1$ = LEFT$ (O$(J,0),3) THEN JJ = J
1830 NEXT : J= JJ : IF JJ > -1 THEN 2000
1840 IF M1$ = "IRO" THEN 1960
1850 IF I=36 THEN 2400
1860 IF N$(L,1) = "" THEN 1930
1870 Z=1 : A = Z : X1 = LEN(N$(L,1)) : FOR X2 = 5 TO X1 : IF MID$(N$(L,1),X2,1) <> CHR$(46) AND X2 <> X1 THEN 1920
1880 M2$=MID$(N$(L,1),Z,3) : IF M2$=M1$ THEN 1900
1890 Z=X2+2 : A=A+1 : GOTO 1920
1900 X2=X1 : B=A : IF I=10 THEN PRINT "YA SEE NOTHIN' SPECIAL." : GOTO 1240
1910 GOTO 2000
1920 NEXT
1930 FOR X=43 TO 46 : IF M1$=R$(X) THEN X=46 : GOTO 2040
1940 NEXT
1950 IF O$(4,3) = "1" OR O$(6,3) = "1" THEN IF I=23 AND M1$= "SEL" THEN PRINT "OK" : PRINT "YER DEAD." : GOTO 4130
1960 IF I=32 THEN GOSUB 2220 : GOTO 3820
1970 IF I=33 THEN GOSUB 2340 : GOTO 3820
1980 T$ = "I CAN'T TELL WHATCHA WANT." : GOTO 3820
1990 T$ ="I MUST BE DUMB, YA DON'T MAKE SENSE." : GOTO 3820
2000 IF I < 9 THEN 2040
2010 IF J < 33 AND J > -1 THEN B= VAL(O$(J,2)) : IF B<> L AND B> 0 THEN 3810
2020 IF J > 32 THEN J= 29
2030 ON I - 8 GOSUB 2820,3040,3040,3040,2820,3440,3440,3440,3440,3640,3640,2820,2100,2100,2580,2570,2570,2380,2660,2750,2780,2170,2170,2220,2340,2820,2370,2400,3440,3430,2980,3000,3640,4250
2040 IF I < 9 THEN ON I+1 GOSUB 2420,2420,2420,4130,2060,2420,3840,3940,2980
2050 GOTO 3820
2060 IF O$(3,3) <> "1" THEN 3810
2070 PRINT "OK" : FOR I=13 TO 17 : IF VAL(O$(I,2)) = -L THEN T$ = "EUREKA! WE STRUCK GOLD?!??" : O$(I,2) = STR$(L) : RETURN
2080 NEXT
2090 T$ = "DAG NAB IT! THAR'S NOTHIN' HERE!" : RETURN
2100 IF J <> 23 THEN 2570
2110 IF L= 14 THEN O$(23,2) = "15" : GOTO 1210
2120 IF L = 15 THEN O$(23,2) = "16" : GOTO 1210
2130 IF L= 16 AND U= 1 THEN O$(23,2) = "17" : GOTO 1210
2140 IF L=17 THEN O$(23,2) = "19" : GOTO 1210
2150 IF L=19 THEN O$(23,2) = "23" : O$(23,3) = "-3
2160 GOTO 1210
2170 IF J=3 OR J=4 OR J= 6 OR J=8 OR J=9 OR J=11 OR J=12 OR J=13 OR J=19 OR J=27 OR J=28 THEN 2190
2180 GOTO 2560
2190 IF O$(J,3) = "1" THEN IN = IN-1
2200 O$(J,3) = "-3" : O$(J,2) = STR$(L) : GOTO 1210
2210 T$ = "DON'T HAFTA." : RETURN
2220 IF L <> 16 THEN 2260
2230 IF U <> 0 THEN 2210
2240 IF O$(10,3) = "1" THEN U = 1 : GOTO 1210
2250 GOTO 3810
2260 IF L <> 26 THEN 2300
2270 IF U1 <> 0 THEN 2210
2280 IF O$(10,3) = "1" THEN U1 = 1 : RETURN
2290 GOTO 3810
2300 IF O$(1,3) <> "1" THEN 2330
2310 IF O$(0,3) = "2" THEN O$(0,3) = "" : O$(0,2) = STR$(L) : GOTO 1210
2320 GOTO 2560
2330 IF CL = 1 AND O$(12,3) = "1" THEN CL=0 : GOTO 1210
2340 IF (L=16 OR L=17) AND U = 1 THEN U=0 : GOTO 1210
2350 IF L=26 AND U1 =1 THEN U1 =0 : GOTO 1210
2360 GOTO 2560
2370 T$= "YA HEAR NOTHIN' SPECIAL." : RETURN
2380 IF L <> 11 OR O$(9,3) <> "1" THEN 2980
2390 PRINT "THEY TOOK THE FIRE WATER 'N RAN." : IN=IN-1 : O$(9,2) = "" :O$(9,3) = "" : O$(22,2) = "" : RETURN
2400 IF M1$= "YOH" THEN T$= "TURKEY!" : PRINT "SORRY, YER IN THE WRONG ADVENTURE." : GOTO 3820
2410 GOSUB 1210 : T$=T$+ CHR$(13)+ RIGHT$(QM$,X1 - X2)+ "." : GOTO 3820
2420 IF B=0 THEN 2470
2430 L= VAL(N$(L,B+3)) : IF O$(1,3)= "1" AND (L=1 OR L=6 OR L=15) THEN T$ ="HE WON'T GO." : L=L1 : RETURN
2440 IF L=17 AND U=0 THEN L=L1 : GOTO 3810
2450 IF L1 = 26 AND L=1 AND U1=0 THEN L=L1 : GOTO 3810
2460 GOTO 2570
2470 IF U1 = 1 AND L=1 THEN L=26 : GOTO 1210
2480 IF U1 =1 AND M1$="TRA" AND L=26 THEN L=1 : RETURN
2490 FOR X1= 1 TO 4 : M2$= MID$(N$(L,2),X1,1) : IF M2$ <> LEFT$(M1$,1) THEN NEXT X1 : GOTO 2520
2500 FOR X2=43 TO 46 : IF M1$ <> R$(X2) THEN NEXT X2 : GOTO 2520
2510 L=VAL(N$(L,X1+3)) : IF L <> 0 THEN 2570
2520 IF L=23 THEN T$="IT'S TOO SLIPPERY." :RETURN
2530 IF L=25 THEN L=26 : RETURN
2540 IF L=26 THEN L=25 : RETURN
2550 IF L=19 THEN L=23 : PRINT "NIGH BROKE M' NECK!!" :RETURN
2560 T$= "SORRY, BUT YA CAN'T DO THAT." : RETURN
2570 B=0 : GOTO 1210
2580 IF O$(4,3) <> "1" AND O$(6,3) <> "1" THEN 2980
2590 IF J <> 1 THEN 2630
2600 Z=0 : IF O$(J,3) = "1" THEN Z=99
2610 O$(J,3) = "-9" : O$(1,2) = STR$(L)
2620 IF Z=99 THEN IN=IN-1
2630 IF J=22 THEN PRINT "YA GOT ONE!" : PRINT "BUT THE REST GOT YOU!" : GOTO 4130
2640 IF J=9 THEN T$ = "YA HIT ONE!" : RETURN
2650 GOTO 1210
2660 IF O$(18,3) <> "1" THEN 3810
2670 IF J < 0 THEN 1790
2680 IF J=4 OR (J>5 AND J<11) OR (J>14 AND J < 18) OR J=22 OR J=29 OR J > 30 THEN 2560
2690 IF O$(J,3)="1" THEN IN=IN -1
2700 O$(J,3)="-7" : O$(J,2) = STR$(L)
2710 IF J > 0 THEN 2570
2720 IF O$(0,3) <> "-7" THEN 2570
2730 O$(0,2) = STR$(L) : FOR J=5 TO 21 : IF O$(J,2) = "-1" THEN O$(J,3) = "-7"
2740 NEXT : GOTO 2570
2750 IF J <> 12 THEN 2660
2760 IF O$(J,3) <> "1" OR O$(18,3) <> "1" THEN 2660
2770 CL = 1 : GOTO 1210
2780 IF J=13 THEN PRINT "YEEECH!!" : PRINT"IT'S KEROSENE!" : PRINT "YA JUST POISONED YERSELF." : GOTO 4130
2790 IF J <> 9 THEN 2560
2800 PRINT "WHEEEE!!" : PRINT "YA GOT PLASTERED AND LOST A DAY." : IF CL=1 THEN LN=LN-10
2810 RETURN
2820 IF J > 32 OR J < 0 THEN 2860
2830 B= VAL(O$(J,2)) : IF O$(J,3) = "2" OR B=L OR B= -1 THEN 2860
2840 IF J < 22 THEN 3810
2850 T$= "IT AIN'T HERE." : RETURN
2860 IF J > 21 OR J=1 OR J= -1 THEN T$="WHO YOU THINK YA IS, PAUL BUNYON?!!" :RETURN
2870 IF O$(J,3) = "-7" THEN T$="IT'S BURNT UP 'N RUINED." : RETURN
2880 IF IN > 4 THEN T$="YA CAN'T! YER HANDS 'R FULL." : RETURN
2890 IF O$(J,3)="1" THEN PRINT "YA ALREADY GOT IT!" : RETURN
2900 IF VAL(O$(J,1))= 0 AND I <> 16 THEN 2930
2910 IN=IN+1 : IF O$(J,2) = "-1" THEN IM=IM-1 : O$(J,2)="" : O$(J,3)="1" :GOTO 2930
2920 O$(J,3)="1" : O$(J,2) =""
2930 IF J <> 9 AND J <> 11 AND J <> 2 THEN 1210
2940 IF J=9 THEN IF O$(8,2)="-6" THEN O$(8,2) = "6"
2950 IF J=11 THEN IF O$(12,2)= "-8" THEN O$(12,2)="8
2960 IF J=2 THEN IF O$(18,2)="-14" THEN O$(18,2)="14
2970 RETURN
2980 IF O$(J,3) <> "1" THEN T$= "YA DON'T HAVE IT!" :RETURN
2990 T$="OK" : IN=IN-1 : O$(J,2)= STR$(L) : O$(J,3) = "" : RETURN
3000 IF O$(5,3) <> "1" THEN 3810
3010 IF L=7 THEN L=8 : GOTO 1210
3020 IF L=12 THEN L=13
3030 GOTO 1210
3040 GOSUB 1210 : ON J+1 GOTO 3060,3100,3110,3130,3140,3150,3160,3130,3130,3170,3190,3200,3220,3230,3130,3130,3130,3130,3130,3250,3270,3290,3310,3320,3330,3350,3130,3370,3130,3130,3130,3390,3130
3050 GOTO 3130
3060 IF VAL (O$(0,3)) < 1 THEN T$= "THEY'S LUMPY OL' LEATHER SADDLEBAGS." : RETURN
3070 PRINT "THEY HOLD ";: IF IM=0 THEN PRINT "NOTHIN'." : T$="" : RETURN
3080 FOR I=6 TO 22 : IF O$(I,2) = "-1" THEN PRINT " "O$(I,0)",";
3090 NEXT : T$= CHR$(8)+"." : RETURN
3100 T$="YA SEE A WEARY OL' GREY MULE." : RETURN
3110 T$="IT'S AN OL' TORN SACK." : IF O$(18,2)= "-14" THEN O$(18,2)="14"
3120 RETURN
3130 T$="YA SEE NOTHIN' SPECIAL." : RETURN
3140 T$="IT'S AN OLD WINCHESTER SINGLE-SHOT." : RETURN
3150 T$="LOOKS LIKE A MAP TA THE LOST DUTCHMAN'S MINE! THAR'S A SKETCH OF SOME BOULDERS." : RETURN
3160 T$="NOTHIN' SPECIAL,"+C$+"JUS' A LOADED SIX SHOOTER." : RETURN
3170 IF O$(8,2) = "-6" THEN T$="LOOKS LIKE SOMETHIN'S 'HIND THE BOTTLES." : O$(8,2)="6" : RETURN
3180 GOTO 3130
3190 T$ ="THAR'R 3 KEYS, TIED WITH A LEATHER STRAP" : RETURN
3200 IF O$(12,2) = "-8" THEN T$="LOOKS LIKE THAR'S GLASS UNDER 'UM." : O$(12,2)="8" : RETURN
3210 GOTO 3130
3220 T$="IT'S AN OL' KEROSENE LAMP, FULL TA THE '"+STR$(LN)+" TURNS LEFT' MARK." : RETURN
3230 IF I=11 THEN T$="IT SEZ 'KEROSENE.'" : RETURN
3240 T$="THAR'S WRITING ON IT." : RETURN
3250 IF O$(20,2) = "-17" THEN O$(20,2) ="17" : T$="IT'S A MESSAGE !" : RETURN
3260 GOTO 3130
3270 IF I=11 THEN T$="IT SEZ :"+C$+"BRING TREASURES TO SALOON, SAY 'SCORE.'" : RETURN
3280 GOTO 3240
3290 IF I=11 THEN T$="IT SEZ.. ": PRINT"HAVEN'T YOU ANYTHING BETTER TO DO?" : RETURN
3300 GOTO 3240
3310 T$="THEY'S A SAVAGE LOOKIN' BAND,"+C$+"'N THEY SEEN YA!" : RETURN
3320 T$="JUS' AN OL' CART FULL O' ROCKS." : RETURN
3330 IF O$(5,2)="-25" THEN O$(5,2)="1" : T$="THAR'S SOMETHIN' HERE!!" : RETURN
3340 GOTO 3130
3350 IF I=11 THEN T$="IT SEZ :"+C$+"WELCOME TO FRONTIERTOWN." : RETURN
3360 GOTO 3240
3370 IF O$(10,2) ="-6" THEN O$(10,2) ="6" : T$="THAR'S A SET OF KEYS THAR!" : RETURN
3380 GOTO 3130
3390 B=INT(RND(1)*3+1) : ON B GOTO 3400,3410,3420
3400 T$="IT'S A BARREL CACTUS." : RETURN
3410 T$="IT'S A CHOLLA CACTUS." : RETURN
3420 T$="IT'S A SAGUARO CACTUS." : RETURN
3430 IF J=4 AND I=38 THEN 3570
3440 IF J <> 1 OR VAL(O$(1,3)) < 0 THEN T$="SORRY, BUT THAT AIN'T POSSIBLE." : RETURN
3450 IF I <> 38 THEN 3480
3460 IF O$(1,3) ="" THEN T$="TENDERFOOT! YA HAFTA LEAD 'IM FIRST." : RETURN
3470 GOTO 3570
3480 IF O$(1,3)="1" THEN 2980
3490 IF O$(7,3)="1" THEN IF I <> 16 THEN T$= "TRY 'LEAD.' : RETURN
3500 ON I-13 GOTO 3510,3520,3530,3560
3510 T$="HE GOT AWAY FROM YA." : RETURN
3520 T$="YER TOO SLOW, HE GOT AWAY." : RETURN
3530 IF O$(7,3) <> "1" THEN T$="BAD LUCK, YA TRIPPED AND HE RAN OFF." : O$(1,3)="" : O$(1,2) = STR$(L) : RETURN
3540 IF O$(1,3) ="" THEN 2880
3550 GOTO 2980
3560 T$="HE BUCKED YA OFF." : RETURN
3570 INPUT "WITH WHAT";QM$ : IF J=4 THEN 3610
3580 IF LEFT$(QM$+" ",3) <> "SAD" THEN T$="IT FELL OFF."+C$+"HE GOT AWAY.":O$(1,3)="" : IN=IN-1 : O$(1,2)= STR$(L) : RETURN
3590 IF O$(0,3)="1" THEN O$(0,3)="2" : IN=IN-1 : GOTO 2570
3600 GOTO 2980
3610 IF LEFT$(QM$+" ",3) <> "BUL" THEN 2560
3620 IF O$(8,3) <> "1" OR O$(4,3) <> "1" THEN 2980
3630 GOTO 1210
3640 IF O$(J,3) <> "1" THEN 2980
3650 INPUT "ON OR IN WHAT? (IE 'ON TABLE') ";QM$ : P$=LEFT$(QM$+" ",2) : IF P$ <> "IN" AND P$ <> "ON" THEN T$="HUH?" : RETURN
3660 M1$=MID$(QM$,4,3)
3670 IF P$ <> "ON" THEN 3720
3680 IF M1$="MUL" THEN 3590
3690 IF J <> 13 THEN 2980
3700 IF LM=0 THEN T$="IT'S EMPTY." : RETURN
3710 LM=0 : GOTO 2980
3720 IF M1$ <> "SAD" THEN 3760
3730 IF J < 5 OR J=19 OR J=22 THEN T$="SORRY, IT DON'T FIT." : RETURN
3740 IF IM > 4 THEN T$= "THE BAGS 'R FULL." : RETURN
3750 O$(J,2)="-1" : O$(J,3)="" : IN=IN-1 : IM = IM+1 : T$="OK" : RETURN
3760 IF M1$ = "MUL" THEN T$="YA GOT KICKED !" : RETURN
3770 IF M1$ <> "LAN" THEN 2560
3780 IF O$(13,3) <> "1" OR O$(12,3) <> "1" THEN 2980
3790 IF LM=50 THEN LN=LN+50 : LM =0 : GOTO 1210
3800 T$="JAR'S EMPTY." :RETURN
3810 T$="YA CAN'T DO THAT... YET!
3820 PRINT T$ : T$="" : GOTO 1180
3830 REM ************************** INVENTORY ****************
3840 PRINT "YA GOT WITH YA: "; : IF IN=0 AND O$(1,3) <> "1" THEN T$="NOTHIN'" : RETURN
3850 B=VAL(O$(0,3)) : X1=B : IF B <> 1 THEN 3880
3860 PRINT : PRINT O$(0,0)", CONTAINING: "; : FOR I=1 TO 22 : IF O$(I,2)="-1" THEN PRINT O$(I,0)". ";:X1=2
3870 NEXT : IF X1 <> 2 THEN PRINT "NOTHIN'! ";
3880 IF O$(1,3)="1" THEN PRINT : PRINT "THE MULE, WHICH YER LEADIN. "; : IF B=2 THEN PRINT "(CARRYIN' SADDLEBAGS) ";
3890 PRINT : X1=0 : FOR I=2 TO 22 : IF VAL(O$(I,3)) < 1 THEN 3920
3900 IF CL=1 AND I=12 THEN PRINT "LIT ";
3910 PRINT O$(I,0)". ";
3920 NEXT
3930 T$="" : RETURN
3940 IF L=19 THEN PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT "YA FELL 100 FEET 'N LANDED ON THE ROCKS." : PRINT:PRINT:PRINT"		YER DEAD." : GOTO 4130
3950 IF J=23 OR J=32 OR M1$="P" THEN T$="OK" : RETURN
3960 GOTO 2560
3970 T$="WHERE?" : RETURN
3980 IF L=25 THEN L=26 : GOTO 1210
3990 IF L=26 THEN L=25
4000 GOTO 1210
4010 DATA ,,,,,,,,IN A MINER'S SHACK,WINDOW. DOOR,,1,3,3,,,IN A DESERT,ROAD. MOUNTAINS. DESERT,WNES,2,4,2,2,2,ON A DIRT PATH,MINER'SHACK. ROAD. MOUNTAINS," W ",5,1,4,2,2
4020 DATA ON A DIRT ROAD,MOUNTAINS. PATH. DESERT. TOWN,NE S,2,7,3,2,5,IN A GHOST TOWN,SALOON," N ",1,6,4,,,IN A SALOON,,W   ,1,5,,,
4030 DATA AT THE SUPERSTITION MOUNTAINS,ROAD. DESERT,"S N ",4,4,2,2,2,AT WEAVER'S NEEDLE,,NS  ,1,9,7,,
4040 DATA IN A NARROW DEFILE,BUSHES. CAVES,"  NS",1,11,10,12,8,IN A SMALL CAVE,,E   ,1,9,,,,BEHIND A BUSH,BUSH.,W   ,1,9,,,,IN A BOX CANYON,BUSHES. TREES. BOULDERS,"   S",4,12,12,12,9
4050 DATA IN FRONT OF A HIDDEN MINE,MINE SHAFT,ESNW,8,14,12,12,12,IN THE MOUTH OF A DIM MINE,MINE SHAFT,EW  ,1,15,13,,,IN A MINE,DARK TUNNEL,EW,6,16,14,,
4060 DATA AT THE END OF A TUNNEL,IRON DOOR," W  ",1,17,15,,,IN A LARGE CHAMBER,IRON DOOR,WNES,1,16,19,18,20,IN A MAZE OF TUNNELS,,NSEW,6,18,18,18,18,IN FRONT OF A PIT,DARK HOLE," S  ",7,23,17,,
4070 DATA AT AN INTERSECTION,," SNW",6,,22,17,21,IN A DEAD END TUNNEL,,E   ,8,20,,,,IN A BLOCKED TUNNEL,,N   ,8,20,,,,AT THE BOTTOM OF A SHAFT,WALLS,S   ,8,24,,,
4080 DATA IN A TUNNEL,,NS  ,6,23,25,,,AT THE END OF A TUNNEL,LADDER," N  ",6,26,24,,,AT THE TOP OF A LADDER,,,6,1,25,,
4090 DATA SADDLEBAGS,2,1,MULE,,3,BURLAP SACK,4,14,SHOVEL,4,1,RIFLE,4,1,MAP,1,-25,GUN,1,-1,CARROTS,1,-1,BOX OF RIFLE BULLETS,1,-6,WHISKEY BOTTLES,2,6,KEYS,1,-6,PILE OF BONES (MINE),2,8
4100 DATA LANTERN,2,-8,JAR OF LIQUID,1,-11,*SPANISH COINS*,1,-10,*TOURQUOISE*,1,-23,#SILVER#,1,-21,#GOLD#,1,-22,MATCHES,1,-14,CRATES,3,17,NOTE,1,-17,PAPER,1,6,INDIANS,,11
4110 DATA ORE CART,,14,BED,,1,SIGN,,5,BROKEN GLASS,,6,TABLES,,6,CHAIRS,,6,ROCKS,,10,WOODEN RAILS,,15,CACTUS,,2,TRAP DOOR,,26
4120 DATA GOO,ENT,RUN,QUI,DIG,CLI,INV,JUM,DRO,GET,EXA,REA,LOO,MOV,CAT,CHA,LEA,RID,PUT,PLA,PIC,PUS,PUL,SHO,OPE,CLO,GIV,BUR,LIG,DRI,BRE,HIT,UNL,LOC,TAK,LIS,SAY,FEE,LOA,UNT,FOL,POU,EAT,NOR,SOU,EAS,WES
4130 PRINT:PRINT: INPUT "DO YA WANNA TRY AGAIN";QM$ : IF LEFT$(QM$+" ",1)="Y" THEN RUN ELSE END
4140 REM ******** HELP **************
4150 PRINT "TRY EXAM'NIN THIN'S." : RETURN
4160 PRINT "ROADS GO PLACES." : RETURN
4170 PRINT "MAYBE THE TRAIL GOES SOMEWHAR." : RETURN
4180 IF O$(5,3) <> "1" THEN PRINT "YA GOT A MAP?" :RETURN
4190 PRINT "TRY 'FOLLOW.'" : RETURN
4200 IF VAL(O$(1,2))=L THEN PRINT "THE MULE LOOKS THIN." : RETURN
4210 GOTO 4150
4220 PRINT "KEEP GOIN'." : RETURN
4230 PRINT "IT'S SLIPRY, BUTCHA MIGHT MAKE IT DOWN." : RETURN
4240 PRINT "THIS HERS'S A MINE, YA KNOW." : RETURN
4250 IF J=7 THEN T$="THEY TASTE PURTY GOOD." : RETURN
4260 T$="CAN'T DO THAT... WEIRDO !" : RETURN
4270 INPUT "SURE ";QM$ : IF LEFT$(QM$+" ",1) <> "Y" THEN 1590
4280 GOTO 1590
4290 END

MEMORY.BAS

10 KEY OFF:CLS
20 SCREEN 0
30 WIDTH 40
40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
50 PRINT"░┌───────────────────────────────────┐░"
60 PRINT"░│                                   │░"
70 PRINT"░│            5011-A.BAS             │░"
80 PRINT"░│              MEMORY               │░"
90 PRINT"░│                                   │░"
100 PRINT"░│                                   │░"
110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF  │░"
120 PRINT"░│      ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄      │░"
130 PRINT"░│        █   █   █ █     █   █      │░"
140 PRINT"░│        █   █▄▄▄█ █     █   █      │░"
150 PRINT"░│        █   █     █     █   █      │░"
160 PRINT"░│      ▄▄█▄▄ █     █▄▄▄▄ █▄▄▄█      │░"
170 PRINT"░│                                   │░"
180 PRINT"░│      International PC Owners      │░"
190 PRINT"░│                                   │░"
200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
210 PRINT"░│                                   │░"
220 PRINT"░└───────────────────────────────────┘░"
230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
240 PRINT
250 PRINT "       PRESS ANY KEY TO CONTINUE
260 A$=INKEY$: IF A$="" THEN 260
270 WIDTH 80
280 CLS
1000 REM --- MEMORY -- WITH BLOCK LETTER CHARACTERS FOR TITLE
1010 DEFINT A-Z
1020 DIM COLMASK(8)
1030 FOR I = 1 TO 8
1040 COLMASK(I) = 2^(8-I)
1050 NEXT I
1060 DOTCHAR = 219
1070 DOT$ = STRING$(1,DOTCHAR)
1080 DEF SEG = &HF000
1090 BASEADR = &HFA6E
1100 KEY OFF
1110 REM --- MAIN LOOP
1120 CLS
1130 A$ = "MEMORY"
1140 CLS
1150 FOR I = 1 TO 6
1160 CHAR$ = MID$(A$,I,1)
1170 CODE = ASC(CHAR$)
1180 IF CODE >= 128 THEN BEEP : GOTO 1110
1190 ADR = BASEADR + CODE*8
1200 REM --- SUBROUTINE TO DISPLAY CHARACTER
1210 FOR ROW = 1 TO 8
1220   ROWVAL = PEEK(ADR + (ROW-1))
1230   FOR COL = 1 TO 8
1240     COLMASK = COLMASK(COL)
1250     IF (ROWVAL AND COLMASK) = 0 THEN 1290
1260     REM --- LOCATE TO BIT POSITION AND DISPLAY GIANT PIXEL
1270     LOCATE (ROW+8), 1 + (COL-1) + (I-1)*8
1280     PRINT DOT$;
1290   NEXT COL
1300 NEXT ROW
1310 NEXT I
1320 LOCATE 18,1
1330 PRINT "WHICH GAME DO YOU WANT TO PLAY"
1340 PRINT "   1) MEMORY USING NUMBERS"
1350 PRINT "   2) MEMORY USING SYMBOLS"
1360 A$ = INPUT$(1)
1370 IF A$ = "1" THEN 1400
1380 IF A$ = "2" THEN 1420
1390 GOTO 1360
1400 FIRST = 1
1410 GOTO 1430
1420 FIRST = 2
1430 DIM TUBE(5,8), SET(40)
1440 CLS
1450 REM --- DRAW OUTSIDE EDGE
1460 H = 20
1470 W = 79
1480 R = 1
1490 C = 1
1500 GOSUB 1860         ''' TOP SIDE
1510 GOSUB 2000         ''' RIGHT SIDE
1520 GOSUB 2080         ''' BOTTOM SIDE
1530 GOSUB 2160         ''' LEFT SIDE
1540 LOCATE R,C
1550 PRINT CHR$(201)
1560 R = 5
1570 GOSUB 1910         ''' ACROSS
1580 R = 9
1590 GOSUB 1910         ''' ACROSS
1600 R = 13
1610 GOSUB 1910         ''' ACROSS
1620 R = 17
1630 GOSUB 1910         ''' ACROSS
1640 R = 1
1650 C = 10
1660 GOSUB 2200         ''' UP
1670 C = 20
1680 GOSUB 2200         ''' UP
1690 C = 30
1700 GOSUB 2200         ''' UP
1710 C = 40
1720 GOSUB 2200         ''' UP
1730 C = 50
1740 GOSUB 2200         ''' UP
1750 C = 60
1760 GOSUB 2200         ''' UP
1770 C = 70
1780 GOSUB 2200         ''' UP
1790 FOR R = 5 TO 17 STEP 4
1800 FOR C = 10 TO 70 STEP 10
1810 LOCATE R,C
1820 PRINT CHR$(206)
1830 NEXT C
1840 NEXT R
1850 GOTO 2300
1860 REM *** START OF SUBROUTINE
1870 REM *** ROUTINE FOR TOP SIDE
1880 LOCATE R,C                  :REM  print top left hand corner
1890 PRINT CHR$(201)
1900 GOTO 1930
1910 LOCATE R,C
1920 PRINT CHR$(204)
1930 FOR I = C+1 TO W
1940 LOCATE R,I                  :REM  print top side
1950 PRINT CHR$(205)
1960 NEXT I
1970 LOCATE R,W+1
1980 PRINT CHR$(185)
1990 RETURN
2000 REM *** ROUTINE FOR RIGHT HAND SIDE
2010 LOCATE R,C+W                :REM  print top right hand corner
2020 PRINT CHR$(187)
2030 FOR I = R+1 TO R+H
2040 LOCATE I,C+W                :REM  print right hand side
2050 PRINT CHR$(186)
2060 NEXT I
2070 RETURN
2080 REM *** ROUTINE FOR BOTTOM SIDE
2090 LOCATE R+H,C+W              :REM  print bottom right corner
2100 PRINT CHR$(188)
2110 FOR I = C+W-1 TO C+1 STEP -1
2120 LOCATE R+H,I                :REM  print bottom side
2130 PRINT CHR$(205)
2140 NEXT I
2150 RETURN
2160 REM *** ROUTINE FOR LEFT HAND SIDE
2170 LOCATE R+H,C                :REM  print bottom left corner
2180 PRINT CHR$(200)
2190 GOTO 2220
2200 LOCATE R+H, C
2210 PRINT CHR$(202)
2220 FOR I = R+H-1 TO R+1 STEP -1
2230 LOCATE I,C                  :REM  print left hand side
2240 PRINT CHR$(186)
2250 NEXT I
2260 LOCATE R,C
2270 PRINT CHR$(203)
2280 RETURN
2290 END
2300 REM --- START ROUTINE FOR RANDOM IMAGES
2310 NUM = CVI(RIGHT$(TIME$,2))
2320 RANDOMIZE NUM
2330 REM --- DETERMINE DEGREE OF EXPERTISE
2340 LOCATE 22,1
2350 PRINT "ENTER DESIRED WAIT TIME:  1, 2, 3, OR 4 SECONDS"
2360 A$ = INKEY$
2370 IF A$ = "" THEN 2360
2380 DIF = VAL(A$)
2390 IF DIF < 1 THEN 2360
2400 IF DIF > 4 THEN 2360
2410 LOCATE 23,40
2420 PRINT "         DELAY TIME WILL BE "; DIF; " SECONDS"
2430 REM --- SET UP INITIAL VALUES
2440 FOR I = 1 TO 20
2450 SET(I) = I
2460 SET(20+I) = I
2470 NEXT I
2480 REM --- TRANSFER INITIAL VALUES TO RANDOM VALUES ON SCREEN
2490 FOR I = 1 TO 5
2500 FOR J = 1 TO 8
2510 NUM = INT(40*RND(NUM) + 1)
2520 IF SET(NUM) = 0 THEN 2510
2530 TUBE(I,J) = SET(NUM)
2540 SET(NUM) = 0
2550 NEXT J
2560 NEXT I
2570 REM --- PRINT OUT VALUES
2580 FOR I = 1 TO 5
2590 FOR J = 1 TO 8
2600 LOCATE I*4-1, (J-1)*10+3
2610 IF FIRST = 1 THEN 2640
2620 GOSUB 3960
2630 GOTO 2650
2640 PRINT TUBE(I,J)
2650 NEXT J
2660 NEXT I
2670 REM --- NUMBER THE SCREEN
2680 FOR I = 1 TO 5
2690 FOR J = 1 TO 8
2700 LOCATE I*4-1, (J-1)*10+3
2710 PRINT I; J
2720 NEXT J
2730 NEXT I
2740 REM -- START GUESSING PROCESS
2750 LOCATE 22,1
2760 PRINT "ROW =      COLUMN =      AND      ROW =      COLUMN =      "
2770 A$ = INKEY$
2780 IF A$ = "" THEN 2770
2790 I = VAL(A$)
2800 IF I <> 0 THEN 2840
2810 IF LEN(A$) = 1 THEN 2770
2820 BEEP
2830 GOTO 3770
2840 LOCATE 22,7
2850 PRINT A$
2860 A$ = INKEY$
2870 IF A$ = "" THEN 2860
2880 J = VAL(A$)
2890 IF J <> 0 THEN 2930
2900 IF LEN(A$) = 1 THEN 2860
2910 BEEP
2920 GOTO 3770
2930 LOCATE 22,21
2940 PRINT A$
2950 A$ = INKEY$
2960 IF A$ = "" THEN 2950
2970 L = VAL(A$)
2980 IF L <> 0 THEN 3020
2990 IF LEN(A$) = 1 THEN 2950
3000 BEEP
3010 GOTO 3770
3020 LOCATE 22,41
3030 PRINT A$
3040 A$ = INKEY$
3050 IF A$ = "" THEN 3040
3060 M = VAL(A$)
3070 IF M <> 0 THEN 3110
3080 IF LEN(A$) = 1 THEN 3040
3090 BEEP
3100 GOTO 3770
3110 LOCATE 22,55
3120 PRINT A$
3130 REM --- CHECK TO SEE IF SAME SPOT
3140 IF I <> L THEN 3200
3150 IF J <> M THEN 3200
3160 BEEP
3170 LOCATE 23,1
3180 PRINT "SAME SQUARE, GO AGAIN "
3190 GOTO 2740
3200 REM --- CHECK TO SEE IF VALID SUBSCRIPT
3210 IF I < 6 THEN 3260
3220 BEEP
3230 LOCATE 23,1
3240 PRINT "INVALID NUMBER........"
3250 GOTO 2740
3260 IF J > 8 THEN 3220
3270 IF L > 5 THEN 3220
3280 IF M > 8 THEN 3220
3290 REM --- CHECK TO SEE IF VALID SUBSCRIPT
3300 IF TUBE(I,J) = 0 THEN 3330
3310 IF TUBE(L,M) = 0 THEN 3330
3320 GOTO 3370
3330 LOCATE 23,1
3340 BEEP
3350 PRINT "KNOWN SQUARE, GO AGAIN"
3360 GOTO 2740
3370 REM --- DISPLAY VALUES
3380 COUNT = COUNT + 1
3390 LOCATE I*4-1, (J-1)*10+3
3400 PRINT "     "
3410 LOCATE I*4-1, (J-1)*10+3
3420 IF FIRST = 1 THEN 3450
3430 GOSUB 3960
3440 GOTO 3460
3450 PRINT TUBE(I,J)
3460 LOCATE L*4-1, (M-1)*10+3
3470 PRINT "     "
3480 LOCATE L*4-1, (M-1)*10+3
3490 IF FIRST = 1 THEN 3520
3500 GOSUB 3990
3510 GOTO 3530
3520 PRINT TUBE(L,M)
3530 REM --- CHECK FOR MATCHES
3540 IF TUBE(I,J) = TUBE(L,M) THEN 3650
3550 LOCATE 23,1
3560 PRINT "THEY DO NOT MATCH     "
3570 T1 = VAL(RIGHT$(TIME$,2))
3580 T2 = VAL(RIGHT$(TIME$,2))
3590 IF ABS(T1-T2) < DIF THEN 3580
3600 LOCATE I*4-1, (J-1)*10+3
3610 PRINT I; J
3620 LOCATE L*4-1, (M-1)*10+3
3630 PRINT L; M
3640 GOTO 2740
3650 REM --- THE SQUARES MATCH
3660 BEEP
3670 LOCATE 23,1
3680 PRINT "THEY MATCH............"
3690 LOCATE I*4-1, (J-1)*10+3
3700 PRINT CHR$(17); CHR$(219); CHR$(219); CHR$(16)
3710 LOCATE L*4-1, (M-1)*10+3
3720 PRINT CHR$(17); CHR$(219); CHR$(219); CHR$(16)
3730 TUBE(I,J) = 0
3740 TUBE(L,M) = 0
3750 MATCH = MATCH + 1
3760 IF MATCH < 20 THEN 2740
3770 REM --- TIME TO MOVE ON
3780 LOCATE 23,1
3790 BEEP
3800 PRINT "THIS GAME IS OVER ---- "
3810 BEEP
3820 LOCATE 23,23
3830 PRINT "IT TOOK YOU "; COUNT; "TURNS  "
3840 IF FIRST = 2 THEN 3920
3850 LOCATE 23,47
3860 PRINT "  PRESS ANY KEY FOR GAME 2      "
3870 A$ = INKEY$
3880 IF A$ = "" THEN 3870
3890 FIRST = 2
3900 CLS
3910 GOTO 1450
3920 LOCATE 23,47
3930 PRINT "                                "
3940 LOCATE 23,1
3950 END
3960 REM --- ROUTINE TO PRINT OUT CHR$
3970 CHAR = TUBE(I,J)
3980 GOTO 4000
3990 CHAR = TUBE(L,M)
4000 ON CHAR GOTO 4010,4030,4050,4070,4090,4110,4130,4150,4170,4190,4210,4230,4250,4270,4290,4310,4330,4350,4370,4390
4010 PRINT CHR$(17); CHR$(219); CHR$(219) CHR$(16)        '' 1
4020 RETURN
4030 PRINT CHR$(221); CHR$(220); CHR$(223) CHR$(222)     '' 2
4040 RETURN
4050 PRINT CHR$(204); CHR$(205); CHR$(205) CHR$(185)     '' 3
4060 RETURN
4070 PRINT CHR$(204); CHR$(206); CHR$(206) CHR$(185)     '' 4
4080 RETURN
4090 PRINT CHR$(219); CHR$(16); CHR$(17) CHR$(219)     '' 5
4100 RETURN
4110 PRINT CHR$(17); CHR$(16); CHR$(17) CHR$(16)         '' 6
4120 RETURN
4130 PRINT CHR$(211); CHR$(210); CHR$(210) CHR$(189)     '' 7
4140 RETURN
4150 PRINT CHR$(204); CHR$(188); CHR$(200) CHR$(185)     '' 8
4160 RETURN
4170 PRINT CHR$(26); CHR$(24); CHR$(25) CHR$(27)         '' 9
4180 RETURN
4190 PRINT CHR$(1); CHR$(2); CHR$(2) CHR$(1)             '' 10
4200 RETURN
4210 PRINT CHR$(220); CHR$(223); CHR$(223) CHR$(220)     '' 1/2
4220 RETURN
4230 PRINT CHR$(220); CHR$(223); CHR$(220) CHR$(223)     '' 2/2
4240 RETURN
4250 PRINT CHR$(214); CHR$(215); CHR$(215) CHR$(183)     '' 3/2
4260 RETURN
4270 PRINT CHR$(17); CHR$(205); CHR$(205) CHR$(16)       '' 4/2
4280 RETURN
4290 PRINT CHR$(14); CHR$(14); CHR$(14) CHR$(14)     '' 5/2
4300 RETURN
4310 PRINT CHR$(19); CHR$(19); CHR$(19) CHR$(19)     '' 6/2
4320 RETURN
4330 PRINT CHR$(178); CHR$(176); CHR$(176) CHR$(178)     '' 7/2
4340 RETURN
4350 PRINT CHR$(201); CHR$(203); CHR$(203) CHR$(187)
4360 RETURN
4370 PRINT CHR$(200); CHR$(239); CHR$(239) CHR$(188)
4380 RETURN
4390 PRINT CHR$(21); CHR$(15); CHR$(15) CHR$(21)
4400 RETURN

SPELLER.BAS

10 CLS
20 A$=STRING$(80,205)
30 PRINT A$
40 PRINT TAB(28)"5006-A.BAS     SPELLER-1"
50 COLOR 23,0,0
60 PRINT :PRINT :PRINT TAB(38)"IPCO"
70 COLOR 7,0,0
80 PRINT :PRINT :PRINT TAB(29)"INTERNATIONAL PC OWNERS"
90 PRINT :PRINT :PRINT TAB(17)"p.o. box 10426, pittsburgh, pennsylvania 15234"
100 PRINT A$
110 PRINT :PRINT :PRINT :PRINT :PRINT
120 PRINT TAB(28)"PRESS ANY KEY TO CONTINUE"
130 A$=INKEY$:IF A$="" THEN 130
140 CLS
1000 REM *** SPELLING PROGRAM ****
1010 REM *** PROGRAM WRITTEN BY RAYMOND H. SCHILLING ***
1020 REM                        6065 REDFORD ROAD N.W.
1030 REM                        NORTH CANTON, OHIO 44720
1040 REM                        (216) 494-3289
1050 REM *** DATE WRITTEN 03/01/82 ***
1060 REM ************************************************************************
1070 REM ---- THIS PROGRAM ALLOWS YOU TO ENTER A LIST OF SPELLING WORDS
1080 REM      AND THEN DISPLAYS EACH WORD FOR 2 SECONDS
1090 REM      AND THEN THE STUDENT MUST TYPE THE WORD CORRECTLY ----
1100 REM ---- THE PROGRAM KEEPS TRACK OF THE NUMBER OF WORDS ANSWERED CORRECTLY
1110 REM      AND REPEATS THE WORDS MISSED FOR THE STUDENT TO REDO ----
1120 REM ************************************************************************
1130 CLS
1140 KEY OFF
1150 DIM WORDS$(100)
1160 LET I=1
1170 PRINT "ENTER YOUR LIST OF SPELLING WORDS -- ONE WORD AFTER EACH QUESTION MARK"
1180 PRINT "ENTER THE WORD 'done' WHEN YOU HAVE FINISHED ENTERING ALL YOUR SPELLING WORDS"
1190 PRINT
1200 INPUT WORDS$(I)
1210 IF WORDS$(I)="DONE" THEN 1250
1220 IF WORDS$(I)="done" THEN 1250
1230 I=I+1
1240 GOTO 1200
1250 CLS
1260 PRINT
1270 PRINT "HIT ANY KEY WHEN YOU ARE READY TO BEGIN."
1280 A$=INKEY$
1290 IF A$="" THEN 1280
1300 I=I-1
1310 J=0:K=0
1320 CLS
1330 J=J+1
1340 TIME$="00:00:00"
1350 WHILE TIME$<"00:00:02"
1360 COLOR 15,0
1370 LOCATE 10,(39-LEN(WORDS$(J))/2)
1380 PRINT WORDS$(J)
1390 WEND
1400 CLS
1410 LOCATE 11,31
1420 FOR M=1 TO 18:PRINT CHR$(223);:NEXT M
1430 LOCATE 11,30:PRINT CHR$(221):LOCATE 11,50:PRINT CHR$(221)
1440 LOCATE 12,30:PRINT CHR$(221):LOCATE 12,50:PRINT CHR$(221)
1450 LOCATE 14,30:PRINT CHR$(221):LOCATE 14,50:PRINT CHR$(221)
1460 LOCATE 15,30:PRINT CHR$(221):LOCATE 15,50:PRINT CHR$(221)
1470 LOCATE 15,31
1480 FOR M=1 TO 18:PRINT CHR$(220);:NEXT M
1490 COLOR 15,0
1500 LOCATE 13,31
1510 INPUT R$
1520 COLOR 7,0
1530 IF R$=WORDS$(J) THEN C=C+1:GOTO 1560
1540 K=K+1
1550 LET WRONG$(K)=WORDS$(J)
1560 IF J<>I THEN 1320
1570 CLS
1580 BEEP:BEEP:BEEP
1590 PRINT "YOU SPELLED ";C;" WORDS CORRECTLY OUT OF A LIST OF ";I;" WORDS."
1600 PRINT
1610 IF C=I THEN 1790
1620 PRINT "HERE ARE THE WORDS YOU MISSED."
1630 PRINT "TYPE THE WORD CORRECTLY AFTER THE QUESTION MARK!"
1640 PRINT
1650 LET J=0
1660 LET J=J+1
1670 PRINT WRONG$(J)
1680 PRINT
1690 INPUT R$
1700 IF R$=WRONG$(J) THEN 1720
1710 PRINT "WRONG! TRY AGAIN.":GOTO 1680
1720 BEEP
1730 PRINT "GOOD! THAT'S CORRECT."
1740 PRINT
1750 IF K=J THEN 1810
1760 PRINT "HERE'S THE NEXT WORD."
1770 PRINT
1780 GOTO 1660
1790 PRINT
1800 BEEP:PRINT "CONGRATULATIONS! YOU SPELLED THEM ALL CORRECTLY"
1810 PRINT
1820 BEEP
1830 PRINT "THAT'S ALL FOR NOW!"
1840 KEY ON

STARTREK.BAS

500 CLS
510 PLAY "mb"
520 REM
530 REM
540 REM ****       **** STAR TREK ****       ****
550 REM ****  Simulation of a mission of the starship ENTERPRISE
560 REM ****  as seen on the Star Trek tv show.
570 REM ****  Original program in Creative Computing
580 REM ****  Basic Computer Games by Dave Ahl.
590 REM ****  Modifications by Bob Fritz and Sharon Fritz
600 REM **** for the IBM Personal Computer, October-November 1981
610 REM **** Bob Fritz, 9915 Caninito Cuadro, San Diego, Ca., 92129
620 REM ****  (714) 484-2955
630 REM ****
640 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
650 E1$= "                                    ,------":E7$="------,"
660 E2$= "                    ,-------------   '---  ------'"
670 E3$= "                     ,-------- --'      / /"
680 E4$= "                        ,---' '-------/ /--,"
690 E5$= "                          '----------------'":PRINT
700 E6$= "                   THE USS ENTERPRISE --- NCC-1701"
710 E8$=CHR$(15)
720 PRINT E1$;:COLOR 23,0:PRINT E8$;:COLOR 7,0 :PRINT E7$
730 PRINT E2$
740 PRINT E3$
750 PRINT E4$
760 PRINT E5$
770 PRINT
780 PRINT E6$
790 PRINT:PRINT: PRINT:PRINT:PRINT:PRINT:PRINT
800 CLEAR 600
810 RANDOMIZE 120*(VAL(RIGHT$(TIME$,2)) + VAL(MID$(TIME$,4,2)) )
820 Z$="                         "
830 GOSUB 840 :GOTO 960
840 REM  ------- set function keys  for game -------
850 KEY 1,"NAV"+CHR$(13)
860 KEY 2,"SRS"+CHR$(13)
870 KEY 3,"LRS"+CHR$(13)
880 KEY 4,"PHASERS"+CHR$(13)
890 KEY 5,"TORPEDO"+CHR$(13)
900 KEY 6,"SHIELDS"+CHR$(13)
910 KEY 7,"DAMAGE REPORT"+CHR$(13)
920 KEY 8,"COMPUTER"+CHR$(13)
930 KEY 9,"RESIGN"+CHR$(13)
940 KEY 10,""
950 RETURN
960 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8)
970 T=INT(RND(1)*20+20)*100:T0=T:T9=25+INT(RND(1)*10):D0=0:E=3000:E0=E
980 P=10:P0=P:S9=200:S=0:B9=0:K9=0:X$="":X0$=" is "
990 DEF FND(D)=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2)
1000 DEF FNR(R)=INT(RND(R)*7.98+1.01)
1010 REM initialize enterprise's position
1020 Q1=FNR(1):Q2=FNR(1):S1=FNR(1):S2=FNR(1)
1030 FOR I=1 TO 9:C(I,1)=0:C(I,2)=0:NEXT I
1040 C(3,1)=-1:C(2,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1
1050 C(1,2)=1:C(2,2)=1:C(6,1)=1:C(7,1)=1:C(8,1)=1:C(8,2)=1:C(9,2)=1
1060 FOR I=1 TO 8:D(I)=0:NEXT I
1070 A1$="NAVSRSLRSPHATORSHIDAMCOMRES"
1080 REM set up what exists in galaxy
1090 REM k3=#klingons  b3=#starbases  s3=#stars
1100 FOR I=1 TO 8:FOR J=1 TO 8:K3=0:Z(I,J)=0:R1=RND(1)
1110 IF R1>.9799999 THEN K3=3:K9=K9+3: GOTO 1140
1120 IF R1>.95 THEN K3=2:K9=K9+2: GOTO 1140
1130 IF R1>.8 THEN K3=1:K9=K9+1
1140 B3=0:IF RND(1)>.96 THEN B3=1:B9=B9+1
1150 G(I,J)=K3*100+B3*10+FNR(1):NEXT J:NEXT I:IF K9>T9 THEN T9=K9+1
1160 IF B9<>0 THEN 1190
1170 IF G(Q1,Q2)<200 THEN G(Q1,Q2)=G(Q1,Q2)+100:K9=K9+1
1180 B9=1:G(Q1,Q2)=G(Q1,Q2)+10:Q1=FNR(1):Q2=FNR(1)
1190 K7=K9:IF B9<>1 THEN X$="s":X0$=" are "
1200 PRINT"      Your orders are as follows: "
1210 PRINT"      Destroy the";K9;"Klingon warships which have invaded"
1220 PRINT"    the galaxy before they can attack Federation headquarters"
1230 PRINT"    on stardate";T0+T9;"  this gives you";T9;"days.  there";X0$
1240 PRINT"  ";B9;"starbase";X$;" in the galaxy for resupplying your ship"
1250 PRINT:PRINT ' "hit any key except return when ready to accept command"
1260 I=RND(1):IF INP(1)=13 THEN 1260
1270 REM here any time new quadrant entered
1280 Z4=Q1:Z5=Q2:K3=0:B3=0:S3=0:G5=0:D4=.5*RND(1):Z(Q1,Q2)=G(Q1,Q2)
1290 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 1410
1300 GOSUB 5040:PRINT:IF T0 <>T THEN 1330
1310 PRINT"Your mission begins with your starship located"
1320 PRINT"in the galactic quadrant, '";G2$;"'.":GOTO 1340
1330 PRINT"Now entering ";G2$;" quadrant. . ."
1340 PRINT:K3=INT(G(Q1,Q2)*.01):B3=INT(G(Q1,Q2)*.1)-10*K3
1350 S3=G(Q1,Q2)-100*K3-10*B3:IF K3=0 THEN 1400
1360 PRINT "COMBAT AREA!! Condition";
1370 COLOR 16,7 :PRINT " RED "; : COLOR 7,0:PRINT
1380 COLOR 7,0 :GOSUB 5290:IF S>200 THEN 1400
1390 COLOR 31,0:PRINT"    SHIELDS DANGEROUSLY LOW";:COLOR 7,0: PRINT SPC(53)
1400 FOR I=1 TO 3:K(I,1)=0:K(I,2)=0:NEXT I
1410 FOR I=1 TO 3:K(I,3)=0: NEXT I:Q$=Z$+Z$+Z$+Z$+Z$+Z$+Z$+LEFT$(Z$,17)
1420 REM position enterprise in quadrant, then place "k3" klingons,&
1430 REM "b3" starbases &"s3" stars elsewhere.
1440 A$=CHR$(204)+CHR$(144)+CHR$(185):Z1=S1:Z2=S2:GOSUB 4830:IF K3<1 THEN 1470
1450 FOR I=1 TO K3:GOSUB 4800:A$="+"+CHR$(2)+"+":Z1=R1:Z2=R2
1460 GOSUB 4830:K(I,1)=R1:K(I,2)=R2:K(I,3)=S9*(.5+RND(1)):NEXT I
1470 IF B3<1 THEN 1500
1480 GOSUB 4800:A$=CHR$(174)+CHR$(127)+CHR$(175):Z1=R1:B4=R1:Z2=R2:B5=R2
1490 GOSUB 4830
1500 FOR I=1 TO S3:GOSUB 4800:A$=" "+CHR$(15)+" ":Z1=R1:Z2=R2:GOSUB 4830:NEXT I
1510 GOSUB 3720
1520 IF S+E>10 THEN IF E>10 OR D(7)=0 THEN 1580
1530 COLOR 16,7 : PRINT"*** FATAL ERROR ***";:COLOR 7,0:GOSUB 5290
1540 PRINT"You've just stranded your ship in "
1550 PRINT"space":PRINT"You have insufficient maneuvering energy,";
1560 PRINT" and shield control":PRINT"is presently incapable of cross";
1570 PRINT"-circuiting to engine room!!":GOTO 3480
1580 INPUT"command";A$
1590 FOR I=1 TO 9: IF LEFT$(A$,3)<> MID$(A1$,3*I-2,3) THEN 1610
1600 ON I GOTO 1720,1510,2440,2530,2750,3090,3180,3980,3510
1610 NEXT I:PRINT"Enter one of the following:"
1620 PRINT"  NAV   (to set course)"
1630 PRINT"  SRS   (for short range sensor scan)"
1640 PRINT"  LRS   (for long range sensor scan)"
1650 PRINT"  PHA   (to fire phasers)"
1660 PRINT"  TOR   (to fire photon torpedoes)"
1670 PRINT"  SHI   (to raise or lower shields)"
1680 PRINT"  DAM   (for damage control reports)"
1690 PRINT"  COM   (to call on library-computer)"
1700 PRINT"  RES   (to resign your command)":PRINT:GOTO 1520
1710 REM course control begins here
1720 INPUT"Course (1-9)";C1:IF C1=9 THEN C1=1
1730 IF C1>=1 AND C1<9 THEN 1750
1740 PRINT"   Lt. Sulu reports,  'Incorrect course data, sir!'":GOTO 1520
1750 X$="8":IF D(1)<0 THEN X$="0.2"
1760 PRINT"Warp factor(0-";X$;")";:INPUT W1:IF D(1)<0 AND W1>.2 THEN 1810
1770 IF W1>0 AND W1<8 THEN 1820
1780 IF W1=0 THEN 1520
1790 PRINT"   Chief Engineer Scott reports 'The engines won't take";
1800 PRINT" warp ";W1;"!":GOTO 1520
1810 PRINT"Warp engines are damaged.  Maximum speed = warp 0.2":GOTO 1520
1820 N=INT(W1*8+.5):IF E-N>=0 THEN 1900
1830 PRINT"Engineering reports   'Insufficient energy available"
1840 PRINT"                       for maneuvering at warp";W1;"!'"
1850 IF S<N-E OR D(7)<0 THEN 1520
1860 PRINT"Deflector control room acknowledges";S;"units of energy"
1870 PRINT"                         presently deployed to shields."
1880 GOTO 1520
1890 REM klingons move/fire on moving starship . . .
1900 FOR I=1 TO K3:IF K(I,3)=0 THEN 1930
1910 A$="   ":Z1=K(I,1):Z2=K(I,2):GOSUB 4830:GOSUB 4800
1920 K(I,1)=Z1:K(I,2)=Z2:A$="+"+CHR$(2)+"+":GOSUB 4830
1930 NEXT I:GOSUB 4810:D1=0:D6=W1:IF W1>=1 THEN D6=1
1940 FOR I=1 TO 8:IF D(I)>=0 THEN 1990
1950 D(I)=D(I)+D6:IF D(I)>-.1  AND D(I)<0 THEN D(I)=-.1:GOTO  1990
1960 IF D(I)<0 THEN 1990
1970 IF D1<>1 THEN D1=1:PRINT"DAMAGE CONTROL REPORT:   ";
1980 PRINT TAB(8);:R1=I:GOSUB 4890:PRINT G2$;" Repair completed."
1990 NEXT I:IF RND(1)>.2 THEN 2070
2000 R1=FNR(1):IF RND(1)>=.6 THEN 2040
2010 IF K3=0 THEN 2070
2020 D(R1)=D(R1)-(RND(1)*5+1):PRINT"DAMAGE CONTROL REPORT:   ";
2030 GOSUB 4890:PRINT G2$;" damaged":PRINT:GOTO 2070
2040 D(R1)=D(R1)+RND(1)*3+1:PRINT"DAMAGE CONTROL REPORT:   ";
2050 GOSUB 4890:PRINT G2$;" State of repair improved":PRINT
2060 REM begin moving starship
2070 A$="   " :Z1=INT(S1):Z2=INT(S2):GOSUB 4830
2080 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):X=S1:Y=S2
2090 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):Q4=Q1:Q5=Q2
2100 FOR I=1 TO N:S1=S1+X1:S2=S2+X2:IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2220
2110 S8=INT(S1)*24+INT(S2)*3-26:IF MID$(Q$,S8,2)="  " THEN 2140
2120 S1=INT(S1-X1):S2=INT(S2-X2):PRINT"Warp engines shut down at ";
2130 PRINT "sector";S1;",";S2;"due to bad navigation.":GOTO 2150
2140 NEXT I:S1=INT(S1):S2=INT(S2)
2150 A$=CHR$(204)+CHR$(144)+CHR$(185)
2160 Z1=INT(S1):Z2=INT(S2):GOSUB 4830:GOSUB 2390:T8=1
2170 IF W1<1 THEN T8=.1*INT(10*W1)
2180 T=T+T8:IF T>T0+T9 THEN 3480
2190 REM see if docked then get command
2200 GOTO 1510
2210 REM exceeded quadrant limits
2220 X=8*Q1+X+N*X1:Y=8*Q2+Y+N*X2:Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8)
2230 S2=INT(Y-Q2*8):IF S1=0 THEN Q1=Q1-1:S1=8
2240 IF S2=0 THEN Q2=Q2-1:S2=8
2250 X5=0:IF Q1<1 THEN X5=1:Q1=1:S1=1
2260 IF Q1>8 THEN X5=1:Q1=8:S1=8
2270 IF Q2<1 THEN X5=1:Q2=1:S2=1
2280 IF Q2>8 THEN X5=1:Q2=8:S2=8
2290 IF X5=0 THEN 2360
2300 PRINT"Lt. Uhura reports message from Starfleet Command:"
2310 PRINT"  'Permission to attempt crossing of galactic perimeter"
2320 PRINT"  is hereby *DENIED*.  Shut down your engines.'"
2330 PRINT"Chief Engineer Scott reports 'Warp engines shut down"
2340 PRINT"  at sector";S1;",";S2;"of quadrant";Q1;",";Q2".'"
2350 IF T>T0 THEN 3480
2360 IF 8*Q1+Q2=8*Q4+Q5 THEN 2150
2370 T=T+1:GOSUB 2390:GOTO 1280
2380 REM maneuver energy s/r **
2390 E=E-N-10:IF E>0 THEN RETURN
2400 PRINT"Shield control supplies energy to complete the maneuver."
2410 S=S+E:E=0:IF S<=0 THEN S=0
2420 RETURN
2430 REM long range sensor scan code
2440 IF D(3)<0 THEN PRINT"Long Range Sensors are inoperable":GOTO 1520
2450 PRINT"Long Range Scan for quadrant";Q1;",";Q2
2460 O1$="-------------------":PRINT O1$
2470 FOR I=Q1-1 TO Q1+1:N(1)=-1:N(2)=-2:N(3)=-3:FOR J=Q2-1 TO Q2+1
2480 IF I>0 AND I<9 AND J>0 AND J<9 THEN N(J-Q2+2)=G(I,J):Z(I,J)=G(I,J)
2490 NEXT J:FOR L=1 TO 3:PRINT": ";:IF N(L)<0 THEN PRINT"*** ";:GOTO 2510
2500 PRINT RIGHT$(STR$(N(L)+1000),3);" ";
2510 NEXT L:PRINT":":PRINT O1$:NEXT I:GOTO 1520
2520 REM phaser control code begins here
2530 IF D(4)<0 THEN PRINT"Phasers Inoperative":GOTO 1520
2540 IF K3>0 THEN 2570
2550 PRINT"Science Officer Spock reports  'Sensors show no enemy ships"
2560 PRINT"                                in this quadrant'":GOTO 1520
2570 IF D(8)<0 THEN PRINT"Computer failure hampers accuracy"
2580 PRINT"Phasers locked on target;  :;
2590 PRINT"Energy available = ";E;"units"
2600 INPUT"Numbers of units to fire";X:IF X<=0 THEN 1520
2610 IF E-X<0 THEN 2590
2620 E=E-X:GOSUB 5420:IF D(7)<0 THEN X=X*RND(1)
2630 H1=INT(X/K3):FOR I=1 TO 3:IF K(I,3)<=0 THEN 2730
2640 H=INT((H1/FND(0))*(RND(1)+2)):IF H>.15*K(I,3) THEN 2660
2650 PRINT"Sensors show no damage to enemy at ";K(I,1);",";K(I,2):GOTO 2730
2660 K(I,3)=K(I,3)-H:PRINT H;"Unit hit on Klingon at sector";K(I,1);",";
2670 PRINT K(I,2):IF K(I,3)> 0 THEN GOTO 2700
2680 COLOR 16,7:PRINT "**** KLINGON DESTROYED ****";:COLOR 7,0 :PRINT SPC(53)
2690 GOTO 2710
2700 PRINT"   (Sensors show";K(I,3);"units remaining)":GOTO 2730
2710 K3=K3-1:K9=K9-1:Z1=K(I,1):Z2=K(I,2):A$="   ":GOSUB 4830
2720 K(I,3)=0:G(Q1,Q2)=G(Q1,Q2)-100:Z(Q1,Q2)=G(Q1,Q2):IF K9<=0 THEN 3680
2730 NEXT I:GOSUB 3350:GOTO 1520
2740 REM photon torpedo code begins here
2750 IF P<=0 THEN PRINT"All photon torpedoes expended":GOTO 1520
2760 IF D(5)<0 THEN PRINT"Photon tubes are not operational":GOTO 1520
2770 INPUT"Photon torpedo course (1-9)";C1:IF C1=9 THEN C1=1
2780 IF C1>=1 AND C1<9 THEN 2810
2790 PRINT"Ensign Chekov reports,  'Incorrect course data, sir!'"
2800 GOTO 1520
2810 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):E=E-2:P=P-1
2820 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):X=S1:Y=S2 :GOSUB 5360
2830 PRINT"Torpedo track:"
2840 X=X+X1:Y=Y+X2:X3=INT(X+.5):Y3=INT(Y+.5)
2850 IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 3070
2860 PRINT"              ";X3;",";Y3:A$="   ":Z1=X:Z2=Y:GOSUB 4990
2870 IF Z3<>0 THEN 2840
2880 A$="+"+CHR$(2)+"+":Z1=X:Z2=Y:GOSUB 4990:IF Z3=0 THEN 2940
2890 COLOR 16,7 :PRINT"**** KLINGON DESTROYED ****";:COLOR 7,0:PRINT SPC(53)
2900 K3=K3-1:K9=K9-1:IF K9<=0 THEN 3680
2910 FOR I=1 TO 3:IF X3=K(I,1) AND Y3=K(I,2) THEN 2930
2920 NEXT I:I=3
2930 K(I,3)=0:GOTO 3050
2940 A$=" "+CHR$(15)+" ":Z1=X:Z2=Y:GOSUB 4990:IF Z3=0 THEN 2960
2950 PRINT"Star at";X3;",";Y3;"absorbed torpedo energy.":GOSUB 3350:GOTO 1520
2960 A$=CHR$(174)+CHR$(127)+CHR$(175):Z1=X:Z2=Y:GOSUB 4990:IF Z3=0 THEN 2770
2970 COLOR 16,7:PRINT"*** STARBASE DESTROYED ***";:COLOR 7,0:PRINT SPC(54)
2980 B3=B3-1 : B9=B9-1
2990 IF B9>0 OR K9>T-T0-T9 THEN 3030
3000 PRINT"THAT DOES IT, CAPTAIN!!  You are hereby relieved of command"SPC(21)
3010 PRINT"and sentenced to 99 stardates of hard labor on CYGNUS 12!!"
3020 GOTO 3510
3030 PRINT"Starfleet reviewing your record to consider"
3040 PRINT"court martial!":D0=0
3050 Z1=X:Z2=Y:A$="   ":GOSUB 4830
3060 G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2):GOSUB 3350:GOTO 1520
3070 PRINT"Torpedo missed":GOSUB 3350:GOTO 1520
3080 REM shield control
3090 IF D(7)<0 THEN PRINT"Shield control inoperable":GOTO 1520
3100 PRINT"Energy available = ";E+S :INPUT "Number of units to shields? ";X
3110 IF X<0 OR S=X THEN PRINT"<shields unchanged>":GOTO 1520
3120 IF X<E+S THEN 3150
3130 PRINT"Shield Control reports  'This is not the federation treasury.'"
3140 PRINT"<shields unchanged>:goto 1990
3150 E=E+S-X:S=X:PRINT"Deflector Control Room report:"
3160 PRINT"  'Shields now at";INT(S);"units per your command.'":GOTO 1520
3170 REM damage control
3180 IF D(6)>=0 THEN 3290
3190 PRINT"Damage control report not available":IF D0=0 THEN 1520
3200 D3=0:FOR I=1 TO 8:IF D(I)<0 THEN D3=D3+1
3210 NEXT I:IF D3=0 THEN 1520
3220 PRINT:D3=D3+D4:IF D3>=1 THEN D3=.9
3230 PRINT"Technicians standing by to effect repairs to your ship;"
3240 PRINT"estimated time to repair:";.01*INT(100*D3);"stardates"
3250 INPUT"Will you authorize the repair order (Y/N)?";A$
3260 IF A$<>"y" AND A$<> "Y" THEN 1520
3270 FOR I=1 TO 8:IF D(I)<0 THEN D(I)=0
3280 NEXT I:T=T+D3+.1
3290 PRINT:PRINT"Device            state of repair":FOR R1=1 TO 8
3300 GOSUB 4890:PRINT G2$;:GG2$=LEFT$(Z$,25-LEN(G2$)):PRINT GG2$;
3310 GG2=INT(D(R1)*100)*.01:PRINT GG2
3320 NEXT R1:PRINT:IF D0<>0 THEN 3200
3330 GOTO 1520
3340 REM klingons shooting
3350 IF K3<=0 THEN RETURN
3360 IF D0<>0 THEN PRINT"Starbase shields protect the ENTERPRISE":RETURN
3370 FOR I=1 TO 3:IF K(I,3)<=0 THEN 3460
3380 H=INT((K(I,3)/FND(1))*(2+RND(1))):S=S-H:K(I,3)=K(I,3)/(3+RND(0))
3390 COLOR 16,7 :PRINT "ENTERPRISE HIT!";:COLOR 7,0:PRINT SPC(65)
3400 GOSUB 5480:PRINT H;"Unit hit on ENTERPRISE from sector";K(I,1);",";K(I,2)
3410 IF S<=0 THEN 3490
3420 PRINT"      <shields down to";S;"units>":IF H<20 THEN 3460
3430 IF RND(1)>.6 OR H/S<=.02 THEN 3460
3440 R1=FNR(1):D(R1)=D(R1)-H/S-.5*RND(1):GOSUB 4890
3450 PRINT"Damage control reports  '";G2$;" damaged by the hit'"
3460 NEXT I:RETURN
3470 REM end of game
3480 PRINT"It is stardate";T:GOTO 3510
3490 PRINT:PRINT"the ENTERPRISE has been destroyed.  The Federation ";
3500 PRINT"will be conquered":GOTO 3480
3510 PRINT"There were";K9;"Klingon battle cruisers left at"
3520 PRINT"the end of your mission"
3530 PRINT:PRINT:IF B9=0 THEN 3670
3540 PRINT"The Federation is in need of a new starship commander"
3550 PRINT"for a similar mission -- if there is a volunteer,"
3560 INPUT"let him or her step forward and enter 'aye'";A$:IF A$="aye" THEN 520
3570 KEY 1,"LIST "
3580 KEY 2,"RUN"+CHR$(13)
3590 KEY 3,"LOAD"+CHR$(34)
3600 KEY 4, "SAVE"+CHR$(34)
3610 KEY 5, "CONT"+CHR$(13)
3620 KEY 6,","+CHR$(34)+"LPT1:"+CHR$(34)+CHR$(13)
3630 KEY 7, "TRON"+CHR$(13)
3640 KEY 8, "TROFF"+CHR$(13)
3650 KEY 9, "KEY "
3660 KEY 10,"SCREEN 0,0,0"+CHR$(13)
3670 END
3680 PRINT"Congratulations, Captain! the last Klingon battle cruiser"
3690 PRINT"menacing the Federation has been destroyed.":PRINT
3700 PRINT"Your efficiency rating is";1000*(K7/(T-T0))^2:GOTO 3530
3710 REM short range sensor scan & startup subroutine
3720 FOR I=S1-1 TO S1+1:FOR J=S2-1 TO S2+1
3730 IF INT(I+.5)<1 OR INT(I+.5)>8 OR INT(J+.5)<1 OR INT(J+.5)>8 THEN 3760
3740 A$=CHR$(174)+CHR$(127)+CHR$(175)
3750 Z1=I:Z2=J:GOSUB 4990:IF Z3=1 THEN 3770
3760 NEXT J:NEXT I:D0=0:GOTO 3790
3770 D0=1:CC$="docked":E=E0:P=P0
3780 PRINT"Shields dropped for docking purposes":S=0:GOTO 3810
3790 IF K3>0 THEN C$="*red*":GOTO 3810
3800 C$="GREEN":IF E<E0*.1 THEN C$="YELLOW"
3810 IF D(2)>=0 THEN 3830
3820 PRINT:PRINT"*** Short Range Sensors are out ***":PRINT:RETURN
3830 O1$="---------------------------------":PRINT O1$:FOR I=1 TO 8
3840 FOR J=(I-1)*24+1 TO (I-1)*24+22 STEP 3
3850 QQ$=MID$(Q$,J,3):IF QQ$="   " THEN QQ$=" "+CHR$(250)+" "
3860 PRINT" "; QQ$; : NEXT J
3870 ON I GOTO 3880,3900,3910,3920,3930,3940,3950,3960
3880 PRINT"        Stardate          ";
3890 TT= T*10 : TT=INT(TT)*.1:PRINT TT :GOTO 3970
3900 PRINT"        Condition          ";C$:GOTO 3970
3910 PRINT"        Quadrant          ";Q1;",";Q2:GOTO 3970
3920 PRINT"        Sector            ";S1;",";S2:GOTO 3970
3930 PRINT"        Photon torpedoes  ";INT(P):GOTO 3970
3940 PRINT"        Total energy      ";INT(E+S):GOTO 3970
3950 PRINT"        Shields           ";INT(S):GOTO 3970
3960 PRINT"        Klingons remaining";INT(K9)
3970 NEXT I:PRINT O1$:RETURN
3980 REM library computer code
3990 CM1$="GALSTATORBASDIRREG"
4000 IF D(8)<0 THEN PRINT"Computer Disabled":GOTO 1520
4010 KEY 1, "GAL RCD"+CHR$(13)
4020 KEY 2, "STATUS"+CHR$(13)
4030 KEY 3, "TOR DATA"+CHR$(13)
4040 KEY 4, "BASE NAV"+CHR$(13)
4050 KEY 5, "DIR/DIST"+CHR$(13)
4060 KEY 6, "REG MAP"+CHR$(13)
4070 KEY 7,CHR$(13):KEY 8,CHR$(13):KEY 9,CHR$(13):KEY 10,CHR$(13)
4080 INPUT"Computer active and awaiting command";CM$:H8=1
4090 FOR K= 1 TO 6
4100   IF LEFT$(CM$,3)<>MID$(CM1$,3*K-2,3) THEN 4120
4110   ON K GOTO 4230,4400,4490,4750,4550,4210
4120 NEXT K
4130 PRINT"Functions available from library-computer:"
4140 PRINT"   KEY 1= Cumulative galactic record"
4150 PRINT"   KEY 2 = Status report"
4160 PRINT"   KEY 3 = Photon torpedo data"
4170 PRINT"   KEY 4 = Starbase nav data"
4180 PRINT"   KEY 5 = Direction/distance calculator"
4190 PRINT"   KEY 6 = Galaxy 'region name' map":PRINT:GOTO 4080
4200 REM setup to change cum gal record to galaxy map
4210 GOSUB 840:H8=0:G5=1:PRINT"                        the galaxy":GOTO 4290
4220 REM cum galactic record
4230 'INPUT"Do you want a hardcopy? Is the TTY on (Y/N)";A$
4240 'IF A$="y" THEN POKE 1229,2:POKE 1237,3:NULL 1
4250 GOSUB 840
4260 PRINT:PRINT"            ";
4270 PRINT "Computer record of galaxy for quadrant";Q1;",";Q2
4280 PRINT
4290 PRINT"       1     2     3     4     5      6    7      8"
4300 O1$="     ----- ----- ----- ----- ----- ------ ----- -----"
4310 PRINT O1$:FOR I=1 TO 8:PRINT I;:IF H8=0 THEN 4350
4320 FOR J=1 TO 8:PRINT"   ";:IF Z(I,J)=0 THEN PRINT"***";:GOTO 4340
4330 PRINT RIGHT$(STR$(Z(I,J)+1000),3);
4340 NEXT J:GOTO 4370
4350 Z4=I:Z5=1:GOSUB 5040:J0=INT(15-.5*LEN(G2$)):PRINT TAB(J0);G2$;
4360 Z5=5:GOSUB 5040:J0=INT(39-.5*LEN(G2$)):PRINT TAB(J0);G2$;
4370 PRINT:PRINT O1$:NEXT I:PRINT:'POKE 1229,0:POKE 1237,1:
4380 GOTO 1520
4390 REM status report
4400 GOSUB 840:PRINT"   Status Report:"X$="":IF K9>1 THEN X$="s"
4410 PRINT"Klingon";X$;" left: ";K9
4420 PRINT"Mission must be completed in";.1*INT((T0+T9-T)*10);"stardates"
4430 X$="s":IF B9<2 THEN X$="":IF B9<1 THEN 4460
4440 PRINT"The federation is maintaining";B9;"starbase";X$;"in the galaxy"
4450 GOTO 3180
4460 PRINT"Your stupidity has left you on your own in"
4470 PRINT"    the galaxy -- you have no starbases left!":GOTO 3180
4480 REM torpedo, base nav, d/d calculator
4490 GOSUB 840:IF K3<=0 THEN 2550
4500 X$="":IF K3>1 THEN X$="s"
4510 PRINT"From ENTERPRISE to Klingon battle cruiser";X$
4520 H8=0:FOR I=1 TO 3:IF K(I,3)<=0 THEN 4740
4530 W1=K(I,1):X=K(I,2)
4540 C1=S1:A=S2:GOTO 4590
4550 GOSUB 840:PRINT"Direction/Distance Calculator:"
4560 PRINT"You are at quadrant ";Q1;",";Q2;" sector ";S1;",";S2
4570 PRINT"Please enter":INPUT" initial coordinates (x,y)";C1,A
4580 INPUT" Final coordinates (x,y)";W1,X
4590 X=X-A: A=C1-W1:IF X<0 THEN 4670
4600 IF A<0 THEN 4690
4610 IF X>0 THEN 4630
4620 IF A=0 THEN C1=5:GOTO 4640
4630 C1=1
4640 IF ABS(A)<=ABS(X) THEN 4660
4650 PRINT"Direction =";C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)):GOTO 4730
4660 PRINT"Direction =";C1+(ABS(A)/ABS(X)):GOTO 4730
4670 IF A>0 THEN C1=3:GOTO 4700
4680 IF X<>0 THEN C1=5:GOTO 4640
4690 C1=7
4700 IF ABS(A)>=ABS(X) THEN 4720
4710 PRINT"Direction =";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)):GOTO 4730
4720 PRINT"Direction =";:CC1=C1+(ABS(X)/ABS(A)):PRINT CC1
4730 PRINT"Distance =";SQR(X^2+A^2):IF H8=1 THEN 1520
4740 NEXT I:GOTO 1520
4750 GOSUB 840:IF B3<>0 THEN PRINT"From ENTERPRISE to Starbase:":W1=B4:X=B5
4760 GOTO 4540
4770 PRINT"Mr. Spock reports, 'Sensors show no starbases in this";
4780 PRINT"quadrant.'":GOTO 1520
4790 REM find empty place in quadrant (for things)
4800 R1=FNR(1):R2=FNR(1):A$="   ":Z1=R1:Z2=R2:GOSUB 4990:IF Z3=0 THEN 4800
4810 RETURN
4820 REM insert in string array for quadrant
4830 S8=INT(Z2-.5)*3+INT(Z1-.5)*24+1
4840 IF LEN(A$)<>3 THEN PRINT"ERROR":STOP
4850 IF S8=1 THEN Q$=A$+RIGHT$(Q$,189):RETURN
4860 IF S8=190 THEN Q$=LEFT$(Q$,189)+A$:RETURN
4870 Q$=LEFT$(Q$,S8-1)+A$+RIGHT$(Q$,190-S8):RETURN
4880 REM prints device name
4890 ON R1 GOTO 4900,4910,4920,4930,4940,4950,4960,4970
4900 G2$="Warp Engines":RETURN
4910 G2$="Short Range Sensors":RETURN
4920 G2$="Long Range Sensors":RETURN
4930 G2$="Phaser Control":RETURN
4940 G2$="Photon Tubes":RETURN
4950 G2$="Damage Control":RETURN
4960 G2$="Shield Control":RETURN
4970 G2$="Library-Computer":RETURN
4980 REM string comparison in quadrant array
4990 Z1=INT(Z1+.5):Z2=INT(Z2+.5):S8=(Z2-1)*3+(Z1-1)*24+1:Z3=0
5000 IF MID$(Q$,S8,3)<>A$ THEN RETURN
5010 Z3=1:RETURN
5020 REM quadrant name in g2$ from z4,z5 (=q1,q2)
5030 REM call with g5=1 to get region name only
5040 IF Z5<+4 THEN ON Z4 GOTO 5060,5070,5080,5090,5100,5110,5120,5130
5050 GOTO 5140
5060 G2$="Antares":GOTO 5230
5070 G2$="Rigel":GOTO 5230
5080 G2$="Procyon":GOTO 5230
5090 G2$="Vega":GOTO 5230
5100 G2$="Canopus":GOTO 5230
5110 G2$="Altair":GOTO 5230
5120 G2$="Sagittarius":GOTO 5230
5130 G2$="Pollux":GOTO 5230
5140 ON Z4 GOTO 5150,5160,5170,5180,5180,5200,5210,5220
5150 G2$="Sirius":GOTO 5230
5160 G2$="Deneb":GOTO 5230
5170 G2$="Capella":GOTO 5230
5180 G2$="Betelgeuse":GOTO 5230
5190 G2$="Aldebaran":GOTO 5230
5200 G2$="Regulus":GOTO 5230
5210 G2$="Arcturus":GOTO 5230
5220 G2$="Spica"
5230 IF G5<>1 THEN ON Z5 GOTO 5250,5260,5270,5280,5250,5260,5270,5280
5240 RETURN
5250 G2$=G2$+" i":RETURN
5260 G2$=G2$+" ii":RETURN
5270 G2$=G2$+" iii":RETURN
5280 G2$=G2$+" iv":RETURN
5290 '    red alert sound
5300 FOR J= 1 TO 4
5310   FOR K=1000 TO 2000 STEP 20
5320     SOUND K,.01*18.2
5330   NEXT K
5340 NEXT J
5350 RETURN
5360 '   torpedo sound
5370 FOR J = 1500 TO 100 STEP -20
5380   SOUND J,.01*18.2
5390   SOUND 3600-J,.01*18.2
5400 NEXT J
5410 RETURN
5420 '    phaser sound
5430 FOR J= 1 TO 40
5440   SOUND 800,.01*18.2
5450   SOUND 2500,.008*18.2
5460 NEXT J
5470 RETURN
5480 '           alarm sound
5490 FOR SI = 1 TO 3
5500  FOR J=  800 TO 1500 STEP 20
5510    SOUND J,.01 *18.2
5520  NEXT J
5530  FOR K = 1500 TO 800 STEP -20
5540    SOUND K, .01 *18.2
5550  NEXT K
5560 NEXT SI
5570 RETURN

WIZARD.BAS

10 KEY OFF:CLS
20 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
30 PRINT"░┌───────────────────────────────────┐░"
40 PRINT"░│                                   │░"
50 PRINT"░│            2039-A.BAS             │░"
60 PRINT"░│        THE WIZARD'S CASTLE        │░"
70 PRINT"░│                                   │░"
80 PRINT"░│                                   │░"
90 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF  │░"
100 PRINT"░│      ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄      │░"
110 PRINT"░│        █   █   █ █     █   █      │░"
120 PRINT"░│        █   █▄▄▄█ █     █   █      │░"
130 PRINT"░│        █   █     █     █   █      │░"
140 PRINT"░│      ▄▄█▄▄ █     █▄▄▄▄ █▄▄▄█      │░"
150 PRINT"░│                                   │░"
160 PRINT"░│      International PC Owners      │░"
170 PRINT"░│                                   │░"
180 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
190 PRINT"░│                                   │░"
200 PRINT"░└───────────────────────────────────┘░"
210 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
220 PRINT
230 PRINT "       PRESS ANY KEY TO CONTINUE
240 A$=INKEY$: IF A$="" THEN 240
250 CLS
1000 SAMP$="NO":GOTO 1020
1010 SAMP$="YES"
1020 CLS:WIDTH 80:KEY OFF
1030 REM *****************************************************
1040 REM *                                                   *
1050 REM * WIZARD'S CASTLE GAME FROM JULY/AUGUST 1980        *
1060 REM * ISSUE OF RECREATIONAL COMPUTING MAGAZINE          *
1070 REM * WRITTEN FOR EXIDY SORCERER BY JOSEPH R. POWER     *
1080 REM * MODIFIED FOR HEATH MICROSOFT BASIC BY J.F.STETSON *
1090 REM *                                                   *
1100 REM *****************************************************
1110 DEFINT A-Z
1120 DIM C$(34),I$(34),R$(4),W$(8),E$(8)
1130 DIM L(512),C(3,4),T(8),O(3),R(3)
1140 DEF FNA(Q)=1+INT(RND(1)*Q)
1150 DEF FNB(Q)=Q+8*((Q=9)-(Q=0))
1160 DEF FNC(Q)=-Q*(Q<19)-18*(Q>18)
1170 DEF FND(Q)=64*(Q-1)+8*(X-1)+Y
1180 DEF FNE(Q)=Q+100*(Q>99)
1190 Y$="** PLEASE ANSWER YES OR NO"
1200 NG=0
1210 REM
1220 REM   INITIALIZE ARRAYS
1230 REM
1240 NG=NG+1
1250 Q=RND(1)
1260 RESTORE
1270 FOR Q=1 TO 34
1280 READ C$(Q),I$(Q)
1290 NEXT Q
1300 FOR Q=1 TO 512
1310 L(Q)=101
1320 NEXT Q
1330 FOR Q=1 TO 8
1340 READ W$(Q),E$(Q)
1350 NEXT Q
1360 FOR Q=1 TO 4
1370 READ R$(Q)
1380 NEXT Q
1390 IF NG > 1 GOTO 1520
1400 GOSUB 9770
1410 PRINT TAB(16);"* * * THE WIZARD'S CASTLE * * *"
1420 PRINT
1430 GOSUB 9770
1440 PRINT "MANY CYCLES AGO, IN THE KINGDOM OF N'DIC, THE GNOMIC"
1450 PRINT "WIZARD ZOT FORGED HIS GREAT *ORB OF POWER*. HE SOON"
1460 PRINT "VANISHED, LEAVING BEHIND HIS VAST SUBTERRANEAN CASTLE"
1470 PRINT "FILLED WITH ESURIENT MONSTERS, FABULOUS TREASURES, AND"
1480 PRINT "THE INCREDIBLE *ORB OF ZOT*. FROM THAT TIME HENCE, MANY"
1490 PRINT "A BOLD YOUTH HAS VENTURED INTO THE WIZARD'S CASTLE. AS"
1500 PRINT "OF NOW, *NONE* HAS EVER EMERGED VICTORIOUSLY! BEWARE!!"
1510 PRINT
1520 X=1 : Y=4
1530 L(FND(1))=2
1540 FOR Z=1 TO 7
1550 FOR Q1=1 TO 2
1560 Q=104
1570 GOSUB 9590
1580 L(FND(Z+1))=103
1590 NEXT Q1
1600 NEXT Z
1610 FOR Z=1 TO 8
1620 FOR Q=113 TO 124
1630 GOSUB 9590
1640 NEXT Q
1650 FOR Q1=1 TO 3
1660 FOR Q=105 TO 112
1670 GOSUB 9590
1680 NEXT Q
1690 Q=125
1700 GOSUB 9590
1710 NEXT Q1
1720 NEXT Z
1730 FOR Q=126 TO 133
1740 Z=FNA(8)
1750 GOSUB 9590
1760 NEXT Q
1770 Q=101
1780 FOR A=1 TO 3
1790 Z=FNA(8)
1800 GOSUB 9590
1810 C(A,1)=X
1820 C(A,2)=Y
1830 C(A,3)=Z
1840 C(A,4)=0
1850 NEXT A
1860 RC=0
1870 ST=2
1880 DX=14
1890 R$(3)="MAN"
1900 Q=112+FNA(12)
1910 Z=FNA(8)
1920 GOSUB 9590
1930 R(1)=X
1940 R(2)=Y
1950 R(3)=Z
1960 Q=109
1970 Z=FNA(8)
1980 GOSUB 9590
1990 O(1)=X
2000 O(2)=Y
2010 O(3)=Z
2020 BF=0 : OT=8 : AV=0 : HT=0 : T=1 : VF=0 : LF=0
2030 TC=0 : GP=60 : RF=0 : OF=0 : BL=0 : IQ=8 : SX=0
2040 FOR Q=1 TO 8
2050 T(Q)=0
2060 NEXT Q
2070 PRINT CHR$(7);
2080 PRINT "ALL RIGHT, BOLD ONE."
2090 PRINT "YOU MAY BE AN ELF, DWARF, MAN, OR HOBBIT."
2100 GOSUB 9830
2110 FOR Q=1 TO 4
2120 IF LEFT$(R$(Q),1)=O$ THEN RC=Q : ST=ST+2*Q : DX=DX-2*Q
2130 NEXT Q
2140 PRINT
2150 OT=OT+4*(RC=1)
2160 IF RC > 0 THEN R$(3)="HUMAN" : GOTO 2190
2170 PRINT "** THAT WAS INCORRECT. PLEASE TYPE E, D, M, OR H."
2180 GOTO 2090
2190 PRINT "WHICH SEX TO YOU PREFER";
2200 GOSUB 9850
2210 IF O$="M" THEN SX=1 : GOTO 2250
2220 IF O$="F" GOTO 2250
2230 PRINT "** CUTE ";R$(RC);", REAL CUTE. TRY M OR F."
2240 GOTO 2190
2250 PRINT
2260 PRINT "OK, ";R$(RC);", YOU HAVE THE FOLLOWING ATTRIBUTES :"
2270 PRINT "STRENGTH =";ST;" INTELLIGENCE =";IQ;" DEXTERITY =";DX
2280 PRINT "AND";OT;"OTHER POINTS TO ALLOCATE AS YOU WISH."
2290 PRINT
2300 Z$="STRENGTH"
2310 GOSUB 9880
2320 ST=ST+Q
2330 IF OT=0 GOTO 2410
2340 Z$="INTELLIGENCE"
2350 GOSUB 9880
2360 IQ=IQ+Q
2370 IF OT=0 GOTO 2410
2380 Z$="DEXTERITY"
2390 GOSUB 9880
2400 DX=DX+Q
2410 PRINT "OK, ";R$(RC);", YOU HAVE 60 GOLD PIECES (GP'S)."
2420 Z$="ARMOR"
2430 GOSUB 10130
2440 AV=0 : WV=0 : FL=0 : WC=0
2450 PRINT "PLATE<30> CHAINMAIL<20> LEATHER<10> NOTHING<0>"
2460 GOSUB 9830
2470 IF O$="N" GOTO 2530
2480 AV=-3*(O$="P")-2*(O$="C")-(O$="L")
2490 IF AV > 0 GOTO 2530
2500 PRINT
2510 PRINT "** ARE YOU A ";R$(RC);" OR ";C$(FNA(12)+12);"?"
2520 GOTO 2420
2530 AH=AV*7 : GP=GP-AV*10
2540 PRINT
2550 PRINT "OK, BOLD ";R$(RC);", YOU HAVE";GP;"GP'S LEFT."
2560 Z$="WEAPONS"
2570 GOSUB 10130
2580 PRINT "SWORD<30> MACE<20> DAGGER<10> NOTHING<0>"
2590 GOSUB 9830
2600 IF O$="N" GOTO 2660
2610 WV=-3*(O$="S")-2*(O$="M")-(O$="D")
2620 IF WV > 0 GOTO 2660
2630 PRINT
2640 PRINT "** IS YOUR IQ REALLY";IQ;"?"
2650 GOTO 2560
2660 GP=GP-WV*10
2670 IF GP < 20 GOTO 2730
2680 PRINT
2690 PRINT "DO YOU WANT TO BUY A LAMP FOR 20 GP'S";
2700 GOSUB 9850
2710 IF O$="Y" THEN LF=1 : GP=GP-20 : GOTO 2730
2720 IF O$ <> "N" THEN PRINT : PRINT Y$ : PRINT : GOTO 2690
2730 PRINT
2740 IF GP < 1 THEN Q=0 : GOTO 2850
2750 PRINT "OK, ";R$(RC);", YOU HAVE";GP;"GOLD PIECES LEFT."
2760 PRINT
2770 INPUT "FLARES COST 1 GP EACH. HOW MANY DO YOU WANT";O$
2780 Q=VAL(O$)
2790 PRINT
2800 IF Q > 0 OR ASC(O$)=48 GOTO 2840
2810 PRINT "** IF YOU DON'T WANT ANY, JUST TYPE 0 (ZERO)."
2820 PRINT
2830 GOTO 2770
2840 IF Q > GP THEN PRINT "** YOU CAN ONLY AFFORD";GP;"." : PRINT : GOTO 2770
2850 FL=FL+Q : GP=GP-Q
2860 X=1 : Y=4 : Z=1
2870 PRINT "OK, ";R$(RC);", YOU ARE NOW ENTERING THE CASTLE!"
2880 GOTO 5920
2890 REM
2900 REM   MAIN PROCESSING LOOP
2910 REM
2920 T=T+1
2930 IF RF+OF > 0 GOTO 3060
2940 IF C(1,4) > T(1) THEN T=T+1
2950 IF C(2,4) > T(3) THEN GP=GP-FNA(5)
2960 IF GP < 0 THEN GP=0
2970 IF C(3,4) <= T(5) GOTO 3060
2980 A=X : B=Y : C=Z
2990 X=FNA(8) : Y=FNA(8) : Z=FNA(8)
3000 L(FND(Z))=FNE(L(FND(Z)))+100
3010 X=A : Y=B : Z=C
3020 IF L(FND(Z)) <> 1 GOTO 3060
3030 FOR Q=1 TO 3
3040 C(Q,4)=-(C(Q,1)=X)*(C(Q,2)=Y)*(C(Q,3)=Z)
3050 NEXT Q
3060 IF FNA(5) > 1 GOTO 3350
3070 PRINT
3080 PRINT "YOU ";
3090 Q=FNA(7)+BL
3100 IF Q > 7 THEN Q=4
3110 ON Q GOSUB 3270,3150,3250,3130,3290,3310,3330
3120 GOTO 3350
3130 PRINT "STEPPED ON A FROG!"
3140 RETURN
3150 PRINT "HEAR ";
3160 ON FNA(4) GOTO 3170,3190,3210,3230
3170 PRINT "A SCREAM!"
3180 RETURN
3190 PRINT "FOOTSTEPS!"
3200 RETURN
3210 PRINT "A WUMPUS!"
3220 RETURN
3230 PRINT "THUNDER!"
3240 RETURN
3250 PRINT "SNEEZED!"
3260 RETURN
3270 PRINT "SEE A BAT FLY BY!"
3280 RETURN
3290 PRINT "SMELL ";C$(12+FNA(13));" FRYING!"
3300 RETURN
3310 PRINT "FEEL LIKE YOU'RE BEING WATCHED!"
3320 RETURN
3330 PRINT "HEAR FAINT RUSTLING NOISES!"
3340 RETURN
3350 IF BL+T(4) <> 2 GOTO 3390
3360 PRINT
3370 PRINT C$(29);" CURES YOUR BLINDNESS!"
3380 BL=0
3390 IF BF+T(6) <> 2 GOTO 3430
3400 PRINT
3410 PRINT C$(31);" DISSOLVES THE BOOK!"
3420 BF=0
3430 PRINT
3440 LINE INPUT "ENTER YOUR COMMAND : ";O$
3450 IF LEFT$(O$,2)="DR" GOTO 4760
3460 O$=LEFT$(O$,1)
3470 IF O$="N" GOTO 3890
3480 IF (O$="S") OR (O$="W") OR (O$="E") GOTO 3900
3490 IF O$="U" GOTO 3950
3500 IF O$="D" GOTO 3980
3510 IF O$="M" GOTO 4030
3520 IF O$="F" THEN ON BL+1 GOTO 4260,4030
3530 IF O$="L" THEN ON BL+1 GOTO 4520,4030
3540 IF O$="O" GOTO 4950
3550 IF O$="G" THEN ON BL+1 GOTO 5390,4030
3560 IF O$="T" THEN PRINT : ON RF+1 GOTO 5650,5690
3570 IF O$="Q" GOTO 5800
3580 IF O$<>"H" GOTO 3860
3590 PRINT CHR$(27);"E"
3600 PRINT "*** WIZARD'S CASTLE COMMAND AND INFORMATION SUMMARY ***"
3610 PRINT
3620 PRINT "THE FOLLOWING COMMANDS ARE AVAILABLE :"
3630 PRINT
3640 PRINT "H/ELP     N/ORTH    S/OUTH    E/AST     W/EST     U/P"
3650 PRINT "D/OWN     DR/INK    M/AP      F/LARE    L/AMP     O/PEN"
3660 PRINT "G/AZE     T/ELEPORT Q/UIT"
3670 PRINT
3680 PRINT "THE CONTENTS OF ROOMS ARE AS FOLLOWS :"
3690 PRINT
3700 PRINT ". = EMPTY ROOM      B = BOOK            C = CHEST"
3710 PRINT "D = STAIRS DOWN     E = ENTRANCE/EXIT   F = FLARES"
3720 PRINT "G = GOLD PIECES     M = MONSTER         O = CRYSTAL ORB"
3730 PRINT "P = MAGIC POOL      S = SINKHOLE        T = TREASURE"
3740 PRINT "U = STAIRS UP       V = VENDOR          W = WARP/ORB"
3750 PRINT
3760 PRINT "THE BENEFITS OF HAVING TREASURES ARE :"
3770 PRINT
3780 PRINT "RUBY RED - AVOID LETHARGY     PALE PEARL - AVOID LEECH"
3790 PRINT "GREEN GEM - AVOID FORGETTING  OPAL EYE - CURES BLINDNESS"
3800 PRINT "BLUE FLAME - DISSOLVES BOOKS  NORN STONE - NO BENEFIT"
3810 PRINT "PALANTIR - NO BENEFIT         SILMARIL - NO BENEFIT"
3820 PRINT
3830 PRINT "PRESS RETURN WHEN READY TO RESUME, ";R$(RC);".";
3840 LINE INPUT "";O$
3850 GOTO 2920
3860 PRINT
3870 PRINT "** SILLY ";R$(RC);", THAT WASN'T A VALID COMMAND!"
3880 GOTO 2920
3890 IF L(FND(Z))=2 GOTO 8960
3900 X=X+(O$="N")-(O$="S")
3910 Y=Y+(O$="W")-(O$="E")
3920 X=FNB(X)
3930 Y=FNB(Y)
3940 GOTO 5920
3950 IF L(FND(Z))=3 THEN Z=Z-1 : GOTO 5920
3960 Z$="UP"
3970 GOTO 4000
3980 Z$="DOWN"
3990 IF L(FND(Z))=4 THEN Z=Z+1 : GOTO 5920
4000 PRINT
4010 PRINT "** THERE ARE NO STAIRS GOING ";Z$;" FROM HERE!"
4020 GOTO 2920
4030 IF BL <> 1 GOTO 4100
4040 PRINT
4050 PRINT "** YOU CAN'T SEE ANYTHING, YOU DUMB ";R$(RC);"!"
4060 GOTO 2920
4070 REM
4080 REM   DISPLAY MAP OF CURRENT CASTLE LEVEL
4090 REM
4100 PRINT
4110 A=X : B=Y
4120 FOR X=1 TO 8
4130 FOR Y=1 TO 8
4140 Q=L(FND(Z))
4150 IF Q > 99 THEN Q=Q-100 ' LET Q=34 TO HIDE ROOMS
4160 IF X=A AND Y=B THEN PRINT "<";I$(Q);">  "; : GOTO 4180
4170 PRINT " ";I$(Q);"   ";
4180 NEXT Y
4190 PRINT
4200 PRINT
4210 NEXT X
4220 X=A : Y=B
4230 GOTO 4470
4240 PRINT ") LEVEL";Z
4250 GOTO 2920
4260 IF FL <> 0 GOTO 4320
4270 PRINT "** HEY, BRIGHT ONE, YOU'RE OUT OF FLARES!"
4280 GOTO 2920
4290 REM
4300 REM   DISeADJACENT ROOM CONTENTS WITH FLARE
4310 REM
4320 PRINT
4330 FL=FL-1
4340 A=X : B=Y
4350 FOR Q1=A-1 TO A+1
4360 X=FNB(Q1)
4370 FOR Q2=B-1 TO B+1
4380 Y=FNB(Q2)
4390 Q=FNE(L(FND(Z)))
4400 L(FND(Z))=Q
4410 PRINT " ";I$(Q);"   ";
4420 NEXT Q2
4430 PRINT
4440 PRINT
4450 NEXT Q1
4460 X=A : Y=B
4470 GOSUB 10160
4480 GOTO 2920
4490 REM
4500 REM   DISPLAY CONTENTS OF ADJACENT ROOM WITH LAMP
4510 REM
4520 IF LF <> 0 GOTO 4560
4530 PRINT
4540 PRINT "** YOU DON'T HAVE A LAMP, ";R$(RC);"!"
4550 GOTO 2920
4560 PRINT
4570 PRINT "WHERE DO YOU WANT TO SHINE THE LAMP (N,S,E,W)";
4580 GOSUB 9850
4590 A=X : B=Y
4600 X=FNB(X+(O$="N")-(O$="S"))
4610 Y=FNB(Y+(O$="W")-(O$="E"))
4620 IF A-X+B-Y <> 0 GOTO 4660
4630 PRINT
4640 PRINT "** THAT'S NOT A DIRECTION, ";R$(RC);"!"
4650 GOTO 2920
4660 PRINT
4670 PRINT "THE LAMP SHINES INTO (";X;",";Y;") LEVEL";Z;"."
4680 PRINT
4690 L(FND(Z))=FNE(L(FND(Z)))
4700 PRINT "THERE YOU WILL FIND ";C$(L(FND(Z)));"."
4710 X=A : Y=B
4720 GOTO 2920
4730 REM
4740 REM   TAKE A DRINK FROM A POOL
4750 REM
4760 IF L(FND(Z))=5 GOTO 4800
4770 PRINT
4780 PRINT "** IF YOU WANT A DRINK, FIND A POOL!"
4790 GOTO 2920
4800 Q=FNA(8)
4810 PRINT
4820 PRINT "YOU TAKE A DRINK AND ";
4830 IF Q < 7 THEN PRINT "FEEL ";
4840 ON Q GOTO 4850,4860,4870,4880,4890,4900,4910,4930
4850 ST=FNC(ST+FNA(3)) : PRINT "STRONGER." : GOTO 2920
4860 ST=ST-FNA(3) : PRINT "WEAKER." : ON (1-(ST<1)) GOTO 2920,8840
4870 IQ=FNC(IQ+FNA(3)) : PRINT "SMARTER." : GOTO 2920
4880 IQ=IQ-FNA(3) : PRINT "DUMBER." : ON (1-(IQ<1)) GOTO 2920,8840
4890 DX=FNC(DX+FNA(3)) : PRINT "NIMBLER." : GOTO 2920
4900 DX=DX-FNA(3) : PRINT "CLUMSIER." : ON (1-(DX<1)) GOTO 2920,8840
4910 Q=FNA(4) : IF Q=RC GOTO 4910
4920 RC=Q : PRINT "BECOME A ";R$(RC);"." : GOTO 2920
4930 SX=1-SX : PRINT "TURN INTO A "; : IF SX=0 THEN PRINT "FE";
4940 PRINT "MALE ";R$(RC);"!" : GOTO 2920
4950 IF L(FND(Z)) <> 6 GOTO 4990
4960 PRINT
4970 PRINT "YOU OPEN THE CHEST AND"
4980 GOTO 5250
4990 IF L(FND(Z)) <> 12 GOTO 5030
5000 PRINT
5010 PRINT "YOU OPEN THE BOOK AND"
5020 GOTO 5060
5030 PRINT
5040 PRINT "** THE ONLY THING OPENED WAS YOUR BIG MOUTH!"
5050 GOTO 2920
5060 ON FNA(6) GOTO 5070,5100,5120,5140,5170,5200
5070 PRINT "FLASH! OH NO! YOU ARE NOW A BLIND ";R$(RC);"!"
5080 BL=1
5090 GOTO 5230
5100 PRINT "IT'S ANOTHER VOLUME OF ZOT'S POETRY! - YECH!!"
5110 GOTO 5230
5120 PRINT "IT'S AN OLD COPY OF PLAY";R$(FNA(4));"!"
5130 GOTO 5230
5140 PRINT "IT'S A MANUAL OF DEXTERITY!"
5150 DX=18
5160 GOTO 5230
5170 PRINT "IT'S A MANUAL OF STRENGTH!"
5180 ST=18
5190 GOTO 5230
5200 PRINT "THE BOOK STICKS TO YOUR HANDS -"
5210 PRINT "NOW YOU ARE UNABLE TO DRAW YOUR WEAPON!"
5220 BF=1
5230 L(FND(Z))=1
5240 GOTO 2920
5250 ON FNA(4) GOTO 5260,5300,5340,5300
5260 PRINT "KABOOM! IT EXPLODES!!"
5270 Q=FNA(6)
5280 GOSUB 8740
5290 ON (1-(ST<1)) GOTO 5230,8840
5300 Q=FNA(1000)
5310 PRINT "FIND";Q;"GOLD PIECES!"
5320 GP=GP+Q
5330 GOTO 5230
5340 PRINT "GAS!! YOU STAGGER FROM THE ROOM!"
5350 L(FND(Z))=1
5360 T=T+20
5370 O$=MID$("NSEW",FNA(4),1)
5380 GOTO 3900
5390 IF L(FND(Z))=11 GOTO 5430
5400 PRINT
5410 PRINT "** IT'S HARD TO GAZE WITHOUT AN ORB!"
5420 GOTO 2920
5430 PRINT
5440 PRINT "YOU SEE ";
5450 ON FNA(6) GOTO 5460,5480,5500,5520,5590,5630
5460 PRINT "YOURSELF IN A BLOODY HEAP!"
5470 ST=ST-FNA(2) : ON (1-(ST<1)) GOTO 2920,8840
5480 PRINT "YOURSELF DRINKING FROM A POOL AND BECOMING ";C$(12+FNA(13));"!"
5490 GOTO 2920
5500 PRINT C$(12+FNA(13));" GAZING BACK AT YOU!"
5510 GOTO 2920
5520 A=X : B=Y : C=Z
5530 X=FNA(8) : Y=FNA(8) : Z=FNA(8)
5540 Q=FNE(L(FND(Z)))
5550 L(FND(Z))=Q
5560 PRINT C$(Q);" AT (";X;",";Y;") LEVEL";Z;"."
5570 X=A : Y=B : Z=C
5580 GOTO 2920
5590 A=FNA(8) : B=FNA(8) : C=FNA(8)
5600 IF FNA(8) < 4 THEN A=O(1) : B=O(2) : C=O(3)
5610 PRINT "***THE ORB OF ZOT*** AT (";A;",";B;") LEVEL";C;"!"
5620 GOTO 2920
5630 PRINT "A SOAP OPERA RERUN!"
5640 GOTO 2920
5650 IF RF <> 0 GOTO 5690
5660 PRINT
5670 PRINT "** YOU CAN'T TELEPORT WITHOUT THE RUNESTAFF!"
5680 GOTO 2920
5690 Z$="X-COORDINATE"
5700 GOSUB 9990
5710 X=Q
5720 Z$="Y-COORDINATE"
5730 GOSUB 9990
5740 Y=Q
5750 Z$="Z-COORDINATE"
5760 GOSUB 9990
5770 Z=Q
5780 O$="T"
5790 GOTO 5920
5800 PRINT
5810 PRINT "DO YOU REALLY WANT TO QUIT NOW";
5820 GOSUB 9850
5830 PRINT
5840 IF O$="Y" GOTO 5870
5850 PRINT "** THEN DON'T SAY THAT YOU DO!"
5860 GOTO 2920
5870 PRINT
5880 GOTO 9080
5890 REM
5900 REM   DISPLAY STATUS INFORMATION
5910 REM
5920 PRINT
5930 IF BL=0 THEN GOSUB 10160 : PRINT
5940 PRINT "STRENGTH =";ST;" INTELLIGENCE =";IQ;" DEXTERITY =";DX
5950 PRINT "TREASURES =";TC;" FLARES =";FL;" GOLD PIECES =";GP
5960 PRINT "WEAPON = ";W$(WV+1);"  ARMOR = ";W$(AV+5);
5970 IF LF=1 THEN PRINT "  AND A LAMP";
5980 PRINT
5990 WC=0
6000 Q=FNE(L(FND(Z)))
6010 L(FND(Z))=Q
6020 Z$="YOU NOW HAVE"
6030 PRINT
6040 PRINT "HERE YOU FIND ";C$(Q);"."
6050 IF (Q<7) OR (Q=11) OR (Q=12) GOTO 2920
6060 IF Q=7 THEN GP=GP+FNA(10) : PRINT Z$;GP;"." : GOTO 5230
6070 IF Q=8 THEN FL=FL+FNA(5) : PRINT Z$;FL;"." : GOTO 5230
6080 IF Q > 9 GOTO 6110
6090 IF (O(1)=X) AND (O(2)=Y) AND (O(3)=Z) THEN ON (1-(O$="T")) GOTO 3900,9370
6100 X=FNA(8) : Y=FNA(8) : Z=FNA(8) : GOTO 5920
6110 IF Q=10 THEN Z=FNB(Z+1) : GOTO 5920
6120 IF Q <= 25 OR Q >= 34 GOTO 6180
6130 PRINT
6140 PRINT "IT'S NOW YOURS!"
6150 T(Q-25)=1
6160 TC=TC+1
6170 GOTO 5230
6180 A=L(FND(Z))-12
6190 WC=0
6200 IF (A<13) OR (VF=1) GOTO 7390
6210 PRINT
6220 PRINT "YOU MAY TRADE WITH, ATTACK, OR IGNORE THE VENDOR."
6230 GOSUB 9830
6240 IF O$="I" GOTO 2920
6250 IF O$ <> "A" GOTO 6300
6260 VF=1
6270 PRINT
6280 PRINT "YOU'LL BE SORRY THAT YOU DID THAT!"
6290 GOTO 7390
6300 IF O$="T" GOTO 6340
6310 PRINT
6320 PRINT "** NICE SHOT, ";R$(RC);"!"
6330 GOTO 6210
6340 FOR Q=1 TO 8
6350 A=FNA(Q*1500)
6360 IF T(Q)=0 GOTO 6420
6370 PRINT
6380 PRINT "DO YOU WANT TO SELL ";C$(Q+25);" FOR";A;"GP'S";
6390 GOSUB 9850
6400 IF O$="Y" THEN TC=TC-1 : T(Q)=0 : GP=GP+A : GOTO 6420
6410 IF O$ <> "N" THEN PRINT Y$ : GOTO 6370
6420 NEXT Q
6430 IF GP >= 1000 GOTO 6470
6440 PRINT
6450 PRINT "YOU'RE TOO POOR TO TRADE, ";R$(RC);"."
6460 GOTO 2920
6470 IF GP < 1250 GOTO 6970
6480 PRINT
6490 PRINT "OK, ";R$(RC);", YOU HAVE";GP;"GP'S AND ";W$(AV+5);" ARMOR."
6500 PRINT
6510 Z$="ARMOR"
6520 GOSUB 10130
6530 PRINT "NOTHING<0> LEATHER<1250> ";
6540 IF GP > 1499 THEN PRINT "CHAINMAIL<1500> ";
6550 IF GP > 1999 THEN PRINT "PLATE<2000>";
6560 PRINT
6570 GOSUB 9830
6580 PRINT
6590 IF O$="N" GOTO 6720
6600 IF O$="L" THEN GP=GP-1250 : AV=1 : AH=7 : GOTO 6720
6610 IF O$ <> "C" OR GP >= 1500 GOTO 6640
6620 PRINT "** YOU HAVEN'T GOT THAT MUCH CASH ON HAND!"
6630 GOTO 6500
6640 IF O$="C" THEN GP=GP-1500 : AV=2 : AH=14 : GOTO 6720
6650 IF O$ <> "P" OR GP >= 2000 GOTO 6680
6660 PRINT "** YOU CAN'T AFFORD PLATE ARMOR!"
6670 GOTO 6500
6680 IF O$="P" THEN GP=GP-2000 : AV=3 : AH=21 : GOTO 6720
6690 PRINT
6700 PRINT "** DON'T BE SILLY. CHOOSE A SELECTION."
6710 GOTO 6560
6720 IF GP < 1250 GOTO 6970
6730 PRINT
6740 PRINT"YOU HAVE";GP;"GP'S LEFT WITH ";W$(WV+1);" IN HAND."
6750 PRINT
6760 Z$="WEAPON"
6770 GOSUB 10130
6780 PRINT "NOTHING<0> DAGGER<1250> ";
6790 IF GP > 1499 THEN PRINT "MACE<1500> ";
6800 IF GP > 1999 THEN PRINT "SWORD<2000>";
6810 PRINT
6820 GOSUB 9830
6830 PRINT
6840 IF O$="N" GOTO 6970
6850 IF O$="D" THEN GP=GP-1250 : WV=1 : GOTO 6970
6860 IF O$ <> "M" OR GP >= 1500 GOTO 6890
6870 PRINT "** SORRY SIR, I'M AFRAID I DON'T GIVE CREDIT!"
6880 GOTO 6750
6890 IF O$="M" THEN GP=GP-1500 : WV=2 : GOTO 6970
6900 IF O$ <> "S" OR GP >= 2000 GOTO 6940
6910 PRINT "** YOUR DUNGEON EXPRESS CARD - ";
6920 PRINT "YOU LEFT HOME WITHOUT IT!"
6930 GOTO 6750
6940 IF O$="S" THEN GP=GP-2000 : WV=3 : GOTO 6970
6950 PRINT "** TRY CHOOSING A SELECTION!"
6960 GOTO 6810
6970 IF GP < 1000 GOTO 2920
6980 Z$="STRENGTH"
6990 GOSUB 10070
7000 IF O$ <> "Y" GOTO 7060
7010 GP=GP-1000
7020 ST=FNC(ST+FNA(6))
7030 Q=ST
7040 GOSUB 10100
7050 GOTO 6970
7060 IF O$ <> "N" THEN PRINT Y$ : GOTO 6980
7070 IF GP < 1000 GOTO 2920
7080 Z$="INTELLIGENCE"
7090 GOSUB 10070
7100 IF O$ <> "Y" GOTO 7160
7110 GP=GP-1000
7120 IQ=FNC(IQ+FNA(6))
7130 Q=IQ
7140 GOSUB 10100
7150 GOTO 7070
7160 IF O$ <> "N" THEN PRINT Y$ : GOTO 7080
7170 IF GP < 1000 GOTO 2920
7180 Z$="DEXTERITY"
7190 GOSUB 10070
7200 IF O$ <> "Y" GOTO 7260
7210 GP=GP-1000
7220 DX=FNC(DX+FNA(6))
7230 Q=DX
7240 GOSUB 10100
7250 GOTO 7170
7260 IF O$ <> "N" THEN PRINT Y$ : GOTO 7180
7270 IF (GP<1000) OR (LF=1) GOTO 2920
7280 PRINT
7290 PRINT "DO YOU WANT TO BUY A LAMP FOR 1000 GP'S";
7300 GOSUB 9850
7310 IF O$ <> "Y" GOTO 7370
7320 GP=GP-1000
7330 LF=1
7340 PRINT
7350 PRINT "IT'S GUARANTEED TO OUTLIVE YOU!"
7360 GOTO 2920
7370 IF O$ <> "N" THEN PRINT Y$ : GOTO 7280
7380 GOTO 2920
7390 Q1=1+INT(A/2) : Q2=A+2 : Q3=1
7400 IF (C(1,4)>T(1)) OR (BL=1) OR (DX<FNA(9)+FNA(9)) GOTO 8420
7410 PRINT
7420 PRINT "YOU'RE FACING ";C$(A+12);"!"
7430 PRINT
7440 PRINT "YOU MAY ATTACK OR RETREAT."
7450 IF Q3=1 THEN PRINT "YOU CAN ALSO ATTEMPT A BRIBE."
7460 IF IQ > 14 THEN PRINT "YOU CAN ALSO CAST A SPELL."
7470 PRINT
7480 PRINT "YOUR STRENGTH IS";ST;"AND YOUR DEXTERITY IS";DX;"."
7490 GOSUB 9830
7500 IF O$ <> "A" GOTO 7910
7510 IF WV <> 0 GOTO 7550
7520 PRINT
7530 PRINT "** POUNDING ON ";C$(A+12);" WON'T HURT IT!"
7540 GOTO 8420
7550 IF BF <> 1 GOTO 7590
7560 PRINT
7570 PRINT "** YOU CAN'T BEAT IT TO DEATH WITH A BOOK!"
7580 GOTO 8420
7590 IF DX >= FNA(20)+(3*BL) GOTO 7630
7600 PRINT
7610 PRINT "YOU MISSED, TOO BAD!"
7620 GOTO 8420
7630 Z$=RIGHT$(C$(A+12),LEN(C$(A+12))-2)
7640 IF LEFT$(Z$,1)=" " THEN Z$=MID$(Z$,2)
7650 PRINT
7660 PRINT "YOU HIT THE EVIL ";Z$;"!"
7670 Q2=Q2-WV
7680 IF (A <> 9 AND A <> 12) GOTO 7730
7690 IF FNA(8) <> 1 GOTO 7730
7700 PRINT
7710 PRINT "OH NO! YOUR ";W$(WV+1);" BROKE!"
7720 WV=0
7730 IF Q2 > 0 GOTO 8420
7740 PRINT
7750 MC=MC-1
7760 PRINT C$(A+12);" LIES DEAD AT YOUR FEET!"
7770 IF H > T-60 GOTO 7810
7780 PRINT
7790 PRINT "YOU SPEND AN HOUR EATING ";C$(A+12);E$(FNA(8));"."
7800 H=T
7810 IF X <> R(1) OR Y <> R(2) OR Z <> R(3) THEN ON (1-(A=13)) GOTO 7860,9630
7820 PRINT
7830 PRINT "GREAT ZOT! YOU'VE FOUND THE RUNESTAFF!";CHR$(7)
7840 R(1)=0
7850 RF=1
7860 Q=FNA(1000)
7870 PRINT
7880 PRINT "YOU NOW GET HIS HOARD OF";Q;"GP'S"
7890 GP=GP+Q
7900 GOTO 5230
7910 IF O$="R" GOTO 8420
7920 IF O$ <> "C" GOTO 8210
7930 IF IQ >= 15 OR Q3 <= 1 GOTO 7970
7940 PRINT
7950 PRINT "** YOU CAN'T CAST A SPELL NOW!"
7960 GOTO 7410
7970 PRINT
7980 PRINT "WHICH SPELL (WEB, FIREBALL, DEATHSPELL)";
7990 GOSUB 9850
8000 PRINT
8010 IF O$ <> "W" GOTO 8050
8020 ST=ST-1
8030 WC=FNA(8)+1
8040 ON (1-(ST<1)) GOTO 8420,8840
8050 IF O$ <> "F" GOTO 8140
8060 Q=FNA(7)+FNA(7)
8070 ST=ST-1
8080 IQ=IQ-1
8090 IF (IQ < 1) OR (ST < 1) GOTO 8840
8100 PRINT "IT DOES";Q;"POINTS WORTH OF DAMAGE."
8110 PRINT
8120 Q2=Q2-Q
8130 GOTO 7730
8140 IF O$="D" GOTO 8180
8150 PRINT
8160 PRINT "** TRY ONE OF THE OPTIONS GIVEN."
8170 GOTO 7410
8180 PRINT "DEATH . . . ";
8190 IF IQ < FNA(4)+15 THEN PRINT "YOURS!" : IQ=0 : GOTO 8840
8200 PRINT "HIS!" : Q2=0 : GOTO 7740
8210 IF O$="B" AND Q3 <= 1 GOTO 8250
8220 PRINT
8230 PRINT "** CHOOSE ONE OF THE OPTIONS LISTED."
8240 GOTO 7410
8250 IF TC <> 0 GOTO 8290
8260 PRINT
8270 PRINT "ALL I WANT IS YOUR LIFE!"
8280 GOTO 8420
8290 Q=FNA(8)
8300 IF T(Q)=0 GOTO 8290
8310 PRINT
8320 PRINT "I WANT ";C$(Q+25);". WILL YOU GIVE IT TO ME";
8330 GOSUB 9850
8340 IF O$="N" GOTO 8420
8350 IF O$ <> "Y" THEN PRINT Y$ : GOTO 8310
8360 T(Q)=0
8370 TC=TC-1
8380 PRINT
8390 PRINT "OK, JUST DON'T TELL ANYONE ELSE."
8400 VF=VF+(L(FND(Z))=25)
8410 GOTO 2920
8420 Q3=2
8430 IF WC <= 0 GOTO 8460
8440 WC=WC-1
8450 IF WC=0 THEN PRINT : PRINT "THE WEB JUST BROKE!"
8460 Z$=RIGHT$(C$(A+12),LEN(C$(A+12))-2)
8470 IF LEFT$(Z$,1)=" " THEN Z$=MID$(Z$,2)
8480 IF WC <= 0 GOTO 8520
8490 PRINT
8500 PRINT "THE ";Z$;" IS STUCK AND CAN'T ATTACK NOW!"
8510 GOTO 8630
8520 PRINT
8530 PRINT "THE ";Z$;" ATTACKS!"
8540 IF DX < FNA(7)+FNA(7)+FNA(7)+3*BL GOTO 8580
8550 PRINT
8560 PRINT "WHAT LUCK, HE MISSED YOU!"
8570 GOTO 8630
8580 PRINT
8590 PRINT "OUCH! HE HIT YOU!"
8600 Q=Q1
8610 GOSUB 8740
8620 IF ST < 1 GOTO 8840
8630 IF O$ <> "R" GOTO 7410
8640 PRINT
8650 PRINT "YOU HAVE ESCAPED!"
8660 PRINT
8670 PRINT "DO YOU WANT TO GO NORTH, SOUTH, EAST, OR WEST";
8680 GOSUB 9850
8690 IF O$="N" OR O$="S" OR O$="E" OR O$="W" GOTO 3900
8700 PRINT
8710 PRINT "** DON'T PRESS YOUR LUCK, ";R$(RC);"!"
8720 PRINT
8730 GOTO 8670
8740 IF AV=0 GOTO 8820
8750 Q=Q-AV
8760 AH=AH-AV
8770 IF Q < 0 THEN AH=AH-Q : Q=0
8780 IF AH >= 0 GOTO 8820
8790 AH=0 : AV=0
8800 PRINT
8810 PRINT "YOUR ARMOR HAS BEEN DESTROYED . . . GOOD LUCK!"
8820 ST=ST-Q
8830 RETURN
8840 PRINT CHR$(7)
8850 GOSUB 9770
8860 PRINT "A NOBLE EFFORT, OH FORMERLY LIVING ";R$(RC);"!"
8870 PRINT
8880 PRINT "YOU DIED DUE TO LACK OF ";
8890 IF ST < 1 THEN PRINT "STRENGTH."
8900 IF IQ < 1 THEN PRINT "INTELLIGENCE."
8910 IF DX < 1 THEN PRINT "DEXTERITY."
8920 PRINT
8930 Q3=1
8940 PRINT "AT THE TIME YOU DIED, YOU HAD :"
8950 GOTO 9130
8960 Q3=0
8970 PRINT
8980 PRINT "YOU LEFT THE CASTLE WITH";
8990 IF OF=0 THEN PRINT "OUT";
9000 PRINT " THE ORB OF ZOT."
9010 PRINT
9020 IF OF=0 GOTO 9080
9030 PRINT
9040 PRINT "AN INCREDIBLY GLORIOUS VICTORY!!"
9050 PRINT
9060 PRINT "IN ADDITION, YOU GOT OUT WITH THE FOLLOWING :"
9070 GOTO 9120
9080 PRINT
9090 PRINT "A LESS THAN AWE-INSPIRING DEFEAT."
9100 PRINT
9110 PRINT "WHEN YOU LEFT THE CASTLE, YOU HAD :"
9120 IF Q3=0 THEN PRINT "YOUR MISERABLE LIFE!"
9130 FOR Q=1 TO 8
9140 IF T(Q)=1 THEN PRINT C$(Q+25)
9150 NEXT Q
9160 PRINT W$(WV+1);" AND ";W$(AV+5);
9170 IF LF=1 THEN PRINT " AND A LAMP";
9180 PRINT
9190 PRINT "YOU ALSO HAD";FL;"FLARES AND";GP;"GOLD PIECES"
9200 IF RF=1 THEN PRINT "AND THE RUNESTAFF"
9210 PRINT
9220 PRINT "AND IT TOOK YOU";T;"TURNS!"
9230 PRINT
9240 PRINT "ARE YOU FOOLISH ENOUGH TO WANT TO PLAY AGAIN";
9250 GOSUB 9850
9260 PRINT
9270 IF O$ <> "Y" THEN GOTO 9330
9280 PRINT "SOME ";R$(RC);"S NEVER LEARN!"
9290 PRINT
9300 PRINT "PLEASE BE PATIENT WHILE THE CASTLE IS RESTOCKED."
9310 PRINT
9320 GOTO 1240
9330 IF O$ <> "N" THEN PRINT Y$ : GOTO 9240
9340 PRINT "MAYBE DUMB ";R$(RC);" IS NOT SO DUMB AFTER ALL!"
9350 PRINT
9360 GOTO 10180
9370 PRINT
9380 PRINT "GREAT UNMITIGATED ZOT!"
9390 PRINT
9400 PRINT "YOU JUST FOUND ***THE ORB OF ZOT***!"
9410 PRINT
9420 PRINT "THE RUNESTAFF HAS DISAPPEARED!"
9430 RF=0
9440 OF=1
9450 O(1)=0
9460 GOTO 5230
9470 DATA AN EMPTY ROOM,.,THE ENTRANCE,E,STAIRS GOING UP,U
9480 DATA STAIRS GOING DOWN,D,A POOL,P,A CHEST,C,GOLD PIECES,G
9490 DATA FLARES,F,A WARP,W,A SINKHOLE,S,A CRYSTAL ORB,O
9500 DATA A BOOK,B,A KOBOLD,M,AN ORC,M,A WOLF,M,A GOBLIN,M,AN OGRE,M
9510 DATA A TROLL,M,A BEAR,M,A MINOTAUR,M,A GARGOYLE,M,A CHIMERA,M
9520 DATA A BALROG,M,A DRAGON,M,A VENDOR,V,THE RUBY RED,T
9530 DATA THE NORN STONE,T,THE PALE PEARL,T,THE OPAL EYE,T
9540 DATA THE GREEN GEM,T,THE BLUE FLAME,T,THE PALANTIR,T,THE SILMARIL,T
9550 DATA X,"?",NO WEAPON," SANDWICH"
9560 DATA DAGGER," STEW",MACE," SOUP",SWORD," BURGER",NO ARMOR," ROAST"
9570 DATA LEATHER," FILET",CHAINMAIL," TACO",PLATE," PIE"
9580 DATA HOBBIT,ELF,MAN,DWARF
9590 X=FNA(8) : Y=FNA(8)
9600 IF L(FND(Z)) <> 101 GOTO 9590
9610 L(FND(Z))=Q
9620 RETURN
9630 PRINT
9640 PRINT "YOU GET ALL HIS WARES :"
9650 PRINT "PLATE ARMOR"
9660 AV=3 : AH=21
9670 PRINT "A SWORD"
9680 WV=3
9690 PRINT "A STRENGTH POTION"
9700 ST=FNC(ST+FNA(6))
9710 PRINT "AN INTELLIGENCE POTION"
9720 IQ=FNC(IQ+FNA(6))
9730 PRINT "A DEXTERITY POTION"
9740 DX=FNC(DX+FNA(6))
9750 IF LF=0 THEN PRINT "A LAMP" : LF=1
9760 GOTO 7860
9770 FOR Q=1 TO 64
9780 PRINT "*";
9790 NEXT Q
9800 PRINT
9810 PRINT
9820 RETURN
9830 PRINT
9840 PRINT "YOUR CHOICE";
9850 INPUT O$
9860 O$=LEFT$(O$,1)
9870 RETURN
9880 PRINT "HOW MANY POINTS DO YOU WISH TO ADD TO YOUR ";Z$;
9890 INPUT O$
9900 PRINT
9910 Q=VAL(O$)
9920 IF Q=0 AND ASC(O$) <> 48 THEN Q=-1
9930 IF Q<0 OR Q>OT OR Q<>INT(Q) THEN PRINT "** "; : GOTO 9880
9940 OT=OT-Q
9950 RETURN
9960 INPUT O$
9970 Q=INT(VAL(O$))
9980 RETURN
9990 PRINT
10000 PRINT Z$;
10010 INPUT O$
10020 Q=INT(VAL(O$))
10030 IF Q > 0 AND Q < 9 THEN RETURN
10040 PRINT
10050 PRINT "** TRY A NUMBER FROM 1 TO 8."
10060 GOTO 9990
10070 PRINT
10080 PRINT "DO YOU WANT TO BUY A POTION OF ";Z$;" FOR 1000 GP'S";
10090 GOTO 9850
10100 PRINT
10110 PRINT "YOUR ";Z$;" IS NOW";Q;"."
10120 RETURN
10130 PRINT
10140 PRINT "THESE ARE THE TYPES OF ";Z$;" YOU CAN BUY :"
10150 RETURN
10160 PRINT "YOU ARE AT (";X;",";Y;") LEVEL";Z;"."
10170 RETURN
10180 IF SAMP$="YES" THEN CHAIN "SAMPLES",1000 ELSE  END

ZAP’EM.BAS

100 CLS
110 A$=STRING$(80,205)
120 PRINT A$
130 PRINT TAB(34)"ZAP`EM  #2007-A"
140 COLOR 23,0,0
150 PRINT :PRINT :PRINT TAB(39)"IPCO"
160 COLOR 7,0,0
170 PRINT :PRINT :PRINT TAB(25)"PERSONAL COMPUTER OWNERS GROUP"
180 PRINT :PRINT :PRINT TAB(19)"p.o. box 10426, pittsburgh, pennsylvania 15234"
190 PRINT A$
200 PRINT :PRINT :PRINT :PRINT :PRINT
210 PRINT TAB(28)"PRESS ANY KEY TO CONTINUE"
220 A$=INKEY$:IF A$="" THEN 220
230 CLS
240 KEY OFF:SCREEN 0,1:COLOR 15,0,0:WIDTH 40:CLS:LOCATE 5,19:PRINT "IBM"
250 LOCATE 7,8 ,0:PRINT "General  utility  programs"
260 COLOR 9 ,0:LOCATE 10,9,0:PRINT CHR$(213)+STRING$(21,205)+CHR$(184)
270 LOCATE 11,9,0:PRINT CHR$(179)+"       ZAP'EM        "+CHR$(179)
280 LOCATE 12,9,0:PRINT CHR$(179)+STRING$(21,32)+CHR$(179)
290 COLOR 9,0:LOCATE 13,9,0:PRINT CHR$(179)+"     Version  1B     "+CHR$(179)
300 BEEP
310 LOCATE 14,9,0:PRINT CHR$(212)+STRING$(21,205)+CHR$(190)
320 COLOR 15,0  :LOCATE 17,7,0:PRINT "FEBRUARY 03,1982   MAV-5-5-K "
330 COLOR 9,0:LOCATE 23,6,0:PRINT "Press space bar to continue..."
340 IF INKEY$ <> "" THEN GOTO 340
350 CMD$ = INKEY$
360 IF CMD$ = "" THEN GOTO 350
370 IF CMD$ = CHR$(27) THEN GOTO 390
380 IF CMD$ <> " " THEN GOTO 350
390 CLS:INPUT "DO YOU WANT INSTRUCTIONS";IN$
400 IF IN$="Y" OR IN$="YES" OR IN$="y" OR IN$="yes" THEN GOSUB 1230
410 REM TRANSFER COMMAND
420 REM **ZAP EM  ***
430 REM **A GAME*****
440 CLS
450 CLEAR ,,21000
460 INPUT "AH....YOUR NAME PLEASE ";NME$:LOCATE 15,1:INPUT "YOUR LAST SCORE ";R
470 DIM A(250),B(250)
480 FUEL=150
490 SHIP=3
500 V=7
510 T1=6
520 X=10 :Y=20
530 SCREEN 0,1
540 COLOR 7,0
550 RANDOMIZE R
560 CLS
570 COLOR 1
580 FOR I=1 TO 23:LOCATE I,1:PRINT CHR$(186):LOCATE I,38:PRINT CHR$(186):NEXT I
590 LOCATE 1,1:PRINT CHR$(201):LOCATE 1,38:PRINT CHR$(187):LOCATE 23,1:PRINT CHR$(200):LOCATE 23,38:PRINT CHR$(188)
600 FOR I=2 TO 37:LOCATE 1,I:PRINT CHR$(205):LOCATE 23,I:PRINT CHR$(205):NEXT I
610 LOCATE 4,1:PRINT CHR$(204):LOCATE 4,38:PRINT CHR$(185):FOR O=2 TO 37:LOCATE 4,O:PRINT CHR$(205):NEXT O
620 KEY(14) ON
630 ON KEY(14) GOSUB 970
640 KEY(11) ON
650 ON KEY(11) GOSUB 980
660 KEY(1) ON
670 ON KEY(1) GOSUB 990
680 REM **TRANSFER COMMAND**
690 LOCATE 2,15:PRINT SHIP
700 IF SHIP=0 OR FUEL=0 THEN FOR H1=1 TO 13:PRINT "GAME OVER":NEXT:GOTO 1330
710 LOCATE X,2:PRINT CHR$(27)
720 RR=INT(RND(2)*10)
730 IF B(RR)=0 THEN A(RR)=INT(RND(3)*16)+5:B(RR)=INT(RND(4)*7 )+30
740 FOR F=1 TO T1
750 IF A(F)=0 OR B(F)=0 THEN 810
760 IF A(F)=X AND B(F)=2 THEN BEEP:SHIP=SHIP-1:LOCATE X,2:PRINT"OUCH":FOR VV=1 TO 300:NEXT VV:LOCATE X,2:PRINT "      ":LOCATE 2,15:PRINT SHIP
770 IF A(F)=0 THEN 810
780 IF B(F)<3 THEN LOCATE A(F),B(F):PRINT " ":B(F)=0:A(F)=0:SCORE=SCORE-150:SOUND 55,1:GOTO 810
790 LOCATE A(F),B(F):PRINT " ":B(F)=B(F)-1
800 COLOR 14:LOCATE A(F),B(F):PRINT CHR$(254):COLOR 7
810 NEXT F
820 Y=Y+  M
830 IF X>21 THEN LOCATE 22,2:PRINT "   ":X=6
840 IF X<6 THEN LOCATE 5,2:PRINT "   ":X=21
850 FUEL=FUEL-1.2
860 IF FUEL<50 THEN V=31
870 COLOR 7:LOCATE 2,24:PRINT "SCORE: ";SCORE
880 COLOR V
890 IF FUEL<1 THEN COLOR 7:LOCATE 3,3:FOR U=1 TO 10:PRINT "GAME OVER":NEXT:GOTO 1330
900 RR=INT(RND(2)*T1)
910 IF B(RR)=0 THEN A(RR)=INT(RND(3)*16)+5:B(RR)=INT(RND(4)*7 )+30:IF A(RR)<6 THEN A(RR)=7
920 IF A(RR)=0 THEN A(RR)=INT(RND(3)*16)+5:B(RR)=INT(RND(4)*7 )+30:IF A(RR)<6 THEN A(RR)=7
930 LOCATE 2,3:PRINT"FUEL: ";INT(FUEL)
940 LOCATE X,2:PRINT CHR$(27)
950 COLOR 7
960 GOTO 620
970 GOSUB 1010:X=X+1        :GOTO 680
980 GOSUB 1010:X=X-1        :GOTO 680
990 GOSUB 1050
1000 GOTO 620
1010 IF X>22 THEN X=2
1020 IF X<2 THEN X=22
1030 LOCATE X,2:PRINT" "
1040 RETURN
1050 LOCATE X,2:PRINT CHR$(27)
1060 COLOR 4
1070 FOR Z=1 TO T1
1080 IF X=A(Z) THEN 1120
1090 NEXT Z
1100 FOR CC=3 TO 24:LOCATE X,CC:PRINT "-":LOCATE X,CC:PRINT " ":NEXT CC
1110 COLOR 7:GOTO 620
1120 FOR LL=3 TO 24
1130 LOCATE X,LL:PRINT "-"
1140 IF LL=B(Z) THEN LOCATE X,LL:PRINT "*":GOSUB 1190:LOCATE X,LL:PRINT " ":A(Z)=0:B(LL)=0:SCORE=SCORE+100:GOTO 680
1150 LOCATE X,LL:PRINT " "
1160 NEXT LL
1170 COLOR 7
1180 GOTO 620
1190 FOR OO=300 TO 315
1200 SOUND OO   ,.21
1210         NEXT OO
1220 RETURN
1230 CLS
1240 LOCATE 25,1:PRINT"Press any key to start game..."
1250 PRINT"               Zap'em"
1260 PRINT:PRINT"  You are the reverse arrow (It is      supposed to be a fighter with rakish    inverse swept wings)."
1270 PRINT:PRINT"  Your mission is to zap the invading   Horde ships in your path. The Horde is  a huge mass of drone ships that is try- ing to get past the imperial fleet and  into the rich homeworld systems."
1280 PRINT:PRINT"  The Horde ships are unpredictable.    Some are Ghost ships. These will take   more than one hit or will vanish upon   being hit without a score increment."
1290 PRINT:PRINT"  The controls are simple: up and down  cursor control arrow keys for up and    down movement. F1 to fire."
1300 PRINT:PRINT"  Good hunting"
1310 X$=INPUT$(1):IF X$<>"" THEN RETURN
1320 GOTO 1310
1330 '**HIGH SCORE**
1340 CLS
1350 LOCATE 2,2:PRINT"HIGH SCORES...."
1360 LOCATE 3,1:PRINT"_______________________________________"
1370 LOCATE 5,1
1380 DIM NME$(50),SCORE(50)
1390 OPEN "METEOR.DAT" FOR INPUT AS #1
1400 FOR I=1 TO 10
1410 INPUT #1,NME$(I),SCORE(I)
1420 PRINT NME$(I),SCORE(I)
1430 NEXT I
1440 NME$(10)=NME$:SCORE(10)=SCORE
1450 CLOSE
1460 IF SCORE(10)<SCORE(9) GOTO 1520
1470 FOR I=1 TO 10
1480 IF SCORE(I)<SCORE(I+1) THEN SWAP SCORE(I),SCORE(I+1):SWAP NME$(I),NME$(I+1):F=1
1490 NEXT I:IF F=1 THEN F=0:GOTO 1470
1500 OPEN "METEOR.DAT" FOR OUTPUT AS #1
1510 FOR I=1 TO 10:PRINT#1,NME$(I);",";SCORE(I):NEXT I:CLOSE
1520 LOCATE 5,1
1530 FOR I=1 TO 9
1540 PRINT NME$(I),SCORE(I)
1550 NEXT I
1560 LOCATE 17,1:PRINT "YOUR SCORE, ";NME$;", WAS";SCORE
1570 LOCATE 22,1:INPUT "PLAY AGAIN (Y OR N)";PLY$
1580 IF PLY$="Y" THEN 420
1590 RUN "MENU

Directory of PC-SIG Library Disk #0071

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

ZAP'EM   BAS      5888   5-19-82
MEMORY   BAS     10496   4-02-83   5:44p
STARTREK BAS     23040   7-05-82  12:31a
STARTREK DOC      2400  11-20-81
CYCLE    BAS      3584   4-25-83   8:55p
DROIDS   BAS      6784   2-12-83   4:00p
LOSTGOLD BAS     19584   1-21-83  11:37p
WIZARD   BAS     27520   1-21-83  11:51p
SPELLER  BAS      3328  11-21-82  12:12a
CRC      TXT       981  11-09-84  11:33a
CRCK4    COM      1536  10-21-82   7:54p
       11 file(s)     105141 bytes
                       53248 bytes free