10 DEFINT Z 20 DIM R(32,4),O(33,8) 30 LET R=1: REM **Starting location** 40 REM **Intitialize world** 50 GOSUB 5100 60 GOSUB 5000 70 GOSUB 7000 80 GOSUB 6200 90 GOSUB 6300 100 REM **Main Loop** 110 CLS:PRINT "You are in a ";R$(R);"." 120 PRINT "Exits are: "; 130 FOR X=1 TO 4 STEP 1 140 IF R(R,X)<>0 THEN PRINT MID$(C$(X),1,1);" "; 150 NEXT X 160 PRINT 170 PRINT "Here you see: "; 180 LET O=0 190 FOR X=1 TO 8 STEP 1 200 IF O(R,X)<>0 THEN LET O=1 210 NEXT X 220 IF O=0 THEN PRINT "Nothing." 230 FOR X=1 TO 8 STEP 1 240 IF O(R,X)=0 GOTO 260 250 LET R1=R:LET X1=X:GOSUB 6100:PRINT S$;" "; 260 NEXT X 270 PRINT:PRINT "------------------------------------------------------------------------" 280 IF F11=1 GOSUB 5400 290 IF R<>27 GOTO 370 300 FOR X=0 TO 9 STEP 1 310 IF I$(X)="CARD" EXIT 370 320 NEXT X 330 PRINT 340 PRINT "The librarian throws you out for forgetting your card!" 350 LET R=17:INPUT "Hit enter to continue"Q$ 360 GOTO 100 370 INPUT "Command"A$ 380 IF A$="QUIT" THEN END 390 LET A$=A$+" " 400 LET X1=1 410 W=LEN(A$) 420 LET P$(0)=MID$(A$,1,3) 430 FOR A1=1 TO W STEP 1 440 IF MID$(A$,A1,1)=" " GOSUB 470 450 NEXT A1 460 GOTO 500 470 LET P$(X1)=MID$(A$,A1+1,3) 480 LET X1=X1+1 490 RETURN 500 LET X1=X1-1 510 FOR I=0 TO X1 STEP 1 520 IF P$(I)="THE" THEN LET P$(I)="" 530 IF P$(I)="AND" THEN LET P$(I)="" 540 IF P$(I)="AT " THEN LET P$(I)="" 550 IF MID$(P$(I),1,1)="I" IF P$(I)<>"IMM" LET P$(I)="INV":EXIT 1000 560 IF MID$(P$(I),1,1)<>"E" GOTO 570 562 IF P$(I)="ENT" GOTO 570 564 IF P$(I)="EXA" GOTO 570 566 IF P$(I)="EAT" GOTO 570 568 LET P$(I)="EAS":EXIT 1000 570 IF MID$(P$(I),1,1)="W" IF P$(I)<>"WOM" IF P$(I)<>"WAT" LET P$(I)="WES":EXIT 1000 580 IF MID$(P$(I),1,1)="N" IF P$(I)<>"NEC" LET P$(I)="NOR":EXIT 1000 590 IF MID$(P$(I),1,1)<>"S" GOTO 720 600 IF P$(I)="SPA" GOTO 720 610 IF P$(I)="SAY" GOTO 720 620 IF P$(I)="SCI" GOTO 720 630 IF P$(I)="STR" GOTO 720 640 IF P$(I)="SHO" GOTO 720 650 IF P$(I)="SPO" GOTO 720 660 IF P$(I)="SCO" GOTO 720 670 IF P$(I)="SIG" GOTO 720 680 IF P$(I)="SAF" GOTO 720 690 IF P$(I)="SHA" GOTO 720 700 IF P$(I)="SWI" GOTO 720 710 LET P$(I)="SOU":EXIT 1000 720 IF P$(I+1)="TAP" LET P$(I+1)="DUC" 730 IF P$(I+1)="BOO" LET P$(I+1)="SCI" 740 IF P$(I+1)="MAC" LET P$(I+1)="A V" 750 IF P$(I+1)="STO" LET P$(I+1)="TOM" 760 IF P$(I+1)="DOO" LET P$(I+1)="IMM" 770 IF P$(I+1)="MAL" LET P$(I+1)="A D" 780 IF P$(I+1)="CON" LET P$(I+1)="GAS" 790 IF P$(I+1)="POO" LET P$(I+1)="A L" 800 IF P$(I+1)="SPO" LET P$(I+1)="* P" 810 IF P$(I+1)="NEC" LET P$(I+1)="* N" 820 IF P$(I+1)="CRO" LET P$(I+1)="* C" 830 IF P$(I+1)="DIA" LET P$(I+1)="* D" 840 IF P$(I+1)="MON" LET P$(I+1)="* M" 850 IF P$(I+1)="BAG" LET P$(I+1)="* M" 860 IF P$(I+1)="DOU" LET P$(I+1)="* S" 870 IF P$(I+1)="SPA" LET P$(I+1)="* S" 880 IF P$(I+1)="PAP" IF F6=0 LET P$(I+1)="FOL" 890 IF P$(I+1)="PLA" IF F8=0 LET P$(I+1)="DYI" 900 IF P$(I+1)="PLA" IF F8=1 LET P$(I+1)="A P" 910 IF P$(I+1)="CAB" IF F13=0 LET P$(I+1)="A L" 920 IF P$(I+1)="CAB" IF F13=1 LET P$(I+1)="A B" 930 NEXT I 1000 LET A=0 1005 FOR I=0 TO X1 STEP 1 1010 IF P$(I)<>"" LET B$(A)=P$(I) 1015 LET A=A+1 1020 NEXT I 1025 FOR D=0 TO A-1 STEP 1 1030 LET P$(D)=B$(D) 1035 NEXT D 1040 LET X1=A-1 1045 FOR I=0 TO X1 STEP 1 1050 FOR Z=1 TO 32 STEP 1 1055 IF P$(I)<>C$(Z) GOTO 1075 1060 LET J=1000+(Z*100) 1065 IF F11=1 PRINT "Calling routine:";J 1070 GOSUB J 1075 NEXT Z 1080 NEXT I 1085 INPUT "Hit enter to continue"Q$ 1090 GOTO 100 1100 REM **MOVE** 1110 LET X=1 1120 IF C$(X)=P$(I) THEN IF R(R,X)<>0 THEN GOTO 1170 1130 IF X<4 THEN LET X=X+1:GOTO 1120 1140 PRINT "That direction is not an exit!" 1150 WAIT(500) 1160 GOTO 1190 1170 LET R1=R(R,X) 1180 LET R=R1 1190 RETURN 1200 GOTO 1100 1300 GOTO 1100 1400 GOTO 1100 1500 REM **ENTER** 1510 IF R=16 IF P$(I+1)="MAN" GOTO 1530 1520 PRINT "You can't entr that!":RETURN 1530 FOR X=0 TO 9 STEP 1 1540 IF MID$(I$(X),1,3)="MOT" EXIT 1570 1550 NEXT X 1560 PRINT "You enter the manhole!":LET R=18:RETURN 1570 PRINT "The motorcycle hampers your effort.":RETURN 1600 REM **CLIMB** 1610 IF R=18 IF P$(I+1)="LAD" PRINT "You climb the ladder.":LET R=16:RETURN 1620 PRINT "You can't climb that!":RETURN 1700 REM **GET** 1702 FOR X=1 TO 8 STEP 1 1703 LET R1=R:LET X1=X:GOSUB 6100 1704 IF P$(I+1)=MID$(S$,1,3) EXIT 1710 1706 NEXT X 1708 PRINT "You can't get it!!":RETURN 1710 IF P$(I+1)="SAF" IF R=12 PRINT "Don't be funny, its steel and is too large!":RETURN 1712 IF P$(I+1)="A L" IF R=21 PRINT "The pool is a hole filled with water!":RETURN 1714 IF P$(I+1)="A L" IF R=28 PRINT "The cabinet is bolted to the floor!":RETURN 1716 IF P$(I+1)="IMM" IF R=1 PRINT "Think your superman? The door wont budge!":RETURN 1718 IF P$(I+1)="DIR" IF R=16 PRINT "The dirt runs through your fingers!":RETURN 1720 IF P$(I+1)="DIR" IF R=17 PRINT "The dirt runs through your fingers!":RETURN 1722 IF P$(I+1)="WOM" IF R=8 PRINT "She wiggles away from you.": RETURN 1724 IF P$(I+1)="SIG" IF R=5 PRINT "The sign wont budge!":RETURN 1726 IF P$(I+1)="SIG" IF R=24 PRINT "The sign wont budge!":RETURN 1728 IF P$(I+1)="SIG" IF R=30 PRINT "The sign wont budge!":RETURN 1730 IF P$(I+1)="TOM" IF R=6 PRINT "I wont defile a place of the dead!!!":RETURN 1732 IF P$(I+1)="DYI" IF R=32 PRINT "The plants roots go too deep! it wont budge.":RETURN 1734 IF P$(I+1)="A P" IF R=32 PRINT "The plants roots go too deep! it wont budge.":RETURN 1736 IF P$(I+1)="MAN" IF R=16 PRINT "You can't expect me to get a manhole!":RETURN 1738 IF P$(I+1)="CRA" IF R=31 PRINT "The crate wont budge!":RETURN 1740 IF P$(I+1)="A V" IF R=24 PRINT "The machine won't budge!":RETURN 1742 IF P$(I+1)="A V" IF R=26 PRINT "The machine won't budge!":RETURN 1744 IF P$(I+1)="BOD" IF R=6 PRINT "That's sick!!!":RETURN 1746 IF P$(I+1)="LAD" IF R=18 PRINT "The ladder won't move.":RETURN 1748 IF P$(I+1)="* N" GOTO 1772 1750 IF P$(I+1)="A B" IF R=28 PRINT "You can't get the broken cabinet!":RETURN 1752 FOR X=1 TO 8 STEP 1 1753 LET R1=R:LET X1=X:GOSUB 6100 1754 IF P$(I+1)=MID$(S$,1,3) EXIT 1758 1756 NEXT X:END 1758 FOR D=0 TO 9 STEP 1 1760 IF I$(D)<>"" GOTO 1768 1761 LET R1=R:LET X1=X:GOSUB 6100 1762 IF P$(I+1)<>MID$(S$,1,3) GOTO 1768 1764 LET I$(D)=S$:LET R1=R:LET X1=X:S$="":GOSUB 6000 1766 PRINT "Taken!":EXIT 1790 1768 NEXT D 1770 PRINT "No room in inventory.":RETURN 1772 FOR D=0 TO 9 STEP 1 1774 IF I$(D)="* CROSS" EXIT 1752 1776 NEXT D 1778 IF R=6 PRINT "The body springs to life and kills you!":END 1780 GOTO 1754 1790 RETURN 1800 REM **DROP** 1805 FOR X=0 TO 9 STEP 1 1810 IF MID$(I$(X),1,3)=P$(I+1) EXIT 1830 1815 NEXT X 1820 PRINT "You don't have it!" 1825 RETURN 1830 FOR D=1 TO 8 STEP 1 1835 LET R1=R:LET X1=D:GOSUB 6100 1840 IF S$="" EXIT 1860 1845 NEXT D 1850 PRINT "No room to drop it!" 1855 RETURN 1860 LET R1=R:LET X1=D:LET S$=I$(X):GOSUB 6000 1865 LET I$(X)="" 1870 PRINT "Dropped." 1875 RETURN 1900 REM **INVINTORY** 1910 CLS 1920 PRINT "Your inventory: " 1930 FOR X=0 TO 9 STEP 1 1940 IF I$(X)<>"" PRINT I$(X) 1950 NEXT X 1960 RETURN 2000 REM **HELP** 2005 LET X=INT((RND(6)+1)*10)+2000:GOTO X 2010 PRINT "You will receive no help from me mortal!":RETURN 2020 PRINT "Dig that weird tombstone.":RETURN 2030 PRINT "Watch out for the librarian!":RETURN 2040 PRINT "Try swimming.":RETURN 2050 PRINT "Don't operate the machine without doing a little reading first!":RETURN 2060 PRINT "Try examining things!":RETURN 2090 RETURN 2100 REM **EXAMIN** 2102 IF R=1 IF P$(I+1)="IMM" PRINT "On the door you see a button.":RETURN 2104 IF R=5 IF P$(I+1)="SIG" IF P$(I+1)<>"A V" PRINT "The sign has writing on it!": RETURN 2106 IF R=24 IF P$(I+1)="SIG" IF P$(I+1)<>"A V" PRINT "The sign has writing on it!": RETURN 2108 IF R=30 IF P$(I+1)="SIG" IF P$(I+1)<>"A V" PRINT "The sign has writing on it!": RETURN 2110 IF R=28 IF P$(I+1)="A L" PRINT "The cabinet is made of glass!": RETURN 2112 IF R=32 IF P$(I+1)="DYI" IF F1=0 PRINT "The plant is murmuring water...water.":RETURN 2114 IF R=31 IF P$(I+1)="CRA" PRINT "The crate looks like it can be moved.":RETURN 2116 IF R=6 IF P$(I+1)="TOM" PRINT "It has writing on it.":RETURN 2118 IF R=24 IF P$(I+1)="A V" PRINT "The machine has a lever on it.":RETURN 2120 IF R=26 IF P$(I+1)="A V" PRINT "The machine has a lever on it.":RETURN 2122 IF R=8 IF P$(I+1)="WOM" PRINT "She looks beautiful!":RETURN 2124 IF P$(I+1)="A D" GOTO 2146 2126 IF P$(I+1)="BOD" IF R=6 IF F2=0 PRINT "You find a necklace!":GOTO 2130 2128 GOTO 2166 2130 FOR X=1 TO 8 STEP 1 2132 LET R1=R:LET X1=X:GOSUB 6100 2134 IF S$="" EXIT 2140 2136 NEXT X 2138 PRINT "Remove an item from room and try again.":RETURN 2140 LET R1=R:LET X1=X:LET S$="* NECKLACE":GOSUB 6000 2142 LET F2=1 2144 RETURN 2146 FOR X=1 TO 8 STEP 1 2148 LET R1=R:LET X1=X:GOSUB 6100 2150 IF MID$(S$,1,3)=P$(I+1) EXIT 2156 2152 NEXT X 2154 GOTO 2158 2156 PRINT "The malt smells like burnt almonds.":RETURN 2158 FOR X=0 TO 9 STEP 1 2160 IF MID$(I$(X),1,3)=P$(I+1) EXIT 2156 2162 NEXT X 2164 PRINT "You don't see it!":RETURN 2166 PRINT "You see nothing special.":RETURN 2200 REM **PUSH** 2210 IF R=1 IF P$(I+1)="BUT" GOTO 2240 2220 PRINT "Nothing happens!" 2230 RETURN 2240 PRINT "The room tilt's and you are thrown into a new room." 2250 LET R=2 2260 RETURN 2300 REM **PULL* 2310 IF R=24 IF F3=1 IF P$(I+1)="LEV" PRINT "Everything goes blurry.":LET R=26:RETURN 2320 IF R=26 IF F3=1 IF P$(I+1)="LEV" PRINT "Everything goes black.":LET R=24:RETURN 2330 IF R=24 IF F3=0 IF P$(I+1)="LEV" PRINT "The machine blows up killing you!":END 2340 IF R=26 IF F3=0 IF P$(I+1)="LEV" PRINT "The machine blows up killing you!":END 2350 PRINT "You can't pull that!":RETURN 2400 REM **DIG** 2405 IF R=6 IF F4=0 GOTO 2420 2410 IF R=6 IF F4=1 PRINT "You can't dig anymore!":RETURN 2415 GOTO 2420 2420 FOR X=0 TO 9 STEP 1 2425 IF MID$(I$(X),1,3)="SHO" EXIT 2440 2430 NEXT X 2435 PRINT "You need a shovel to dig!":RETURN 2440 IF R=6 GOTO 2450 2445 PRINT "You find nothing.":RETURN 2450 PRINT "You find a body!" 2455 FOR X=1 TO 8 STEP 1 2460 LET R1=R:LET X1=X:GOSUB 6100 2465 IF S$="" EXIT 2480 2470 NEXT X 2475 PRINT "Remove an item from room and dig again!":RETURN 2480 LET R1=R:LET X1=X:LET S$="BODY":GOSUB 6000 2485 LET F4=1 2490 RETURN 2495 PRINT "You find nothing special.":RETURN 2500 REM **JUMP** 2505 IF R=16 IF P$(I+1)="DIR" GOTO 2520 2510 IF R=17 IF P$(I+1)="DIR" GOTO 2520 2515 PRINT "You can't jump that!":RETURN 2520 FOR X=0 TO 9 STEP 1 2525 IF MID$(I$(X),1,3)="MOT" EXIT 2540 2530 NEXT X 2535 PRINT "You need a motorcycle before you jump!":RETURN 2540 IF R=16 PRINT "You jump the dirtpile with the motorcycle!":R=17:RETURN 2545 IF R=17 PRINT "You jump the dirtpile with the motorcycle!":R=16:RETURN 2550 PRINT "Nothing happens!":RETURN 2600 REM **SCORE** 2610 LET T=0 2620 FOR X=1 TO 8 STEP 1 2630 LET R1=5:LET X1=X:GOSUB 6100 2640 IF MID$(S$,1,1)="*" LET T=T+1 2650 NEXT X 2660 IF T>=6 PRINT "You solved my adventure! My next one will be harder.":END 2670 PRINT "You have got ";T; " out of a possible 6 treasures so far.":RETURN 2700 REM **RUB** 2710 IF R=6 IF P$(I+1)="TOM" PRINT "You feel dizzy!":LET R=RND(31)+1:RETURN 2720 PRINT "Nothing happens.":RETURN 2800 REM **READ** 2802 IF R=6 IF P$(I+1)="TOM" PRINT "Kilroy was here!":RETURN 2804 IF R=5 IF P$(I+1)="SIG" PRINT "Drop treasures here and say score!":RETURN 2806 IF R=24 IF P$(I+1)="SIG" PRINT "Experimental time machine":RETURN 2808 IF R=30 IF P$(I+1)="SIG" PRINT "Look for more adventures by Thomas Ally!":RETURN 2810 IF P$(I+1)="PAP" IF F6=1 GOTO 2820 2812 IF P$(I+1)="FOL" IF F6=0 GOTO 2830 2814 IF P$(I+1)="SCI" IF F3<>1 GOTO 2840 2816 IF P$(I+1)="SCI" IF F3=1 GOTO 2840 2818 GOTO 2852 2820 FOR X=0 TO 9 STEP 1 2822 IF MID$(I$(X),1,3)="PAP" EXIT 2828 2824 NEXT X 2826 PRINT "You aren't carrying the piece of paper!":RETURN 2828 PRINT "It's the combination to a safe!":LET F5=1:RETURN 2830 FOR X=0 TO 9 STEP 1 2832 IF MID$(I$(X),1,3)="FOL" EXIT 2838 2834 NEXT X 2836 PRINT "You aren't carrying the piece of paper!":RETURN 2838 PRINT "You have to unfold it first!":RETURN 2840 FOR X=0 TO 9 STEP 1 2842 IF MID$(I$(X),1,3)="SCI" EXIT 2848 2844 NEXT X 2846 PRINT "You aren't carrying the scientific book!":RETURN 2848 IF F3=0 PRINT "The book tells how to operate a time machine.":LET F3=1:RETURN 2850 IF F3=1 PRINT "You already read the book.":RETURN 2852 PRINT "You can't read it!":RETURN 2900 REM **SAY** 2910 IF P$(I+1)="SCO" GOTO 2600 2920 PRINT "Nothing happens!" 2930 RETURN 3000 REM **UNFOLD** 3010 IF P$(I+1)="FOL" GOTO 3040 3020 IF P$(I+1)="PAP" PRINT "You already unfolded that!":RETURN 3030 GOTO 3090 3040 FOR X=0 TO 9 STEP 1 3050 IF MID$(I$(X),1,3)="FOL" EXIT 3080 3060 NEXT X 3070 PRINT "You aren't carrying the piece of paper!":RETURN 3080 PRINT "You unfold the piece of paper.":LET F6=1:LET I$(X)="PAPER":RETURN 3090 PRINT "You can't unfold that!":RETURN 3100 REM **SHAKE** 3105 IF P$(I+1)="GAS" GOTO 3115 3110 GOTO 3165 3115 FOR X=0 TO 9 STEP 1 3120 IF MID$(I$(X),1,3)="GAS" EXIT 3135 3125 NEXT X 3130 PRINT "You don't have the gas can.":RETURN 3135 FOR X=1 TO 8 STEP 1 3140 LET R1=R:LET X1=X:GOSUB 6100 3145 IF S$="" IF F7=0 PRINT "You found something!" 3150 LET R1=R:LET X1=X:LET S$="* SPANISH DOUBLOON":GOSUB 6000:LET F7=1:EXIT 3170 3155 NEXT X 3160 PRINT "You find nothing.":RETURN 3165 PRINT "Nothing happens." 3170 RETURN 3200 REM **EAT** 3210 IF P$(I+1)="A D" GOTO 3230 3220 GOTO 3280 3230 FOR X=0 TO 9 STEP 1 3240 IF MID$(I$(X),1,3)="A D" EXIT 3270 3250 NEXT X 3260 PRINT "You don't have the malt!":RETURN 3270 PRINT "The malt was laced with cyanide! You are dead.":END 3280 PRINT "You can't eat that!":RETURN 3300 REM **FILL** 3305 IF R=21 IF P$(I+1)="CAN" IF F8=0 GOTO 3320 3310 IF R=21 IF P$(I+1)="CAN" GOTO 3320 3315 GOTO 3345 3320 FOR X=0 TO 9 STEP 1 3325 IF MID$(I$(X),1,3)="CAN" EXIT 3335 3330 NEXT X 3335 IF F8=1 PRINT "The canteen is already full!":RETURN 3340 IF F8=0 PRINT "You fill the canteen from the pool!":LET F8=1:RETURN 3345 PRINT "You can't fill that!":RETURN 3400 REM **MOVE** 3405 IF R=31 IF P$(I+1)="CRA" IF F9=0 GOTO 3420 3410 IF R=1 IF P$(I+1)="IMM" PRINT "Can't you read? The door can't be moved!":RETURN 3415 GOTO 3460 3420 FOR X=1 TO 8 STEP 1 3425 LET R1=R:X1=X:GOSUB 6100 3430 IF S$="" EXIT 3445 3435 NEXT X 3440 PRINT "Remove an item from the room and try again.":RETURN 3445 LET R1=R:LET X1=X:LET S$="CARD": GOSUB 6000 3450 LET F9=1 3455 PRINT "You find something!":RETURN 3460 PRINT "You find nothing!":RETURN 3500 REM **SWIM** 3510 IF R=21 PRINT "You swim down.":LET R=25:RETURN 3520 IF R=25 PRINT "You swim up.":LET R=21:RETURN 3530 PRINT "You can't swim here!":RETURN 3600 REM **TAPE** 3605 IF R=28 IF P$(I+1)="A L" IF F10=0 GOTO 3620 3610 IF R=28 IF P$(I+1)="A L" IF F10=1 PRINT "The glass cabinet is already taped up!":RETURN 3615 GOTO 3645 3620 FOR X=0 TO 9 STEP 1 3625 IF MID$(I$(X),1,3)="DUC" EXIT 3640 3630 NEXT X 3635 PRINT "You aren't carrying the duct tape!":RETURN 3640 IF R =28 PRINT "You tape the glass cabinet with the duct tape.":LET F10=1:RETURN 3645 PRINT "You can't tape that!":RETURN 3700 REM **BREAK** 3705 IF R=28 IF P$(I+1)="A L" IF F10=1 GOTO 3720 3710 IF R=28 IF P$(I+1)="A L" IF F10=0 PRINT "The flying glass cuts you to pieces!":END 3715 GOTO 3795 3720 FOR X=1 TO 8 STEP 1 3725 LET R1=R:LET X1=X:GOSUB 6100 3730 IF MID$(S$,1,3)="A L" EXIT 3750 3735 NEXT X 3740 PRINT "You can't break it!":RETURN 3750 FOR D=1 TO 8 STEP 1 3755 LET R1=R:LET X1=D:GOSUB 6100 3760 IF S$="" EXIT 3775 3765 NEXT D 3770 PRINT "Remove an item from the room and try again.":RETURN 3775 LET R1=R:LET X1=X:LET S$="A BROKEN CABINET" 3780 LET F13=1 3785 LET R1=R:LET X1=D:LET S$="* CROSS":GOSUB 6000 3790 PRINT "You find something!":RETURN 3795 PRINT "You can't break that!":RETURN 3800 REM **POUR** 3802 FOR X=0 TO 9 STEP 1 3804 IF I$(X)="CANTEEN" EXIT 3810 3806 NEXT X 3808 PRINT "You don't have the canteen!":RETURN 3810 IF R=32 IF F8=1 GOTO 3816 3812 IF R<>32 IF F8=1 GOTO 3842 3814 PRINT "The canteen is empty!":RETURN 3816 FOR X=1 TO 8 STEP 1 3818 LET R1=R:LET X1=X:GOSUB 6100 3820 IF MID$(S$,1,3)="DYI" LET R1=R:LET X1=X:LET S$="A PLANT":GOSUB 6000 3822 NEXT X 3824 FOR X=1 TO 8 STEP 1 3826 LET R1=R:LET X1=X:GOSUB 6100 3828 IF S$="" IF F12=0 EXIT 3834 3830 NEXT X 3832 PRINT "You already watered the plant.":RETURN 3834 PRINT "For your kindness you are rewarded!" 3836 LET F8=0:LET F1=1 3838 LET R1=R:LET X1=X:LET S$="SHOVEL":GOSUB 6000 3840 LET F12=1:RETURN 3842 PRINT "The ground becomes wet." 3844 LET F8=0 3846 RETURN 3900 REM **WATER** 3905 IF R=32 IF P$(I+1)="DYI" GOTO 3915 3910 IF R=32 IF P$(I+1)="A P" PRINT "you Already watered the dying plant!":RETURN 3915 FOR X=0 TO 9 STEP 1 3920 IF I$(X)="CANTEEN" EXIT 3935 3925 NEXT X 3930 PRINT "You don't have the canteen!":RETURN 3935 IF R=32 IF F8=1 GOTO 3816 3940 IF R<>32 IF F8=1 GOTO 3842 3945 PRINT "The canteen is empty!":RETURN 4000 REM **OPEN** 4002 IF R=12 IF F5=1 IF F15=0 IF P$(I+1)="SAF" GOTO 4042 4004 IF R=31 IF F14=0 IF P$(I+1)="CRA" GOTO 4016 4008 IF R=31 IF F14=1 P$(I+1)="CRA" PRINT "You opened the crate already!":RETURN 4010 IF R=12 IF F5=0 IF P$(I+1)="SAF" PRINT "You don't know the combination!":RETURN 4012 IF R=12 IF F15=1 IF P$(I+1)="SAF" PRINT "You already opened the safe!":RETURN 4014 PRINT "You can't open that.":RETURN 4016 FOR X=0 TO 9 STEP 1 4018 IF MID$(I$(X),1,3)="PRY" EXIT 4024 4020 NEXT X 4022 PRINT "You don't have anything to pry with!":RETURN 4024 FOR X=1 TO 8 STEP 1 4026 LET R1=R:LET X1=X:GOSUB 6100 4028 IF S$= "" EXIT 4034 4030 NEXT X 4032 PRINT "Remove an item from the room and try again.":RETURN 4034 LET R1=R: LET X1=X:LET S$="CANTEEN":GOSUB 6000 4036 PRINT "You find something!" 4038 LET F14=1 4040 RETURN 4042 FOR X=1 TO 8 STEP 1 4044 LET R1=R:LET X1=X:GOSUB 6100 4046 IF S$="" EXIT 4052 4048 NEXT X 4050 PRINT "Remove an item from the room and try again.":RETURN 4052 LET R1=R:LET X1=X:LET S$="* MONEYBAG":GOSUB 6000 4054 PRINT "You find something!" 4056 LET F15=1 4058 RETURN 4100 REM **KISS* 4110 IF R=8 IF P$(I+1)="WOM" PRINT "She stabbed you in the back! your dead!":END 4120 PRINT "Geesh, you sure kiss alot!":RETURN 4200 REM **Transport** 4210 LET X=FVAL(P$(I+1)) 4220 IF X<1 PRINT "Range is 1 through 32. No move made":RETURN 4230 IF X>32 PRINT "Range is 1 through 32. No move made":RETURN 4240 LET R=X 4250 RETURN 5000 CLS 5010 PRINT "**********************************************************************" 5020 PRINT "* Escape From Atlantis by Fly";TAB(69);"*" 5030 PRINT "* Version 5.03";TAB(69);"*" 5040 PRINT "*";TAB(69);"*" 5050 PRINT "* Updated for RCA 1802 Super BASIC - By D.T.Runkle";TAB(69);"*" 5060 PRINT "**********************************************************************" 5070 PRINT 5080 RETURN 5100 REM **Clear all flags and reset vars** 5110 LET P=1:REM **Next array pointer** 5120 LET F1=0:REM **Water plant flag** 5130 LET F2=0:REM **Necklace flag** 5140 LET F3=0:REM **Text book flag** 5150 LET F4=0:REM **Dead body flag** 5160 LET F5=0:REM **Combo for safe flag** 5170 LET F6=0:REM **Unfolded paper flag** 5180 LET F7=0:REM **Found Doubloon flag** 5190 LET F8=0:REM **Fill can flag** 5200 LET F9=0:REM **Found lock card flag** 5210 LET F10=0:REM **Taped cabinet flag** 5220 LET F11=1:REM **1 enables debug screens** 5230 LET F12=0:REM **found shovel flag** 5240 LET F13=0:REM **Broken Cabinet flag** 5250 LET F14=0:REM **Open crate flag** 5260 LET F15=0:REM **Found money belt flag** 5270 LET T=0:REM **Total score** 5280 REM **Clear string arrays** 5290 FOR X=0 TO 9 STEP 1 5300 LET I$(X)="" 5310 LET P$(X)="" 5320 LET B$(X)="" 5330 NEXT X 5340 RETURN 5400 REM **Display debug game status** 5410 PRINT " F1=";F1;" - Water plant flag";TAB(30);" F2=";F2;" - Necklace flag" 5420 PRINT " F3=";F3;" - Have text book";TAB(30);" F4=";F4;" - Dead body" 5430 PRINT " F5=";F5;" - Have safe combination";TAB(30);" F6=";F6;" - Paper unfolded" 5440 PRINT " F7=";F7;" - Found Doubloon";TAB(30);" F8=";F8;" - Full canteen flag" 5450 PRINT " F9=";F9;" - Found library card";TAB(30);"F10=";F10;" - Cabinet glass taped" 5460 PRINT "F11=";F11;" - Debug mode";TAB(30);"F12=";F12;" - Found Shovel" 5470 PRINT "F13=";F13;" - Broken cabinet";TAB(30);"F14=";F15;" - Crate is open" 5480 PRINT "F15=";F15;" - Found money bag";TAB(30);" P=";P;" - Current string pointer" 5490 PRINT:PRINT "Room# =";R;TAB(30);"Mapping: ",R(R,1),R(R,2),R(R,3),R(R,4) 5500 PRINT "------------------------------------------------------------------------" 5510 RETURN 6000 REM **Object table save LET R1=r:LET X1=x:LET S$="x": GOSUB 6000** 6010 IF O(R1,X1)<>0 THEN LET O$(O(R1,X1))=S$:GOTO 6050 6020 LET O$(P)=S$ 6030 LET O(R1,X1)=P 6040 LET P=P+1 6050 RETURN 6100 REM **Object table read LET R1=r: LET X1=x:GOSUB 6100** 6110 IF O(R1,X1)=0 THEN LET S$="":GOTO 6130 6120 LET S$=O$(O(R1,X1)) 6130 RETURN 6200 REM **Intitialize the Object table** 6210 PRINT "INITIALIZE OBJECT:"; 6220 FOR Y=1 TO 33 STEP 1 6230 FOR X=1 TO 8 STEP 1 6240 LET O(Y,X)=0 6250 NEXT X 6260 PRINT "#"; 6270 NEXT Y 6280 PRINT "-DONE" 6290 RETURN 6300 REM **Build object** 6310 PRINT " BUILD OBJECT:"; 6320 FOR Z=1 TO 26 STEP 1 6330 READ R1,X1,S$ 6340 GOSUB 6000 6350 PRINT "#"; 6360 NEXT Z 6370 PRINT "-DONE" 6380 RETURN 7000 REM **BUILD WORLD** 7010 REM **BUILD COMMAND ARRAY** 7020 PRINT "BUILDING COMMANDS:"; 7030 FOR X=1 TO 32 STEP 1 7040 READ C$(X) 7050 PRINT "#"; 7060 NEXT X 7070 PRINT "-DONE" 7080 PRINT " BUILDING ROOMS:"; 7090 FOR D=1 TO 32 STEP 1 7100 FOR X=1 TO 4 STEP 1 7110 READ R(D,X) 7120 NEXT X 7130 PRINT "#"; 7140 NEXT D 7150 PRINT "-DONE" 7160 PRINT " BUILDING OBJECTS:"; 7170 FOR X=1 TO 32 STEP 1 7180 READ R$(X) 7190 PRINT "#"; 7200 NEXT X 7210 PRINT "-DONE" 7220 RETURN 7300 REM **COMMAND DATA** 7310 DATA "NOR","SOU","EAS","WES","ENT","CLI","GET","DRO","INV","HEL","EXA" 7320 DATA "PUS","PUL","DIG","JUM","SCO","RUB","REA","SAY","UNF","SHA","EAT" 7330 DATA "FIL","MOV","SWI","TAP","BRE","POU","WAT","OPE","KIS","TRA" 7400 REM **ROOM DATA** 7410 DATA 0,0,0,0 7420 DATA 3,0,0,0 7430 DATA 0,2,4,5 7440 DATA 6,0,7,3 7450 DATA 0,0,3,0 7460 DATA 0,4,0,0 7470 DATA 9,31,8,4 7480 DATA 0,0,0,7 7490 DATA 11,7,29,10 7500 DATA 0,0,9,0 7510 DATA 0,9,0,12 7520 DATA 13,0,11,0 7530 DATA 14,12,0,28 7540 DATA 15,13,0,0 7550 DATA 0,14,16,0 7560 DATA 0,0,0,15 7570 DATA 27,0,0,0 7580 DATA 19,0,0,0 7590 DATA 0,18,22,20 7600 DATA 0,21,19,0 7610 DATA 20,0,0,0 7620 DATA 23,0,0,19 7630 DATA 24,22,0,0 7640 DATA 0,23,0,0 7650 DATA 0,0,0,0 7660 DATA 0,0,0,0 7670 DATA 0,17,0,0 7680 DATA 0,0,13,0 7690 DATA 0,0,30,9 7700 DATA 0,32,0,29 7710 DATA 7,0,0,0 7720 DATA 30,0,0,0 7800 REM **LOCATIONS** 7810 DATA "docking bay","malt shop","street","street","hotel","graveyard" 7820 DATA "street","geisha house","street","street","street","bank","street" 7830 DATA "street","street","street","gas station","underground complex" 7840 DATA "underground complex","underground complex","underground complex" 7850 DATA "underground complex","underground complex","underground complex" 7860 DATA "bottom of a pool","slimy cave","library","high school","street" 7870 DATA "street","warehouse","greenhouse" 7900 REM **OBJECTS** 7910 DATA 1,1,"IMMOVABLE DOOR" 7920 DATA 2,1,"A DELICIOUS LOOKING MALT" 7930 DATA 2,2,"* PLATINUM SPOON" 7940 DATA 5,1,"SIGN" 7950 DATA 6,1,"TOMBSTONE" 7960 DATA 7,1,"MOTORCYCLE" 7970 DATA 8,1,"WOMAN" 7980 DATA 10,1,"FOLDED PIECE OF PAPER" 7990 DATA 12,1,"SAFE" 8000 DATA 16,1,"MANHOLE" 8010 DATA 16,2,"DIRTPILE" 8020 DATA 17,1,"GAS CONTAINER" 8030 DATA 17,2,"DIRTPILE" 8040 DATA 18,1,"LADDER" 8050 DATA 21,1,"A LARGE POOL" 8060 DATA 22,1,"DUCT TAPE" 8070 DATA 24,1,"SIGN" 8080 DATA 24,2,"A VERY LARGE MACHINE" 8090 DATA 25,1,"PRYBAR" 8100 DATA 26,1,"* DIAMONDS" 8110 DATA 26,2,"A VARY LARGE MACHINE" 8120 DATA 27,1,"SCIENTIFIC BOOK" 8130 DATA 28,1,"A LARGE CABINET" 8140 DATA 30,1,"SIGN" 8150 DATA 31,1,"CRATE" 8160 DATA 32,1,"DYING PLANT"