Final Revision
authorhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 02:04:01 +0000 (22:04 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Sun, 14 Apr 2019 02:04:01 +0000 (22:04 -0400)
41 files changed:
3actions.zap [new file with mode: 0644]
3actions.zil [new file with mode: 0644]
3dungeon.zap [new file with mode: 0644]
3dungeon.zil [new file with mode: 0644]
actions.zil
clock.zil
demons.zil
dungeon.zil
gclock.zap [new file with mode: 0644]
gclock.zil [new file with mode: 0644]
gglobals.zap [new file with mode: 0644]
gglobals.zil [new file with mode: 0644]
gmacros.zap [new file with mode: 0644]
gmacros.zil [new file with mode: 0644]
gmain.zap [new file with mode: 0644]
gmain.zil [new file with mode: 0644]
gparser.zap [new file with mode: 0644]
gparser.zil [new file with mode: 0644]
gsyntax.zap [new file with mode: 0644]
gsyntax.zil [new file with mode: 0644]
gverbs.zap [new file with mode: 0644]
gverbs.zil [new file with mode: 0644]
invisicluesiii.mss [new file with mode: 0644]
macros.zil
main.zil
parser.zil
shadow.zil
syntax.diffs [new file with mode: 0644]
syntax.zil
tm.zil
verbs.diffs [new file with mode: 0644]
verbs.zil
zork3.chart [new file with mode: 0644]
zork3.errors
zork3.record [new file with mode: 0644]
zork3.serial [new file with mode: 0644]
zork3.zap
zork3.zil
zork3.zip
zork3dat.zap
zork3str.zap

diff --git a/3actions.zap b/3actions.zap
new file mode 100644 (file)
index 0000000..c22fc53
--- /dev/null
@@ -0,0 +1,3967 @@
+
+
+       .FUNCT  I-SWORD,DEM,NG=0,P,T,L
+       CALL    INT,I-SWORD >DEM
+       IN?     SWORD,ADVENTURER \?ELS5
+       EQUAL?  HERE,CLIFF \?ELS8
+       ZERO?   MAN-GONE \?ELS8
+       SET     'NG,1
+       JUMP    ?CND6
+?ELS8: EQUAL?  HERE,CLIFF-LEDGE \?ELS12
+       ZERO?   MAN-FLAG /?ELS12
+       SET     'NG,1
+       JUMP    ?CND6
+?ELS12:        CALL    INFESTED?,HERE
+       ZERO?   STACK /?ELS16
+       SET     'NG,2
+       JUMP    ?CND6
+?ELS16:        EQUAL?  MLOC,MRG \?ELS22
+       EQUAL?  HERE,IN-MIRROR /?THN19
+?ELS22:        EQUAL?  HERE,MRGE,MRG,MRGW \?ELS18
+?THN19:        SET     'NG,1
+       JUMP    ?CND6
+?ELS18:        SET     'P,0
+?PRG25:        NEXTP   HERE,P >P
+       ZERO?   P \?ELS29
+       JUMP    ?CND6
+?ELS29:        LESS?   P,LOW-DIRECTION /?PRG25
+       GETPT   HERE,P >T
+       PTSIZE  T >L
+       EQUAL?  L,UEXIT,CEXIT,DEXIT \?PRG25
+       GETB    T,0
+       CALL    INFESTED?,STACK
+       ZERO?   STACK /?PRG25
+       SET     'NG,1
+?CND6: EQUAL?  NG,SWORD-STATE /FALSE
+       EQUAL?  NG,2 \?ELS42
+       PRINTI  "Your sword has begun to glow very brightly."
+       CRLF    
+       JUMP    ?CND38
+?ELS42:        EQUAL?  NG,1 \?ELS46
+       PRINTI  "Your sword is glowing with a faint blue glow."
+       CRLF    
+       JUMP    ?CND38
+?ELS46:        ZERO?   NG \?CND38
+       PRINTI  "Your sword is no longer glowing."
+       CRLF    
+?CND38:        SET     'SWORD-STATE,NG
+       RTRUE   
+?ELS5: PUT     DEM,0,0
+       RFALSE  
+
+
+       .FUNCT  INFESTED?,R,F
+       FIRST?  R >F /?KLU12
+?KLU12:        
+?PRG1: ZERO?   F /FALSE
+       FSET?   F,ACTORBIT \?ELS7
+       FSET?   F,INVISIBLE /?ELS7
+       RETURN  F
+?ELS7: NEXT?   F >F /?PRG1
+       RFALSE  
+
+
+       .FUNCT  FIND-WEAPON,O,W
+       FIRST?  O >W /?KLU11
+?KLU11:        ZERO?   W /FALSE
+?PRG4: EQUAL?  W,SWORD \?ELS8
+       RETURN  W
+?ELS8: NEXT?   W >W /?PRG4
+       RFALSE  
+
+
+       .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 in the rock. You can't 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 smashes. The light is now 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  LIGHT-INT,OBJ,TBL,TICK
+       ZERO?   TICK \?CND1
+       FCLEAR  OBJ,ONBIT
+       FSET    OBJ,RMUNGBIT
+?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  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 /FALSE
+       ADD     TBL,4 >LAMP-TABLE
+       RETURN  LAMP-TABLE
+
+
+       .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  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  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
+       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 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 area 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
+       SUB     CPHERE,1
+       GET     CPTABLE,STACK
+       EQUAL?  STACK,-3 \?ELS5
+       CALL    CPLADDER-JUNK,FALSE-VALUE
+       RSTACK  
+?ELS5: ADD     CPHERE,1
+       GET     CPTABLE,STACK
+       EQUAL?  STACK,-2 \?ELS7
+       CALL    CPLADDER-JUNK,TRUE-VALUE
+       RSTACK  
+?ELS7: PRINTR  "You can't see any ladder here."
+
+
+       .FUNCT  CPLADDER-JUNK,FLG
+       EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
+       ZERO?   FLG /?ELS10
+       EQUAL?  CPHERE,1 \?ELS10
+       SET     'CPSOLVE-FLAG,TRUE-VALUE
+       CALL    GOTO,CP-ANTE
+       RSTACK  
+?ELS10:        PRINTR  "You hit your head on the ceiling and fall off the ladder."
+?ELS5: PRINTR  "Come, come!"
+
+
+       .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:
+"
+       CALL    FIXED-FONT-ON
+       PRINTI  "
+  .. = your position (middle of grid)
+  MM = marble wall
+  SS = sandstone wall
+  ?? = unknown (blocked by walls)
+
+"
+       CALL    FIXED-FONT-OFF
+?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  FIXED-FONT-ON
+       GET     0,8
+       BOR     STACK,2
+       PUT     0,8,STACK
+       RTRUE   
+
+
+       .FUNCT  FIXED-FONT-OFF
+       GET     0,8
+       BAND    STACK,-3
+       PUT     0,8,STACK
+       RTRUE   
+
+
+       .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  "You 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
+       CALL    FIXED-FONT-ON
+       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    
+       CALL    FIXED-FONT-OFF
+       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 into the slot and vanishes. The metal door slides open, revealing a passageway to the west, and a sign flashes:
+    ""Royal Puzzle Exit Fee Paid
+          Item Confiscated"""
+?ELS15:        FSET?   PRSO,ACTORBIT \?ELS19
+       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 out the "
+       PRINTD  PRSO
+       PRINTR  " (now atomized)."
+
+
+       .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 to 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?65
+       JUMP    ?CND25
+?ELS29:        PUSH    STR?66
+?CND25:        PRINT   STACK
+       PRINTI  " wall is a large "
+       ZERO?   MWIN /?ELS37
+       PUSH    STR?67
+       JUMP    ?CND33
+?ELS37:        PUSH    STR?68
+?CND33:        PRINT   STACK
+       CRLF    
+       ZERO?   M1? /?CND41
+       ZERO?   MIRROR-OPEN-FLAG /?CND41
+       ZERO?   MWIN /?ELS52
+       PUSH    STR?69
+       JUMP    ?CND48
+?ELS52:        PUSH    STR?70
+?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?72
+       JUMP    ?CND30
+?ELS32:        SET     'STELL,TRUE-VALUE
+       SET     'DIR,STR?73
+?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?74
+       JUMP    ?CND61
+?ELS65:        PUSH    STR?75
+?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?69
+       JUMP    ?CND76
+?ELS80:        PUSH    STR?70
+?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  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?76
+       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
+       EQUAL?  PRSO,ME \?ELS40
+       PRINTI  "You step"
+       JUMP    ?CND38
+?ELS40:        PRINTI  "The "
+       PRINTD  PRSO
+       PRINTI  " falls"
+       REMOVE  PRSO
+?CND38:        PRINTI  " in front of the Guardians, who "
+       EQUAL?  PRSO,ME \?ELS51
+       PRINTI  "decimate you"
+       JUMP    ?CND49
+?ELS51:        PRINTI  "destroy it"
+?CND49:        PRINTR  " in perfect unison. Satisfied, they resume their posts."
+?ELS35:        EQUAL?  PRSA,V?ATTACK \?ELS61
+       PRINTR  "You aren't close enough, and even if you were, the fight would be a bit one-sided."
+?ELS61:        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  "You 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  "You can't see any mirror here."
+?ELS5: EQUAL?  PRSA,V?MOVE,V?OPEN \?ELS9
+       PRINTR  "You 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?77
+       JUMP    ?CND79
+?ELS83:        PUSH    STR?78
+?CND79:        PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  PANEL-FUNCTION,MIRROR
+       CALL    MIRROR-HERE?,HERE >MIRROR
+       ZERO?   MIRROR \?ELS5
+       PRINTR  "You can't see any panel here."
+?ELS5: EQUAL?  PRSA,V?MOVE,V?OPEN \?ELS9
+       PRINTR  "You don't see a way to open the panel here."
+?ELS9: EQUAL?  PRSA,V?MUNG \?ELS13
+       EQUAL?  MIRROR,1 \?ELS18
+       ZERO?   MR1-FLAG /?ELS23
+       PRINT   MIRROR-FIRST
+       CRLF    
+       RTRUE   
+?ELS23:        PRINTR  "The panel is not that easily destroyed."
+?ELS18:        ZERO?   MR2-FLAG /?ELS32
+       PRINT   MIRROR-FIRST
+       CRLF    
+       RTRUE   
+?ELS32:        PRINTR  "The panel is not that easily destroyed."
+?ELS13:        EQUAL?  PRSA,V?PUSH \FALSE
+       EQUAL?  MIRROR,1 \?ELS48
+       PUSH    STR?79
+       JUMP    ?CND44
+?ELS48:        PUSH    STR?80
+?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 \?ELS16
+?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  
+?ELS16:        PRINTI  "There's a wall there."
+       CRLF    
+       RFALSE  
+?ELS10:        ZERO?   WOOD-OPEN-FLAG /?ELS33
+       EQUAL?  DIR,1 /?THN40
+       ADD     MDIR,180
+       MOD     STACK,360
+       EQUAL?  STACK,DIR \?ELS39
+?THN40:        ZERO?   MDIR \?ELS44
+       SET     'RM,FALSE-VALUE
+       JUMP    ?CND42
+?ELS44:        SET     'RM,TRUE-VALUE
+?CND42:        CALL    MIRNS,RM,TRUE-VALUE >RM
+       ZERO?   RM /?ELS51
+       PRINTI  "As you leave, the door swings shut."
+       CRLF    
+       SET     'WOOD-OPEN-FLAG,FALSE-VALUE
+       RETURN  RM
+?ELS51:        PRINTI  "You can't go that way."
+       CRLF    
+       RFALSE  
+?ELS39:        PRINTI  "You would hit one of the panels."
+       CRLF    
+       RFALSE  
+?ELS33:        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 blocked 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?88
+       RTRUE   
+?ELS16:        CALL    JIGS-UP,STR?89
+       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
+       RTRUE   
+?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?88
+       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?90
+       JUMP    ?CND6
+?ELS10:        PUSH    STR?91
+?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?92
+       RTRUE   
+?ELS45:        CALL    JIGS-UP,STR?93
+       RTRUE   
+
+
+       .FUNCT  SHORT-POLE-F
+       EQUAL?  PRSA,V?MOVE,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
+       LOC     PLAYER
+       IN?     DUNGEON-MASTER,STACK \?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
+       SET     'HERE,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
+       SET     'HERE,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
+       ZERO?   IN-DUNGEON /?ELS66
+       PRINTR  "The dungeon master appears angered. ""Do not run from your quest: you are nearing the end!"""
+?ELS66:        EQUAL?  PRSA,V?SPIN,V?TURN,V?PUSH /?THN73
+       EQUAL?  PRSA,V?OPEN,V?STAY,V?FOLLOW /?THN73
+       EQUAL?  PRSA,V?ATTACK,V?WAIT,V?CLOSE /?THN73
+       EQUAL?  PRSA,V?WALK-TO \?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?ATTACK \?ELS91
+       CALL    REALLY-DEAD,STR?94
+       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
+       ZERO?   IN-DUNGEON /?ELS23
+       SET     'PRSO,DUNGEON-MASTER
+       RFALSE  
+?ELS23:        SET     'P-CONT,FALSE-VALUE
+       SET     'QUOTE-FLAG,FALSE-VALUE
+       PRINTR  "The dungeon master isn't here."
+?ELS18:        EQUAL?  PRSA,V?SGIVE,V?GIVE \?ELS30
+       IN?     DUNGEON-MASTER,HERE \?ELS30
+       PRINTR  "He politely refuses your offer."
+?ELS30:        EQUAL?  PRSA,V?EXAMINE \?ELS36
+       EQUAL?  HERE,CELL,NORTH-CORRIDOR \?ELS36
+       IN?     DUNGEON-MASTER,PARAPET \?ELS36
+       PRINTR  "The dungeon master is standing on the parapet."
+?ELS36:        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-PANEL-F
+       EQUAL?  PRSA,V?OPEN \?ELS5
+       PRINTR  "You can't open the panel. It's set into the door."
+?ELS5: EQUAL?  PRSA,V?LOOK-INSIDE \FALSE
+       PRINTR  "There's not much to be seen."
+
+
+       .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 panel. Through the bars of the great door, the wrinkled face of an old man appears."
+       ZERO?   INVIS /?CND14
+       PRINTI  " He seems not to notice you for a brief moment, then recovers."
+?CND14:        CALL    LOOK-LIKE-DM?
+       ZERO?   STACK /?ELS24
+       PRINTI  " He starts to smile broadly and opens the massive door 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. You displayed 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 a 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 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: LOC     PLAYER
+       EQUAL?  STACK,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 parapet overlooking a fiery pit. It is difficult to see through the smoke and flame which fills the pit, but it seems to be 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 surrounding 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 cell door. Your view also takes in the parapet and a large, fiery pit."
+       CRLF    
+       JUMP    ?CND8
+?ELS10:        PRINTI  "through the small window in the closed door 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 at the parapet, leaning on his staff. His keen gaze is fixed on you and he looks 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 barred window. 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. Another hall 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 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 among the runes."
+
+
+       .FUNCT  HELLO?,WHO
+       EQUAL?  WINNER,WHO /?THN6
+       EQUAL?  PRSA,V?REPLY,V?ANSWER,V?TELL /?THN6
+       EQUAL?  PRSA,V?INCANT,V?HELLO,V?SAY \FALSE
+?THN6: EQUAL?  PRSA,V?SAY,V?ANSWER,V?TELL /?THN11
+       EQUAL?  PRSA,V?REPLY,V?INCANT \TRUE
+?THN11:        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 looks weak and tired."
+?ELS10:        PRINTR  "An old and wizened man is huddled, asleep, in the corner. He is snoring loudly, and looks quite 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. 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, the old man is 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 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 \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 an old man."
+
+
+       .FUNCT  T-BAR-F
+       EQUAL?  PRSA,V?TURN \FALSE
+       PRINTR  "You don't have enough leverage to turn the T-bar. You might be able to turn the whole structure, 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. It shows 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 room bathed in golden light. A legend beneath the picture says ""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."
+
+
+       .FUNCT  V-DIAGNOSE
+       GET     DIAG,P-STRENGTH
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  JIGS-UP,DESC,PLAYER?=0
+       SET     'SWORD-STATE,0
+       SET     'P-STRENGTH,5
+       SET     'S-STRENGTH,5
+       PRINT   DESC
+       CRLF    
+       EQUAL?  YEAR,YEAR-PRESENT /?CND3
+       QUIT    
+?CND3: EQUAL?  ADVENTURER,WINNER /?CND6
+       PRINTI  " 
+    ****  The "
+       PRINTD  WINNER
+       PRINTI  " has died  **** 
+
+"
+       REMOVE  WINNER
+       SET     'WINNER,ADVENTURER
+       LOC     WINNER >HERE
+       RETURN  2
+?CND6: PRINTI  "
+    ****  You have died  ****
+
+"
+       IGRTR?  'DEATHS,3 \?ELS17
+       PRINTI  "You feel yourself disembodied in a deep blackness. A voice from the void speaks:  ""I have waited a long age for you, my friend, but perhaps it has been another that I have been seeking. Good night, oh worthy adventurer!"" It is the last you hear."
+       CRLF    
+       QUIT    
+       JUMP    ?CND15
+?ELS17:        PRINTI  "You find yourself deep within the earth in a barren prison cell. Outside the iron-barred window, you can see a great, fiery pit. Flames leap up and very nearly sear your flesh. After a while, footfalls can be heard in the distance, then closer and closer.... The door swings open, and in walks an old man.
+
+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 massive prison cell, hangs from his belt.
+
+He raises the staff toward you and you hear him speak, as if in a dream: ""I await you, though your journey be long and full of peril. Go then, and let me not wait long!"" You feel some great power well up inside you and you fall to the floor. The next moment, you are awakening, as if from a deep slumber."
+       CRLF    
+?CND15:        MOVE    CURRENT-LAMP,ZORK2-STAIR
+       IN?     KEY,WINNER \?CND24
+       EQUAL?  HERE,DARK-1,DARK-2,KEY-ROOM /?THN29
+       EQUAL?  HERE,AQ-1,AQ-2 \?CND24
+?THN29:        MOVE    KEY,KEY-ROOM
+?CND24:        CRLF    
+       CALL    GOTO,ZORK2-STAIR
+       SET     'P-CONT,FALSE-VALUE
+       CALL    RANDOMIZE-OBJECTS
+       CALL    KILL-INTERRUPTS
+       RETURN  2
+
+
+       .FUNCT  RANDOMIZE-OBJECTS,R=0,F,N,L
+       FIRST?  WINNER >N /?KLU6
+?KLU6: 
+?PRG1: SET     'F,N
+       ZERO?   F /TRUE
+       NEXT?   F >N /?KLU7
+?KLU7: CALL    RANDOM-ELEMENT,DEAD-OBJ-LOCS
+       MOVE    F,STACK
+       JUMP    ?PRG1
+
+
+       .FUNCT  KILL-INTERRUPTS
+       CALL    INT,I-MAN-LEAVES
+       PUT     STACK,0,0
+       CALL    INT,I-MAN-RETURNS
+       PUT     STACK,0,0
+       CALL    INT,I-VIEW-SNAP
+       PUT     STACK,0,0
+       CALL    INT,I-FOLIN
+       PUT     STACK,0,0
+       RTRUE   
+
+
+       .FUNCT  V-SCORE,ASK?=1
+       PRINTI  "Your potential is "
+       PRINTN  SCORE
+       PRINTI  " of a possible "
+       PRINTN  SCORE-MAX
+       PRINTI  ", in "
+       PRINTN  MOVES
+       EQUAL?  MOVES,1 \?ELS9
+       PRINTI  " move."
+       JUMP    ?CND7
+?ELS9: PRINTI  " moves."
+?CND7: CRLF    
+       RETURN  SCORE
+
+
+       .FUNCT  TM-HOLLOW-F
+       EQUAL?  PRSA,V?PUT \?ELS5
+       EQUAL?  PRSI,TM-HOLLOW \?ELS5
+       CALL    PERFORM,V?PUT-UNDER,PRSO,TM-SEAT
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?LOOK-INSIDE \?ELS9
+       CALL    PERFORM,V?LOOK-UNDER,TM-SEAT
+       RTRUE   
+?ELS9: EQUAL?  PRSO,TM-HOLLOW \?ELS11
+       CALL    PERFORM,PRSA,TM-SEAT,PRSI
+       RTRUE   
+?ELS11:        EQUAL?  PRSI,TM-HOLLOW \FALSE
+       CALL    PERFORM,PRSA,PRSO,TM-SEAT
+       RTRUE   
+
+
+       .FUNCT  IRON-DOOR-F
+       EQUAL?  PRSA,V?THROUGH,V?UNLOCK,V?OPEN \FALSE
+       LESS?   YEAR,YEAR-PRESENT \?ELS10
+       PRINTR  "The iron door is locked from the outside."
+?ELS10:        PRINTR  "The iron door is rusted shut and cannot be opened."
+
+
+       .FUNCT  I-CLEFT
+       EQUAL?  HERE,ZORK-IV,ROOM-8,TIMBER-ROOM /?THN4
+       EQUAL?  HERE,LOWER-SHAFT,LADDER-BOTTOM,LADDER-TOP \?ELS3
+?THN4: PRINTI  "You feel a mild tremor from within the earth which passes quickly."
+       CRLF    
+       JUMP    ?CND1
+?ELS3: PRINTI  "There is a great tremor from within the earth. The entire dungeon shakes violently and loose debris falls from above you."
+       CRLF    
+?CND1: EQUAL?  HERE,MUSEUM-ANTE \?ELS14
+       PRINTI  "To the east, next to the great iron door, a cleft opens up, revealing an open area behind!"
+       CRLF    
+       JUMP    ?CND12
+?ELS14:        EQUAL?  HERE,AQ-VIEW \?ELS18
+       PRINTI  "One of the giant pillars supporting the aqueduct collapses in a pile of smoke and rubble!"
+       CRLF    
+       JUMP    ?CND12
+?ELS18:        EQUAL?  HERE,AQ-2,AQ-3 \?CND12
+       PRINTI  "The channel beneath your feet trembles. Then the channel just to the "
+       EQUAL?  HERE,AQ-2 \?ELS27
+       PRINTI  "north"
+       JUMP    ?CND25
+?ELS27:        PRINTI  "south"
+?CND25:        PRINTI  " collapses and falls into the chasm!"
+       CRLF    
+?CND12:        SET     'CLEFT-FLAG,TRUE-VALUE
+       FCLEAR  CLEFT,INVISIBLE
+       SET     'AQ-FLAG,FALSE-VALUE
+       RTRUE   
+
+
+       .FUNCT  CLEFT-F
+       EQUAL?  YEAR,YEAR-PRESENT /FALSE
+       PRINTR  "There is no cleft here."
+
+
+       .FUNCT  MUSEUM-ANTE-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       ZERO?   CLEFT-FLAG /?ELS10
+       PRINTR  "This is the south end of a monumental hall, full of debris from a recent earthquake. To the east is a great iron door, rusted shut. To its right, however, is a gaping cleft in the rock and behind, a cleared area."
+?ELS10:        PRINTR  "You are in the southern half of a monumental hall. To the east lies a tremendous iron door which appears to be rusted shut."
+
+
+       .FUNCT  DDESC,STR1,DOOR,STR2
+       PRINT   STR1
+       FSET?   DOOR,OPENBIT \?ELS5
+       PRINTI  "open"
+       JUMP    ?CND3
+?ELS5: PRINTI  "closed"
+?CND3: PRINT   STR2
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  MUSEUM-ENTRANCE-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       FSET?   CAGE,INVISIBLE \?ELS10
+       PRINTR  "This is an entrance hall of some sort, judging by the grand iron door to the west, and the ornate stone and wooden doors which lead to the east and north, respectively. A few wide steps lead south."
+?ELS10:        PRINTI  "This is the entrance to the Royal Museum, the finest and grandest in the Great Underground Empire. To the south, down a few steps, is the entrance to the Royal Puzzle and to the east, through a stone door, is the Royal Jewel Collection. A wooden door to the north is "
+       FSET?   WOODEN-DOOR,OPENBIT \?ELS23
+       PUSH    STR?117
+       JUMP    ?CND19
+?ELS23:        PUSH    STR?118
+?CND19:        PRINT   STACK
+       PRINTI  " and leads to the Museum of Technology. "
+       EQUAL?  YEAR,YEAR-PRESENT \?ELS30
+       PRINTR  "To the west is a great iron door, rusted shut. To its left, however, is a cleft in the rock providing an exit from the museum."
+?ELS30:        LESS?   YEAR,YEAR-PRESENT \?ELS34
+       PRINTR  "To the west is a great iron door, rusted shut."
+?ELS34:        PRINTR  "To the west is a great iron door, rusted shut. The cleft in the rock, present when you started, has filled in with rubble."
+
+
+       .FUNCT  TIME-MACHINE-F,RARG=0
+       EQUAL?  RARG,M-OBJDESC \?ELS5
+       PRINTI  "Directly in front of you is a large golden machine, which has a seat with a console in front. On the console is a single button and a dial connected to a three-digit display which reads "
+       PRINTN  TM-YEAR
+       PRINTR  ". The machine is suprisingly shiny and shows few signs of age."
+?ELS5: EQUAL?  RARG,M-BEG \?ELS9
+       EQUAL?  PRSA,V?MOVE \?ELS14
+       PRINTR  "You might be able to move the machine by pushing it."
+?ELS14:        EQUAL?  PRSA,V?PUSH-TO \?ELS18
+       EQUAL?  PRSO,TIME-MACHINE \?ELS18
+       PRINTR  "That would be a good trick from inside it."
+?ELS18:        EQUAL?  PRSA,V?WALK \?ELS24
+       PRINTR  "You're not going anywhere in this heap."
+?ELS24:        EQUAL?  PRSA,V?MOVE,V?PUT,V?TAKE /?THN31
+       EQUAL?  PRSA,V?CLOSE,V?OPEN,V?PUSH \FALSE
+?THN31:        CALL    HELD?,PRSO
+       ZERO?   STACK \FALSE
+       IN?     PRSO,TIME-MACHINE /FALSE
+       PRINTR  "You can't do that from inside the machine."
+?ELS9: ZERO?   RARG \FALSE
+       EQUAL?  PRSA,V?PUT \?ELS41
+       EQUAL?  PRSI,TIME-MACHINE \?ELS41
+       PRINTR  "You can't put anything on or inside the machine itself."
+?ELS41:        EQUAL?  PRSO,TIME-MACHINE \FALSE
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \?ELS52
+       PRINTR  "This is a machine, not a box."
+?ELS52:        EQUAL?  PRSA,V?EXAMINE \?ELS56
+       PRINTI  "The machine consists of a seat and a console containing one small button and a dial connected to a display which reads "
+       PRINTN  TM-YEAR
+       PRINTR  "."
+?ELS56:        EQUAL?  PRSA,V?BOARD \?ELS60
+       FIRST?  TM-SEAT \?ELS60
+       PRINTR  "That will be somewhat uncomfortable!"
+?ELS60:        EQUAL?  PRSA,V?RAISE,V?TAKE \?ELS66
+       PRINTR  "The machine must weigh hundreds of pounds and cannot be carried."
+?ELS66:        EQUAL?  PRSA,V?MOVE,V?PUSH \?ELS70
+       PRINTR  "You should specify in which direction to push the machine."
+?ELS70:        EQUAL?  PRSA,V?PUSH-TO \FALSE
+       CALL    DO-WALK,P-DIRECTION
+       EQUAL?  STACK,M-FATAL /TRUE
+       PRINTI  "With some effort, you push the machine into the room with you."
+       CRLF    
+       EQUAL?  HERE,CP-ANTE,MID-CP-ANTE \?ELS82
+       PRINTI  "However, the machine seems to have sustained some damage as a result of going over the stairs."
+       CRLF    
+       SET     'MACHINE-DAMAGED,TRUE-VALUE
+       JUMP    ?CND80
+?ELS82:        EQUAL?  HERE,MUSEUM-ANTE \?CND80
+       PRINTI  "Pushing the machine through the cleft seems to have damaged it."
+       CRLF    
+       SET     'MACHINE-DAMAGED,TRUE-VALUE
+?CND80:        MOVE    TIME-MACHINE,HERE
+       RTRUE   
+
+
+       .FUNCT  TM-SEAT-F
+       EQUAL?  PRSA,V?BOARD,V?CLIMB-ON \?ELS5
+       CALL    PERFORM,V?BOARD,TIME-MACHINE
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?PUT-BEHIND,V?PUT-UNDER \?ELS7
+       EQUAL?  PRSI,TM-SEAT \?ELS7
+       EQUAL?  PRSO,RING \?ELS14
+       PRINTI  "The ring is concealed underneath the seat."
+       CRLF    
+       SET     'RING-CONCEALED,TRUE-VALUE
+       REMOVE  RING
+       RTRUE   
+?ELS14:        PRINTR  "It's too big to hide under the seat."
+?ELS7: EQUAL?  PRSA,V?RUB \?ELS22
+       PRINTR  "There's nothing odd about the feel of the seat."
+?ELS22:        EQUAL?  PRSA,V?MOVE,V?RAISE,V?LOOK-UNDER \FALSE
+       ZERO?   RING-CONCEALED /?ELS31
+       PRINTI  "You find the ring under the seat and put it on your finger."
+       CRLF    
+       MOVE    RING,WINNER
+       SET     'RING-CONCEALED,FALSE-VALUE
+       RTRUE   
+?ELS31:        PRINTR  "You notice a small hollow area under the seat."
+
+
+       .FUNCT  TM-DIAL-F
+       EQUAL?  PRSA,V?EXAMINE \?ELS5
+       PRINTI  "The dial is set to "
+       PRINTN  TM-YEAR
+       PRINTR  "."
+?ELS5: EQUAL?  PRSA,V?TURN \FALSE
+       EQUAL?  PRSI,INTNUM \?ELS14
+       GRTR?   P-NUMBER,999 \?ELS19
+       PRINTR  "You can't set it beyond 999."
+?ELS19:        SET     'TM-YEAR,P-NUMBER
+       PRINTI  "The dial is set to "
+       PRINTN  TM-YEAR
+       PRINTR  "."
+?ELS14:        ZERO?   PRSI \?ELS27
+       PRINTR  "You have to say what to turn it to!"
+?ELS27:        PRINTR  "You can't do that!"
+
+
+       .FUNCT  TM-BUTTON-F
+       EQUAL?  PRSA,V?PUSH \FALSE
+       EQUAL?  TM-YEAR,YEAR-BUILT \?CND6
+       ZERO?   TM-POINT \?CND6
+       INC     'SCORE
+       SET     'TM-POINT,TRUE-VALUE
+?CND6: ZERO?   MACHINE-DAMAGED \?THN16
+       IN?     WINNER,TIME-MACHINE /?ELS15
+?THN16:        PRINTR  "Nothing seems to have happened."
+?ELS15:        LESS?   TM-YEAR,YEAR-BUILT \?ELS21
+       CALL    REALLY-DEAD,STR?119
+       RSTACK  
+?ELS21:        EQUAL?  YEAR,TM-YEAR \?ELS23
+       PRINTR  "Nothing seems to have happened."
+?ELS23:        LESS?   TM-YEAR,YEAR-CLOSED \?ELS27
+       PRINTI  "You experience a brief period of disorientation. When your vision returns, "
+       EQUAL?  HERE,MUSEUM-ENTRANCE,MID-MUSEUM-ENTRANCE,OLD-MUSEUM-ENTRANCE \?ELS34
+       EQUAL?  TM-YEAR,YEAR-CAGED \?ELS39
+       PRINTI  "you are surrounded by a number of heavily armed guards, the dress and speech of which seem strange and unfamiliar. A commotion starts at a door to the east and a person with a flat head, wearing a gaudy crown and a purple robe, bursts into the room."
+       CRLF    
+       CALL    FLATHEAD-SENTENCE
+       RSTACK  
+?ELS39:        CALL    GUARDS-KILL
+       RSTACK  
+?ELS34:        EQUAL?  HERE,JEWEL-ROOM,MID-JEWEL-ROOM,OLD-JEWEL-ROOM \?ELS45
+       EQUAL?  TM-YEAR,YEAR-CAGED \?ELS50
+       PRINTI  "you find yourself in the middle of some kind of ceremony, with a strange flat-headed man wearing royal vestments about to break a bottle on the bars of an iron cage containing magnificent jewels. He appears pleased by your presence. "
+       CALL    FLATHEAD-SENTENCE
+       RSTACK  
+?ELS50:        GRTR?   TM-YEAR,YEAR-CAGED \?ELS54
+       CALL    GUARDS-KILL
+       RSTACK  
+?ELS54:        PRINT   SURROUNDINGS-CHANGED
+       CRLF    
+       CALL    TGOTO,OLD-JEWEL-ROOM
+       RSTACK  
+?ELS45:        EQUAL?  HERE,TECH-MUSEUM,MID-TECH-MUSEUM,OLD-TECH-MUSEUM \FALSE
+       EQUAL?  TM-YEAR,YEAR-BUILT /?ELS65
+       CALL    GUARDS-KILL
+       RSTACK  
+?ELS65:        PRINT   SURROUNDINGS-CHANGED
+       CRLF    
+       CALL    TGOTO,OLD-TECH-MUSEUM
+       RSTACK  
+?ELS27:        CALL    HAPPY-NEW-YEAR
+       RSTACK  
+
+
+       .FUNCT  HAPPY-NEW-YEAR
+       PRINTI  "You experience a brief period of disorientation. When your vision returns, your surroundings appear somewhat altered."
+       CRLF    
+       EQUAL?  HERE,OLD-JEWEL-ROOM,MID-JEWEL-ROOM,JEWEL-ROOM \?ELS7
+       LESS?   TM-YEAR,YEAR-PRESENT \?ELS12
+       CALL    TGOTO,MID-JEWEL-ROOM
+       RSTACK  
+?ELS12:        CALL    TGOTO,JEWEL-ROOM
+       RSTACK  
+?ELS7: EQUAL?  HERE,OLD-TECH-MUSEUM,MID-TECH-MUSEUM,TECH-MUSEUM \?ELS16
+       LESS?   TM-YEAR,YEAR-PRESENT \?ELS21
+       CALL    TGOTO,MID-TECH-MUSEUM
+       RSTACK  
+?ELS21:        CALL    TGOTO,TECH-MUSEUM
+       RSTACK  
+?ELS16:        LESS?   TM-YEAR,YEAR-PRESENT \?ELS25
+       CALL    TGOTO,MID-MUSEUM-ENTRANCE
+       RSTACK  
+?ELS25:        CALL    TGOTO,MUSEUM-ENTRANCE
+       RSTACK  
+
+
+       .FUNCT  I-SNAP
+       EQUAL?  YEAR,YEAR-PRESENT /FALSE
+       SET     'TM-YEAR,YEAR-PRESENT
+       PRINTI  "You start to feel light-headed and quickly become completely disoriented. When your head clears, you realize that your surroundings have changed."
+       CRLF    
+       CALL    TGOTO,SNAP-LOC,TRUE-VALUE
+       RSTACK  
+
+
+       .FUNCT  MOVE-JEWELS
+       EQUAL?  TM-YEAR,YEAR-BUILT \?ELS3
+       MOVE    PEDESTAL,OLD-JEWEL-ROOM
+       JUMP    ?CND1
+?ELS3: LESS?   TM-YEAR,YEAR-PRESENT \?ELS5
+       MOVE    PEDESTAL,MID-JEWEL-ROOM
+       JUMP    ?CND1
+?ELS5: MOVE    PEDESTAL,JEWEL-ROOM
+?CND1: ZERO?   RING-STOLEN \TRUE
+       MOVE    SCEPTRE,PEDESTAL
+       FSET    SCEPTRE,NDESCBIT
+       MOVE    JEWELLED-KNIFE,PEDESTAL
+       FSET    JEWELLED-KNIFE,NDESCBIT
+       ZERO?   RING-CONCEALED \FALSE
+       MOVE    RING,PEDESTAL
+       FSET    RING,NDESCBIT
+       RTRUE   
+
+
+       .FUNCT  TGOTO,RM=0,SNAP=0
+       INC     'MOVES
+       CALL    QUEUE,I-GUARDS-LEAVE,0
+       SET     'INVIS,FALSE-VALUE
+       GRTR?   YEAR,YEAR-BUILT \?CND1
+       SET     'GUARDS-PRESENT,TRUE-VALUE
+?CND1: EQUAL?  YEAR,YEAR-PRESENT \?CND4
+       SET     'SNAP-LOC,HERE
+       CALL    QUEUE,I-SNAP,40
+       PUT     STACK,0,1
+?CND4: EQUAL?  TM-YEAR,YEAR-PRESENT \?ELS9
+       SET     'CLEFT-FLAG,TRUE-VALUE
+       JUMP    ?CND7
+?ELS9: SET     'CLEFT-FLAG,FALSE-VALUE
+?CND7: FCLEAR  JEWEL-DOOR,OPENBIT
+       FCLEAR  WOODEN-DOOR,OPENBIT
+       FCLEAR  IRON-DOOR,OPENBIT
+       EQUAL?  YEAR,YEAR-BUILT \?CND12
+       ZERO?   RING-CONCEALED /?ELS17
+       IN?     TIME-MACHINE,OLD-TECH-MUSEUM \?ELS17
+       IN?     SCEPTRE,PEDESTAL \?ELS17
+       IN?     JEWELLED-KNIFE,PEDESTAL \?ELS17
+       SET     'RING-STOLEN,TRUE-VALUE
+       FSET    CAGE,INVISIBLE
+       REMOVE  SCEPTRE
+       REMOVE  JEWELLED-KNIFE
+       JUMP    ?CND12
+?ELS17:        IN?     TIME-MACHINE,OLD-TECH-MUSEUM \?THN22
+       ZERO?   RING-CONCEALED /?ELS21
+?THN22:        SET     'CLUMSY-ROBBERY,TRUE-VALUE
+       REMOVE  TIME-MACHINE
+       JUMP    ?CND12
+?ELS21:        IN?     RING,PEDESTAL \?THN26
+       IN?     SCEPTRE,PEDESTAL \?THN26
+       IN?     JEWELLED-KNIFE,PEDESTAL /?CND12
+?THN26:        SET     'MYSTERY,TRUE-VALUE
+?CND12:        EQUAL?  TM-YEAR,YEAR-BUILT \?CND28
+       SET     'MYSTERY,FALSE-VALUE
+       SET     'CLUMSY-ROBBERY,FALSE-VALUE
+?CND28:        SET     'YEAR,TM-YEAR
+       CALL    MOVE-TM-OBJECTS
+       CALL    MOVE-JEWELS
+       MOVE    WINNER,HERE
+       CALL    GOTO,RM,FALSE-VALUE
+       EQUAL?  YEAR,YEAR-BUILT \?ELS33
+       MOVE    TIME-MACHINE,OLD-TECH-MUSEUM
+       MOVE    SPINNER,OLD-TECH-MUSEUM
+       MOVE    PRESSURIZER,OLD-TECH-MUSEUM
+       MOVE    TECH-PLAQUE,OLD-TECH-MUSEUM
+       JUMP    ?CND31
+?ELS33:        LESS?   YEAR,YEAR-PRESENT \?ELS35
+       ZERO?   CLUMSY-ROBBERY \?CND36
+       MOVE    TIME-MACHINE,MID-TECH-MUSEUM
+?CND36:        MOVE    SPINNER,MID-TECH-MUSEUM
+       MOVE    PRESSURIZER,MID-TECH-MUSEUM
+       MOVE    TECH-PLAQUE,MID-TECH-MUSEUM
+       MOVE    CAGE,MID-JEWEL-ROOM
+       JUMP    ?CND31
+?ELS35:        MOVE    TIME-MACHINE,TECH-MUSEUM
+       MOVE    SPINNER,TECH-MUSEUM
+       MOVE    PRESSURIZER,TECH-MUSEUM
+       MOVE    TECH-PLAQUE,TECH-MUSEUM
+       MOVE    CAGE,JEWEL-ROOM
+?CND31:        ZERO?   CLUMSY-ROBBERY \?THN44
+       EQUAL?  HERE,TECH-MUSEUM,MID-TECH-MUSEUM,OLD-TECH-MUSEUM /?ELS43
+?THN44:        ZERO?   SNAP \?CND41
+       PRINTI  "You notice that the golden machine has disappeared!"
+       CRLF    
+       JUMP    ?CND41
+?ELS43:        MOVE    WINNER,TIME-MACHINE
+?CND41:        ZERO?   CLUMSY-ROBBERY /TRUE
+       REMOVE  TIME-MACHINE
+       RTRUE   
+
+
+       .FUNCT  MOVE-TM-OBJECTS,F,MFLG=0,WFLG=0,N
+       FIRST?  TIME-MACHINE >F /?KLU53
+?KLU53:        ZERO?   F /?CND1
+?PRG5: EQUAL?  F,TM-DIAL,TM-SEAT,TM-BUTTON /?CND7
+       EQUAL?  F,PLAYER \?ELS9
+       JUMP    ?CND7
+?ELS9: ZERO?   MFLG \?CND7
+       SET     'MFLG,TRUE-VALUE
+       PRINTI  "You notice that everything in the machine is gone"
+?CND7: NEXT?   F >N /?KLU54
+?KLU54:        EQUAL?  F,TM-DIAL,TM-SEAT,TM-BUTTON /?CND16
+       MOVE    F,HERE
+?CND16:        SET     'F,N
+       ZERO?   F \?PRG5
+?CND1: FIRST?  WINNER >F /?KLU55
+?KLU55:        ZERO?   F /?CND22
+?PRG26:        ZERO?   WFLG \?CND28
+       SET     'WFLG,TRUE-VALUE
+       ZERO?   MFLG /?ELS33
+       PRINTI  ": come to mention it, everything you were holding has vanished too"
+       JUMP    ?CND28
+?ELS33:        PRINTI  "You notice that everything you were holding is gone"
+?CND28:        NEXT?   F >N /?KLU56
+?KLU56:        MOVE    F,HERE
+       SET     'F,N
+       ZERO?   F \?PRG26
+?CND22:        ZERO?   MFLG \?THN49
+       ZERO?   WFLG /FALSE
+?THN49:        PRINTR  "!"
+
+
+       .FUNCT  GUARDS-KILL
+       CALL    PICK-ONE,GUARD-KILLERS
+       PRINT   STACK
+       CRLF    
+       CALL    REALLY-DEAD,STR?10
+       RSTACK  
+
+
+       .FUNCT  FLATHEAD-SENTENCE
+       CALL    REALLY-DEAD,STR?124
+       RSTACK  
+
+
+       .FUNCT  REALLY-DEAD,STR
+       PRINT   STR
+       PRINTI  "
+
+****  You have died  ****
+
+"
+       CALL    FINISH
+       RSTACK  
+
+
+       .FUNCT  HEAR-FLATHEAD
+       SET     'FLATHEAD-HEARD,TRUE-VALUE
+       PRINTR  "One particularly loud and grating voice can be heard above the others outside the room. ""Very nice! Very nice! Not enough security, but very nice! Now, Lord Feepness, pay attention! I've been thinking that what we need is a dam, a tremendous dam to control the Frigid River, with thousands of gates. We shall call it ... Flood Control Dam #2. No, not quite right. Aha! Flood Control Dam #3."" ""Pardon me, my Lord, but wouldn't that be just a tad excessive?"" ""Nonsense! Now, let me tell you my idea for hollowing out volcanoes..."" With that, the voices trail out nothingness."
+
+
+       .FUNCT  OLD-TECH-MUSEUM-F,RARG
+       EQUAL?  RARG,M-LOOK \?ELS5
+       EQUAL?  HERE,OLD-JEWEL-ROOM \?ELS5
+       PRINTI  "You are in a high-ceilinged chamber, in the center of which is a pedestal which "
+       ZERO?   RING-STOLEN \?ELS12
+       PRINTI  "is the intended home of the Crown Jewels of the Great Underground Empire: a jewelled knife, a golden ring, and the royal sceptre."
+       IN?     SCEPTRE,PEDESTAL \?THN18
+       IN?     RING,PEDESTAL \?THN18
+       IN?     JEWELLED-KNIFE,PEDESTAL /?CND10
+?THN18:        PRINTI  " Not all of the jewels are in place, however."
+       JUMP    ?CND10
+?ELS12:        PRINTI  "is bare."
+?CND10:        PRINTI  " The room is, by appearances, unfinished."
+       CRLF    
+       ZERO?   GUARDS-PRESENT /TRUE
+       PRINT   HEAR-VOICES
+       CRLF    
+       RTRUE   
+?ELS5: EQUAL?  RARG,M-LOOK \?ELS35
+       EQUAL?  HERE,OLD-TECH-MUSEUM \?ELS38
+       PRINTI  "You are in a large, unfinished room, probably intended to be a part of the Royal Museum."
+       CRLF    
+       JUMP    ?CND36
+?ELS38:        PRINTI  "This appears to be an unfinished entranceway to the Royal Museum. There are doors to the east and north, and a blind stairway to the south. A heavy iron door to the west is closed and locked."
+       CRLF    
+?CND36:        ZERO?   GUARDS-PRESENT /TRUE
+       PRINT   HEAR-VOICES
+       CRLF    
+       RTRUE   
+?ELS35:        EQUAL?  RARG,M-END \?ELS52
+       ZERO?   FLATHEAD-HEARD \?ELS52
+       ZERO?   GUARDS-PRESENT /?ELS52
+       RANDOM  100
+       GRTR?   6,STACK \?ELS52
+       CALL    HEAR-FLATHEAD
+       RSTACK  
+?ELS52:        EQUAL?  RARG,M-ENTER \?ELS56
+       ZERO?   GUARDS-PRESENT /?ELS56
+       RANDOM  12
+       ADD     3,STACK
+       CALL    QUEUE,I-GUARDS-LEAVE,STACK
+       PUT     STACK,0,1
+       RTRUE   
+?ELS56:        EQUAL?  RARG,M-BEG \?ELS60
+       EQUAL?  PRSA,V?OPEN \?ELS60
+       EQUAL?  PRSO,WOODEN-DOOR,JEWEL-DOOR \?ELS60
+       ZERO?   GUARDS-PRESENT /?ELS60
+       PRINTR  "You open the door ever so slightly and see dozens of armed officials. You shut the door quickly, realizing that you would be killed in an instant if you left the room."
+?ELS60:        EQUAL?  RARG,M-BEG \FALSE
+       ZERO?   GUARDS-PRESENT /FALSE
+       RANDOM  100
+       GRTR?   3,STACK \FALSE
+       CALL    GUARD-CAUGHT
+       RSTACK  
+
+
+       .FUNCT  I-GUARDS-LEAVE
+       SET     'GUARDS-PRESENT,FALSE-VALUE
+       PRINTR  "You hear, from outside the door, guards marching away, their voices fading. After a few moments, a booming crash signals the close of what must be a tremendous door. Then there is silence."
+
+
+       .FUNCT  GUARD-CAUGHT
+       CALL    REALLY-DEAD,STR?126
+       RSTACK  
+
+
+       .FUNCT  ROBOT-F
+       EQUAL?  PRSA,V?FOLLOW \?ELS5
+       PRINTR  "It moved quickly and left the door closed."
+?ELS5: PRINTR  "There is no robot here."
+
+
+       .FUNCT  JEWEL-ROOM-F,RARG
+       EQUAL?  RARG,M-END \?ELS5
+       IN?     TIME-MACHINE,HERE \?ELS5
+       RANDOM  100
+       GRTR?   4,STACK \?ELS5
+       PRINTI  "An odd robot-like device glides in, dusting the floor as it moves. Its head gyrates briefly as it scans the machine. ""Shame. Shame,"" it says, rather tinnily. ""Someone has been tampering with the machines again."" Six beady mechanical eyes focus on you as the robot picks up the gold machine. ""Hands off, adventurer!"" it says as it leaves the room, closing the door behind it."
+       CRLF    
+       FCLEAR  JEWEL-DOOR,OPENBIT
+       FCLEAR  WOODEN-DOOR,OPENBIT
+       MOVE    TIME-MACHINE,TECH-MUSEUM
+       RTRUE   
+?ELS5: EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "You are in a high-ceilinged chamber"
+       FSET?   CAGE,INVISIBLE /?ELS18
+       PRINTR  " in the middle of which sits a tall, round steel cage, which is securely locked. In the middle of the cage is a pedestal on which sit the Crown Jewels of the Great Underground Empire: a sceptre, a jewelled knife, and a golden ring. A small bronze plaque, now tarnished, is on the cage."
+?ELS18:        PRINTR  " in the middle of which is a bare pedestal. The room is unfinished with no indication of its purpose. A small plaque is fastened to a wall."
+
+
+       .FUNCT  CROWN-JEWELS-F
+       EQUAL?  PRSA,V?TAKE \?ELS5
+       CALL    HELD?,PRSO
+       ZERO?   STACK \FALSE
+       EQUAL?  YEAR,YEAR-BUILT /?THN13
+       FSET?   CAGE,INVISIBLE \?ELS12
+?THN13:        FCLEAR  PRSO,NDESCBIT
+       RFALSE  
+?ELS12:        PRINTR  "The jewels are inside a locked cage."
+?ELS5: EQUAL?  PRSA,V?PUT \?ELS20
+       EQUAL?  PRSI,PEDESTAL \?ELS20
+       IN?     PRSO,WINNER \?ELS20
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTI  " is now resting on the pedestal."
+       CRLF    
+       MOVE    PRSO,PEDESTAL
+       FSET    PRSO,NDESCBIT
+       RTRUE   
+?ELS20:        EQUAL?  PRSA,V?PUT \FALSE
+       CALL    HELD?,PRSO
+       ZERO?   STACK \FALSE
+       PRINTI  "You don't have the "
+       PRINTD  PRSO
+       PRINTR  "."
+
+
+       .FUNCT  TECH-MUSEUM-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       FSET?   CAGE,INVISIBLE \?ELS10
+       CALL    DDESC,STR?127,WOODEN-DOOR,STR?128
+       RSTACK  
+?ELS10:        CALL    DDESC,STR?129,WOODEN-DOOR,STR?128
+       RSTACK  
+
+
+       .FUNCT  PLAQUE-F
+       EQUAL?  PRSA,V?READ,V?EXAMINE \FALSE
+       ZERO?   RING-STOLEN /?CND6
+       PRINTR  "The plaque explains that this room was to be the home of the Crown Jewels of the Empire. However, following the unexplained disappearance of a priceless ring during the final stages of construction, Lord Flathead decided to place the remaining jewels in a safer location. Interestingly, he placed his most prized possesion, an incredibly gaudy crown, in a locked safe in a volcano specifically hollowed out for that purpose."
+?CND6: CALL    FIXED-FONT-ON
+       PRINTI  "
+         Crown Jewels
+
+  Presented To The Royal Museum
+      By His Gracious Lord
+
+        DIMWIT FLATHEAD
+
+          Dedicated
+         * 777 GUE *"
+       CALL    FIXED-FONT-OFF
+       ZERO?   CLUMSY-ROBBERY /?ELS16
+       CRLF    
+       CRLF    
+       PRINTI  "Underneath the plaque, in small lettering, is a description of a clumsy attempt to steal the jewels using a time machine from the Technological Museum which the curators were surprised to discover was not a nonworking model. After the attempt, the machine was removed from the exhibit."
+       JUMP    ?CND14
+?ELS16:        ZERO?   MYSTERY /?CND14
+       CRLF    
+       CRLF    
+       PRINTI  "Underneath the plaque, in small lettering, is a description of a mysterious happening during the final stages of construction of the Museum, in which some of the crown jewels were found displaced from their proper positions. Fortunately, nothing was missing. The mystery was never solved and the museum was opened despite the objections of Lord Flathead that security was too lax."
+?CND14:        CRLF    
+       RTRUE   
+
+
+       .FUNCT  WOODEN-DOOR-F
+       EQUAL?  PRSA,V?LISTEN \?ELS5
+       ZERO?   GUARDS-PRESENT /?ELS5
+       CALL    PERFORM,V?LISTEN,VOICES
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?KNOCK \FALSE
+       ZERO?   GUARDS-PRESENT /FALSE
+       PRINTR  "You realize that calling attention to yourself would be fatal."
+
+
+       .FUNCT  JEWEL-DOOR-F
+       EQUAL?  PRSA,V?KNOCK \?ELS5
+       ZERO?   GUARDS-PRESENT /?ELS5
+       CALL    PERFORM,V?KNOCK,WOODEN-DOOR
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?UNLOCK,V?OPEN \FALSE
+       FSET?   JEWEL-DOOR,OPENBIT \?ELS14
+       PRINTR  "It is already open."
+?ELS14:        EQUAL?  YEAR,YEAR-BUILT \?ELS18
+       EQUAL?  HERE,OLD-MUSEUM-ENTRANCE \?ELS18
+       PRINTR  "The door is locked, probably by the guards on their way out."
+?ELS18:        PRINTI  "The door is now open."
+       CRLF    
+       FSET    JEWEL-DOOR,OPENBIT
+       RTRUE   
+
+
+       .FUNCT  CAGE-F
+       EQUAL?  PRSA,V?OPEN \?ELS5
+       PRINTR  "The cage is locked."
+?ELS5: EQUAL?  PRSA,V?CLOSE \FALSE
+       PRINTR  "The cage is already closed."
+
+
+       .FUNCT  VOICES-F
+       ZERO?   GUARDS-PRESENT /?ELS5
+       EQUAL?  YEAR,YEAR-BUILT \?ELS5
+       PRINTI  "The voices are muffled by the door which (fortunately for you) separates you. They seem to be in heated debate on the topic of "
+       CALL    PICK-ONE,BLATHER
+       PRINT   STACK
+       PRINTR  "."
+?ELS5: PRINTR  "Are you hearing things now?"
+
+
+       .FUNCT  MUSEUM-PIECES,RARG=0
+       EQUAL?  RARG,M-OBJDESC \?ELS5
+       EQUAL?  DESC-OBJECT,SPINNER /TRUE
+       PRINTI  "A strange grey machine, shaped somewhat like a clothes dryer, is on one side of the room. On the other side of the hall is a powerful-looking black machine, a tight tangle of wires, pipes, and motors.
+A plaque is mounted near the door."
+       LESS?   YEAR,YEAR-CLOSED \?ELS15
+       PRINTR  " The grey machine, it turns out, is a Frobozz Magic Pressurizer, used in the coal mines of the Empire. The black machine is a Frobozz Magic Room Spinner. The golden machine is referred to as a Temporizer. All are nonworking models donated by Frobozzco president John D. Flathead."
+?ELS15:        PRINTR  " The writing is faded, however, and cannot be made out clearly. The two machines seem to be in bad shape, rusting in many spots."
+?ELS5: EQUAL?  PRSA,V?MOVE,V?TAKE \?ELS23
+       PRINTR  "It's massive and cannot even be moved."
+?ELS23:        EQUAL?  PRSA,V?PUSH-TO,V?PUSH \?ELS27
+       PRINTR  "It's too heavy to be pushed."
+?ELS27:        EQUAL?  PRSA,V?MUNG \?ELS31
+       PRINTR  "It seems quite indestructible."
+?ELS31:        EQUAL?  PRSA,V?PUT \FALSE
+       EQUAL?  PRSI,SPINNER,PRESSURIZER \FALSE
+       PRINTR  "There's no good place to put anything there."
+
+
+       .FUNCT  TECH-PLAQUE-F
+       EQUAL?  PRSA,V?TAKE \?ELS5
+       PRINTR  "It's bolted to the wall."
+?ELS5: EQUAL?  PRSA,V?READ,V?EXAMINE \FALSE
+       LESS?   YEAR,YEAR-CLOSED \?ELS14
+       PRINTR  "The plaque merely identifies the machines and names their donor. They are nonworking models of existing state-of-the-art machinery."
+?ELS14:        PRINTR  "The words cannot be made out."
+
+
+       .FUNCT  PEDESTAL-F
+       EQUAL?  PRSA,V?LOOK-ON,V?EXAMINE \?ELS5
+       FIRST?  PEDESTAL \FALSE
+       PRINTR  "The Royal Jewels are on the pedestal."
+?ELS5: EQUAL?  PRSA,V?TAKE,V?PUT-ON,V?PUT \FALSE
+       FSET?   CAGE,INVISIBLE /FALSE
+       PRINTR  "You can't reach it through the cage."
+
+
+       .FUNCT  PICK-DIRECTION,RM,NXT=0,CNT=0,OFFS=0
+?PRG1: NEXTP   RM,NXT >NXT
+       ZERO?   NXT \?ELS5
+       JUMP    ?REP2
+?ELS5: LESS?   NXT,LOW-DIRECTION /?PRG1
+       EQUAL?  NXT,P?UP,P?DOWN /?PRG1
+       INC     'OFFS
+       PUT     DIR-TBL,OFFS,NXT
+       INC     'CNT
+       JUMP    ?PRG1
+?REP2: RANDOM  CNT
+       GET     DIR-TBL,STACK
+       RSTACK  
+
+
+       .FUNCT  SHADOW-F,RARG=0
+       EQUAL?  RARG,M-OBJDESC \?ELS5
+       ZERO?   BLOCKED-DIR \?CND6
+       CALL    PICK-DIRECTION,HERE >BLOCKED-DIR
+?CND6: PRINTI  "A cloaked and hooded person, carrying a sword not unlike your own,"
+       GRTR?   S-STRENGTH,3 \?ELS13
+       PRINTI  " is standing blocking the way to the "
+       CALL    LKP,BLOCKED-DIR,DIRS
+       PRINT   STACK
+       PRINTI  "."
+       CRLF    
+       JUMP    ?CND11
+?ELS13:        PRINTI  " is here."
+       CRLF    
+?CND11:        PRINTI  "The hooded figure"
+       GET     SHADOW-DIAG,S-STRENGTH
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?GIVE \?ELS25
+       EQUAL?  PRSI,SHADOW \?ELS25
+       PRINTR  "The hooded figure isn't interested in your gifts."
+?ELS25:        CALL    HELLO?,SHADOW
+       ZERO?   STACK /?ELS31
+       PRINTR  "The hooded figure does not respond to your words."
+?ELS31:        EQUAL?  PRSA,V?ATTACK \?ELS35
+       EQUAL?  PRSI,SWORD \?ELS35
+       ZERO?   SHADOW-POINT-2 \?CND38
+       INC     'SCORE
+       SET     'SHADOW-POINT-2,TRUE-VALUE
+?CND38:        CALL    SHADOW-ATTACK
+       RSTACK  
+?ELS35:        EQUAL?  PRSA,V?ATTACK \FALSE
+       PRINTI  "The hooded figure ignores your feeble attack."
+       CRLF    
+       SET     'ATTACK-MODE,TRUE-VALUE
+       CALL    QUEUE,I-CURE,10
+       PUT     STACK,0,1
+       CALL    QUEUE,I-SHADOW-REPLY,-1
+       PUT     STACK,0,1
+       RTRUE   
+
+
+       .FUNCT  I-CURE
+       EQUAL?  P-STRENGTH,5 /?CND1
+       INC     'P-STRENGTH
+?CND1: EQUAL?  S-STRENGTH,5 /?CND4
+       INC     'S-STRENGTH
+?CND4: ADD     P-STRENGTH,S-STRENGTH
+       EQUAL?  STACK,10 /FALSE
+       CALL    QUEUE,I-CURE,10
+       RFALSE  
+
+
+       .FUNCT  SHADOW-ATTACK,?TMP1
+       ZERO?   ATTACK-MODE \?CND1
+       CALL    QUEUE,I-CURE,10
+       PUT     STACK,0,1
+       SET     'ATTACK-MODE,TRUE-VALUE
+       CALL    QUEUE,I-SHADOW-REPLY,-1
+       PUT     STACK,0,1
+?CND1: MUL     P-STRENGTH,10
+       ADD     STACK,10 >?TMP1
+       RANDOM  100
+       GRTR?   ?TMP1,STACK \?ELS8
+       RANDOM  100
+       GRTR?   85,STACK \?ELS13
+       DEC     'S-STRENGTH
+       ZERO?   S-STRENGTH \?CND14
+       CALL    SHADOW-DIES
+       RTRUE   
+?CND14:        CALL    PICK-ONE,P-HITS
+       PRINT   STACK
+       CRLF    
+       PRINTI  "The figure"
+       GET     SHADOW-DIAG,S-STRENGTH
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?ELS13:        SUB     S-STRENGTH,2 >S-STRENGTH
+       ZERO?   S-STRENGTH \?ELS25
+       SET     'S-STRENGTH,1
+       JUMP    ?CND23
+?ELS25:        LESS?   S-STRENGTH,1 \?CND23
+       CALL    SHADOW-DIES
+       RTRUE   
+?CND23:        PRINTI  "A sharp thrust and the hooded figure is badly wounded!"
+       CRLF    
+       PRINTI  "The figure"
+       GET     SHADOW-DIAG,S-STRENGTH
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?ELS8: LESS?   S-STRENGTH,2 \?ELS38
+       PRINTR  "Your opponent blocks your attack with its sword."
+?ELS38:        CALL    PICK-ONE,P-MISSES
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  I-SHADOW-REPLY,?TMP1
+       ZERO?   ATTACK-MODE /?THN4
+       IN?     SHADOW,HERE /?CND1
+?THN4: CALL    QUEUE,I-SHADOW-REPLY,0
+       SET     'ATTACK-MODE,FALSE-VALUE
+       RFALSE  
+?CND1: IN?     SWORD,WINNER /?CND6
+       MOVE    SWORD,WINNER
+       PRINTI  "Your sword, glowing wildly, leaps into your hand!"
+       CRLF    
+?CND6: MUL     S-STRENGTH,10
+       ADD     STACK,10 >?TMP1
+       RANDOM  100
+       GRTR?   ?TMP1,STACK \?ELS15
+       GRTR?   S-STRENGTH,1 \?ELS15
+       RANDOM  100
+       GRTR?   90,STACK \?ELS22
+       DLESS?  'P-STRENGTH,1 \?ELS27
+       SET     'P-STRENGTH,1
+       PRINTR  "The hooded figure swings its sword and sends yours flying to the ground. Although you are defenseless, the figure reaches for your sword and hands it back to you, nodding grimly."
+?ELS27:        CALL    PICK-ONE,S-HITS
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+?ELS22:        SUB     P-STRENGTH,2 >P-STRENGTH
+       LESS?   P-STRENGTH,1 \?ELS40
+       CALL    JIGS-UP,STR?169
+       RSTACK  
+?ELS40:        PRINTR  "A brilliant feint puts you off guard, and the hooded figure slips its sword between your ribs. You are hurt very badly."
+?ELS15:        LESS?   S-STRENGTH,3 \?ELS46
+       PRINTR  "The hooded figure attempts a thrust, but its weakened state prevents hitting you."
+?ELS46:        CALL    PICK-ONE,S-MISSES
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  SHADOW-DIES
+       PRINTI  "The hooded figure, fatally wounded, slumps to the ground. It gazes up at you once, and you catch a brief glimpse of deep and sorrowful eyes. Before you can react, the figure vanishes in a cloud of fetid vapor."
+       CRLF    
+       REMOVE  SHADOW
+       SET     'SHADOW-GONE,TRUE-VALUE
+       SET     'BLOCKED-DIR,FALSE-VALUE
+       RETURN  BLOCKED-DIR
+
+
+       .FUNCT  HOOD-F
+       EQUAL?  PRSA,V?LOOK-UNDER \?ELS5
+       IN?     HOOD,SHADOW \?ELS5
+       PRINTR  "The figure's hood casts a dark shadow over its face. There is no way from where you stand to look beneath it."
+?ELS5: EQUAL?  PRSA,V?PUT,V?TAKE \FALSE
+       IN?     HOOD,SHADOW \FALSE
+       EQUAL?  S-STRENGTH,1 \?ELS18
+       PRINTI  "You slowly remove the hood from your badly wounded opponent and recoil in horror at the sight of your own face, weary and wounded. A faint smile comes to the lips and then the face starts to change, very slowly, into that of an old, wizened person. The image fades and with it the body of your hooded opponent. The cloak remains on the ground."
+       CRLF    
+       REMOVE  SHADOW
+       SET     'SHADOW-GONE,TRUE-VALUE
+       MOVE    HOOD,WINNER
+       FCLEAR  HOOD,NDESCBIT
+       MOVE    CLOAK,HERE
+       FCLEAR  CLOAK,NDESCBIT
+       RTRUE   
+?ELS18:        EQUAL?  S-STRENGTH,2 \?ELS22
+       PRINTR  "The hooded figure, though recovering from wounds, is strong enough to force you back."
+?ELS22:        PRINTR  "You cannot get close enough to the hooded figure to remove the hood."
+
+
+       .FUNCT  CLOAK-F
+       EQUAL?  PRSA,V?LOOK-UNDER \?ELS5
+       IN?     CLOAK,SHADOW \?ELS5
+       PRINTR  "You cannot get close enough to look underneath the cloak."
+?ELS5: EQUAL?  PRSA,V?TAKE \FALSE
+       IN?     CLOAK,SHADOW \FALSE
+       PRINTR  "The cloak is fastened around the neck of the hooded figure. It would be difficult to remove."
+
+
+       .FUNCT  SHADOW-ROOMS,RARG
+       EQUAL?  RARG,M-BEG \?ELS5
+       EQUAL?  PRSA,V?WALK \?ELS5
+       EQUAL?  PRSO,BLOCKED-DIR \?ELS5
+       PRINTR  "Your way is blocked by the hooded figure."
+?ELS5: EQUAL?  RARG,M-END \FALSE
+       IN?     SHADOW,HERE /?CND12
+       SET     'BLOCKED-DIR,FALSE-VALUE
+       REMOVE  SHADOW
+?CND12:        ZERO?   SHADOW-GONE \FALSE
+       IN?     SHADOW,HERE \?ELS22
+       RANDOM  100
+       GRTR?   30,STACK \FALSE
+       ZERO?   ATTACK-MODE \FALSE
+       SET     'ATTACK-MODE,TRUE-VALUE
+       CALL    QUEUE,I-CURE,10
+       PUT     STACK,0,1
+       CALL    QUEUE,I-SHADOW-REPLY,-1
+       PUT     STACK,0,1
+       RTRUE   
+?ELS22:        RANDOM  100
+       GRTR?   30,STACK \?ELS31
+       PRINTR  "You can hear quiet footsteps nearby."
+?ELS31:        RANDOM  100
+       GRTR?   30,STACK \FALSE
+       ZERO?   LIT /FALSE
+       GRTR?   S-STRENGTH,3 \FALSE
+       CALL    PICK-DIRECTION,HERE >BLOCKED-DIR
+       PRINTI  "Through the shadows, a cloaked and hooded figure appears before you, blocking the "
+       CALL    LKP,BLOCKED-DIR,DIRS
+       PRINT   STACK
+       PRINTI  "ern exit from the room and carrying a brightly glowing sword."
+       CRLF    
+       CALL    SHADOW-ARRIVAL
+       RTRUE   
+
+
+       .FUNCT  SHADOW-ARRIVAL
+       MOVE    SHADOW,HERE
+       ZERO?   SHADOW-POINT-1 \?CND1
+       INC     'SCORE
+       SET     'SHADOW-POINT-1,TRUE-VALUE
+?CND1: IN?     SWORD,WINNER /FALSE
+       MOVE    SWORD,WINNER
+       ZERO?   SWORD-IN-STONE? /?ELS11
+       PRINTI  "From nowhere, the sword from the junction appears in your hand, wildly glowing!"
+       CRLF    
+       JUMP    ?CND9
+?ELS11:        PRINTI  "Your sword, glowing wildly, appears in your hand!"
+       CRLF    
+?CND9: SET     'SWORD-IN-STONE?,FALSE-VALUE
+       RETURN  SWORD-IN-STONE?
+
+
+       .FUNCT  CREEPY-CRAWL-F,RARG
+       EQUAL?  RARG,M-END \FALSE
+       SET     'BLOCKED-DIR,FALSE-VALUE
+       RTRUE   
+
+
+       .FUNCT  LEDGE-F
+       EQUAL?  HERE,CLIFF-LEDGE \FALSE
+       EQUAL?  PRSA,V?THROW-OFF \FALSE
+       EQUAL?  PRSI,LEDGE \FALSE
+       IN?     PRSO,WINNER /?CND8
+       PRINTR  "You're not holding that!"
+?CND8: MOVE    PRSO,CLIFF-BASE
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTR  " falls to the base of the cliff below."
+
+
+       .FUNCT  WAYBREAD-F
+       EQUAL?  PRSA,V?CUT \FALSE
+       EQUAL?  PRSI,SWORD \FALSE
+       PRINTI  "The bread is crushed rather than cut by your sword, and the crumbs scatter to the wind."
+       CRLF    
+       REMOVE  WAYBREAD
+       RTRUE   
+
+
+       .FUNCT  STAFF-F
+       EQUAL?  PRSA,V?BURN \FALSE
+       EQUAL?  PRSI,TORCH \FALSE
+       REMOVE  PRSO
+       CALL    JIGS-UP,STR?200
+       RSTACK  
+
+
+       .FUNCT  I-MAN-APPEARS
+       EQUAL?  HERE,CLIFF-LEDGE \FALSE
+       LOC     CHEST
+       EQUAL?  STACK,CLIFF-LEDGE,WINNER \FALSE
+       ZERO?   CHEST-TIED /?ELS9
+       SET     'MAN-SEEN,TRUE-VALUE
+       PRINTI  "All at once, the chest is lifted from you. Looking up, you see a man at the top of the cliff, pulling intently at the rope. ""That is uncommonly good of you, I do say!"" He chuckles unpleasantly. ""Oh, you are stuck, aren't you. Well, I'll be right back to get you!"" He leaves your sight."
+       CRLF    
+       SET     'CHEST-LIFTED,TRUE-VALUE
+       MOVE    CHEST,MAN
+       FSET    CHEST,TOUCHBIT
+       SET     'ROPE-FLAG,FALSE-VALUE
+       SET     'CHEST-TIED,FALSE-VALUE
+       CALL    QUEUE,I-MAN-RETURNS,10
+       PUT     STACK,0,1
+       RTRUE   
+?ELS9: PRINTI  "At the edge of the cliff above you, a man appears. He looks down at you and speaks. ""Hello, down there! You seem to have a problem. Maybe I can help you."" He chuckles in an unsettling sort of way. ""Perhaps if you tied that chest to the end of the rope I might be able to drag it up for you. Then, I'll be more than happy to help you up!"" He laughs again."
+       CRLF    
+       SET     'MAN-FLAG,TRUE-VALUE
+       SET     'MAN-SEEN,TRUE-VALUE
+       CALL    QUEUE,I-MAN-PRESENT,-1
+       PUT     STACK,0,1
+       RTRUE   
+
+
+       .FUNCT  I-MAN-PRESENT
+       EQUAL?  HERE,CLIFF-LEDGE \?THN6
+       ZERO?   MAN-FLAG /?THN6
+       IN?     CHEST,MAN \?ELS5
+?THN6: CALL    QUEUE,I-MAN-PRESENT,0
+       SET     'MAN-FLAG,FALSE-VALUE
+       RFALSE  
+?ELS5: IGRTR?  'MAN-WAITING,10 \?ELS9
+       PRINTI  "The man looks quite displeased. ""All right, then. I guess someone else can always help me! See you around, sport!"" He disappears."
+       CRLF    
+       CALL    QUEUE,I-MAN-PRESENT,0
+       SET     'MAN-FLAG,FALSE-VALUE
+       RTRUE   
+?ELS9: CALL    PICK-ONE,MAN-WAITS
+       PRINT   STACK
+       CRLF    
+       RTRUE   
+
+
+       .FUNCT  CLIFF-BASE-F,RARG
+       EQUAL?  RARG,M-ENTER \FALSE
+       ZERO?   CHEST-TIED /FALSE
+       SET     'CHEST-TIED,FALSE-VALUE
+       SET     'ROPE-FLAG,FALSE-VALUE
+       CALL    QUEUE,I-MAN-APPEARS,0
+       RSTACK  
+
+
+       .FUNCT  CLIFF-LEDGE-F,RARG
+       EQUAL?  RARG,M-BEG \?ELS5
+       EQUAL?  PRSA,V?WALK \?ELS5
+       IN?     CHEST,WINNER \?ELS5
+       ZERO?   CHEST-TIED /?ELS5
+       PRINTR  "You can't go anywhere holding that chest. The rope is tied around it!"
+?ELS5: EQUAL?  RARG,M-ENTER \?ELS11
+       ZERO?   MAN-SEEN \?ELS11
+       ZERO?   MAN-FLAG \?ELS11
+       ZERO?   MAN-GONE \?ELS11
+       ZERO?   MAN-POINT \?CND14
+       INC     'SCORE
+       SET     'MAN-POINT,TRUE-VALUE
+?CND14:        CALL    QUEUE,I-MAN-APPEARS,5
+       PUT     STACK,0,1
+       RTRUE   
+?ELS11:        EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "This is a rock-strewn ledge near the base of a tall cliff. The bottom of the cliff is another fifteen feet below. You have little hope of climbing up the cliff face, but you might be able to scramble down from here (though it's doubtful you could return)."
+       CRLF    
+       ZERO?   ROPE-FLAG /TRUE
+       PRINTR  "A long piece of rope is dangling down from the top of the cliff and is within your reach."
+
+
+       .FUNCT  CLIFF-F,RARG
+       EQUAL?  RARG,M-ENTER \?ELS5
+       IN?     CHEST,MAN \?ELS5
+       CALL    QUEUE,I-MAN-RETURNS,0
+       MOVE    CHEST,HERE
+       FSET    CHEST,OPENBIT
+       SET     'ROPE-FLAG,TRUE-VALUE
+       SET     'CHEST-TIED,FALSE-VALUE
+       SET     'CHEST-OPENED,TRUE-VALUE
+       RFALSE  
+?ELS5: EQUAL?  RARG,M-LOOK \?ELS9
+       PRINTI  "This is a remarkable spot in the dungeon. Perhaps two hundred feet above you is a gaping hole in the earth's surface through which pours bright sunshine! A few seedlings from the world above, nurtured by the sunlight and occasional rains, have grown into giant trees, making this a virtual oasis in the desert of the Underground Empire. To the west is a sheer precipice, dropping nearly fifty feet to jagged rocks below. The way south is barred by a forbidding stone wall, crumbling from age. There is a jagged opening in the wall to the southwest, through which leaks a fine mist. The land to the east looks lifeless and barren."
+       CRLF    
+       ZERO?   ROPE-FLAG /TRUE
+       PRINTR  "A rope is tied to one of the large trees here and is dangling over the side of the cliff, reaching down to the shelf below."
+?ELS9: EQUAL?  RARG,M-END \?ELS19
+       RANDOM  100
+       GRTR?   15,STACK \?ELS19
+       FSET?   CLIFF-LEDGE,TOUCHBIT /?ELS19
+       PRINTR  "You catch, out of the corner of your eye, some movement among the trees."
+?ELS19:        EQUAL?  RARG,M-END \FALSE
+       RANDOM  100
+       GRTR?   20,STACK \FALSE
+       PRINTR  "You seem to hear, from the southwest, the sounds of the sea."
+
+
+       .FUNCT  GLOBAL-ROPE-F
+       ZERO?   ROPE-FLAG \?ELS5
+       PRINTR  "You can't see any rope here."
+?ELS5: EQUAL?  PRSA,V?CLIMB-FOO \?ELS9
+       CALL    V-CLIMB-UP,P?DOWN,TRUE-VALUE
+       RSTACK  
+?ELS9: EQUAL?  PRSA,V?CLIMB-ON,V?MOVE,V?TAKE \?ELS11
+       ZERO?   MAN-FLAG \?ELS16
+       PRINTR  "A short tug on the rope convinces you that it is securely fastened from above."
+?ELS16:        IN?     CHEST,MAN \?ELS20
+       SET     'HOLDING-ROPE,TRUE-VALUE
+       PRINTR  "You grab securely on to the rope."
+?ELS20:        PRINTR  "The man scowls. ""I may help you up, but not before I have that chest."" He points to the chest near you on the ledge."
+?ELS11:        EQUAL?  PRSA,V?CLIMB-UP \?ELS28
+       PRINTR  "You try to climb the rope, but you cannot reach the top even with your best effort."
+?ELS28:        EQUAL?  PRSA,V?TIE \?ELS32
+       EQUAL?  CHEST,PRSO,PRSI \?ELS37
+       PRINTI  "The chest is now tied to the rope."
+       CRLF    
+       SET     'CHEST-TIED,TRUE-VALUE
+       ZERO?   MAN-FLAG /TRUE
+       ZERO?   MAN-GONE \TRUE
+       PRINTI  "The man above you looks pleased. ""Now there's a good friend! Thank you very much, indeed!"" He pulls on the rope and the chest is lifted to the top of the cliff and out of sight. With a short laugh, he disappears. ""I'll be back in a short while!"" are his last words."
+       CRLF    
+       MOVE    CHEST,MAN
+       FSET    CHEST,TOUCHBIT
+       SET     'CHEST-TIED,FALSE-VALUE
+       SET     'ROPE-FLAG,FALSE-VALUE
+       CALL    QUEUE,I-MAN-RETURNS,10
+       PUT     STACK,0,1
+       SET     'MAN-FLAG,FALSE-VALUE
+       RTRUE   
+?ELS37:        EQUAL?  ME,PRSI,PRSO \?ELS48
+       ZERO?   MAN-FLAG /?ELS53
+       IN?     CHEST,MAN \?ELS53
+       PRINTR  """Just grab onto it!"", the man bellows."
+?ELS53:        ZERO?   MAN-FLAG /?ELS59
+       PRINTR  "The man looks cross. ""I want the chest, not you!"" he snaps. ""Now stop fooling around and pass it up!"""
+?ELS59:        PRINTR  "You're unable to tie the rope around yourself."
+?ELS48:        PRINTR  "You're unable to tie the rope to that."
+?ELS32:        EQUAL?  PRSA,V?UNTIE \FALSE
+       ZERO?   CHEST-TIED /?ELS77
+       SET     'CHEST-TIED,FALSE-VALUE
+       PRINTR  "The chest is now disconnected from the rope."
+?ELS77:        PRINTR  "The rope isn't tied to anything."
+
+
+       .FUNCT  I-MAN-RETURNS
+       SET     'ROPE-FLAG,TRUE-VALUE
+       EQUAL?  HERE,CLIFF-LEDGE \FALSE
+       PRINTI  "A familiar voice calls down to you. ""Are you still there?"" he bellows with a coarse laugh. ""Well, then, grab onto the rope and we'll see what we can do."" The rope drops to within your reach."
+       CRLF    
+       SET     'MAN-FLAG,TRUE-VALUE
+       CALL    QUEUE,I-MAN-LIFT,-1
+       PUT     STACK,0,1
+       RTRUE   
+
+
+       .FUNCT  I-MAN-LIFT
+       EQUAL?  HERE,CLIFF-LEDGE /?ELS5
+       CALL    QUEUE,I-MAN-LIFT,0
+       MOVE    CHEST,CLIFF
+       FSET    CHEST,OPENBIT
+       SET     'CHEST-OPENED,TRUE-VALUE
+       REMOVE  MAN
+       RFALSE  
+?ELS5: ZERO?   HOLDING-ROPE /?ELS7
+       PRINTI  "The man starts to heave on the rope and within a few moments you arrive at the top of the cliff. The man removes the last few valuables from the chest and prepares to leave. ""You've been a good sport! Here, take this, for whatever good it is! I can't see that I'll be needing one!"" He hands you a plain wooden staff from the bottom of the chest and begins examining his valuables."
+       CRLF    
+       CALL    QUEUE,I-MAN-LIFT,0
+       MOVE    STAFF,WINNER
+       SET     'HOLDING-ROPE,FALSE-VALUE
+       SET     'ROPE-FLAG,TRUE-VALUE
+       MOVE    WINNER,CLIFF
+       MOVE    CHEST,CLIFF
+       FSET    CHEST,OPENBIT
+       PRINTI  "The chest, open and empty, is at your feet."
+       CRLF    
+       SET     'CHEST-OPENED,TRUE-VALUE
+       MOVE    MAN,CLIFF
+       CALL    QUEUE,I-MAN-LEAVES,-1
+       PUT     STACK,0,1
+       RTRUE   
+?ELS7: IGRTR?  'LIFT-WAIT,4 \?ELS14
+       PRINTI  """Well, I don't have all day. See you around sometime."" Showering you with gravel, he disappears from sight."
+       CRLF    
+       SET     'MAN-FLAG,FALSE-VALUE
+       MOVE    CHEST,CLIFF
+       FSET    CHEST,OPENBIT
+       SET     'CHEST-OPENED,TRUE-VALUE
+       CALL    QUEUE,I-MAN-LIFT,0
+       RSTACK  
+?ELS14:        PRINTR  "The man appears impatient. ""Are you coming up then, or not?"""
+
+
+       .FUNCT  CHEST-F
+       ZERO?   CHEST-OPENED /?ELS5
+       EQUAL?  PRSA,V?TIE \?ELS11
+       EQUAL?  ROPE,PRSO,PRSI \?ELS11
+       PRINTR  "What's the point?"
+?ELS11:        EQUAL?  PRSA,V?PUT \FALSE
+       EQUAL?  PRSO,STAFF,LAMP,TORCH \FALSE
+       PRINTI  "It doesn't fit."
+       EQUAL?  PRSO,STAFF \?CND22
+       PRINTI  " Awfully peculiar, though, since it's where the staff came from."
+?CND22:        CRLF    
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?UNLOCK,V?OPEN \FALSE
+       ZERO?   MAN-FLAG /?ELS35
+       PRINTR  "The man calls down to you. ""Is this what you're looking for?"" he cackles, waving a small key over his head. You try to open the chest, but it is locked."
+?ELS35:        PRINTR  "The chest is locked and cannot be opened."
+
+
+       .FUNCT  I-MAN-LEAVES
+       EQUAL?  HERE,CLIFF /?ELS5
+       REMOVE  MAN
+       SET     'MAN-GONE,TRUE-VALUE
+       SET     'MAN-FLAG,FALSE-VALUE
+       SET     'ROPE-FLAG,TRUE-VALUE
+       CALL    QUEUE,I-MAN-LEAVES,0
+       RFALSE  
+?ELS5: RANDOM  100
+       GRTR?   40,STACK \?ELS7
+       PRINTI  "Your ""friend"", moving quickly, dodges behind some trees and is lost from sight."
+       CRLF    
+       REMOVE  MAN
+       SET     'MAN-FLAG,FALSE-VALUE
+       SET     'MAN-GONE,TRUE-VALUE
+       SET     'ROPE-FLAG,TRUE-VALUE
+       CALL    QUEUE,I-MAN-LEAVES,0
+       RTRUE   
+?ELS7: PRINTR  "Your ""friend"" examines his valuables with great pride."
+
+
+       .FUNCT  MAN-F
+       EQUAL?  PRSA,V?HELLO \?ELS5
+       PRINTR  "He responds cheerfully. ""It is a wonderful day, isn't it?"""
+?ELS5: CALL    HELLO?,MAN
+       ZERO?   STACK /?ELS9
+       PRINTR  "The man is thoroughly engrossed in the examination of his booty and doesn't seem to hear you."
+?ELS9: EQUAL?  PRSA,V?EXAMINE \?ELS13
+       PRINTR  "The man is stocky and of medium height, with several days' growth of stubble on his face. He is carrying a number of valuables under his arm, presumably from the now-open chest."
+?ELS13:        EQUAL?  PRSA,V?ATTACK \FALSE
+       EQUAL?  PRSI,SWORD \?ELS22
+       PRINTI  "The man is taken by surprise and is hit with the sword. He grabs you and throws you to the ground"
+       LOC     STAFF
+       EQUAL?  STACK,WINNER,HERE \?CND25
+       PRINTI  ", breaking the staff in the process"
+       REMOVE  STAFF
+       MOVE    BROKEN-STAFF,HERE
+?CND25:        PRINTI  ", but you finish him off with a quick thrust to the chest. He dies, and disappears without ceremony in the usual style of the Great Underground Empire. His assorted valuables remain behind."
+       CRLF    
+       REMOVE  MAN
+       MOVE    VALUABLES,HERE
+       FCLEAR  VALUABLES,NDESCBIT
+       CALL    QUEUE,I-MAN-LEAVES,0
+       SET     'MAN-GONE,TRUE-VALUE
+       RETURN  MAN-GONE
+?ELS22:        PRINTR  "You wouldn't hurt him with that!"
+
+
+       .FUNCT  VALUABLES-F
+       EQUAL?  PRSA,V?MOVE,V?PUT,V?TAKE \?ELS5
+       IN?     MAN,CLIFF \?ELS5
+       PRINTR  "The man recoils sharply. ""These here things are mine. It's my chest and they're my valuables. You've a lot of nerve trying to take them from me after me saving you like that!"""
+?ELS5: ZERO?   MAN-GONE /FALSE
+       IN?     VALUABLES,MAN \FALSE
+       PRINTR  "What valuables?"
+
+
+       .FUNCT  ROPE-F
+       EQUAL?  PRSA,V?MOVE,V?TAKE \?ELS5
+       ZERO?   ROPE-FLAG /FALSE
+       PRINTR  "The rope is tied to a tree."
+?ELS5: EQUAL?  PRSA,V?CLIMB-FOO \?ELS15
+       CALL    V-CLIMB-UP,P?DOWN,TRUE-VALUE
+       RSTACK  
+?ELS15:        EQUAL?  PRSA,V?BURN \?ELS17
+       PRINTR  "The rope won't catch fire."
+?ELS17:        EQUAL?  PRSA,V?UNTIE \?ELS21
+       PRINTR  "The rope is very securely tied and cannot be undone."
+?ELS21:        EQUAL?  PRSA,V?CUT \FALSE
+       EQUAL?  PRSI,SWORD \FALSE
+       PRINTR  "The rope is made of pretty tough stuff and won't cut."
+
+
+       .FUNCT  GLOBAL-MAN-F
+       EQUAL?  HERE,CLIFF \?ELS5
+       ZERO?   MAN-GONE /?ELS10
+       PRINTR  "You've lost him among the trees."
+?ELS10:        PRINTR  "You can't see any man here."
+?ELS5: ZERO?   MAN-FLAG \?ELS19
+       PRINTR  "You can't see any man here."
+?ELS19:        EQUAL?  PRSA,V?GIVE \?ELS23
+       PRINTR  "You aren't even close to him!"
+?ELS23:        EQUAL?  PRSA,V?HELLO \?ELS27
+       PRINTR  "The man waves back in a friendly way."
+?ELS27:        CALL    HELLO?,GLOBAL-MAN
+       ZERO?   STACK /?ELS31
+       PRINTI  "He yells back, ""What's that you say? I can't hear you very well."
+       ZERO?   CHEST-LIFTED \?ELS36
+       PRINTI  " Just tie the rope to the chest and we can chat afterwards!"" He smiles broadly."
+       JUMP    ?CND34
+?ELS36:        PRINTI  """"
+?CND34:        CRLF    
+       RTRUE   
+?ELS31:        EQUAL?  PRSA,V?MUNG,V?ATTACK \?ELS44
+       PRINTR  "It's unlikely you'll succeed at this distance."
+?ELS44:        EQUAL?  PRSA,V?THROW \FALSE
+       EQUAL?  PRSI,GLOBAL-MAN \FALSE
+       IN?     PRSO,WINNER \FALSE
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTI  " flies upward, but not nearly far enough to hit the man. It does seem to amuse him, however, especially as it passes within inches of your head. ""We're wasting time now. Be a good fellow and tie the rope!"""
+       CRLF    
+       MOVE    PRSO,HERE
+       RTRUE   
+
+
+       .FUNCT  LAKE-F
+       EQUAL?  PRSA,V?BOARD,V?LEAP,V?THROUGH \?ELS5
+       EQUAL?  HERE,LAKE-SHORE,FAR-SHORE,SOUTH-SHORE \?ELS10
+       CALL    GO-ON-LAKE
+       RSTACK  
+?ELS10:        EQUAL?  HERE,ON-LAKE \?ELS12
+       CALL    GOTO,IN-LAKE
+       RSTACK  
+?ELS12:        PRINTR  "Just where do you think you are?"
+?ELS5: EQUAL?  PRSA,V?LOOK-UNDER \FALSE
+       EQUAL?  HERE,ON-LAKE \?ELS23
+       PRINTR  "You can't quite make out the bottom of the lake from here..."
+?ELS23:        PRINTR  "You can't see under the surface from here."
+
+
+       .FUNCT  IN-LAKE-F,RARG
+       EQUAL?  RARG,M-ENTER \?ELS5
+       CALL    QUEUE,I-IN-LAKE,3
+       PUT     STACK,0,1
+       RTRUE   
+?ELS5: EQUAL?  RARG,M-BEG \?ELS7
+       EQUAL?  PRSA,V?TAKE \?ELS7
+       EQUAL?  PRSO,SHINY-OBJECT /?ELS7
+       CALL    WEIGHT,WINNER
+       GRTR?   STACK,25 \?ELS14
+       PRINTR  "You can't carry that much underwater."
+?ELS14:        FSET?   PRSO,TAKEBIT /?ELS18
+       PRINTR  "You can't take that!"
+?ELS18:        RANDOM  100
+       GRTR?   30,STACK \FALSE
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTR  " is yours for a moment, but drops from your grasp."
+?ELS7: EQUAL?  RARG,M-END \FALSE
+       RANDOM  100
+       GRTR?   10,STACK \?ELS31
+       PRINTR  "A large and hungry-looking fish is swimming in the neighborhood."
+?ELS31:        RANDOM  100
+       GRTR?   4,STACK \?ELS35
+       ZERO?   INVIS \?ELS35
+       CALL    QUEUE,I-ROC,0
+       CALL    QUEUE,I-ON-LAKE,0
+       CALL    JIGS-UP,STR?208
+       RSTACK  
+?ELS35:        IN?     SHINY-OBJECT,HERE \FALSE
+       EQUAL?  MOVES,LAST-MOVES /TRUE
+       RANDOM  100
+       GRTR?   40,STACK \?ELS44
+       PRINTI  "Out of the corner of your eye, a small, shiny object appears in the sand. A moment later, it is gone!"
+       CRLF    
+       JUMP    ?CND40
+?ELS44:        RANDOM  100
+       GRTR?   70,STACK \?ELS48
+       PRINTI  "You catch a brief glimpse of something shiny in the sand."
+       CRLF    
+       JUMP    ?CND40
+?ELS48:        PRINTI  "Something sparkling in the sand catches your eye for a moment."
+       CRLF    
+?CND40:        SET     'LAST-MOVES,MOVES
+       RETURN  LAST-MOVES
+
+
+       .FUNCT  I-IN-LAKE
+       EQUAL?  HERE,IN-LAKE \FALSE
+       PRINTI  "You run out of air and return to the surface."
+       CRLF    
+       CALL    GOTO,ON-LAKE
+       RSTACK  
+
+
+       .FUNCT  ON-LAKE-F,RARG
+       EQUAL?  RARG,M-ENTER \?ELS5
+       CALL    QUEUE,I-IN-LAKE,0
+       ZERO?   LAKE-POINT \FALSE
+       INC     'SCORE
+       SET     'LAKE-POINT,TRUE-VALUE
+       RETURN  LAKE-POINT
+?ELS5: EQUAL?  RARG,M-BEG \FALSE
+       EQUAL?  PRSA,V?LEAP \FALSE
+       ZERO?   PRSO \FALSE
+       CALL    DO-WALK,P?DOWN
+       RTRUE   
+
+
+       .FUNCT  GO-ON-LAKE,F,N,TOLD=0
+       FIRST?  WINNER >F \?CND1
+?PRG4: NEXT?   F >N /?KLU31
+?KLU31:        FSET?   F,WEARBIT /?CND6
+       MOVE    F,IN-LAKE
+       EQUAL?  F,TORCH \?ELS11
+       REMOVE  TORCH
+       MOVE    FRIED-TORCH,IN-LAKE
+       JUMP    ?CND9
+?ELS11:        EQUAL?  F,LAMP \?ELS13
+       MOVE    LAMP,LOCAL-GLOBALS
+       MOVE    FRIED-LAMP,IN-LAKE
+       SET     'CURRENT-LAMP,FRIED-LAMP
+       JUMP    ?CND9
+?ELS13:        EQUAL?  F,WAYBREAD \?CND9
+       REMOVE  WAYBREAD
+?CND9: ZERO?   TOLD \?CND6
+       SET     'TOLD,TRUE-VALUE
+       PRINTI  "The shock of entering the frigid water has made you drop all your possessions into the lake!"
+       CRLF    
+?CND6: ZERO?   N \?ELS23
+       JUMP    ?CND1
+?ELS23:        SET     'F,N
+       JUMP    ?PRG4
+?CND1: ZERO?   TOLD \?CND26
+       PRINTI  "You are nearly paralyzed by the icy waters as you swim into the center of the lake."
+       CRLF    
+?CND26:        CRLF    
+       CALL    GOTO,ON-LAKE
+       SET     'LAKE-TIME,0
+       CALL    QUEUE,I-ON-LAKE,-1
+       PUT     STACK,0,1
+       RTRUE   
+
+
+       .FUNCT  I-ON-LAKE
+       INC     'LAKE-TIME
+       RANDOM  100
+       GRTR?   10,STACK \?ELS5
+       EQUAL?  HERE,ON-LAKE \?ELS5
+       ZERO?   INVIS \?ELS5
+       PRINTI  "A giant roc, previously hidden among the rocks, is heading right toward you, its mouth gaping wide!"
+       CRLF    
+       CALL    QUEUE,I-ROC,2
+       PUT     STACK,0,1
+       RTRUE   
+?ELS5: EQUAL?  HERE,ON-LAKE,IN-LAKE /?ELS11
+       CALL    QUEUE,I-ON-LAKE,0
+       CALL    QUEUE,I-IN-LAKE,0
+       CALL    QUEUE,I-ROC,0
+       RFALSE  
+?ELS11:        EQUAL?  LAKE-TIME,4 \?ELS13
+       PRINTR  "The icy waters are taking their toll. You will not be able to hold out much longer."
+?ELS13:        EQUAL?  LAKE-TIME,6 \?ELS17
+       PRINTR  "You are becoming very weak. You had better leave the water before you drown!"
+?ELS17:        EQUAL?  LAKE-TIME,8 \FALSE
+       CALL    QUEUE,I-ON-LAKE,0
+       CALL    QUEUE,I-IN-LAKE,0
+       CALL    QUEUE,I-ROC,0
+       CALL    JIGS-UP,STR?209
+       RSTACK  
+
+
+       .FUNCT  I-ROC
+       EQUAL?  HERE,ON-LAKE \FALSE
+       ZERO?   INVIS \FALSE
+       CALL    QUEUE,I-ON-LAKE,0
+       CALL    QUEUE,I-IN-LAKE,0
+       CALL    JIGS-UP,STR?210
+       RSTACK  
+
+
+       .FUNCT  SHINY-OBJECT-F
+       EQUAL?  PRSA,V?FIND,V?TAKE \FALSE
+       IN?     AMULET,WINNER /FALSE
+       RANDOM  100
+       GRTR?   50,STACK \?ELS12
+       REMOVE  SHINY-OBJECT
+       MOVE    AMULET,WINNER
+       CALL    THIS-IS-IT,AMULET
+       FCLEAR  AMULET,NDESCBIT
+       PRINTR  "You reach the shiny object. It is a simple golden amulet!"
+?ELS12:        PRINTR  "The shiny object slips from your grasp and back onto the floor of the lake, where it is covered in sand."
+
+
+       .FUNCT  SAND-F
+       EQUAL?  PRSA,V?DIG \?ELS5
+       PRINTR  "You don't come across anything unusual."
+?ELS5: EQUAL?  PRSA,V?EXAMINE \?ELS9
+       PRINTR  "There is nothing notable on the floor of the lake, except some plants and algae."
+?ELS9: EQUAL?  PRSA,V?TAKE \FALSE
+       PRINTR  "It slips through your fingers."
+
+
+       .FUNCT  ALGAE-F
+       EQUAL?  PRSA,V?EAT \FALSE
+       PRINTR  "Yeecchhhh!"
+
+
+       .FUNCT  FRIED-LAMP-F
+       EQUAL?  PRSA,V?LAMP-ON \FALSE
+       PRINTR  "The lamp isn't functioning (probably from having gotten wet)."
+
+
+       .FUNCT  I-VIEW-SNAP
+       PRINTI  "You suddenly find yourself back in the viewing room!"
+       CRLF    
+       CALL    GOTO,VIEW-ROOM,FALSE-VALUE
+       RTRUE   
+
+
+       .FUNCT  VIEWING-TABLE-F,L
+       EQUAL?  PRSA,V?RUB \?ELS5
+       ADD     SCORE,VIEW-POINT >SCORE
+       SET     'VIEW-POINT,0
+       PRINTI  "You touch the table and are instantly transported to another place!"
+       CRLF    
+       CRLF    
+       CALL    QUEUE,I-VIEW-SNAP,3
+       PUT     STACK,0,1
+       GET     VIEW-ROOMS,ACTIVE-VIEW
+       CALL    GOTO,STACK
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?LOOK-INSIDE,V?EXAMINE \FALSE
+       PRINTI  "The surface is pale and featureless, but slowly, an image takes shape!"
+       CRLF    
+       GET     VIEWS,ACTIVE-VIEW
+       PRINT   STACK
+       CRLF    
+       PRINTR  "The image slowly fades."
+
+
+       .FUNCT  I-VIEW-CHANGE
+       INC     'ACTIVE-VIEW
+       EQUAL?  ACTIVE-VIEW,5 \?CND1
+       SET     'ACTIVE-VIEW,1
+?CND1: CALL    QUEUE,I-VIEW-CHANGE,4
+       EQUAL?  HERE,VIEW-ROOM \FALSE
+       PRINTI  "The indicator above the table flickers briefly, then changes to """
+       GET     VIEW-ROMANS,ACTIVE-VIEW
+       PRINT   STACK
+       PRINTR  """."
+
+
+       .FUNCT  VIEW-ROOM-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "You are in a small chamber carved in the rock, with the sole exit to the north. Mounted on one wall is a table labelled ""Scenic Vista,"" whose featureless surface is angled toward you. One might believe that the table was used to indicate points of interest in the view from this spot, like those found in many parks. On the other hand, your surroundings are far from spacious and by no stretch of the imagination could this spot be considered scenic. An indicator above the table reads """
+       GET     VIEW-ROMANS,ACTIVE-VIEW
+       PRINT   STACK
+       PRINTR  """."
+
+
+       .FUNCT  CLIFF-OBJECT-F
+       EQUAL?  HERE,CLIFF \?ELS5
+       EQUAL?  PRSA,V?LEAP \?ELS10
+       CALL    JIGS-UP,STR?27
+       RSTACK  
+?ELS10:        EQUAL?  PRSA,V?CLIMB-DOWN \?ELS12
+       ZERO?   ROPE-FLAG /?ELS17
+       CALL    GOTO,CLIFF-LEDGE
+       RTRUE   
+?ELS17:        PRINTR  "The fall would kill you."
+?ELS12:        EQUAL?  PRSA,V?THROW-OFF \FALSE
+       EQUAL?  PRSI,CLIFF-OBJECT \FALSE
+       EQUAL?  PRSO,ROPE \?ELS29
+       PRINTR  "The rope is dangling over the side of the cliff already."
+?ELS29:        IN?     PRSO,WINNER /?CND27
+       PRINTI  "You aren't holding the "
+       PRINTD  PRSO
+       PRINTR  "."
+?CND27:        MOVE    PRSO,CLIFF-LEDGE
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTI  " goes over the cliff and lands among the rocks below."
+       CRLF    
+       EQUAL?  PRSO,LAMP \?ELS40
+       REMOVE  PRSO
+       MOVE    BROKEN-LAMP,CLIFF-LEDGE
+       SET     'CURRENT-LAMP,BROKEN-LAMP
+       RTRUE   
+?ELS40:        EQUAL?  PRSO,STAFF \TRUE
+       REMOVE  PRSO
+       MOVE    BROKEN-STAFF,CLIFF-LEDGE
+       RTRUE   
+?ELS5: EQUAL?  PRSA,V?CLIMB-UP \?ELS44
+       PRINTR  "You haven't enough strength to climb the cliff."
+?ELS44:        PRINTR  "The cliff is above you!"
+
+
+       .FUNCT  TREE-F
+       EQUAL?  PRSA,V?CLIMB-FOO,V?CLIMB-UP \?ELS5
+       PRINTR  "The trunks are too large for you to climb them."
+?ELS5: EQUAL?  PRSA,V?LOOK-INSIDE,V?EXAMINE \?ELS9
+       ZERO?   MAN-SEEN \?ELS9
+       PRINTR  "There seems to be nobody there, but it's hard to tell."
+?ELS9: EQUAL?  PRSA,V?BURN \FALSE
+       CALL    JIGS-UP,STR?219
+       RSTACK  
+
+
+       .FUNCT  FRIED-TORCH-F
+       EQUAL?  PRSA,V?LAMP-ON \FALSE
+       PRINTR  "It's hopeless. The torch is wet."
+
+
+       .FUNCT  TORCH-F
+       EQUAL?  PRSA,V?LAMP-ON \?ELS5
+       FSET?   TORCH,ONBIT \?ELS10
+       PRINTR  "It's already lit."
+?ELS10:        PRINTR  "You have nothing to light it with."
+?ELS5: EQUAL?  PRSA,V?LAMP-OFF \FALSE
+       FSET?   TORCH,ONBIT \?ELS23
+       PRINTI  "You manage to extinguish the flame."
+       CRLF    
+       FCLEAR  TORCH,ONBIT
+       RTRUE   
+?ELS23:        PRINTR  "It has already been extinguished."
+
+
+       .FUNCT  NO-OBJS,RARG,F
+       EQUAL?  RARG,M-BEG \FALSE
+       FIRST?  WINNER >F /?KLU13
+?KLU13:        SET     'EMPTY-HANDED,TRUE-VALUE
+?PRG6: ZERO?   F /FALSE
+       CALL    WEIGHT,F
+       GRTR?   STACK,4 \?CND8
+       SET     'EMPTY-HANDED,FALSE-VALUE
+       RFALSE  
+?CND8: NEXT?   F >F /?KLU14
+?KLU14:        JUMP    ?PRG6
+
+
+       .FUNCT  REPELLENT-FCN
+       EQUAL?  PRSA,V?SHAKE \?ELS5
+       ZERO?   SPRAY-USED? /?ELS10
+       PRINTR  "The can seems empty."
+?ELS10:        PRINTR  "There is a sloshing sound from inside."
+?ELS5: EQUAL?  PRSA,V?BURN \?ELS19
+       CALL    JIGS-UP,STR?229
+       RSTACK  
+?ELS19:        EQUAL?  PRSA,V?PUT-ON,V?SPRAY \FALSE
+       EQUAL?  PRSO,REPELLENT \FALSE
+       ZERO?   SPRAY-USED? /?ELS28
+       PRINTR  "The repellent is all gone."
+?ELS28:        ZERO?   PRSI \?ELS33
+       SET     'SPRAY-USED?,TRUE-VALUE
+       PRINTR  "The spray stinks amazingly for a few moments, then drifts away."
+?ELS33:        EQUAL?  PRSI,ME \?CND38
+       CALL    QUEUE,I-SPRAY,5
+       PUT     STACK,0,1
+       SET     'SPRAYED?,TRUE-VALUE
+?CND38:        SET     'SPRAY-USED?,TRUE-VALUE
+       PRINTR  "The spray smells like a mixture of old socks and burning rubber. If I were a grue I'd sure stay clear!"
+
+
+       .FUNCT  I-SPRAY
+       SET     'SPRAYED?,FALSE-VALUE
+       PRINTR  "That horrible smell is much less pungent now."
+
+
+       .FUNCT  ZORK-IV-F,RARG
+       EQUAL?  RARG,M-ENTER \FALSE
+       CALL    JIGS-UP,STR?230
+       RSTACK  
+
+
+       .FUNCT  AQUEDUCT-F
+       EQUAL?  PRSA,V?EXAMINE \?ELS5
+       PRINTR  "The aqueduct is large and impressive. It was probably the major method of water transport in the Empire."
+?ELS5: EQUAL?  PRSA,V?LEAP \FALSE
+       CALL    JIGS-UP,STR?241
+       RSTACK  
+
+
+       .FUNCT  WATER-CHANNEL-F
+       EQUAL?  PRSA,V?EXAMINE \?ELS5
+       PRINTR  "The channel is a few feet deep and ten feet wide, rounded on the bottom."
+?ELS5: EQUAL?  PRSA,V?BOARD \FALSE
+       EQUAL?  HERE,DAMP-PASSAGE \?ELS14
+       PRINTR  "Getting into the channel wouldn't be of much use."
+?ELS14:        PRINTR  "You're standing in it. Otherwise, you would be floating in midair above some very nasty rocks."
+
+
+       .FUNCT  MOSS-F
+       EQUAL?  PRSA,V?MOVE,V?TAKE \FALSE
+       PRINTR  "Don't be silly."
+
+
+       .FUNCT  AQ-2-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "You are now on one of the tallest arches of the aqueduct, hundreds of feet above a rocky chasm. The immensity of the aqueduct project is apparent from here. Stone supports rise from the rock floor to form massive arches, which traverse the region from north to south. The water-carrying channel here is wide and deep. To the west and far below, you can make out a balcony which must command a wide view of the aqueduct."
+       CRLF    
+       ZERO?   AQ-FLAG \FALSE
+       PRINTR  "The channel ends abruptly to your north where a supporting pillar has crumbled, casting the arch into the chasm."
+
+
+       .FUNCT  AQ-3-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "You are near the northern end of this segment of the aqueduct system. To the south and slightly uphill, the bulk of the aqueduct looms ominously, towering above a gorge. To the north, the water channel drops precipitously and enters a rocky hole. The damp moss and lichen would certainly make that a one-way trip."
+       CRLF    
+       ZERO?   AQ-FLAG \FALSE
+       PRINTR  "The southern part of the aqueduct system is inaccessable due to the collapse of one of the water-bearing arches."
+
+
+       .FUNCT  COVER-F
+       EQUAL?  PRSA,V?OPEN,V?RAISE,V?MOVE \?ELS5
+       PRINTI  "The cover is moved a bit to one side, revealing a small hole leading into darkness."
+       CRLF    
+       SET     'COVER-MOVED,TRUE-VALUE
+       RETURN  COVER-MOVED
+?ELS5: EQUAL?  PRSA,V?TAKE \FALSE
+       PRINTR  "The cover is far too heavy to take."
+
+
+       .FUNCT  KEY-ROOM-F,RARG
+       EQUAL?  RARG,M-LOOK \FALSE
+       PRINTI  "You are between some rock and a dark place. The room is lit dimly from above, revealing a lone, dark path sloping down to the west."
+       CRLF    
+       ZERO?   COVER-MOVED /?ELS12
+       PRINTR  "A heavy manhole cover has been moved to reveal a dark passage below."
+?ELS12:        PRINTR  "To one side of the room is a large manhole cover."
+
+
+       .FUNCT  KEY-F
+       EQUAL?  PRSA,V?UNLOCK \?ELS5
+       EQUAL?  PRSI,KEY \?ELS5
+       EQUAL?  PRSO,BRONZE-DOOR \?ELS12
+       EQUAL?  HERE,GOOD-CELL \?ELS12
+       ZERO?   BRONZE-DOOR-LOCKED /?ELS17
+       PRINTI  "The key seems to mold itself to the shape of the lock. With a mere twist of your hand, the massive bolt gives way."
+       CRLF    
+       JUMP    ?CND15
+?ELS17:        PRINTI  "It already is."
+       CRLF    
+?CND15:        SET     'BRONZE-DOOR-LOCKED,FALSE-VALUE
+       RTRUE   
+?ELS12:        EQUAL?  PRSO,BRONZE-DOOR \?ELS26
+       PRINTR  "The key molds itself to the lock but will not turn."
+?ELS26:        EQUAL?  PRSO,CHEST /?THN31
+       FSET?   PRSO,DOORBIT \FALSE
+?THN31:        PRINTR  "The key, which initially seemed certain to fit the lock, seems to change shape and will not enter the keyhole."
+?ELS5: EQUAL?  PRSA,V?EXAMINE \FALSE
+       CALL    PICK-ONE,KEY-DESCS
+       PRINT   STACK
+       CRLF    
+       PRINTR  "Strange, though. The key seems to change shape constantly."
+
+
+       .FUNCT  VIEW-INDICATOR-F
+       EQUAL?  PRSA,V?READ,V?EXAMINE \FALSE
+       PRINTI  "The indicator reads """
+       GET     VIEW-ROMANS,ACTIVE-VIEW
+       PRINT   STACK
+       PRINTR  """."
+
+
+       .FUNCT  FLATHEAD-OCEAN-F,RARG
+       EQUAL?  RARG,M-LOOK \?ELS5
+       PRINTI  "You are at the shore of an amazing underground sea, the topic of many a legend among adventurers. Few were known to have arrived at this spot, and fewer to return. There is a heavy surf and a breeze is blowing onshore. The land rises steeply to the east and quicksand prevents movement to the south. A thick mist covers the ocean and extends over the hills to the east. A path heads north along the beach."
+       CRLF    
+       FSET?   VIKING-SHIP,INVISIBLE /TRUE
+       PRINTR  "An ancient Viking ship is passing along the shore, an old and crusty sailor at the helm."
+?ELS5: EQUAL?  RARG,M-END \FALSE
+       RANDOM  100
+       GRTR?   20,STACK \FALSE
+       ZERO?   BOAT-SEEN \FALSE
+       ZERO?   LIT /FALSE
+       SET     'BOAT-SEEN,TRUE-VALUE
+       CALL    QUEUE,I-BOAT-DISAPPEAR,2
+       PUT     STACK,0,1
+       PRINTI  "Passing alongside the shore now is an old boat, reminiscent of an ancient Viking ship. Standing on the prow of the ship is an old and crusty sailor, peering out over the misty ocean."
+       CRLF    
+       FCLEAR  VIKING-SHIP,INVISIBLE
+       RTRUE   
+
+
+       .FUNCT  I-BOAT-DISAPPEAR
+       FSET    VIKING-SHIP,INVISIBLE
+       SET     'SHIP-GONE,TRUE-VALUE
+       EQUAL?  HERE,FLATHEAD-OCEAN \FALSE
+       PRINTR  "The boat sails silently through the mist and out of sight."
+
+
+       .FUNCT  I-VISIBLE
+       SET     'INVIS,FALSE-VALUE
+       EQUAL?  HERE,MRG,MRGE,MRGW \FALSE
+       CALL    JIGS-UP,STR?248
+       RFALSE  
+
+
+       .FUNCT  POTION-F
+       EQUAL?  PRSA,V?DRINK \?ELS5
+       REMOVE  POTION
+       SET     'INVIS,TRUE-VALUE
+       CALL    QUEUE,I-VISIBLE,3
+       PUT     STACK,0,1
+       PRINTR  "You ""drink"" the contents in one gulp, but nothing unusual seems to have happened as a result."
+?ELS5: EQUAL?  PRSA,V?POUR-ON \?ELS9
+       EQUAL?  PRSO,POTION \?ELS9
+       REMOVE  POTION
+       PRINTI  "It spills onto the "
+       PRINTD  PRSI
+       PRINTR  " and vanishes."
+?ELS9: EQUAL?  PRSA,V?EXAMINE \?ELS15
+       PRINTR  "It feels like there's something inside, but you can't see anything even though the vial is transparent."
+?ELS15:        EQUAL?  PRSA,V?SMELL \?ELS19
+       PRINTR  "The vial (or something in it) smells sweet."
+?ELS19:        EQUAL?  PRSA,V?TAKE,V?DROP \FALSE
+       PRINTI  "Nothing seems to come out, although the sweet smell disappears from the vial, seeming to permeate the air briefly before fading entirely."
+       CRLF    
+       REMOVE  POTION
+       RTRUE   
+
+
+       .FUNCT  VIAL-F
+       EQUAL?  PRSA,V?FILL \?ELS5
+       PRINTR  "You can't seem to put anything in it."
+?ELS5: EQUAL?  PRSA,V?DRINK-FROM \?ELS9
+       IN?     POTION,VIAL \?ELS9
+       CALL    PERFORM,V?DRINK,POTION
+       RTRUE   
+?ELS9: EQUAL?  PRSA,V?SMELL \?ELS13
+       IN?     POTION,VIAL \?ELS13
+       CALL    PERFORM,V?SMELL,POTION
+       RTRUE   
+?ELS13:        EQUAL?  PRSA,V?SHAKE \?ELS17
+       IN?     POTION,VIAL \?ELS17
+       FSET?   VIAL,OPENBIT \?ELS17
+       PRINTI  "Nothing seems to come out, although the vial is lighter now."
+       CRLF    
+       REMOVE  POTION
+       RTRUE   
+?ELS17:        EQUAL?  PRSA,V?OPEN \?ELS23
+       FSET    VIAL,OPENBIT
+       PRINTI  "The vial is open."
+       IN?     POTION,VIAL \?CND26
+       PRINTI  " There is a sweet odor from within the vial, apparently coming from a heavy but invisible liquid."
+?CND26:        CRLF    
+       RTRUE   
+?ELS23:        EQUAL?  PRSA,V?EXAMINE \FALSE
+       PRINTI  "It is a small, transparent vial "
+       IN?     POTION,VIAL \?ELS39
+       PRINTR  "which looks empty but is strangely heavy."
+?ELS39:        PRINTR  "which is light and empty."
+
+
+       .FUNCT  OCEAN-F
+       EQUAL?  HERE,FLATHEAD-OCEAN /?ELS5
+       PRINTR  "There is no ocean here."
+?ELS5: EQUAL?  PRSA,V?BOARD,V?THROUGH \?ELS9
+       PRINTR  "You would be killed by the pounding surf!"
+?ELS9: EQUAL?  PRSA,V?THROW,V?PUT \FALSE
+       EQUAL?  PRSI,OCEAN \FALSE
+       PRINTI  "The "
+       PRINTD  PRSO
+       PRINTI  " falls into the ocean and is lost forever."
+       CRLF    
+       REMOVE  PRSO
+       RTRUE   
+
+
+       .FUNCT  STONE-DESC,FOO
+       PRINTI  "Standing before you is a great rock."
+       ZERO?   SWORD-IN-STONE? /?CND3
+       PRINTI  " Imbedded within it is an Elvish sword."
+?CND3: CRLF    
+       RTRUE   
+
+
+       .FUNCT  STONE-F
+       EQUAL?  PRSA,V?CLOSE,V?OPEN \?ELS5
+       PRINTR  "You can't be serious."
+?ELS5: EQUAL?  PRSA,V?PUT \?ELS9
+       EQUAL?  PRSI,STONE \?ELS9
+       PRINTR  "You can't force anything into the stone."
+?ELS9: EQUAL?  PRSA,V?PUSH,V?TAKE,V?MOVE \?ELS15
+       EQUAL?  PRSO,STONE \?ELS15
+       PRINTR  "The stone is far too massive to be moved."
+?ELS15:        EQUAL?  PRSA,V?LOOK-UNDER \FALSE
+       PRINTR  "Since it can't be moved, it's hard to know what's there."
+
+
+       .FUNCT  FISH-F
+       PRINTR  "There is no fish visible now."
+
+
+       .FUNCT  QUICKSAND-PSEUDO
+       EQUAL?  PRSA,V?LEAP,V?THROUGH \?ELS5
+       CALL    JIGS-UP,STR?249
+       RSTACK  
+?ELS5: EQUAL?  PRSA,V?RUB \?ELS7
+       PRINTR  "It's quicksand all right!"
+?ELS7: EQUAL?  PRSA,V?LOOK-INSIDE \FALSE
+       PRINTR  "It's hard to tell what's in there."
+
+
+       .FUNCT  SWAMP-PSEUDO
+       EQUAL?  PRSA,V?THROUGH \FALSE
+       PRINTR  "Yucko."
+
+
+       .FUNCT  MIST-PSEUDO
+       EQUAL?  PRSA,V?LOOK-INSIDE \?ELS5
+       PRINTR  "You can't make anything out through the mist."
+?ELS5: EQUAL?  PRSA,V?SMELL \FALSE
+       PRINTR  "It smells vaguely salty."
+
+
+       .FUNCT  SHORE-PSEUDO
+       EQUAL?  PRSA,V?DIG \FALSE
+       PRINTR  "There's nothing there."
+
+
+       .FUNCT  WATERFALL-PSEUDO
+       EQUAL?  PRSA,V?CLIMB-UP \FALSE
+       PRINTR  "It's much too slippery."
+
+
+       .FUNCT  ARCH-PSEUDO
+       EQUAL?  PRSA,V?EXAMINE \FALSE
+       ZERO?   AQ-FLAG /?ELS10
+       PRINTR  "The arches all show some signs of decay."
+?ELS10:        PRINTR  "The arch before you is broken. The others show signs of decay."
+
+       .ENDI
diff --git a/3actions.zil b/3actions.zil
new file mode 100644 (file)
index 0000000..6b98fc7
--- /dev/null
@@ -0,0 +1,5398 @@
+"ACTIONS3 for
+                    ZORK III: The Dungeon Master
+                The Great Underground Empire (Part 3)
+       (c) Copyright 1982 Infocom, Inc.  All Rights Reserved.
+"
+
+"SWORD demon"
+
+<ROUTINE I-SWORD ("AUX" (DEM <INT I-SWORD>) (NG 0) P T L)
+        <COND (<IN? ,SWORD ,ADVENTURER>
+               <COND (<AND <==? ,HERE ,CLIFF> <NOT ,MAN-GONE>> <SET NG 1>)
+                     (<AND <==? ,HERE ,CLIFF-LEDGE> ,MAN-FLAG> <SET NG 1>)
+                     (<INFESTED? ,HERE> <SET NG 2>)
+                     (<OR <AND <==? ,MLOC ,MRG> <==? ,HERE ,IN-MIRROR>>
+                          <EQUAL? ,HERE ,MRGE ,MRG ,MRGW>>
+                      <SET NG 1>)
+                     (ELSE
+                      <SET P 0>
+                      <REPEAT ()
+                              <COND (<0? <SET P <NEXTP ,HERE .P>>>
+                                     <RETURN>)
+                                    (<NOT <L? .P ,LOW-DIRECTION>>
+                                     <SET T <GETPT ,HERE .P>>
+                                     <SET L <PTSIZE .T>>
+                                     <COND (<EQUAL? .L ,UEXIT ,CEXIT ,DEXIT>
+                                            <COND (<INFESTED? <GETB .T 0>>
+                                                   <SET NG 1>
+                                                   <RETURN>)>)>)>>)>
+               <COND (<==? .NG ,SWORD-STATE> <RFALSE>)
+                     (<==? .NG 2>
+                      <TELL "Your sword has begun to glow very brightly." CR>)
+                     (<1? .NG>
+                      <TELL "Your sword is glowing with a faint blue glow."
+                            CR>)
+                     (<0? .NG>
+                      <TELL "Your sword is no longer glowing." CR>)>
+               <SETG SWORD-STATE .NG>
+               <RTRUE>)
+              (ELSE <DISABLE .DEM> <RFALSE>)>>
+
+<GLOBAL SWORD-STATE 0>
+
+<ROUTINE INFESTED? (R "AUX" (F <FIRST? .R>)) 
+        <REPEAT ()
+                <COND (<NOT .F> <RETURN <>>)
+                      (<AND <FSET? .F ,ACTORBIT> <NOT <FSET? .F ,INVISIBLE>>>
+                       <RETURN .F>)
+                      (<NOT <SET F <NEXT? .F>>> <RETURN <>>)>>>
+
+"old ACTIONS.ZIL"
+
+<GLOBAL YUKS
+       <LTABLE
+        "A valiant attempt."
+        "You can't be serious."
+        "An interesting idea..."
+        "What a concept!">>
+
+<ROUTINE FIND-WEAPON (O "AUX" W)
+        <SET W <FIRST? .O>>
+        <COND (<NOT .W>
+               <RFALSE>)>
+        <REPEAT ()
+                <COND (<EQUAL? .W ,SWORD>
+                       <RETURN .W>)
+                      (<NOT <SET W <NEXT? .W>>> <RFALSE>)>>>
+
+<ROUTINE SWORD-FCN ()
+        <COND (,SWORD-IN-STONE?
+               <COND (<VERB? TAKE MOVE>
+                      <COND (<PROB 10>
+                             <TELL
+"Who do you think you are? Arthur?" CR>)
+                            (T <TELL
+"The sword is deeply imbedded in the rock. You can't budge it." CR>)>)>)
+              (<AND <VERB? TAKE> <==? ,WINNER ,ADVENTURER>>
+               <ENABLE <QUEUE I-SWORD -1>>
+               <>)>>
+
+<GLOBAL LAMP-TABLE
+       <TABLE 300
+              "The lamp appears a bit dimmer."
+              100
+              "The lamp is definitely dimmer now."
+              50
+              "The lamp is nearly out."
+              0>>
+
+<ROUTINE LANTERN ()
+        <COND (<VERB? THROW>
+               <TELL "The lamp smashes. The light is now out." CR>
+               <DISABLE <INT I-LANTERN>>
+               <REMOVE ,LAMP>
+               <SETG CURRENT-LAMP ,BROKEN-LAMP>
+               <MOVE ,BROKEN-LAMP ,HERE>)
+              (<VERB? LAMP-ON>
+               <COND (<NOT <FSET? ,LAMP ,LIGHTBIT>>
+                      <TELL "A burned-out lamp won't light." CR>)
+                     (ELSE
+                      <ENABLE <INT I-LANTERN>>
+                      <>)>)
+              (<VERB? LAMP-OFF>
+               <COND (<NOT <FSET? ,LAMP ,LIGHTBIT>>
+                      <TELL "The lamp has already burned out." CR>)
+                     (ELSE
+                      <DISABLE <INT I-LANTERN>>
+                      <>)>)
+              (<VERB? EXAMINE>
+               <COND (<NOT <FSET? ,LAMP ,LIGHTBIT>>
+                      <TELL "The lamp has burned out.">)
+                     (<FSET? ,LAMP ,ONBIT>
+                      <TELL "The lamp is on.">)
+                     (ELSE
+                      <TELL "The lamp is turned off.">)>
+               <CRLF>)>>
+
+<ROUTINE LIGHT-INT (OBJ TBL TICK)
+        <COND (<0? .TICK>
+               <FCLEAR .OBJ ,ONBIT>
+               <FSET .OBJ ,RMUNGBIT>)>
+        <COND (<OR <HELD? .OBJ> <IN? .OBJ ,HERE>>
+               <COND (<0? .TICK>
+                      <TELL
+"You'd better have more light than from the " D .OBJ "." CR>)
+                     (T
+                      <TELL <GET .TBL 1> CR>)>)>>
+
+<ROUTINE I-LANTERN ("AUX" TICK (TBL <VALUE LAMP-TABLE>))
+        <ENABLE <QUEUE I-LANTERN <SET TICK <GET .TBL 0>>>>
+        <LIGHT-INT ,LAMP .TBL .TICK>
+        <COND (<NOT <0? .TICK>>
+               <SETG LAMP-TABLE <REST .TBL 4>>)>>
+
+;<ROUTINE LIGHT-INT (OBJ INTNAM TBLNAM "AUX" (TBL <VALUE .TBLNAM>) TICK)
+        #DECL ((OBJ) OBJECT (TBLNAM INTNAM) ATOM (TBL) <PRIMTYPE VECTOR>
+               (TICK) FIX)
+        <ENABLE <QUEUE .INTNAM <SET TICK <GET .TBL 0>>>>
+        <COND (<0? .TICK>
+               <FCLEAR .OBJ ,LIGHTBIT>
+               <FCLEAR .OBJ ,ONBIT>)>
+        <COND (<OR <HELD? .OBJ> <IN? .OBJ ,HERE>>
+               <COND (<0? .TICK>
+                      <TELL
+"I hope you have more light than from the " D .OBJ "." CR>)
+                     (T
+                      <TELL <GET .TBL 1> CR>)>)>
+        <COND (<NOT <0? .TICK>>
+               <SETG .TBLNAM <REST .TBL 4>>)>>
+
+<ROUTINE CHASM-FCN ()
+        <COND (<OR <VERB? LEAP>
+                   <AND <VERB? PUT> <==? ,PRSO ,ME>>>
+               <TELL
+"You look before leaping and realize you would never survive." CR>)
+              (<VERB? CROSS>
+               <TELL "You'll have to find a bridge." CR>)
+              (<AND <VERB? PUT> <==? ,PRSI ,PSEUDO-OBJECT>>
+               <TELL
+"The " D ,PRSO " drops out of sight into the chasm." CR>
+               <REMOVE ,PRSO>)>>
+
+<ROUTINE TUNNEL-OBJECT ()
+        <COND (<AND <VERB? THROUGH> <GETP ,HERE ,P?IN>>
+               <DO-WALK ,P?IN>
+               <RTRUE>)
+              (T <PATH-OBJECT>)>>
+
+\\f
+
+"SUBTITLE CHINESE PUZZLE SECTION (COURTESY OF WILL WENG)"
+
+<GLOBAL CPHERE 1>
+
+<GLOBAL CPOBJS <ITABLE NONE <* 8 2 36>>>
+
+<GLOBAL CPTABLE
+      <TABLE   1
+              0
+              -1
+              0
+              0
+              -1
+              0
+              -1
+              0
+              1
+              0
+              -2
+              0
+              0
+              0
+              0
+              0
+              1
+              0
+              -3
+              0
+              0
+              -1
+              -1
+              0
+              0
+              0
+              -1
+              0
+              0
+              0
+              1
+              1
+              0
+              0
+              0
+              1>>
+
+;" 0 is no wall
+    1 is fixed wall
+   -1 is movable wall (-2 is good ladder, -3 bad ladder)"
+
+<GLOBAL CPWALLS <LTABLE CPSWL 6 CPNWL -6 CPEWL 1 CPWWL -1>>
+
+<GLOBAL CPEXITS <LTABLE
+       P?NORTH
+       -6
+       P?SOUTH
+       6
+       P?EAST
+       1
+       P?WEST
+       -1
+       P?NE
+       -5
+       P?NW
+       -7
+       P?SE
+       7
+       P?SW
+       5>>
+
+<GLOBAL CP-MOVED <>>
+
+<ROUTINE CPEXIT ("AUX" FX NFX)
+       #DECL ((FX NFX) FIX)
+       <SETG CP-MOVED <>>
+       <COND (<==? ,PRSO ,P?UP>
+              <COND (<==? ,CPHERE 1>
+                     <COND (<==? <GET ,CPTABLE 2> -2>
+                            <TELL
+"With the help of the ladder, you exit the puzzle." CR>
+                            ,CP-ANTE)
+                           (T
+                            <TELL
+                             "The exit is too far above your head." CR>
+                            <RFALSE>)>)
+                    (T
+                     <TELL "There is no way up." CR>
+                     <RFALSE>)>)
+             (<AND <==? ,CPHERE 33>
+                   <==? ,PRSO ,P?WEST>
+                   ,CP-FLAG>
+              <FCLEAR ,CP ,TOUCHBIT>
+              ,CP-OUT)
+             (<==? ,PRSO ,P?DOWN>
+              <TELL "There's no way down here." CR>
+              <RFALSE>)
+             (<AND <==? ,CPHERE 33>
+                   <==? ,PRSO ,P?WEST>>
+              <TELL "The metal door bars the way." CR>
+              <RFALSE>)
+             (T
+              <SET FX <LKP ,PRSO ,CPEXITS>>
+              <COND (<OR <G? <SET NFX <+ .FX ,CPHERE>> 36>
+                         <L? .NFX 0>
+                         <ILLCP ,CPHERE .FX>>
+                     <TELL "There is a wall there." CR>
+                     <RFALSE>)
+                    (<EQUAL? <ABS .FX> 1 6>
+                     <CPMOVE .FX>)
+                    (<AND <G? .FX 0> ; "SW AND SE"
+                          <EQUAL? 0
+                                  <GET ,CPTABLE <+ ,CPHERE 6>>
+                                  <GET ,CPTABLE <+ ,CPHERE <- .FX 6>>>>>
+                     <CPMOVE .FX>)
+                    (<AND <L? .FX 0>
+                          <EQUAL? 0
+                                  <GET ,CPTABLE <- ,CPHERE 6>>
+                                  <GET ,CPTABLE <+ <+ ,CPHERE 6> .FX>>>>
+                     <CPMOVE .FX>)
+                    (T
+                     <TELL "There is a wall there." CR>)>
+              <RFALSE>)>>
+
+<GLOBAL MINUS-SEVEN -7>
+<GLOBAL MINUS-FIVE -5>
+<GLOBAL MINUS-FOUR -4>
+<GLOBAL MINUS-ONE -1>
+
+<ROUTINE ILLCP (ONE TWO)
+        <COND (<AND <==? <MOD .ONE 6> 0>
+                    <EQUAL? .TWO ,MINUS-FIVE 1 7>> <RTRUE>)
+              (<AND <==? <MOD .ONE 6> 1>
+                    <EQUAL? .TWO ,MINUS-SEVEN ,MINUS-ONE 5>> <RTRUE>)
+              (<AND <L? .ONE 7> <L? .TWO ,MINUS-FOUR>> <RTRUE>)
+              (<AND <G? .ONE 30> <G? .TWO 4>> <RTRUE>)>>
+
+<ROUTINE CPMOVE (FX)
+        <COND (<0? <GET ,CPTABLE <SET FX <+ ,CPHERE .FX>>>>
+               <CPGOTO .FX>)
+              (T
+               <TELL "There is a wall there." CR>)>>
+
+<ROUTINE CPENTER ()
+       <COND (<OR <NOT <==? ,YEAR ,YEAR-PRESENT>> ,CPBLOCK-FLAG>
+              <TELL "The hole is blocked by sandstone." CR>
+              <RFALSE>)
+             (T
+              <SETG CPHERE 1>
+              ,CP)>>
+
+<ROUTINE CPANT-ROOM (RARG)
+        <COND (<==? .RARG ,M-LOOK>
+               <TELL
+"This is a small square room, in the middle of which is a round hole">
+               <COND (<OR ,CPBLOCK-FLAG <NOT <==? ,YEAR ,YEAR-PRESENT>>>
+                      <TELL
+                       " which is blocked by smooth sandstone." CR>)
+                     (T
+                      <TELL
+" through which you can discern the floor some ten feet below.
+The area 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." CR>)>)>>
+
+<GLOBAL CPPUSH-FLAG <>>  
+
+<GLOBAL CPSOLVE-FLAG <>>
+
+<ROUTINE CPLADDER-OBJECT ()
+        <COND (<==? <GET ,CPTABLE <- ,CPHERE 1>> -3>
+               <CPLADDER-JUNK <>>)
+              (<==? <GET ,CPTABLE <+ ,CPHERE 1>> -2>
+               <CPLADDER-JUNK T>)
+              (T <TELL "You can't see any ladder here." CR>)>>
+
+<ROUTINE CPLADDER-JUNK (FLG)
+        <COND (<VERB? CLIMB-UP CLIMB-FOO>
+               <COND (<AND .FLG <==? ,CPHERE 1>>
+                      <SETG CPSOLVE-FLAG T>
+                      <GOTO ,CP-ANTE>)
+                     (T
+                      <TELL
+"You hit your head on the ceiling and fall off the ladder." CR>)>)
+              (T <TELL "Come, come!" CR>)>> 
+
+<ROUTINE CPWALL-OBJECT ("AUX" WL NWL NXT NNXT CNT TOP (SNAP <>))
+       #DECL ((NXT WL NNXT NWL) FIX (UVEC) <UVECTOR [REST FIX]>)
+       <COND (<VERB? MOVE> <TELL "You can't grab the wall to pull it." CR>)
+             (<VERB? PUSH>
+              <SET NXT <CPNEXT ,CPHERE ,PRSO>>
+              <COND (<0? .NXT>
+                     <TELL "The wall doesn't budge." CR>
+                     <RTRUE>)>
+              <SET WL <GET ,CPTABLE .NXT>>
+              <COND (<0? .WL>
+                     <TELL "There is only a passage in that direction." CR>)
+                    (<1? .WL>
+                     <TELL "The wall doesn't budge." CR>)
+                    (<0? <SET NNXT <CPNEXT .NXT ,PRSO>>>
+                     <TELL "The wall barely gives." CR>)
+                    (<NOT <0? <SET NWL <GET ,CPTABLE .NNXT>>>>
+                     <TELL "The wall barely gives." CR>)
+                    (T
+                     <TELL
+"The wall slides forward and you follow it">
+                     <COND (,CPPUSH-FLAG <TELL " to this position:" CR>)
+                           (T
+                            <SETG SCORE <+ ,SCORE 1>>
+                            <TELL
+"....|
+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:|
+">
+                            <FIXED-FONT-ON>
+                            <TELL
+"|
+  .. = your position (middle of grid)|
+  MM = marble wall|
+  SS = sandstone wall|
+  ?? = unknown (blocked by walls)|
+|
+">
+                            <FIXED-FONT-OFF>)>
+                     <SETG CPPUSH-FLAG T>
+                     <PUT ,CPTABLE .NXT 0>
+                     <PUT ,CPTABLE .NNXT .WL>
+                     <COND (<NOT <EQUAL? .NNXT 0>>
+                            <SET TOP <* 8 <- .NNXT 1>>>
+                            <SET CNT <GET ,CPOBJS .TOP>>
+                            <REPEAT ()
+                                    <COND (<0? .CNT> <RETURN>)
+                                          (T
+                                           <SET TOP <+ .TOP 1>>
+                                           <MOVE <GET ,CPOBJS .TOP> ,CP-OUT>
+                                           <COND (<NOT .SNAP>
+                                                  <SET SNAP T>
+                                                  <TELL
+"You hear a soft \"snap\" from behind the wall you were pushing." CR>)>
+                                           <SET CNT <- .CNT 1>>)>>)>
+                     <COND (<==? .NNXT 1>
+                            <SETG CPBLOCK-FLAG T>)>
+                     <CPGOTO .NXT>)>)>>
+
+<ROUTINE FIXED-FONT-ON () <PUT 0 8 <BOR <GET 0 8> 2>>>
+
+<ROUTINE FIXED-FONT-OFF() <PUT 0 8 <BAND <GET 0 8> -3>>>
+
+"Flag for blocking of main entrance"
+
+<GLOBAL CPBLOCK-FLAG <>>
+
+<CONSTANT GCARDLOC 168>        ;"8*(22-1)"
+
+<ROUTINE CPGOTO (FX "AUX" F X CNT TOP)
+       #DECL ((FX CNT TOP) FIX (F X) <OR FALSE OBJECT>)
+       <SETG CP-MOVED T>
+       <FCLEAR ,HERE ,TOUCHBIT>
+       <SET TOP <* 8 <- ,CPHERE 1>>>
+       <SET CNT <+ .TOP 1>>
+       <SET F <FIRST? ,CP>>
+       <REPEAT ()
+               <SET X <NEXT? .F>>
+               <COND (<NOT .F> <RETURN>)
+                     (<==? .F ,ADVENTURER> T)
+                     (T
+                      <PUT ,CPOBJS .CNT .F>
+                      <REMOVE .F>
+                      <SET CNT <+ .CNT 1>>)>
+               <COND (<NOT .X> <RETURN>)
+                     (T <SET F .X>)>>
+       <PUT ,CPOBJS .TOP <- <- .CNT .TOP> 1>>
+       <SETG CPHERE .FX>
+       <SET TOP <* 8 <- ,CPHERE 1>>>
+       <SET CNT <GET ,CPOBJS .TOP>>
+       <REPEAT ()
+               <COND (<0? .CNT> <RETURN>)
+                     (T
+                      <SET TOP <+ .TOP 1>>
+                      <MOVE <GET ,CPOBJS .TOP> ,CP>
+                      <SET CNT <- .CNT 1>>)>>
+       <PERFORM ,V?LOOK>
+       <RTRUE>> 
+
+<ROUTINE CPNEXT (RM OBJ "AUX" FX)
+       #DECL ((RM) FIX (OBJ) OBJECT)
+       <SET FX <LKP .OBJ ,CPWALLS>>
+       <COND (<ILLCP .RM .FX> 0)
+             (T <+ .RM .FX>)>>
+
+<ROUTINE CPDOOR-F ()
+        <COND (<AND <==? ,HERE ,CP> <NOT <==? ,CPHERE 33>>>
+               <TELL "You can't see any steel door here." CR>)
+              (<VERB? OPEN>
+               <COND (,CP-FLAG <TELL "The steel door has already opened." CR>)
+                     (T <TELL "You can't force it open." CR>)>)
+              (<VERB? CLOSE>
+               <COND (,CP-FLAG <TELL
+"There doesn't seem to be any way to close it." CR>)
+                     (T <TELL "Do you think it isn't already?" CR>)>)
+              (<VERB? MUNG>
+               <TELL
+"The door is, to a first approximation, indestructible." CR>)
+              (<VERB? KNOCK>
+               <TELL
+"Besides a great amount of reverberation, nothing happens." CR>)>>
+
+<ROUTINE CP-ROOM (RARG)
+       <COND (<==? .RARG ,M-ENTER>
+              <SETG CPHERE
+                    <COND (<==? ,PRSO ,P?DOWN> 1)
+                          (T 33)>>)
+             (<==? .RARG ,M-LOOK>
+              <COND (,CPPUSH-FLAG <CPWHERE>)
+                    (T
+                     <TELL
+"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." CR>)>)>>   
+
+<ROUTINE CPNS (NUM)
+        #DECL ((NUM) FIX)
+        <COND (<OR <G? .NUM 36> <L? .NUM 1>> 1)
+              (T <GET ,CPTABLE .NUM>)>>
+
+<ROUTINE CPEW (NUM FOO)
+        #DECL ((NUM FOO) FIX)
+        <COND (<==? <MOD .NUM 6> .FOO> 1)
+              (T <GET ,CPTABLE .NUM>)>>
+
+<ROUTINE CPWHERE ("AUX"  (N <CPNS <+ ,CPHERE -6>>)
+                        (S <CPNS <+ ,CPHERE 6>>)
+                        (E <CPEW <+ ,CPHERE 1> 1>)
+                        (W <CPEW <+ ,CPHERE -1> 0>))
+       #DECL ((N S E W) FIX)
+       <FIXED-FONT-ON>
+       <TELL "      +">                              ;"Top Row"
+       <CP-CORNER ,MINUS-SEVEN .N .W>
+       <TELL " ">
+       <CP-ORTHO .N>
+       <TELL " ">
+       <CP-CORNER ,MINUS-FIVE .N .E>
+       <TELL "+" CR>
+       <TELL "West  +">                           ;"Middle Row"
+       <CP-ORTHO .W>
+       <TELL " .. ">
+       <CP-ORTHO .E>
+       <TELL "+  East" CR>
+       <TELL "      +">                           ;"Bottom Row"
+       <CP-CORNER 5 .S .W>
+       <TELL " ">
+       <CP-ORTHO .S>
+       <TELL " ">
+       <CP-CORNER 7 .S .E>
+       <TELL "+" CR>
+       <FIXED-FONT-OFF>
+       <COND (<==? ,CPHERE 1>
+              <TELL
+"In the ceiling above you is a large circular opening." CR>)
+             (<==? ,CPHERE 22>
+              <TELL
+"The center of the floor here is noticeably depressed." CR>)
+             (<==? ,CPHERE 33>
+              <TELL
+"In the center of the west wall is a steel door which is ">
+              <COND (,CP-FLAG <TELL "open">)
+                    (T <TELL "closed">)>
+              <TELL
+".
+On one side of the door is a narrow slot." CR>)>
+       <COND (<==? .E -2>
+              <TELL
+"There is a ladder here, firmly attached to the east wall." CR>)>
+       <COND (<==? .W -3>
+              <TELL
+"There is a ladder here, firmly attached to the west wall." CR>)>>
+
+"Show where the eight nearest neighbors are located" 
+
+<ROUTINE CP-ORTHO (CONTENTS)
+       #DECL ((CONTENTS) FIX)
+       <COND (<0? .CONTENTS> <TELL "  ">)
+             (<1? .CONTENTS> <TELL "MM">)
+             (T <TELL "SS">)>>
+
+;"Show an orthogonal neighbor"
+
+<ROUTINE CP-CORNER (DIR COL ROW "AUX" LOCN)
+       #DECL ((DIR COL ROW) FIX)
+       <SET LOCN <+ ,CPHERE .DIR>>
+       <COND (<AND <NOT <==? .COL 0>> <NOT <==? .ROW 0>>> <TELL "??">)
+             (<ILLCP ,CPHERE .DIR> <TELL "MM">)
+             (<0? <SET COL
+                       <COND (<OR <L? .LOCN 1> <G? .LOCN 36>> 1)
+                             (T <GET ,CPTABLE .LOCN>)>>>
+              <TELL "  ">)
+             (<1? .COL> <TELL "MM">)
+             (T <TELL "SS">)>>
+
+<ROUTINE CP-SLOT-FCN ()
+       <COND (<VERB? PUT>
+              <COND (<G? <GETP ,PRSO ,P?SIZE> 10>
+                     <TELL "It doesn't fit." CR>
+                     <RTRUE>)>
+              <REMOVE ,PRSO>
+              <COND (<==? ,PRSO ,LORE-BOOK>
+                     <SETG CP-FLAG T>
+                     <TELL
+"The book drops into the slot and vanishes. The metal door slides
+open, revealing a passageway to the west, and a sign flashes:|
+    \"Royal Puzzle Exit Fee Paid|
+          Item Confiscated\"" CR>)
+                    (<FSET? ,PRSO ,ACTORBIT>
+                     <TELL <PICK-ONE ,YUKS> CR>)
+                    (T
+                     <TELL
+"The item vanishes into the slot. A moment later, a previously
+unseen sign flashes \"Garbage In, Garbage Out\" and spews out
+the " D ,PRSO " (now atomized)." CR>)>)>>
+            
+<ROUTINE CPOUT-ROOM (RARG)
+       <COND (<==? .RARG ,M-LOOK>
+              <TELL
+"You are in a narrow room, lit from above. A flight of steps leads up
+to the north, and a ">
+              <COND (,CP-FLAG <TELL "passage">)
+                    (T <TELL "metal door">)>
+              <TELL " leads to the east." CR>)>>
+
+"Old end-game stuff"
+
+;"SUBTITLE It's All Done with Mirrors"
+
+<GLOBAL MLOC <>>
+
+<GLOBAL MR1-FLAG T>
+
+<GLOBAL MR2-FLAG T>
+
+<GLOBAL MIRROR-OPEN-FLAG <>>
+
+<GLOBAL WOOD-OPEN-FLAG <>>
+
+<GLOBAL MRSWPUSH-FLAG <>>
+
+<GLOBAL R-SOUTHS <LTABLE FRONT-DOOR MRD MRG MRC MRB MRA MREYE>>
+<GLOBAL R-NORTHS <LTABLE MREYE MRA MRB MRC MRG MRD>>
+
+<ROUTINE MRGO ("AUX" TORM)
+        <COND (<EQUAL? ,PRSO ,P?NORTH ,P?NW ,P?NE>
+               <SET TORM <LKP ,HERE ,R-NORTHS>>)
+              (T <SET TORM <LKP ,HERE ,R-SOUTHS>>)>
+        <COND (<EQUAL? ,PRSO ,P?NORTH ,P?SOUTH>
+               <COND (<==? ,MLOC .TORM>
+                      <COND (<0? <MOD ,MDIR 180>>
+                             <TELL
+ "There is a wooden wall blocking your way." CR>
+                             <RFALSE>)
+                            (<MIRIN <>> ,IN-MIRROR)
+                            (T <MIRBLOCK> <RFALSE>)>)
+                    (T .TORM)>)
+              (<==? ,MLOC .TORM>
+               <COND (<0? <MOD ,MDIR 180>> <GO-E-W .TORM>)
+                     (T <MIRBLOCK> <RFALSE>)>)
+              (T .TORM)>>
+
+<ROUTINE MIRBLOCK ("AUX" MD)
+        <SET MD ,MDIR>
+        <COND (<==? ,PRSO ,P?SOUTH>
+               <SET MD <MOD <+ ,MDIR 180> 360>>)>
+        <COND (<OR <AND <==? .MD 270> <NOT ,MR1-FLAG>>
+                   <AND <==? .MD 90> <NOT ,MR2-FLAG>>>
+               <TELL "There is a large broken mirror blocking your way." CR>)
+              (T
+               <TELL "There is a large mirror blocking your way." CR>)>>
+
+<ROUTINE GO-E-W (RM)
+       <COND (<EQUAL? ,PRSO ,P?NE ,P?SE>
+              <LKP .RM ,R-EASTS>)
+             (T <LKP .RM ,R-WESTS>)>>
+
+<GLOBAL R-EASTS <LTABLE MRA MRAE MRB MRBE MRC MRCE MRG MRGE MRD MRDE>>
+<GLOBAL R-WESTS <LTABLE MRA MRAW MRB MRBW MRC MRCW MRG MRGW MRD MRDW>>
+
+<DEFMAC N-S () '<0? <MOD ,MDIR 180>>>
+
+<DEFMAC E-W ('FX) <FORM OR <FORM ==? .FX 90> <FORM ==? .FX 270>>>
+
+<ROUTINE EWTELL (RM "AUX" (EAST? <>) (M1? <>) MWIN)
+        <COND (<OR <EQUAL? .RM ,MRAE ,MRBE ,MRCE>
+                   <EQUAL? .RM ,MRGE ,MRCE>>
+               <SET EAST? T>)>
+        <COND (<==? <+ ,MDIR <COND (.EAST? 0) (T 180)>> 180>
+               <SET M1? T>)>
+        <COND (.M1? <SET MWIN ,MR1-FLAG>) (T <SET MWIN ,MR2-FLAG>)>
+        <TELL "You are in a narrow room, whose "
+              <COND (.EAST? "west") (T "east")>
+              " wall is a large "
+              <COND (.MWIN "mirror.")
+                    (T "wooden panel
+which once contained a mirror.")>
+              CR>
+        <COND (<AND .M1? ,MIRROR-OPEN-FLAG>
+               <TELL <COND (.MWIN
+"The mirror is mounted on a panel which has been opened outward.")
+                           (T "The panel has been opened outward.")>
+                     CR>)>
+        <TELL "The opposite wall is solid rock." CR>>
+
+<GLOBAL GUARDIANS-SEEN <>>
+
+<ROUTINE MRDEW ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <EWTELL ,HERE>
+               <SETG GUARDIANS-SEEN T>
+               <TELL "Somewhat to the south" ,GUARDSTR CR>)>>
+
+<ROUTINE MRCEW ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <EWTELL ,HERE>
+               <SETG GUARDIANS-SEEN T>
+               <TELL "Somewhat to the north" ,GUARDSTR CR>)>>
+
+<ROUTINE MRBEW ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <EWTELL ,HERE>
+               <TELL "To the north and south are large hallways." CR>)>>
+
+<ROUTINE MRAEW ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <EWTELL ,HERE>
+               <TELL "To the north is a large hallway." CR>)>>
+
+<GLOBAL GUARDSTR
+", identical stone statues face each other from
+pedestals on opposite sides of the corridor. The statues represent
+Guardians of Zork, a military order of ancient lineage. They are
+portrayed as heavily armored warriors clasping formidable bludgeons.">
+
+<ROUTINE LOOK-TO (RMN RMS "AUX" (NORTH? <>) (NTELL <>) (STELL <>)
+                               MIR? (M1? <>) DIR)
+        <COND (<NOT <EQUAL? ,HERE ,MREYE ,FRONT-DOOR>>
+               <TELL
+"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." CR>)>
+        <COND (<==? ,HERE ,MRG>
+               <SETG GUARDIANS-SEEN T>
+               <TELL
+"On either side of you are identical stone statues holding bludgeons. They
+appear ready to strike, though, for the moment, they remain impassive." CR>)
+              (<==? ,HERE ,MRC>
+               <SETG GUARDIANS-SEEN T>
+               <TELL "Somewhat to the north" ,GUARDSTR CR>
+               <SET NTELL T>)
+              (<==? ,HERE ,FRONT-DOOR>
+               <TELL
+"You are in a north-south hallway which ends, to the north, at a large wooden
+door." CR>
+               <SET NTELL T>)
+              (<==? ,HERE ,MRD>
+               <SETG GUARDIANS-SEEN T>
+               <TELL "Somewhat to the south" ,GUARDSTR CR>
+               <SET STELL T>)
+              (<==? ,HERE ,MRA>
+               <TELL "The hallway continues to the south." CR>
+               <SET STELL T>)>
+        <COND (<EQUAL? ,MLOC .RMN .RMS>
+               <COND (<==? ,MLOC .RMN>
+                      <SET NORTH? T>
+                      <SET NTELL T>
+                      <SET DIR "nor">)
+                     (T
+                      <SET STELL T>
+                      <SET DIR "sou">)>
+               <SET MIR?
+                   <COND (<AND .NORTH? <G? ,MDIR 180> <L? ,MDIR 359>>
+                          <SET M1? T>
+                          ,MR1-FLAG)
+                         (<AND <NOT .NORTH?> <G? ,MDIR 0> <L? ,MDIR 179>>
+                          <SET M1? T>
+                          ,MR1-FLAG)
+                         (T ,MR2-FLAG)>>
+               <COND (<0? <MOD ,MDIR 180>>
+                      <TELL "The "
+                            .DIR
+"th side of the room is divided by a wooden wall into small
+hallways to the ">
+                      <TELL .DIR "theast and ">
+                      <TELL .DIR "thwest." CR>)
+                     (T
+                      <TELL <COND (.MIR? "A large mirror fills the ")
+                                  (T "A large panel fills the ")>
+                            .DIR
+                            "th side of the hallway." CR>
+                      <COND (<AND .M1? ,MIRROR-OPEN-FLAG>
+                             <TELL <COND (.MIR?
+"The mirror is mounted on a panel which has been opened outward.")
+                                         (T
+"The panel has been opened outward.")> CR>)>)>)>
+        <COND (<AND <NOT .NTELL> <NOT .STELL>>
+               <TELL "The corridor continues north and south." CR>)
+              (<NOT .NTELL>
+               <TELL "The corridor continues north." CR>)
+              (<NOT .STELL>
+               <TELL "The corridor continues south." CR>)>
+        <RTRUE>>
+
+<ROUTINE MRDF ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <LOOK-TO ,FRONT-DOOR ,MRG>)>>
+
+<ROUTINE MRCF ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <LOOK-TO ,MRG ,MRB>)>>
+
+<ROUTINE MRBF ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <LOOK-TO ,MRC ,MRA>)>>
+
+<ROUTINE MRAF ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <LOOK-TO ,MRB <>>)>>
+
+<ROUTINE GUARDIANS ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <COND (<==? ,HERE ,MRG>
+                      <LOOK-TO ,MRD ,MRC>)
+                     (T
+                      <EWTELL ,HERE>
+                      <TELL
+"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!" CR>)>)
+              (<AND <==? .RARG ,M-ENTER> <NOT ,INVIS>>
+               <JIGS-UP
+"The Guardians awake, and in perfect unison, pulverize you with
+their bludgeons. Satisfied, they resume their posts.">)
+              (<NOT <==? .RARG ,M-END>> <RFALSE>)
+              (<VERB? EXAMINE>
+               <COND (<==? ,HERE ,IN-MIRROR>
+                      <TELL "You can't see them from here." CR>)
+                     (T <TELL
+"The Guardians are quite impressive. I wouldn't get in their way if
+I were you!" CR>)>)
+              (<AND <VERB? THROW> <==? ,PRSI ,GUARDIAN>>
+               <COND (<EQUAL? ,PRSO ,ME>
+                      <TELL "You step">)
+                     (T
+                      <TELL "The " D ,PRSO " falls">
+                      <REMOVE ,PRSO>)>
+               <TELL
+" in front of the Guardians, who ">
+               <COND (<EQUAL? ,PRSO ,ME>
+                      <TELL "decimate you">)
+                     (T <TELL "destroy it">)>
+               <TELL " in perfect
+unison. Satisfied, they resume their posts." CR>)
+              (<VERB? ATTACK>
+               <TELL
+"You aren't close enough, and even if you were, the fight
+would be a bit one-sided." CR>)
+              (<VERB? HELLO>
+               <TELL "The statues are impassive." CR>)>>
+
+<ROUTINE MIRROR-DIR? (DIR RM "AUX" TBL)
+         <SET TBL <COND (<==? .DIR ,P?NORTH> ,R-NORTHS) (T ,R-SOUTHS)>>
+        <COND (<AND <GETPT .RM .DIR>
+                    <==? ,MLOC <LKP .RM .TBL>>>
+               <COND (<AND <==? .DIR ,P?NORTH>
+                           <G? ,MDIR 180>
+                           <L? ,MDIR 360>>
+                      1)
+                     (<AND <==? .DIR ,P?SOUTH>
+                           <G? ,MDIR 0>
+                           <L? ,MDIR 180>>
+                      1)
+                     (T 2)>)>>
+
+<ROUTINE WOODEN-WALL-F ()
+        <COND (<AND <0? <MOD ,MDIR 180>>
+                    <OR <MIRROR-DIR? ,P?NORTH ,HERE>
+                        <MIRROR-DIR? ,P?SOUTH ,HERE>>>
+               <COND (<VERB? PUSH>
+                      <TELL "The structure won't budge." CR>)>)
+              (T <TELL "You can't see any wooden wall here." CR>)>>
+
+<ROUTINE MIRROR-HERE? (RM "AUX" TMP)
+        <COND (<OR <EQUAL? ,HERE ,MRAE ,MRAW ,MRBE>
+                   <EQUAL? ,HERE ,MRBW ,MRCE ,MRCW>
+                   <EQUAL? ,HERE ,MRGE ,MRGW ,MRDE>
+                   <EQUAL? ,HERE ,MRDW>>
+               <COND (<==? 180
+                           <+ ,MDIR <COND (<OR <EQUAL? .RM ,MRAE ,MRBE ,MRCE>
+                                               <EQUAL? .RM ,MRGE ,MRDE>> 0)
+                                          (T 180)>>>
+                      1)
+                     (T 2)>)
+              (<0? <MOD ,MDIR 180>> <RFALSE>)
+              (<SET TMP <MIRROR-DIR? ,P?NORTH .RM>> .TMP)
+              (<SET TMP <MIRROR-DIR? ,P?SOUTH .RM>> .TMP)
+              (T <RFALSE>)>>
+
+<ROUTINE MIRROR-FUNCTION ("AUX" MIRROR)
+        <COND (<NOT <SET MIRROR <MIRROR-HERE? ,HERE>>>
+               <TELL "You can't see any mirror here." CR>)
+              (<VERB? OPEN MOVE>
+               <TELL
+"You don't see a way to open the mirror here." CR>)
+              (<VERB? LOOK-INSIDE>
+               <COND (<OR <AND <==? .MIRROR 1> ,MR1-FLAG> ,MR2-FLAG>
+                      <COND (,INVIS
+                             <TELL
+"Amazingly, you have no reflection!" CR>)
+                            (T
+                             <TELL
+"A disheveled adventurer stares back at you." CR>)>)
+                     (T
+                      <TELL
+"You have destroyed the mirror, or have you forgotten?" CR>)>)
+              (<VERB? MUNG>
+               <COND (<1? .MIRROR>
+                      <COND (,MR1-FLAG
+                             <SETG MR1-FLAG <>>
+                             <TELL
+"The mirror breaks, revealing a wooden panel behind it. The glistening
+fragments of mirror quietly sparkle into nonexistance." CR>)
+                            (T <TELL "The mirror has already been broken."
+                                     CR>)>)
+                     (,MR2-FLAG
+                      <SETG MR2-FLAG <>>
+                      <TELL
+"The mirror breaks, revealing a wooden panel behind it. The glistening
+fragments of mirror quietly sparkle into nonexistance." CR>)
+                     (T <TELL "The mirror has already been broken." CR>)>)
+              (<OR <AND <==? .MIRROR 1> <NOT ,MR1-FLAG>> <NOT ,MR2-FLAG>>
+               <TELL
+"There's no mirror left." CR>)
+              (<VERB? PUSH>
+               <TELL <COND (<==? .MIRROR 1>
+"The mirror is mounted on a wooden panel which moves slightly inward
+as you push, and back out when you let go. It feels fragile.")
+                           (T
+"The mirror is unyielding, but seems fragile.")> CR>)>>
+
+<ROUTINE PANEL-FUNCTION ("AUX" MIRROR)
+        <COND (<NOT <SET MIRROR <MIRROR-HERE? ,HERE>>>
+               <TELL "You can't see any panel here." CR>)
+              (<VERB? OPEN MOVE>
+               <TELL "You don't see a way to open the panel here." CR>)
+              (<VERB? MUNG>
+               <COND (<==? .MIRROR 1>
+                      <COND (,MR1-FLAG
+                             <TELL ,MIRROR-FIRST CR>)
+                            (T <TELL
+"The panel is not that easily destroyed." CR>)>)
+                     (,MR2-FLAG
+                      <TELL ,MIRROR-FIRST CR>)
+                     (T <TELL "The panel is not that easily destroyed." CR>)>)
+              (<VERB? PUSH>
+               <TELL <COND (<==? .MIRROR 1>
+"The wooden panel moves slightly inward as you push, and back out
+when you let go.")
+                           (T
+"The panel is unyielding.")> CR>)>>
+
+<GLOBAL MIRROR-FIRST
+"To break the panel you would have to break the mirror first.">
+
+<GLOBAL DIRVEC <LTABLE P?NORTH 0 P?NE 45 P?EAST 90 P?SE 135
+                      P?SOUTH 180 P?SW 225 P?WEST 270 P?NW 315>>
+
+<ROUTINE MIROUT ("AUX" DIR RM)
+        <COND (<==? ,PRSO ,P?OUT> <SET DIR 1>)
+              (T <SET DIR <LKP ,PRSO ,DIRVEC>>)>
+        <COND (,MIRROR-OPEN-FLAG
+               <COND (<OR <==? .DIR 1>
+                          <==? <MOD <+ ,MDIR 270> 360> .DIR>>
+                      <COND (<0? <MOD ,MDIR 180>>
+                             <MIREW>)
+                            (T <MIRNS <L? ,MDIR 180> T>)>)
+                     (T
+                      <TELL "There's a wall there." CR>
+                      <RFALSE>)>)
+              (,WOOD-OPEN-FLAG
+               <COND (<OR <==? .DIR 1>
+                          <==? <MOD <+ ,MDIR 180> 360> .DIR>>
+                      <COND (<0? ,MDIR> <SET RM <>>) (T <SET RM T>)>
+                      <COND (<SET RM <MIRNS .RM T>>
+                             <TELL "As you leave, the door swings shut." CR>
+                             <SETG WOOD-OPEN-FLAG <>>
+                             .RM)
+                            (T
+                             <TELL "You can't go that way." CR>
+                             <RFALSE>)>)
+                     (T
+                      <TELL "You would hit one of the panels." CR>
+                      <RFALSE>)>)
+              (T
+               <TELL "You are inside a closed box!" CR>
+               <RFALSE>)>>
+
+"MIRNS -- returns room in a given direction from the mirror (north or
+south as indicated by first argument).  If second arg is T, then we
+are exiting, not moving the mirror, so don't worry about ends."
+
+<ROUTINE MIRNS (NORTH? "OPTIONAL" (EXIT? <>) "AUX" S T)
+        <COND (<NOT .EXIT?>
+               <COND (<AND .NORTH? <==? ,MLOC ,MRD>>
+                      <RFALSE>)
+                     (<AND <NOT .NORTH?> <==? ,MLOC ,MRA>>
+                      <RFALSE>)>)>
+        <COND (<SET T <GETPT ,MLOC <COND (.NORTH? ,P?NORTH)
+                                         (T ,P?SOUTH)>>>
+               <COND (<==? <SET S <PTSIZE .T>> ,UEXIT>
+                      <GETB .T 0>)
+                     (.NORTH?
+                      <LKP ,MLOC ,R-NORTHS>)
+                     (T
+                      <LKP ,MLOC ,R-SOUTHS>)>)>>
+
+<ROUTINE MIREW ()
+        <COND (<0? ,MDIR> <LKP ,MLOC ,R-WESTS>)
+              (T <LKP ,MLOC ,R-EASTS>)>>
+
+<ROUTINE MIRIN ("OPTIONAL" (VRB T))
+         <COND (<AND <==? <MIRROR-HERE? ,HERE> 1> ,MIRROR-OPEN-FLAG>
+               ,IN-MIRROR)
+              (<NOT .VRB> <RFALSE>)
+              (<==? <MIRROR-HERE? ,HERE> 1>
+               <COND (<AND <NOT ,MIRROR-OPENED> ,MR1-FLAG>
+                      <TELL "A mirror blocks your way." CR>
+                      <RFALSE>)
+                     (T <TELL "The panel is closed." CR> <RFALSE>)>)
+              (T <TELL "The structure blocks your way." CR> <RFALSE>)>>
+
+<ROUTINE MREYE-ROOM ("OPTIONAL" (RARG <>) "AUX" O)
+         <COND (<AND <==? .RARG ,M-BEG>
+                    <VERB? DROP>
+                    <IN? ,PRSO ,WINNER>
+                    <NOT <BEAM-STOPPED?>>>
+               <MOVE ,PRSO ,HERE>
+               <TELL
+"You conveniently drop the " D ,PRSO " in position to block the
+beam of light." CR>)
+              (<==? .RARG ,M-LOOK>
+               <TELL
+"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." CR>
+               <COND (<SET O <BEAM-STOPPED?>>
+                      <TELL
+"The beam is blocked by a " D .O " lying on the floor." CR>)>
+               <LOOK-TO ,MRA <>>)>>
+
+<ROUTINE BEAM-STOPPED? ("AUX" N)
+        <SET N <FIRST? ,MREYE>>
+        <REPEAT ()
+                <COND (<NOT <EQUAL? .N ,PLAYER ,BEAM>>
+                       <SETG BEAM-BREAKER .N>
+                       <RETURN .N>)
+                      (<NOT <SET N <NEXT? .N>>> <RFALSE>)>>>
+
+; "This function cannot have its .PRSI and .PRSO's changed to ,PRSI etc!!"
+
+<GLOBAL BEAM-BREAKER <>>
+
+<ROUTINE BEAM-FUNCTION ("AUX" PRO PRI)
+        <COND (<VERB? LEAP>
+               <TELL
+"You jump over the beam and into the hallway." CR>
+               <GOTO ,MRA>
+               <RTRUE>)
+              (<VERB? FOLLOW>
+               <TELL 
+"It simply crosses the northern end of the room, so there's nowhere to
+follow it." CR>)
+              (<VERB? EXAMINE>
+               <TELL
+"The red beam of light crosses the north end of the room only an inch or so
+above the floor.">
+               <COND (<BEAM-STOPPED?>
+                      <TELL " The beam is broken by a " D ,BEAM-BREAKER
+                            " lying on the ground.">)>
+               <CRLF>)
+              (<VERB? PUT MUNG>
+               <COND (<VERB? PUT>
+                      <SET PRI ,PRSO>
+                      <SET PRO ,PRSI>)
+                     (T
+                      <SET PRI ,PRSI>
+                      <SET PRO ,PRSO>)>
+               <COND (<OR <NOT .PRI> <NOT <==? .PRO ,BEAM>>> <RFALSE>)
+                     (<IN? .PRI ,WINNER>
+                      <MOVE .PRI ,HERE>
+                      <SETG BEAM-BREAKER .PRI>
+                      <TELL
+"The beam is now interrupted by a " D .PRI " lying on the floor." CR>)
+                     (<IN? .PRI ,HERE>
+                      <TELL
+"The " D .PRI " already breaks the beam." CR>)
+                     (<==? .PRI ,HANDS>
+                      <TELL
+"The beam is broken briefly as it passes through." CR>)
+                     (T <TELL
+"You're not holding the " D .PRI "." CR>)>)
+              (<AND <VERB? TAKE> <==? ,PRSO ,BEAM>>
+               <TELL
+"No doubt you have a bottle of moonbeams as well." CR>)>>
+
+<GLOBAL MIRROR-OPENED <>>
+
+<ROUTINE MRSWITCH ()
+        <COND (<VERB? PUSH>
+               <COND (,MRSWPUSH-FLAG
+                      <TELL "Click." CR>)
+                     (T
+                      <COND (<BEAM-STOPPED?>
+                             <TELL "Click. Snap!" CR>
+                             <ENABLE <QUEUE I-MRINT 7>>
+                             <SETG MRSWPUSH-FLAG T>
+                             <SETG MIRROR-OPEN-FLAG T>
+                             <SETG MIRROR-OPENED T>
+                             <FCLEAR ,MRA ,TOUCHBIT>)
+                            (T <TELL "Click." CR>)>)>)>>
+
+<ROUTINE I-MRINT ()
+        <SETG MRSWPUSH-FLAG <>>
+        <SETG MIRROR-OPEN-FLAG <>>
+        <COND (<OR <==? <MIRROR-HERE? ,HERE> 1>
+                   <==? ,HERE ,IN-MIRROR>>
+               <TELL "The mirror quietly swings shut." CR>)
+              (<==? ,HERE ,MR-ANTE>
+               <TELL "The button pops back to its original position." CR>)>>
+
+<GLOBAL MDIR 270>
+
+;"mirror points... 0 = north"
+
+<GLOBAL POLEUP-FLAG 0>
+
+;"pole raised?: 0 -- in hole or channel, 1 -- foor level, 2 -- in air"
+
+<ROUTINE MAGIC-MIRROR ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-LOOK>
+               <TELL
+"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 ">
+               <COND (<AND <==? ,MLOC ,MRB> <==? ,MDIR 270>>
+                      <COND (<NOT <0? ,POLEUP-FLAG>>
+                             <TELL
+"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.">)
+                            (T
+                             <TELL "has been dropped
+into a hole carved in the stone floor.">)>)
+                     (<EQUAL? ,MDIR 0 180>
+                      <COND (<NOT <0? ,POLEUP-FLAG>>
+                             <TELL "is positioned above
+the stone channel in the floor.">)
+                            (T
+                             <TELL "has been dropped
+into the stone channel incised in the floor.">)>)
+                     (T
+                      <TELL "is resting on the
+stone floor.">)>
+              <TELL
+"|
+|
+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 "
+                    <GET ,LONGDIRS </ ,MDIR 45>>
+                    ".">
+              <COND (,WOOD-OPEN-FLAG
+                     <TELL
+"|
+The pine panel has been opened outward.">)>
+              <CRLF>)>>
+
+<GLOBAL LONGDIRS <TABLE "north" "northeast" "east" "southeast"
+                       "south" "southwest" "west" "northwest">>
+
+;"MOVEMENT"
+
+<ROUTINE MPANELS ("AUX" MD)
+         <COND (<VERB? PUSH>
+               <COND (<NOT <0? ,POLEUP-FLAG>>
+                      <COND (<==? ,MLOC ,MRG>
+                             <COND (,GUARDIANS-SEEN
+                                    <JIGS-UP
+"The Guardians awake, and in perfect unison, utterly destroy you with
+their stone bludgeons. Satisfied, they resume their posts.">
+                                    <RTRUE>)
+                                   (T
+                                    <JIGS-UP
+"All at once, two immense stone bludgeons come through the top of the
+structure, crushing you.">
+                                    <RTRUE>)>)>
+                      <COND (<EQUAL? ,PRSO ,RED-PANEL ,YELLOW-PANEL>
+                             <SET MD <MOD <+ ,MDIR 45> 360>>
+                             <TELL "The structure rotates clockwise." CR>)
+                            (T
+                             <SET MD <MOD <+ ,MDIR 315> 360>>
+                             <TELL
+"The structure rotates counterclockwise." CR>)>
+                      <TELL "The arrow on the compass rose now indicates "
+                            <GET ,LONGDIRS </ .MD 45>>
+                            "." CR>
+                      <COND (,WOOD-OPEN-FLAG
+                             <SETG WOOD-OPEN-FLAG <>>
+                             <TELL "The pine wall closes quietly." CR>)>
+                      <SETG MDIR .MD>
+                      <RTRUE>)
+                     (<0? <MOD ,MDIR 180>>
+                      <TELL
+ "The short pole prevents the structure from rotating." CR>)
+                     (T
+                      <TELL
+ "The structure shakes slightly but doesn't move." CR>)>)>>
+
+<ROUTINE MENDS ("AUX" RM)
+        <COND (<VERB? CLOSE> <TELL "You can't do that to the panel." CR>)
+              (<OR <VERB? PUSH>
+                   <AND <VERB? OPEN> <==? ,PRSO ,PINE-PANEL>>>
+               <COND (<NOT <0? <MOD ,MDIR 180>>>
+                      <TELL
+"The structure rocks back and forth slightly but doesn't move." CR>)
+                     (<==? ,PRSO ,MAHOGANY-PANEL>
+                      <COND (<SET RM <MIRNS <L? ,MDIR 180>>>
+                             <MIRMOVE <0? ,MDIR> .RM>)
+                            (T
+                             <TELL
+"The structure has reached the end of the stone channel and won't
+budge." CR>)>)
+                     (T
+                      <TELL "The pine wall swings open." CR>
+                      <COND (<OR <AND <==? ,MLOC ,MRD>
+                                      <==? ,MDIR 0>>
+                                 <AND <==? ,MLOC ,MRC>
+                                      <==? ,MDIR 180>>
+                                 <==? ,MLOC ,MRG>>
+                             <COND (,GUARDIANS-SEEN
+                                    <TELL
+"The pine door opens into the field of view of the Guardians." CR>)
+                                   (T
+                                    <TELL
+"The pine door opens into the field of view of the Guardians of
+Zork, represented by two identical stone statues carrying bludgeons." CR>)>
+                             <JIGS-UP
+"The Guardians awake, and in perfect unison, utterly destroy you with
+their stone bludgeons. Satisfied, they resume their posts.">
+                             <RTRUE>)>
+                      <SETG WOOD-OPEN-FLAG T>
+                      <ENABLE <QUEUE I-PININ 5>>)>)>>
+
+<ROUTINE I-PININ ()
+        <COND (,WOOD-OPEN-FLAG
+               <SETG WOOD-OPEN-FLAG <>>
+               <TELL "The pine wall closes quietly." CR>)>>
+
+<ROUTINE MIRMOVE (NORTH? RM "AUX" (PU? <>) (LOSE <>))
+        <COND (<NOT <0? ,POLEUP-FLAG>> <SET PU? T>)>
+        <TELL <COND (.PU? "The structure sways unsteadily ")
+                    (T "The structure slides ")>
+              <COND (.NORTH? "north") (T "south")>
+              " and stops over another compass rose." CR>
+        <SETG MLOC .RM>
+        <COND (<AND <==? .RM ,MRG> <==? ,HERE ,IN-MIRROR>>
+               <COND (.PU?
+                      <SET LOSE T>)
+                     (<OR <NOT ,MR1-FLAG> <NOT ,MR2-FLAG>>
+                      <SET LOSE T>)
+                     (<OR ,MIRROR-OPEN-FLAG ,WOOD-OPEN-FLAG>
+                      <SET LOSE T>)>
+               <COND (.LOSE
+                      <COND (,GUARDIANS-SEEN
+                             <JIGS-UP
+"Suddenly the Guardians realize someone is trying to sneak by them in
+the structure. They awake and, in perfect unison, hammer the contents
+of the box (in other words you) to pulp. They then resume their posts,
+satisfied.">)
+                            (T
+                             <JIGS-UP
+"Suddenly, two identical stone bludgeons come through the roof and
+hammer the contents of the box to pulp. That includes you.">)>)>
+               <RTRUE>)>
+        T>     
+
+<ROUTINE SHORT-POLE-F ()
+         <COND (<VERB? RAISE MOVE>
+               <COND (<==? ,POLEUP-FLAG 2>
+                      <TELL "The pole cannot be raised further." CR>)
+                     (T
+                      <SETG POLEUP-FLAG 2>
+                      <TELL "The pole is now slightly above the floor." CR>)>)
+              (<OR <AND <VERB? PUT> <==? ,PRSI ,CHANNEL>>
+                   <VERB? PUSH LOWER>>
+               <COND (<0? ,POLEUP-FLAG>
+                      <TELL "The pole cannot be lowered further." CR>)
+                     (<0? <MOD ,MDIR 180>>
+                      <TELL "The pole is lowered into the channel." CR>
+                      <SETG POLEUP-FLAG 0>
+                      T)
+                     (<AND <==? ,MDIR 270> <==? ,MLOC ,MRB>>
+                      <SETG POLEUP-FLAG 0>
+                      <TELL "The pole is lowered into the stone hole." CR>)
+                     (<==? ,POLEUP-FLAG 1>
+                      <TELL "The pole is already resting on the floor." CR>)
+                     (T
+                      <SETG POLEUP-FLAG 1>
+                      <TELL "The pole now rests on the stone floor." CR>)>)>>
+
+\\f
+
+<ROUTINE DUNGEON-MASTER-F ("OPTIONAL" (RARG <>)) 
+        <COND (<==? .RARG ,M-OBJDESC> <RFALSE>)
+              (<==? ,WINNER ,DUNGEON-MASTER>
+               <COND (<VERB? FOLLOW>
+                      <COND (<IN? ,DUNGEON-MASTER <LOC ,PLAYER>>
+                             <ENABLE <QUEUE I-FOLIN -1>>
+                             <TELL
+"The dungeon master answers, \"I will follow.\"" CR>)
+                            (T
+                             <TELL
+"The dungeon master's voice replies, \"You must come here first!\"" CR>)>)
+                     (<VERB? STAY WAIT>
+                      <QUEUE I-FOLIN 0>
+                      <TELL
+"The dungeon master answers, \"I will stay.\"" CR>)
+                     (<VERB? WALK>
+                      <COND (<AND <EQUAL? ,PRSO ,P?SOUTH ,P?ENTER>
+                                  <==? ,HERE ,NORTH-CORRIDOR>>
+                             <TELL
+"\"I am not permitted to enter the prison cell.\"" CR>)
+                            (<AND <==? ,PRSO ,P?NORTH>
+                                  <==? ,HERE ,NORTH-CORRIDOR>>
+                             <MOVE ,DUNGEON-MASTER ,PARAPET>
+                             <SETG HERE ,PARAPET>
+                             <TELL
+"\"Very well. I am at the parapet!\"" CR>
+                             <QUEUE I-FOLIN 0>)
+                            (<AND <EQUAL? ,PRSO ,P?NORTH ,P?ENTER>
+                                  <==? ,HERE ,SOUTH-CORRIDOR>>
+                             <TELL
+"\"I am not permitted to enter the prison cell.\"" CR>)
+                            (T
+                             <TELL
+"\"I prefer to stay where I am, thank you.\"" CR>)>)
+                     (<AND <VERB? WALK-TO> <==? ,PRSO ,PARAPET-OBJ>>
+                      <MOVE ,DUNGEON-MASTER ,PARAPET>
+                      <SETG HERE ,PARAPET>
+                      <QUEUE I-FOLIN 0>
+                      <TELL
+"\"Very well!\"" CR>)
+                     (<VERB? TAKE>
+                      <TELL
+"\"I will have no use for that, I am afraid.\"" CR>)
+                     (<AND <VERB? OPEN>
+                           <==? ,PRSO ,DUNGEON-DOOR>
+                           ,IN-DUNGEON>
+                      <TELL
+"The dungeon master appears angered. \"Do not run from your quest: you are
+nearing the end!\"" CR>)
+                     (<VERB? PUSH TURN SPIN FOLLOW STAY OPEN CLOSE WAIT
+                             ATTACK WALK-TO>
+                      <COND (<VERB? STAY FOLLOW WAIT> T)
+                            (T <TELL "\"If you wish,\" he replies." CR>)>
+                      <RFALSE>)
+                     (T <TELL
+"\"Do not be foolish! Consider the end of your quest!\"" CR>)>)
+              (<VERB? EXAMINE>
+               <TELL
+"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." CR>)
+              (<VERB? ATTACK MUNG>
+               <REALLY-DEAD
+"The dungeon master is taken by surprise. He dodges your blow, and
+with a disappointed expression on his face, traces a complicated
+pattern in the air with his staff. You crumble into dust.">)
+              (<VERB? TAKE>
+               <TELL
+"\"I'm willing to accompany you, but not ride in your pocket!\"" CR>)
+              (<AND <VERB? GIVE> <==? ,PRSI ,DUNGEON-MASTER>>
+               <TELL
+"\"I have no need for those things.\"" CR>)>>
+
+<ROUTINE MASTER-F () 
+        <COND (<EQUAL? ,HERE ,PRISON-CELL ,GOOD-CELL>
+               <COND (<HELLO? ,MASTER>
+                      <TELL "He can't hear you." CR>)
+                     (T <TELL "He is not here." CR>)>)
+              (<VERB? TELL>
+               <COND (,IN-DUNGEON
+                      <SETG PRSO ,DUNGEON-MASTER>
+                      <RFALSE>)
+                     (ELSE
+                      <SETG P-CONT <>>
+                      <SETG QUOTE-FLAG <>>
+                      <TELL "The dungeon master isn't here." CR>)>)
+              (<AND <VERB? GIVE SGIVE> <IN? ,DUNGEON-MASTER ,HERE>>
+               <TELL
+"He politely refuses your offer." CR>)
+              (<AND <VERB? EXAMINE>
+                    <EQUAL? ,HERE ,CELL ,NORTH-CORRIDOR>
+                    <IN? ,DUNGEON-MASTER ,PARAPET>>
+               <TELL "The dungeon master is standing on the parapet." CR>)
+              (T <TELL "The dungeon master isn't here." CR>)>>
+
+<GLOBAL DM-SEEN <>>
+
+<ROUTINE BEHIND-DOOR-F ("OPTIONAL" (RARG <>))
+         <COND (<AND <==? .RARG ,M-ENTER> <NOT ,DM-SEEN>>
+               <ENABLE <QUEUE I-FOLIN -1>>
+               <SETG DM-SEEN T>)
+              (<==? .RARG ,M-LOOK>
+               <TELL
+"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 ">
+               <DPR ,DUNGEON-DOOR>)>>
+
+<ROUTINE FRONT-DOOR-F ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-ENTER>
+               <QUEUE I-FOLIN 0>)
+              (<==? .RARG ,M-LOOK>
+               <LOOK-TO <> ,MRD>
+               <TELL
+"The wooden door has a barred panel in it at about head height. The
+door itself is ">
+               <DPR ,DUNGEON-DOOR>)>>
+
+<ROUTINE LOOK-LIKE-DM? ()
+        <AND <IN? ,CLOAK ,WINNER>
+             <IN? ,HOOD ,WINNER>
+             <IN? ,AMULET ,WINNER>
+             <IN? ,STAFF ,WINNER>
+             <IN? ,RING ,WINNER>
+             <IN? ,LORE-BOOK ,WINNER>
+             <IN? ,KEY ,WINNER>>>
+
+<ROUTINE DUNGEON-PANEL-F ()
+        <COND (<VERB? OPEN>
+               <TELL "You can't open the panel. It's set into the door." CR>)
+              (<VERB? LOOK-INSIDE>
+               <TELL "There's not much to be seen." CR>)>>
+
+<ROUTINE DUNGEON-DOOR-F ()
+        <COND (<VERB? OPEN CLOSE>
+               <TELL "The door won't budge." CR>)
+              (<AND <VERB? KNOCK> <EQUAL? ,HERE ,FRONT-DOOR>>
+               <TELL
+"The knock reverberates along the hall. For a time it seems there
+will be no answer. Then you hear someone unlatching the small
+panel. Through the bars of the great door, the wrinkled
+face of an old man appears.">
+               <COND (,INVIS
+                      <TELL " He seems not to notice you
+for a brief moment, then recovers.">)>
+               <COND (<LOOK-LIKE-DM?>
+                      <TELL " He starts to smile broadly and opens the
+massive door 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. You
+displayed 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!\"|" CR>
+                      <GOTO ,BEHIND-DOOR>
+                      <SETG IN-DUNGEON T>)
+                     (T
+                      <TELL " He looks you over with a piercing gaze
+and then speaks gravely. \"I have been waiting a long time for you, ">
+                      <TELL <GET ,DM-REASONS <DMISH>>>
+                      <TELL "
+I will remain here. When you feel you are ready, go to the
+secret door and 'SAY \"FROTZ OZMOO\"'! Go, now!\" He wags his finger
+in warning. \"Do not forget the double
+quotes!\" A moment later, you find yourself in the Button Room." CR>
+                      <GOTO ,MR-ANTE <>>
+                      <RTRUE>)>)>>
+
+<GLOBAL IN-DUNGEON <>>
+
+<GLOBAL DM-REASONS <TABLE
+"but I fear my waiting may be in vain."
+"but you have far to go before you are ready."
+"and you seem to have made slight some progress."
+"and your journey is half complete. Be of good cheer!"
+"and you are nearing the end of your long quest!"
+"and it will not be long before you are ready!"
+"and you are nearly ready for the last test!">>
+
+<ROUTINE DMISH ("AUX" (CNT 0))
+        <COND (<IN? ,AMULET ,WINNER> <SET CNT <+ .CNT 1>>)>
+        <COND (<IN? ,LORE-BOOK ,WINNER> <SET CNT <+ .CNT 1>>)>
+        <COND (<IN? ,HOOD ,WINNER> <SET CNT <+ .CNT 1>>)>
+        <COND (<IN? ,CLOAK ,WINNER> <SET CNT <+ .CNT 1>>)>
+        <COND (<IN? ,RING ,WINNER> <SET CNT <+ .CNT 1>>)>
+        <COND (<IN? ,KEY ,WINNER> <SET CNT <+ .CNT 1>>)>
+        <COND (<IN? ,STAFF ,WINNER> <SET CNT <+ .CNT 1>>)>
+        .CNT>
+       
+<GLOBAL FOLFLAG T>     ;"Following?"
+
+<ROUTINE I-FOLIN ()
+        <COND (<IN? ,DUNGEON-MASTER ,HERE> <RFALSE>)
+              (<AND <EQUAL? ,HERE ,PRISON-CELL ,CELL> ,FOLFLAG>
+               <TELL
+"You notice that the dungeon master doesn't follow you." CR>
+               <SETG FOLFLAG <>>
+               <RTRUE>)
+              (<EQUAL? <LOC ,PLAYER> ,PRISON-CELL ,CELL> <RFALSE>)
+              (<NOT ,FOLFLAG>
+               <SETG FOLFLAG T>
+               <TELL "The dungeon master rejoins you." CR>
+               <MOVE ,DUNGEON-MASTER ,HERE>
+               <RTRUE>)
+              (T
+               <TELL "The dungeon master follows you." CR>
+               <MOVE ,DUNGEON-MASTER ,HERE>
+               <RTRUE>)>>
+
+\\f
+
+;"SUBTITLE
+ 'The end had come, and this was it; he dropped her in the Flaming Pit.'"
+
+<GLOBAL LCELL 1> ;"cell in slot"
+
+<GLOBAL PNUMB 1> ;"cell pointed at"
+
+<GLOBAL CELLOBJS <ITABLE NONE <* 8 2 8>>>
+
+<ROUTINE MOVE-CELL-OBJECTS ("AUX" TOP CNT F X)
+        <SET TOP <* 8 <- ,LCELL 1>>>
+        <SET CNT <+ .TOP 1>>
+        <SET F <FIRST? ,CELL>>
+        <COND (.F
+               <REPEAT ()
+                       <SET X <NEXT? .F>>
+                       <COND (<NOT .F> <RETURN>)
+                             (T
+                              <PUT ,CELLOBJS .CNT .F>
+                              <REMOVE .F>
+                              <SET CNT <+ .CNT 1>>)>
+                       <COND (<NOT .X> <RETURN>)
+                             (T <SET F .X>)>>)>
+        <PUT ,CELLOBJS .TOP <- <- .CNT .TOP> 1>>
+        <SET TOP <* 8 <- ,PNUMB 1>>>
+        <SET CNT <GET ,CELLOBJS .TOP>>
+        <REPEAT ()
+                <COND (<0? .CNT> <RETURN>)
+                      (T
+                       <SET TOP <+ .TOP 1>>
+                       <MOVE <GET ,CELLOBJS .TOP> ,CELL>
+                       <SET CNT <- .CNT 1>>)>>>
+
+<ROUTINE CELL-MOVE ("AUX" F X)
+        <FCLEAR ,CELL-DOOR ,OPENBIT>
+        <FCLEAR ,BRONZE-DOOR ,OPENBIT>
+        <COND (<NOT <==? ,PNUMB ,LCELL>>
+               <COND (<==? ,PNUMB 4> <FCLEAR ,BRONZE-DOOR ,INVISIBLE>)
+                     (ELSE <FSET ,BRONZE-DOOR ,INVISIBLE>)>
+               <COND (<IN? ,PLAYER ,CELL>
+                      <SETG WINNER ,PLAYER>
+                      <FCLEAR ,GOOD-CELL ,TOUCHBIT>
+                      <FCLEAR ,PRISON-CELL ,TOUCHBIT>
+                      <GOTO <COND (<==? ,LCELL 4>
+                                   <FCLEAR ,BRONZE-DOOR ,INVISIBLE>
+                                   ,GOOD-CELL)
+                                  (ELSE ,PRISON-CELL)>>
+                      <SET F <FIRST? ,CELL>>
+                      <COND (.F
+                             <REPEAT ()
+                                     <SET X <NEXT? .F>>
+                                     <COND (<NOT .F> <RETURN>)
+                                           (T <MOVE .F ,HERE>)>
+                                     <COND (<NOT .X> <RETURN>)
+                                           (T <SET F .X>)>>)>)
+                     (T <MOVE-CELL-OBJECTS>)>
+               <SETG LCELL ,PNUMB>)>>
+
+<ROUTINE PARAPET-F (RARG)
+        <COND (<==? .RARG ,M-LOOK>
+               <TELL
+"You are standing behind a stone retaining wall which rims a parapet
+overlooking a fiery pit. It is difficult to see through the
+smoke and flame which fills the pit, but it seems to be 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 surrounding a large button. On the face of
+the dial are numbers 1 through 8. The indicator points to the number "
+N ,PNUMB "." CR>
+               <TELL
+"To the south, across a narrow corridor, is a prison cell." CR>)>>
+
+<ROUTINE DIAL ("AUX" N)
+        <COND (<VERB? EXAMINE>
+               <TELL "The dial points to " N ,PNUMB "." CR>)
+              (<VERB? TURN>
+               <COND (<==? ,PRSI ,INTNUM>
+                      <COND (<OR <0? ,P-NUMBER>
+                                 <G? ,P-NUMBER 8>>
+                             <TELL "There is no such setting." CR>
+                             <RTRUE>)>
+                      <SETG PNUMB ,P-NUMBER>
+                      <COND (<==? ,WINNER ,PLAYER>
+                             <TELL
+"The dial now points to " N ,PNUMB "." CR>)>
+                      <RTRUE>)
+                     (<NOT ,PRSI>
+                      <TELL "You must specify what to set the dial to." CR>)
+                     (T <TELL "The dial face only contains numbers." CR>)>)
+              (<VERB? SPIN>
+               <SETG PNUMB <RANDOM 8>>
+               <COND (<==? ,WINNER ,PLAYER>
+                      <TELL
+"The dial spins and comes to a stop pointing at " N ,PNUMB ".">)>
+               <RTRUE>)>>
+
+<ROUTINE DIALBUTTON ("AUX" C)
+        <SET C <FSET? ,CELL-DOOR ,OPENBIT>>
+        <FCLEAR ,CELL ,TOUCHBIT>
+        <COND (<VERB? PUSH>
+               <COND (<==? ,WINNER ,PLAYER>
+                      <TELL
+"The button depresses with a slight click, and pops back." CR>)>
+               <CELL-MOVE>
+               <COND (.C <TELL
+"You notice that the cell door is now closed." CR>)>
+               <RTRUE>)>>
+
+<ROUTINE CELL-ROOM (RARG)
+         <COND (<==? .RARG ,M-LOOK>
+               <TELL
+"You are in a featureless prison cell. You can see ">
+               <COND (<FSET? ,CELL-DOOR ,OPENBIT>
+                      <TELL "an east-west
+corridor outside the cell door. Your view also takes in the parapet and
+a large, fiery pit." CR>)
+                     (T
+                      <TELL "through the small window
+in the closed door the parapet, and, behind that,
+smoke and flames rising from a fiery pit." CR>)>
+               <COND (<IN? ,DUNGEON-MASTER ,PARAPET>
+                      <TELL
+"The dungeon master is at the parapet, leaning on his
+staff. His keen gaze is fixed on you and he looks tense,
+as if waiting for something to happen." CR>)> 
+               <COND (<==? ,LCELL 4>
+                      <TELL
+"Behind you, to the south, is a bronze door which is ">
+                      <DPR ,BRONZE-DOOR>)>
+               <RTRUE>)>>
+               
+<ROUTINE NCELL-ROOM (RARG)
+         <COND (<==? .RARG ,M-LOOK>
+               <TELL
+"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 ">
+               <DPR ,BRONZE-DOOR>)>>
+
+<ROUTINE DPR (OBJ)
+        <COND (<FSET? .OBJ ,OPENBIT> <TELL "open." CR>)
+              (T <TELL "closed." CR>)>>
+
+<ROUTINE NORTH-CORRIDOR-F (RARG)
+        <COND (<==? .RARG ,M-LOOK>
+               <TELL
+"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
+barred window. The door is ">
+               <DPR ,CELL-DOOR>)>>
+
+<ROUTINE SOUTH-CORRIDOR-F (RARG)
+        <COND (<==? .RARG ,M-LOOK>
+               <TELL
+"You are in an east-west corridor which turns north at its eastern
+and western ends. The walls are made of the finest marble. Another
+hall leads south at the center of the corridor." CR>
+              <COND (<==? ,LCELL 4>
+                     <TELL
+"In the center of the north wall is a bronze door which is ">
+                     <DPR ,BRONZE-DOOR>)>
+              <RTRUE>)>>
+
+<GLOBAL BRONZE-DOOR-LOCKED T>
+
+<ROUTINE BRONZE-DOOR-F ()
+        <COND (<AND <VERB? OPEN>
+                    <NOT <FSET? ,BRONZE-DOOR ,OPENBIT>>
+                    <==? ,HERE ,GOOD-CELL>
+                    <NOT ,BRONZE-DOOR-LOCKED>>
+               <TELL
+"On the other side of the bronze door is a narrow passage which opens out
+into a larger area." CR>
+               <FSET ,BRONZE-DOOR ,OPENBIT>)
+              (<AND <VERB? OPEN> ,BRONZE-DOOR-LOCKED>
+               <TELL
+"The bronze door is locked." CR>)>>
+
+<ROUTINE LOCKED-DOOR-F ()
+        <COND (<VERB? OPEN UNLOCK>
+               <TELL "The door is securely fastened." CR>)>>
+
+\\f
+
+"========== The Ultimate Winnage =========="
+
+<ROUTINE NIRVANA-F (RARG)
+        <COND (<==? .RARG ,M-END>
+               <TELL
+"As you 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.|
+|
+">
+              <FINISH>)>>
+
+<ROUTINE BRONZE-DOOR-EXIT ()
+        <COND (<FSET? ,BRONZE-DOOR ,INVISIBLE>
+               <TELL "You can't go that way." CR>
+               <RFALSE>)
+              (<FSET? ,BRONZE-DOOR ,OPENBIT>
+               ,CELL)
+              (T
+               <TELL "The bronze door is closed." CR>
+               <RFALSE>)>>
+
+;<ROUTINE MASTER-F ()
+        <PERFORM ,PRSA ,DUNGEON-MASTER>
+        <RTRUE>>
+
+<GLOBAL OLD-MAN-GONE <>>
+<GLOBAL OLD-MAN-FED <>>
+
+<GLOBAL SECRET-DOOR-DESC
+"Beyond the secret door are dark, forbidding stairs leading down to
+a passage below. Flickering torchlight illuminates the passage.">
+
+<ROUTINE SECRET-DOOR-F ()
+        <COND (<AND <VERB? OPEN> <NOT <FSET? ,SECRET-DOOR ,OPENBIT>>>
+               <TELL "The massive stone door opens noiselessly. "
+                     ,SECRET-DOOR-DESC CR>
+               <FSET ,SECRET-DOOR ,OPENBIT>)>>
+
+<ROUTINE MSTAIRS-F (RARG)
+        <COND (<AND <==? .RARG ,M-ENTER>
+                    <PROB 30>
+                    <NOT ,OLD-MAN-FED>
+                    <NOT ,OLD-MAN-GONE>>
+               <MOVE ,OLD-MAN ,HERE>)
+              (<==? .RARG ,M-LOOK>
+               <TELL
+"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." CR>
+               <COND (<FSET? ,SECRET-DOOR ,OPENBIT>
+                      <TELL ,SECRET-DOOR-DESC CR>)
+                     (<NOT <FSET? ,SECRET-DOOR ,INVISIBLE>>
+                      <TELL
+"The outline of a door is barely visible among the runes." CR>)>)>>
+
+<ROUTINE HELLO? (WHO)
+        <COND (<OR <==? ,WINNER .WHO>
+                   <VERB? TELL ANSWER REPLY SAY HELLO INCANT>>
+               <COND (<VERB? TELL ANSWER SAY INCANT REPLY>
+                      <SETG P-CONT <>>
+                      <SETG QUOTE-FLAG <>>)>
+               <RTRUE>)>>
+
+<ROUTINE OLD-MAN-F ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-OBJDESC>
+               <COND (,OLD-MAN-AWAKE
+                      <TELL
+"There is an old man huddled in the corner, eyeing you cautiously.
+He looks weak and tired." CR>)
+                     (T
+                      <TELL
+"An old and wizened man is huddled, asleep, in the corner. He is snoring
+loudly, and looks quite weak and frail." CR>)>)
+              (<AND <VERB? GIVE> <==? ,PRSI ,OLD-MAN>>
+               <COND (,OLD-MAN-AWAKE
+                      <COND (<==? ,PRSO ,WAYBREAD>
+                             <REMOVE ,WAYBREAD>
+                             <TELL
+"He looks up at you and takes the waybread. 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, the old
+man is gone!" CR>
+                             <FCLEAR ,SECRET-DOOR ,INVISIBLE>
+                             <SETG OLD-MAN-GONE T>
+                             <REMOVE ,OLD-MAN>)
+                            (<IN? ,WAYBREAD ,WINNER>
+                             <TELL
+"He refuses your offer but motions with his arm to the waybread in your
+hand." CR>)
+                            (T
+                             <TELL
+"The old man refuses the " D ,PRSO " with a wave of his hand." CR>)>)
+                     (T <TELL "He is asleep!" CR>)>)
+              (<VERB? EXAMINE>
+               <COND (,OLD-MAN-AWAKE
+                      <TELL
+"The old man is barely awake and appears to nod off every few moments.
+He has bright eyes, which appear to see right through your body." CR>)
+                     (T
+                      <TELL
+"The man is very, very old and wizened. He has a long, stringy
+beard and is snoring quite loudly." CR>)>)
+              (<VERB? LISTEN>
+               <COND (,OLD-MAN-AWAKE <TELL "He isn't talking." CR>)
+                     (T
+                      <TELL
+"He is snoring like a buzz saw." CR>)>)
+              (<HELLO? ,OLD-MAN>
+               <COND (,OLD-MAN-AWAKE
+                      <TELL
+"He nods at you without seeming to have understood." CR>)
+                     (T
+                      <TELL
+"He is sleeping soundly and does not respond." CR>)>)
+              (<VERB? SHAKE ALARM>
+               <TELL
+"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." CR>
+               <SETG OLD-MAN-AWAKE T>
+               <ENABLE <QUEUE I-OLD-MAN-SLEEPS 3>>)
+              (<VERB? ATTACK MUNG>
+               <TELL
+"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." CR>
+               <SETG OLD-MAN-GONE T>
+               <REMOVE ,OLD-MAN>)>>
+
+<GLOBAL OLD-MAN-AWAKE <>>
+
+<ROUTINE I-OLD-MAN-SLEEPS ()
+        <SETG OLD-MAN-AWAKE <>>
+        <COND (<IN? ,OLD-MAN ,HERE>
+               <TELL "You notice that the old man has fallen asleep." CR>)>>
+
+<ROUTINE RUNES-F ()
+        <COND (<VERB? EXAMINE READ>
+               <TELL
+"The runes are in an ancient language. Some pictures among the runes depict
+flames, stone statues, and an old man." CR>)>>
+
+<ROUTINE T-BAR-F ()
+        <COND (<VERB? TURN>
+               <TELL
+"You don't have enough leverage to turn the T-bar. You might be able
+to turn the whole structure, however." CR>)>>
+
+<ROUTINE FLAMING-PIT-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL
+"The flaming pit is a seemingly bottomless abyss filled with smoke and
+flame." CR>)
+              (<AND <VERB? PUT> <==? ,PRSI ,FLAMING-PIT>>
+               <COND (<EQUAL? ,HERE ,PARAPET ,NORTH-CORRIDOR>
+                      <COND (<==? ,PRSO ,ME>
+                             <TELL
+"It would be a pity to end your life so near the end of your quest!" CR>)
+                            (T
+                             <TELL
+"You cast the " D ,PRSO " into the pit, where it is lost forever." CR>
+                             <REMOVE ,PRSO>)>)
+                     (T <TELL "You're not close enough." CR>)>)>>
+
+<ROUTINE PARAPET-OBJ-F ()
+        <COND (<VERB? EXAMINE>
+               <COND (<EQUAL? ,HERE ,CELL ,NORTH-CORRIDOR>
+                      <TELL
+"You can see the parapet and sundial from here.">
+                      <COND (<IN? ,DUNGEON-MASTER ,PARAPET>
+                             <TELL " The dungeon master is there
+also, leaning on his staff.">)>
+                      <CRLF>)
+                     (T <V-LOOK>)>)>>
+
+<ROUTINE ROSE-F ()
+         <COND (<VERB? TURN MOVE>
+                <TELL
+"The compass rose is made of stone and is imbedded in the ground.
+You could not possibly turn it or move it." CR>)>>
+
+<ROUTINE CELL-DOOR-F ()
+        <COND (<AND <VERB? PUT> <==? ,PRSI ,CELL-DOOR>>
+               <TELL "You will have to enter the cell first." CR>)
+              (<VERB? THROUGH>
+               <COND (<==? ,HERE ,CELL>
+                      <TELL "Look around." CR>)
+                     (T
+                      <DO-WALK ,P?SOUTH>
+                      <RTRUE>)>)>>
+
+<ROUTINE LORE-BOOK-F ()
+        <COND (<AND <VERB? BURN> <NOT <IN? ,LORE-BOOK ,WINNER>>>
+               <TELL
+"The book is consumed in a dazzling display of color." CR>
+               <REMOVE ,PRSO>
+               <RTRUE>)
+              (<AND ,IN-DUNGEON <VERB? OPEN EXAMINE READ>>
+               <TELL
+"The book seems to will itself open to a specific page. It shows 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 room bathed in golden light.
+A legend beneath the picture says \"The Dungeon and Treasury of Zork.\"" CR>)
+              (<VERB? OPEN>
+               <TELL
+"The book can be perused but not left open." CR>)>>
+
+<ROUTINE CP-HOLE-F ()
+        <COND (<VERB? THROUGH>
+               <DO-WALK ,P?DOWN>
+               <RTRUE>)>>
+
+<ROUTINE TORCH-PSEUDO ()
+        <TELL "The torches are out of reach." CR>>
+
+<ROUTINE WATER-FCN ("AUX" AV PI?)
+        #DECL ((AV) <OR OBJECT FALSE> (PI?) <OR ATOM FALSE>)
+        <COND (<VERB? SGIVE> <RFALSE>)
+              (<VERB? THROUGH>
+               <PERFORM ,V?SWIM ,PRSO>
+               <RTRUE>)
+              (<VERB? FILL>    ;"fill bottle with water =>"
+               <SETG PRSA ,V?PUT>
+               <SETG PRSI ,PRSO>
+               <SETG PRSO ,GLOBAL-WATER>
+               <SET PI? <>>)
+              (<EQUAL? ,PRSO ,GLOBAL-WATER>
+               <SET PI? <>>)
+              (,PRSI
+               <SET PI? T>)>
+        <COND (.PI? <SETG PRSI ,GLOBAL-WATER>)
+              (T <SETG PRSO ,GLOBAL-WATER>)>
+        <COND (<AND <VERB? TAKE PUT> <NOT .PI?>>
+               <TELL "The water slips through your fingers." CR>)
+              (.PI? <TELL "You can't do that." CR>)
+              (<VERB? DROP GIVE THROW>
+               <TELL "You don't have any water." CR>)>>
+
+<ROUTINE RANDOM-WALL ()
+        <COND (<VERB? PUSH>
+               <COND (<==? ,HERE ,IN-MIRROR>
+                      <TELL
+"You should specify which panel you want to push." CR>)
+                     (T <TELL
+"You can't budge it; at least from here." CR>)>)>>
+
+^/L
+
+;"special-cased routines"
+
+;"put GO here, eventually"
+
+<ROUTINE V-DIAGNOSE ()
+        <TELL <GET ,DIAG ,P-STRENGTH> CR>>
+
+<GLOBAL DIAG <TABLE
+"You are dead."
+"You are very seriously wounded. One more wound would very likely do you in."
+"You are hurt quite badly. One major wound would probably kill you."
+"You have a few wounds, which do not seriously impair your strength."
+"You are wounded lightly. You have a good deal of strength in reserve."
+"You are in perfect health.">>
+
+<ROUTINE JIGS-UP (DESC "OPTIONAL" (PLAYER? <>))
+        #DECL ((DESC) STRING (PLAYER?) <OR ATOM FALSE>)
+        <SETG SWORD-STATE 0>
+        <SETG P-STRENGTH 5>
+        <SETG S-STRENGTH 5>
+        <TELL .DESC CR>
+        <COND (<NOT <==? ,YEAR ,YEAR-PRESENT>> <QUIT>)>
+        <COND (<NOT <==? ,ADVENTURER ,WINNER>>
+               <TELL "
+|    ****  The " D ,WINNER " has died  ****
+|
+|">
+               <REMOVE ,WINNER>
+               <SETG WINNER ,ADVENTURER>
+               <SETG HERE <LOC ,WINNER>>
+               <RFATAL>)>
+        <TELL "|
+    ****  You have died  ****|
+|
+">
+        <COND (<G? <SETG DEATHS <+ ,DEATHS 1>> 3>
+               <TELL
+"You feel yourself disembodied in a deep blackness. A voice from the void
+speaks:  \"I have waited a long age for you, my friend, but perhaps it has been
+another that I have been seeking. Good night, oh worthy adventurer!\" It is
+the last you hear." CR>
+               <QUIT>)
+              (T
+               <TELL
+"You find yourself deep within the earth in a barren prison cell.
+Outside the iron-barred window, you can see a great, fiery pit. Flames
+leap up and very nearly sear your flesh. After a while, footfalls can
+be heard in the distance, then closer and closer.... The door swings
+open, and in walks an old man.|
+|
+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 massive prison cell, hangs from his belt.|
+|
+He raises the staff toward you and you hear
+him speak, as if in a dream: \"I await you, though your journey be long
+and full of peril. Go then, and let me not wait long!\" You feel some
+great power well up inside you and you fall to the floor. The next
+moment, you are awakening, as if from a deep slumber." CR>)>
+        <MOVE ,CURRENT-LAMP ,ZORK2-STAIR>
+        <COND (<AND <IN? ,KEY ,WINNER>
+                    <OR <EQUAL? ,HERE ,DARK-1 ,DARK-2 ,KEY-ROOM>
+                        <EQUAL? ,HERE ,AQ-1 ,AQ-2>>>
+               <MOVE ,KEY ,KEY-ROOM>)>
+        <CRLF>
+        <GOTO ,ZORK2-STAIR>
+        <SETG P-CONT <>>
+        <RANDOMIZE-OBJECTS>
+        <KILL-INTERRUPTS>
+        <RFATAL>>
+
+<ROUTINE RANDOMIZE-OBJECTS ("AUX" (R <>) F N L)
+        <SET N <FIRST? ,WINNER>>
+        <REPEAT ()
+                <SET F .N>
+                <COND (<NOT .F> <RETURN>)>
+                <SET N <NEXT? .F>>
+                <MOVE .F <RANDOM-ELEMENT ,DEAD-OBJ-LOCS>>>>
+
+<GLOBAL DEAD-OBJ-LOCS
+       <LTABLE JUNCTION CLEARING DAMP-PASSAGE CREEPY-CRAWL TIGHT-SQUEEZE
+               FOGGY-ROOM DEAD-END>>
+
+<ROUTINE KILL-INTERRUPTS ()
+        <DISABLE <INT I-MAN-LEAVES>>
+        <DISABLE <INT I-MAN-RETURNS>>
+        <DISABLE <INT I-VIEW-SNAP>>
+        <DISABLE <INT I-FOLIN>>
+        <RTRUE>>
+
+<GLOBAL SCORE-MAX 7>
+
+<ROUTINE V-SCORE ("OPTIONAL" (ASK? T))
+        #DECL ((ASK?) <OR ATOM FALSE>)
+        <TELL "Your potential is " N ,SCORE>
+        <TELL " of a possible " N ,SCORE-MAX ", in ">
+        <TELL N ,MOVES>
+        <COND (<1? ,MOVES> <TELL " move.">) (ELSE <TELL " moves.">)>
+        <CRLF>
+        ,SCORE>
+
+\\f
+
+"old TM.ZIL"
+
+"Incredibly bizarre Time Machine Problem"
+
+<OBJECT VOICES
+       (IN GLOBAL-OBJECTS)
+       (DESC "voices")
+       (SYNONYM VOICE VOICES GUARDS OFFICI)
+       (ADJECTIVE ARMED)
+       (FLAGS NDESCBIT)
+       (ACTION VOICES-F)>
+
+<ROOM TIGHT-SQUEEZE
+      (IN ROOMS)
+      (DESC "Tight Squeeze")
+      (LDESC
+"This is a very low and narrow passage leading east to west.")
+      (WEST TO CREEPY-CRAWL)
+      (EAST TO ROCKY-ROOM)
+      (FLAGS RLANDBIT)>
+
+<ROOM ROCKY-ROOM
+      (IN ROOMS)
+      (DESC "Crystal Grotto")
+      (LDESC
+"This is a chamber of breathtaking beauty. Mighty stalagmites form
+crystalline-encrusted rock formations. Phosphorescent mosses, fed by
+a trickle of water from above, make the crystals glow and sparkle with
+every color of the rainbow. There is an opening to the west, and a
+man-made passage heads south.")
+      (SOUTH TO WIDE-HALL)
+      (WEST TO TIGHT-SQUEEZE)
+      (GLOBAL MOSS CRYSTALS)
+      (FLAGS ONBIT RLANDBIT)>
+
+<OBJECT CRYSTALS
+       (IN ROCKY-ROOM)
+       (DESC "rock structure")
+       (SYNONYM CRYSTAL STALAG)
+       (FLAGS NDESCBIT)>
+
+<ROOM WIDE-HALL
+      (IN ROOMS)
+      (DESC "Royal Hall")
+      (LDESC
+"This is the north end of a large hall with a vaulted ceiling. A long, tiled
+hallway leads north through a tall arch. Although the purpose of
+this room is unclear, there is a large rendering of the Royal Seal of Lord
+Dimwit Flathead carved on the wall.")
+      (NORTH TO ROCKY-ROOM)
+      (SOUTH TO MUSEUM-ANTE)
+      (FLAGS RLANDBIT)>     
+
+<OBJECT ROYAL-SEAL
+       (IN WIDE-HALL)
+       (DESC "Royal Seal of Dimwit Flathead")
+       (SYNONYM SEAL CARVIN RENDER)
+       (ADJECTIVE LARGE ROYAL)
+       (FLAGS NDESCBIT READBIT)
+       (TEXT
+"The Seal is vintage Flathead, with signs of excess nearly everywhere.
+It shows a curiously flat-headed figure wearing a gaudy crown,
+surrounded by the Crown Jewels of the Empire.")> 
+
+<ROOM MUSEUM-ANTE
+      (IN ROOMS)
+      (DESC "Great Door")
+      (NORTH TO WIDE-HALL)
+      (EAST TO MUSEUM-ENTRANCE
+                   IF CLEFT-FLAG ELSE "The great iron door is rusted shut.")
+      (FLAGS RLANDBIT)
+      (ACTION MUSEUM-ANTE-F)
+      (GLOBAL IRON-DOOR CLEFT)>
+
+<ROOM MUSEUM-ENTRANCE
+      (IN ROOMS)
+      (DESC "Museum Entrance")
+      (EAST TO JEWEL-ROOM IF JEWEL-DOOR IS OPEN)
+      (WEST TO MUSEUM-ANTE IF CLEFT-FLAG ELSE "The iron door is rusted shut.")
+      (SOUTH TO CP-ANTE)
+      (DOWN TO CP-ANTE)
+      (NORTH TO TECH-MUSEUM IF WOODEN-DOOR IS OPEN)
+      (FLAGS ONBIT RLANDBIT)
+      (ACTION MUSEUM-ENTRANCE-F)
+      (GLOBAL IRON-DOOR JEWEL-DOOR WOODEN-DOOR STAIRS CLEFT)>
+
+<OBJECT CLEFT
+       (IN LOCAL-GLOBALS)
+       (DESC "cleft")
+       (SYNONYM CLEFT)
+       (ACTION CLEFT-F)
+       (FLAGS DOORBIT OPENBIT INVISIBLE)>
+
+<ROOM JEWEL-ROOM
+      (IN ROOMS)
+      (DESC "Jewel Room")
+      (WEST TO MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
+      (OUT TO MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
+      (FLAGS ONBIT RLANDBIT)
+      (ACTION JEWEL-ROOM-F)
+      (GLOBAL JEWEL-DOOR)>
+
+<ROOM TECH-MUSEUM
+      (IN ROOMS)
+      (DESC "Technology Museum")
+      (SOUTH TO MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
+      (OUT TO MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION TECH-MUSEUM-F)
+      (GLOBAL WOODEN-DOOR)>
+
+<ROOM MID-CP-ANTE
+      (IN ROOMS)
+      (DESC "Royal Puzzle Entrance")
+      (WEST TO MID-CP-OUT)
+      (NORTH TO MID-MUSEUM-ENTRANCE)
+      (UP TO MID-MUSEUM-ENTRANCE)
+      (DOWN PER CPENTER)
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION CPANT-ROOM)
+      (GLOBAL STAIRS)>
+
+<ROOM MID-CP-OUT
+      (IN ROOMS)
+      (DESC "Side Room")
+      (NORTH TO MID-CP-ANTE)
+      (EAST "The steel door is closed.")
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION CPOUT-ROOM)
+      (GLOBAL CPDOOR STAIRS)>
+
+<ROOM MID-MUSEUM-ENTRANCE
+      (IN ROOMS)
+      (DESC "Museum Entrance")
+      (EAST TO MID-JEWEL-ROOM IF JEWEL-DOOR IS OPEN)
+      (WEST "The iron door is rusted shut.")
+      (SOUTH TO MID-CP-ANTE)
+      (DOWN TO MID-CP-ANTE)
+      (NORTH TO MID-TECH-MUSEUM IF WOODEN-DOOR IS OPEN)
+      (FLAGS ONBIT RLANDBIT)
+      (ACTION MUSEUM-ENTRANCE-F)
+      (GLOBAL IRON-DOOR JEWEL-DOOR WOODEN-DOOR STAIRS)>
+
+<ROOM MID-JEWEL-ROOM
+      (IN ROOMS)
+      (DESC "Jewel Room")
+      (WEST TO MID-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
+      (OUT TO MID-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
+      (FLAGS ONBIT RLANDBIT)
+      (ACTION JEWEL-ROOM-F)
+      (GLOBAL JEWEL-DOOR)>
+
+<ROOM MID-TECH-MUSEUM
+      (IN ROOMS)
+      (DESC "Technology Museum")
+      (SOUTH TO MID-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
+      (OUT TO MID-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
+      (FLAGS RLANDBIT ONBIT)
+      (ACTION TECH-MUSEUM-F)
+      (GLOBAL WOODEN-DOOR)>
+
+<ROOM OLD-TECH-MUSEUM
+      (IN ROOMS)
+      (DESC "Technology Museum")
+      (FLAGS ONBIT RLANDBIT)
+      (ACTION OLD-TECH-MUSEUM-F)
+      (SOUTH TO OLD-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
+      (OUT TO OLD-MUSEUM-ENTRANCE IF WOODEN-DOOR IS OPEN)
+      (GLOBAL WOODEN-DOOR ROBOT)>
+
+<ROOM OLD-JEWEL-ROOM
+      (IN ROOMS)
+      (DESC "Jewel Room")
+      (FLAGS ONBIT RLANDBIT)
+      (ACTION OLD-TECH-MUSEUM-F)
+      (WEST TO OLD-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
+      (OUT TO OLD-MUSEUM-ENTRANCE IF JEWEL-DOOR IS OPEN)
+      (GLOBAL JEWEL-DOOR ROBOT)>
+
+<ROOM OLD-MUSEUM-ENTRANCE
+      (IN ROOMS)
+      (DESC "Museum Entrance")
+      (FLAGS ONBIT RLANDBIT)
+      (ACTION OLD-TECH-MUSEUM-F)
+      (EAST TO OLD-JEWEL-ROOM IF JEWEL-DOOR IS OPEN)
+      (WEST "The guards locked the iron door behind them.")
+      (NORTH TO OLD-TECH-MUSEUM IF WOODEN-DOOR IS OPEN)
+      (SOUTH "The stairs end blindly to the south.")
+      (GLOBAL WOODEN-DOOR JEWEL-DOOR IRON-DOOR ROBOT)>
+     
+<OBJECT TIME-MACHINE
+       (IN TECH-MUSEUM)
+       (DESC "gold machine")
+       (SYNONYM MACHINE TEMPORIZER)
+       (ADJECTIVE TIME GOLD GOLDEN)
+       (FLAGS VEHBIT OPENBIT CONTBIT)
+       (CAPACITY 100)
+       (DESCFCN TIME-MACHINE-F)
+       (ACTION TIME-MACHINE-F)>
+
+<OBJECT PRESSURIZER
+       (IN TECH-MUSEUM)
+       (DESC "grey machine")
+       (SYNONYM MACHINE DRYER PRESSURIZER)
+       (ADJECTIVE GRAY GREY WASHING)
+       (ACTION MUSEUM-PIECES)
+       (DESCFCN MUSEUM-PIECES)>
+
+<OBJECT SPINNER
+       (IN TECH-MUSEUM)
+       (DESC "black machine")
+       (SYNONYM MACHINE PIPES WIRES MOTORS)
+       (ADJECTIVE BLACK)
+       (DESCFCN MUSEUM-PIECES)
+       (ACTION MUSEUM-PIECES)>
+
+<OBJECT TM-BUTTON
+       (IN TIME-MACHINE)
+       (DESC "button")
+       (SYNONYM BUTTON)
+       (FLAGS NDESCBIT)
+       (ACTION TM-BUTTON-F)>
+
+<OBJECT TM-HOLLOW
+       (IN TIME-MACHINE)
+       (DESC "seat")
+       (SYNONYM AREA)
+       (ADJECTIVE SMALL HOLLOW)
+       (FLAGS NDESCBIT OPENBIT CONTBIT)
+       (CAPACITY 20)
+       (ACTION TM-HOLLOW-F)>
+
+<ROUTINE TM-HOLLOW-F ()
+        <COND (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,TM-HOLLOW>>
+               <PERFORM ,V?PUT-UNDER ,PRSO ,TM-SEAT>
+               <RTRUE>)
+              (<VERB? LOOK-INSIDE>
+               <PERFORM ,V?LOOK-UNDER ,TM-SEAT>
+               <RTRUE>)
+              (<EQUAL? ,PRSO ,TM-HOLLOW>
+               <PERFORM ,PRSA ,TM-SEAT ,PRSI>
+               <RTRUE>)
+              (<EQUAL? ,PRSI ,TM-HOLLOW>
+               <PERFORM ,PRSA ,PRSO ,TM-SEAT>
+               <RTRUE>)>>
+
+<OBJECT TM-SEAT
+       (IN TIME-MACHINE)
+       (DESC "seat")
+       (SYNONYM SEAT CHAIR)
+       (FLAGS NDESCBIT OPENBIT CONTBIT SURFACEBIT)
+       (CAPACITY 20)
+       (ACTION TM-SEAT-F)>
+
+<OBJECT TM-DIAL
+       (IN TIME-MACHINE)
+       (DESC "dial")
+       (SYNONYM DIAL CONSOLE DISPLAY)
+       (FLAGS NDESCBIT TURNBIT)
+       (ACTION TM-DIAL-F)>
+
+<OBJECT IRON-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "iron door")
+       (SYNONYM DOOR)
+       (ADJECTIVE IRON)
+       (FLAGS DOORBIT CONTBIT)
+       (ACTION IRON-DOOR-F)>
+
+<OBJECT JEWEL-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "stone door")
+       (SYNONYM DOOR)
+       (ADJECTIVE STONE EAST)
+       (ACTION JEWEL-DOOR-F)
+       (FLAGS DOORBIT CONTBIT)>
+
+<OBJECT WOODEN-DOOR
+       (IN LOCAL-GLOBALS)
+       (DESC "wooden door")
+       (SYNONYM DOOR)
+       (ADJECTIVE WOODEN WOOD NORTH)
+       (FLAGS DOORBIT CONTBIT OPENBIT)
+       (ACTION WOODEN-DOOR-F)>
+
+<OBJECT SCEPTRE
+       (IN PEDESTAL)
+       (DESC "sceptre")
+       (SYNONYM SCEPTRE JEWELS)
+       (ADJECTIVE CROWN)
+       (FLAGS TAKEBIT NDESCBIT TRYTAKEBIT)
+       (SIZE 30)
+       (ACTION CROWN-JEWELS-F)>
+
+<OBJECT JEWELLED-KNIFE
+       (IN PEDESTAL)
+       (DESC "jewelled knife")
+       (SYNONYM KNIFE JEWELS)
+       (ADJECTIVE JEWELLED CROWN)
+       (FLAGS TAKEBIT NDESCBIT TRYTAKEBIT)
+       (SIZE 20)
+       (ACTION CROWN-JEWELS-F)>
+
+<OBJECT RING
+       (IN PEDESTAL)
+       (DESC "golden ring")
+       (SYNONYM RING JEWELS)
+       (ADJECTIVE GOLDEN CROWN)
+       (FLAGS TAKEBIT NDESCBIT TRYTAKEBIT WEARBIT)
+       (SIZE 5)
+       (ACTION CROWN-JEWELS-F)>
+
+<OBJECT PEDESTAL
+       (IN JEWEL-ROOM)
+       (DESC "pedestal")
+       (SYNONYM PEDESTAL)
+       (FLAGS NDESCBIT OPENBIT CONTBIT SURFACEBIT)
+       (CAPACITY 50)
+       (ACTION PEDESTAL-F)>
+
+<OBJECT CAGE
+       (IN JEWEL-ROOM)
+       (DESC "steel cage")
+       (SYNONYM CAGE)
+       (ADJECTIVE STEEL)
+       (FLAGS NDESCBIT CONTBIT OPENBIT SURFACEBIT)
+       (CAPACITY 5)
+       (ACTION CAGE-F)>
+
+<OBJECT TECH-PLAQUE
+       (IN TECH-MUSEUM)
+       (DESC "plaque")
+       (SYNONYM PLAQUE TEXT)
+       (FLAGS NDESCBIT READBIT)
+       (ACTION TECH-PLAQUE-F)>
+
+<OBJECT PLAQUE
+       (IN CAGE)
+       (DESC "bronze plaque")
+       (SYNONYM PLAQUE TEXT)
+       (ADJECTIVE BRONZE)
+       (FLAGS NDESCBIT READBIT)
+       (ACTION PLAQUE-F)>
+
+;"The present year using the GUE calendar."
+
+<GLOBAL MACHINE-DAMAGED <>>
+
+<GLOBAL YEAR 948>
+
+<CONSTANT YEAR-BUILT 776>
+
+<CONSTANT YEAR-CAGED 777>
+
+<GLOBAL YEAR-CLOSED 883>
+
+<CONSTANT REAL-YEAR-CLOSED 883>
+
+<CONSTANT YEAR-PRESENT 948>
+
+<ROUTINE IRON-DOOR-F ()
+        <COND (<VERB? OPEN UNLOCK THROUGH>
+               <COND (<L? ,YEAR ,YEAR-PRESENT>
+                      <TELL
+"The iron door is locked from the outside." CR>)
+                     (T
+                      <TELL
+"The iron door is rusted shut and cannot be opened." CR>)>)>>
+
+<GLOBAL CLEFT-FLAG <>>
+
+<ROUTINE I-CLEFT ()
+        <COND (<OR <EQUAL? ,HERE ,ZORK-IV ,ROOM-8 ,TIMBER-ROOM>
+                   <EQUAL? ,HERE ,LOWER-SHAFT ,LADDER-BOTTOM ,LADDER-TOP>>
+               <TELL
+"You feel a mild tremor from within the earth which passes quickly." CR>)
+              (T
+               <TELL
+"There is a great tremor from within the earth. The entire dungeon shakes
+violently and loose debris falls from above you." CR>)>
+        <COND (<==? ,HERE ,MUSEUM-ANTE>
+               <TELL
+"To the east, next to the great iron door, a cleft opens up,
+revealing an open area behind!" CR>)
+              (<==? ,HERE ,AQ-VIEW>
+               <TELL
+"One of the giant pillars supporting the aqueduct collapses in a pile
+of smoke and rubble!" CR>)
+              (<EQUAL? ,HERE ,AQ-2 ,AQ-3>
+               <TELL
+"The channel beneath your feet trembles. Then the channel just to the ">
+               <COND (<==? ,HERE ,AQ-2> <TELL "north">)
+                     (T <TELL "south">)>
+               <TELL " collapses and falls into the chasm!" CR>)>
+        <SETG CLEFT-FLAG T>
+        <FCLEAR ,CLEFT ,INVISIBLE>
+        <SETG AQ-FLAG <>>
+        <RTRUE>>
+
+<ROUTINE CLEFT-F ()
+        <COND (<NOT <==? ,YEAR ,YEAR-PRESENT>>
+               <TELL "There is no cleft here." CR>)>>
+
+<ROUTINE MUSEUM-ANTE-F (RARG)
+        <COND (<==? .RARG ,M-LOOK>
+               <COND (,CLEFT-FLAG
+                      <TELL
+"This is the south end of a monumental hall, full of debris from
+a recent earthquake. To the east is a great iron door, rusted shut. To its
+right, however, is a gaping cleft in the rock and behind, a cleared area." CR>)
+                     (T
+                      <TELL
+"You are in the southern half of a monumental hall. To the east lies
+a tremendous iron door which appears to be rusted shut." CR>)>)>>
+               
+<ROUTINE DDESC (STR1 DOOR STR2)
+        #DECL ((STR1) STRING (DOOR) OBJECT (STR2) <OR FALSE STRING>)
+        <TELL .STR1>
+        <COND (<FSET? .DOOR ,OPENBIT> <TELL "open">)
+              (T <TELL "closed">)>
+        <TELL .STR2 CR>>
+
+<ROUTINE MUSEUM-ENTRANCE-F (RARG)
+        <COND (<==? .RARG ,M-LOOK>
+               <COND (<FSET? ,CAGE ,INVISIBLE>
+                      <TELL
+"This is an entrance hall of some sort, judging by the grand iron
+door to the west, and the ornate stone and wooden doors which lead to the east
+and north, respectively. A few wide steps lead south." CR>)
+                     (T
+                      <TELL
+"This is the entrance to the Royal Museum, the finest and grandest in the
+Great Underground Empire. To the south, down a few steps, is the entrance
+to the Royal Puzzle and to the east, through a stone door, is the Royal
+Jewel Collection. A wooden door to the north is ">
+                     <TELL <COND (<FSET? ,WOODEN-DOOR ,OPENBIT> "open")
+                                 (T "closed")> "
+and leads to the Museum of Technology. ">
+                     <COND (<==? ,YEAR ,YEAR-PRESENT>
+                            <TELL
+"To the west is a great iron door, rusted shut. To its left, however, is a
+cleft in the rock providing an exit from the museum." CR>)
+                           (<L? ,YEAR ,YEAR-PRESENT>
+                            <TELL
+"To the west is a great iron door, rusted shut." CR>)
+                           (T
+                            <TELL
+"To the west is a great iron door, rusted shut. The cleft in the rock,
+present when you started, has filled in with rubble." CR>)>)>)>>
+
+<GLOBAL TM-YEAR 948>
+
+<ROUTINE TIME-MACHINE-F ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-OBJDESC>
+               <TELL
+"Directly in front of you is a large golden machine, which has a seat with a
+console in front. On the console is a single button and a dial connected to
+a three-digit display which reads " N ,TM-YEAR
+". The machine is surprisingly shiny and shows few signs of age." CR>)
+              (<==? .RARG ,M-BEG>
+               <COND (<VERB? MOVE>
+                      <TELL
+"You might be able to move the machine by pushing it." CR>)
+                     (<AND <VERB? PUSH-TO>
+                           <==? ,PRSO ,TIME-MACHINE>>
+                      <TELL
+"That would be a good trick from inside it." CR>)
+                     (<VERB? WALK>
+                      <TELL
+"You're not going anywhere in this heap." CR>)
+                     (<AND <VERB? TAKE PUT MOVE PUSH OPEN CLOSE>
+                           <NOT <HELD? ,PRSO>>
+                           <NOT <IN? ,PRSO ,TIME-MACHINE>>>
+                      <TELL
+"You can't do that from inside the machine." CR>)>)
+              (<NOT .RARG>
+               <COND (<AND <VERB? PUT> <==? ,PRSI ,TIME-MACHINE>>
+                      <TELL
+"You can't put anything on or inside the machine itself." CR>)
+                     (<==? ,PRSO ,TIME-MACHINE>
+                      <COND (<VERB? OPEN CLOSE>
+                             <TELL "This is a machine, not a box." CR>)
+                            (<VERB? EXAMINE>
+                             <TELL
+"The machine consists of a seat and a console containing one small button
+and a dial connected to a display which reads " N ,TM-YEAR "." CR>)
+                            (<AND <VERB? BOARD> <FIRST? ,TM-SEAT>>
+                             <TELL
+"That will be somewhat uncomfortable!" CR>)
+                            (<VERB? TAKE RAISE>
+                             <TELL
+"The machine must weigh hundreds of pounds and cannot be carried." CR>)
+                            (<VERB? PUSH MOVE>
+                             <TELL
+"You should specify in which direction to push the machine." CR>)
+                            (<VERB? PUSH-TO>
+                             <COND (<NOT <==? <DO-WALK ,P-DIRECTION>
+                                              ,M-FATAL>>
+                                    <TELL
+"With some effort, you push the machine into the room with you." CR>
+                                    <COND (<EQUAL? ,HERE
+                                                   ,CP-ANTE ,MID-CP-ANTE>
+                                           <TELL
+"However, the machine seems to have sustained some damage as a result
+of going over the stairs." CR>
+                                           <SETG MACHINE-DAMAGED T>)
+                                          (<==? ,HERE ,MUSEUM-ANTE>
+                                           <TELL
+"Pushing the machine through the cleft seems to have damaged it." CR>
+                                           <SETG MACHINE-DAMAGED T>)>
+                                    <MOVE ,TIME-MACHINE ,HERE>)>
+                             <RTRUE>)>)>)>>
+
+<GLOBAL RING-CONCEALED <>>
+
+<ROUTINE TM-SEAT-F ()
+        <COND (<VERB? CLIMB-ON BOARD>
+               <PERFORM ,V?BOARD ,TIME-MACHINE>
+               <RTRUE>)
+              (<AND <VERB? PUT-UNDER PUT-BEHIND> <==? ,PRSI ,TM-SEAT>>
+               <COND (<==? ,PRSO ,RING>
+                      <TELL "The ring is concealed underneath the seat." CR>
+                      <SETG RING-CONCEALED T>
+                      <REMOVE ,RING>)
+                     (T
+                      <TELL
+"It's too big to hide under the seat." CR>)>)
+              (<VERB? RUB>
+               <TELL "There's nothing odd about the feel of the seat." CR>)
+              (<VERB? LOOK-UNDER RAISE MOVE>
+               <COND (,RING-CONCEALED
+                      <TELL
+"You find the ring under the seat and put it on your finger." CR>
+                      <MOVE ,RING ,WINNER>
+                      <SETG RING-CONCEALED <>>
+                      <RTRUE>)
+                     (T <TELL
+"You notice a small hollow area under the seat." CR>)>)>>
+
+<ROUTINE TM-DIAL-F ()
+        <COND (<VERB? EXAMINE>
+               <TELL "The dial is set to " N ,TM-YEAR "." CR>)
+              (<VERB? TURN>
+               <COND (<==? ,PRSI ,INTNUM>
+                      <COND (<G? ,P-NUMBER 999>
+                             <TELL "You can't set it beyond 999." CR>)
+                            (T
+                             <SETG TM-YEAR ,P-NUMBER>
+                             <TELL "The dial is set to " N ,TM-YEAR "." CR>)>)
+                     (<NOT ,PRSI>
+                      <TELL "You have to say what to turn it to!" CR>)
+                     (T <TELL "You can't do that!" CR>)>)>>
+
+<GLOBAL TM-POINT <>>
+
+<ROUTINE TM-BUTTON-F ()
+        <COND (<VERB? PUSH>
+               <COND (<AND <==? ,TM-YEAR ,YEAR-BUILT> <NOT ,TM-POINT>>
+                      <SETG SCORE <+ ,SCORE 1>>
+                      <SETG TM-POINT T>)>
+               <COND (<OR ,MACHINE-DAMAGED
+                          <NOT <IN? ,WINNER ,TIME-MACHINE>>>
+                      <TELL "Nothing seems to have happened." CR>)
+                     (<L? ,TM-YEAR ,YEAR-BUILT>
+                      <REALLY-DEAD
+"You experience a period of disorientation. The area around you seems
+to be solidifying! Rock formations close in on you and you become
+engulfed in stone!">)
+                     (<==? ,YEAR ,TM-YEAR>
+                      <TELL "Nothing seems to have happened." CR>)
+                     (<L? ,TM-YEAR ,YEAR-CLOSED>
+                      <TELL
+"You experience a brief period of disorientation. When your vision returns, ">
+                      <COND (<EQUAL? ,HERE ,MUSEUM-ENTRANCE
+                                     ,MID-MUSEUM-ENTRANCE
+                                     ,OLD-MUSEUM-ENTRANCE>
+                             <COND (<==? ,TM-YEAR ,YEAR-CAGED>
+                                    <TELL
+"you are surrounded by a number of heavily armed guards, the dress and
+speech of which seem strange and unfamiliar. A commotion starts at a door
+to the east and a person with a flat head, wearing a gaudy crown and a purple
+robe, bursts into the room." CR>
+                                    <FLATHEAD-SENTENCE>)
+                                   (T
+                                    <GUARDS-KILL>)>)
+                            (<EQUAL? ,HERE ,JEWEL-ROOM ,MID-JEWEL-ROOM
+                                           ,OLD-JEWEL-ROOM>
+                             <COND (<==? ,TM-YEAR ,YEAR-CAGED>
+                                    <TELL
+"you find yourself in the middle of some kind of ceremony, with a strange
+flat-headed man wearing royal vestments about to break a bottle on the bars
+of an iron cage containing magnificent jewels. He appears pleased
+by your presence. ">
+                                    <FLATHEAD-SENTENCE>)
+                                   (<G? ,TM-YEAR ,YEAR-CAGED>
+                                    <GUARDS-KILL>)
+                                   (T
+                                    <TELL ,SURROUNDINGS-CHANGED CR>
+                                    <TGOTO ,OLD-JEWEL-ROOM>)>)
+                            (<EQUAL? ,HERE ,TECH-MUSEUM ,MID-TECH-MUSEUM
+                                           ,OLD-TECH-MUSEUM>
+                             <COND (<NOT <==? ,TM-YEAR ,YEAR-BUILT>>
+                                    <GUARDS-KILL>)
+                                   (T
+                                    <TELL ,SURROUNDINGS-CHANGED CR>
+                                    <TGOTO ,OLD-TECH-MUSEUM>)>)>)
+                     (T
+                      <HAPPY-NEW-YEAR>)>)>>
+
+<GLOBAL SURROUNDINGS-CHANGED
+"your surroundings appear to have changed. From outside the door
+you hear the sounds of guards talking.">
+
+<ROUTINE HAPPY-NEW-YEAR ()
+        <TELL
+"You experience a brief period of disorientation. When your vision returns,
+your surroundings appear somewhat altered." CR>
+        <COND (<EQUAL? ,HERE ,OLD-JEWEL-ROOM ,MID-JEWEL-ROOM ,JEWEL-ROOM>
+               <COND (<L? ,TM-YEAR ,YEAR-PRESENT> <TGOTO ,MID-JEWEL-ROOM>)
+                     (T <TGOTO ,JEWEL-ROOM>)>)
+              (<EQUAL? ,HERE ,OLD-TECH-MUSEUM ,MID-TECH-MUSEUM
+                             ,TECH-MUSEUM>
+               <COND (<L? ,TM-YEAR ,YEAR-PRESENT> <TGOTO ,MID-TECH-MUSEUM>)
+                     (T <TGOTO ,TECH-MUSEUM>)>)
+              (<L? ,TM-YEAR ,YEAR-PRESENT> <TGOTO ,MID-MUSEUM-ENTRANCE>)
+              (T <TGOTO ,MUSEUM-ENTRANCE>)>>
+
+<GLOBAL SNAP-LOC <>>
+
+<ROUTINE I-SNAP ()
+        <COND (<==? ,YEAR ,YEAR-PRESENT>
+               <RFALSE>)>
+        <SETG TM-YEAR ,YEAR-PRESENT>
+        <TELL
+"You start to feel light-headed and quickly become completely disoriented.
+When your head clears, you realize that your surroundings have changed." CR>
+        <TGOTO ,SNAP-LOC T>>
+
+<ROUTINE MOVE-JEWELS ()
+        <COND (<==? ,TM-YEAR ,YEAR-BUILT>
+               <MOVE ,PEDESTAL ,OLD-JEWEL-ROOM>)
+              (<L? ,TM-YEAR ,YEAR-PRESENT>
+               <MOVE ,PEDESTAL ,MID-JEWEL-ROOM>)
+              (T
+               <MOVE ,PEDESTAL ,JEWEL-ROOM>)>
+        <COND (,RING-STOLEN <RTRUE>)>
+        <MOVE ,SCEPTRE ,PEDESTAL>
+        <FSET ,SCEPTRE ,NDESCBIT>
+        <MOVE ,JEWELLED-KNIFE ,PEDESTAL>
+        <FSET ,JEWELLED-KNIFE ,NDESCBIT>
+        <COND (<NOT ,RING-CONCEALED>
+               <MOVE ,RING ,PEDESTAL>
+               <FSET ,RING ,NDESCBIT>)>>
+
+<ROUTINE TGOTO ("OPTIONAL" (RM <>) (SNAP <>))
+        <SETG MOVES <+ ,MOVES 1>>
+        <QUEUE I-GUARDS-LEAVE 0>
+        <SETG INVIS <>>
+        <COND (<G? ,YEAR ,YEAR-BUILT>
+               <SETG GUARDS-PRESENT T>)>
+        <COND (<==? ,YEAR ,YEAR-PRESENT>
+               <SETG SNAP-LOC ,HERE>
+               <ENABLE <QUEUE I-SNAP 40>>)>
+        <COND (<==? ,TM-YEAR ,YEAR-PRESENT>
+               <SETG CLEFT-FLAG T>)
+              (T <SETG CLEFT-FLAG <>>)>
+        <FCLEAR ,JEWEL-DOOR ,OPENBIT>
+        <FCLEAR ,WOODEN-DOOR ,OPENBIT>
+        <FCLEAR ,IRON-DOOR ,OPENBIT>
+        <COND (<==? ,YEAR ,YEAR-BUILT>
+               <COND (<AND ,RING-CONCEALED
+                           <IN? ,TIME-MACHINE ,OLD-TECH-MUSEUM>
+                           <IN? ,SCEPTRE ,PEDESTAL>
+                           <IN? ,JEWELLED-KNIFE ,PEDESTAL>>
+                      <SETG RING-STOLEN T>
+                      <FSET ,CAGE ,INVISIBLE>
+                      ;<FSET ,PEDESTAL ,INVISIBLE>
+                      <REMOVE ,SCEPTRE>
+                      <REMOVE ,JEWELLED-KNIFE>)
+                     (<OR <NOT <IN? ,TIME-MACHINE ,OLD-TECH-MUSEUM>>
+                          ,RING-CONCEALED>
+                      <SETG CLUMSY-ROBBERY T>
+                      <REMOVE ,TIME-MACHINE>)
+                     (<OR <NOT <IN? ,RING ,PEDESTAL>>
+                          <NOT <IN? ,SCEPTRE ,PEDESTAL>>
+                          <NOT <IN? ,JEWELLED-KNIFE ,PEDESTAL>>>
+                      <SETG MYSTERY T>)>)>
+        <COND (<==? ,TM-YEAR ,YEAR-BUILT>
+               <SETG MYSTERY <>>
+               <SETG CLUMSY-ROBBERY <>>)>
+        <SETG YEAR ,TM-YEAR>
+        <MOVE-TM-OBJECTS>
+        <MOVE-JEWELS>
+        <MOVE ,WINNER ,HERE>
+        <GOTO .RM <>>
+        <COND (<==? ,YEAR ,YEAR-BUILT>
+               <MOVE ,TIME-MACHINE ,OLD-TECH-MUSEUM>
+               <MOVE ,SPINNER ,OLD-TECH-MUSEUM>
+               <MOVE ,PRESSURIZER ,OLD-TECH-MUSEUM>
+               <MOVE ,TECH-PLAQUE ,OLD-TECH-MUSEUM>)
+              (<L? ,YEAR ,YEAR-PRESENT>
+               <COND (<NOT ,CLUMSY-ROBBERY>
+                      <MOVE ,TIME-MACHINE ,MID-TECH-MUSEUM>)>
+               <MOVE ,SPINNER ,MID-TECH-MUSEUM>
+               <MOVE ,PRESSURIZER ,MID-TECH-MUSEUM>
+               <MOVE ,TECH-PLAQUE ,MID-TECH-MUSEUM>
+               <MOVE ,CAGE ,MID-JEWEL-ROOM>)
+              (T
+               <MOVE ,TIME-MACHINE ,TECH-MUSEUM>
+               <MOVE ,SPINNER ,TECH-MUSEUM>
+               <MOVE ,PRESSURIZER ,TECH-MUSEUM>
+               <MOVE ,TECH-PLAQUE ,TECH-MUSEUM>
+               <MOVE ,CAGE ,JEWEL-ROOM>)>
+        <COND (<OR ,CLUMSY-ROBBERY
+                   <NOT <EQUAL? ,HERE ,TECH-MUSEUM
+                                ,MID-TECH-MUSEUM
+                                ,OLD-TECH-MUSEUM>>>
+               <COND (<NOT .SNAP>
+                      <TELL
+"You notice that the golden machine has disappeared!" CR>)>)
+              (T <MOVE ,WINNER ,TIME-MACHINE>)>
+        <COND (,CLUMSY-ROBBERY <REMOVE ,TIME-MACHINE>)>
+        <RTRUE>>
+
+<ROUTINE MOVE-TM-OBJECTS ("AUX" F (MFLG <>) (WFLG <>) N)
+        <SET F <FIRST? ,TIME-MACHINE>>
+        <COND (.F
+               <REPEAT ()
+                       <COND (<OR <EQUAL? .F ,TM-DIAL ,TM-SEAT ,TM-BUTTON>
+                                  <EQUAL? .F ,PLAYER>> T)
+                             (<NOT .MFLG>
+                              <SET MFLG T>
+                              <TELL
+"You notice that everything in the machine is gone">)>
+                       <SET N <NEXT? .F>>
+                       <COND (<NOT <EQUAL? .F ,TM-DIAL ,TM-SEAT ,TM-BUTTON>>
+                              <MOVE .F ,HERE>)>
+                       <SET F .N>
+                       <COND (<NOT .F> <RETURN>)>>)>
+        <SET F <FIRST? ,WINNER>>
+        <COND (.F
+               <REPEAT ()
+                       <COND (<NOT .WFLG>
+                              <SET WFLG T>
+                              <COND (.MFLG
+                                     <TELL ": come to mention
+it, everything you were holding has vanished too">)
+                                    (T <TELL
+"You notice that everything you were holding is gone">)>)>
+                       <SET N <NEXT? .F>>
+                       <MOVE .F ,HERE>
+                       <SET F .N>
+                       <COND (<NOT .F> <RETURN>)>>)>
+        <COND (<OR .MFLG .WFLG> <TELL "!" CR>)>>
+
+<ROUTINE GUARDS-KILL ()
+        <TELL <PICK-ONE ,GUARD-KILLERS> CR>
+        <REALLY-DEAD " ">>
+
+<GLOBAL GUARD-KILLERS <LTABLE 0
+"you are surrounded by heavily armed guards who seem awed by your presence.
+One, whose IQ might be 15, aims a strange waffle-like
+instrument in your direction and all goes black."
+"you are confronted with many particularly stupid-looking
+people dressed in peculiar uniforms and pointing waffle-like objects in
+your direction. One twists his waffle and you slump
+to the ground, dead."
+"you see a row of military people who, if appearances do not
+deceive, have the cumulative intelligence of an unripe grapefruit. One
+of them aims a waffle-shaped implement in your direction and you become numb
+and then paralyzed and then dead.">>
+
+<ROUTINE FLATHEAD-SENTENCE ()
+        <REALLY-DEAD "He speaks loudly, nearly deafening the poor civil
+servant whose duty it is to see that his wishes are carried out. \"Aha! A
+thief! Didn't I tell you that we needed more security! But, no! You all
+said my idea to build the museum under two miles of mountain and surrounded
+by five hundred feet of steel was impractical! Now, what to do with this ...
+intruder? I have it! We'll build a tremendous fortress on the highest mountain
+peak, with one narrow ladder stretching thousands of feet to the pinnacle.
+There he will stay for the rest of his life!\" His brow-beaten assistant
+hesitates. \"Don't you think, Your Lordship, that your plan is a bit, well,
+a bit much?\" Flathead gives it a second's thought. \"No, not really.\" he
+says, and you are led away. A few years later, your prison is finished. You
+are taken there, and spend the rest of your life in misery.">>
+
+<ROUTINE REALLY-DEAD (STR)
+        <TELL .STR "|
+|
+****  You have died  ****|
+|
+">
+        <FINISH>>
+
+<GLOBAL FLATHEAD-HEARD <>>
+
+<GLOBAL RING-STOLEN <>>
+<GLOBAL CLUMSY-ROBBERY <>>
+<GLOBAL MYSTERY <>>
+
+<GLOBAL GUARDS-PRESENT T>
+
+<ROUTINE HEAR-FLATHEAD ()
+        <SETG FLATHEAD-HEARD T>
+        <TELL
+"One particularly loud and grating voice can be heard above the
+others outside the room. \"Very nice! Very nice! Not enough security, but
+very nice! Now, Lord Feepness, pay attention! I've been thinking that what
+we need is a dam, a tremendous dam to control the Frigid River, with
+thousands of gates. We shall call it ... Flood Control Dam #2. No, not
+quite right. Aha! Flood Control Dam #3.\" \"Pardon me, my Lord, but wouldn't
+that be just a tad excessive?\" \"Nonsense! Now, let me tell you my idea for
+hollowing out volcanoes...\" With that, the voices trail out nothingness." CR>>
+
+<ROUTINE OLD-TECH-MUSEUM-F (RARG)
+        <COND (<AND <==? .RARG ,M-LOOK> <==? ,HERE ,OLD-JEWEL-ROOM>>
+               <TELL
+"You are in a high-ceilinged chamber, in the center of which
+is a pedestal which ">
+               <COND (<NOT ,RING-STOLEN>
+                      <TELL "is the intended home of the Crown
+Jewels of the Great Underground Empire: a jewelled knife, a golden ring, and
+the royal sceptre.">
+                      <COND (<OR <NOT <IN? ,SCEPTRE ,PEDESTAL>>
+                                 <NOT <IN? ,RING ,PEDESTAL>>
+                                 <NOT <IN? ,JEWELLED-KNIFE ,PEDESTAL>>>
+                             <TELL
+" Not all of the jewels are in place, however.">)>)
+                     (T <TELL "is bare.">)>
+               <TELL "
+The room is, by appearances, unfinished." CR>
+               <COND (,GUARDS-PRESENT
+                      <TELL ,HEAR-VOICES CR>)>
+               <RTRUE>)
+              (<==? .RARG ,M-LOOK>
+               <COND (<==? ,HERE ,OLD-TECH-MUSEUM>
+                      <TELL
+"You are in a large, unfinished room, probably intended to be a
+part of the Royal Museum." CR>)
+                     (T
+                      <TELL
+"This appears to be an unfinished entranceway to the Royal Museum. There are
+doors to the east and north, and a blind stairway to the south. A heavy iron
+door to the west is closed and locked." CR>)>
+               <COND (,GUARDS-PRESENT
+                      <TELL ,HEAR-VOICES CR>)>
+               <RTRUE>)
+              (<AND <==? .RARG ,M-END>
+                    <NOT ,FLATHEAD-HEARD>
+                    ,GUARDS-PRESENT
+                    <PROB 6>>
+               <HEAR-FLATHEAD>)
+              (<AND <==? .RARG ,M-ENTER> ,GUARDS-PRESENT>
+               <ENABLE <QUEUE I-GUARDS-LEAVE <+ 3 <RANDOM 12>>>>)
+              (<AND <==? .RARG ,M-BEG>
+                    <VERB? OPEN>
+                    <EQUAL? ,PRSO ,WOODEN-DOOR ,JEWEL-DOOR>
+                    ,GUARDS-PRESENT>
+               <TELL
+"You open the door ever so slightly and see dozens of armed officials.
+You shut the door quickly, realizing that you would be killed
+in an instant if you left the room." CR>)
+              (<AND <==? .RARG ,M-BEG> ,GUARDS-PRESENT <PROB 3>>
+               <GUARD-CAUGHT>)>>
+
+<GLOBAL HEAR-VOICES
+"Through the door you can hear voices which, from their
+sound, belong to military or police personnel.">
+
+<ROUTINE I-GUARDS-LEAVE ()
+        <SETG GUARDS-PRESENT <>>
+        <TELL
+"You hear, from outside the door, guards marching away, their voices fading.
+After a few moments, a booming crash signals the close of what must be a
+tremendous door. Then there is silence." CR>>
+
+<ROUTINE GUARD-CAUGHT ()
+        <REALLY-DEAD
+"A particularly vicious-looking guard enters the room and sees you.
+He grinds his teeth unpleasantly, pulls a waffle out of his
+garment, and vaporizes you with a flick of his finger.">>
+
+<OBJECT ROBOT
+       (IN LOCAL-GLOBALS)
+       (DESC "robot")
+       (SYNONYM ROBOT DEVICE)
+       (ACTION ROBOT-F)>
+
+<ROUTINE ROBOT-F ()
+        <COND (<VERB? FOLLOW>
+               <TELL "It moved quickly and left the door closed." CR>)
+              (T <TELL "There is no robot here." CR>)>>
+
+<ROUTINE JEWEL-ROOM-F (RARG)
+        <COND (<AND <==? .RARG ,M-END>
+                    <IN? ,TIME-MACHINE ,HERE>
+                    <PROB 4>>
+               <TELL
+"An odd robot-like device glides in, dusting the floor as it moves. Its
+head gyrates briefly as it scans the machine. \"Shame. Shame,\"
+it says, rather tinnily. \"Someone has been tampering with the machines
+again.\" Six beady mechanical eyes focus on you as the robot picks up the
+gold machine. \"Hands off, adventurer!\" it says as it leaves the
+room, closing the door behind it." CR>
+               <FCLEAR ,JEWEL-DOOR ,OPENBIT>
+               <FCLEAR ,WOODEN-DOOR ,OPENBIT>
+               <MOVE ,TIME-MACHINE ,TECH-MUSEUM>)
+              (<==? .RARG ,M-LOOK>
+               <TELL
+"You are in a high-ceilinged chamber">
+               <COND (<NOT <FSET? ,CAGE ,INVISIBLE>>
+                      <TELL " in the middle of which
+sits a tall, round steel cage, which is securely locked. In the
+middle of the cage is a pedestal on which sit the Crown Jewels
+of the Great Underground Empire: a sceptre, a jewelled knife, and a golden
+ring. A small bronze plaque, now tarnished, is on the cage." CR>)
+                     (T
+                      <TELL " in the middle of which is a bare
+pedestal. The room is unfinished with no
+indication of its purpose. A small plaque is fastened to a wall." CR>)>)>>
+
+;"You can take the jewels in YEAR-BUILT; otherwise, it is enclosed.
+  If you take it, YEAR-CLOSED is updated to YEAR-CAGED (history changes)"
+
+<ROUTINE CROWN-JEWELS-F ()
+        <COND (<VERB? TAKE>
+               <COND (<HELD? ,PRSO> <RFALSE>)
+                     (<OR <==? ,YEAR ,YEAR-BUILT>
+                          <FSET? ,CAGE ,INVISIBLE>>
+                      <FCLEAR ,PRSO ,NDESCBIT>
+                      <RFALSE>)
+                     (T
+                      <TELL
+"The jewels are inside a locked cage." CR>)>)
+              (<AND <VERB? PUT>
+                    <==? ,PRSI ,PEDESTAL>
+                    <IN? ,PRSO ,WINNER>>
+               <TELL "The " D ,PRSO " is now resting on the pedestal." CR>
+               <MOVE ,PRSO ,PEDESTAL>
+               <FSET ,PRSO ,NDESCBIT>
+               <RTRUE>)
+              (<AND <VERB? PUT> <NOT <HELD? ,PRSO>>>
+               <TELL "You don't have the " D ,PRSO "." CR>)>>
+               
+<ROUTINE TECH-MUSEUM-F (RARG)
+        <COND (<==? .RARG ,M-LOOK>
+               <COND (<FSET? ,CAGE ,INVISIBLE>
+                      <DDESC
+"This is an exhibit of Empire technology. A wooden door to the
+south is " ,WOODEN-DOOR ".">)
+                     (T
+                      <DDESC
+"This is a large hall which hosted the technological exhibits of the
+Great Underground Empire. A door to the south is "
+,WOODEN-DOOR ".">)>)>>
+                     
+<ROUTINE PLAQUE-F ()
+        <COND (<VERB? EXAMINE READ>
+               <COND (,RING-STOLEN
+                      <TELL
+"The plaque explains that this room was to be the home of the Crown Jewels
+of the Empire. However, following the unexplained disappearance of a
+priceless ring during the final stages of construction, Lord Flathead
+decided to place the remaining jewels in a safer location.
+Interestingly, he placed his most prized possesion, an incredibly gaudy
+crown, in a locked safe in a volcano specifically hollowed out for that
+purpose." CR>
+                      <RTRUE>)>
+               <FIXED-FONT-ON>
+               <TELL
+"|
+         Crown Jewels|
+|
+  Presented To The Royal Museum|
+      By His Gracious Lord|
+|
+        DIMWIT FLATHEAD|
+|
+          Dedicated|
+         * 777 GUE *">
+               <FIXED-FONT-OFF>
+               <COND (,CLUMSY-ROBBERY
+                      <TELL CR CR
+"Underneath the plaque, in small lettering, is a description of a clumsy
+attempt to steal the jewels using a time machine from the Technological
+Museum which the curators were surprised to discover was not a nonworking
+model. After the attempt, the machine was removed from the exhibit.">)
+                     (,MYSTERY
+                      <TELL CR CR
+"Underneath the plaque, in small lettering, is a description of
+a mysterious happening during the final stages of construction of
+the Museum, in which some of the crown jewels were found displaced
+from their proper positions. Fortunately, nothing was missing.
+The mystery was never solved and the museum was opened despite the objections
+of Lord Flathead that security was too lax.">)>
+               <CRLF>
+               <RTRUE>)>>
+
+<ROUTINE WOODEN-DOOR-F ()
+        <COND (<AND <VERB? LISTEN> ,GUARDS-PRESENT>
+               <PERFORM ,V?LISTEN ,VOICES>
+               <RTRUE>)
+              (<AND <VERB? KNOCK> ,GUARDS-PRESENT>
+               <TELL
+"You realize that calling attention to yourself would be fatal." CR>)>>
+
+<ROUTINE JEWEL-DOOR-F ()
+        <COND (<AND <VERB? KNOCK> ,GUARDS-PRESENT>
+               <PERFORM ,V?KNOCK ,WOODEN-DOOR>
+               <RTRUE>)
+              (<VERB? OPEN UNLOCK>
+               <COND (<FSET? ,JEWEL-DOOR ,OPENBIT>
+                      <TELL "It is already open." CR>)
+                     (<AND <==? ,YEAR ,YEAR-BUILT>
+                           <==? ,HERE ,OLD-MUSEUM-ENTRANCE>>
+                      <TELL
+"The door is locked, probably by the guards on their way out." CR>)
+                     (T
+                      <TELL "The door is now open." CR>
+                      <FSET ,JEWEL-DOOR ,OPENBIT>)>)>>
+               
+
+<ROUTINE CAGE-F ()
+        <COND (<VERB? OPEN> <TELL "The cage is locked." CR>)
+              (<VERB? CLOSE> <TELL "The cage is already closed." CR>)>>
+
+<ROUTINE VOICES-F ()
+        <COND (<AND ,GUARDS-PRESENT <==? ,YEAR ,YEAR-BUILT>>
+               <TELL
+"The voices are muffled by the door which (fortunately for you) separates
+you. They seem to be in heated debate on the topic of
+">
+               <TELL <PICK-ONE ,BLATHER> "." CR>)
+              (T <TELL "Are you hearing things now?" CR>)>>
+
+<GLOBAL BLATHER
+       <LTABLE 0
+               "wage scales for guards"
+               "the excessive nature of the Royal Government"
+               "the soon to be constructed Royal Puzzle"
+               "the proper way to execute trespassers"
+               "torturing thieves"
+               "the banishment of the Wizard of Frobozz">>
+
+<ROUTINE MUSEUM-PIECES ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-OBJDESC>
+               <COND (<==? ,DESC-OBJECT ,SPINNER>
+                      <RTRUE>)>
+               <TELL
+"A strange grey machine, shaped somewhat like a clothes dryer, is on one side
+of the room. On the other side of the hall is a powerful-looking black
+machine, a tight tangle of wires, pipes, and motors.|
+A plaque is mounted near the door.">
+               <COND (<L? ,YEAR ,YEAR-CLOSED>
+                      <TELL
+" The grey machine, it turns out, is a Frobozz
+Magic Pressurizer, used in the coal mines of the Empire. The black machine is
+a Frobozz Magic Room Spinner. The golden machine is referred to as a
+Temporizer. All are nonworking models donated by Frobozzco president John
+D. Flathead." CR>)
+                     (T <TELL
+" The writing is faded, however, and cannot be
+made out clearly. The two machines seem to be in bad shape, rusting in many
+spots." CR>)>)
+              (<VERB? TAKE MOVE>
+               <TELL "It's massive and cannot even be moved." CR>)
+              (<VERB? PUSH PUSH-TO>
+               <TELL "It's too heavy to be pushed." CR>)
+              (<VERB? MUNG>
+               <TELL "It seems quite indestructible." CR>)
+              (<AND <VERB? PUT>
+                    <EQUAL? ,PRSI ,SPINNER ,PRESSURIZER>>
+               <TELL "There's no good place to put anything there." CR>)>>
+
+<ROUTINE TECH-PLAQUE-F ()
+        <COND (<VERB? TAKE>
+               <TELL "It's bolted to the wall." CR>)
+              (<VERB? EXAMINE READ>
+               <COND (<L? ,YEAR ,YEAR-CLOSED>
+                      <TELL
+"The plaque merely identifies the machines and names their donor. They are
+nonworking models of existing state-of-the-art machinery." CR>)
+                     (T <TELL "The words cannot be made out." CR>)>)>>
+
+<ROUTINE PEDESTAL-F ()
+        <COND (<VERB? EXAMINE LOOK-ON>
+               <COND (<FIRST? ,PEDESTAL>
+                      <TELL
+"The Royal Jewels are on the pedestal." CR>)>)
+              (<AND <VERB? PUT PUT-ON TAKE> <NOT <FSET? ,CAGE ,INVISIBLE>>>
+               <TELL "You can't reach it through the cage." CR>)>>
+
+\\f
+
+"old SHADOW.ZIL"
+
+<ROOM CREEPY-CRAWL
+      (IN ROOMS)
+      (DESC "Creepy Crawl")
+      (LDESC
+"You are in a dark and quite creepy crawlway with passages leaving to the
+north, east, south, and southwest.")
+      (FLAGS RLANDBIT)
+      (NORTH TO JUNCTION)
+      (SOUTH TO FOGGY-ROOM)
+      (SW TO SHADOW-1)
+      (EAST TO TIGHT-SQUEEZE)
+      (ACTION CREEPY-CRAWL-F)>
+
+<ROOM SHADOW-1
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are at the eastern end of a dark, featureless landscape of shallow
+hills. Paths to the east and southeast reenter the rock.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (NE "Towering walls of rock bar your way.")
+      (NORTH "Towering walls of rock bar your way.")
+      (SOUTH TO SHADOW-5)
+      (EAST TO CREEPY-CRAWL)
+      (NW TO SHADOW-2)
+      (WEST TO SHADOW-3)
+      (SW TO SHADOW-4)
+      (SE TO FOGGY-ROOM)>
+
+<ROOM SHADOW-2
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are in a shadowy land of low, rolling hills stretching out to the west
+and south. The land is bordered to the north by a massive stone wall.
+Ancient and weathered, the wall has crumbled enough at one point to permit
+passage.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (NE "A stone wall blocks the way.")
+      (NORTH TO CLEARING)
+      (NW "A stone wall blocks the way.")
+      (SE TO SHADOW-1)
+      (SW TO SHADOW-7)
+      (SOUTH TO SHADOW-3)
+      (WEST TO SHADOW-8)
+      (EAST TO SHADOW-1)
+      (GLOBAL RUBBLE STONE-WALL)>
+
+<ROOM SHADOW-3
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are in a dark and shadowy land. All around you are gentle hills and
+eerie shadows. Far above, shrouded in mist, you can barely make out the
+ceiling of the enormous cavern that spans this entire land.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (PSEUDO "MIST" MIST-PSEUDO)
+      (NW TO SHADOW-8)
+      (NE TO SHADOW-1)
+      (SE TO SHADOW-1)
+      (SW TO SHADOW-6)
+      (NORTH TO SHADOW-2)
+      (SOUTH TO SHADOW-4)
+      (WEST TO SHADOW-7)
+      (EAST TO SHADOW-1)>
+
+<ROOM SHADOW-4
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are in an ominously dark land of rolling hills. The ground becomes
+softer to the south.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (NORTH TO SHADOW-3)
+      (EAST TO SHADOW-1)
+      (NE TO SHADOW-1)
+      (SE TO SHADOW-5)
+      (SOUTH TO SHADOW-5)
+      (SW "The ground becomes too soft to walk on in that direction.")
+      (WEST TO SHADOW-6)
+      (NW TO SHADOW-7)>
+
+<ROOM SHADOW-5
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are at the southern end of a shadowy land. The ground here is quite
+soft, and the area is surrounded by quicksand on most sides. North of here
+is a terrain of shallow hills.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (PSEUDO "QUICKS" QUICKSAND-PSEUDO)
+      (NORTH TO SHADOW-4)
+      (NW TO SHADOW-6)
+      (NE TO SHADOW-1)
+      (SE "The quicksand prevents movement in that direction.")
+      (WEST "The quicksand prevents movement in that direction.")
+      (SOUTH "The quicksand prevents movement in that direction.")
+      (SW "The quicksand prevents movement in that direction.")
+      (EAST "The quicksand prevents movement in that direction.")>
+
+<ROOM SHADOW-6
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are near the southern end of the land of shadow. The ground here is
+soft and spongy, and it becomes quicksand to the south. North and east of here
+are gentle, rolling hills. A gentle sea breeze wafts over a steeply sloping
+path to the west.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (NORTH TO SHADOW-7)
+      (NW TO FLATHEAD-OCEAN)
+      (WEST TO FLATHEAD-OCEAN)
+      (DOWN TO FLATHEAD-OCEAN)
+      (SE TO SHADOW-5)
+      (EAST TO SHADOW-4)
+      (NE TO SHADOW-3)
+      (SOUTH "The quicksand prevents movement in that direction.")
+      (SW "The quicksand prevents movement in that direction.")
+      (PSEUDO "QUICKS" QUICKSAND-PSEUDO)>
+
+<ROOM SHADOW-7
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are in a land of dark shadows and shallow hills, which stretch out in all
+directions. To the west, the land dips sharply.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (NE TO SHADOW-2)
+      (EAST TO SHADOW-3)
+      (SE TO SHADOW-4)
+      (SOUTH TO SHADOW-6)
+      (NORTH TO SHADOW-8)
+      (DOWN TO FLATHEAD-OCEAN)
+      (NW TO FLATHEAD-OCEAN)
+      (WEST TO FLATHEAD-OCEAN)
+      (SW TO FLATHEAD-OCEAN)>
+
+<ROOM SHADOW-8
+      (IN ROOMS)
+      (DESC "Land of Shadow")
+      (LDESC
+"You are standing atop a steep cliff, looking west over a vast ocean.
+Far below, the surf pounds at a sandy beach. To the south and east are
+rolling hills filled with eerie shadows. A path cut into the face of the
+cliff descends toward the beach. To the north is a tall stone wall,
+which ends at the cliff edge. It was obviously built long ago, and
+directly north is a spot where you could climb over the rubble of the
+decaying wall.")
+      (FLAGS RLANDBIT)
+      (ACTION SHADOW-ROOMS)
+      (SOUTH TO SHADOW-7)
+      (EAST TO SHADOW-2)
+      (SE TO SHADOW-3)
+      (SW TO FLATHEAD-OCEAN)
+      (WEST TO FLATHEAD-OCEAN)
+      (NE "A stone wall blocks the way.")
+      (NW "A stone wall blocks the way.")
+      (DOWN TO FLATHEAD-OCEAN)
+      (NORTH TO CLIFF)
+      (GLOBAL RUBBLE STONE-WALL)>
+
+<ROOM FLATHEAD-OCEAN
+      (IN ROOMS)
+      (DESC "Flathead Ocean")
+      (FLAGS RLANDBIT ONBIT)
+      (NORTH TO CLIFF-BASE)
+      (ENTER"Between the rocks, wind, and waves, you wouldn't last a minute.")
+      (WEST "Between the rocks, wind, and waves, you wouldn't last a minute.")
+      (SW "Between the rocks, wind, and waves, you wouldn't last a minute.")
+      (NW "Between the rocks, wind, and waves, you wouldn't last a minute.")
+      (ACTION FLATHEAD-OCEAN-F)
+      (SE TO SHADOW-6)
+      (NE TO SHADOW-8)
+      (EAST TO SHADOW-7)
+      (SOUTH "The quicksand prevents movement here.")
+      (PSEUDO "QUICKS" QUICKSAND-PSEUDO "MIST" MIST-PSEUDO)>
+
+<OBJECT SHADOW
+       (DESC "hooded figure")
+       (SYNONYM SHADOW FIGURE MAN WOMAN)
+       (ADJECTIVE HOODED CLOAKED)
+       (FLAGS ACTORBIT TRANSBIT CONTBIT OPENBIT)
+       (ACTION SHADOW-F)
+       (DESCFCN SHADOW-F)>
+
+<OBJECT HOOD
+       (IN SHADOW)
+       (DESC "hood")
+       (SYNONYM HOOD)
+       (FLAGS NDESCBIT TRYTAKEBIT TAKEBIT WEARBIT)
+       (ACTION HOOD-F)>
+
+<OBJECT CLOAK
+       (IN SHADOW)
+       (DESC "cloak")
+       (SYNONYM CLOAK)
+       (FLAGS NDESCBIT TRYTAKEBIT TAKEBIT WEARBIT)
+       (ACTION CLOAK-F)>
+       
+<GLOBAL DIRS
+       <LTABLE P?NORTH "north" P?SOUTH "south" P?EAST "east" P?WEST "west"
+               P?NW "northwest" P?NE "northeast" P?SE "southeast"
+               P?SW "southwest" P?UP "stairs" P?DOWN "stairs">>
+
+<GLOBAL DIR-TBL <TABLE 0 0 0 0 0 0 0 0 0 0 0 0>>
+
+<ROUTINE PICK-DIRECTION (RM "AUX" (NXT 0) (CNT 0) (OFFS 0))
+        <REPEAT ()
+                <COND (<==? <SET NXT <NEXTP .RM .NXT>> 0>
+                       <RETURN>)
+                      (<NOT <L? .NXT ,LOW-DIRECTION>>
+                       <COND (<NOT <EQUAL? .NXT ,P?UP ,P?DOWN>>
+                              <SET OFFS <+ .OFFS 1>>
+                              <PUT ,DIR-TBL .OFFS .NXT>
+                              <SET CNT <+ .CNT 1>>)>)>>
+        <GET ,DIR-TBL <RANDOM .CNT>>>
+       
+<ROUTINE SHADOW-F ("OPTIONAL" (RARG <>))
+        <COND (<==? .RARG ,M-OBJDESC>
+               <COND (<NOT ,BLOCKED-DIR>
+                      <SETG BLOCKED-DIR <PICK-DIRECTION ,HERE>>)>
+               <TELL
+"A cloaked and hooded person, carrying a sword not unlike your own,">
+               <COND (<G? ,S-STRENGTH 3>
+                      <TELL "
+is standing blocking the way to the ">
+                      <TELL <LKP ,BLOCKED-DIR ,DIRS> "." CR>)
+                     (T <TELL "
+is here." CR>)>
+               <TELL "The hooded figure" <GET ,SHADOW-DIAG ,S-STRENGTH> CR>)
+              (<AND <VERB? GIVE> <==? ,PRSI ,SHADOW>>
+               <TELL
+"The hooded figure isn't interested in your gifts." CR>)
+              (<HELLO? ,SHADOW>
+               <TELL
+"The hooded figure does not respond to your words." CR>)
+              (<AND <VERB? ATTACK> <==? ,PRSI ,SWORD>>
+               <COND (<NOT ,SHADOW-POINT-2>
+                      <SETG SCORE <+ ,SCORE 1>>
+                      <SETG SHADOW-POINT-2 T>)>
+               <SHADOW-ATTACK>)
+              (<VERB? ATTACK>
+               <TELL
+"The hooded figure ignores your feeble attack." CR>
+               <SETG ATTACK-MODE T>
+               <ENABLE <QUEUE I-CURE 10>>
+               <ENABLE <QUEUE I-SHADOW-REPLY -1>>)>>
+
+<GLOBAL SHADOW-DIAG
+       <TABLE
+"?"
+" appears to be badly hurt and defenseless."
+" is hurt, and its strength appears to be fading."
+" has some wounds and is probably not capable of hindering your movement."
+" has a light wound which hasn't affected its seemingly great strength."
+" has a great deal of strength, perhaps matching your own.">>
+
+<GLOBAL P-STRENGTH 5>
+<GLOBAL S-STRENGTH 5>
+
+<GLOBAL ATTACK-MODE <>>
+<GLOBAL SHADOW-GONE <>>
+
+<ROUTINE I-CURE ()
+        <COND (<NOT <==? ,P-STRENGTH 5>>
+               <SETG P-STRENGTH <+ ,P-STRENGTH 1>>)>
+        <COND (<NOT <==? ,S-STRENGTH 5>>
+               <SETG S-STRENGTH <+ ,S-STRENGTH 1>>)>
+        <COND (<NOT <==? <+ ,P-STRENGTH ,S-STRENGTH> 10>>
+               <QUEUE I-CURE 10>)>
+        <RFALSE>>
+                     
+<ROUTINE SHADOW-ATTACK ()
+        <COND (<NOT ,ATTACK-MODE>
+               <ENABLE <QUEUE I-CURE 10>>
+               <SETG ATTACK-MODE T>
+               <ENABLE <QUEUE I-SHADOW-REPLY -1>>)>
+        <COND (<PROB <+ <* ,P-STRENGTH 10> 10>>
+               <COND (<PROB 85>
+                      <SETG S-STRENGTH <- ,S-STRENGTH 1>>
+                      <COND (<0? ,S-STRENGTH>
+                             <SHADOW-DIES>
+                             <RTRUE>)>
+                      <TELL <PICK-ONE ,P-HITS> CR>
+                      <TELL "The figure" <GET ,SHADOW-DIAG ,S-STRENGTH> CR>)
+                     (T
+                      <SETG S-STRENGTH <- ,S-STRENGTH 2>>
+                      <COND (<0? ,S-STRENGTH> <SETG S-STRENGTH 1>)
+                            (<L? ,S-STRENGTH 1>
+                             <SHADOW-DIES>
+                             <RTRUE>)>
+                      <TELL
+"A sharp thrust and the hooded figure is badly wounded!" CR>
+                      <TELL "The figure" <GET ,SHADOW-DIAG ,S-STRENGTH> CR>)>)
+              (T
+               <COND (<L? ,S-STRENGTH 2>
+                      <TELL
+"Your opponent blocks your attack with its sword." CR>)
+                     (T <TELL <PICK-ONE ,P-MISSES> CR>)>)>>
+
+<GLOBAL P-HITS <LTABLE 0
+"A good parry! Your sword wounds the hooded figure!"
+"A quick stroke catches the hooded figure off guard! Blood trickles
+down the figure's arm!"
+"The hooded figure is hit with a quick slash!">>
+
+<GLOBAL P-MISSES <LTABLE 0
+"Your move was not quick enough and misses the mark."
+"A quick stroke, but the hooded figure is on guard."
+"A good stroke, but it's too slow."
+"A good slash, but it misses by a mile."
+"You charge, but the hooded figure jumps nimbly aside.">>
+
+<GLOBAL S-HITS <LTABLE 0
+"The hooded figure catches you off guard and wounds you!"
+"You are wounded by a lightning thrust!"
+"Your quick reflexes cannot stop the hooded figure's stroke! You are hit!">>
+
+<ROUTINE I-SHADOW-REPLY ()
+        <COND (<OR <NOT ,ATTACK-MODE> <NOT <IN? ,SHADOW ,HERE>>>
+                <QUEUE I-SHADOW-REPLY 0>
+               <SETG ATTACK-MODE <>>
+               <RFALSE>)>
+        <COND (<NOT <IN? ,SWORD ,WINNER>>
+               <MOVE ,SWORD ,WINNER>
+               <TELL
+"Your sword, glowing wildly, leaps into your hand!" CR>)>
+        <COND (<AND <PROB <+ <* ,S-STRENGTH 10> 10>> <G? ,S-STRENGTH 1>>
+               <COND (<PROB 90>
+                      <COND (<L? <SETG P-STRENGTH <- ,P-STRENGTH 1>> 1>
+                             <SETG P-STRENGTH 1>
+                             <TELL
+"The hooded figure swings its sword and sends yours flying to the ground.
+Although you are defenseless, the figure reaches for your sword and hands it
+back to you, nodding grimly." CR>)
+                            (T
+                             <TELL <PICK-ONE ,S-HITS> CR>)>)
+                     (T
+                      <COND (<L? <SETG P-STRENGTH <- ,P-STRENGTH 2>> 1>
+                             <JIGS-UP
+"In your wounded state, you cannot defend yourself against your still-quick
+opponent. Slowly and carefully, the figure starts to remove its hood as you
+fall to the ground, dead.">)
+                            (T
+                             <TELL
+"A brilliant feint puts you off guard, and the hooded figure slips its
+sword between your ribs. You are hurt very badly." CR>)>)>)
+              (<L? ,S-STRENGTH 3>
+               <TELL
+"The hooded figure attempts a thrust, but its weakened state prevents
+hitting you." CR>)
+              (T
+               <TELL <PICK-ONE ,S-MISSES> CR>)>>
+
+<GLOBAL S-MISSES <LTABLE 0
+"The hooded figure stabs nonchalantly with its sword and misses."
+"You dodge as the hooded figure comes in low."
+"The hooded figure tries to sneak past your guard, but you twist away."
+"The hooded figure thrusts, but you fight back and send it
+flying to the ground!">>
+
+<ROUTINE SHADOW-DIES ()
+        <TELL
+"The hooded figure, fatally wounded, slumps to the ground. It gazes up at
+you once, and you catch a brief glimpse of deep and sorrowful eyes. Before
+you can react, the figure vanishes in a cloud of fetid vapor." CR>
+        <REMOVE ,SHADOW>
+        <SETG SHADOW-GONE T>
+        <SETG BLOCKED-DIR <>>>
+
+<ROUTINE HOOD-F ()
+        <COND (<AND <VERB? LOOK-UNDER> <IN? ,HOOD ,SHADOW>>
+               <TELL
+"The figure's hood casts a dark shadow over its face. There is no way from
+where you stand to look beneath it." CR>)
+              (<AND <VERB? TAKE PUT> <IN? ,HOOD ,SHADOW>>
+               <COND (<==? ,S-STRENGTH 1>
+                      <TELL
+"You slowly remove the hood from your badly wounded opponent and recoil
+in horror at the sight of your own face, weary and wounded. A faint
+smile comes to the lips and then the face starts to change, very slowly,
+into that of an old, wizened person. The image fades and with it the body
+of your hooded opponent. The cloak remains on the ground." CR>
+                      <REMOVE ,SHADOW>
+                      <SETG SHADOW-GONE T>
+                      <MOVE ,HOOD ,WINNER>
+                      <FCLEAR ,HOOD ,NDESCBIT>
+                      <MOVE ,CLOAK ,HERE>
+                      <FCLEAR ,CLOAK ,NDESCBIT>)
+                     (<==? ,S-STRENGTH 2>
+                      <TELL
+"The hooded figure, though recovering from wounds, is strong enough to
+force you back." CR>)
+                     (T
+                      <TELL
+"You cannot get close enough to the hooded figure to remove the hood." CR>)>)>>
+
+<ROUTINE CLOAK-F ()
+        <COND (<AND <VERB? LOOK-UNDER> <IN? ,CLOAK ,SHADOW>>
+               <TELL
+"You cannot get close enough to look underneath the cloak." CR>)
+              (<AND <VERB? TAKE> <IN? ,CLOAK ,SHADOW>>
+               <TELL
+"The cloak is fastened around the neck of the hooded figure. It would be
+difficult to remove." CR>)>>
+
+<GLOBAL BLOCKED-DIR <>>
+
+<ROUTINE SHADOW-ROOMS (RARG)
+        <COND (<AND <==? .RARG ,M-BEG>
+                    <VERB? WALK>
+                    <==? ,PRSO ,BLOCKED-DIR>>
+               <TELL "Your way is blocked by the hooded figure." CR>)
+              (<==? .RARG ,M-END>
+               <COND (<NOT <IN? ,SHADOW ,HERE>>
+                      <SETG BLOCKED-DIR <>>
+                      <REMOVE ,SHADOW>)>
+               <COND (,SHADOW-GONE <RFALSE>)
+                     (<IN? ,SHADOW ,HERE>
+                      <COND (<AND <PROB 30> <NOT ,ATTACK-MODE>>
+                             <SETG ATTACK-MODE T>
+                             <ENABLE <QUEUE I-CURE 10>>
+                             <ENABLE <QUEUE I-SHADOW-REPLY -1>>)>)
+                     (<PROB 30>
+                      <TELL
+"You can hear quiet footsteps nearby." CR>)
+                     (<AND <PROB 30> ,LIT <G? ,S-STRENGTH 3>>
+                      <SETG BLOCKED-DIR <PICK-DIRECTION ,HERE>>
+                      <TELL
+"Through the shadows, a cloaked and hooded figure appears before you,
+blocking the ">
+                      <TELL <LKP ,BLOCKED-DIR ,DIRS>
+                            "ern exit from the room and carrying a
+brightly glowing sword." CR>
+                      <SHADOW-ARRIVAL>
+                      <RTRUE>)>)>>
+
+<ROUTINE SHADOW-ARRIVAL ()
+        <MOVE ,SHADOW ,HERE>
+        <COND (<NOT ,SHADOW-POINT-1>
+               <SETG SCORE <+ ,SCORE 1>>
+               <SETG SHADOW-POINT-1 T>)>
+        <COND (<NOT <IN? ,SWORD ,WINNER>>
+               <MOVE ,SWORD ,WINNER>
+               <COND (,SWORD-IN-STONE?
+                      <TELL
+"From nowhere, the sword from the junction appears in your hand, wildly
+glowing!" CR>)
+                     (T
+                      <TELL
+"Your sword, glowing wildly, appears in your hand!" CR>)>
+               <SETG SWORD-IN-STONE? <>>)>>
+
+<GLOBAL SHADOW-POINT-1 <>>
+<GLOBAL SHADOW-POINT-2 <>>
+
+<ROUTINE CREEPY-CRAWL-F (RARG)
+        <COND (<==? .RARG ,M-END>
+               <SETG BLOCKED-DIR <>>
+               <RTRUE>)>>
+
+;" Cooperative Problem"
+
+<ROOM ZORK2-STAIR
+      (IN ROOMS)
+      (DESC "Endless Stair")
+      (LDESC
+"You are at the bottom of a seemingly endless stair, winding its way
+upward beyond your vision. An eerie light, coming from all around you,
+casts strange shadows on the walls. To the south is a dark and winding
+trail.")
+      (FLAGS ONBIT RLANDBIT)
+      (NORTH "The stairs are endless.")
+      (UP "The stairs are endless.")
+      (SOUTH TO JUNCTION)
+      (GLOBAL STAIRS)>
+
+<ROOM JUNCTION
+      (IN ROOMS)
+      (DESC "Junction")
+      (LDESC
+"You are at the junction of a north-south passage and an east-west
+passage. To the north, you can make out the bottom of a stairway. The
+ways to the east and south are relatively cramped, but a wider trail
+leads to the west.")
+      (FLAGS RLANDBIT)
+      (WEST TO CLEARING)
+      (NORTH TO ZORK2-STAIR)
+      (SOUTH TO CREEPY-CRAWL)
+      (EAST TO DAMP-PASSAGE)>
+
+<ROOM CLEARING
+      (IN ROOMS)
+      (DESC "Barren Area")
+      (LDESC
+"You are west of the junction, where the rock-bound passage widens out
+into a large, flat area. Although the land here is barren, you can see
+vegetation to the west. South of here is a mighty wall of stone, ancient
+and crumbling. To the southwest the wall has decayed enough to form an
+opening, through which seeps a thin mist. A trail dips sharply into
+rocky terrain to the northwest.")
+      (FLAGS RLANDBIT)
+      (SW TO SHADOW-2)
+      (NW TO SLOPE)
+      (SOUTH "A stone wall blocks your way.")
+      (SE "A stone wall blocks your way.")
+      (WEST TO CLIFF)
+      (EAST TO JUNCTION)
+      (GLOBAL RUBBLE STONE-WALL)
+      (PSEUDO "MIST" MIST-PSEUDO)>
+
+<ROOM SLOPE
+      (IN ROOMS)
+      (DESC "Hairpin Loop")
+      (LDESC
+"You are at a sharp turn on a narrow and steeply sloping path, strewn
+with boulders of various sizes. The path climbs sharply toward a
+desolate plain to the southeast. Southwest of here the path winds down
+to the base of a cliff.")
+      (SE TO CLEARING)
+      (UP TO CLEARING)
+      (SW TO CLIFF-BASE)
+      (DOWN TO CLIFF-BASE)
+      (GLOBAL RUBBLE)
+      (FLAGS RLANDBIT)>
+
+<ROOM CLIFF-BASE
+      (IN ROOMS)
+      (DESC "Cliff Base")
+      (LDESC
+"You are at the base of a steep cliff. Directly above you is a wide
+ledge and far above that some natural sunlight can be seen. To the
+northeast is a steeply climbing path and the ground becomes sandy toward
+the south.")
+      (FLAGS ONBIT RLANDBIT)
+      (UP "You can't get up the rock face.")
+      (SOUTH TO FLATHEAD-OCEAN)
+      (NE TO SLOPE)
+      (ACTION CLIFF-BASE-F)
+      (GLOBAL LEDGE)>
+
+<ROOM CLIFF
+      (IN ROOMS)
+      (DESC "Cliff")
+      (FLAGS ONBIT RLANDBIT)
+      (DOWN TO CLIFF-LEDGE IF ROPE-FLAG ELSE "The drop would kill you.")
+      (UP "There's no tree here suitable for climbing.")
+      (SW TO SHADOW-8)
+      (EAST TO CLEARING)
+      (ACTION CLIFF-F)
+      (GLOBAL GLOBAL-MAN RUBBLE STONE-WALL CLIFF-OBJECT)
+      (PSEUDO "MIST" MIST-PSEUDO)>
+
+<ROOM CLIFF-LEDGE
+      (IN ROOMS)
+      (DESC "Cliff Ledge")
+      (FLAGS ONBIT RLANDBIT)
+      (UP "You attempt the climb but slide back down.")
+      (DOWN TO CLIFF-BASE)
+      (ACTION CLIFF-LEDGE-F)
+      (GLOBAL RUBBLE GLOBAL-ROPE GLOBAL-MAN LEDGE CLIFF-OBJECT)>
+
+<ROOM FOGGY-ROOM
+      (IN ROOMS)
+      (DESC "Foggy Room")
+      (LDESC
+"You are in a dank passage filled with a wispy fog. A spooky passageway
+leads north and a wider path heads off to the south. To the west, the
+path leaves the rock and enters an eerie, shadowy land.")
+      (NORTH TO CREEPY-CRAWL)
+      (SOUTH TO LAKE-SHORE)
+      (WEST TO SHADOW-1)
+      (FLAGS RLANDBIT)>
+
+<ROOM LAKE-SHORE
+      (IN ROOMS)
+      (DESC "Lake Shore")
+      (LDESC
+"You are in a wide cavern on the north shore of a small lake. Some
+polished stone steps lead to the southeast and a sheer rock face
+prevents any movement around the lake to the southwest. The cavern is
+dimly lit from above.")
+      (SE TO AQ-VIEW)
+      (DOWN TO AQ-VIEW)
+      (SOUTH "If you really want to enter the lake, you should say so.")
+      (SW "The sheer rock face prevents movement along the lake shore.")
+      (NORTH TO FOGGY-ROOM)
+      (FLAGS ONBIT RLANDBIT)
+      (GLOBAL LAKE STAIRS)
+      (PSEUDO "SHORE" SHORE-PSEUDO "BEACH" SHORE-PSEUDO)>
+
+<ROOM AQ-VIEW
+      (IN ROOMS)
+      (DESC "Aqueduct View")
+      (LDESC
+"This is a small balcony carved into a near-vertical cliff. To the east,
+stretching from north to south, stands a monumental aqueduct supported by
+mighty stone pillars, some of which are starting to crumble from age. You
+feel a sense of loss and sadness as you ponder this once-proud structure and
+the failure of the Empire which created this and other engineering marvels.
+Some stone steps lead up to the northwest.")
+      (NW TO LAKE-SHORE)
+      (UP TO LAKE-SHORE)
+      (DOWN "The drop would be fatal.")
+      (FLAGS RLANDBIT ONBIT)
+      (GLOBAL AQUEDUCT STAIRS)>
+     
+<ROOM ON-LAKE
+      (IN ROOMS)
+      (DESC "On the Lake")
+      (LDESC
+"You are floating on the surface of the lake. The water is ice cold and
+your ability to survive here for long is very questionable. A swim north
+puts you at your starting point. Conditions to the east are poor where
+the lake turns into swamp. The west and south shores are suitable for
+walking, however.")
+      (NORTH TO LAKE-SHORE)
+      (SOUTH TO SOUTH-SHORE)
+      (PSEUDO "SWAMP" SWAMP-PSEUDO)
+      (SE "The swamp is impassable.")
+      (EAST "The swamp is impassable.")
+      (NE "The swamp is impassable.")
+      (WEST TO FAR-SHORE)
+      (NW TO FAR-SHORE)
+      (SW TO SOUTH-SHORE)
+      (DOWN TO IN-LAKE)
+      (FLAGS RLANDBIT NONLANDBIT ONBIT)
+      (ACTION ON-LAKE-F)
+      (GLOBAL LAKE FISH)>
+
+<ROOM IN-LAKE
+      (IN ROOMS)
+      (DESC "Underwater")
+      (LDESC
+"You are below the surface of the lake. It turns out that the lake is quite
+shallow and the bottom is only a few feet below you. Considering the frigid
+temperature of the water, you should probably not plan an extended stay.
+The lake bottom is sandy and a few hearty plants and algae live there.")
+      (UP TO ON-LAKE)
+      (DOWN "You are already at the bottom of the lake.")
+      (NORTH TO IN-LAKE)
+      (SOUTH TO IN-LAKE)
+      (EAST TO IN-LAKE)
+   &nb