.FUNCT SWORD-FCN ZERO? SWORD-IN-STONE? /?ELS5 EQUAL? PRSA,V?MOVE,V?TAKE \FALSE RANDOM 100 GRTR? 10,STACK \?ELS16 PRINTR "Who do you think you are? Arthur?" ?ELS16: PRINTR "The sword is deeply imbedded within the rock. You can't even begin to budge it." ?ELS5: EQUAL? PRSA,V?TAKE \FALSE EQUAL? WINNER,ADVENTURER \FALSE CALL QUEUE,I-SWORD,-1 PUT STACK,0,1 RFALSE .FUNCT LANTERN EQUAL? PRSA,V?THROW \?ELS5 PRINTI "The lamp has smashed into the floor, and the light has gone out." CRLF CALL INT,I-LANTERN PUT STACK,0,0 REMOVE LAMP SET 'CURRENT-LAMP,BROKEN-LAMP MOVE BROKEN-LAMP,HERE RTRUE ?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS9 FSET? LAMP,LIGHTBIT /?ELS14 PRINTR "A burned-out lamp won't light." ?ELS14: CALL INT,I-LANTERN PUT STACK,0,1 RFALSE ?ELS9: EQUAL? PRSA,V?LAMP-OFF \?ELS20 FSET? LAMP,LIGHTBIT /?ELS25 PRINTR "The lamp has already burned out." ?ELS25: CALL INT,I-LANTERN PUT STACK,0,0 RFALSE ?ELS20: EQUAL? PRSA,V?EXAMINE \FALSE FSET? LAMP,LIGHTBIT /?ELS34 PRINTI "The lamp has burned out." JUMP ?CND32 ?ELS34: FSET? LAMP,ONBIT \?ELS38 PRINTI "The lamp is on." JUMP ?CND32 ?ELS38: PRINTI "The lamp is turned off." ?CND32: CRLF RTRUE .FUNCT I-LANTERN,TICK,TBL VALUE 'LAMP-TABLE >TBL GET TBL,0 >TICK CALL QUEUE,I-LANTERN,TICK PUT STACK,0,1 CALL LIGHT-INT,LAMP,TBL,TICK ZERO? TICK /TRUE ADD TBL,4 >LAMP-TABLE RTRUE .FUNCT LIGHT-INT,OBJ,TBL,TICK ZERO? TICK \?CND1 FCLEAR OBJ,LIGHTBIT FCLEAR OBJ,ONBIT ?CND1: CALL HELD?,OBJ ZERO? STACK \?THN9 IN? OBJ,HERE \FALSE ?THN9: ZERO? TICK \?ELS15 PRINTI "You'd better have more light than from the " PRINTD OBJ PRINTR "." ?ELS15: GET TBL,1 PRINT STACK CRLF RTRUE .FUNCT CRETIN EQUAL? PRSA,V?GIVE \?ELS5 CALL PERFORM,V?TAKE,PRSO RSTACK ?ELS5: EQUAL? PRSA,V?EAT \?ELS7 PRINTR "Auto-cannibalism is not the answer." ?ELS7: EQUAL? PRSA,V?MUNG,V?KILL \?ELS11 CALL JIGS-UP,STR?65 RSTACK ?ELS11: EQUAL? PRSA,V?TAKE \?ELS13 PRINTR "How romantic!" ?ELS13: EQUAL? PRSA,V?DISEMBARK \?ELS17 PRINTR "You'll have to do that on your own." ?ELS17: EQUAL? PRSA,V?EXAMINE \?ELS21 PRINTR "That's difficult unless your eyes are prehensile." ?ELS21: EQUAL? PRSA,V?MAKE \FALSE PRINTR "Only you can do that." .FUNCT CHASM-FCN EQUAL? PRSA,V?LEAP /?THN6 EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSO,ME \?ELS5 ?THN6: PRINTR "You look before leaping and realize you would never survive." ?ELS5: EQUAL? PRSA,V?CROSS \?ELS13 PRINTR "You'll have to find a bridge." ?ELS13: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSI,PSEUDO-OBJECT \FALSE PRINTI "The " PRINTD PRSO PRINTI " drops out of sight into the chasm." CRLF REMOVE PRSO RTRUE .FUNCT PATH-OBJECT EQUAL? PRSA,V?FOLLOW,V?TAKE \?ELS5 PRINTR "You must specify a direction to go." ?ELS5: EQUAL? PRSA,V?FIND \FALSE PRINTR "I can't help you there...." .FUNCT TUNNEL-OBJECT EQUAL? PRSA,V?THROUGH \?ELS5 GETP HERE,P?IN ZERO? STACK /?ELS5 CALL DO-WALK,P?IN RTRUE ?ELS5: CALL PATH-OBJECT RSTACK .FUNCT GROUND-FCN EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,GROUND \?ELS5 CALL PERFORM,V?DROP,PRSO RTRUE ?ELS5: EQUAL? PRSA,V?DIG \FALSE PRINTR "The ground is too hard for digging here." .FUNCT GRUE-FUNCTION EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "The grue is a sinister, lurking presence in the dark places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light. No grue has ever been seen by the light of day, and few have survived its fearsome jaws to tell the tale." ?ELS5: EQUAL? PRSA,V?FIND \?ELS9 PRINTR "There is no grue here, but I'm sure there is at least one lurking in the darkness nearby. I wouldn't let my light go out if I were you!" ?ELS9: EQUAL? PRSA,V?LISTEN \FALSE PRINTR "It makes no sound but is always lurking in the darkness nearby." .FUNCT CPEXIT,FX,NFX,?TMP1 SET 'CP-MOVED,FALSE-VALUE EQUAL? PRSO,P?UP \?ELS5 EQUAL? CPHERE,1 \?ELS10 GET CPTABLE,2 EQUAL? STACK,-2 \?ELS15 PRINTI "With the help of the ladder, you exit the puzzle." CRLF RETURN CP-ANTE ?ELS15: PRINTI "The exit is too far above your head." CRLF RFALSE ?ELS10: PRINTI "There is no way up." CRLF RFALSE ?ELS5: EQUAL? CPHERE,33 \?ELS27 EQUAL? PRSO,P?WEST \?ELS27 ZERO? CP-FLAG /?ELS27 FCLEAR CP,TOUCHBIT RETURN CP-OUT ?ELS27: EQUAL? PRSO,P?DOWN \?ELS31 PRINTI "There's no way down here." CRLF RFALSE ?ELS31: EQUAL? CPHERE,33 \?ELS35 EQUAL? PRSO,P?WEST \?ELS35 PRINTI "The metal door bars the way." CRLF RFALSE ?ELS35: CALL LKP,PRSO,CPEXITS >FX ADD FX,CPHERE >NFX GRTR? NFX,36 /?THN45 LESS? NFX,0 /?THN45 CALL ILLCP,CPHERE,FX ZERO? STACK /?ELS44 ?THN45: PRINTI "There is a wall there." CRLF RFALSE ?ELS44: LESS? FX,0 \?ELS55 SUB 0,FX JUMP ?CND51 ?ELS55: PUSH FX ?CND51: EQUAL? STACK,1,6 \?ELS50 CALL CPMOVE,FX RFALSE ?ELS50: GRTR? FX,0 \?ELS59 ADD CPHERE,6 GET CPTABLE,STACK >?TMP1 SUB FX,6 ADD CPHERE,STACK GET CPTABLE,STACK EQUAL? 0,?TMP1,STACK \?ELS59 CALL CPMOVE,FX RFALSE ?ELS59: LESS? FX,0 \?ELS63 SUB CPHERE,6 GET CPTABLE,STACK >?TMP1 ADD CPHERE,6 ADD STACK,FX >STACK GET CPTABLE,STACK EQUAL? 0,?TMP1,STACK \?ELS63 CALL CPMOVE,FX RFALSE ?ELS63: PRINTI "There is a wall there." CRLF RFALSE .FUNCT ILLCP,ONE,TWO MOD ONE,6 ZERO? STACK \?ELS5 EQUAL? TWO,MINUS-FIVE,1,7 /TRUE ?ELS5: MOD ONE,6 EQUAL? STACK,1 \?ELS9 EQUAL? TWO,MINUS-SEVEN,MINUS-ONE,5 /TRUE ?ELS9: LESS? ONE,7 \?ELS13 LESS? TWO,MINUS-FOUR /TRUE ?ELS13: GRTR? ONE,30 \FALSE GRTR? TWO,4 /TRUE RFALSE .FUNCT CPMOVE,FX ADD CPHERE,FX >FX GET CPTABLE,FX ZERO? STACK \?ELS5 CALL CPGOTO,FX RSTACK ?ELS5: PRINTR "There is a wall there." .FUNCT CPENTER EQUAL? YEAR,YEAR-PRESENT \?THN6 ZERO? CPBLOCK-FLAG /?ELS5 ?THN6: PRINTI "The hole is blocked by sandstone." CRLF RFALSE ?ELS5: SET 'CPHERE,1 RETURN CP .FUNCT CPANT-ROOM,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "This is a small square room, in the middle of which is a perfectly round hole" ZERO? CPBLOCK-FLAG \?THN13 EQUAL? YEAR,YEAR-PRESENT /?ELS12 ?THN13: PRINTR " which is blocked by smooth sandstone." ?ELS12: PRINTR " through which you can discern the floor some ten feet below. The place under the hole is dark, but it appears to be completely enclosed in rock. In any event, it doesn't seem likely that you could climb back up. Exits are west and, up a few steps, north." .FUNCT CPLADDER-OBJECT,FLG=0 SUB CPHERE,1 GET CPTABLE,STACK EQUAL? STACK,-3 /?THN6 ADD CPHERE,1 GET CPTABLE,STACK EQUAL? STACK,-2 \?ELS5 SET 'FLG,TRUE-VALUE ZERO? FLG /?ELS5 ?THN6: EQUAL? PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS14 ZERO? FLG /?ELS19 EQUAL? CPHERE,1 \?ELS19 SET 'CPSOLVE-FLAG,TRUE-VALUE CALL GOTO,CP-ANTE RSTACK ?ELS19: PRINTR "You hit your head on the ceiling and fall off the ladder." ?ELS14: PRINTR "Come, come!" ?ELS5: PRINTR "I can't see any ladder here." .FUNCT CPWALL-OBJECT,WL,NWL,NXT,NNXT,CNT,TOP,SNAP=0 EQUAL? PRSA,V?MOVE \?ELS5 PRINTR "You can't grab the wall to pull it." ?ELS5: EQUAL? PRSA,V?PUSH \FALSE CALL CPNEXT,CPHERE,PRSO >NXT ZERO? NXT \?CND10 PRINTR "The wall doesn't budge." ?CND10: GET CPTABLE,NXT >WL ZERO? WL \?ELS19 PRINTR "There is only a passage in that direction." ?ELS19: EQUAL? WL,1 \?ELS23 PRINTR "The wall doesn't budge." ?ELS23: CALL CPNEXT,NXT,PRSO >NNXT ZERO? NNXT \?ELS27 PRINTR "The wall barely gives." ?ELS27: GET CPTABLE,NNXT >NWL ZERO? NWL /?ELS31 PRINTR "The wall barely gives." ?ELS31: PRINTI "The wall slides forward and you follow it" ZERO? CPPUSH-FLAG /?ELS40 PRINTI " to this position:" CRLF JUMP ?CND38 ?ELS40: INC 'SCORE PRINTI ".... The architecture of this region is getting complex, so that further descriptions will be diagrams of the immediate vicinity in a 3x3 grid. The walls here are rock, but of two different types - sandstone and marble. The following notations will be used: " GET 0,8 BOR STACK,2 PUT 0,8,STACK PRINTI " .. = your position (middle of grid) MM = marble wall SS = sandstone wall ?? = unknown (blocked by walls) " GET 0,8 BAND STACK,-3 PUT 0,8,STACK ?CND38: SET 'CPPUSH-FLAG,TRUE-VALUE PUT CPTABLE,NXT,0 PUT CPTABLE,NNXT,WL ZERO? NNXT /?CND50 SUB NNXT,1 MUL 8,STACK >TOP GET CPOBJS,TOP >CNT ?PRG53: ZERO? CNT \?ELS57 JUMP ?CND50 ?ELS57: INC 'TOP GET CPOBJS,TOP MOVE STACK,CP-OUT ZERO? SNAP \?CND60 SET 'SNAP,TRUE-VALUE PRINTI "You hear a soft ""snap"" from behind the wall you were pushing." CRLF ?CND60: DEC 'CNT JUMP ?PRG53 ?CND50: EQUAL? NNXT,1 \?CND65 SET 'CPBLOCK-FLAG,TRUE-VALUE ?CND65: CALL CPGOTO,NXT RSTACK .FUNCT CPGOTO,FX,F,X,CNT,TOP SET 'CP-MOVED,TRUE-VALUE FCLEAR HERE,TOUCHBIT SUB CPHERE,1 MUL 8,STACK >TOP ADD TOP,1 >CNT FIRST? CP >F /?KLU22 ?KLU22: ?PRG1: NEXT? F >X /?KLU23 ?KLU23: ZERO? F \?ELS5 JUMP ?REP2 ?ELS5: EQUAL? F,ADVENTURER \?ELS7 JUMP ?CND3 ?ELS7: PUT CPOBJS,CNT,F REMOVE F INC 'CNT ?CND3: ZERO? X \?ELS12 JUMP ?REP2 ?ELS12: SET 'F,X JUMP ?PRG1 ?REP2: SUB CNT,TOP SUB STACK,1 PUT CPOBJS,TOP,STACK SET 'CPHERE,FX SUB CPHERE,1 MUL 8,STACK >TOP GET CPOBJS,TOP >CNT ?PRG15: ZERO? CNT \?ELS19 JUMP ?REP16 ?ELS19: INC 'TOP GET CPOBJS,TOP MOVE STACK,CP DEC 'CNT JUMP ?PRG15 ?REP16: CALL PERFORM,V?LOOK RTRUE .FUNCT CPNEXT,RM,OBJ,FX CALL LKP,OBJ,CPWALLS >FX CALL ILLCP,RM,FX ZERO? STACK \FALSE ADD RM,FX RSTACK .FUNCT CPDOOR-F EQUAL? HERE,CP \?ELS5 EQUAL? CPHERE,33 /?ELS5 PRINTR "I can't see any steel door here." ?ELS5: EQUAL? PRSA,V?OPEN \?ELS11 ZERO? CP-FLAG /?ELS16 PRINTR "The steel door has already opened." ?ELS16: PRINTR "You can't force it open." ?ELS11: EQUAL? PRSA,V?CLOSE \?ELS25 ZERO? CP-FLAG /?ELS30 PRINTR "There doesn't seem to be any way to close it." ?ELS30: PRINTR "Do you think it isn't already?" ?ELS25: EQUAL? PRSA,V?MUNG \?ELS39 PRINTR "The door is, to a first approximation, indestructible." ?ELS39: EQUAL? PRSA,V?KNOCK \FALSE PRINTR "Besides a great amount of reverberation, nothing happens." .FUNCT CP-ROOM,RARG EQUAL? RARG,M-ENTER \?ELS5 EQUAL? PRSO,P?DOWN \?ELS10 PUSH 1 JUMP ?CND6 ?ELS10: PUSH 33 ?CND6: SET 'CPHERE,STACK RETURN CPHERE ?ELS5: EQUAL? RARG,M-LOOK \FALSE ZERO? CPPUSH-FLAG /?ELS19 CALL CPWHERE RSTACK ?ELS19: PRINTR "You are in a small square room bounded to the north and west with marble walls and to the east and south with sandstone walls." .FUNCT CPNS,NUM GRTR? NUM,36 /TRUE LESS? NUM,1 /TRUE GET CPTABLE,NUM RSTACK .FUNCT CPEW,NUM,FOO MOD NUM,6 EQUAL? STACK,FOO /TRUE GET CPTABLE,NUM RSTACK .FUNCT CPWHERE,N,S,E,W ADD CPHERE,-6 CALL CPNS,STACK >N ADD CPHERE,6 CALL CPNS,STACK >S ADD CPHERE,1 CALL CPEW,STACK,1 >E ADD CPHERE,-1 CALL CPEW,STACK,0 >W GET 0,8 BOR STACK,2 PUT 0,8,STACK PRINTI " +" CALL CP-CORNER,MINUS-SEVEN,N,W PRINTI " " CALL CP-ORTHO,N PRINTI " " CALL CP-CORNER,MINUS-FIVE,N,E PRINTI "+" CRLF PRINTI "West +" CALL CP-ORTHO,W PRINTI " .. " CALL CP-ORTHO,E PRINTI "+ East" CRLF PRINTI " +" CALL CP-CORNER,5,S,W PRINTI " " CALL CP-ORTHO,S PRINTI " " CALL CP-CORNER,7,S,E PRINTI "+" CRLF GET 0,8 BAND STACK,-3 PUT 0,8,STACK EQUAL? CPHERE,1 \?ELS25 PRINTI "In the ceiling above you is a large circular opening." CRLF JUMP ?CND23 ?ELS25: EQUAL? CPHERE,22 \?ELS29 PRINTI "The center of the floor here is noticeably depressed." CRLF JUMP ?CND23 ?ELS29: EQUAL? CPHERE,33 \?CND23 PRINTI "In the center of the west wall is a steel door which is " ZERO? CP-FLAG /?ELS38 PRINTI "open" JUMP ?CND36 ?ELS38: PRINTI "closed" ?CND36: PRINTI ". On one side of the door is a narrow slot." CRLF ?CND23: EQUAL? E,-2 \?CND48 PRINTI "There is a ladder here, firmly attached to the east wall." CRLF ?CND48: EQUAL? W,-3 \FALSE PRINTR "There is a ladder here, firmly attached to the west wall." .FUNCT CP-ORTHO,CONTENTS ZERO? CONTENTS \?ELS5 PRINTI " " RTRUE ?ELS5: EQUAL? CONTENTS,1 \?ELS9 PRINTI "MM" RTRUE ?ELS9: PRINTI "SS" RTRUE .FUNCT CP-CORNER,DIR,COL,ROW,LOCN ADD CPHERE,DIR >LOCN ZERO? COL /?ELS5 ZERO? ROW /?ELS5 PRINTI "??" RTRUE ?ELS5: CALL ILLCP,CPHERE,DIR ZERO? STACK /?ELS11 PRINTI "MM" RTRUE ?ELS11: LESS? LOCN,1 /?THN21 GRTR? LOCN,36 \?ELS20 ?THN21: PUSH 1 JUMP ?CND16 ?ELS20: GET CPTABLE,LOCN ?CND16: SET 'COL,STACK ZERO? COL \?ELS15 PRINTI " " RTRUE ?ELS15: EQUAL? COL,1 \?ELS28 PRINTI "MM" RTRUE ?ELS28: PRINTI "SS" RTRUE .FUNCT CP-SLOT-FCN EQUAL? PRSA,V?PUT \FALSE GETP PRSO,P?SIZE GRTR? STACK,10 \?CND6 PRINTR "It doesn't fit." ?CND6: REMOVE PRSO EQUAL? PRSO,LORE-BOOK \?ELS15 SET 'CP-FLAG,TRUE-VALUE PRINTR "The book drops easily into the slot and vanishes. The metal door slides open, revealing a passageway to the west, as a previously unseen sign flashes: ""Royal Puzzle Exit Fee Paid Item Confiscated""" ?ELS15: FSET? PRSO,VICBIT /?THN20 FSET? PRSO,VILLAIN \?ELS19 ?THN20: CALL PICK-ONE,YUKS PRINT STACK CRLF RTRUE ?ELS19: PRINTI "The item vanishes into the slot. A moment later, a previously unseen sign flashes ""Garbage In, Garbage Out"" and spews the " PRINTD PRSO PRINTR " (now atomized) through the slot." .FUNCT CPOUT-ROOM,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a narrow room, lit from above. A flight of steps leads up toward the north, and a " ZERO? CP-FLAG /?ELS10 PRINTI "passage" JUMP ?CND8 ?ELS10: PRINTI "metal door" ?CND8: PRINTR " leads to the east." .FUNCT MRGO,TORM EQUAL? PRSO,P?NORTH,P?NW,P?NE \?ELS3 CALL LKP,HERE,R-NORTHS >TORM JUMP ?CND1 ?ELS3: CALL LKP,HERE,R-SOUTHS >TORM ?CND1: EQUAL? PRSO,P?NORTH,P?SOUTH \?ELS10 EQUAL? MLOC,TORM \?ELS15 MOD MDIR,180 ZERO? STACK \?ELS20 PRINTI "There is a wooden wall blocking your way." CRLF RFALSE ?ELS20: CALL MIRIN,FALSE-VALUE ZERO? STACK /?ELS24 RETURN IN-MIRROR ?ELS24: CALL MIRBLOCK RFALSE ?ELS15: RETURN TORM ?ELS10: EQUAL? MLOC,TORM \?ELS30 MOD MDIR,180 ZERO? STACK \?ELS35 CALL GO-E-W,TORM RSTACK ?ELS35: CALL MIRBLOCK RFALSE ?ELS30: RETURN TORM .FUNCT MIRBLOCK,MD SET 'MD,MDIR EQUAL? PRSO,P?SOUTH \?CND1 ADD MDIR,180 MOD STACK,360 >MD ?CND1: EQUAL? MD,270 \?ELS12 ZERO? MR1-FLAG /?THN9 ?ELS12: EQUAL? MD,90 \?ELS8 ZERO? MR2-FLAG \?ELS8 ?THN9: PRINTR "There is a large broken mirror blocking your way." ?ELS8: PRINTR "There is a large mirror blocking your way." .FUNCT GO-E-W,RM EQUAL? PRSO,P?NE,P?SE \?ELS5 CALL LKP,RM,R-EASTS RSTACK ?ELS5: CALL LKP,RM,R-WESTS RSTACK .FUNCT EWTELL,RM,EAST?=0,M1?=0,MWIN EQUAL? RM,MRAE,MRBE,MRCE /?THN4 EQUAL? RM,MRGE,MRCE \?CND1 ?THN4: SET 'EAST?,TRUE-VALUE ?CND1: ZERO? EAST? /?ELS13 PUSH 0 JUMP ?CND9 ?ELS13: PUSH 180 ?CND9: ADD MDIR,STACK EQUAL? STACK,180 \?CND6 SET 'M1?,TRUE-VALUE ?CND6: ZERO? M1? /?ELS19 SET 'MWIN,MR1-FLAG JUMP ?CND17 ?ELS19: SET 'MWIN,MR2-FLAG ?CND17: PRINTI "You are in a narrow room, whose " ZERO? EAST? /?ELS29 PUSH STR?66 JUMP ?CND25 ?ELS29: PUSH STR?67 ?CND25: PRINT STACK PRINTI " wall is a large " ZERO? MWIN /?ELS37 PUSH STR?68 JUMP ?CND33 ?ELS37: PUSH STR?69 ?CND33: PRINT STACK CRLF ZERO? M1? /?CND41 ZERO? MIRROR-OPEN-FLAG /?CND41 ZERO? MWIN /?ELS52 PUSH STR?70 JUMP ?CND48 ?ELS52: PUSH STR?71 ?CND48: PRINT STACK CRLF ?CND41: PRINTR "The opposite wall is solid rock." .FUNCT MRDEW,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL EWTELL,HERE SET 'GUARDIANS-SEEN,TRUE-VALUE PRINTI "Somewhat to the south" PRINT GUARDSTR CRLF RTRUE .FUNCT MRCEW,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL EWTELL,HERE SET 'GUARDIANS-SEEN,TRUE-VALUE PRINTI "Somewhat to the north" PRINT GUARDSTR CRLF RTRUE .FUNCT MRBEW,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL EWTELL,HERE PRINTR "To the north and south are large hallways." .FUNCT MRAEW,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL EWTELL,HERE PRINTR "To the north is a large hallway." .FUNCT LOOK-TO,RMN,RMS,NORTH?=0,NTELL=0,STELL=0,MIR?,M1?=0,DIR EQUAL? HERE,MREYE,FRONT-DOOR /?CND1 PRINTI "This is a part of the long hallway. The east and west walls are dressed stone. In the center of the hall is a shallow stone channel. In the center of the room the channel widens into a large hole around which is engraved a compass rose." CRLF ?CND1: EQUAL? HERE,MRG \?ELS8 SET 'GUARDIANS-SEEN,TRUE-VALUE PRINTI "On either side of you are identical stone statues holding bludgeons. They appear ready to strike, though, for the moment, they remain impassive." CRLF JUMP ?CND6 ?ELS8: EQUAL? HERE,MRC \?ELS12 SET 'GUARDIANS-SEEN,TRUE-VALUE PRINTI "Somewhat to the north" PRINT GUARDSTR CRLF SET 'NTELL,TRUE-VALUE JUMP ?CND6 ?ELS12: EQUAL? HERE,FRONT-DOOR \?ELS16 PRINTI "You are in a north-south hallway which ends, to the north, at a large wooden door." CRLF SET 'NTELL,TRUE-VALUE JUMP ?CND6 ?ELS16: EQUAL? HERE,MRD \?ELS20 SET 'GUARDIANS-SEEN,TRUE-VALUE PRINTI "Somewhat to the south" PRINT GUARDSTR CRLF SET 'STELL,TRUE-VALUE JUMP ?CND6 ?ELS20: EQUAL? HERE,MRA \?CND6 PRINTI "The hallway continues to the south." CRLF SET 'STELL,TRUE-VALUE ?CND6: EQUAL? MLOC,RMN,RMS \?CND27 EQUAL? MLOC,RMN \?ELS32 SET 'NORTH?,TRUE-VALUE SET 'NTELL,TRUE-VALUE SET 'DIR,STR?73 JUMP ?CND30 ?ELS32: SET 'STELL,TRUE-VALUE SET 'DIR,STR?74 ?CND30: ZERO? NORTH? /?ELS39 GRTR? MDIR,180 \?ELS39 LESS? MDIR,359 \?ELS39 SET 'M1?,TRUE-VALUE PUSH MR1-FLAG JUMP ?CND35 ?ELS39: ZERO? NORTH? \?ELS43 GRTR? MDIR,0 \?ELS43 LESS? MDIR,179 \?ELS43 SET 'M1?,TRUE-VALUE PUSH MR1-FLAG JUMP ?CND35 ?ELS43: PUSH MR2-FLAG ?CND35: SET 'MIR?,STACK MOD MDIR,180 ZERO? STACK \?ELS50 PRINTI "The " PRINT DIR PRINTI "th side of the room is divided by a wooden wall into small hallways to the " PRINT DIR PRINTI "theast and " PRINT DIR PRINTI "thwest." CRLF JUMP ?CND27 ?ELS50: ZERO? MIR? /?ELS65 PUSH STR?75 JUMP ?CND61 ?ELS65: PUSH STR?76 ?CND61: PRINT STACK PRINT DIR PRINTI "th side of the hallway." CRLF ZERO? M1? /?CND48 ZERO? MIRROR-OPEN-FLAG /?CND48 ZERO? MIR? /?ELS80 PUSH STR?70 JUMP ?CND76 ?ELS80: PUSH STR?71 ?CND76: PRINT STACK CRLF ?CND48: ?CND27: ZERO? NTELL \?ELS86 ZERO? STELL \?ELS86 PRINTR "The corridor continues north and south." ?ELS86: ZERO? NTELL \?ELS92 PRINTR "The corridor continues north." ?ELS92: ZERO? STELL \TRUE PRINTR "The corridor continues south." .FUNCT MRDF,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL LOOK-TO,FRONT-DOOR,MRG RSTACK .FUNCT MRCF,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL LOOK-TO,MRG,MRB RSTACK .FUNCT MRBF,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL LOOK-TO,MRC,MRA RSTACK .FUNCT MRAF,RARG=0 EQUAL? RARG,M-LOOK \FALSE CALL LOOK-TO,MRB,FALSE-VALUE RSTACK .FUNCT EG-INFESTED?,R EQUAL? MLOC,MRG \?ELS5 EQUAL? R,IN-MIRROR /?THN1 ?ELS5: EQUAL? R,MRGE,MRG,MRGW \FALSE PUSH 1 ?THN1: RSTACK .FUNCT GUARDIANS,RARG=0 EQUAL? RARG,M-LOOK \?ELS5 EQUAL? HERE,MRG \?ELS10 CALL LOOK-TO,MRD,MRC RSTACK ?ELS10: CALL EWTELL,HERE PRINTR "To the east and west are the Guardians of Zork, in perfect symmetry. From here, it's hard to tell which of the two is a reflection!" ?ELS5: EQUAL? RARG,M-ENTER \?ELS16 ZERO? INVIS \?ELS16 CALL JIGS-UP,STR?77 RSTACK ?ELS16: EQUAL? RARG,M-END \FALSE EQUAL? PRSA,V?EXAMINE \?ELS22 EQUAL? HERE,IN-MIRROR \?ELS27 PRINTR "You can't see them from here." ?ELS27: PRINTR "The guardians are quite impressive. I wouldn't get in their way if I were you!" ?ELS22: EQUAL? PRSA,V?THROW \?ELS35 EQUAL? PRSI,GUARDIAN \?ELS35 PRINTI "The " PRINTD PRSO PRINTI " flies within sight of the guardians, who, in perfect unison, destroy it utterly. Satisfied, they resume their posts." CRLF REMOVE PRSO RTRUE ?ELS35: EQUAL? PRSA,V?ATTACK \?ELS41 PRINTR "You aren't close enough to fight them and even if you were, the contest would be a bit one-sided." ?ELS41: EQUAL? PRSA,V?HELLO \FALSE PRINTR "The statues are impassive." .FUNCT MIRROR-DIR?,DIR,RM,TBL EQUAL? DIR,P?NORTH \?ELS5 PUSH R-NORTHS JUMP ?CND1 ?ELS5: PUSH R-SOUTHS ?CND1: SET 'TBL,STACK GETPT RM,DIR ZERO? STACK /FALSE CALL LKP,RM,TBL EQUAL? MLOC,STACK \FALSE EQUAL? DIR,P?NORTH \?ELS19 GRTR? MDIR,180 \?ELS19 LESS? MDIR,360 /TRUE ?ELS19: EQUAL? DIR,P?SOUTH \?ELS23 GRTR? MDIR,0 \?ELS23 LESS? MDIR,180 /TRUE ?ELS23: RETURN 2 .FUNCT WOODEN-WALL-F MOD MDIR,180 ZERO? STACK \?ELS5 CALL MIRROR-DIR?,P?NORTH,HERE ZERO? STACK \?THN8 CALL MIRROR-DIR?,P?SOUTH,HERE ZERO? STACK /?ELS5 ?THN8: EQUAL? PRSA,V?PUSH \FALSE PRINTR "The structure won't budge." ?ELS5: PRINTR "I can't see any wooden wall here." .FUNCT MIRROR-HERE?,RM,TMP EQUAL? HERE,MRAE,MRAW,MRBE /?THN6 EQUAL? HERE,MRBW,MRCE,MRCW /?THN6 EQUAL? HERE,MRGE,MRGW,MRDE /?THN6 EQUAL? HERE,MRDW \?ELS5 ?THN6: EQUAL? RM,MRAE,MRBE,MRCE /?THN18 EQUAL? RM,MRGE,MRDE \?ELS17 ?THN18: PUSH 0 JUMP ?CND13 ?ELS17: PUSH 180 ?CND13: ADD MDIR,STACK EQUAL? 180,STACK /TRUE RETURN 2 ?ELS5: MOD MDIR,180 ZERO? STACK /FALSE CALL MIRROR-DIR?,P?NORTH,RM >TMP ZERO? TMP /?ELS27 RETURN TMP ?ELS27: CALL MIRROR-DIR?,P?SOUTH,RM >TMP ZERO? TMP /FALSE RETURN TMP .FUNCT MIRROR-FUNCTION,MIRROR CALL MIRROR-HERE?,HERE >MIRROR ZERO? MIRROR \?ELS5 PRINTR "I can't see any mirror here." ?ELS5: EQUAL? PRSA,V?MOVE,V?OPEN \?ELS9 PRINTR "I don't see a way to open the mirror here." ?ELS9: EQUAL? PRSA,V?LOOK-INSIDE \?ELS13 EQUAL? MIRROR,1 \?ELS22 ZERO? MR1-FLAG \?THN19 ?ELS22: ZERO? MR2-FLAG /?ELS18 ?THN19: ZERO? INVIS /?ELS27 PRINTR "Amazingly, you have no reflection!" ?ELS27: PRINTR "A disheveled adventurer stares back at you." ?ELS18: PRINTR "You have destroyed the mirror, or have you forgotten?" ?ELS13: EQUAL? PRSA,V?MUNG \?ELS40 EQUAL? MIRROR,1 \?ELS45 ZERO? MR1-FLAG /?ELS50 SET 'MR1-FLAG,FALSE-VALUE PRINTR "The mirror breaks, revealing a wooden panel behind it. The glistening fragments of mirror quietly sparkle into nonexistance." ?ELS50: PRINTR "The mirror has already been broken." ?ELS45: ZERO? MR2-FLAG /?ELS59 SET 'MR2-FLAG,FALSE-VALUE PRINTR "The mirror breaks, revealing a wooden panel behind it. The glistening fragments of mirror quietly sparkle into nonexistance." ?ELS59: PRINTR "The mirror has already been broken." ?ELS40: EQUAL? MIRROR,1 \?ELS72 ZERO? MR1-FLAG /?THN69 ?ELS72: ZERO? MR2-FLAG \?ELS68 ?THN69: PRINTR "There's no mirror left." ?ELS68: EQUAL? PRSA,V?PUSH \FALSE EQUAL? MIRROR,1 \?ELS83 PUSH STR?78 JUMP ?CND79 ?ELS83: PUSH STR?79 ?CND79: PRINT STACK CRLF RTRUE .FUNCT PANEL-FUNCTION,MIRROR CALL MIRROR-HERE?,HERE >MIRROR ZERO? MIRROR \?ELS5 PRINTR "I can't see any panel here." ?ELS5: EQUAL? PRSA,V?MOVE,V?OPEN \?ELS9 PRINTR "I don't see a way to open the panel here." ?ELS9: EQUAL? PRSA,V?MUNG \?ELS13 EQUAL? MIRROR,1 \?ELS18 ZERO? MR1-FLAG /?ELS23 PRINTR "To break the panel you would have to break the mirror first." ?ELS23: PRINTR "The panel is not that easily destroyed." ?ELS18: ZERO? MR2-FLAG /?ELS32 PRINTR "To break the panel you would have to break the mirror first." ?ELS32: PRINTR "The panel is not that easily destroyed." ?ELS13: EQUAL? PRSA,V?PUSH \FALSE EQUAL? MIRROR,1 \?ELS48 PUSH STR?80 JUMP ?CND44 ?ELS48: PUSH STR?81 ?CND44: PRINT STACK CRLF RTRUE .FUNCT MIROUT,DIR,RM EQUAL? PRSO,P?OUT \?ELS3 SET 'DIR,1 JUMP ?CND1 ?ELS3: CALL LKP,PRSO,DIRVEC >DIR ?CND1: ZERO? MIRROR-OPEN-FLAG /?ELS10 EQUAL? DIR,1 /?THN17 ADD MDIR,270 MOD STACK,360 EQUAL? STACK,DIR \FALSE ?THN17: MOD MDIR,180 ZERO? STACK \?ELS23 CALL MIREW RSTACK ?ELS23: LESS? MDIR,180 /?PRD26 PUSH 0 JUMP ?PRD27 ?PRD26: PUSH 1 ?PRD27: CALL MIRNS,STACK,TRUE-VALUE RSTACK ?ELS10: ZERO? WOOD-OPEN-FLAG /?ELS31 EQUAL? DIR,1 /?THN38 ADD MDIR,180 MOD STACK,360 EQUAL? STACK,DIR \?ELS37 ?THN38: ZERO? MDIR \?ELS42 SET 'RM,FALSE-VALUE JUMP ?CND40 ?ELS42: SET 'RM,TRUE-VALUE ?CND40: CALL MIRNS,RM,TRUE-VALUE >RM ZERO? RM /?ELS49 PRINTI "As you leave, the door swings shut." CRLF SET 'WOOD-OPEN-FLAG,FALSE-VALUE RETURN RM ?ELS49: PRINTI "You can't go that way." CRLF RFALSE ?ELS37: PRINTI "You would hit one of the panels." CRLF RFALSE ?ELS31: PRINTI "You are inside a closed box!" CRLF RFALSE .FUNCT MIRNS,NORTH?,EXIT?=0,S,T ZERO? EXIT? \?CND1 ZERO? NORTH? /?ELS6 EQUAL? MLOC,MRD /FALSE ?ELS6: ZERO? NORTH? \?CND1 EQUAL? MLOC,MRA /FALSE ?CND1: ZERO? NORTH? /?ELS22 PUSH P?NORTH JUMP ?CND18 ?ELS22: PUSH P?SOUTH ?CND18: GETPT MLOC,STACK >T ZERO? T /FALSE PTSIZE T >S EQUAL? S,UEXIT \?ELS30 GETB T,0 RSTACK ?ELS30: ZERO? NORTH? /?ELS32 CALL LKP,MLOC,R-NORTHS RSTACK ?ELS32: CALL LKP,MLOC,R-SOUTHS RSTACK .FUNCT MIREW ZERO? MDIR \?ELS5 CALL LKP,MLOC,R-WESTS RSTACK ?ELS5: CALL LKP,MLOC,R-EASTS RSTACK .FUNCT MIRIN,VRB=1 CALL MIRROR-HERE?,HERE EQUAL? STACK,1 \?ELS5 ZERO? MIRROR-OPEN-FLAG /?ELS5 RETURN IN-MIRROR ?ELS5: ZERO? VRB /FALSE CALL MIRROR-HERE?,HERE EQUAL? STACK,1 \?ELS11 ZERO? MIRROR-OPENED \?ELS16 ZERO? MR1-FLAG /?ELS16 PRINTI "A mirror blocks your way." CRLF RFALSE ?ELS16: PRINTI "The panel is closed." CRLF RFALSE ?ELS11: PRINTI "The structure blocks your way." CRLF RFALSE .FUNCT MREYE-ROOM,RARG=0,O EQUAL? RARG,M-BEG \?ELS5 EQUAL? PRSA,V?DROP \?ELS5 IN? PRSO,WINNER \?ELS5 CALL BEAM-STOPPED? ZERO? STACK \?ELS5 MOVE PRSO,HERE PRINTI "You conveniently drop the " PRINTD PRSO PRINTR " in position to block the beam of light." ?ELS5: EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in the middle of a long north-south corridor whose walls are polished stone. A narrow red beam of light crosses the room at the north end, inches above the floor." CRLF CALL BEAM-STOPPED? >O ZERO? O /?CND14 PRINTI "The beam is stopped halfway across the room by a " PRINTD O PRINTI " lying on the floor." CRLF ?CND14: CALL LOOK-TO,MRA,FALSE-VALUE RSTACK .FUNCT BEAM-STOPPED?,N FIRST? MREYE >N /?KLU8 ?KLU8: ?PRG1: EQUAL? N,PLAYER,BEAM /?ELS5 SET 'BEAM-BREAKER,N RETURN N ?ELS5: NEXT? N >N /?PRG1 RFALSE .FUNCT BEAM-FUNCTION,PRO,PRI EQUAL? PRSA,V?LEAP \?ELS5 PRINTI "You jump over the beam and into the hallway." CRLF CALL GOTO,MRA RTRUE ?ELS5: EQUAL? PRSA,V?FOLLOW \?ELS9 PRINTR "It simply crosses the northern end of the room, so there's nowhere to follow it." ?ELS9: EQUAL? PRSA,V?EXAMINE \?ELS13 PRINTI "The red beam of light crosses the north end of the room only an inch or so above the floor." CALL BEAM-STOPPED? ZERO? STACK /?CND16 PRINTI " The beam is broken by a " PRINTD BEAM-BREAKER PRINTI " lying on the ground." ?CND16: CRLF RTRUE ?ELS13: EQUAL? PRSA,V?MUNG,V?PUT \?ELS22 EQUAL? PRSA,V?PUT \?ELS25 SET 'PRI,PRSO SET 'PRO,PRSI JUMP ?CND23 ?ELS25: SET 'PRI,PRSI SET 'PRO,PRSO ?CND23: ZERO? PRI /FALSE EQUAL? PRO,BEAM \FALSE IN? PRI,WINNER \?ELS36 MOVE PRI,HERE SET 'BEAM-BREAKER,PRI PRINTI "The beam is now interrupted by a " PRINTD PRI PRINTR " lying on the floor." ?ELS36: IN? PRI,HERE \?ELS40 PRINTI "The " PRINTD PRI PRINTR " already breaks the beam." ?ELS40: EQUAL? PRI,HANDS \?ELS44 PRINTR "The beam is broken briefly as it passes through." ?ELS44: PRINTI "You're not holding the " PRINTD PRI PRINTR "." ?ELS22: EQUAL? PRSA,V?TAKE \FALSE EQUAL? PRSO,BEAM \FALSE PRINTR "No doubt you have a bottle of moonbeams as well." .FUNCT MRSWITCH EQUAL? PRSA,V?PUSH \FALSE ZERO? MRSWPUSH-FLAG /?ELS10 PRINTR "Click." ?ELS10: CALL BEAM-STOPPED? ZERO? STACK /?ELS20 PRINTI "Click. Snap!" CRLF CALL QUEUE,I-MRINT,7 PUT STACK,0,1 SET 'MRSWPUSH-FLAG,TRUE-VALUE SET 'MIRROR-OPEN-FLAG,TRUE-VALUE SET 'MIRROR-OPENED,TRUE-VALUE FCLEAR MRA,TOUCHBIT RTRUE ?ELS20: PRINTR "Click." .FUNCT I-MRINT SET 'MRSWPUSH-FLAG,FALSE-VALUE SET 'MIRROR-OPEN-FLAG,FALSE-VALUE CALL MIRROR-HERE?,HERE EQUAL? STACK,1 /?THN6 EQUAL? HERE,IN-MIRROR \?ELS5 ?THN6: PRINTR "The mirror quietly swings shut." ?ELS5: EQUAL? HERE,MR-ANTE \FALSE PRINTR "The button pops back to its original position." .FUNCT MAGIC-MIRROR,RARG=0 EQUAL? RARG,M-LOOK \FALSE PRINTI "You are inside a rectangular box of wood whose structure is rather complicated. Four sides and the roof are filled in, and the floor is open. As you face the side opposite the entrance, two short sides of carved and polished wood are to your left and right. The left panel is mahogany, the right pine. The wall you face is red on its left half and black on its right. On the entrance side, the wall is white opposite the red part of the wall it faces, and yellow opposite the black section. The painted walls are at least twice the length of the unpainted ones. The ceiling is painted blue. In the floor is a stone channel about six inches wide and a foot deep. The channel is oriented in a north-south direction. In the exact center of the room the channel widens into a circular depression perhaps two feet wide. Incised in the stone around this area is a compass rose. Running from one short wall to the other at about waist height is a wooden bar, carefully carved and drilled. This bar is pierced in two places. The first hole is in the center of the bar (and thus the center of the room). The second is at the left end of the room (as you face opposite the entrance). Through each hole runs a wooden pole. The pole at the left end of the bar is short, extending about a foot above the bar, and ends in a hand grip. The pole " EQUAL? MLOC,MRB \?ELS10 EQUAL? MDIR,270 \?ELS10 ZERO? POLEUP-FLAG /?ELS15 PRINTI "has been lifted out of a hole carved in the stone floor. There is evidently enough friction to keep the pole from dropping back down." JUMP ?CND8 ?ELS15: PRINTI "has been dropped into a hole carved in the stone floor." JUMP ?CND8 ?ELS10: EQUAL? MDIR,0,180 \?ELS23 ZERO? POLEUP-FLAG /?ELS26 PRINTI "is positioned above the stone channel in the floor." JUMP ?CND8 ?ELS26: PRINTI "has been dropped into the stone channel incised in the floor." JUMP ?CND8 ?ELS23: PRINTI "is resting on the stone floor." ?CND8: PRINTI " The long pole at the center of the bar extends from the ceiling through the bar to the circular area in the stone channel. This bottom end of the pole has a T-bar a bit less than two feet long attached to it, and on the T-bar is carved an arrow. The arrow and T-bar are pointing " DIV MDIR,45 GET LONGDIRS,STACK PRINT STACK PRINTI "." ZERO? WOOD-OPEN-FLAG /?CND39 PRINTI " The pine panel has been opened outward." ?CND39: CRLF RTRUE .FUNCT MPANELS,MD EQUAL? PRSA,V?PUSH \FALSE ZERO? POLEUP-FLAG /?ELS10 EQUAL? MLOC,MRG \?CND11 ZERO? GUARDIANS-SEEN /?ELS16 CALL JIGS-UP,STR?77 RTRUE ?ELS16: CALL JIGS-UP,STR?88 RTRUE ?CND11: EQUAL? PRSO,RED-PANEL,YELLOW-PANEL \?ELS22 ADD MDIR,45 MOD STACK,360 >MD PRINTI "The structure rotates clockwise." CRLF JUMP ?CND20 ?ELS22: ADD MDIR,315 MOD STACK,360 >MD PRINTI "The structure rotates counterclockwise." CRLF ?CND20: PRINTI "The arrow on the compass rose now indicates " DIV MD,45 GET LONGDIRS,STACK PRINT STACK PRINTI "." CRLF ZERO? WOOD-OPEN-FLAG /?CND31 SET 'WOOD-OPEN-FLAG,FALSE-VALUE PRINTI "The pine wall closes quietly." CRLF ?CND31: SET 'MDIR,MD RETURN MDIR ?ELS10: MOD MDIR,180 ZERO? STACK \?ELS38 PRINTR "The short pole prevents the structure from rotating." ?ELS38: PRINTR "The structure shakes slightly but doesn't move." .FUNCT MENDS,RM EQUAL? PRSA,V?CLOSE \?ELS5 PRINTR "You can't do that to the panel." ?ELS5: EQUAL? PRSA,V?PUSH /?THN10 EQUAL? PRSA,V?OPEN \FALSE EQUAL? PRSO,PINE-PANEL \FALSE ?THN10: MOD MDIR,180 ZERO? STACK /?ELS18 PRINTR "The structure rocks back and forth slightly but doesn't move." ?ELS18: EQUAL? PRSO,MAHOGANY-PANEL \?ELS22 LESS? MDIR,180 /?PRD28 PUSH 0 JUMP ?PRD29 ?PRD28: PUSH 1 ?PRD29: CALL MIRNS,STACK >RM ZERO? RM /?ELS27 ZERO? MDIR /?PRD30 PUSH 0 JUMP ?PRD31 ?PRD30: PUSH 1 ?PRD31: CALL MIRMOVE,STACK,RM RSTACK ?ELS27: PRINTR "The structure has reached the end of the stone channel and won't budge." ?ELS22: PRINTI "The pine wall swings open." CRLF EQUAL? MLOC,MRD \?ELS46 ZERO? MDIR /?THN43 ?ELS46: EQUAL? MLOC,MRC \?ELS48 EQUAL? MDIR,180 /?THN43 ?ELS48: EQUAL? MLOC,MRG \?CND40 ?THN43: ZERO? GUARDIANS-SEEN /?ELS51 PRINTI "The pine door opens into the field of view of the Guardians." CRLF JUMP ?CND49 ?ELS51: PRINTI "The pine door opens into the field of view of the Guardians of Zork, represented by two identical stone statues carrying bludgeons." CRLF ?CND49: CALL JIGS-UP,STR?77 RTRUE ?CND40: SET 'WOOD-OPEN-FLAG,TRUE-VALUE CALL QUEUE,I-PININ,5 PUT STACK,0,1 RTRUE .FUNCT I-PININ ZERO? WOOD-OPEN-FLAG /FALSE SET 'WOOD-OPEN-FLAG,FALSE-VALUE PRINTR "The pine wall closes quietly." .FUNCT MIRMOVE,NORTH?,RM,PU?=0,LOSE=0 ZERO? POLEUP-FLAG /?CND1 SET 'PU?,TRUE-VALUE ?CND1: ZERO? PU? /?ELS10 PUSH STR?89 JUMP ?CND6 ?ELS10: PUSH STR?90 ?CND6: PRINT STACK ZERO? NORTH? /?ELS18 PUSH STR?82 JUMP ?CND14 ?ELS18: PUSH STR?85 ?CND14: PRINT STACK PRINTI " and stops over another compass rose." CRLF SET 'MLOC,RM EQUAL? RM,MRG \TRUE EQUAL? HERE,IN-MIRROR \TRUE ZERO? PU? /?ELS29 SET 'LOSE,TRUE-VALUE JUMP ?CND27 ?ELS29: ZERO? MR1-FLAG /?THN33 ZERO? MR2-FLAG \?ELS32 ?THN33: SET 'LOSE,TRUE-VALUE JUMP ?CND27 ?ELS32: ZERO? MIRROR-OPEN-FLAG \?THN37 ZERO? WOOD-OPEN-FLAG /?CND27 ?THN37: SET 'LOSE,TRUE-VALUE ?CND27: ZERO? LOSE /TRUE ZERO? GUARDIANS-SEEN /?ELS45 CALL JIGS-UP,STR?91 RTRUE ?ELS45: CALL JIGS-UP,STR?92 RTRUE .FUNCT SHORT-POLE-F EQUAL? PRSA,V?RAISE \?ELS5 EQUAL? POLEUP-FLAG,2 \?ELS10 PRINTR "The pole cannot be raised further." ?ELS10: SET 'POLEUP-FLAG,2 PRINTR "The pole is now slightly above the floor." ?ELS5: EQUAL? PRSA,V?PUT \?ELS22 EQUAL? PRSI,CHANNEL /?THN19 ?ELS22: EQUAL? PRSA,V?LOWER,V?PUSH \FALSE ?THN19: ZERO? POLEUP-FLAG \?ELS27 PRINTR "The pole cannot be lowered further." ?ELS27: MOD MDIR,180 ZERO? STACK \?ELS31 PRINTI "The pole is lowered into the channel." CRLF SET 'POLEUP-FLAG,0 RTRUE ?ELS31: EQUAL? MDIR,270 \?ELS35 EQUAL? MLOC,MRB \?ELS35 SET 'POLEUP-FLAG,0 PRINTR "The pole is lowered into the stone hole." ?ELS35: EQUAL? POLEUP-FLAG,1 \?ELS41 PRINTR "The pole is already resting on the floor." ?ELS41: SET 'POLEUP-FLAG,1 PRINTR "The pole now rests on the stone floor." .FUNCT DUNGEON-MASTER-F,RARG=0 EQUAL? RARG,M-OBJDESC /FALSE EQUAL? WINNER,DUNGEON-MASTER \?ELS7 EQUAL? PRSA,V?FOLLOW \?ELS12 IN? DUNGEON-MASTER,HERE \?ELS17 CALL QUEUE,I-FOLIN,-1 PUT STACK,0,1 PRINTR "The dungeon master answers, ""I will follow.""" ?ELS17: PRINTR "The dungeon master's voice replies, ""You must come here first!""" ?ELS12: EQUAL? PRSA,V?WAIT,V?STAY \?ELS25 CALL QUEUE,I-FOLIN,0 PRINTR "The dungeon master answers, ""I will stay.""" ?ELS25: EQUAL? PRSA,V?WALK \?ELS29 EQUAL? PRSO,P?SOUTH,P?ENTER \?ELS34 EQUAL? HERE,NORTH-CORRIDOR \?ELS34 PRINTR """I am not permitted to enter the prison cell.""" ?ELS34: EQUAL? PRSO,P?NORTH \?ELS40 EQUAL? HERE,NORTH-CORRIDOR \?ELS40 MOVE DUNGEON-MASTER,PARAPET PRINTI """Very well. I am at the parapet!""" CRLF CALL QUEUE,I-FOLIN,0 RSTACK ?ELS40: EQUAL? PRSO,P?NORTH,P?ENTER \?ELS46 EQUAL? HERE,SOUTH-CORRIDOR \?ELS46 PRINTR """I am not permitted to enter the prison cell.""" ?ELS46: PRINTR """I prefer to stay where I am, thank you.""" ?ELS29: EQUAL? PRSA,V?WALK-TO \?ELS56 EQUAL? PRSO,PARAPET-OBJ \?ELS56 MOVE DUNGEON-MASTER,PARAPET CALL QUEUE,I-FOLIN,0 PRINTR """Very well!""" ?ELS56: EQUAL? PRSA,V?TAKE \?ELS62 PRINTR """I will have no use for that, I am afraid.""" ?ELS62: EQUAL? PRSA,V?OPEN \?ELS66 EQUAL? PRSO,DUNGEON-DOOR \?ELS66 PRINTR "The dungeon master appears angered. ""Do not run from your quest: you are nearing the end!""" ?ELS66: EQUAL? PRSA,V?WALK-TO /?THN73 EQUAL? PRSA,V?WAIT,V?KILL,V?CLOSE /?THN73 EQUAL? PRSA,V?OPEN,V?STAY,V?FOLLOW /?THN73 EQUAL? PRSA,V?SPIN,V?TURN,V?PUSH \?ELS72 ?THN73: EQUAL? PRSA,V?WAIT,V?FOLLOW,V?STAY /FALSE PRINTI """If you wish,"" he replies." CRLF RFALSE ?ELS72: PRINTR """Do not be foolish! Consider the end of your quest!""" ?ELS7: EQUAL? PRSA,V?EXAMINE \?ELS87 PRINTR "He is dressed simply in a hood and cloak, wearing an amulet and ring, carrying an old book under one arm, and leaning on a wooden staff. A single key, as if to a prison cell, hangs from his belt." ?ELS87: EQUAL? PRSA,V?MUNG,V?KILL,V?ATTACK \?ELS91 CALL REALLY-DEAD,STR?93 RSTACK ?ELS91: EQUAL? PRSA,V?TAKE \?ELS93 PRINTR """I'm willing to accompany you, but not ride in your pocket!""" ?ELS93: EQUAL? PRSA,V?GIVE \FALSE EQUAL? PRSI,DUNGEON-MASTER \FALSE PRINTR """I have no need for those things.""" .FUNCT MASTER-F EQUAL? HERE,PRISON-CELL,GOOD-CELL \?ELS5 CALL HELLO?,MASTER ZERO? STACK /?ELS10 PRINTR "He can't hear you." ?ELS10: PRINTR "He is not here." ?ELS5: EQUAL? PRSA,V?TELL \?ELS18 SET 'PRSO,DUNGEON-MASTER RFALSE ?ELS18: EQUAL? PRSA,V?SGIVE,V?GIVE \?ELS20 IN? DUNGEON-MASTER,HERE \?ELS20 PRINTR "He politely refuses your offer." ?ELS20: EQUAL? PRSA,V?EXAMINE \?ELS26 EQUAL? HERE,CELL,NORTH-CORRIDOR \?ELS26 IN? DUNGEON-MASTER,PARAPET \?ELS26 PRINTR "The dungeon master is standing on the parapet." ?ELS26: PRINTR "The dungeon master isn't here." .FUNCT BEHIND-DOOR-F,RARG=0 EQUAL? RARG,M-ENTER \?ELS5 ZERO? DM-SEEN \?ELS5 CALL QUEUE,I-FOLIN,-1 PUT STACK,0,1 SET 'DM-SEEN,TRUE-VALUE RETURN DM-SEEN ?ELS5: EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a narrow north-south corridor. At the south end is a door and at the north end is an east-west corridor. The door is " CALL DPR,DUNGEON-DOOR RSTACK .FUNCT FRONT-DOOR-F,RARG=0 EQUAL? RARG,M-ENTER \?ELS5 CALL QUEUE,I-FOLIN,0 RSTACK ?ELS5: EQUAL? RARG,M-LOOK \FALSE CALL LOOK-TO,FALSE-VALUE,MRD PRINTI "The wooden door has a barred panel in it at about head height. The door itself is " CALL DPR,DUNGEON-DOOR RSTACK .FUNCT LOOK-LIKE-DM? IN? CLOAK,WINNER \FALSE IN? HOOD,WINNER \FALSE IN? AMULET,WINNER \FALSE IN? STAFF,WINNER \FALSE IN? RING,WINNER \FALSE IN? LORE-BOOK,WINNER \FALSE IN? KEY,WINNER /TRUE RFALSE .FUNCT DUNGEON-DOOR-F EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS5 PRINTR "The door won't budge." ?ELS5: EQUAL? PRSA,V?KNOCK \FALSE EQUAL? HERE,FRONT-DOOR \FALSE PRINTI "The knock reverberates along the hall. For a time it seems there will be no answer. Then you hear someone unlatching the small wooden panel. Through the bars of the great door, the wrinkled face of an old man appears." ZERO? INVIS /?CND14 PRINTI " He seems not to take notice of you for for a brief moment, then recovers." ?CND14: CALL LOOK-LIKE-DM? ZERO? STACK /?ELS24 PRINTI " After a moment, he starts to smile broadly. He disappears for an instant and the massive door opens without a sound. The old man motions and you feel yourself drawn toward him. ""I am the Master of the Dungeon!"" he booms. ""I have been watching you closely during your journey through the Great Underground Empire. Yes!,"" he says, as if recalling some almost forgotten time, ""we have met before, although I may not appear as I did then."" You look closely into his deeply lined face and see the faces of the old man by the secret door, your ""friend"" at the cliff, and the hooded figure. ""You have shown kindness to the old man, and compassion toward the hooded one. I have seen you display patience in the puzzle and trust at the cliff. You have demonstrated strength, ingenuity, and valor. However, one final test awaits you. Now! Command me as you will, and complete your quest!"" " CRLF CALL GOTO,BEHIND-DOOR SET 'IN-DUNGEON,TRUE-VALUE RETURN IN-DUNGEON ?ELS24: PRINTI " He looks you over with his keen, piercing gaze and then speaks gravely. ""I have been waiting a long time for you, " CALL DMISH GET DM-REASONS,STACK PRINT STACK PRINTI " I will remain here. When you feel you are ready, go to the secret door and 'SAY ""FROTZ OZMOO""'! Go, now!"" He starts to leave but turns back briefly and wags his finger in warning. ""Do not forget the double quotes!"" A moment later, you find yourself in the Button Room." CRLF CALL GOTO,MR-ANTE,FALSE-VALUE RTRUE .FUNCT DMISH,CNT=0 IN? AMULET,WINNER \?CND1 INC 'CNT ?CND1: IN? LORE-BOOK,WINNER \?CND4 INC 'CNT ?CND4: IN? HOOD,WINNER \?CND7 INC 'CNT ?CND7: IN? CLOAK,WINNER \?CND10 INC 'CNT ?CND10: IN? RING,WINNER \?CND13 INC 'CNT ?CND13: IN? KEY,WINNER \?CND16 INC 'CNT ?CND16: IN? STAFF,WINNER \?CND19 INC 'CNT RETURN CNT ?CND19: RETURN CNT .FUNCT I-FOLIN IN? DUNGEON-MASTER,HERE /FALSE EQUAL? HERE,PRISON-CELL,CELL \?ELS7 ZERO? FOLFLAG /?ELS7 PRINTI "You notice that the dungeon master doesn't follow you." CRLF SET 'FOLFLAG,FALSE-VALUE RTRUE ?ELS7: EQUAL? HERE,PRISON-CELL,CELL /FALSE ZERO? FOLFLAG \?ELS15 SET 'FOLFLAG,TRUE-VALUE PRINTI "The dungeon master rejoins you." CRLF MOVE DUNGEON-MASTER,HERE RTRUE ?ELS15: PRINTI "The dungeon master follows you." CRLF MOVE DUNGEON-MASTER,HERE RTRUE .FUNCT MOVE-CELL-OBJECTS,TOP,CNT,F,X SUB LCELL,1 MUL 8,STACK >TOP ADD TOP,1 >CNT FIRST? CELL >F /?KLU24 ?KLU24: ZERO? F /?CND1 ?PRG5: NEXT? F >X /?KLU25 ?KLU25: ZERO? F \?ELS9 JUMP ?CND1 ?ELS9: PUT CELLOBJS,CNT,F REMOVE F INC 'CNT ?CND7: ZERO? X \?ELS14 JUMP ?CND1 ?ELS14: SET 'F,X JUMP ?PRG5 ?CND1: SUB CNT,TOP SUB STACK,1 PUT CELLOBJS,TOP,STACK SUB PNUMB,1 MUL 8,STACK >TOP GET CELLOBJS,TOP >CNT ?PRG17: ZERO? CNT /TRUE INC 'TOP GET CELLOBJS,TOP MOVE STACK,CELL DEC 'CNT JUMP ?PRG17 .FUNCT CELL-MOVE,F,X FCLEAR CELL-DOOR,OPENBIT FCLEAR BRONZE-DOOR,OPENBIT EQUAL? PNUMB,LCELL /FALSE EQUAL? PNUMB,4 \?ELS8 FCLEAR BRONZE-DOOR,INVISIBLE JUMP ?CND6 ?ELS8: FSET BRONZE-DOOR,INVISIBLE ?CND6: IN? PLAYER,CELL \?ELS13 SET 'WINNER,PLAYER FCLEAR GOOD-CELL,TOUCHBIT FCLEAR PRISON-CELL,TOUCHBIT EQUAL? LCELL,4 \?ELS18 FCLEAR BRONZE-DOOR,INVISIBLE PUSH GOOD-CELL JUMP ?CND14 ?ELS18: PUSH PRISON-CELL ?CND14: CALL GOTO,STACK FIRST? CELL >F /?KLU39 ?KLU39: ZERO? F /?CND11 ?PRG25: NEXT? F >X /?KLU40 ?KLU40: ZERO? F \?ELS29 JUMP ?CND11 ?ELS29: MOVE F,HERE ?CND27: ZERO? X \?ELS34 JUMP ?CND11 ?ELS34: SET 'F,X JUMP ?PRG25 ?ELS13: CALL MOVE-CELL-OBJECTS ?CND11: SET 'LCELL,PNUMB RETURN LCELL .FUNCT PARAPET-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are standing behind a stone retaining wall which rims a large parapet overlooking a fiery pit. It is difficult to see through the smoke and flame which fills the pit, but it seems to be more or less bottomless. The pit itself is circular, about two hundred feet in diameter, and is fashioned of roughly hewn stone. The flames generate considerable heat, so it is rather uncomfortable standing here. There is an object here which looks like a sundial. On it are an indicator arrow and (in the center) a large button. On the face of the dial are numbers 1 through 8. The indicator points to the number " PRINTN PNUMB PRINTI "." CRLF PRINTR "To the south, across a narrow corridor, is a prison cell." .FUNCT DIAL,N EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTI "The dial points to " PRINTN PNUMB PRINTR "." ?ELS5: EQUAL? PRSA,V?TURN \?ELS9 EQUAL? PRSI,INTNUM \?ELS14 ZERO? P-NUMBER /?THN18 GRTR? P-NUMBER,8 \?CND15 ?THN18: PRINTR "There is no such setting." ?CND15: SET 'PNUMB,P-NUMBER EQUAL? WINNER,PLAYER \TRUE PRINTI "The dial now points to " PRINTN PNUMB PRINTR "." ?ELS14: ZERO? PRSI \?ELS28 PRINTR "You must specify what to set the dial to." ?ELS28: PRINTR "The dial face only contains numbers." ?ELS9: EQUAL? PRSA,V?SPIN \FALSE RANDOM 8 >PNUMB EQUAL? WINNER,PLAYER \TRUE PRINTI "The dial spins and comes to a stop pointing at " PRINTN PNUMB PRINTI "." RTRUE .FUNCT DIALBUTTON,C FSET? CELL-DOOR,OPENBIT /?PRD1 PUSH 0 JUMP ?PRD2 ?PRD1: PUSH 1 ?PRD2: SET 'C,STACK FCLEAR CELL,TOUCHBIT EQUAL? PRSA,V?PUSH \FALSE EQUAL? WINNER,PLAYER \?CND8 PRINTI "The button depresses with a slight click, and pops back." CRLF ?CND8: CALL CELL-MOVE ZERO? C /TRUE PRINTR "You notice that the cell door is now closed." .FUNCT CELL-ROOM,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a featureless prison cell. You can see " FSET? CELL-DOOR,OPENBIT \?ELS10 PRINTI "an east-west corridor outside the open wooden door in front of you. Your view also takes in the parapet, and behind, a large, fiery pit." CRLF JUMP ?CND8 ?ELS10: PRINTI "through the small window in the closed door in front of you the parapet, and, behind that, smoke and flames rising from a fiery pit." CRLF ?CND8: IN? DUNGEON-MASTER,PARAPET \?CND17 PRINTI "The dungeon master is standing on the parapet, leaning on his wooden staff. His keen gaze is fixed on you and he looks somewhat tense, as if waiting for something to happen." CRLF ?CND17: EQUAL? LCELL,4 \TRUE PRINTI "Behind you, to the south, is a bronze door which is " CALL DPR,BRONZE-DOOR RTRUE .FUNCT NCELL-ROOM,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a bare prison cell. Its wooden door is securely fastened, and you can see only flames and smoke through its small window. On the south wall is a bronze door which seems to be " CALL DPR,BRONZE-DOOR RSTACK .FUNCT DPR,OBJ FSET? OBJ,OPENBIT \?ELS5 PRINTR "open." ?ELS5: PRINTR "closed." .FUNCT NORTH-CORRIDOR-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "This is a wide east-west corridor which opens onto a northern parapet at its center. You can see flames and smoke as you peer towards the parapet. The corridor turns south at either end, and in the center of the south wall is a heavy wooden door with a small window barred with iron. The door is " CALL DPR,CELL-DOOR RSTACK .FUNCT SOUTH-CORRIDOR-F,RARG EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in an east-west corridor which turns north at its eastern and western ends. The walls are made of the finest marble. An additional passage leads south at the center of the corridor." CRLF EQUAL? LCELL,4 \TRUE PRINTI "In the center of the north wall is a bronze door which is " CALL DPR,BRONZE-DOOR RTRUE .FUNCT BRONZE-DOOR-F EQUAL? PRSA,V?OPEN \?ELS5 FSET? BRONZE-DOOR,OPENBIT /?ELS5 EQUAL? HERE,GOOD-CELL \?ELS5 ZERO? BRONZE-DOOR-LOCKED \?ELS5 PRINTI "On the other side of the bronze door is a narrow passage which opens out into a larger area." CRLF FSET BRONZE-DOOR,OPENBIT RTRUE ?ELS5: EQUAL? PRSA,V?OPEN \FALSE ZERO? BRONZE-DOOR-LOCKED /FALSE PRINTR "The bronze door is locked." .FUNCT LOCKED-DOOR-F EQUAL? PRSA,V?UNLOCK,V?OPEN \FALSE PRINTR "The door is securely fastened." .FUNCT NIRVANA-F,RARG EQUAL? RARG,M-END \FALSE PRINTI "As you gleefully examine your new-found riches, the Dungeon Master materializes beside you, and says, ""Now that you have solved all the mysteries of the Dungeon, it is time for you to assume your rightly-earned place in the scheme of things. Long have I waited for one capable of releasing me from my burden!"" He taps you lightly on the head with his staff, mumbling a few well-chosen spells, and you feel yourself changing, growing older and more stooped. For a moment there are two identical mages standing among the treasure, then your counterpart dissolves into a mist and disappears, a sardonic grin on his face. For a moment you are relieved, safe in the knowledge that you have at last completed your quest in ZORK. You begin to feel the vast powers and lore at your command and thirst for an opportunity to use them. " CALL FINISH RSTACK .FUNCT BRONZE-DOOR-EXIT FSET? BRONZE-DOOR,INVISIBLE \?ELS5 PRINTI "You can't go that way." CRLF RFALSE ?ELS5: FSET? BRONZE-DOOR,OPENBIT \?ELS9 RETURN CELL ?ELS9: PRINTI "The bronze door is closed." CRLF RFALSE .FUNCT SECRET-DOOR-F EQUAL? PRSA,V?OPEN \FALSE FSET? SECRET-DOOR,OPENBIT /FALSE PRINTI "The massive stone door opens noiselessly. " PRINT SECRET-DOOR-DESC CRLF FSET SECRET-DOOR,OPENBIT RTRUE .FUNCT MSTAIRS-F,RARG EQUAL? RARG,M-ENTER \?ELS5 RANDOM 100 GRTR? 30,STACK \?ELS5 ZERO? OLD-MAN-FED \?ELS5 ZERO? OLD-MAN-GONE \?ELS5 MOVE OLD-MAN,HERE RTRUE ?ELS5: EQUAL? RARG,M-LOOK \FALSE PRINTI "You are in a room with passages heading southwest and southeast. The north wall is ornately carved, filled with strange runes and writing in an unfamiliar language." CRLF FSET? SECRET-DOOR,OPENBIT \?ELS16 PRINT SECRET-DOOR-DESC CRLF RTRUE ?ELS16: FSET? SECRET-DOOR,INVISIBLE /FALSE PRINTR "The outline of a door is barely visible on the surface of the rock." .FUNCT HELLO?,WHO EQUAL? WINNER,WHO /?THN8 EQUAL? PRSA,V?INCANT,V?HELLO,V?SAY /?THN8 EQUAL? PRSA,V?REPLY,V?ANSWER,V?TELL \FALSE ?THN8: EQUAL? PRSA,V?REPLY,V?INCANT /?THN13 EQUAL? PRSA,V?SAY,V?ANSWER,V?TELL \TRUE ?THN13: SET 'P-CONT,FALSE-VALUE SET 'QUOTE-FLAG,FALSE-VALUE RTRUE .FUNCT OLD-MAN-F,RARG=0 EQUAL? RARG,M-OBJDESC \?ELS5 ZERO? OLD-MAN-AWAKE /?ELS10 PRINTR "There is an old man huddled in the corner, eyeing you cautiously. He seems weak and tired, and nods off frequently." ?ELS10: PRINTR "An old and wizened man is huddled, asleep, in the corner. He is snoring loudly. From his appearance, he is weak and frail." ?ELS5: EQUAL? PRSA,V?GIVE \?ELS19 EQUAL? PRSI,OLD-MAN \?ELS19 ZERO? OLD-MAN-AWAKE /?ELS26 EQUAL? PRSO,WAYBREAD \?ELS32 REMOVE WAYBREAD PRINTI "He looks up at you and takes the waybread from you. Slowly, he eats the bread and pauses when he is finished. He starts to speak: ""Perhaps what you seek is through there!"" He points at the carved wall to the north, where you now notice the bare outline of a secret door. When you turn back to the old man, you notice that he has gone!" CRLF FCLEAR SECRET-DOOR,INVISIBLE SET 'OLD-MAN-GONE,TRUE-VALUE REMOVE OLD-MAN RTRUE ?ELS32: IN? WAYBREAD,WINNER \?ELS36 PRINTR "He refuses your offer but motions with his arm to the waybread in your hand." ?ELS36: PRINTI "The old man refuses the " PRINTD PRSO PRINTR " with a wave of his hand." ?ELS26: PRINTR "He is asleep!" ?ELS19: EQUAL? PRSA,V?EXAMINE \?ELS48 ZERO? OLD-MAN-AWAKE /?ELS53 PRINTR "The old man is barely awake and appears to nod off every few moments. He has bright eyes, which, when open, appear to see right through your body." ?ELS53: PRINTR "The man is very, very old and wizened. He has a long, stringy beard and is snoring quite loudly." ?ELS48: EQUAL? PRSA,V?LISTEN \?ELS62 ZERO? OLD-MAN-AWAKE /?ELS67 PRINTR "He isn't talking." ?ELS67: PRINTR "He is snoring like a buzz saw." ?ELS62: CALL HELLO?,OLD-MAN ZERO? STACK /?ELS76 ZERO? OLD-MAN-AWAKE /?ELS81 PRINTR "He nods at you without seeming to have understood." ?ELS81: PRINTR "He is sleeping soundly and does not respond." ?ELS76: EQUAL? PRSA,V?ALARM,V?SHAKE \?ELS90 PRINTI "The old man is roused to consciousness. He peers at you through eyes which appear much younger and stronger than his frail body and waits, as if expecting something to happen." CRLF SET 'OLD-MAN-AWAKE,TRUE-VALUE CALL QUEUE,I-OLD-MAN-SLEEPS,3 PUT STACK,0,1 RTRUE ?ELS90: EQUAL? PRSA,V?MUNG,V?ATTACK,V?KILL \FALSE PRINTI "The attack seems to have left the old man unharmed! You watch in awe as he rises to his feet and seems to tower above you. He peers down menacingly, then sadly and wearily. ""Not yet,"" he mourns, and vanishes in a puff of smoke." CRLF SET 'OLD-MAN-GONE,TRUE-VALUE REMOVE OLD-MAN RTRUE .FUNCT I-OLD-MAN-SLEEPS SET 'OLD-MAN-AWAKE,FALSE-VALUE IN? OLD-MAN,HERE \FALSE PRINTR "You notice that the old man has fallen asleep." .FUNCT RUNES-F EQUAL? PRSA,V?READ,V?EXAMINE \FALSE PRINTR "The runes are in an ancient language. Some pictures, among the runes, depict flames, stone statues, and figures of old men." .FUNCT T-BAR-F EQUAL? PRSA,V?TURN \FALSE PRINTR "You don't have enough leverage to turn the T-bar itself. You might cause the whole structure to turn, however." .FUNCT FLAMING-PIT-F EQUAL? PRSA,V?EXAMINE \?ELS5 PRINTR "The flaming pit is a seemingly bottomless abyss filled with smoke and flame." ?ELS5: EQUAL? PRSA,V?PUT \FALSE EQUAL? PRSI,FLAMING-PIT \FALSE EQUAL? HERE,PARAPET,NORTH-CORRIDOR \?ELS16 EQUAL? PRSO,ME \?ELS21 PRINTR "It would be a pity to end your life so near the end of your quest!" ?ELS21: PRINTI "You cast the " PRINTD PRSO PRINTI " into the pit, where it is lost forever." CRLF REMOVE PRSO RTRUE ?ELS16: PRINTR "You're not close enough." .FUNCT PARAPET-OBJ-F EQUAL? PRSA,V?EXAMINE \FALSE EQUAL? HERE,CELL,NORTH-CORRIDOR \?ELS10 PRINTI "You can see the parapet and sundial from here." IN? DUNGEON-MASTER,PARAPET \?CND13 PRINTI " The dungeon master is there also, leaning on his staff." ?CND13: CRLF RTRUE ?ELS10: CALL V-LOOK RSTACK .FUNCT ROSE-F EQUAL? PRSA,V?MOVE,V?TURN \FALSE PRINTR "The compass rose is made of stone and is imbedded in the ground. You could not possibly turn it or move it." .FUNCT CELL-DOOR-F EQUAL? PRSA,V?PUT \?ELS5 EQUAL? PRSI,CELL-DOOR \?ELS5 PRINTR "You will have to enter the cell first." ?ELS5: EQUAL? PRSA,V?THROUGH \FALSE EQUAL? HERE,CELL \?ELS16 PRINTR "Look around." ?ELS16: CALL DO-WALK,P?SOUTH RTRUE .FUNCT LORE-BOOK-F EQUAL? PRSA,V?BURN \?ELS5 IN? LORE-BOOK,WINNER /?ELS5 PRINTI "The book is consumed in a dazzling display of color." CRLF REMOVE PRSO RTRUE ?ELS5: ZERO? IN-DUNGEON /?ELS11 EQUAL? PRSA,V?READ,V?EXAMINE,V?OPEN \?ELS11 PRINTR "The book seems to will itself open to a specific page. On it is a picture of eight small rooms located around a great circle of flame. All are identical save one, which has a bronze door leading to a magnificent room bathed in golden light. A legend beneath the picture says only ""The Dungeon and Treasury of Zork.""" ?ELS11: EQUAL? PRSA,V?OPEN \FALSE PRINTR "The book can be perused but not left open." .FUNCT CP-HOLE-F EQUAL? PRSA,V?THROUGH \FALSE CALL DO-WALK,P?DOWN RTRUE .FUNCT TORCH-PSEUDO PRINTR "The torches are out of reach." .FUNCT WATER-FCN,AV,PI? EQUAL? PRSA,V?SGIVE /FALSE EQUAL? PRSA,V?THROUGH \?ELS5 CALL PERFORM,V?SWIM,PRSO RTRUE ?ELS5: EQUAL? PRSA,V?FILL \?ELS7 SET 'PRSA,V?PUT SET 'PRSI,PRSO SET 'PRSO,GLOBAL-WATER SET 'PI?,FALSE-VALUE JUMP ?CND1 ?ELS7: EQUAL? PRSO,GLOBAL-WATER \?ELS9 SET 'PI?,FALSE-VALUE JUMP ?CND1 ?ELS9: ZERO? PRSI /?CND1 SET 'PI?,TRUE-VALUE ?CND1: ZERO? PI? /?ELS15 SET 'PRSI,GLOBAL-WATER JUMP ?CND13 ?ELS15: SET 'PRSO,GLOBAL-WATER ?CND13: EQUAL? PRSA,V?PUT,V?TAKE \?ELS23 ZERO? PI? \?ELS23 PRINTR "The water slips through your fingers." ?ELS23: ZERO? PI? /?ELS29 PRINTR "You can't do that." ?ELS29: EQUAL? PRSA,V?THROW,V?GIVE,V?DROP \FALSE PRINTR "You don't have any water." .FUNCT RANDOM-WALL EQUAL? PRSA,V?PUSH \FALSE EQUAL? HERE,IN-MIRROR \?ELS10 PRINTR "You should specify which panel you want to push." ?ELS10: PRINTR "You can't budge it; at least from here." .ENDI