10 REM ADVENTURE/2960 Version 1.1 11 REM This program is relatively bug-free, but one must realize 12 REM that Murphy's Law still prevails! 13 REM 14 REM ADVENTURE: Programmed in VME/K BASIC by Kev Ashley & 15 REM Robert Dunlop. Based on a version by Benjamin Moser. 16 REM The basic layout of the game was conceived by 17 REM Don Woods & Willie Crowther, both of M.I.T. 18 REM 20 PRINT "Adventure 1.1 on ";SEG$(DAT$,1,2);"-";SEG$(DAT$,3,4); 21 PRINT "-";SEG$(DAT$,6,7) 30 FILE *1: "ERCM09.ADVENT_ITEM" 31 FILE *2: "ERCM09.ADVENT_DESC" 32 FILE *3: "ERCM09.ADVENT_MESS" 33 FILE *4: "ERCM09.ADVENT_MOVE" 36 FILE *5: "GAMESAVE-MOD" 37 PRINT *5:" " 38 RESET *5 40 DIM H$(4),K(149),J(5),N$(46),O(15),S(35),T$(5),V(100),W(149),W$(149) 45 DIM Q(35) 50 REM ASK IF HE WANTS DIRECTIONS 55 LET Z5 = 1000 60 LET Z9 = 401 70 GOSUB 7620 80 GOSUB 9860 90 IF Z0 = 0 THEN 100 92 LET Z9 = 402 94 GOSUB 7620 96 PRINT " "; 97 LINPUT A$ 98 LET Z9 = 402.1 99 GOSUB 7620 100 REM 110 REM TOTAL NUMBER OF ROOMS, ITEMS, AND KEYWORDS 120 REM 130 LET L1 = L2 = INT(RND*4)+1 140 LET G = D2 = B1 = B2 = P1 = L = C = D3 = B3 = R0 = C0 = 0 150 LET B0 = S = D1 = T = 1 160 LET D0 = 2 162 LET T1 = 100 164 LET T2 = 35 166 LET T3 = 149 168 LET D = 0 170 MAT S = ZER 180 MAT V = ZER 185 LET C$ = "" 190 REM 200 REM READ IN REST OF ARRAYS 210 REM 220 GOSUB 9950 270 REM 280 REM COMMAND INPUT ROUTINE 290 REM 300 REM PRINT ROOM, ITEMS 310 REM IF IT'S DARK, DON'T LET HIM SEE ANYTHING 320 IF L1 < 13 THEN 350 321 IF L1 = 58 THEN 350 322 IF S(18) = -1 THEN 325 323 IF S(18) <> L1 THEN 330 325 IF L = 1 THEN 350 330 LET Z9 = 45 335 GOSUB 7620 340 GOTO 400 350 ON D0+1 GOTO 351,353,355 351 GOSUB 6780 352 GOTO 360 353 GOSUB 7990 354 GOTO 360 355 GOSUB 8180 360 LET V(L1) = 1 370 GOSUB 6650 380 GOSUB 7800 390 REM INPUT LOOP -- MULTIPLE COMMANDS, REMOVE JUNK CHARACTERS 400 IF LEN(C$) > 0 THEN 500 410 PRINT ">"; 420 LINPUT C$ 430 IF C$ = "" THEN 410 440 REM RESERVED FOR UPPER-CASE ROUTINE 450 FOR X = 1 TO LEN(C$) 460 LET Z$ = SEG$(C$,X,X) 470 IF Z$ = "." THEN 480 471 IF Z$ < "A" THEN 473 472 IF Z$ <= "9" THEN 480 473 LET C$ = SEG$(C$,1,X-1)&" "&SEG$(C$,X+1,LEN(C$)) 480 NEXT X 490 IF SEG$(C$,LEN(C$),LEN(C$)) = "." THEN 500 495 LET C$ = C$&"." 500 LET Z4 = POS(C$,".") 510 LET A$ = SEG$(C$,1,Z4-1) 515 LET C$ = SEG$(C$,Z4+1,LEN(C$)) 520 REM DEVELOPMENTAL JUMP OPTION 550 LET A$ = " "&A$&" " 790 MAT K = ZER 800 LET Z3 = 0 810 REM T3 = TOTAL NUMBER OF KEYWORDS 820 REM 830 FOR Z1 = 1 TO 131 840 LET B$ = " "&W$(Z1)&" " 850 IF POS(A$,B$) = 0 THEN 880 860 LET K(W(Z1)) = 1 870 REM KEYWORD Z1 FOUND 880 NEXT Z1 890 REM EXOTIC WORDS 900 FOR X = 36 TO 46 920 IF K(X) = 0 THEN 960 930 GOSUB 8390 940 PRINT "What do you want me to do with the ";B$;"?" 950 GOTO 410 960 NEXT X 970 FOR X = 110 TO T3 980 IF K(X) = 1 THEN 1950 990 NEXT X 1000 REM THEN IT'S A DIRECTION...? 1010 FOR D = 1 TO 10 1020 IF K(D+99) = 1 THEN 1070 1030 NEXT D 1040 REM COMMAND NOT A DIRECTION 1050 GOTO 1950 1060 REM CAN HE MOVE THAT WAY? 1070 RESET *4 1080 FOR Z1 = 1 TO L1 1090 LINPUT *4: A$ 1100 NEXT Z1 1110 REM A$ - ROOM DIRECTIONS 1120 LET Z2 = VAL(SEG$(A$,(D-1)*3+1,D*3)) 1130 IF Z2 = 255 THEN 1240 1140 IF Z2 < 1 THEN 1220 1145 IF Z2 > 254 THEN 1220 1150 REM NORMAL MOVING 1160 REM CHECK FOR SPECIAL MOVE CONDITIONS 1170 GOTO 1240 1180 LET L2 = L1 1190 LET L1 = Z2 1195 IF S(35) <> L2 THEN 1200 1197 LET S(35) = L1 1200 GOTO 9780 1210 GOTO 300 1220 LET Z9 = 1 1225 GOSUB 7620 1230 GOTO 400 1240 REM SPECIAL ROOM DIRECTIONS 1250 REM GRATE 1260 IF L1 = 10 THEN 1265 1261 IF L1 <> 11 THEN 1310 1262 IF D = 9 THEN 1270 1263 IF D = 3 THEN 1270 1264 GOTO 1310 1265 IF D = 10 THEN 1270 1266 IF D <> 5 THEN 1310 1270 REM IF GRATE IS OPEN (G=1) MOVE HIM 1280 IF G = 1 THEN 1180 1290 LET Z9 = 10 1295 GOSUB 7620 1300 GOTO 400 1310 REM CAN'T TAKE NUGGET UPSTAIRS 1320 IF L1 <> 17 THEN 1350 1321 IF D <> 9 THEN 1350 1322 IF S(1) <> -1 THEN 1350 1330 LET Z9 = 38 1335 GOSUB 7620 1340 GOTO 400 1350 REM CRYSTAL BRIDGE & FISSURE 1360 IF L1 = 19 THEN 1364 1361 IF L1 <> 20 THEN 1400 1362 IF D <> 3 THEN 1400 1363 GOTO 1370 1364 IF D <> 7 THEN 1400 1370 IF B2 = 1 THEN 1180 1380 LET Z9 = 3 1385 GOSUB 7620 1390 GOTO 400 1400 REM MT. KING & SNAKE 1410 IF L1 <> 22 THEN 1460 1412 IF D = 3 THEN 1460 1413 IF D = 9 THEN 1460 1420 IF S = 0 THEN 1180 1430 LET Z9 = 50 1440 GOSUB 7620 1450 GOTO 400 1460 REM BEDQUILT & RANDOM DIRECTIONS 1470 IF L1 <> 44 THEN 1580 1471 IF D = 3 THEN 1580 1472 IF D = 7 THEN 1580 1480 IF RND > .5 THEN 1510 1490 LET Z9 = 52 1495 GOSUB 7620 1500 GOTO 400 1510 REM 1520 REM ROOMS TO JUMP TO --- 1530 REM 33,37,45,92,76 1540 LET Z2 = J(INT(RND*5)+1) 1570 GOTO 1180 1580 REM WITT'S END 1590 IF L1 <> 39 THEN 1680 1600 REM SHOULD WE LET HIM OUT? 1610 IF RND < .1 THEN 1650 1620 REM NO!! 1630 GOTO 1490 1650 REM YES 1660 LET Z2 = 38 1670 GOTO 1180 1680 REM NARROW TUNNEL 1690 IF L1 <> 57 THEN 1695 1692 IF D = 3 THEN 1700 1695 IF L1 <> 58 THEN 1770 1697 IF D <> 7 THEN 1770 1700 FOR Z3 = 1 TO T2 1710 IF Z3 = 10 THEN 1750 1720 IF S(Z3) <> -1 THEN 1750 1730 LET Z9 = 53 1740 GOSUB 7620 1745 GOTO 400 1750 NEXT Z3 1760 GOTO 1180 1770 REM TROLL 1780 IF L1 = 60 THEN 1784 1781 IF L1 <> 61 THEN 1860 1782 IF D = 6 THEN 1790 1783 GOTO 1860 1784 IF D <> 2 THEN 1860 1790 ON T GOTO 1180,1800,1820,1840 1800 LET Z9 = 55 1805 GOSUB 7620 1810 GOTO 400 1820 LET Z9 = 56 1830 GOSUB 7620 1835 GOTO 1800 1840 LET T = 2 1850 GOTO 1180 1860 REM IRON DOOR 1865 IF L1 <> 82 THEN 1890 1866 IF D <> 1 THEN 1890 1867 IF D2 <> 0 THEN 1890 1870 LET Z9 = 57 1875 GOSUB 7620 1880 GOTO 400 1890 REM DRAGON 1900 IF L1 <> 82 THEN 1180 1910 IF S(33) <> L1 THEN 1180 1915 IF D <> 1 THEN 1180 1920 LET Z9 = 51 1925 GOSUB 7620 1930 GOTO 400 1940 REM OTHER COMMANDS 1950 FOR Z1 = 110 TO T3 1960 IF K(Z1) = 1 THEN 2090 1970 NEXT Z1 1980 REM ITEM BUT NO VERB? 1990 FOR X = 1 TO 35 2000 IF K(X) <> 1 THEN 2030 2010 LET B$ = N$(X) 2020 GOTO 940 2030 NEXT X 2040 REM EH? WHAT? 2050 LET X = INT(RND*4)+1 2060 PRINT H$(X) 2070 GOTO 400 2080 REM BRANCH TO CARRY OUT COMMAND 2090 LET Z1 = Z1-109 2100 IF Z1 > 9 THEN 2102 2101 ON Z1 GOTO 2120,2220,2300,2390,2570,2640,2680,2860,2930 2102 IF Z1 > 18 THEN 2104 2103 ON Z1-9 GOTO 3000,3080,3130,3290,3450,3590,3920,4160,4430 2104 IF Z1 > 26 THEN 2106 2105 ON Z1-18 GOTO 4630,4800,4950,5060,5190,5410,5560,5760 2106 IF Z1 > 34 THEN 2108 2107 ON Z1-26 GOTO 5810,5910,6000,6090,6230,6270,6310,6350 2108 IF Z1 > 40 THEN 2040 2109 ON Z1-34 GOTO 6400,8970,9080,9220,4490,9330 2110 GOTO 2040 2120 REM ***PLUGH*** 2130 IF L1 <> 7 THEN 2170 2140 IF S(35) <> L1 THEN 2150 2145 LET S(35) = 0 2150 LET Z2 = 26 2160 GOTO 1180 2170 IF L1 <> 26 THEN 2200 2180 LET Z2 = 7 2190 GOTO 1180 2200 LET Z9 = 2 2205 GOSUB 7620 2210 GOTO 400 2220 REM ***XYZZY*** 2230 IF L1 <> 7 THEN 2270 2240 IF S(35) <> L1 THEN 2250 2245 LET S(35) = 0 2250 LET Z2 = 13 2260 GOTO 1180 2270 IF L1 <> 13 THEN 2200 2280 LET Z2 = 7 2290 GOTO 1180 2300 REM ***PLOVER*** (CAN'T BRING EMERALD WITH HIM) 2310 IF L1 <> 26 THEN 2360 2320 IF S(35) <> L1 THEN 2330 2325 LET S(35) = 0 2330 IF S(10) <> -1 THEN 2340 2335 LET S(10) = L1 2340 LET Z2 = 58 2350 GOTO 1180 2360 IF L1 <> 58 THEN 2200 2370 LET Z2 = 26 2380 GOTO 1180 2390 REM *** CROSS *** 2400 IF L1 <> 19 THEN 2470 2410 IF B2 <> 0 THEN 2440 2420 LET Z9 = 3 2425 GOSUB 7620 2430 GOTO 400 2440 LET D = 7 2450 REM JUST GIVE NEW DIRECTION, USE MOVE ROUTINE 2460 GOTO 1070 2470 IF L1 <> 20 THEN 2510 2480 IF B2 = 0 THEN 2420 2490 LET D = 3 2500 GOTO 1070 2510 IF L1 <> 60 THEN 2540 2520 LET D = 2 2530 GOTO 1070 2540 IF L1 <> 61 THEN 2200 2550 LET D = 6 2560 GOTO 1070 2570 REM *** CLIMB *** 2580 IF L1 <> 50 THEN 2200 2590 REM CAN HE CLIMB BEANSTALK? 2600 IF P1 < 2 THEN 2200 2610 REM YES 2620 LET Z2 = 70 2630 GOTO 1180 2640 REM *** JUMP *** (STRICTLY SUICIDAL) 2650 IF L1 = 16 THEN 2660 2651 IF L1 = 19 THEN 2660 2652 IF L1 = 20 THEN 2660 2653 IF L1 <> 27 THEN 2200 2660 LET Z9 = 4 2665 GOSUB 7620 2670 GOTO 9550 2680 REM *** FILL *** 2690 IF S(21) = -1 THEN 2730 2700 LET B$ = "bottle" 2710 PRINT "You don't have the ";B$;"." 2720 GOTO 410 2730 IF B0 = 0 THEN 2760 2740 LET Z9 = 5 2745 GOSUB 7620 2750 GOTO 410 2760 IF L1 = 7 THEN 2770 2761 IF L1 = 8 THEN 2770 2762 IF L1 = 9 THEN 2770 2763 IF L1 = 35 THEN 2770 2764 IF L1 = 74 THEN 2770 2765 IF L1 <> 81 THEN 2790 2770 LET B0 = 1 2775 LET S(16) = -1 2780 GOTO 2840 2790 IF L1 = 49 THEN 2830 2800 LET B$ = "oil" 2810 PRINT "I see no ";B$;" here." 2820 GOTO 400 2830 LET B0 = 2 2835 LET S(17) = -1 2840 PRINT "The bottle is now filled." 2850 GOTO 400 2860 REM *** EMPTY *** 2870 IF S(21) = -1 THEN 2890 2880 GOTO 2700 2890 REM EMPTY BOTTLE (ASSUMED FULL) 2900 LET S(B0+15) = B0 = 0 2910 PRINT "Emptied." 2920 GOTO 400 2930 REM *** LOOK *** 2940 IF L1 < 13 THEN 2970 2941 IF L1 = 58 THEN 2970 2942 IF L <> 1 THEN 2950 2943 IF S(18) = L1 THEN 2970 2944 IF S(18) = -1 THEN 2970 2950 LET Z9 = 45 2955 GOSUB 7620 2960 GOTO 400 2970 GOSUB 8050 2980 GOSUB 6680 2990 GOTO 400 3000 REM *** LIGHT *** 3010 IF S(18) = -1 THEN 3040 3020 LET B$ = "lamp" 3030 GOTO 2710 3040 LET L = 1 3050 LET B$ = "on" 3060 PRINT "The lamp is now ";B$ 3070 GOTO 2940 3080 REM *** OFF (EXTINGUISH) *** 3090 IF S(18) = -1 THEN 3110 3100 GOTO 3020 3110 LET L = 0 3115 LET B$ = "off" 3120 GOTO 3060 3130 REM *** ENTER *** 3140 IF L1 <> 6 THEN 3180 3150 LET D = 3 3170 GOTO 1070 3180 IF L1 <> 68 THEN 3220 3190 REM TO BARREN ROOM 3200 LET D = 3 3210 GOTO 1070 3220 RESET *4 3230 FOR X = 1 TO L1 3231 LINPUT *4: A$ 3232 NEXT X 3240 FOR Z0 = 1 TO 10 3250 LET Z2 = VAL(SEG$(A$,(Z0-1)*3+1,Z0*3)) 3260 IF Z2 = 0 THEN 3270 3262 IF Z2 = L2 THEN 3270 3265 IF Z2 < 101 THEN 1150 3270 NEXT Z0 3280 GOTO 2200 3290 REM *** LEAVE *** 3295 LET L2 = L1 3300 IF L1 <> 7 THEN 3340 3310 REM LEAVE HOUSE 3320 LET D = 7 3330 GOTO 1070 3340 IF L1 <> 69 THEN 3220 3350 REM LEAVE BARREN ROOM 3360 LET D = 7 3370 GOTO 1070 3450 REM *** INVENTORY *** 3460 LET Z0 = 0 3480 PRINT "You are carrying: "; 3490 FOR X = 1 TO T2 3500 IF S(X) <> -1 THEN 3540 3510 PRINT N$(X);" "; 3520 LET Z0 = Z0+1 3540 NEXT X 3550 IF Z0 <> 0 THEN 3560 3555 PRINT "nothing." 3560 PRINT 3570 GOTO 400 3580 REM 3590 REM *** GET *** 3600 REM 3610 REM 3620 IF K(47) = 1 THEN 3680 3630 GOSUB 8280 3650 IF Z8 > 0 THEN 3680 3660 PRINT "Get what?" 3670 GOTO 2040 3680 FOR Z3 = 1 TO T2 3700 IF K(47) = 1 THEN 3730 3720 IF K(Z3) = 0 THEN 3900 3730 IF S(Z3) <> L1 THEN 3750 3740 GOTO 3790 3750 IF K(47) = 1 THEN 3900 3760 PRINT N$(Z3);" not here." 3770 GOTO 3900 3780 REM MUST CHECK FOR LEGALITY OF TAKING ITEM 3790 LET Z8 = 0 3800 FOR X = 1 TO T2 3810 IF S(X) <> -1 THEN 3820 3815 LET Z8 = Z8+1 3820 NEXT X 3830 IF Z8 < 7 THEN 3870 3840 REM CARRYING TOO MUCH 3850 LET Z9 = 54 3855 GOSUB 7620 3860 GOTO 410 3870 GOTO 6880 3880 LET S(Z3) = -1 3890 PRINT N$(Z3);" taken." 3900 NEXT Z3 3910 GOTO 400 3920 REM *** DROP *** 3930 IF K(47) = 1 THEN 4000 3940 GOSUB 8280 3950 IF Z8 > 0 THEN 3990 3970 PRINT "Drop what?" 3980 GOTO 400 3990 REM 4000 FOR Z3 = 1 TO T2 4030 IF K(47) = 1 THEN 4060 4040 IF K(Z3) <> 1 THEN 4140 4050 IF S(Z3) = 0 THEN 4140 4060 IF S(Z3) = -1 THEN 4100 4070 IF K(47) = 1 THEN 4140 4080 PRINT "You don't have the ";N$(Z3) 4090 GOTO 4140 4100 REM STILL NEED TO ELABORATE ON DROP (BIRD IN CAGE, BOTTLE) 4110 GOTO 7380 4120 PRINT N$(Z3);" dropped." 4130 LET S(Z3) = L1 4140 NEXT Z3 4150 GOTO 400 4160 REM *** THROW *** 4170 GOSUB 8280 4180 IF Z8 > 0 THEN 4210 4190 PRINT "Throw what?" 4200 GOTO 400 4210 IF S(Z3) <> -1 THEN 2710 4220 IF Z3 > 15 THEN 4260 4225 IF S(32) <> L1 THEN 4260 4230 REM THROW TREASURE TO TROLL 4240 LET Z9 = 27 4241 GOSUB 7620 4242 LET S(Z3) = 0 4243 LET T = 3 4250 GOTO 400 4260 IF Z3 <> 27 THEN 4380 4265 IF S(32) <> L1 THEN 4300 4270 REM TRYING TO BUTCHER TROLL? 4280 LET Z9 = 26 4285 GOSUB 7620 4290 LET S(27) = L1 4295 GOTO 400 4300 IF S(35) <> L1 THEN 4380 4310 REM TRYING TO KILL DWARF 4320 IF RND > .5 THEN 4360 4330 LET Z9 = 29 4335 GOSUB 7620 4340 GOSUB 8650 4350 GOTO 4410 4360 LET Z9 = 30 4365 GOSUB 7620 4370 LET S(35) = 0 4375 GOTO 4410 4380 REM NOTHING SPECIAL, JUST DROP ITEM 4390 IF S(35) <> L1 THEN 4400 4395 GOSUB 8550 4400 PRINT "Thrown." 4410 LET S(Z3) = L1 4420 GOTO 400 4430 REM *** ATTACK *** 4440 GOSUB 8280 4450 IF Z3 <> 33 THEN 4520 4451 IF S(33) <> L1 THEN 4520 4452 IF L1 <> 82 THEN 4520 4460 REM CAN HE KILL DRAGON? 4470 LET Z9 = 68 4475 GOSUB 7620 4480 GOTO 410 4490 IF L1 <> 82 THEN 2040 4500 LET Z9 = 69 4501 GOSUB 7620 4502 LET S(33) = D1 = 0 4510 GOTO 400 4520 REM TRYING TO MUNGE TROLL 4530 IF S(32) <> L1 THEN 4560 4540 LET Z9 = 25 4545 GOSUB 7620 4550 GOTO 400 4560 IF Z3 = 26 THEN 4570 4561 IF Z3 > 30 THEN 4600 4570 REM DANGEROUS TO ATTACK THESE 4580 LET Z9 = 70 4585 GOSUB 7620 4590 GOTO 400 4600 REM NOTHING TO ATTACK 4610 LET Z9 = 71 4615 GOSUB 7620 4620 GOTO 400 4630 REM *** FEED *** 4640 GOSUB 8280 4650 IF Z3 <> 35 THEN 4690 4660 REM CAN'T FEED DWARF 4670 LET Z9 = 24 4675 GOSUB 7620 4680 GOTO 400 4690 IF S(20) = -1 THEN 4720 4700 LET B$ = "food" 4710 GOTO 2710 4720 IF L1 = 69 THEN 4760 4730 PRINT "I can't feed it." 4740 LET Z9 = 23 4745 GOSUB 7620 4750 GOTO 400 4760 IF S(26) <> L1 THEN 4790 4765 LET B1 = 1 4770 LET S(20) = 0 4775 LET Z9 = 6 4780 GOSUB 7620 4785 GOTO 400 4790 PRINT "Feed what?" 4795 GOTO 410 4800 REM *** WATER *** 4810 IF S(16) = -1 THEN 4840 4820 LET B$ = "water" 4830 GOTO 2710 4840 IF L1 <> 50 THEN 2200 4850 ON P1+1 GOTO 4860,4890,4920 4860 LET Z9 = 7 4865 GOSUB 7620 4870 LET P1 = 1 4875 LET S(16) = B0 = 0 4880 GOTO 400 4890 LET Z9 = 8 4895 GOSUB 7620 4900 LET P1 = 2 4905 LET S(16) = B0 = 0 4910 GOTO 400 4920 LET Z9 = 9 4925 GOSUB 7620 4930 LET P1 = 0 4940 GOTO 400 4950 REM *** LOCK *** 4960 IF L1 = 10 THEN 4990 4970 IF L1 = 11 THEN 4990 4975 REM NOTHING LOCKABLE 4980 GOTO 2200 4990 IF S(19) = -1 THEN 5020 5000 LET B$ = "keys" 5010 GOTO 2710 5020 LET G = 0 5030 LET Z9 = 10 5035 GOSUB 7620 5040 GOTO 400 5050 LET S(Z3) = L1 5060 REM *** UNLOCK *** 5070 IF S(19) <> -1 THEN 5000 5080 IF L1 = 10 THEN 5090 5085 IF L1 <> 11 THEN 5120 5090 LET G = 1 5100 LET Z9 = 11 5105 GOSUB 7620 5110 GOTO 400 5120 IF L1 <> 69 THEN 2200 5130 IF B1 > 0 THEN 5160 5140 LET Z9 = 12 5150 GOSUB 7620 5155 GOTO 400 5160 IF C <> 0 THEN 5170 5165 LET C = 1 5168 LET B1 = 2 5170 LET Z9 = 13 5175 GOSUB 7620 5180 GOTO 400 5190 REM *** FREE *** 5200 REM CAN'T FREE ANYTHING BUT BIRD 5210 IF K(31) = 1 THEN 5240 5220 LET Z9 = 2 5225 GOSUB 7620 5230 GOTO 400 5240 IF S(31) <> -1 THEN 5220 5250 LET S(31) = L1 5255 LET B3 = 0 5260 PRINT "Freed." 5270 IF L1 <> 22 THEN 5350 5280 IF S <> 1 THEN 400 5290 LET B$ = "snake" 5300 PRINT "The little bird attacks the green ";B$;" and"; 5310 IF L1 = 82 THEN 5380 5320 PRINT " drives it off." 5330 LET S = S(34) = 0 5340 GOTO 400 5350 IF L1 <> 82 THEN 400 5360 LET B$ = "dragon" 5370 GOTO 5300 5380 PRINT " gets fried to a crisp." 5390 LET S(31) = 0 5400 GOTO 400 5410 REM *** WAVE *** 5420 IF K(23) = 0 THEN 2200 5430 IF S(23) = -1 THEN 5460 5440 LET B$ = "rod" 5450 GOTO 2710 5460 REM IS HE NEAR FISSURE? 5470 IF L1 = 19 THEN 5480 5475 IF L1 <> 20 THEN 2200 5480 REM YES 5490 ON B2+1 GOTO 5500,5530 5500 LET Z9 = 14 5505 GOSUB 7620 5510 LET B2 = 1 5520 GOTO 400 5530 LET Z9 = 15 5535 GOSUB 7620 5540 LET B2 = 0 5550 GOTO 400 5560 REM *** OPEN *** 5570 GOSUB 8280 5580 IF Z3 > 0 THEN 5610 5590 PRINT "Open "; 5600 GOTO 2050 5610 IF Z3 = 40 THEN 5070 5620 IF S(Z3) = L1 THEN 5650 5630 PRINT "I see no ";B$;" here." 5640 GOTO 400 5650 IF Z3 = 24 THEN 5680 5660 PRINT "I don't know how to open a ";B$;"." 5670 GOTO 400 5680 IF S(9) = -1 THEN 5710 5690 LET Z9 = 16 5695 GOSUB 7620 5700 GOTO 400 5710 IF S(Z3) = 0 THEN 2200 5720 REM HE'S OPENED CLAM, SO PRINT DESCRIPTION OF THIS 5730 REM AND PUT PEARL IN CUL-DE-SAC 5740 LET S(7) = 43 5741 LET S(24) = 0 5742 LET S(30) = L1 5743 LET Z9 = 17 5744 GOSUB 7620 5750 GOTO 400 5760 REM *** CLOSE *** 5770 GOSUB 8280 5780 IF Z3 = 40 THEN 4960 5790 LET Z9 = 18 5795 GOSUB 7620 5800 GOTO 400 5810 REM *** OIL *** 5820 IF K(17) = 0 THEN 2200 5830 IF S(17) = -1 THEN 5860 5840 LET B$ = "oil" 5850 GOTO 5630 5860 IF L1 <> 73 THEN 2200 5870 REM IS DOOR STILL RUSTED? 5880 IF D2 = 1 THEN 2200 5890 LET D2 = 1 5891 LET S(17) = B0 = 0 5892 LET Z9 = 19 5893 GOSUB 7620 5900 GOTO 400 5910 REM *** EAT *** 5920 IF K(20) = 1 THEN 5950 5930 LET Z9 = 20 5935 GOSUB 7620 5940 GOTO 410 5950 IF S(20) = -1 THEN 5980 5960 LET B$ = "food" 5970 GOTO 2710 5980 LET Z9 = 73 5981 GOSUB 7620 5982 LET S(20) = 0 5990 GOTO 400 6000 REM *** DRINK *** 6010 IF K(16) = 1 THEN 6040 6020 LET Z9 = 21 6025 GOSUB 7620 6030 GOTO 410 6040 IF S(16) = -1 THEN 6070 6050 LET B$ = "bottle of water" 6060 GOTO 2710 6070 LET Z9 = 22 6071 GOSUB 7620 6072 LET S(16) = 0 6073 LET B0 = 0 6080 GOTO 400 6090 REM *** FEE FIE FOE FOO *** 6100 IF L1 = 71 THEN 6130 6110 GOTO 2200 6130 IF S(8) <> L1 THEN 6180 6140 REM MAKE NEST VANISH 6150 LET Z9 = 79 6155 GOSUB 7620 6160 LET S(8) = 0 6170 GOTO 400 6180 IF S(8) = 0 THEN 2200 6190 LET S(8) = L1 6200 REM MAKE NEST RE-APPEAR 6210 LET Z9 = 81 6215 GOSUB 7620 6220 GOTO 400 6230 REM *** SHORT *** 6240 PRINT "Short descriptions." 6250 LET D0 = 0 6260 GOTO 400 6270 REM *** LONG *** 6280 PRINT "Long descriptions." 6290 LET D0 = 1 6300 GOTO 400 6310 REM *** BRIEF *** 6320 PRINT "OK, I'll only describe the room in detail the first time." 6330 LET D0 = 2 6340 GOTO 400 6350 REM *** QUIT *** 6360 PRINT "Save game?"; 6370 GOSUB 9860 6380 IF Z0 = 1 THEN 8970 6390 GOTO 9750 6400 REM *** SCORE *** 6410 GOSUB 6430 6420 GOTO 400 6430 REM PRINT OUT SCORE DATA 6440 GOSUB 6510 6450 PRINT "Your score is now ";S0;"." 6460 PRINT "You have explored ";(Z9/T1)*T1;"% of the cave." 6470 PRINT "That makes you a ";T$(INT(S0-1)/100+1);" adventurer." 6500 RETURN 6510 REM COMPUTE CURRENT SCORE 6520 LET Z9 = S0 = 0 6540 FOR Z0 = 1 TO 15 6560 IF Q(Z0) = 0 THEN 6590 6570 IF V(Q(Z0)) = 0 THEN 6580 6575 LET S0 = S0+4*O(Z0) 6580 IF S(Z0) <> 7 THEN 6590 6585 LET S0 = S0+4*O(Z0) 6590 NEXT Z0 6600 IF G = 0 THEN 6602 6601 LET S0 = S0+10 6602 IF S = 1 THEN 6604 6603 LET S0 = S0+20 6604 IF D1 = 1 THEN 6606 6605 LET S0 = S0+30 6606 IF T <> 0 THEN 6608 6607 LET S0 = S0+30 6608 IF B1 <> 2 THEN 6610 6609 LET S0 = S0+20 6610 IF B2 = 0 THEN 6612 6611 LET S0 = S0+20 6612 IF P1 <> 2 THEN 6614 6613 LET S0 = S0+20 6614 IF D2 = 0 THEN 6616 6615 LET S0 = S0+20 6616 IF C = 0 THEN 6618 6617 LET S0 = S0+20 6618 FOR Z0 = 1 TO T1 6620 IF V(Z0) = 0 THEN 6630 6624 LET S0 = S0+1 6628 LET Z9 = Z9+1 6630 NEXT Z0 6640 RETURN 6650 REM 6660 REM LIST ITEMS AT LOCATION L1 6670 REM 6680 RESET *1 6690 FOR Z1 = 1 TO T2 6700 LINPUT *1: A$ 6710 IF S(Z1) <> L1 THEN 6720 6715 PRINT A$ 6720 NEXT Z1 6730 REM CHECK FOR DWARF, PIRATE 6740 GOSUB 8560 6750 GOSUB 8800 6760 PRINT 6770 RETURN 6780 REM 6790 REM PRINT SHORT ROOM DESCRIPTION 6800 REM 6810 RESET *2 6820 FOR Z1 = 1 TO L1 6830 LINPUT *2: A$ 6840 NEXT Z1 6850 LET V(L1) = 1 6860 PRINT A$ 6870 RETURN 6880 REM SPECIAL "GET'S" 6890 IF Z3 = 24 THEN 6900 6891 IF Z3 = 30 THEN 6900 6892 IF Z3 < 32 THEN 6930 6900 REM CAN'T GET THESE FOR SOME REASON 6910 LET Z9 = 61 6915 GOSUB 7620 6920 GOTO 400 6930 IF Z3 <> 12 THEN 6970 6935 IF C = 1 THEN 6970 6940 REM CHAIN 6950 LET Z9 = 58 6955 GOSUB 7620 6960 GOTO 3900 6970 REM BEAR--IS HE FED? UNLOCKED? 6980 IF Z3 <> 26 THEN 7010 6985 IF B1 = 2 THEN 7010 6990 LET Z9 = 61 6995 GOSUB 7620 7000 GOTO 3900 7010 IF Z3 <> 14 THEN 7050 7015 IF D1 = 0 THEN 7050 7020 REM DRAGON & RUG 7030 LET Z9 = 59 7035 GOSUB 7620 7040 GOTO 3900 7050 IF Z3 = 16 THEN 7060 7055 IF Z3 <> 17 THEN 7090 7060 REM OIL & WATER -- DO SAME AS FILL 7065 IF L1 = 7 THEN 3880 7070 PRINT "Why not say 'fill'?" 7080 GOTO 3900 7090 REM TAKE BIRD, SINCE IT'S IN CAGE 7100 IF Z3 <> 22 THEN 7140 7101 IF B3 = 0 THEN 7140 7110 LET S(31) = -1 7120 PRINT "Bird and "; 7130 GOTO 3880 7140 IF Z3 <> 31 THEN 7310 7150 REM GETTING BIRD 7160 IF B3 <> 1 THEN 7210 7170 REM TAKE CAGE, SINCE BIRD IS IN IT 7180 PRINT "Cage and "; 7190 LET S(22) = -1 7200 GOTO 3880 7210 IF S(22) = -1 THEN 7240 7220 LET B$ = "cage" 7230 GOTO 2810 7240 IF S(23) = -1 THEN 7280 7250 REM OK TO TAKE BIRD 7260 LET S(31) = -1 7265 LET B3 = 1 7270 GOTO 3890 7280 REM ROD SCARES BIRD 7290 LET Z9 = 37 7295 GOSUB 7680 7300 GOTO 3900 7310 REM BOTTLE FULL? IF SO, GET CONTENTS 7320 IF Z3 <> 21 THEN 3880 7340 IF B0 = 0 THEN 3880 7350 PRINT "Contents and "; 7355 LET S(B0+15) = -1 7360 GOTO 3880 7370 REM SPECIAL "DROP'S" 7380 IF Z3 <> 31 THEN 7440 7390 REM BIRD IN CAGE 7400 LET S(31) = S(22) = L1 7405 LET B3 = 1 7410 IF Z3 <> 31 THEN 7420 7415 PRINT "Cage and "; 7420 IF Z3 <> 22 THEN 4120 7430 PRINT "Bird and "; 7435 GOTO 4120 7440 IF Z3 <> 22 THEN 7450 7445 IF B3 = 1 THEN 7400 7450 IF Z3 <> 21 THEN 7520 7460 REM BOTTLE 7470 IF B0 = 0 THEN 4120 7480 REM BOTTLE IS FULL, SO DROP CONTENTS TOO 7490 PRINT "Contents and "; 7500 LET S(B0+15) = L1 7510 GOTO 4120 7520 IF Z3 = 16 THEN 7530 7525 IF Z3 <> 17 THEN 7550 7530 PRINT "Try saying 'empty'?" 7540 GOTO 4140 7550 IF Z3 <> 6 THEN 4120 7560 IF S(18) = L1 THEN 7600 7570 REM GOODBYE FRAGILE VASE! 7580 LET Z9 = 43 7581 GOSUB 7620 7582 LET S(6) = 0 7583 LET S(29) = L1 7590 GOTO 400 7600 LET Z9 = 60 7605 GOSUB 7620 7610 GOTO 4120 7620 REM MESSAGE OUTPUT (FNA) 7630 IF Z9 = 2 THEN 7650 7640 IF Z9 <> 61 THEN 7660 7650 LET Z9 = Z9+INT(RND*5)/10 7660 GOATEND *3: 7780 7670 IF Z9 > Z5 THEN 7690 7680 RESET *3 7690 LINPUT *3: D$ 7700 IF SEG$(D$,1,1) <> "#" THEN 7690 7710 IF Z9 <> VAL(SEG$(D$,2,6)) THEN 7690 7720 LINPUT *3: D$ 7730 IF SEG$(D$,1,1) = "#" THEN 7760 7740 PRINT D$ 7750 GOTO 7720 7760 LET Z5 = VAL(SEG$(D$,2,6)) 7770 RETURN 7780 PRINT "ERROR - No message #";Z9;" in file 'AMESSAGE'" 7785 LET Z5 = 1000 7790 RETURN 7800 REM 7810 REM SITUATION DESCRIPTIONS 7820 REM 7830 REM GATE 7840 IF L1 = 10 THEN 7844 7842 IF L1 <> 11 THEN 7850 7844 LET Z9 = G+10 7846 GOSUB 7620 7850 REM CRYSTAL BRIDGE 7860 IF B2 = 0 THEN 7870 7862 IF L1 = 19 THEN 7866 7864 IF L1 <> 20 THEN 7870 7866 LET Z9 = 14 7868 GOSUB 7620 7870 REM PLUGH NOISES 7880 IF L1 <> 16 THEN 7890 7882 IF RND < .3 THEN 7890 7884 LET Z9 = 41 7886 GOSUB 7620 7890 REM IRON DOOR 7900 IF L1 <> 73 THEN 7910 7902 IF D2 = 1 THEN 7910 7904 LET Z9 = 57 7906 GOSUB 7620 7910 REM TROLL 7920 IF L1 = 60 THEN 7924 7922 IF L1 <> 61 THEN 7930 7924 IF T <> 1 THEN 7930 7926 LET Z9 = 63 7928 GOSUB 7620 7930 REM BEAR 7940 IF L1 <> 69 THEN 7960 7950 ON B1+1 GOTO 7952,7952,7960 7952 LET Z9 = 64+2*B1 7954 GOSUB 7620 7960 REM PLANT IN PIT 7970 IF L1 = 48 THEN 7974 7972 IF L1 <> 50 THEN 7980 7974 LET Z9 = 47+P1 7976 GOSUB 7620 7980 RETURN 7990 RETURN 8000 REM PRINT LONG DESCRIPTION FROM "AMESSAGE" FILE 8010 REM DESCRIPTION IS NORMALLY L1+200 EXCEPT FOR 8020 REM MAZE OR FOREST 8030 REM (SET V(L1)=1 SO AS NOT TO REPEAT LONG DESCRIPTION) 8040 LET V(L1) = 1 8050 IF L1 > 4 THEN 8080 8060 LET Z9 = 200 8070 GOTO 8130 8080 IF L1 < 88 THEN 8110 8081 IF L1 = 98 THEN 8110 8082 IF L1 = 100 THEN 8110 8090 LET Z9 = 288 8100 GOTO 8130 8110 REM NORMAL ROOM DESCRIPTION 8120 LET Z9 = 200+L1 8130 GOSUB 7620 8135 RETURN 8140 REM 8150 REM BRIEF DESCRIPTION (ONLY PRINT LONG DESCRIPTION 8160 REM IF HE HASN'T BEEN AT L1 BEFORE) 8170 REM 8180 REM ALWAYS GIVE LONG DESCRIPTION FOR FOREST & MAZE 8185 REM 8190 IF L1 < 5 THEN 8220 8191 IF L1 = 99 THEN 8220 8192 IF L1 > 97 THEN 8200 8193 IF L1 > 88 THEN 8220 8200 IF V(L1) = 1 THEN 6780 8210 REM HE HASN'T SEEN THIS ROOM YET, SO GIVE LONG DESCRIPTION 8220 LET V(L1) = 1 8230 GOTO 8000 8240 REM 8250 REM FETCH FIRST ITEM CODE IN K(1 to T2) 8260 REM Z8 = TOTAL # OF ITEMS FOUND IN LIST 8270 REM Z3 = ITEM CODE FIRST FOUND 8280 LET Z3 = Z8 = 0 8290 FOR X = 1 TO 45 8310 IF K(X) = 0 THEN 8360 8320 LET Z8 = Z8+1 8330 LET B$ = N$(X) 8340 IF K(X) <> 1 THEN 8360 8350 IF Z8 <> 1 THEN 8360 8355 LET Z3 = X 8360 NEXT X 8380 RETURN 8390 REM FIND FIRST ITEM IN ROOM 8400 FOR Z1 = 1 TO 47 8410 LET B$ = N$(Z1) 8420 IF K(Z1) = 1 THEN 8450 8430 NEXT Z1 8450 RETURN 8550 REM **** DWARF **** 8560 IF D3 <> 0 THEN 8640 8570 REM SHOULD DWARF GIVE AWAY AXE? 8580 IF L1 < 13 THEN 8630 8590 IF RND > .05 THEN 8630 8600 REM GIVE AWAY AXE 8610 LET Z9 = 80 8615 GOSUB 7620 8620 LET S(27) = L1 8625 LET D3 = 1 8630 RETURN 8640 REM SHOULD DWARF ATTACK? 8650 IF L1 < 13 THEN 8630 8660 IF S(35) <> L1 THEN 8770 8670 IF RND > .5 THEN 8760 8680 REM YES!! 8690 LET Z9 = 32 8695 GOSUB 7620 8700 REM DOES KNIFE KILL PLAYER? 8710 IF RND > .25 THEN 8750 8720 REM YES!!! 8730 PRINT "It gets you!!" 8740 GOTO 9540 8750 PRINT "It misses!" 8760 RETURN 8770 REM SHOULD WE PUT A DWARF HERE? 8780 IF RND > .2 THEN 8790 8785 LET S(35) = L1 8790 RETURN 8800 REM **** PIRATE **** 8810 REM FIRST, DOES HE HAVE ANYTHING WORTH STEALING? 8820 LET Z3 = 0 8830 IF L1 < 13 THEN 8960 8840 FOR X = 1 TO 15 8850 IF S(X) <> -1 THEN 8860 8855 LET Z3 = Z3+1 8860 NEXT X 8870 IF Z3 < INT(RND*4)+1 THEN 8960 8880 REM SHOULD WE RIP OFF HIS VALUABLES? 8890 IF RND < .05 THEN 8920 8900 LET Z9 = 34 8905 GOSUB 7620 8910 RETURN 8920 LET Z9 = 33 8930 GOSUB 7620 8940 FOR X = 1 TO 15 8944 IF S(X) <> -1 THEN 8950 8946 LET S(X) = 100 8950 NEXT X 8960 RETURN 8970 REM *** SAVE GAME *** 8980 PRINT "What do you want to call your save file?"; 8990 INPUT A$ 9010 GOSUB 12345 9015 IF Z9 = 1 THEN 9024 9020 PRINT A$;" is already in use." 9022 GOTO 8980 9024 RESET *5 9025 PRINT *5: "##"&A$ 9030 PRINT *5: T1;",";T2;",";T3;",";L1;",";L2;",";G;",";B0;","; 9032 PRINT *5: S;",";D1;",";D2;",";D0;",";T;",";B1;",";B2;","; 9034 PRINT *5: P1;",";D;",";L;",";C;",";D3;",";B3;",";R0;","; 9036 FOR I = 1 TO T2 9038 PRINT *5: S(I);","; 9040 NEXT I 9042 FOR I = 1 TO T1 9044 PRINT *5: V(I);","; 9046 NEXT I 9048 PRINT *5: "EOF" 9050 PRINT "Game saved as ";A$;"." 9060 IF K(143) = 1 THEN 9750 9070 GOTO 410 9080 REM *** LOAD OLD GAME *** 9090 IF C0 = 0 THEN 9120 9100 PRINT "You already have a loaded game!" 9110 GOTO 410 9120 PRINT "Game saved under what name?"; 9125 INPUT A$ 9130 GOSUB 12345 9140 IF Z9 = 0 THEN 9170 9150 PRINT "There is no file with name: ";A$;"." 9160 GOTO 410 9170 INPUT *5: T1,T2,T3,L1,L2,G,B0,S,D1,D2,D0,T,B1,B2,P1,D,L,C,D3,B3,R0 9180 MAT INPUT *5: S,V 9190 PRINT "Starting new game ..." 9200 LET C0 = 1 9210 GOTO 300 9220 REM *** READ THE MAGAZINE *** 9230 GOSUB 8280 9240 IF Z3 = 25 THEN 9270 9250 LET Z9 = 74 9255 GOSUB 7620 9260 GOTO 410 9270 IF S(25) = -1 THEN 9300 9280 LET B$ = "magazine" 9290 GOTO 2710 9300 REM OK, LET HIM READ IT 9310 LET Z9 = 403 9315 GOSUB 7620 9320 GOTO 400 9330 REM *** BUG *** 9340 PRINT "Please send all gripes to NST051 via TELL, thank-you." 9345 GOTO 410 9540 REM REINCARNATE HIM 9550 LET R0 = R0+1 9560 ON R0 GOTO 9580,9610,9740 9570 REM ASK HIM IF HE WANTS TO BE REINCARNATED 9580 LET Z9 = 75 9585 GOSUB 7620 9590 GOSUB 9860 9600 GOTO 9630 9610 LET Z9 = 77 9615 GOSUB 7620 9620 GOTO 9580 9630 IF Z0 = 0 THEN 9750 9640 LET Z9 = 76 9645 GOSUB 7620 9650 REM PUT HIM BACK AT THE HOUSE, RE-ARRANGE HIS STUFF 9660 LET S(18) = 7 9665 LET L = 0 9670 FOR X = 1 TO T2 9680 IF S(X) <> -1 THEN 9690 9685 LET S(X) = L1 9690 NEXT X 9695 LET S(27) = S(35) = D3 = 0 9700 LET L2 = L1 = INT(RND*4)+1 9710 REM WE'VE PUT THE LAMP BACK IN THE HOUSE AND OTHER ITEMS 9715 REM WHERE HE DIED 9720 GOTO 320 9730 REM THIRD DEATH -- END OF GAME 9740 LET Z9 = 78 9745 GOSUB 7620 9750 PRINT "Oh well ..." 9760 GOSUB 6430 9770 CHAIN "ERCM09.BASICBYE" 9780 REM **** PITS **** 9781 IF L1 < 13 THEN 1210 9782 IF L <> 1 THEN 9785 9783 IF S(18) = -1 THEN 1210 9784 IF S(18) = L1 THEN 1210 9785 REM IS HE GOING TO FALL INTO A PIT? 9786 IF L1 = 16 THEN 9840 9787 IF L1 = 17 THEN 9840 9788 IF L1 = 19 THEN 9840 9789 IF L1 = 20 THEN 9840 9790 IF L1 = 25 THEN 9840 9791 IF L1 = 47 THEN 9840 9794 IF L1 = 48 THEN 9840 9798 IF L1 = 59 THEN 9840 9800 IF L1 = 60 THEN 9840 9805 IF L1 = 61 THEN 9840 9810 IF L1 = 75 THEN 9840 9815 IF L1 = 75 THEN 9840 9820 IF L1 <> 98 THEN 1210 9830 REM HE FELL IN! 9840 LET Z9 = 44 9845 GOSUB 7620 9850 GOTO 9540 9860 REM *** SEEK A "YES" OR "NO" *** 9865 PRINT " "; 9870 INPUT A$ 9880 LET A$ = SEG$(A$,1,1) 9890 IF A$ <> "Y" THEN 9910 9900 LET Z0 = 1 9905 GOTO 9920 9910 IF A$ <> "N" THEN 9930 9915 LET Z0 = 0 9920 RETURN 9930 PRINT "YES or NO --"; 9940 GOTO 9870 9950 REM --- INITIALIZATION OF DATA ARRAYS --- 9951 FOR X = 1 TO T2 9952 READ S(X) 9953 LET Q(X) = S(X) 9954 NEXT X 9955 DATA 18,25,23,24,21,52,0,71,74,58,59,69,66,82,100,7,49,7,7 9956 DATA 7,7,12,13,40,38,69,0,46,0,0,15,60,82,22,0 9957 MAT READ O 9958 DATA 1,2,2,2,2,3,4,3,3,2,5,3,2,3,3 9959 FOR X = 1 TO 131 9960 READ W(X),W$(X) 9961 NEXT X 9962 DATA 1,GOLD,1,NUGGET,2,BARS,2,SILVER,3,JEWELRY,4,COINS 9963 DATA 5,DIAMONDS,6,MING,6,VASE,7,PEARL,8,EGGS,8,NEST 9964 DATA 9,TRIDENT,10,EMERALD,11,PLATINUM,11,PYRAMID,12,CHAIN 9965 DATA 13,SPICES,14,PERSIAN,14,RUG,15,TREASURE,15,CHEST 9966 DATA 16,WATER,17,OIL,18,LAMP,18,LANTERN,19,KEYS,20,FOOD,21,BOTTLE 9967 DATA 22,CAGE,23,ROD,23,WAND,24,CLAM,25,MAGAZINE,26,BEAR 9968 DATA 27,AXE,28,VELVET,28,PILLOW,29,SHARDS,30,OYSTER 9969 DATA 31,BIRD,32,TROLL,33,DRAGON,34,SNAKE,35,DWARF 9970 DATA 36,ROCK,36,BOULDER,37,STAIRS,38,STEPS,39,HOUSE 9971 DATA 39,BUILDING,40,GRATE,41,STREAM,42,ROOM,43,BRIDGE,44,PIT 9972 DATA 45,VOLCANO,46,ROAD,47,ALL,47,EVERYTHING 9973 DATA 100,N,100,NORTH,101,NE,102,E,102,EAST,103,SE 9974 DATA 104,S,104,SOUTH,105,SW,106,W,106,WEST,107,NW 9975 DATA 108,U,108,UP,109,D,109,DOWN 9976 DATA 110,PLUGH,111,XYZZY,112,PLOVER,113,CROSS,114,CLIMB 9977 DATA 115,JUMP,116,FILL,117,EMPTY,117,POUR,118,LOOK,118,L 9978 DATA 119,LIGHT,119,ON,120,EXTINGUISH,120,OFF,121,IN,121,ENTER 9979 DATA 122,LEAVE,122,OUT,123,INVENTORY,123,I,124,GET 9980 DATA 124,CATCH,124,TAKE,125,DROP,125,DUMP,126,THROW,127,ATTACK 9981 DATA 128,FEED,129,WATER,130,LOCK,131,UNLOCK,132,FREE 9982 DATA 132,RELEASE,133,WAVE,134,OPEN,135,CLOSE,136,OIL 9983 DATA 137,EAT,138,DRINK,139,FEE FIE FOE FOO,140,SHORT,141,LONG 9984 DATA 142,BRIEF,143,QUIT,143,STOP,143,END,144,SCORE,145,SAVE 9985 DATA 146,LOAD,147,READ,147,EXAMINE,148,YES,149,BUG,150,* 9986 MAT READ J 9987 DATA 33,37,45,92,76 9988 GOSUB 12440 9989 DATA What?,I don't understand.,I can't understand that! 9990 DATA I don't know that word! 9991 FOR X = 1 TO 46 9992 READ N$(X) 9993 NEXT X 9994 DATA large gold nugget,bars of silver,precious jewelry,many coins 9995 DATA several diamonds,fragile ming vase,glistening pearl 9996 DATA nest of golden eggs,jewel-encrusted trident,egg-sized emerald 9997 DATA platinum pyramid,golden chain,rare spices,persian rug 9998 DATA treasure chest,water,oil,brass lamp,keys,food,bottle 9999 DATA wicker cage,3-foot black rod,clam,magazine,bear,axe 10000 DATA velvet pillow,shards of pottery,oyster,bird,troll,dragon 10001 DATA snake,dwarf,rock,stairs,steps,house,grate,stream,room 10002 DATA bridge,pit,volcano,road 10003 FOR X = 1 TO 5 10004 READ T$(X) 10005 NEXT X 10006 DATA beginner,novice,experienced,advanced,expert 10007 RETURN 12345 REM *** SEARCH FILE *** 12350 RESET *5 12360 GOATEND *5: 12420 12370 LINPUT *5: B$ 12380 IF B$ = "##"&A$ THEN 12400 12390 GOTO 12370 12400 LET Z9 = 0 12410 GOTO 12430 12420 LET Z9 = 1 12430 RETURN 12440 FOR X = 1 TO 4 12450 READ H$(X) 12460 NEXT X 12470 RETURN RUN