Compucolor.org – Virtual Media

Listing of file='ADVENT.BAS;05' on disk='vmedia/colossal_cave_epps-sector.ccvf'

10 GOTO 20
15 X= CALL (1):K$= "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000":RETURN
20 PRINT "K":PLOT 12,14:PRINT ,,,"ADVENTURE":CLEAR 2100
21 XX= RND (- PEEK (33209)):PRINT :PRINT ,,
23 INPUT "INSERT DATA DISK AND HIT RETURN>";A$:PLOT 28,11
25 TM= 53248:ST= PEEK (TM- 2)+ PEEK (TM- 1)* 256
27 HI= INT (TM/ 256):LO= TM- HI* 256:POKE 33283,LO:POKE 33284,HI
29 T1= 100:T2= 35:T3= 149
31 DIM IT$(T1),S(T2),V(T1),O(15)
33 DEF FN A(W)= INT (RND (1)* W)+ 1
42 FILE "R",4,"MOVING",1:GET 4,1;A$[1]
48 PRINT ,,"PLEASE WAIT. LOADING DATA-BASE."
50 FILE "R",1,"ITEMS.SRC",1;1,1408,1
55 REC= 1:FOR Q= 1TO 1408
60 GET 1,1,Q;A$[1]
65 IF A$= CHR$ (13)THEN Q= Q+ 2:IT$(RE)= AA$:AA$= "":RE= RE+ 1:PRINT T2- RE+ 1,:GOTO 60
70 AA$= AA$+ A$
75 NEXT
80 FILE "C",1:PRINT :PRINT :PRINT
130 PRINT FRE (I$)" BYTES REMAINING IN STRING SCRATCH"
131 PRINT FRE (I)" BYTES REMAINING IN MEMORY"
135 L1= FN A(4):L2= L1
140 G= 0:BO= 0:S= 1:D1= 1:D2= 0:D3= 0:T= 1:B1= 0
145 B2= 0:P1= 0:L= 0:C= 0:B3= 0:RO= 0:CO= 0:OB= 0
155 FOR Q= 1TO T1:V(Q)= 0:NEXT
220 RESTORE 230:FOR Z2= 1TO T2:READ S(Z2):NEXT
230 DATA 18,25,23,24,21,52,0,71,74,58,59,69
235 DATA 66,82,100,7,49,7,7,7,7,12,13,40,38
240 DATA 69,0,46,0,0,15,60,82,22,0
250 FOR Q= 1TO 15:READ O(Q):NEXT
260 DATA 1,2,2,2,2,3,4,3,3,2,5,3,2,3,3
270 POKE 33209,0:POKE 33210,0:POKE 33211,0
280 TT= 0
300 REM MAIN LOOP
320 IF L1< 13OR L1= 58OR (L= 1AND (S(18)= L1OR S(18)= - 1))THEN 350
325 IF L1= 59AND S(10)= - 1THEN 350
330 MS= 45:GOSUB 10000:GOTO 400
350 GOSUB 7990:IF V(L1)= 0THEN V(L1)= 1
370 GOSUB 6650:GOSUB 7800
400 GOSUB 15
405 IF (PEEK (33211)* 60+ PEEK (33210))> 100THEN 9800
410 TT= TT+ 1
420 IF X< 110THEN D= X- 99:GOTO 1070
920 GOTO 1950
940 PRINT "WHAT DO YOU WANT TO DO WITH THE "D$" ?"
950 GOTO 400
1070 GET 4,L1,D;A$[1]
1120 Z2= ASC (A$)
1140 IF Z2= 0THEN PRINT "YOU CANT GO THAT DIRECTION":GOTO 400
1150 GOTO 1240
1180 L2= L1:L1= Z2
1190 IF S(35)= L2AND L1< > 60AND L1> 13AND MID$ (K$,110,1)= "0"AND MID$ (K$,112,1)= "0"THEN S(35)= L1
1195 IF L1< 13OR (L= 1AND (S(18)= L1OR S(18)= - 1))THEN 300
1197 IF S(10)= - 1AND L1= 59GOTO 300
1200 IF L1= 16OR L1= 17OR L1= 19OR L1= 20OR L1= 25OR L1= 47OR L1= 48OR L1= 59OR L1= 60OR L1= 61OR L1= 75OR L1= 76OR L1= 98THEN MS= 44:GOSUB 10000:GOTO 9540
1210 GOTO 300
1240 REM CHECK SP CONDS
1260 IF NOT (L1= 10AND (D= 10OR D= 5)OR L1= 11AND (D= 9OR D= 3))THEN 1310
1280 IF GTHEN 1180
1290 PRINT "THE GRATE IS LOCKED":GOTO 400
1310 REM NGT
1320 IF NOT (L1= 17AND D= 9AND S(1)= - 1)THEN 1350
1330 PRINT "THE DOME IS UNCLIMABLE":GOTO 400
1350 REM CRSTL BRDG
1360 IF NOT (L1= 19AND D= 7OR L1= 20AND D= 3)THEN 1400
1370 IF B2THEN 1180
1380 PRINT "THE FISSURE IS TOO WIDE TOO JUMP":GOTO 400
1400 REM MT.KING & SNAKE
1410 IF NOT (L1= 22AND D< > 3AND D< > 9)THEN 1460
1420 IF S= 0THEN 1180
1430 PRINT "YOU CANT GET BY THE SNAKE":GOTO 400
1460 REM BEDQUILT&RND.DIRS
1470 IF NOT (L1= 44AND D< > 3AND D< > 7)THEN 1580
1480 IF RND (1)> .5THEN 1510
1490 MS= 52:GOSUB 10000:GOTO 400
1510 RESTORE 1530
1520 FOR Z3= 1TO FN A(5):READ Z2:NEXT :GOTO 1180
1530 DATA 33,37,45,92,76
1580 REM WITT'S END
1590 IF L1< > 39THEN 1680
1610 IF RND (1)< .1THEN Z2= 38:GOTO 1180
1620 MS= 52:GOSUB 10000:GOTO 400
1680 REM NARROW TUNNEL
1690 IF NOT (L1= 57OR L1= 58)THEN 1770
1700 FOR Z3= 1TO T2
1710 IF Z3= 10THEN 1750
1720 IF S(Z3)= - 1THEN MS= 53:GOSUB 10000:GOTO 400
1750 NEXT Z3:GOTO 1180
1770 REM TROLL
1780 IF NOT (L1= 60AND D= 2OR L1= 61AND D= 6)THEN 1860
1790 ON T+ 1GOTO 1180,1800,1820,1840
1800 MS= 55:GOSUB 10000:GOTO 400
1820 MS= 56:GOSUB 10000:MS= 55:GOSUB 10000:GOTO 400
1840 T= 2:GOTO 1180
1860 IF NOT (L1= 73AND D= 1AND D2= 0)THEN 1890
1870 MS= 57:GOSUB 10000:GOTO 400
1890 IF NOT (L1= 82AND S(33)= L1AND D= 1)THEN 1930
1900 REM DRAGON
1910 MS= 51:GOSUB 10000:GOTO 400
1930 REM OTHERS
1935 GOTO 1180
1950 Z1= X:GOTO 2090
1980 RESTORE 9960
2000 FOR X= 1TO 35:READ D$
2020 IF MID$ (K$,X,1)= "1"THEN 940
2030 NEXT X
2040 RESTORE 2070
2050 FOR X= 1TO FN A(4):READ B$:NEXT
2060 PRINT B$:GOTO 400
2070 DATA "WHAT?","I DON'T UNDERSTAND","I DON'T KNOW THAT WORD","HUH!!!!"
2090 Z1= Z1- 109
2100 ON Z1GOTO 2120,2220,2300,2390,2570,2640,2680,2860,2930
2103 ON Z1- 9GOTO 3000,3080,3130,3290,3450,3590,3920,4160
2105 ON Z1- 17GOTO 4430,4630,4800,4950,5060,5190,5410,5560
2107 ON Z1- 25GOTO 5760,5810,5920,6000,6090,2040,2040,2040
2110 ON Z1- 33GOTO 6350,6410,8970,9080,9220,4490,9330
2115 GOTO 2040
2120 REM PLUGH
2130 IF L1< > 7THEN 2170
2140 IF S(35)= L1THEN S(35)= 0
2150 Z2= 26:GOTO 1180
2170 IF L1< > 26THEN 2200
2180 Z2= 7:GOTO 1180
2200 PRINT "NOTHING HAPPENS":GOTO 400
2220 REM XYZZY
2230 IF L1< > 7THEN 2270
2240 IF S(35)= L1THEN S(35)= 0
2250 Z2= 13:GOTO 1180
2270 IF L1< > 13THEN 2200
2280 Z2= 7:GOTO 1180
2300 REM PLOVER
2310 IF L1< > 26THEN 2360
2320 IF S(35)= L1THEN S(35)= 0
2330 IF S(10)= - 1THEN S(10)= L1
2340 Z2= 58:GOTO 1180
2360 IF L1< > 58THEN 2200
2370 Z2= 26:GOTO 1180
2390 REM CROSS
2400 IF L1< > 19THEN 2470
2410 IF B2= 0GOTO 1380
2440 D= 7:GOTO 1070
2470 IF L1< > 20THEN 2510
2480 IF B2= 0GOTO 1380
2490 D= 3:GOTO 1070
2510 IF L1< > 60THEN 2540
2520 D= 2:GOTO 1070
2540 IF L1< > 61THEN 2200
2550 D= 6:GOTO 1070
2570 REM CLIMB
2580 IF L1< > 50THEN 2200
2600 IF P1< 2THEN 2200
2620 Z2= 70:GOTO 1180
2640 REM JUMP
2650 IF L1< > 16AND L1< > 19AND L1< > 27THEN 2200
2660 MS= 4:GOSUB 10000:GOTO 9540
2680 REM FILL
2690 IF S(21)= - 1THEN 2730
2700 B$= "BOTTLE"
2710 PRINT "YOU DON'T HAVE THE "B$".":GOTO 400
2730 IF BO= 0THEN 2760
2740 PRINT "THE BOTTLE IS FULL ALREADY":GOTO 400
2760 IF L1< > 7AND L1< > 8AND L1< > 9AND L1< > 35AND L1< > 74AND L1< > 81THEN 2790
2770 BO= 1:S(16)= - 1:GOTO 2840
2790 IF L1= 49THEN 2830
2800 B$= "OIL"
2810 PRINT "I SEE NO "B$" HERE.":GOTO 400
2830 BO= 2:S(17)= - 1
2840 PRINT "THE BOTTLE IS NOW FILLED":GOTO 400
2860 REM EMPTY
2870 IF S(21)< > - 1THEN 2700
2875 IF BO= 0THEN PRINT "IT IS EMPTY":GOTO 400
2890 S(BO+ 15)= 0:BO= 0
2910 PRINT "EMPTIED":GOTO 400
2930 REM LOOK(L)
2940 IF L1< 13OR L1= 58OR (L= 1AND (S(18)= L1OR S(18)= - 1))THEN 2970
2950 MS= 45:GOSUB 10000:GOTO 400
2970 GOSUB 8050:GOSUB 6650:GOSUB 7800:GOTO 400
3000 REM LIGHT
3010 IF S(18)= - 1THEN 3040
3020 B$= "LAMP":GOTO 2710
3040 L= 1:B$= "ON"
3060 PRINT "THE LAMP IS NOW "B$
3065 GOTO 400
3080 REM OFF
3090 IF S(18)< > - 1GOTO 3020
3110 L= 0:B$= "OFF":GOTO 3060
3130 REM ENTER
3140 IF L1< > 6THEN 3180
3160 D= 3:GOTO 1070
3180 IF L1< > 68THEN 3220
3200 D= 3:GOTO 1070
3220 GET 4,L1;A$[10]
3240 FOR Z0= 1TO 10
3250 Z2= ASC (MID$ (A$,Z0))
3260 IF Z2> 0AND Z2< 101THEN 1240
3270 NEXT Z0:GOTO 2200
3290 REM LEAVE
3300 IF L1= 7THEN Z2= 6:GOTO 1180
3340 IF L1= 69THEN Z2= 68:GOTO 1180
3380 GET 4,L1;A$[10]
3390 FOR Z0= 1TO 10
3400 Z2= ASC (MID$ (A$,Z0))
3410 IF Z2> 0AND Z2< 101THEN 1180
3420 NEXT Z0:GOTO 2200
3450 REM INVENTORY
3460 RESTORE 9960
3470 Z0= 0:PRINT "YOU ARE CARRYING: ";
3490 FOR X= 1TO T2
3500 READ B$
3510 IF S(X)= - 1THEN Z0= Z0+ 1:PRINT B$:PRINT TAB( 18);
3540 NEXT X
3550 IF Z0= 0THEN PRINT "NOTHING."
3560 PRINT :GOTO 400
3590 REM GET
3600 IF MID$ (K$,47,1)= "1"THEN 3660
3610 GOSUB 8280:IF Z3< > 0AND Z3< = T2THEN Z1= Z3:GOTO 3620
3615 PRINT "TRY AN OBJECT !":GOTO 400
3620 IF S(Z1)= - 1THEN PRINT "YOU ALREADY GOT THE "D$:GOTO 400
3630 IF S(Z1)< > L1THEN B$= D$:GOTO 2810
3640 GOSUB 6880
3650 GOTO 400
3660 RESTORE 9960:FOR Z1= 1TO T2:READ D$
3670 IF S(Z1)< > L1THEN 3690
3680 GOSUB 6880
3690 NEXT Z1:GOTO 400
3920 REM DROP(DUMP)
3930 IF MID$ (K$,47,1)= "1"THEN 4000
3940 GOSUB 8280:IF Z8= 0OR Z8> T2GOTO 3615
3950 IF S(Z3)= 0THEN 2710
3955 IF S(Z3)< > - 1THEN 2710
3960 GOSUB 7380
3965 IF FG= 1GOTO 400
3970 PRINT B$" DROPPED.":S(Z3)= L1:OB= OB- 1:GOTO 400
4000 RESTORE 9960
4005 FOR Z3= 1TO T2
4010 READ B$
4020 IF S(Z3)< > - 1THEN 4140
4030 GOSUB 7380
4040 IF FG= 0THEN PRINT B$" DROPPED.":S(Z3)= L1:OB= OB- 1
4140 NEXT Z3
4150 GOTO 400
4160 REM THROW
4170 GOSUB 8280
4180 IF Z8= 0THEN PRINT "THROW WHAT!":GOTO 400
4210 IF S(Z3)< > - 1THEN 2710
4215 OB= OB- 1
4220 IF Z3< 16AND S(32)= L1THEN MS= 27:GOSUB 10000:S(Z3)= 0:T= 3:GOTO 400
4260 IF Z3= 27AND S(32)= L1THEN MS= 26:GOSUB 10000:S(27)= L1:GOTO 400
4300 IF NOT (Z3= 27AND S(35)= L1)THEN 4380
4310 IF RND (1)> .5THEN MS= 29:GOSUB 10000:GOSUB 8650:GOTO 4410
4360 MS= 30:GOSUB 10000:S(35)= 0:GOTO 4410
4380 IF S(35)= L1THEN GOSUB 8550
4400 PRINT "THROWN."
4410 S(Z3)= L1:GOTO 400
4430 REM ATTACK
4440 GOSUB 8280
4450 IF NOT (Z3= 33AND S(Z3)= L1AND L1= 82)THEN 4520
4470 PRINT "WITH WHAT ! YOUR BARE HANDS ?":GOTO 400
4490 IF L1< > 82THEN 2200
4500 MS= 69:GOSUB 10000:S(33)= 0:D1= 0:GOTO 400
4520 IF S(32)< > L1THEN 4560
4540 MS= 25:GOSUB 10000:GOTO 400
4560 IF NOT (Z3= 26OR Z3> 30)THEN 4600
4580 MS= 70:GOSUB 10000:GOTO 400
4600 MS= 71:GOSUB 10000:GOTO 400
4630 REM FEED
4635 IF MID$ (K$,96,1)= "1"GOTO 4800
4640 GOSUB 8280
4650 IF Z3< > 35THEN 4690
4670 MS= 24:GOSUB 10000:GOTO 400
4690 IF S(20)= - 1THEN 4720
4700 B$= "FOOD":GOTO 2710
4720 IF L1= 69THEN 4760
4730 PRINT "I CAN'T FEED IT.":MS= 23:GOSUB 10000:GOTO 400
4760 IF S(28)= L1THEN 7600
4770 B1= 1:S(20)= 0:MS= 6:GOSUB 10000:GOTO 400
4800 REM [EX-WATER] NOW FEED PLANT
4810 IF S(16)< > - 1THEN B$= "WATER":GOTO 2710
4840 IF L1< > 50THEN 2200
4850 ON P1+ 1GOTO 4860,4890,4920
4860 MS= 7:GOSUB 10000:P1= 1:S(16)= 0:BO= 0:GOTO 400
4890 MS= 8:GOSUB 10000:P1= 2:S(16)= 0:BO= 0:GOTO 400
4920 MS= 9:GOSUB 10000:P1= 0:S(16)= 0:BO= 0:GOTO 400
4950 REM LOCK
4960 IF L1< > 10AND L1< > 11THEN 2200
4990 IF S(19)= - 1GOTO 5020
5000 B$= "KEYS":GOTO 2710
5020 G= 0:GOTO 1290
5060 REM UNLOCK
5070 IF S(19)< > - 1THEN 5000
5080 IF L1= 10OR L1= 11THEN G= 1:PRINT "THE GRATE IS UNLOCKED":GOTO 400
5120 IF L1< > 69THEN 2200
5130 IF B1< 1THEN MS= 12:GOSUB 10000:GOTO 400
5160 IF C= 0THEN C= 1:B1= 2
5170 MS= 13:GOSUB 10000:GOTO 400
5190 REM FREE
5200 IF MID$ (K$,31,1)= "0"THEN 2200
5240 IF S(31)< > - 1THEN 2200
5250 S(31)= L1:B3= 0:PRINT "FREED."
5260 OB= OB- 1
5270 IF L1< > 22THEN 5350
5280 IF S< > 1THEN 400
5290 B$= "SNAKE"
5300 PRINT "THE LITTLE BIRD ATTACKS THE GREEN "B$" AND ";
5310 IF L1= 82THEN 5380
5320 PRINT "DRIVES IT OFF":S= 0:S(34)= 0:GOTO 400
5350 IF L1< > 82THEN 400
5360 B$= "DRAGON":GOTO 5300
5380 PRINT "GETS FRENCH-FRIED":S(31)= 0:GOTO 400
5410 REM WAVE
5420 IF MID$ (K$,23,1)= "0"GOTO 2200
5430 IF S(23)< > - 1THEN B$= "ROD":GOTO 2710
5460 IF L1< > 19AND L1< > 20THEN 2200
5500 IF B2= 0THEN PRINT "A CRYSTAL BRIDGE APPEARS":B2= 1:GOTO 400
5530 PRINT "THE BRIDGE VANISHES":B2= 0:GOTO 400
5560 REM OPEN
5570 GOSUB 8280
5580 IF Z3= 0THEN PRINT "OPEN WHAT?":GOTO 400
5610 IF Z3= 40THEN 5060
5620 IF S(Z3)< > L1GOTO 2810
5650 IF Z3< > 24THEN PRINT "I DON'T KNOW HOW TO OPEN A "B$:GOTO 400
5680 IF S(9)< > - 1GOTO 2200
5710 IF S(23)= 0THEN 2200
5740 S(7)= 43:S(24)= 0:S(30)= L1:MS= 17:GOSUB 10000:GOTO 400
5760 REM CLOSE
5770 GOSUB 8280
5780 IF Z3= 40THEN 4950
5790 GOTO 2200
5810 REM [EX-OIL] NOW 'OIL DOOR'
5820 IF MID$ (K$,17,1)= "0"THEN 2200
5830 IF S(17)< > - 1THEN B$= "OIL":GOTO 2810
5860 IF L1< > 73THEN 2200
5880 IF D2= 1THEN 2200
5890 D2= 1:S(17)= 0:BO= 0:MS= 19:GOSUB 10000:GOTO 400
5920 REM EAT
5930 IF MID$ (K$,20,1)= "0"THEN PRINT "I CANT EAT":GOTO 400
5950 IF S(20)= 0THEN D$= A$:GOTO 940
5960 OB= OB- 1
5980 PRINT "YUM-YUM":S(20)= 0:BO= 0:GOTO 400
6000 REM DRINK
6010 IF MID$ (K$,16,1)= "0"GOTO 2200
6040 IF S(16)= 0THEN D$= A$:GOTO 940
6060 OB= OB- 1
6070 PRINT "THAT WAS GOOD":S(17)= 0:BO= 0:GOTO 400
6090 REM FEEFIEFOEFOO
6100 IF L1< > 71THEN 2200
6130 IF S(8)= L1THEN PRINT "THE NEST HAS VANISHED!":S(8)= 0:GOTO 400
6180 IF S(8)< > 0THEN 2200
6190 S(8)= L1:PRINT "THE NEST HAS REAPPEARED!":GOTO 400
6350 REM QUIT(STOP),(END)
6360 PRINT "SAVE GAME ?";:GOSUB 9860
6380 IF Z0THEN 8970
6390 GOTO 9750
6410 REM SCORE
6420 GOSUB 6430:GOTO 400
6430 REM PRINT SCORE
6440 GOSUB 6510
6450 PRINT "YOUR SCORE IS NOW"SO".":PRINT "YOU HAVE EXPLORED"(Z9/ T1)* T1" % OF THE CAVE."
6460 RESTORE 6470
6470 DATA "BEGINNER","NOVICE","EXPERIENCED","ADVANCED","EXPERT"
6475 DATA "GRAND-MASTER","CHEAT"
6480 FOR Z0= 0TO INT ((SO- 1)/ 100):READ D$:NEXT
6485 PRINT "YOU HAVE HAD"TT" TURNS."
6488 PRINT "YOU HAVE TAKEN"PEEK (33211)* 60+ PEEK (33210)" MINUTES"
6490 PRINT "THAT MAKES YOU A "D$" ADVENTURER.":RETURN
6510 RESTORE 230:Z9= 0:SO= 0
6540 FOR Z0= 1TO 15:READ Z1
6560 IF Z1= 0THEN 6590
6570 IF V(Z1)THEN SO= SO+ 4* O(Z0)
6580 IF S(Z0)= 7THEN SO= SO+ 4* O(Z0)
6590 NEXT Z0
6600 SO= SO- (10* (G= 1))- (20* (S= 0))- (30* (D1= 0))- (30* (T= 0))- (20* (B1= 2))- (20* (B2= 1))- (20* (P1= 2))- (20* (D2= 1))- (20* (C= 1))
6610 FOR Z0= 1TO T1
6620 IF V(Z0)THEN SO= SO+ 1:Z9= Z9+ 1
6630 NEXT Z0:RETURN
6650 REM LIST ITEMS AT LOC L1
6680 FOR Z1= 1TO T2
6690 IF S(Z1)= L1THEN PRINT IT$(Z1)
6700 NEXT Z1
6740 GOSUB 8550
6750 GOSUB 8800
6760 PRINT :RETURN
6880 REM SPECIAL GET
6890 IF OB> 6THEN PRINT "YOU'RE CARRYING TOO MUCH":GOTO 400
6900 IF Z1= 24OR Z1= 30OR Z1> 31GOTO 2200
6910 IF Z1= 12AND C= 0THEN MS= 58:GOTO 10000
6920 IF Z1= 26AND B1< > 2THEN PRINT "DON'T BE SILLY!":RETURN
6930 IF Z1= 14AND D1= 1THEN MS= 59:GOTO 10000
6940 IF Z1= 16OR Z1= 17THEN PRINT "WHY NOT SAY 'FILL' ?":RETURN
6950 IF Z1= 22AND B3THEN S(31)= - 1:PRINT "BIRD AND ";
6960 IF Z1< > 31THEN 7010
6970 IF B3= 1THEN PRINT "CAGE AND ";:S(22)= - 1:GOTO 7020
6980 IF S(22)< > - 1THEN PRINT "GOT A CAGE ?":RETURN
6990 IF S(23)= - 1THEN MS= 37:GOTO 10000
7000 S(31)= - 1:B3= 1:GOTO 7020
7010 IF Z1= 21AND BOTHEN PRINT "CONTENTS AND THE ";:S(BO+ 15)= - 1
7020 PRINT D$" TAKEN":S(Z1)= - 1:OB= OB+ 1:RETURN
7380 REM SPECIAL DROP
7385 FG= 0
7390 IF Z3< > 31AND (Z3< > 22AND NOT (B3))THEN 7420
7400 S(31)= L1:S(22)= L1:B3= 1
7410 IF Z3= 31THEN PRINT "CAGE AND ";
7413 IF Z3= 22THEN PRINT "BIRD AND ";
7416 RETURN
7420 IF Z3= 21AND BO= 0THEN RETURN
7430 IF Z3= 21THEN PRINT "CONTENTS AND ";:S(15+ BO)= L1:RETURN
7460 IF Z3= 16OR Z3= 17THEN PRINT "TRY SAYING 'EMPTY'":FG= 1:RETURN
7470 IF Z3< > 6GOTO 7600
7560 IF S(28)= L1THEN MS= 60:GOSUB 10000:RETURN
7570 MS= 43:GOSUB 10000:S(6)= 0:S(29)= L1:FG= 1:RETURN
7600 IF Z3< > 26THEN RETURN
7610 IF L1< > 61OR T= 0OR T= 3THEN RETURN
7620 MS= 28:GOSUB 10000:S(32)= 0:T= 0:FG= 1:S(26)= 61:B1= 2:RETURN
7800 REM SITUATION DESCRIPTIONS
7840 IF L1= 10OR L1= 11THEN PRINT "THE GRATE IS ";:IF G= 1THEN PRINT "UN";
7845 IF L1= 10OR L1= 11THEN PRINT "LOCKED"
7860 IF (L1= 19OR L1= 20)AND B2THEN PRINT "A CRYSTAL BRIDGE SPANS THE FISSURE."
7880 IF L1= 26AND RND (1)> .3THEN PRINT "A HOLLOW VOICE SAYS 'PLUGH'."
7900 IF L1= 73AND D2= 0THEN MS= 57:GOSUB 10000
7920 IF L1= 60OR L1= 61AND T= 1THEN MS= 63:GOSUB 10000
7940 IF L1= 69AND B1= 0THEN MS= 64:GOSUB 10000
7950 IF L1= 69AND B1= 1THEN MS= 66:GOSUB 10000
7970 IF L1= 48OR L1= 50THEN MS= 47+ P1:GOSUB 10000
7980 RETURN
7990 REM PRINT LONG
8040 V(L1)= 1
8050 IF L1> 4THEN 8080
8060 MS= 200:GOSUB 10000:RETURN
8080 IF (L1> 88AND L1< 98OR L1= 99)THEN MS= 288:GOSUB 10000:RETURN
8110 MS= 200+ L1:GOSUB 10000:RETURN
8280 REM FIND FIRST ITEM CODE IN 'K' ARRAY
8290 Z8= 0:Z3= 0
8295 RESTORE 9960
8300 FOR Z5= 1TO 45
8310 READ B$
8320 IF MID$ (K$,Z5,1)= "0"THEN 8360
8330 Z8= Z8+ 1:D$= B$
8350 IF MID$ (K$,Z5,1)= "1"AND Z8= 1THEN Z3= Z5
8360 NEXT Z5
8370 B$= D$
8380 RETURN
8390 REM FIND FIRST ITEM AT ROOM
8400 RESTORE 9960
8410 FOR Z1= 1TO 47
8415 READ D$
8420 IF MID$ (K$,Z1,1)= "0"THEN RETURN
8440 NEXT :Z1= 0:RETURN
8550 REM DWARF
8560 IF D3< > 0THEN 8650
8570 IF L1< 13THEN RETURN
8590 IF RND (1)> .05THEN RETURN
8610 MS= 80:GOSUB 10000:S(27)= L1:D3= 1:RETURN
8650 IF L1< 13OR L1= 60THEN RETURN
8660 IF S(35)< > L1THEN 8770
8670 IF RND (1)> .5THEN RETURN
8680 MS= 32:GOSUB 10000
8710 IF RND (1)> .25THEN 8750
8730 PRINT "IT HITS !!!!!!!":GOTO 9540:REM 
8750 PRINT "IT MISSES !!!!!!!":RETURN :REM 
8770 IF RND (1)< .2THEN S(35)= L1
8780 RETURN
8800 REM PIRATE
8820 Z3= 0:IF L1< 13THEN RETURN
8840 FOR X= 1TO 15
8850 IF S(X)= - 1THEN Z3= Z3+ 1
8860 NEXT X
8870 IF Z3< FN A(4)THEN RETURN
8890 IF RND (1)> .05THEN RETURN
8920 MS= 33:GOSUB 10000
8930 FOR X= 1TO 15:IF S(X)= - 1THEN S(X)= 100
8940 NEXT X:RETURN
8970 REM SAVE
8980 FILE "T",8982:GOTO 8990
8982 FILE "E",A1,A2,A3
8984 IF A2= 8THEN PRINT "DISK FULL":GOTO 8990
8986 IF A2= 2THEN PRINT "BAD FILE NAME":GOTO 8990
8988 PRINT "HARDWARE ERROR"
8990 INPUT "FILENAME >";A$
8995 FILE "N",A$,1,300,1
9000 FILE "R",2,A$,1
9010 PUT 2,1;T1,T2,T3,L1,L2,G,BO,S,D1,D2,T,B1,B2,P1,D,L,C,D3,B3,RO
9020 FOR Q= 1TO T1
9025 PUT 2,1,89+ Q;CHR$ (V(Q))[1]
9030 NEXT
9035 FOR Q= 1TO T2
9040 PUT 2,1,194+ Q;CHR$ (S(Q)+ 1)[1]
9045 NEXT
9047 FILE "C",2
9050 PRINT "SAVED"
9055 IF MID$ (K$,143,1)= "1"THEN 9750
9060 GOTO 400
9080 REM LOAD
9082 IF COTHEN PRINT "ONE LOAD PER GAME":GOTO 400
9084 PLOT 27,4:PRINT "DIR":PLOT 27,27
9085 FILE "T",9090:GOTO 9110
9090 FILE "E",A1,A2,A3
9095 IF A2= 14THEN PRINT "FILE NOT FOUND":GOTO 9110
9100 IF A2= 2THEN PRINT "BAD FILE NAME":GOTO 9110
9105 PRINT "HARDWARE ERROR"
9110 INPUT "FILENAME >";A$
9120 FILE "R",2,A$,1
9125 GET 2,1;T1,T2,T3,L1,L2,G,BO,S,D1,D2,T,B1,B2,P1,D,L,C,D3,B3,RO
9130 FOR Q= 1TO T1
9135 GET 2,1,89+ Q;VQ$[1]:V(Q)= ASC (VQ$)
9140 NEXT
9145 FOR Q= 1TO T2
9150 GET 2,1,194+ Q;SQ$[1]:S(Q)= ASC (SQ$)- 1
9155 NEXT :FILE "C",2:CO= - 1:GOTO 400
9220 REM READ
9230 GOSUB 8280
9240 IF Z3< > 25GOTO 2200
9270 IF S(25)< > - 1THEN B$= "MAGAZINE":GOTO 2710
9300 PRINT "SORRY, BUT IT'S WRITTEN IN DWARVISH":GOTO 400
9330 REM BUG
9340 S(35)= 0:FOR Q= 1TO 35:S(ABS (S(Q)= 100)* Q)= - 1:NEXT :GOTO 400
9540 REM REINCARNATE
9550 RO= RO+ 1:X= CALL (19)
9560 ON ROGOTO 9580,9610,9740
9580 MS= 75:GOSUB 10000
9590 GOSUB 9860:GOTO 9630
9610 MS= 77:GOSUB 10000:GOTO 9580
9630 IF Z0= 0THEN 9750
9640 MS= 76:GOSUB 10000
9650 S(18)= 7:L= 0
9670 FOR X= 1TO T2
9680 IF S(X)= - 1THEN S(X)= L1
9690 NEXT X
9700 OB= 0
9710 L1= FN A(4):L2= L1:GOTO 300
9740 MS= 78:GOSUB 10000
9750 GOSUB 6430:END
9800 REM TOO LONG
9810 PRINT "THIS ADVENTURE HAS TAKEN TOO LONG.":GOTO 6350
9860 REM YES/NO
9865 POKE 33278,0
9870 IF PEEK (33278)= 0GOTO 9870
9875 PRINT
9880 A= PEEK (33278)
9890 IF A= 89THEN Z0= 1:RETURN
9900 IF A= 78THEN Z0= 0:RETURN
9910 PRINT "Y/N>";:GOTO 9860
9960 DATA "LARGE GOLD NUGGET","BARS OF SILVER"
9962 DATA "PRECIOUS JEWELRY","MANY COINS","SEVERAL DIAMONDS"
9964 DATA "FRAGILE MING VASE","GLISTENING PEARL"
9966 DATA "NEST OF GOLDEN EGGS","JEWEL ENCRUSTED TRIDENT"
9968 DATA "EGG-SIZED EMERALD","PLATINUM PYRAMID","GOLDEN CHAIN"
9970 DATA "RARE SPICES","PERSIAN RUG","TREASURE CHEST","WATER"
9972 DATA "OIL","BRASS LAMP","KEYS","FOOD","BOTTLE"
9974 DATA "WICKER CAGE","3-FOOT BLACK ROD","CLAM","MAGAZINE"
9976 DATA "BEAR","AXE","VELVET PILLOW","SHARDS OF POTTERY"
9978 DATA "OYSTER","BIRD","TROLL","DRAGON","SNAKE","DWARF"
9980 DATA "ROCK","STAIRS","STEPS","HOUSE","GRATE","STREAM"
9982 DATA "ROOM","BRIDGE","PIT","VOLCANO","ROAD","EVERYTHING"
10000 REM MESSAGE PRINTER
10010 IF MS= 288THEN PRINT "YOU ARE IN A MAZE OF TWISTY LITTLE CAVES, ALL ALIKE.":RETURN
10015 IF MS= 200THEN PRINT "YOU ARE IN A FOREST.":RETURN
10020 IF MS= 62THEN MS= MS+ INT (RND (1)* 5)/ 10
10025 POKE ST- 1,0:IF MS> = 200THEN POKE ST- 1,1
10030 MS$= MID$ (STR$ (MS),2)+ "     "
10040 FOR MS= STTO ST+ 3
10050 POKE MS,ASC (MID$ (MS$,MS- ST+ 1))
10060 NEXT MS
10065 PRINT :X= CALL (0):PRINT :PRINT :RETURN