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