moonmist/global.zap

668 lines
15 KiB
Plaintext

.FUNCT LOCAL-GLOBALS-F
CALL REMOTE-VERB?
ZERO? STACK \FALSE
CALL CREEPY?,HERE
ZERO? STACK \?CTR4
CALL OUTSIDE?,HERE
ZERO? STACK /?CCL5
?CTR4: CALL RANDOM-PSEUDO
RSTACK
?CCL5: CALL NOT-HERE,LOCAL-GLOBALS
RSTACK
.FUNCT UPSTAIRS-DOWNSTAIRS,N,TBL,HR,?TMP1
LOC WINNER >HR
EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH /?CCL3
EQUAL? PRSA,V?CLIMB-UP,V?CLIMB-DOWN,V?BOARD \FALSE
?CCL3: FSET? HR,SECRETBIT /FALSE
FSET? HR,WEARBIT \?CCL10
SET 'TBL,WING-STAIRS
JUMP ?CND6
?CCL10: SET 'TBL,TOWER-STAIRS
?CND6: EQUAL? PRSA,V?CLIMB-UP,V?BOARD \?CCL13
GETPT HR,P?UP
ZERO? STACK /?CCL17
CALL DO-WALK,P?UP
RTRUE
?CCL17: GETP HR,P?CHARACTER >N
ZERO? N /FALSE
GET TBL,0 >?TMP1
INC 'N
LESS? ?TMP1,N /FALSE
GET TBL,N >N
CALL PERFORM,V?WALK-TO,N
RTRUE
?CCL13: GETPT HR,P?DOWN
ZERO? STACK /?CCL24
CALL DO-WALK,P?DOWN
RTRUE
?CCL24: GETP HR,P?CHARACTER >N
ZERO? N /FALSE
DEC 'N
LESS? 0,N \FALSE
GET TBL,N >N
CALL PERFORM,V?WALK-TO,N
RTRUE
.FUNCT DO-INSTEAD-OF,OBJ1,OBJ2
EQUAL? PRSI,OBJ2 \?CCL3
CALL PERFORM,PRSA,PRSO,OBJ1
RTRUE
?CCL3: EQUAL? PRSO,OBJ2 \?CCL5
CALL PERFORM,PRSA,OBJ1,PRSI
RTRUE
?CCL5: CALL V-FOO
RSTACK
.FUNCT TURN-F
EQUAL? PRSA,V?USE \FALSE
CALL PERFORM,V?WAIT-FOR,PRSO
RTRUE
.FUNCT IT-F
EQUAL? PRSI,IT \?PRD5
EQUAL? PRSA,V?TELL-ABOUT /?PRG12
EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?PRG12
?PRD5: EQUAL? PRSO,IT \FALSE
EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE
?PRG12: PRINTR """I'm not sure what you're talking about."""
.FUNCT FLOOR-F,OBJ=0,N
EQUAL? PRSA,V?CLIMB-ON \?CCL3
CALL ALREADY,WINNER,STR?278
RSTACK
?CCL3: EQUAL? PRSA,V?THROW-AT,V?PUT \?CCL5
EQUAL? PRSO,MOONMIST /?CCL5
EQUAL? PRSI,FLOOR \?CCL5
MOVE PRSO,HERE
PRINTR "Okay."
?CCL5: EQUAL? PRSA,V?SEARCH-FOR /?CTR11
EQUAL? PRSA,V?SEARCH,V?LOOK-ON,V?EXAMINE \?CCL12
?CTR11: EQUAL? HERE,DRAWING-ROOM \?CCL17
PRINTI "The carpet ends flush with the archway to the "
PRINTD GREAT-HALL
PRINTI ", where the footsteps of visitors have begun to wear it thin. It's a magnificent red Brussels carpet with deep pile and a medieval design."
CRLF
JUMP ?CND15
?CCL17: EQUAL? HERE,GREAT-HALL \?CND15
CALL GREAT-HALL-IS-FLOORED
?CND15: EQUAL? HERE,GARDEN \?CCL23
EQUAL? VARIATION,LORD-C \?CCL23
FSET? CLUE-4,SECRETBIT \?CCL23
SET 'OBJ,CLUE-4
JUMP ?CND21
?CCL23: EQUAL? HERE,DRAWING-ROOM \?CCL28
EQUAL? VARIATION,LORD-C,FRIEND-C \?CCL28
FSET? JEWEL,TOUCHBIT /?CCL28
SET 'OBJ,JEWEL
JUMP ?CND21
?CCL28: EQUAL? HERE,GREAT-HALL \?CND21
EQUAL? VARIATION,DOCTOR-C,PAINTER-C \?CND21
EQUAL? FOUND-IT-PERM,LENS,LENS-2 /?CND21
SET 'OBJ,LENS
?CND21: CALL START-SEARCH,OBJ
RTRUE
?CCL12: CALL ADJ-USED?,W?DRAWING
ZERO? STACK /?CCL37
EQUAL? HERE,DRAWING-ROOM /FALSE
CALL DO-INSTEAD-OF,DRAWING-ROOM,FLOOR
RTRUE
?CCL37: CALL ADJ-USED?,W?GREAT
ZERO? STACK /FALSE
EQUAL? HERE,GREAT-HALL /FALSE
CALL DO-INSTEAD-OF,GREAT-HALL,FLOOR
RTRUE
.FUNCT START-SEARCH,OBJ=0
PRINTI "Nothing suspicious meets your eye after a moment's scrutiny. Do you want to continue?"
CALL YES?
ZERO? STACK \?CCL5
CALL OKAY
RTRUE
?CCL5: SET 'FOUND-IT,OBJ
SET 'FOUND-LOC,HERE
RANDOM 7
CALL QUEUE,I-FOUND-IT,STACK
CALL V-WAIT,8,FALSE-VALUE,TRUE-VALUE
RTRUE
.FUNCT I-FOUND-IT,GARG=0,OBJ
EQUAL? FOUND-LOC,HERE \FALSE
EQUAL? FOUND-IT,JEWEL \?CCL5
MOVE FOUND-IT,HERE
PRINTI "Suddenly you notice a glittering speck. Probing for it with your fingers, you discover a "
PRINTD JEWEL
PRINTC 46
CRLF
JUMP ?CND1
?CCL5: EQUAL? FOUND-IT,LENS \?CCL9
FSET? LENS,SEENBIT /?CCL12
LOC LENS
MOVE LENS-2,STACK
JUMP ?CND10
?CCL12: FSET? LENS-2,SEENBIT /FALSE
SET 'FOUND-IT,LENS-2
LOC LENS
MOVE LENS-1,STACK
REMOVE LENS
?CND10: MOVE FOUND-IT,HERE
PRINTI "Suddenly you find something small, smooth and slippery -- a "
PRINTD FOUND-IT
PRINTI "! Its transparency, of course, made it practically invisible."
ZERO? BUTLER-GHOST-STORY-TOLD /?CND17
PRINTI " No wonder you and the ghost had such a hard time finding it!"
?CND17: CRLF
JUMP ?CND1
?CCL9: ZERO? FOUND-IT \?CCL22
PRINT NOTHING-NEW
RETURN 2
?CCL22: FSET? FOUND-IT,SECRETBIT \?PRG29
CALL DISCOVER,FOUND-IT
JUMP ?CND1
?PRG29: PRINTC 89
PRINT OU-STOP-SEARCHING
PRINTI " when you find"
CALL PRINTT,FOUND-IT
PRINTI ".
"
?CND1: FSET FOUND-IT,TOUCHBIT
FSET FOUND-IT,SEENBIT
EQUAL? FOUND-IT,YOUR-SWITCH /?CND32
FCLEAR FOUND-IT,NDESCBIT
?CND32: EQUAL? FOUND-IT,LENS,LENS-2 \?CND34
SET 'FOUND-IT-PERM,FOUND-IT
?CND34: SET 'FOUND-IT,FALSE-VALUE
RETURN 2
.FUNCT YOU-F,X
EQUAL? WINNER,PLAYER /?CCL3
CALL DO-INSTEAD-OF,WINNER,YOU
RTRUE
?CCL3: EQUAL? PRSA,V?ASK-ABOUT \?CCL5
EQUAL? PRSI,YOU \?CCL5
CALL PERFORM,V?ASK-ABOUT,PRSO,PRSO
RTRUE
?CCL5: EQUAL? PRSA,V?THANKS \FALSE
CALL QCONTEXT-GOOD? >X
ZERO? X /FALSE
CALL PERFORM,V?THANKS,X
RTRUE
.FUNCT WALL-F,OBJ
EQUAL? VARIATION,FRIEND-C \?CCL3
EQUAL? HERE,BASEMENT,CRYPT \?CCL3
CALL BRICKS-F
RSTACK
?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL7
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >OBJ
ZERO? OBJ /?CCL7
CALL DO-INSTEAD-OF,OBJ,WALL
RTRUE
?CCL7: EQUAL? PRSA,V?KNOCK \FALSE
FSET? HERE,WEARBIT \?PRG17
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT
ZERO? STACK /?PRG19
?PRG17: PRINTR "You hear a hollow sound."
?PRG19: PRINTR "Knocking on the walls reveals nothing unusual."
.FUNCT GLOBAL-HERE-F,OBJ,X=0
EQUAL? PRSA,V?WALK-TO,V?SMELL /?CTR2
EQUAL? PRSA,V?SIT,V?LIE,V?EXAMINE \?CCL3
?CTR2: CALL DO-INSTEAD-OF,HERE,GLOBAL-HERE
RTRUE
?CCL3: EQUAL? PRSA,V?PUT-IN,V?PUT \?CCL7
CALL MORE-SPECIFIC
RSTACK
?CCL7: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
IN? MAGAZINE,HERE \?CCL12
FSET? MAGAZINE,NDESCBIT \?CCL12
SET 'X,MAGAZINE
JUMP ?CND10
?CCL12: IN? BRICKS,HERE \?CCL16
FSET? BRICKS,NDESCBIT \?CCL16
SET 'X,BRICKS
JUMP ?CND10
?CCL16: ZERO? PRSI /?CCL20
CALL META-LOC,PRSI
EQUAL? STACK,HERE \?CCL20
SET 'X,PRSI
JUMP ?CND10
?CCL20: FIRST? HERE >OBJ /?PRG24
?PRG24: ZERO? OBJ /?CND10
FSET? OBJ,SECRETBIT \?CCL30
SET 'X,OBJ
JUMP ?CND10
?CCL30: FSET? OBJ,PERSONBIT /?CCL32
FSET? OBJ,CONTBIT /?PRD35
FSET? OBJ,SURFACEBIT \?CCL32
?PRD35: CALL FIND-FLAG,OBJ,SECRETBIT >X
ZERO? X \?CTR31
CALL FIND-FLAG,OBJ,RMUNGBIT >X
ZERO? X /?CCL32
?CTR31: FSET OBJ,OPENBIT
?CND10: CALL START-SEARCH,X
RTRUE
?CCL32: NEXT? OBJ >OBJ /?PRG24
JUMP ?PRG24
.FUNCT CHAIR-F
EQUAL? PRSA,V?BOARD,V?CLIMB-ON,V?SIT \?CCL3
CALL WONT-HELP
RSTACK
?CCL3: CALL RANDOM-PSEUDO
RSTACK
.FUNCT CLOTHES-FCN
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE \?CCL3
EQUAL? PRSO,TWEED-OUTFIT \?CCL6
PRINTI "These are sensible clothes for this clammy climate: your new tweed "
ZERO? GENDER-KNOWN \?PRG14
PRINTI "suit"
JUMP ?PRG23
?PRG14: PRINTI "blazer and "
FSET? PLAYER,FEMALE \?PRG21
PRINTI "skirt"
JUMP ?PRG23
?PRG21: PRINTI "pants"
?PRG23: PRINTR ", with woolen sweater, should keep you warm enough."
?CCL6: EQUAL? PRSO,EXERCISE-OUTFIT \?CCL26
PRINTI "This is your favorite outfit for workouts: a cotton sweatsuit with a sporty "
CALL PRINT-COLOR
ZERO? STACK /?PRG33
PRINTC 32
?PRG33: PRINTR "stripe."
?CCL26: EQUAL? PRSO,DINNER-OUTFIT \?PRG70
ZERO? GENDER-KNOWN \?PRG42
PRINTI "You have a decent formal ensemble, with frills in the right places"
JUMP ?PRG53
?PRG42: PRINTI "Your new "
FSET? PLAYER,FEMALE \?PRG49
PRINTI "floor-length dinner gown"
JUMP ?PRG51
?PRG49: PRINTI "tuxedo"
?PRG51: PRINTI " is particularly good-looking"
?PRG53: PRINTI " and a perfect fit"
ZERO? VARIATION /?PRG68
PRINTI ", "
FSET? PLAYER,FEMALE \?PRG64
PRINTI "not to mention that it's all"
JUMP ?PRG66
?PRG64: PRINTI "with shirt and accessories"
?PRG66: PRINTI " in "
CALL PRINT-COLOR
?PRG68: PRINTR "."
?PRG70: PRINTI "Your new "
CALL PRINT-COLOR
ZERO? STACK /?PRG76
PRINTC 32
?PRG76: PRINTD SLEEP-OUTFIT
PRINTI " is "
ZERO? GENDER-KNOWN \?CCL80
PRINTR "nothing to write home about, but it is so-o-o comfy for sleeping."
?CCL80: FSET? PLAYER,FEMALE \?PRG87
PRINTR "made of fine Chinese silk."
?PRG87: PRINTR "decorated with a Union Jack flag."
?CCL3: EQUAL? PRSA,V?DISEMBARK \?CCL90
CALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
?CCL90: EQUAL? PRSA,V?EMPTY \FALSE
CALL META-LOC,LUGGAGE
EQUAL? STACK,HERE \?CCL95
CALL PERFORM,V?EMPTY,LUGGAGE
RTRUE
?CCL95: CALL NOT-HERE,LUGGAGE
RSTACK
.FUNCT SLEEP-GLOBAL-F
EQUAL? PRSA,V?DRESS \?CCL3
CALL META-LOC,SLEEP-OUTFIT
EQUAL? HERE,STACK \FALSE
CALL PERFORM,V?WEAR,SLEEP-OUTFIT
RTRUE
?CCL3: EQUAL? PRSA,V?WALK-TO \FALSE
CALL PERFORM,V?FAINT
RTRUE
.FUNCT ROB,WHAT,THIEF,TELL?=0,N,X,TOLD?=0
FIRST? WHAT >X /?PRG2
?PRG2: ZERO? X /TRUE
NEXT? X >N /?BOGUS6
?BOGUS6: ZERO? N \?CND7
ZERO? TOLD? /?CND7
ZERO? TELL? /?CND7
PRINTI " and"
?CND7: SET 'TOLD?,TRUE-VALUE
ZERO? TELL? /?CND14
CALL PRINTT,X
ZERO? N /?PRG23
PRINTC 44
JUMP ?CND14
?PRG23: PRINTI ". "
?CND14: MOVE X,THIEF
SET 'X,N
JUMP ?PRG2
.FUNCT LIGHT-GLOBAL-F,P
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \FALSE
CALL CREEPY?,HERE
ZERO? STACK /?CCL8
CALL ACCESSIBLE?,LAMP
ZERO? STACK /?CCL11
CALL PERFORM,PRSA,LAMP
RTRUE
?CCL11: CALL NOT-HERE,LIGHT-GLOBAL
RSTACK
?CCL8: CALL OUTSIDE?,HERE
ZERO? STACK /?CCL13
PRINTR "You can't reach it from here."
?CCL13: EQUAL? PRSA,V?LAMP-ON \?CCL18
FSET? HERE,ONBIT \?CCL21
CALL ALREADY,LIGHT-GLOBAL,STR?64
RSTACK
?CCL21: FSET HERE,ONBIT
CALL OKAY,LIGHT-GLOBAL,STR?64
RSTACK
?CCL18: EQUAL? PRSA,V?LAMP-OFF \FALSE
FSET? HERE,ONBIT /?CCL26
CALL ALREADY,LIGHT-GLOBAL,STR?65
RSTACK
?CCL26: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,PLAYER >P
ZERO? P /?CCL28
PRINTD P
PRINTR " says, ""Please don't leave us in the dark."""
?CCL28: FCLEAR HERE,ONBIT
CALL OKAY,LIGHT-GLOBAL,STR?65
RSTACK
.FUNCT HAUNTING-F
EQUAL? PRSA,V?PLAY,V?LAMP-ON \FALSE
CALL PERFORM,PRSA,COMPUTER
RTRUE
.FUNCT KEYHOLE-F,P,RM
CALL REMOTE-VERB?
ZERO? STACK /?CCL3
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE
?CCL3: CALL ADJ-USED?,FALSE-VALUE
ZERO? STACK /?CCL7
CALL ZMEMQ,HERE,CHAR-ROOM-TABLE
ZERO? STACK /?CCL10
GETPT HERE,P?OUT
GETB STACK,REXIT >RM
JUMP ?CND1
?CCL10: EQUAL? HERE,CORR-2 /?PRG15
EQUAL? HERE,WEST-HALL,GALLERY,EAST-HALL \?CCL12
?PRG15: PRINT YOU-DIDNT-SAY-W
PRINTI "hose "
PRINTD KEYHOLE
PRINTR "!]"
?CCL12: CALL NOT-HERE,KEYHOLE
RTRUE
?CCL7: CALL ADJ-USED?
CALL ZMEMQ,STACK,CHAR-POSS-TABLE >P
ZERO? P /?CND1
GET CHAR-ROOM-TABLE,P >RM
EQUAL? HERE,RM \?CCL21
GETPT HERE,P?OUT
GETB STACK,REXIT >RM
?CND1: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH /?CCL25
EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-INSIDE,V?EXAMINE \FALSE
?CCL25: EQUAL? JACK-ROOM,HERE,RM \?CCL30
EQUAL? VARIATION,LORD-C \?CCL30
PRINTI "You see a microphone with its wires leading toward the "
PRINTD CREST
PRINTR "."
?CCL21: GETPT RM,P?OUT
GETB STACK,REXIT
EQUAL? HERE,STACK /?CND1
CALL NOT-HERE,KEYHOLE
RTRUE
?CCL30: CALL ROOM-PEEK,RM,TRUE-VALUE
RTRUE
.FUNCT HANDS-F,P,A
CALL FIND-BODY,HANDS >P
ZERO? P /TRUE
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?KISS \?CCL7
FSET? P,FEMALE \?CCL10
ZERO? GENDER-KNOWN /?CCL10
FSET? PLAYER,FEMALE /?CCL10
CALL PERFORM,V?HELLO,P
RTRUE
?CCL10: CALL PERFORM,V?KISS,P
RTRUE
?CCL7: EQUAL? PRSA,V?TAKE,V?SHAKE \FALSE
EQUAL? PRSO,HANDS \FALSE
ZERO? PRSI /?CND18
SET 'P,PRSI
?CND18: CALL PERFORM,V?HELLO,P
RTRUE
.FUNCT HEAD-F,P,P2
CALL FIND-BODY,HEAD >P
ZERO? P /TRUE
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?NOD \?CCL7
CALL PERFORM,V?YES
RTRUE
?CCL7: EQUAL? PRSA,V?SHAKE \FALSE
CALL PERFORM,V?NO
RTRUE
.FUNCT EYE-F,P,P2
CALL FIND-BODY,EYE >P
ZERO? P /TRUE
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?OPEN \?CCL7
SET 'WINNER,PLAYER
CALL PERFORM,V?ALARM,P
RTRUE
?CCL7: EQUAL? PRSA,V?CLOSE \?CCL9
SET 'WINNER,P
CALL PERFORM,V?FAINT
RTRUE
?CCL9: EQUAL? PRSA,V?LOOK-INSIDE,V?FIND,V?EXAMINE \FALSE
EQUAL? P,PLAYER \?CCL14
FSET? HERE,WORNBIT /?CCL14
CALL NOT-HERE,MIRROR-GLOBAL
RSTACK
?CCL14: EQUAL? GHOST-NEW,P \?CCL18
CALL PERFORM,PRSA,GHOST-NEW
RTRUE
?CCL18: FSET? LENS,SEENBIT /?PRG37
FSET? P,MUNGBIT \?CCL24
CALL HE-SHE-IT,P,TRUE-VALUE
PRINTR " has closed eyes."
?CCL24: GETP P,P?CHARACTER
EQUAL? VARIATION,STACK \?CCL28
CALL HE-SHE-IT,P,TRUE-VALUE
PRINTR " turns away from you."
?CCL28: LESS? BED-TIME,PRESENT-TIME \?PRG35
CALL HE-SHE-IT,P,TRUE-VALUE,STR?84
PRINTR " sleepy."
?PRG35: CALL HE-SHE-IT,P,TRUE-VALUE,STR?218
PRINTR " at you."
?PRG37: CALL HE-SHE-IT,P,TRUE-VALUE,STR?1
EQUAL? P,DEALER \?PRG43
EQUAL? VARIATION,PAINTER-C \?PRG45
?PRG43: PRINTI " not"
?PRG45: PRINTI " wearing a "
PRINTD LENS
PRINTR "."
.FUNCT OTHER-OUTFIT-F,P,P2
CALL FIND-BODY,OTHER-OUTFIT >P
ZERO? P /TRUE
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?LOOK-INSIDE,V?FIND,V?EXAMINE \?CCL7
EQUAL? GHOST-NEW,P \FALSE
CALL PERFORM,PRSA,GHOST-NEW
RTRUE
?CCL7: EQUAL? PRSA,V?TAKE-OFF,V?REMOVE,V?DISEMBARK \FALSE
CALL YOU-SHOULDNT
RTRUE
.FUNCT FIND-BODY,OBJ,A,P
CALL ADJ-USED? >A
ZERO? A \?CCL3
PRINT I-ASSUME
PRINTC 32
EQUAL? PRSA,V?SEARCH-FOR,V?FIND,V?CLOSE /?CTR7
EQUAL? PRSA,V?SLAP /?PRD12
EQUAL? PRSA,V?MUNG,V?KILL,V?ATTACK \?CCL8
?PRD12: ZERO? NOW-PRSI /?CCL8
?CTR7: SET 'P,PLAYER
PRINTI "your"
JUMP ?CND6
?CCL8: EQUAL? PRSA,V?SHAKE \?PRD20
ZERO? PRSI /?PRD20
SET 'P,PRSI
FSET? P,PERSONBIT /?PRG25
?PRD20: CALL QCONTEXT-GOOD? >P
ZERO? P \?PRG25
CALL FIND-FLAG-HERE,PERSONBIT,PLAYER >P
ZERO? P /?CCL18
?PRG25: PRINTD P
PRINTI "'s"
JUMP ?CND6
?CCL18: SET 'P,PLAYER
PRINTI "your"
?CND6: GETP P,P?CHARACTER
ADD 1,STACK
GET CHAR-POSS-TABLE,STACK
PUT P-ADJW,NOW-PRSI,STACK
PRINTC 32
GET P-NAMW,NOW-PRSI >A
ZERO? A /?PRG34
PRINTB A
JUMP ?PRG36
?PRG34: PRINTD OBJ
?PRG36: PRINTI ".]"
CRLF
JUMP ?CND1
?CCL3: CALL ZMEMQ,A,CHAR-POSS-TABLE >P
ZERO? P /?CCL39
SUB P,1
GET CHARACTER-TABLE,STACK >P
JUMP ?CND1
?CCL39: EQUAL? A,W?HER \?CCL41
SET 'P,P-HER-OBJECT
JUMP ?CND1
?CCL41: EQUAL? A,W?HIS \?CND1
SET 'P,P-HIM-OBJECT
?CND1: ZERO? P \?CND43
CALL DONT-UNDERSTAND
RFALSE
?CND43: CALL THIS-IS-IT,P
CALL META-LOC,P
EQUAL? STACK,HERE /?CCL47
CALL NOT-HERE,P
RFALSE
?CCL47: CALL DIVESTMENT?,OBJ
ZERO? STACK /?CCL49
CALL HAR-HAR
RFALSE
?CCL49: RETURN P
.FUNCT PASSAGE-F,RM
CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >RM
EQUAL? PRSA,V?WALK-TO,V?TAKE \?CCL3
CALL PERFORM,V?THROUGH,PRSO
RTRUE
?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL5
ZERO? RM /?CCL5
CALL DO-INSTEAD-OF,RM,PASSAGE
RTRUE
?CCL5: FSET? HERE,SECRETBIT \?CCL9
CALL DO-INSTEAD-OF,HERE,PASSAGE
RTRUE
?CCL9: CALL REMOTE-VERB?
ZERO? STACK \FALSE
ZERO? RM /?CCL14
CALL DOOR-ROOM,HERE,RM >RM
ZERO? RM /?CCL14
FSET? RM,SEENBIT \?CCL14
CALL DO-INSTEAD-OF,RM,PASSAGE
RTRUE
?CCL14: CALL GENERIC-CLOSET,0 >RM
ZERO? RM /?CCL19
CALL DO-INSTEAD-OF,RM,PASSAGE
RTRUE
?CCL19: CALL NOT-HERE,PASSAGE
RSTACK
.FUNCT CORPSE-F
EQUAL? PRSA,V?FIND \FALSE
CALL WHO-KNOWS?,CORPSE
RSTACK
.FUNCT UNDRESSED-F
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?TAKE /FALSE
EQUAL? PRSA,V?LOOK-ON /?CTR6
EQUAL? PRSA,V?LOOK-INSIDE,V?EXAMINE,V?SEARCH-FOR /?CTR6
EQUAL? PRSA,V?SEARCH,V?CLOSE,V?OPEN \?CCL7
?CTR6: CALL GLOBAL-IN?,DRESSING-TABLE-LG,HERE
ZERO? STACK /?CCL13
CALL DO-INSTEAD-OF,DRESSING-TABLE-LG,UNDRESSED
RTRUE
?CCL13: CALL NOT-HERE,DRESSING-TABLE-LG
RSTACK
?CCL7: CALL DONT-UNDERSTAND
RSTACK
.FUNCT ARTIFACT-F
ZERO? TREASURE-FOUND /?CCL3
CALL DO-INSTEAD-OF,TREASURE,ARTIFACT
RTRUE
?CCL3: EQUAL? PRSA,V?TAKE-TO,V?SSHOW,V?SHOW /?CCL5
CALL REMOTE-VERB?
ZERO? STACK \FALSE
?CCL5: CALL NOT-FOUND,ARTIFACT
RTRUE
.FUNCT TIMES-UP
PRINTI "At first light, the police arrive and take over the investigation."
CRLF
CALL FINISH
RSTACK
.ENDI