mirror of
https://github.com/historicalsource/moonmist
synced 2024-06-01 15:48:25 +03:00
4860 lines
96 KiB
Plaintext
4860 lines
96 KiB
Plaintext
|
|
|
|
.FUNCT TRANSCRIPT,STR
|
|
PRINTI "Here "
|
|
PRINT STR
|
|
PRINTR "s a transcript of interaction with"
|
|
|
|
|
|
.FUNCT V-SCRIPT
|
|
GET 0,8
|
|
BOR STACK,1
|
|
PUT 0,8,STACK
|
|
CALL TRANSCRIPT,STR?33
|
|
CALL V-VERSION
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNSCRIPT
|
|
CALL TRANSCRIPT,STR?34
|
|
CALL V-VERSION
|
|
GET 0,8
|
|
BAND STACK,-2
|
|
PUT 0,8,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$VERIFY
|
|
ZERO? PRSO /?PRG11
|
|
EQUAL? PRSO,INTNUM \?CCL6
|
|
EQUAL? P-NUMBER,105 \?CCL6
|
|
PRINTN SERIAL
|
|
CRLF
|
|
RTRUE
|
|
?CCL6: CALL DONT-UNDERSTAND
|
|
RSTACK
|
|
?PRG11: PRINTI "Verifying disk..."
|
|
CRLF
|
|
VERIFY \?PRG18
|
|
PRINTR "The disk is correct."
|
|
?PRG18: PRINTR "Oh, oh! The disk seems to have a defect. Try verifying again. (If you've already done that, the disk surely has a defect.)"
|
|
|
|
|
|
.FUNCT YOU-WILL-GET,STR
|
|
PRINTI "[Okay, you will get "
|
|
PRINT STR
|
|
PRINTR " descriptions.]"
|
|
|
|
|
|
.FUNCT V-SUPER-BRIEF
|
|
SET 'VERBOSITY,0
|
|
CALL YOU-WILL-GET,STR?35
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BRIEF
|
|
SET 'VERBOSITY,1
|
|
CALL YOU-WILL-GET,STR?36
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-VERBOSE
|
|
SET 'VERBOSITY,2
|
|
CALL YOU-WILL-GET,STR?37
|
|
CALL V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-INVENTORY
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?1
|
|
PRINTI " holding"
|
|
CALL PRINT-CONTENTS,WINNER
|
|
ZERO? STACK \?PRG7
|
|
PRINTI " nothing"
|
|
?PRG7: PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-QUIT,ASK?=1
|
|
CALL V-SCORE
|
|
ZERO? ASK? \?PRG3
|
|
QUIT
|
|
?PRG3: PRINTI "[If you want to continue from this point at another time, you must ""SAVE"" first. Do you want to stop the story now?]"
|
|
CALL YES?
|
|
ZERO? STACK /?PRG8
|
|
QUIT
|
|
RTRUE
|
|
?PRG8: PRINTR "Okay."
|
|
|
|
|
|
.FUNCT V-RESTART
|
|
CALL V-SCORE
|
|
PRINTI "[Do you want to start over from the beginning?]"
|
|
CALL YES?
|
|
ZERO? STACK /?PRG6
|
|
RESTART
|
|
CALL TELL-FAILED
|
|
RSTACK
|
|
?PRG6: PRINTR "Okay."
|
|
|
|
|
|
.FUNCT TELL-FAILED
|
|
PRINTR "[Sorry, but it didn't work. Maybe your instruction manual or Reference Card can tell you why.]"
|
|
|
|
|
|
.FUNCT V-SAVE,X
|
|
PUTB OOPS-INBUF,1,0
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
SAVE /?PRD4
|
|
PUSH 0
|
|
JUMP ?PRD5
|
|
?PRD4: PUSH 1
|
|
?PRD5: SET 'X,STACK
|
|
ZERO? X /?CCL3
|
|
PRINTI "[Okay.]"
|
|
CRLF
|
|
CALL V-FIRST-LOOK
|
|
RTRUE
|
|
?CCL3: CALL TELL-FAILED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RESTORE
|
|
RESTORE /FALSE
|
|
CALL TELL-FAILED
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-FIRST-LOOK
|
|
CALL DESCRIBE-ROOM
|
|
ZERO? STACK /FALSE
|
|
ZERO? VERBOSITY /FALSE
|
|
CALL DESCRIBE-OBJECTS
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-VERSION,CNT=17,V,IDX=18
|
|
GET 0,1
|
|
BAND STACK,2047 >V
|
|
PRINTD MOONMIST
|
|
PRINTI "
|
|
Infocom interactive fiction - a mystery story
|
|
Copyright (c) 1986 by Infocom, Inc. All rights reserved."
|
|
CRLF
|
|
PRINTD MOONMIST
|
|
PRINTI " is a trademark of Infocom, Inc.
|
|
Release number "
|
|
PRINTN V
|
|
PRINTI " / Serial number "
|
|
?PRG3: GETB 0,IDX
|
|
PRINTC STACK
|
|
IGRTR? 'IDX,23 \?PRG3
|
|
ZERO? VARIATION /?CND7
|
|
PRINTI " / "
|
|
GET COLOR-WORDS,VARIATION
|
|
PRINTB STACK
|
|
PRINTR " variation"
|
|
?CND7: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCORE,N=0,I,FC
|
|
GET FOUND-COSTUME,PLAYER-C >FC
|
|
ZERO? CONFESSED /?PRG8
|
|
ZERO? TREASURE-FOUND /?PRG8
|
|
ZERO? FC /?PRG8
|
|
PRINTI "[Congratulations, "
|
|
CALL TITLE-NAME
|
|
PRINTR "! You've won the game!]"
|
|
?PRG8: PRINTI "[Well, so far you've "
|
|
GETB LAST-NAME,0
|
|
ZERO? STACK \?PRG14
|
|
PRINTR "just gotten started.]"
|
|
?PRG14: PRINTI "met "
|
|
FSET? LORD,TOUCHBIT \?CND16
|
|
PRINTD LORD
|
|
PRINTI " and "
|
|
?CND16: GET GUEST-TABLE,0 >I
|
|
?PRG20: GET GUEST-TABLE,I
|
|
FSET? STACK,TOUCHBIT \?CND22
|
|
INC 'N
|
|
?CND22: DLESS? 'I,1 \?PRG20
|
|
GET GUEST-TABLE,0
|
|
EQUAL? N,STACK \?CCL28
|
|
PRINTI "all"
|
|
JUMP ?PRG41
|
|
?CCL28: ZERO? N \?CCL32
|
|
PRINTI "none"
|
|
JUMP ?PRG41
|
|
?CCL32: EQUAL? N,1 \?PRG39
|
|
PRINTI "one"
|
|
JUMP ?PRG41
|
|
?PRG39: PRINTI "some"
|
|
?PRG41: PRINTI " of the guests"
|
|
ZERO? WASHED /?CND43
|
|
PRINTI ", washed up from your trip"
|
|
?CND43: ZERO? WRONG-OUTFIT /?CND47
|
|
PRINTI ", worn the "
|
|
EQUAL? WRONG-OUTFIT,1 \?PRG56
|
|
PRINTI "proper"
|
|
JUMP ?PRG58
|
|
?PRG56: PRINTI "wrong"
|
|
?PRG58: PRINTI " outfit to dinner"
|
|
?CND47: GET FOUND-PASSAGES,PLAYER-C
|
|
ZERO? STACK /?CND60
|
|
PRINTI ", discovered "
|
|
PRINTD PASSAGE
|
|
PRINTC 115
|
|
?CND60: FSET? GHOST-NEW,TOUCHBIT \?CND64
|
|
PRINTI ", seen the ghost"
|
|
?CND64: ZERO? FC /?CND68
|
|
PRINTI ", "
|
|
PRINT IDENTIFIED-THE-GHOST
|
|
?CND68: ZERO? EVIDENCE-FOUND /?CND72
|
|
PRINTI ", discovered evidence"
|
|
?CND72: ZERO? CONFESSED /?CND76
|
|
PRINTI ", "
|
|
PRINT ARRESTED-THE-VILLAIN
|
|
?CND76: ZERO? TREASURE-FOUND /?PRG84
|
|
PRINTI ", discovered the "
|
|
PRINTD ARTIFACT
|
|
?PRG84: PRINTI "... "
|
|
ZERO? N \?PRG91
|
|
PRINTI "and"
|
|
JUMP ?PRG93
|
|
?PRG91: PRINTI "but"
|
|
?PRG93: PRINTI " you haven't "
|
|
ZERO? TREASURE-FOUND \?CND95
|
|
PRINTI "found the "
|
|
PRINTD ARTIFACT
|
|
?CND95: ZERO? EVIDENCE-FOUND \?CCL101
|
|
ZERO? TREASURE-FOUND \?PRG106
|
|
PRINTI " nor "
|
|
?PRG106: PRINTI "enough evidence"
|
|
ZERO? VILLAIN-KNOWN? \?PRG112
|
|
ZERO? FC /?CND99
|
|
?PRG112: PRINTI " of why "
|
|
EQUAL? VILLAIN-PER,LOVER \?PRG121
|
|
ZERO? LOVER-SAID /?PRG121
|
|
PRINTD LORD
|
|
PRINTI " killed "
|
|
PRINTD COUSIN
|
|
JUMP ?CND99
|
|
?PRG121: PRINTD VILLAIN-PER
|
|
PRINTI " haunted "
|
|
PRINTD CASTLE
|
|
JUMP ?CND99
|
|
?CCL101: ZERO? CONFESSED \?CND99
|
|
ZERO? TREASURE-FOUND \?PRG128
|
|
PRINTI " nor "
|
|
?PRG128: PRINT ARRESTED-THE-VILLAIN
|
|
?CND99: ZERO? FC \?PRG141
|
|
ZERO? TREASURE-FOUND /?PRG137
|
|
ZERO? EVIDENCE-FOUND /?PRG137
|
|
ZERO? CONFESSED \?PRG139
|
|
?PRG137: PRINTI " nor "
|
|
?PRG139: PRINT IDENTIFIED-THE-GHOST
|
|
?PRG141: PRINTR "!]"
|
|
|
|
|
|
.FUNCT YES?,WORD,VAL
|
|
?PRG1: PRINTI "
|
|
>"
|
|
READ YES-INBUF,YES-LEXV
|
|
GETB YES-LEXV,P-LEXWORDS
|
|
ZERO? STACK /?PRG19
|
|
GET YES-LEXV,P-LEXSTART >WORD
|
|
ZERO? WORD /?PRG19
|
|
CALL WT?,WORD,64,1 >VAL
|
|
EQUAL? VAL,ACT?YES \?CCL9
|
|
SET 'VAL,TRUE-VALUE
|
|
RETURN VAL
|
|
?CCL9: EQUAL? VAL,ACT?NO /?CTR10
|
|
EQUAL? WORD,W?N \?CCL11
|
|
?CTR10: SET 'VAL,FALSE-VALUE
|
|
RETURN VAL
|
|
?CCL11: EQUAL? VAL,ACT?RESTART \?CCL15
|
|
CALL V-RESTART
|
|
JUMP ?PRG19
|
|
?CCL15: EQUAL? VAL,ACT?RESTORE \?CCL17
|
|
CALL V-RESTORE
|
|
JUMP ?PRG19
|
|
?CCL17: EQUAL? VAL,ACT?QUIT \?PRG19
|
|
CALL V-QUIT
|
|
?PRG19: PRINTI "[Please type YES or NO.]"
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT NO-NEED,STR=0,OBJ=0
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?5
|
|
PRINTI "n't need to "
|
|
ZERO? STR /?CCL5
|
|
PRINT STR
|
|
JUMP ?CND3
|
|
?CCL5: CALL VERB-PRINT
|
|
?CND3: EQUAL? STR,STR?40,STR?41 \?CCL10
|
|
PRINTI " in that "
|
|
PRINTD INTDIR
|
|
JUMP ?PRG19
|
|
?CCL10: ZERO? OBJ /?PRG17
|
|
CALL PRINTT,OBJ
|
|
JUMP ?PRG19
|
|
?PRG17: CALL PRINTT,PRSO
|
|
?PRG19: PRINTR ".)"
|
|
|
|
|
|
.FUNCT YOU-CANT,STR=0,WHILE=0,STR1=0
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE
|
|
PRINTI " can't "
|
|
ZERO? STR \?PRG6
|
|
CALL VERB-PRINT
|
|
JUMP ?CND3
|
|
?PRG6: PRINT STR
|
|
?CND3: EQUAL? STR,STR?40,STR?41 \?CCL10
|
|
PRINTI " in that "
|
|
PRINTD INTDIR
|
|
JUMP ?PRG49
|
|
?CCL10: EQUAL? PRSO,PSEUDO-OBJECT \?CCL15
|
|
PRINTI " it"
|
|
JUMP ?CND13
|
|
?CCL15: EQUAL? PRSO,BUST \?CCL19
|
|
CALL NOUN-USED?,W?TAPE
|
|
ZERO? STACK /?CCL19
|
|
EQUAL? STR,STR?42 /?PRG25
|
|
EQUAL? STR,STR?43,STR?44,STR?45 \?CCL19
|
|
?PRG25: PRINTI " the tape"
|
|
JUMP ?CND13
|
|
?CCL19: EQUAL? PRSO,FLOOR \?PRG34
|
|
CALL OUTSIDE?,HERE
|
|
ZERO? STACK /?PRG34
|
|
LOC WINNER
|
|
EQUAL? STACK,CAR /?PRG34
|
|
PRINTI " the ground"
|
|
JUMP ?CND13
|
|
?PRG34: CALL PRINTT,PRSO
|
|
?CND13: ZERO? STR1 /?PRG49
|
|
PRINTI " while"
|
|
ZERO? WHILE /?PRG45
|
|
CALL HE-SHE-IT,WHILE,0,STR?1
|
|
JUMP ?PRG47
|
|
?PRG45: CALL HE-SHE-IT,PRSO,0,STR?1
|
|
?PRG47: PRINTC 32
|
|
PRINT STR1
|
|
?PRG49: PRINTR ".)"
|
|
|
|
|
|
.FUNCT YOU-SHOULDNT,PREP=0
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE
|
|
PRINTI " shouldn't "
|
|
CALL VERB-PRINT
|
|
CALL PRINTT,PRSO
|
|
ZERO? PREP /?PRG9
|
|
PRINT PREP
|
|
CALL PRINTT,PRSI
|
|
?PRG9: PRINTR ".)"
|
|
|
|
|
|
.FUNCT TELL-BEING-WORN,OBJ
|
|
FSET? OBJ,WORNBIT \FALSE
|
|
PRINTI " (actually, wearing it)"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRINT-CONTENTS,THING,OBJ,NXT,1ST?=1,VAL=0
|
|
FIRST? THING >OBJ /?PRG1
|
|
?PRG1: ZERO? OBJ /?REP2
|
|
NEXT? OBJ >NXT /?KLU36
|
|
?KLU36: FSET? OBJ,INVISIBLE /?CCL7
|
|
FSET? OBJ,NDESCBIT /?CCL7
|
|
EQUAL? OBJ,WINNER \?CND6
|
|
?CCL7: MOVE OBJ,INTDIR
|
|
?CND6: SET 'OBJ,NXT
|
|
JUMP ?PRG1
|
|
?REP2: FIRST? THING >OBJ /?KLU37
|
|
?KLU37: ZERO? OBJ \?PRG18
|
|
EQUAL? THING,PLAYER /?CND11
|
|
PRINTI " nothing "
|
|
CALL PICK-ONE-NEW,YAWNS
|
|
PRINT STACK
|
|
?CND11: CALL ROB,INTDIR,THING
|
|
RETURN VAL
|
|
?PRG18: ZERO? OBJ /?CND11
|
|
NEXT? OBJ >NXT /?KLU38
|
|
?KLU38: ZERO? 1ST? /?CCL25
|
|
SET 'VAL,TRUE-VALUE
|
|
SET '1ST?,FALSE-VALUE
|
|
JUMP ?PRG33
|
|
?CCL25: ZERO? NXT /?PRG31
|
|
PRINTC 44
|
|
JUMP ?PRG33
|
|
?PRG31: PRINTI " and"
|
|
?PRG33: CALL PRINTT,OBJ
|
|
CALL TELL-BEING-WORN,OBJ
|
|
CALL THIS-IS-IT,OBJ
|
|
FCLEAR OBJ,SECRETBIT
|
|
FSET OBJ,SEENBIT
|
|
SET 'OBJ,NXT
|
|
JUMP ?PRG18
|
|
|
|
|
|
.FUNCT DESCRIBE-OBJECTS,THING=0,OBJ,NXT,STR,VAL=0,HE=0,SHE=0,FIRST=1,TWO?=0,IT?=0,ANY?=0
|
|
ZERO? THING \?CND1
|
|
SET 'THING,HERE
|
|
?CND1: ZERO? LIT \?CND3
|
|
CALL TOO-DARK
|
|
RTRUE
|
|
?CND3: FIRST? THING >OBJ /?KLU170
|
|
?KLU170: ZERO? OBJ /FALSE
|
|
?PRG7: ZERO? OBJ /?REP8
|
|
NEXT? OBJ >NXT /?KLU171
|
|
?KLU171: FSET? OBJ,INVISIBLE /?CCL13
|
|
FSET? OBJ,NDESCBIT /?CCL13
|
|
EQUAL? OBJ,WINNER /?CCL13
|
|
FSET? OBJ,PERSONBIT \?PRD18
|
|
FSET? OBJ,RMUNGBIT /?CCL13
|
|
?PRD18: LOC PLAYER
|
|
EQUAL? OBJ,STACK \?CND12
|
|
?CCL13: FCLEAR OBJ,RMUNGBIT
|
|
MOVE OBJ,PSEUDO-OBJECT
|
|
?CND12: SET 'OBJ,NXT
|
|
JUMP ?PRG7
|
|
?REP8: EQUAL? THING,HERE \?CND22
|
|
SET 'NXT,GHOST-NEW-C
|
|
?PRG24: PUT TOUCHED-LDESCS,NXT,0
|
|
DLESS? 'NXT,1 \?PRG24
|
|
SET 'NXT,0
|
|
?PRG28: IGRTR? 'NXT,GHOST-NEW-C /?REP29
|
|
GET CHARACTER-TABLE,NXT >OBJ
|
|
IN? OBJ,HERE \?PRG28
|
|
PUT FOLLOW-LOC,NXT,HERE
|
|
GETP OBJ,P?DESCFCN
|
|
CALL STACK,M-OBJDESC >VAL
|
|
FSET OBJ,SEENBIT
|
|
EQUAL? VAL,M-FATAL /?CCL35
|
|
ZERO? ANY? \?CND34
|
|
?CCL35: SET 'ANY?,VAL
|
|
?CND34: FSET? OBJ,FEMALE \?CCL40
|
|
ZERO? SHE \?CCL43
|
|
SET 'SHE,OBJ
|
|
JUMP ?CND38
|
|
?CCL43: SET 'SHE,1
|
|
JUMP ?CND38
|
|
?CCL40: ZERO? HE \?CCL46
|
|
SET 'HE,OBJ
|
|
JUMP ?CND38
|
|
?CCL46: SET 'HE,1
|
|
?CND38: MOVE OBJ,PSEUDO-OBJECT
|
|
JUMP ?PRG28
|
|
?REP29: SET 'NXT,0
|
|
?PRG47: IGRTR? 'NXT,GHOST-NEW-C /?REP48
|
|
GET TOUCHED-LDESCS,NXT >OBJ
|
|
ZERO? OBJ /?PRG47
|
|
SET 'FIRST,TRUE-VALUE
|
|
GET CHARACTER-TABLE,NXT >STR
|
|
CALL START-SENTENCE,STR
|
|
SET 'STR,NXT
|
|
?PRG55: IGRTR? 'STR,GHOST-NEW-C \?CCL59
|
|
ZERO? FIRST /?PRG65
|
|
PRINTI " is "
|
|
JUMP ?PRG67
|
|
?PRG65: PRINTI " are "
|
|
?PRG67: GET LDESC-STRINGS,OBJ
|
|
PRINT STACK
|
|
PRINTC 46
|
|
CRLF
|
|
JUMP ?PRG47
|
|
?CCL59: GET TOUCHED-LDESCS,STR
|
|
EQUAL? OBJ,STACK \?PRG55
|
|
PUT TOUCHED-LDESCS,STR,0
|
|
SET 'FIRST,FALSE-VALUE
|
|
PRINTI " and"
|
|
GET CHARACTER-TABLE,STR
|
|
CALL PRINTT,STACK
|
|
JUMP ?PRG55
|
|
?REP48: EQUAL? SHE,0,1 /?CCL74
|
|
CALL THIS-IS-IT,SHE
|
|
JUMP ?CND72
|
|
?CCL74: EQUAL? SHE,1 \?CND72
|
|
SET 'P-HER-OBJECT,FALSE-VALUE
|
|
?CND72: EQUAL? HE,0,1 /?CCL78
|
|
CALL THIS-IS-IT,HE
|
|
JUMP ?CND76
|
|
?CCL78: EQUAL? HE,1 \?CND76
|
|
SET 'P-HIM-OBJECT,FALSE-VALUE
|
|
?CND76: SET 'FIRST,TRUE-VALUE
|
|
FIRST? THING >OBJ /?PRG80
|
|
?PRG80: ZERO? OBJ /?REP81
|
|
NEXT? OBJ >NXT /?KLU173
|
|
?KLU173: GETP OBJ,P?DESCFCN >STR
|
|
ZERO? STR /?CND85
|
|
CALL STR,M-OBJDESC >VAL
|
|
EQUAL? VAL,M-FATAL /?CCL88
|
|
ZERO? ANY? \?CND87
|
|
?CCL88: SET 'ANY?,VAL
|
|
?CND87: CALL THIS-IS-IT,OBJ
|
|
FSET OBJ,SEENBIT
|
|
MOVE OBJ,PSEUDO-OBJECT
|
|
?CND85: SET 'OBJ,NXT
|
|
JUMP ?PRG80
|
|
?REP81: FIRST? THING >OBJ /?PRG91
|
|
?PRG91: ZERO? OBJ /?CND22
|
|
NEXT? OBJ >NXT /?KLU175
|
|
?KLU175: GETP OBJ,P?LDESC >STR
|
|
ZERO? STR /?CND96
|
|
ZERO? ANY? \?PRG100
|
|
SET 'ANY?,TRUE-VALUE
|
|
?PRG100: PRINT STR
|
|
CRLF
|
|
FCLEAR OBJ,SECRETBIT
|
|
FSET OBJ,SEENBIT
|
|
CALL THIS-IS-IT,OBJ
|
|
MOVE OBJ,PSEUDO-OBJECT
|
|
?CND96: SET 'OBJ,NXT
|
|
JUMP ?PRG91
|
|
?CND22: FIRST? HERE >OBJ /?KLU176
|
|
?KLU176: SET 'VAL,FALSE-VALUE
|
|
ZERO? OBJ /?CND102
|
|
?PRG104: ZERO? OBJ /?CCL108
|
|
NEXT? OBJ >NXT /?KLU177
|
|
?KLU177: SET 'VAL,TRUE-VALUE
|
|
ZERO? FIRST /?CCL111
|
|
SET 'FIRST,FALSE-VALUE
|
|
EQUAL? THING,HERE \?PRG128
|
|
CRLF
|
|
FSET? HERE,ONBIT \?PRG119
|
|
PRINTI "You see"
|
|
JUMP ?PRG128
|
|
?PRG119: PRINTI "The light reveals"
|
|
JUMP ?PRG128
|
|
?CCL111: ZERO? NXT /?PRG126
|
|
PRINTC 44
|
|
JUMP ?PRG128
|
|
?PRG126: PRINTI " and"
|
|
?PRG128: CALL PRINTT,OBJ
|
|
FCLEAR OBJ,SECRETBIT
|
|
FSET OBJ,SEENBIT
|
|
CALL THIS-IS-IT,OBJ
|
|
CALL TELL-BEING-WORN,OBJ
|
|
CALL SEE-INSIDE?,OBJ
|
|
ZERO? STACK /?CND130
|
|
CALL SEE-ANYTHING-IN?,OBJ
|
|
ZERO? STACK /?CND130
|
|
MOVE OBJ,INTNUM
|
|
?CND130: ZERO? IT? \?CCL136
|
|
ZERO? TWO? \?CCL136
|
|
SET 'IT?,OBJ
|
|
JUMP ?CND134
|
|
?CCL136: SET 'TWO?,TRUE-VALUE
|
|
SET 'IT?,FALSE-VALUE
|
|
?CND134: SET 'OBJ,NXT
|
|
JUMP ?PRG104
|
|
?CCL108: ZERO? IT? /?CND139
|
|
ZERO? TWO? \?CND139
|
|
SET 'P-IT-OBJECT,IT?
|
|
?CND139: EQUAL? THING,HERE \?PRG147
|
|
PRINTI " here"
|
|
?PRG147: PRINTC 46
|
|
ZERO? ANY? \?CND102
|
|
SET 'ANY?,TRUE-VALUE
|
|
?CND102: FIRST? INTNUM >OBJ /?PRG151
|
|
?PRG151: ZERO? OBJ /?REP152
|
|
FSET? OBJ,SURFACEBIT \?PRG160
|
|
CRLF
|
|
PRINTI "On"
|
|
JUMP ?CND155
|
|
?PRG160: CRLF
|
|
PRINTI "Inside"
|
|
?CND155: SET 'VAL,TRUE-VALUE
|
|
CALL PRINTT,OBJ
|
|
PRINTI " you see"
|
|
CALL PRINT-CONTENTS,OBJ
|
|
PRINTC 46
|
|
NEXT? OBJ >OBJ /?PRG151
|
|
JUMP ?PRG151
|
|
?REP152: ZERO? VAL /?CND168
|
|
CRLF
|
|
?CND168: CALL ROB,INTNUM,THING
|
|
CALL ROB,PSEUDO-OBJECT,THING
|
|
RETURN ANY?
|
|
|
|
|
|
.FUNCT SEE-ANYTHING-IN?,THING,OBJ,NXT,ANY?=0
|
|
FIRST? THING >OBJ /?PRG1
|
|
?PRG1: ZERO? OBJ /?REP2
|
|
FSET? OBJ,INVISIBLE /?CND6
|
|
FSET? OBJ,NDESCBIT /?CND6
|
|
EQUAL? OBJ,WINNER /?CND6
|
|
SET 'ANY?,TRUE-VALUE
|
|
RETURN ANY?
|
|
?CND6: NEXT? OBJ >OBJ /?PRG1
|
|
JUMP ?PRG1
|
|
?REP2: RETURN ANY?
|
|
|
|
|
|
.FUNCT DESCRIBE-ROOM,LOOK?=0,V?,STR,L
|
|
ZERO? LOOK? /?CCL3
|
|
SET 'V?,TRUE-VALUE
|
|
JUMP ?PRG10
|
|
?CCL3: EQUAL? 2,VERBOSITY \?CCL5
|
|
SET 'V?,TRUE-VALUE
|
|
JUMP ?PRG10
|
|
?CCL5: ZERO? VERBOSITY \?CCL7
|
|
SET 'V?,FALSE-VALUE
|
|
JUMP ?PRG10
|
|
?CCL7: FSET? HERE,TOUCHBIT /?PRG10
|
|
SET 'V?,TRUE-VALUE
|
|
?PRG10: PRINTC 40
|
|
ZERO? VERBOSITY \?PRG17
|
|
PRINTD HERE
|
|
JUMP ?PRG33
|
|
?PRG17: PRINTI "You are"
|
|
FSET? HERE,TOUCHBIT /?CND19
|
|
PRINTI " now"
|
|
?CND19: FSET? HERE,SURFACEBIT \?CCL25
|
|
PRINTI " on"
|
|
JUMP ?PRG31
|
|
?CCL25: EQUAL? HERE,BACKSTAIRS /?PRG31
|
|
PRINTI " in"
|
|
?PRG31: CALL PRINTT,HERE
|
|
PRINTC 46
|
|
?PRG33: PRINTI ")
|
|
"
|
|
ZERO? LIT \?CCL37
|
|
CALL TOO-DARK
|
|
RFALSE
|
|
?CCL37: EQUAL? LIT,HERE /?CND35
|
|
PRINTI "Light comes from"
|
|
CALL PRINTT,LIT
|
|
PRINTC 46
|
|
CRLF
|
|
?CND35: ZERO? V? /?CND41
|
|
LOC WINNER >L
|
|
FSET? L,VEHBIT \?CND43
|
|
PRINTI "(You're "
|
|
EQUAL? L,COFFIN \?PRG52
|
|
PRINTI "ly"
|
|
JUMP ?PRG54
|
|
?PRG52: PRINTI "sitt"
|
|
?PRG54: PRINTI "ing "
|
|
EQUAL? L,CAR,COFFIN \?PRG61
|
|
PRINTI "in"
|
|
JUMP ?CND56
|
|
?PRG61: PRINTI "on"
|
|
?CND56: CALL THIS-IS-IT,L
|
|
CALL PRINTT,L
|
|
PRINTI ".)"
|
|
CRLF
|
|
?CND43: ZERO? V? /?CCL67
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
ZERO? STACK \?CND41
|
|
?CCL67: ZERO? V? /?CCL71
|
|
GETP HERE,P?LDESC >STR
|
|
ZERO? STR /?CCL71
|
|
PRINT STR
|
|
CRLF
|
|
JUMP ?CND41
|
|
?CCL71: GETP HERE,P?ACTION
|
|
CALL STACK,M-FLASH
|
|
?CND41: GETP HERE,P?CORRIDOR
|
|
ZERO? STACK /?CND76
|
|
CALL CORRIDOR-LOOK
|
|
?CND76: FSET HERE,SEENBIT
|
|
FSET HERE,TOUCHBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HAR-HAR
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL PICK-ONE-NEW,YUKS
|
|
PRINT STACK
|
|
PRINTC 41
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PICK-ONE-NEW,FROB,L,CNT,RND,MSG,RFROB
|
|
GET FROB,0
|
|
SUB STACK,1 >L
|
|
GET FROB,1 >CNT
|
|
ADD FROB,2 >FROB
|
|
MUL CNT,2
|
|
ADD FROB,STACK >RFROB
|
|
SUB L,CNT >RND
|
|
RANDOM RND >RND
|
|
GET RFROB,RND >MSG
|
|
GET RFROB,1
|
|
PUT RFROB,RND,STACK
|
|
PUT RFROB,1,MSG
|
|
INC 'CNT
|
|
EQUAL? CNT,L \?CND1
|
|
SET 'CNT,0
|
|
?CND1: PUT FROB,0,CNT
|
|
RETURN MSG
|
|
|
|
|
|
.FUNCT PICK-ONE,FROB
|
|
GET FROB,0
|
|
RANDOM STACK
|
|
GET FROB,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT NOT-HOLDING?,OBJ
|
|
IN? OBJ,WINNER /FALSE
|
|
LOC OBJ
|
|
IN? STACK,WINNER /FALSE
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?1
|
|
PRINTI " not holding"
|
|
CALL HIM-HER-IT,OBJ
|
|
PRINTR ".)"
|
|
|
|
|
|
.FUNCT NEW-FOLLOWER,PER
|
|
EQUAL? FOLLOWER,FALSE-VALUE,PER /?CND1
|
|
PUTP FOLLOWER,P?LDESC,0
|
|
PRINTI """I'll leave you two alone, then,"" says "
|
|
PRINTD FOLLOWER
|
|
PRINTI ".
|
|
"
|
|
?CND1: SET 'FOLLOWER,PER
|
|
GETP PER,P?CHARACTER
|
|
GET GOAL-TABLES,STACK
|
|
PUT STACK,GOAL-ENABLE,0
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FRIEND-FOLLOWS-YOU,RM,C
|
|
EQUAL? RM,CAR,YOUR-BATHROOM /FALSE
|
|
FSET? RM,SECRETBIT /?CTR4
|
|
EQUAL? RM,CRYPT \?CCL5
|
|
?CTR4: CALL NOT-INTO-PASSAGE,FOLLOWER,TRUE-VALUE
|
|
PUTP FOLLOWER,P?LDESC,9
|
|
SET 'FOLLOWER,0
|
|
RFALSE
|
|
?CCL5: GETP RM,P?LINE
|
|
ZERO? STACK /FALSE
|
|
IN? FOLLOWER,RM /FALSE
|
|
MOVE FOLLOWER,RM
|
|
PUTP FOLLOWER,P?LDESC,23
|
|
EQUAL? FOLLOWER,LORD \?PRG17
|
|
PRINTD FRIEND
|
|
JUMP ?PRG19
|
|
?PRG17: PRINTD FOLLOWER
|
|
?PRG19: CALL PICK-ONE,TRAILS-ALONG
|
|
PRINT STACK
|
|
EQUAL? FOLLOWER,LORD \?CND21
|
|
EQUAL? RM,YOUR-ROOM,YOUR-BATHROOM /?CND21
|
|
MOVE LORD,RM
|
|
PUTP LORD,P?LDESC,23
|
|
PRINTI " So does "
|
|
PRINTD LORD
|
|
PRINTC 46
|
|
?CND21: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOT-INTO-PASSAGE,PER,FOLLOW=0,PASS=1
|
|
ZERO? PASS /?CND1
|
|
GETP PER,P?CHARACTER
|
|
PUT FOUND-PASSAGES,STACK,TRUE-VALUE
|
|
?CND1: CALL THIS-IS-IT,PER
|
|
PRINTI """I'm not "
|
|
ZERO? FOLLOW /?PRG10
|
|
GET LDESC-STRINGS,23
|
|
PRINT STACK
|
|
JUMP ?PRG12
|
|
?PRG10: PRINTI "going"
|
|
?PRG12: PRINTI " into that "
|
|
ZERO? PASS /?PRG25
|
|
EQUAL? PER,OFFICER,BUTLER \?PRG21
|
|
PRINTI "dirty"
|
|
JUMP ?PRG23
|
|
?PRG21: PRINTI "spooky"
|
|
?PRG23: PRINTC 32
|
|
?PRG25: PRINTI "place!"" says "
|
|
PRINTD PER
|
|
ZERO? FOLLOW /?PRG31
|
|
PRINTI " as"
|
|
CALL HE-SHE-IT,PER
|
|
PRINTI " stays behind"
|
|
?PRG31: PRINTR "."
|
|
|
|
|
|
.FUNCT TOUR?,RM
|
|
CALL QUEUED?,I-TOUR
|
|
ZERO? STACK /FALSE
|
|
CALL QUEUE,I-TOUR,1
|
|
SET 'TOUR-FORCED,TRUE-VALUE
|
|
CALL QUEUED?,I-REPLY
|
|
ZERO? STACK /?CND4
|
|
CALL QUEUE,I-REPLY,1
|
|
?CND4: EQUAL? HERE,GREAT-HALL \?CCL7
|
|
FSET? DOCTOR,TOUCHBIT \?PRG22
|
|
?CCL7: GET TOUR-PATH,TOUR-INDEX >RM
|
|
EQUAL? PRSA,V?FOLLOW \?CCL12
|
|
EQUAL? PRSO,FRIEND \?PRG22
|
|
RTRUE
|
|
?CCL12: EQUAL? PRSA,V?WALK \?CCL16
|
|
CALL DIR-FROM,HERE,RM
|
|
CALL DIR-EQV?,HERE,PRSO,STACK
|
|
ZERO? STACK /?PRG22
|
|
RTRUE
|
|
?CCL16: EQUAL? PRSA,V?THROUGH,V?WALK-TO \?PRG22
|
|
CALL META-LOC,PRSO
|
|
EQUAL? STACK,RM /TRUE
|
|
?PRG22: PRINTD FRIEND
|
|
PRINTI " says, ""Please don't wander off yet. I want you to "
|
|
FSET? DOCTOR,TOUCHBIT \?PRG29
|
|
PRINTI "see "
|
|
PRINTD YOUR-ROOM
|
|
PRINTR "."""
|
|
?PRG29: PRINTR "meet the other guests."""
|
|
|
|
|
|
.FUNCT CREEPY?,RM
|
|
FSET? RM,SECRETBIT /TRUE
|
|
EQUAL? RM,TOMB,DUNGEON,CRYPT /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GOTO,RM,TEST=1,FOLLOW?=1,X
|
|
IN? WINNER,RM \?CND1
|
|
CALL WALK-WITHIN-ROOM
|
|
RFALSE
|
|
?CND1: GETP HERE,P?ACTION
|
|
CALL STACK,M-EXIT
|
|
ZERO? STACK \FALSE
|
|
EQUAL? WINNER,PLAYER \?CCL7
|
|
CALL TOUR?
|
|
ZERO? STACK \FALSE
|
|
ZERO? FOLLOW? /?CND10
|
|
ZERO? FOLLOWER /?CND10
|
|
CALL FRIEND-FOLLOWS-YOU,RM
|
|
?CND10: RANDOM 2
|
|
EQUAL? STACK,1 \?CND3
|
|
ZERO? FOLLOWER \?CND3
|
|
CALL CREEPY?,HERE
|
|
ZERO? STACK /?CND3
|
|
CALL CREEPY?,RM
|
|
ZERO? STACK /?CND3
|
|
PRINTI "You "
|
|
CALL PICK-ONE-NEW,CREEPIES
|
|
PRINT STACK
|
|
CRLF
|
|
?CND3: ZERO? TEST /?CND25
|
|
EQUAL? WINNER,PLAYER \?CND25
|
|
CALL DIR-FROM,HERE,RM >X
|
|
ZERO? X /?CND25
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,X
|
|
EQUAL? M-FATAL,STACK /FALSE
|
|
?CND25: GETP WINNER,P?CHARACTER
|
|
PUT FOLLOW-LOC,STACK,RM
|
|
IN? WINNER,CAR \?CND33
|
|
EQUAL? RM,COURTYARD \?CND33
|
|
MOVE CAR,RM
|
|
?CND33: MOVE WINNER,RM
|
|
EQUAL? WINNER,PLAYER \TRUE
|
|
SET 'OHERE,HERE
|
|
SET 'HERE,RM
|
|
CALL MAKE-ALL-PEOPLE,-12
|
|
CALL ENTER-ROOM
|
|
RTRUE
|
|
?CCL7: FSET? RM,SECRETBIT \?CCL23
|
|
CALL NOT-INTO-PASSAGE,WINNER
|
|
RFALSE
|
|
?CCL23: EQUAL? RM,YOUR-BATHROOM \?CND3
|
|
CALL NOT-INTO-PASSAGE,WINNER,FALSE-VALUE,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT HACK-HACK,STR
|
|
PRINT STR
|
|
CALL HIM-HER-IT,PRSO
|
|
CALL PICK-ONE,HO-HUM
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HELD?,OBJ,CONT=0,L
|
|
ZERO? CONT \?CND1
|
|
SET 'CONT,PLAYER
|
|
?CND1: EQUAL? OBJ,ARTIFACT \?PRG7
|
|
ZERO? TREASURE-FOUND /?PRG7
|
|
SET 'OBJ,TREASURE
|
|
?PRG7: LOC OBJ >L
|
|
ZERO? L /FALSE
|
|
EQUAL? L,CONT /TRUE
|
|
EQUAL? CONT,PLAYER,WINNER \?CCL15
|
|
EQUAL? OBJ,HANDS,HEAD,EYE /TRUE
|
|
EQUAL? OBJ,NOW-WEARING /TRUE
|
|
EQUAL? OBJ,CAR \?CCL22
|
|
EQUAL? PRSA,V?MUNG /TRUE
|
|
?CCL22: SET 'OBJ,L
|
|
JUMP ?PRG7
|
|
?CCL15: EQUAL? L,ROOMS,GLOBAL-OBJECTS /FALSE
|
|
SET 'OBJ,L
|
|
JUMP ?PRG7
|
|
|
|
|
|
.FUNCT IDROP
|
|
CALL NOT-HOLDING?,PRSO
|
|
ZERO? STACK \FALSE
|
|
IN? PRSO,WINNER /?CCL5
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?CCL5
|
|
LOC PRSO
|
|
CALL TOO-BAD-BUT,STACK,STR?61
|
|
RFALSE
|
|
?CCL5: MOVE PRSO,HERE
|
|
FCLEAR PRSO,WORNBIT
|
|
FCLEAR PRSO,NDESCBIT
|
|
FCLEAR PRSO,INVISIBLE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ITAKE,VB=1,CNT,OBJ,L,?TMP1
|
|
LOC PRSO >L
|
|
ZERO? L /?CND1
|
|
FSET? L,PERSONBIT \?CND1
|
|
FSET? PRSO,TAKEBIT /?CCL7
|
|
FSET? L,MUNGBIT /?CCL7
|
|
ZERO? VB /FALSE
|
|
CALL YOU-CANT,STR?62
|
|
RFALSE
|
|
?CCL7: FSET PRSO,TAKEBIT
|
|
?CND1: FSET? PRSO,TAKEBIT /?CCL14
|
|
ZERO? VB /FALSE
|
|
CALL YOU-CANT,STR?62
|
|
RFALSE
|
|
?CCL14: CALL CCOUNT,WINNER >CNT
|
|
GRTR? CNT,FUMBLE-NUMBER \?CCL18
|
|
MUL CNT,FUMBLE-PROB >?TMP1
|
|
RANDOM 100
|
|
LESS? ?TMP1,STACK /?CCL18
|
|
CALL FIND-FLAG-NOT,WINNER,WORNBIT >OBJ
|
|
ZERO? OBJ /?CCL18
|
|
CALL TOO-BAD-BUT
|
|
CALL PRINTT,OBJ
|
|
PRINTI " slips from"
|
|
CALL HIM-HER-IT,WINNER,FALSE-VALUE,TRUE-VALUE
|
|
PRINTI " arms while"
|
|
CALL HE-SHE-IT,WINNER,0,STR?1
|
|
PRINTI " taking"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI ", and both tumble "
|
|
CALL GROUND-DESC
|
|
PRINT STACK
|
|
PRINTI ". "
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?1
|
|
PRINTI " carrying too many things.
|
|
"
|
|
MOVE OBJ,HERE
|
|
MOVE PRSO,HERE
|
|
RETURN 2
|
|
?CCL18: MOVE PRSO,WINNER
|
|
FSET PRSO,SEENBIT
|
|
FSET PRSO,TOUCHBIT
|
|
FCLEAR PRSO,NDESCBIT
|
|
FCLEAR PRSO,INVISIBLE
|
|
FCLEAR PRSO,SECRETBIT
|
|
EQUAL? PRSA,V?TAKE /TRUE
|
|
EQUAL? L,WINNER /TRUE
|
|
FSET? L,PERSONBIT /?CCL27
|
|
EQUAL? L,SIDEBOARD \TRUE
|
|
?CCL27: CALL FIRST-YOU,STR?62,PRSO,L
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CCOUNT,OBJ,CNT=0,X
|
|
FIRST? OBJ >X /?PRG3
|
|
RETURN CNT
|
|
?PRG3: FSET? X,WORNBIT /?CND5
|
|
INC 'CNT
|
|
?CND5: NEXT? X >X /?PRG3
|
|
RETURN CNT
|
|
|
|
|
|
.FUNCT CHECK-DOOR,DR
|
|
CALL START-SENTENCE,DR
|
|
PRINTI " is "
|
|
CALL THIS-IS-IT,DR
|
|
FSET? DR,OPENBIT \?PRG8
|
|
PRINTI "open"
|
|
JUMP ?PRG16
|
|
?PRG8: PRINTI "closed and "
|
|
FSET? DR,LOCKED /?PRG14
|
|
PRINTI "un"
|
|
?PRG14: PRINTI "locked"
|
|
?PRG16: PRINTR "."
|
|
|
|
|
|
.FUNCT ROOM-CHECK,P,PA
|
|
SET 'P,PRSO
|
|
EQUAL? P,ROOMS /FALSE
|
|
IN? P,ROOMS \?CCL5
|
|
EQUAL? HERE,P /FALSE
|
|
GETP P,P?STATION
|
|
EQUAL? HERE,STACK /?CTR9
|
|
CALL GLOBAL-IN?,P,HERE
|
|
ZERO? STACK /?CCL10
|
|
?CTR9: EQUAL? PRSA,V?SEARCH-FOR /?PRD17
|
|
EQUAL? PRSA,V?SEARCH,V?SIT,V?LIE \FALSE
|
|
?PRD17: CALL META-LOC,P >P
|
|
EQUAL? P,HERE /FALSE
|
|
CALL FIRST-YOU,STR?63,P
|
|
SET 'PA,PRSA
|
|
CALL PERFORM,V?THROUGH,P >P
|
|
SET 'PRSA,PA
|
|
EQUAL? M-FATAL,P /TRUE
|
|
RFALSE
|
|
?CCL10: CALL SEE-INTO?,P
|
|
ZERO? STACK \FALSE
|
|
RTRUE
|
|
?CCL5: CALL META-LOC,P
|
|
EQUAL? STACK,HERE,GLOBAL-OBJECTS,LOCAL-GLOBALS /FALSE
|
|
CALL VISIBLE?,P
|
|
ZERO? STACK \FALSE
|
|
CALL NOT-HERE,P
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SEE-INSIDE?,OBJ,ONLY-IN=0
|
|
FSET? OBJ,TRANSBIT /TRUE
|
|
FSET? OBJ,OPENBIT /TRUE
|
|
ZERO? ONLY-IN \FALSE
|
|
FSET? OBJ,SURFACEBIT /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ARENT-TALKING
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(You aren't talking to anyone!)"
|
|
|
|
|
|
.FUNCT ALREADY,OBJ,STR=0
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL START-SENTENCE,OBJ
|
|
EQUAL? OBJ,PLAYER \?PRG11
|
|
PRINTI " are"
|
|
JUMP ?PRG13
|
|
?PRG11: PRINTI " is"
|
|
?PRG13: PRINTI " already "
|
|
ZERO? STR /TRUE
|
|
PRINT STR
|
|
PRINTR "!)"
|
|
|
|
|
|
.FUNCT NOT-CLEAR-WHOM
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
PRINTR "[It's not clear whom you're talking to.]"
|
|
|
|
|
|
.FUNCT OKAY,OBJ=0,STR=0
|
|
EQUAL? WINNER,PLAYER,BUTLER \?PRG6
|
|
EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH \?PRG8
|
|
RTRUE
|
|
?PRG6: PRINTC 34
|
|
?PRG8: PRINTI "Okay"
|
|
ZERO? OBJ /?CND10
|
|
PRINTC 44
|
|
CALL HE-SHE-IT,OBJ
|
|
ZERO? STR /?CND14
|
|
PRINTI " is now "
|
|
PRINT STR
|
|
?CND14: EQUAL? STR,STR?64 \?CCL20
|
|
FSET OBJ,ONBIT
|
|
JUMP ?CND10
|
|
?CCL20: EQUAL? STR,STR?65 \?CCL22
|
|
FCLEAR OBJ,ONBIT
|
|
JUMP ?CND10
|
|
?CCL22: EQUAL? STR,STR?66 \?CCL24
|
|
FSET OBJ,OPENBIT
|
|
JUMP ?CND10
|
|
?CCL24: EQUAL? STR,STR?61 \?CCL26
|
|
FCLEAR OBJ,OPENBIT
|
|
JUMP ?CND10
|
|
?CCL26: EQUAL? STR,STR?67 \?CCL28
|
|
FSET OBJ,LOCKED
|
|
JUMP ?CND10
|
|
?CCL28: EQUAL? STR,STR?68 \?CND10
|
|
FCLEAR OBJ,LOCKED
|
|
?CND10: ZERO? STR \?CCL31
|
|
ZERO? OBJ \?CND30
|
|
?CCL31: EQUAL? WINNER,PLAYER /?PRG38
|
|
PRINTI ","" says "
|
|
PRINTD WINNER
|
|
PRINTI ". "
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE
|
|
PRINTR " does so."
|
|
?PRG38: PRINTC 46
|
|
CRLF
|
|
?CND30: ZERO? LIT \TRUE
|
|
CALL LIT? >LIT
|
|
ZERO? LIT /TRUE
|
|
CRLF
|
|
CALL V-LOOK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TOO-BAD-BUT,OBJ=0,STR=0
|
|
PRINTI "Too bad, but"
|
|
ZERO? OBJ /?CND3
|
|
CALL HE-SHE-IT,OBJ
|
|
?CND3: ZERO? STR /TRUE
|
|
PRINTI " is "
|
|
PRINT STR
|
|
EQUAL? STR,STR?69,STR?70 \?PRG15
|
|
PRINTI " with you"
|
|
?PRG15: PRINTR "."
|
|
|
|
|
|
.FUNCT TOO-DARK
|
|
PRINTR "(It's too dark to see!)"
|
|
|
|
|
|
.FUNCT VISIBLE?,OBJ,H,L,X=0
|
|
ZERO? OBJ /FALSE
|
|
CALL ACCESSIBLE?,OBJ
|
|
ZERO? STACK \TRUE
|
|
CALL CORRIDOR-LOOK,OBJ >X
|
|
ZERO? X \TRUE
|
|
LOC OBJ >L
|
|
CALL SEE-INSIDE?,L
|
|
ZERO? STACK /FALSE
|
|
CALL VISIBLE?,L
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ACCESSIBLE?,OBJ,L
|
|
ZERO? OBJ /FALSE
|
|
LOC OBJ >L
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
EQUAL? OBJ,PSEUDO-OBJECT \?CCL8
|
|
EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
|
|
RFALSE
|
|
?CCL8: ZERO? L /FALSE
|
|
EQUAL? L,GLOBAL-OBJECTS /TRUE
|
|
EQUAL? L,LOCAL-GLOBALS \?CCL17
|
|
CALL GLOBAL-IN?,OBJ,HERE
|
|
RSTACK
|
|
?CCL17: CALL META-LOC,OBJ
|
|
EQUAL? STACK,HERE \FALSE
|
|
EQUAL? L,WINNER,HERE /TRUE
|
|
FSET? L,OPENBIT /?CTR22
|
|
FSET? L,SURFACEBIT /?CTR22
|
|
FSET? L,PERSONBIT \FALSE
|
|
?CTR22: CALL ACCESSIBLE?,L
|
|
RSTACK
|
|
|
|
|
|
.FUNCT META-LOC,OBJ,INV=0,L
|
|
LOC OBJ >L
|
|
?PRG1: ZERO? L /FALSE
|
|
EQUAL? L,NOW-WEARING \?CCL7
|
|
RETURN HERE
|
|
?CCL7: EQUAL? L,LOCAL-GLOBALS,GLOBAL-OBJECTS \?CCL9
|
|
RETURN L
|
|
?CCL9: IN? OBJ,ROOMS \?CCL11
|
|
RETURN OBJ
|
|
?CCL11: ZERO? INV /?CND12
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
?CND12: SET 'OBJ,L
|
|
LOC OBJ >L
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT WHO-CARES,N
|
|
RANDOM WHO-CARES-LENGTH >N
|
|
GET WHO-CARES-VERB,N
|
|
CALL HE-SHE-IT,PRSO,TRUE-VALUE,STACK
|
|
GET WHO-CARES-TBL,N
|
|
PRINT STACK
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT PRE-SAIM
|
|
CALL PERFORM,V?AIM,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SAIM
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-AIM
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-SANALYZE
|
|
CALL PERFORM,V?ANALYZE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SANALYZE
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-ANALYZE
|
|
CALL ROOM-CHECK
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,PERSONBIT \FALSE
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(Leave that to the police.)"
|
|
|
|
|
|
.FUNCT V-ANALYZE
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
PRINTR "How?"
|
|
?CCL3: FSET? PRSO,DOORBIT \?PRG8
|
|
CALL CHECK-DOOR,PRSO
|
|
RSTACK
|
|
?PRG8: CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?84
|
|
PRINTR " normal."
|
|
|
|
|
|
.FUNCT V-ANSWER
|
|
ZERO? AWAITING-REPLY /?CCL3
|
|
GET P-LEXV,P-CONT
|
|
EQUAL? STACK,W?YES \?CCL6
|
|
CALL PERFORM,V?YES
|
|
JUMP ?CND1
|
|
?CCL6: CALL PERFORM,V?NO
|
|
JUMP ?CND1
|
|
?CCL3: CALL NOT-CLEAR-WHOM
|
|
?CND1: SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REPLY
|
|
SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
FSET? PRSO,MUNGBIT /?CCL3
|
|
CALL WAITING-FOR-YOU-TO-SPEAK
|
|
RSTACK
|
|
?CCL3: CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WAITING-FOR-YOU-TO-SPEAK
|
|
CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?72
|
|
PRINTR " to be waiting for you to speak."
|
|
|
|
|
|
.FUNCT PRE-ARREST
|
|
EQUAL? PRSI,ROOMS \?CND1
|
|
SET 'PRSI,FALSE-VALUE
|
|
?CND1: FSET? PRSO,PERSONBIT /?CCL5
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "(Are you sure you're a"
|
|
PRINT FAMOUS-YOUNG-DETECTIVE
|
|
PRINTI "? Arresting "
|
|
CALL PRINTA,PRSO
|
|
PRINTR "?!)"
|
|
?CCL5: ZERO? CONFESSED /?CCL10
|
|
CALL ALREADY,CONFESSED,STR?85
|
|
RSTACK
|
|
?CCL10: ZERO? LIONEL-SPEAKS-COUNTER /?CCL12
|
|
CALL TELL-BAD-FORM
|
|
RTRUE
|
|
?CCL12: EQUAL? PRSO,GHOST-NEW /FALSE
|
|
CALL UNSNOOZE,PRSO
|
|
RFALSE
|
|
|
|
|
|
.FUNCT TELL-BAD-FORM
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "(Bad form"
|
|
CALL IAN-CALLS-YOU
|
|
PRINTR ". Wait until after dinner.)"
|
|
|
|
|
|
.FUNCT V-ARREST
|
|
CALL QUEUED?,I-SHOT
|
|
EQUAL? STACK,1 /TRUE
|
|
GETP PRSO,P?CHARACTER
|
|
EQUAL? VARIATION,STACK \?CCL5
|
|
ZERO? EVIDENCE-FOUND /?CCL5
|
|
CALL CONFESSION,PRSO
|
|
RSTACK
|
|
?CCL5: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "(It would be difficult to convict"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR " with the evidence you've found. If you hope to put the culprit behind bars, you'll need more convincing proof.)"
|
|
|
|
|
|
.FUNCT CONFESSION,PER,P,DEAD=0
|
|
SET 'CONFESSED,PER
|
|
PUTP PER,P?LINE,2
|
|
ZERO? TREASURE-FOUND /?CCL3
|
|
GET FOUND-COSTUME,PLAYER-C
|
|
ZERO? STACK /?CCL3
|
|
SET 'P,BUTLER
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? VARIATION,LORD-C \?CCL7
|
|
SET 'P,DOCTOR
|
|
JUMP ?CND1
|
|
?CCL7: SET 'P,LORD
|
|
?CND1: SET 'CAPTOR,P
|
|
CALL UNSNOOZE,P,TRUE-VALUE
|
|
PUTP P,P?LDESC,9
|
|
FSET? PER,MUNGBIT \?CCL10
|
|
CALL UNSNOOZE,PER
|
|
ZERO? STACK \?CCL10
|
|
SET 'DEAD,TRUE-VALUE
|
|
JUMP ?PRG24
|
|
?CCL10: GETP PER,P?CHARACTER
|
|
GET TOLD-ABOUT-EVID,STACK
|
|
ZERO? STACK /?PRG18
|
|
CALL FIND-FLAG-HERE,PERSONBIT,PLAYER,PER
|
|
ZERO? STACK /?PRG20
|
|
?PRG18: PRINTI "At first"
|
|
CALL HE-SHE-IT,PER
|
|
PRINTI " denies everything, but when you tell about"
|
|
CALL PRINTT,EVIDENCE-FOUND
|
|
PRINTC 44
|
|
CALL HE-SHE-IT,PER
|
|
JUMP ?PRG22
|
|
?PRG20: CALL HE-SHE-IT,PER,TRUE-VALUE
|
|
?PRG22: PRINTI " rushes at you! "
|
|
GETP PER,P?CHARACTER
|
|
GET GOAL-TABLES,STACK
|
|
PUT STACK,GOAL-FUNCTION,NULL-F
|
|
?PRG24: PRINTI "Suddenly "
|
|
PRINTD P
|
|
IN? P,HERE /?CND28
|
|
MOVE P,HERE
|
|
GETP P,P?CHARACTER
|
|
GET GOAL-TABLES,STACK
|
|
PUT STACK,GOAL-ENABLE,0
|
|
PRINTI " appears and"
|
|
?CND28: ZERO? DEAD \?PRG37
|
|
PRINTI " grabs"
|
|
CALL HIM-HER-IT,PER
|
|
PRINTI " from behind, saying, ""I'll guard this villain for you."" Then "
|
|
PRINTD PER
|
|
PRINTI " glares at you and confesses to "
|
|
JUMP ?CND32
|
|
?PRG37: PRINTI " agrees that"
|
|
CALL PRINTT,EVIDENCE-FOUND
|
|
PRINTI " proves "
|
|
PRINTD PER
|
|
PRINTI " guilty of "
|
|
?CND32: EQUAL? PER,FRIEND \?CCL41
|
|
PRINTI "fraud.
|
|
"
|
|
JUMP ?CND39
|
|
?CCL41: EQUAL? PER,PAINTER \?PRG48
|
|
PRINTI "attempted "
|
|
?PRG48: PRINTI "murder.
|
|
"
|
|
?CND39: ZERO? DEAD \?CND50
|
|
PUTP PER,P?LDESC,20
|
|
?CND50: ZERO? TREASURE-FOUND /TRUE
|
|
GET FOUND-COSTUME,PLAYER-C
|
|
ZERO? STACK /TRUE
|
|
CALL WRAP-UP
|
|
CALL FINISH
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WRAP-UP
|
|
PRINTI "
|
|
(Congratulations, "
|
|
CALL TITLE-NAME
|
|
PRINTI "! Would you like to read the authors' version of the crime?)"
|
|
CALL YES?
|
|
ZERO? STACK \?CCL5
|
|
PRINTR "Okay."
|
|
?CCL5: EQUAL? VARIATION,LORD-C \?CCL9
|
|
PRINTD LORD
|
|
PRINTI " murdered Lionel in order to inherit the title and castle.
|
|
"
|
|
PRINTD LOVER
|
|
PRINTI " was blackmailing "
|
|
PRINTD LORD
|
|
PRINTI " to marry her, because she knew he was plotting to kill Lionel. So Jack tried to do away with her, too, by dumping her down the well.
|
|
But Jack was wrong in thinking he killed "
|
|
PRINTD LOVER
|
|
PRINTI ". She survived and came back to the castle at night -- to play on "
|
|
PRINTD FRIEND
|
|
PRINTI "'s nerves, since her arrival seemed to be part of Jack's plot; to hunt for proof that Jack murdered Lionel; and to try to frame him for her own ""murder"" by planting"
|
|
CALL PRINTT,JEWEL
|
|
PRINTI " in his trouser cuff, until she lost it in the "
|
|
PRINTD DRAWING-ROOM
|
|
PRINTR "."
|
|
?CCL9: EQUAL? VARIATION,FRIEND-C \?CCL13
|
|
PRINTD FRIEND
|
|
PRINTI " doubted that she could hold "
|
|
PRINTD LORD
|
|
PRINTI "'s love. She was both jealous and fearful of "
|
|
PRINTD DEB
|
|
PRINTI " as a rival who might someday take Jack away from her. So she tried to defame "
|
|
PRINTD DEB
|
|
PRINTI " by making it appear "
|
|
PRINTD DEB
|
|
PRINTI " was a vengeful ghost bent on killing Jack's new love, "
|
|
PRINTD FRIEND
|
|
PRINTI ". "
|
|
PRINTD LOVER
|
|
PRINTR "'s death was purely an accident."
|
|
?CCL13: EQUAL? VARIATION,DOCTOR-C \?PRG20
|
|
PRINTD LOVER
|
|
PRINTI " strongly suspected that her grandfather died because of "
|
|
PRINTD DOCTOR
|
|
PRINTI "'s fiendish experiments on his patients. So she wrote a letter to Lionel, begging him to use his influence to investigate "
|
|
PRINTD DOCTOR
|
|
PRINTI ", which he did. However, "
|
|
PRINTD DOCTOR
|
|
PRINTI " found out what they were up to, and silenced both of them.
|
|
He has masqueraded as a ghost to cover his midnight searches for the "
|
|
PRINTD ARTIFACT
|
|
PRINTI ". He intended the attacks on "
|
|
PRINTD FRIEND
|
|
PRINTI " to create the belief that "
|
|
PRINTD LOVER
|
|
PRINTR " might still be alive."
|
|
?PRG20: PRINTD PAINTER
|
|
PRINTI " was intensely attached to "
|
|
PRINTD LOVER
|
|
PRINTI ", and she jealously hated "
|
|
PRINTD LORD
|
|
PRINTI " for coming between them. When "
|
|
PRINTD LOVER
|
|
PRINTI " accidentally fell down the well, "
|
|
PRINTD PAINTER
|
|
PRINTI " was convinced that she had committed suicide because she felt abandoned by Jack.
|
|
So "
|
|
PRINTD PAINTER
|
|
PRINTI " began her vengeful ghostly masquerade -- to find proof that Jack was responsible for "
|
|
PRINTD LOVER
|
|
PRINTI "'s death, to prick his guilty conscience and make him confess, and to terrorize "
|
|
PRINTD FRIEND
|
|
PRINTI ", who replaced "
|
|
PRINTD LOVER
|
|
PRINTR " in Jack's affections."
|
|
|
|
|
|
.FUNCT V-ASK
|
|
ZERO? P-CONT /?CCL3
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
FSET? PRSO,MUNGBIT /?CCL3
|
|
SET 'WINNER,PRSO
|
|
SET 'QCONTEXT,PRSO
|
|
RETURN QCONTEXT
|
|
?CCL3: CALL V-ASK-ABOUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-ASK-ABOUT
|
|
EQUAL? PRSO,VOICE,RECORDER,PLAYER-NAME /FALSE
|
|
EQUAL? PRSO,PIANO,OCEAN,MUSIC /FALSE
|
|
EQUAL? PRSO,JACK-TAPE,CREW-GLOBAL,BUST /FALSE
|
|
EQUAL? PRSO,COUSIN \?CCL8
|
|
IN? BUST,HERE \?CCL8
|
|
CALL DO-INSTEAD-OF,BUST,COUSIN
|
|
RSTACK
|
|
?CCL8: CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE /?CCL12
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK \?CCL12
|
|
CALL NOT-HERE,PRSO
|
|
RETURN 2
|
|
?CCL12: EQUAL? PRSO,PLAYER /?CTR17
|
|
FSET? PRSO,PERSONBIT /?CCL18
|
|
?CTR17: EQUAL? PRSA,V?$CALL \?CCL23
|
|
ZERO? P-CONT \?CCL23
|
|
CALL MISSING,STR?30
|
|
RETURN 2
|
|
?CCL23: EQUAL? PRSA,V?LISTEN /FALSE
|
|
CALL WONT-HELP-TO-TALK-TO,PRSO
|
|
RETURN 2
|
|
?CCL18: CALL GRAB-ATTENTION,PRSO,PRSI
|
|
ZERO? STACK \FALSE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-ASK-ABOUT
|
|
FSET? PRSO,PERSONBIT \?CTR2
|
|
FSET? PRSO,MUNGBIT \?CCL3
|
|
?CTR2: CALL WONT-HELP-TO-TALK-TO,PRSO
|
|
RETURN 2
|
|
?CCL3: EQUAL? PRSA,V?ASK \?PRG14
|
|
EQUAL? PRSO,PLAYER /?PRG14
|
|
PRINTR """Ask me about something in particular."""
|
|
?PRG14: CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?5
|
|
PRINTI "n't know anything interesting about"
|
|
ZERO? PRSI \?PRG21
|
|
PRINTI " that"
|
|
JUMP ?PRG23
|
|
?PRG21: CALL PRINTT,PRSI
|
|
?PRG23: PRINTR "."
|
|
|
|
|
|
.FUNCT WONT-HELP-TO-TALK-TO,OBJ
|
|
PRINTI "You talk to"
|
|
CALL PRINTT,OBJ
|
|
PRINTI " for a minute before you realize that"
|
|
CALL HE-SHE-IT,OBJ
|
|
PRINTR " won't respond."
|
|
|
|
|
|
.FUNCT PRE-ASK-CONTEXT-ABOUT,V=0,P
|
|
ZERO? V \?CND1
|
|
SET 'V,V?ASK-ABOUT
|
|
?CND1: CALL QCONTEXT-GOOD?
|
|
ZERO? STACK /?CCL5
|
|
CALL PERFORM,V,QCONTEXT,PRSO
|
|
RTRUE
|
|
?CCL5: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P /FALSE
|
|
CALL TELL-I-ASSUME,P,STR?87
|
|
CALL PERFORM,V,P,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ASK-CONTEXT-ABOUT
|
|
CALL ARENT-TALKING
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ASK-FOR
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
FSET? PRSO,MUNGBIT /?CCL3
|
|
EQUAL? PRSO,PLAYER /?CCL3
|
|
CALL START-SENTENCE,PRSO
|
|
IN? PRSI,PRSO \?PRG16
|
|
MOVE PRSI,WINNER
|
|
FSET PRSI,TAKEBIT
|
|
FSET PRSI,TOUCHBIT
|
|
FCLEAR PRSI,NDESCBIT
|
|
FCLEAR PRSI,SECRETBIT
|
|
PRINTI " hands you"
|
|
CALL PRINTT,PRSI
|
|
FSET PRSI,SEENBIT
|
|
PRINTR "."
|
|
?PRG16: PRINTI " doesn't have"
|
|
CALL PRINTT,PRSI
|
|
PRINTR "."
|
|
?CCL3: CALL HAR-HAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-ASK-CONTEXT-FOR,P
|
|
LOC PRSO >P
|
|
FSET? P,PERSONBIT \?CCL3
|
|
CALL PERFORM,V?ASK-FOR,P,PRSO
|
|
RTRUE
|
|
?CCL3: CALL PRE-ASK-CONTEXT-ABOUT,V?ASK-FOR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ASK-CONTEXT-FOR
|
|
CALL ARENT-TALKING
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ATTACK
|
|
CALL IKILL,STR?88
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BOW,P
|
|
SET 'P,PRSO
|
|
ZERO? P \?CND1
|
|
CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P \?CND1
|
|
PRINTR "No one notices."
|
|
?CND1: FSET? P,PERSONBIT \?CTR8
|
|
EQUAL? P,PLAYER \?CCL9
|
|
?CTR8: CALL HAR-HAR
|
|
RSTACK
|
|
?CCL9: CALL GRAB-ATTENTION,P
|
|
ZERO? STACK /TRUE
|
|
CALL HE-SHE-IT,P,TRUE-VALUE
|
|
PRINTC 32
|
|
FSET? P,FEMALE \?PRG21
|
|
PRINTI "curtsey"
|
|
JUMP ?PRG23
|
|
?PRG21: PRINTI "bow"
|
|
?PRG23: PRINTR "s back to you."
|
|
|
|
|
|
.FUNCT PRE-BRUSH
|
|
EQUAL? PRSO,ROOMS \FALSE
|
|
EQUAL? P-PRSA-WORD,W?SCRAPE,W?SCRATCH /FALSE
|
|
SET 'PRSO,WINNER
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-BRUSH
|
|
EQUAL? P-PRSA-WORD,W?SCRAPE,W?SCRATCH \?CTR2
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
?CTR2: EQUAL? HERE,YOUR-BATHROOM,KITCHEN \?CCL8
|
|
EQUAL? PRSO,PLAYER,HEAD,HANDS \?CCL11
|
|
SET 'WASHED,TRUE-VALUE
|
|
PRINT AHHH
|
|
RTRUE
|
|
?CCL11: FSET? PRSO,PERSONBIT \?CCL15
|
|
CALL FACE-RED
|
|
RSTACK
|
|
?CCL15: CALL UNCLEAN
|
|
RSTACK
|
|
?CCL8: CALL TELL-FIND-NONE,STR?90
|
|
RSTACK
|
|
?CCL3: CALL UNCLEAN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT UNCLEAN
|
|
PRINTR "You try for a minute and then decide it's an endless task."
|
|
|
|
|
|
.FUNCT REMOVE-CAREFULLY,OBJ=0,OLIT
|
|
SET 'OLIT,LIT
|
|
ZERO? OBJ /?CND1
|
|
CALL NOT-IT,OBJ
|
|
MOVE OBJ,LOCAL-GLOBALS
|
|
?CND1: CALL LIT? >LIT
|
|
ZERO? OLIT /TRUE
|
|
ZERO? LIT \TRUE
|
|
PRINTR "You are left in the dark..."
|
|
|
|
|
|
.FUNCT V-$CALL
|
|
CALL UNSNOOZE,PRSO
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE \?CCL6
|
|
CALL GRAB-ATTENTION,PRSO
|
|
ZERO? STACK /?PRG15
|
|
PUTP PRSO,P?LDESC,12
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTI " is "
|
|
GET LDESC-STRINGS,12
|
|
PRINT STACK
|
|
PRINTR "."
|
|
?PRG15: RETURN 2
|
|
?CCL6: CALL CORRIDOR-LOOK,PRSO
|
|
ZERO? STACK /?CCL18
|
|
CALL START-SENTENCE,PRSO
|
|
PRINTR " ignores you."
|
|
?CCL18: CALL NOT-HERE,PRSO
|
|
RSTACK
|
|
?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
CALL MISSING,STR?30
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CHASTISE
|
|
EQUAL? PRSO,INTDIR /?CND1
|
|
PRINT I-ASSUME
|
|
PRINTI " Look at"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI ", not look in"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI " nor look for"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI " nor any other preposition.]"
|
|
CRLF
|
|
?CND1: CALL PERFORM,V?EXAMINE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BOARD
|
|
IN? PRSO,ROOMS /?CTR2
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
?CTR2: CALL V-THROUGH
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,VEHBIT \?CCL7
|
|
IN? WINNER,PRSO \?CCL11
|
|
CALL ALREADY,PLAYER
|
|
PRINTI "in"
|
|
CALL PRINTT,PRSO
|
|
PRINTR ".)"
|
|
?CCL11: MOVE WINNER,PRSO
|
|
PRINTI "You are now "
|
|
FSET? PRSO,SURFACEBIT \?PRG21
|
|
PRINTI "on"
|
|
JUMP ?PRG23
|
|
?PRG21: PRINTI "in"
|
|
?PRG23: CALL PRINTT,PRSO
|
|
PRINTR "."
|
|
?CCL7: CALL YOU-CANT,STR?91
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-ON
|
|
CALL PERFORM,V?SIT,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLIMB-UP,DIR=P?UP,OBJ=0,X
|
|
IN? PRSO,ROOMS \?CCL3
|
|
CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?CCL3: GETPT HERE,DIR
|
|
ZERO? STACK /?CCL5
|
|
CALL DO-WALK,DIR
|
|
RTRUE
|
|
?CCL5: ZERO? OBJ \?CCL7
|
|
CALL YOU-CANT,STR?40
|
|
RSTACK
|
|
?CCL7: CALL HAR-HAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-DOWN
|
|
CALL V-CLIMB-UP,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLOSE
|
|
FSET? PRSO,CONTBIT /?CCL3
|
|
FSET? PRSO,DOORBIT /?CCL3
|
|
EQUAL? PRSO,WINDOW /?CCL3
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,DOORBIT /?CTR7
|
|
EQUAL? PRSO,WINDOW \?CCL8
|
|
?CTR7: FSET? PRSO,OPENBIT \?CCL13
|
|
CALL OKAY,PRSO,STR?61
|
|
RSTACK
|
|
?CCL13: CALL ALREADY,PRSO,STR?61
|
|
RSTACK
|
|
?CCL8: FSET? PRSO,SURFACEBIT /?CCL16
|
|
GETP PRSO,P?CAPACITY
|
|
ZERO? STACK /?CCL16
|
|
FSET? PRSO,OPENBIT \?CCL21
|
|
CALL OKAY,PRSO,STR?61
|
|
RSTACK
|
|
?CCL21: CALL ALREADY,PRSO,STR?61
|
|
RSTACK
|
|
?CCL16: CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-COMPARE,?TMP1
|
|
ZERO? PRSI \?CCL3
|
|
GETB P-PRSO,P-MATCHLEN
|
|
EQUAL? 1,STACK \?CCL3
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "[Oops! Try: COMPARE IT TO"
|
|
PRINT SOMETHING
|
|
RTRUE
|
|
?CCL3: GETB P-PRSO,P-MATCHLEN
|
|
EQUAL? 2,STACK \FALSE
|
|
PUTB P-PRSO,P-MATCHLEN,1
|
|
GETB P-PRSO,1 >?TMP1
|
|
GETB P-PRSO,2
|
|
CALL PERFORM,PRSA,?TMP1,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-COMPARE
|
|
EQUAL? PRSO,PRSI \?CCL3
|
|
PRINTR "They're the same thing!"
|
|
?CCL3: EQUAL? PLAYER,PRSO,PRSI \?PRG11
|
|
PRINTI "You"
|
|
JUMP ?PRG13
|
|
?PRG11: PRINTI "They"
|
|
?PRG13: PRINTR "'re not a bit alike."
|
|
|
|
|
|
.FUNCT V-CONFRONT
|
|
EQUAL? PRSO,PLAYER \?CCL3
|
|
CALL ARENT-TALKING
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,PERSONBIT /?CCL5
|
|
PRINTI "Wow! That ought to put a scare into"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "!"
|
|
?CCL5: CALL WHO-CARES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MUNG
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
ZERO? PRSI \?CCL3
|
|
FSET? PRSO,OPENBIT \?CCL8
|
|
PRINTR "You'd fly through the open door if you tried."
|
|
?CCL8: CALL UNLOCK-DOOR?,PRSO
|
|
ZERO? STACK /?CCL12
|
|
PRINTR "Why don't you just open it instead?"
|
|
?CCL12: CALL IF-SPY
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,PERSONBIT /?CCL16
|
|
CALL IF-SPY
|
|
RSTACK
|
|
?CCL16: CALL IKILL,STR?92
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DANCE,OW
|
|
EQUAL? WINNER,PLAYER /?CCL3
|
|
EQUAL? PRSO,PLAYER \?CCL3
|
|
SET 'OW,WINNER
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?DANCE,OW
|
|
SET 'WINNER,OW
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PERSONBIT /?CCL7
|
|
CALL HAR-HAR
|
|
RSTACK
|
|
?CCL7: CALL IN-MOTION?,PRSO
|
|
ZERO? STACK /?CCL9
|
|
CALL TOO-BAD-BUT,PRSO,STR?93
|
|
RSTACK
|
|
?CCL9: ZERO? GENDER-KNOWN \?PRD13
|
|
EQUAL? WINNER,PLAYER /?PRG21
|
|
?PRD13: FSET? WINNER,FEMALE /?PRD16
|
|
FSET? PRSO,FEMALE /?PRG21
|
|
?PRD16: FSET? WINNER,FEMALE \?PRG23
|
|
FSET? PRSO,FEMALE /?PRG23
|
|
?PRG21: CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?94
|
|
PRINTI " with"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR " for a minute."
|
|
?PRG23: CALL HE-SHE-IT,PRSO,TRUE-VALUE
|
|
PRINTR " doesn't fancy a dance with you."
|
|
|
|
|
|
.FUNCT PRE-DESCRIBE
|
|
EQUAL? WINNER,PLAYER \FALSE
|
|
EQUAL? PRSI,FALSE-VALUE,ROOMS \?CCL6
|
|
CALL QCONTEXT-GOOD?
|
|
ZERO? STACK /?CCL9
|
|
SET 'WINNER,QCONTEXT
|
|
CALL PERFORM,PRSA,PRSO
|
|
RTRUE
|
|
?CCL9: CALL ARENT-TALKING
|
|
RSTACK
|
|
?CCL6: CALL PERFORM,V?TELL-ABOUT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DESCRIBE
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNDRESS
|
|
EQUAL? PRSO,ROOMS,PLAYER \?CCL3
|
|
ZERO? NOW-WEARING \?CCL6
|
|
CALL ALREADY,PLAYER,STR?95
|
|
RSTACK
|
|
?CCL6: SET 'PRSO,FALSE-VALUE
|
|
CALL V-WEAR
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,PERSONBIT \?CCL8
|
|
FSET? PRSO,MUNGBIT \?CCL11
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(Not in a family story!)"
|
|
?CCL11: CALL FACE-RED
|
|
RSTACK
|
|
?CCL8: CALL HAR-HAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRESS,X
|
|
EQUAL? PRSO,PLAYER,ROOMS \?CCL3
|
|
ZERO? NOW-WEARING \?CCL6
|
|
EQUAL? PLAYER,WINNER,PRSO \?CCL6
|
|
CALL FIND-FLAG,WINNER,WEARBIT >X
|
|
ZERO? X \?CTR10
|
|
CALL FIND-FLAG,HERE,WEARBIT >X
|
|
ZERO? X /?CCL11
|
|
?CTR10: CALL TELL-I-ASSUME,X,STR?96
|
|
CALL PERFORM,V?WEAR,X
|
|
RTRUE
|
|
?CCL11: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(You didn't say what to wear!)"
|
|
?CCL6: CALL ALREADY,WINNER,STR?97
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,PERSONBIT \?CCL17
|
|
CALL ALREADY,WINNER,STR?97
|
|
RSTACK
|
|
?CCL17: FSET? PRSO,WEARBIT \?CCL19
|
|
CALL V-WEAR
|
|
RTRUE
|
|
?CCL19: CALL FIND-OUTFIT >X
|
|
ZERO? X /?CCL21
|
|
CALL TELL-I-ASSUME,X
|
|
SET 'PRSO,X
|
|
CALL V-WEAR
|
|
RTRUE
|
|
?CCL21: CALL HAR-HAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FIND-OUTFIT,X,?TMP1
|
|
CALL FIND-FLAG,WINNER,WEARBIT,NOW-WEARING >?TMP1
|
|
ZERO? ?TMP1 /?PRD3
|
|
RETURN ?TMP1
|
|
?PRD3: CALL FIND-FLAG-HERE,WEARBIT >?TMP1
|
|
ZERO? ?TMP1 /?PRD4
|
|
RETURN ?TMP1
|
|
?PRD4: CALL FIND-OUTFIT-IN,LUGGAGE >?TMP1
|
|
ZERO? ?TMP1 /?PRD5
|
|
RETURN ?TMP1
|
|
?PRD5: CALL FIND-OUTFIT-IN,BED >?TMP1
|
|
ZERO? ?TMP1 /?PRD6
|
|
RETURN ?TMP1
|
|
?PRD6: CALL FIND-OUTFIT-IN,CHEST-OF-DRAWERS >?TMP1
|
|
ZERO? ?TMP1 /?PRD7
|
|
RETURN ?TMP1
|
|
?PRD7: CALL FIND-OUTFIT-IN,WARDROBE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FIND-OUTFIT-IN,OBJ,X
|
|
CALL META-LOC,OBJ
|
|
EQUAL? STACK,HERE \FALSE
|
|
CALL FIND-FLAG,OBJ,WEARBIT >X
|
|
ZERO? X /FALSE
|
|
FSET? OBJ,OPENBIT /?CND6
|
|
FSET OBJ,OPENBIT
|
|
CALL FIRST-YOU,STR?66,OBJ
|
|
?CND6: RETURN X
|
|
|
|
|
|
.FUNCT V-CHANGE,X
|
|
EQUAL? PRSO,ROOMS,TWEED-OUTFIT /?CTR2
|
|
EQUAL? PRSO,EXERCISE-OUTFIT,DINNER-OUTFIT,SLEEP-OUTFIT \?CCL3
|
|
?CTR2: CALL FIND-OUTFIT >X
|
|
ZERO? X /?CCL8
|
|
CALL PERFORM,V?WEAR,X
|
|
RTRUE
|
|
?CCL8: CALL META-LOC,LUGGAGE
|
|
EQUAL? STACK,HERE /?CCL10
|
|
PRINTI "You look around for "
|
|
PRINTD LUGGAGE
|
|
PRINTR " but don't find it."
|
|
?CCL10: CALL FIND-FLAG,LUGGAGE,WEARBIT >X
|
|
ZERO? X /?PRG15
|
|
FSET LUGGAGE,OPENBIT
|
|
CALL PERFORM,V?WEAR,X
|
|
RTRUE
|
|
?PRG15: PRINTR "You can't find anything to change into."
|
|
?CCL3: CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-DRIVE-TO
|
|
EQUAL? PRSO,CAR /?CCL3
|
|
CALL DONT-UNDERSTAND
|
|
RSTACK
|
|
?CCL3: LOC WINNER
|
|
EQUAL? STACK,CAR /?CCL5
|
|
CALL TELL-NOT-IN,CAR
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSI,INTDIR \?CCL7
|
|
CALL DO-WALK,P-DIRECTION
|
|
RTRUE
|
|
?CCL7: CALL PERFORM,V?WALK-TO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TELL-NOT-IN,OBJ
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?1
|
|
PRINTI " not in"
|
|
CALL HIM-HER-IT,OBJ
|
|
PRINTR "!)"
|
|
|
|
|
|
.FUNCT V-DRIVE-TO
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRINK
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DROP,L
|
|
CALL IDROP
|
|
ZERO? STACK /FALSE
|
|
SET 'L,TABLE-DINING
|
|
IN? L,HERE /?CTR5
|
|
CALL FIND-FLAG-HERE,VEHBIT,PRSO >L
|
|
ZERO? L /?CCL6
|
|
?CTR5: MOVE PRSO,L
|
|
CALL OKAY,PRSO
|
|
PRINTI " is now on"
|
|
CALL PRINTT,L
|
|
PRINTR "."
|
|
?CCL6: CALL GROUND-DESC
|
|
CALL OKAY,PRSO,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GROUND-DESC
|
|
CALL OUTSIDE?,HERE
|
|
ZERO? STACK /?CTR2
|
|
LOC WINNER
|
|
EQUAL? STACK,CAR \?CCL3
|
|
?CTR2: RETURN STR?98
|
|
?CCL3: RETURN STR?99
|
|
|
|
|
|
.FUNCT PRE-EAT
|
|
EQUAL? PRSO,FALSE-VALUE,ROOMS \FALSE
|
|
CALL META-LOC,DINNER
|
|
EQUAL? STACK,HERE \?CCL6
|
|
CALL PERFORM,PRSA,DINNER
|
|
RTRUE
|
|
?CCL6: CALL NOT-HERE,DINNER
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EAT
|
|
PRINTR "It's hard to believe you're that hungry."
|
|
|
|
|
|
.FUNCT PRE-EMPTY
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
CALL META-LOC,LUGGAGE
|
|
EQUAL? HERE,STACK \?CCL5
|
|
SET 'PRSO,LUGGAGE
|
|
?CND1: EQUAL? PRSO,POND \?CCL8
|
|
CALL WONT-HELP
|
|
RSTACK
|
|
?CCL5: CALL NOT-HERE,LUGGAGE
|
|
RTRUE
|
|
?CCL8: EQUAL? PRSO,WENDISH-KIT,VIVIEN-BOX \?CCL10
|
|
CALL YOU-SHOULDNT
|
|
RSTACK
|
|
?CCL10: EQUAL? PRSO,BOTTLE /?CCL12
|
|
FIRST? PRSO /?CCL12
|
|
CALL ALREADY,PRSO,STR?100
|
|
RSTACK
|
|
?CCL12: ZERO? PRSI /?CCL16
|
|
IN? PRSI,ROOMS /?CCL16
|
|
FSET? PRSI,CONTBIT /?CCL16
|
|
CALL TELL-FIND-NONE,STR?101,PRSI
|
|
RETURN 2
|
|
?CCL16: EQUAL? PRSO,CAR \FALSE
|
|
ZERO? PRSI \FALSE
|
|
LOC CAR
|
|
CALL PERFORM,PRSA,PRSO,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EMPTY,?TMP1,?TMP2
|
|
FSET? PRSO,CONTBIT \?CCL3
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?4
|
|
CALL PRINTT,PRSO
|
|
ZERO? PRSI \?PRG17
|
|
EQUAL? PRSO,COFFIN /?CCL10
|
|
CALL FIND-FLAG-HERE,CONTBIT,PRSO >PRSI
|
|
ZERO? PRSI /?CCL10
|
|
FSET PRSI,OPENBIT
|
|
PRINTI " into"
|
|
CALL PRINTT,PRSI
|
|
JUMP ?PRG17
|
|
?CCL10: SET 'PRSI,HERE
|
|
PRINTC 32
|
|
CALL GROUND-DESC
|
|
PRINT STACK
|
|
?PRG17: PRINTC 46
|
|
CRLF
|
|
EQUAL? PRSI,HERE /?CCL21
|
|
CALL WEIGHT,PRSI >?TMP2
|
|
CALL WEIGHT,PRSO
|
|
ADD ?TMP2,STACK >?TMP1
|
|
GETP PRSI,P?CAPACITY
|
|
GRTR? ?TMP1,STACK \?CCL21
|
|
PRINT NOT-ENOUGH-ROOM
|
|
RTRUE
|
|
?CCL21: CALL ROB,PRSO,PRSI
|
|
RTRUE
|
|
?CCL3: CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-THROUGH
|
|
EQUAL? PRSO,GLOBAL-HERE,ROOMS \?CCL3
|
|
CALL DO-WALK,P?IN
|
|
RTRUE
|
|
?CCL3: ZERO? PRSI /FALSE
|
|
EQUAL? PRSO,CAR \?CCL8
|
|
LOC WINNER
|
|
EQUAL? STACK,CAR \?CCL11
|
|
SET 'PRSO,PRSI
|
|
RFALSE
|
|
?CCL11: CALL TELL-NOT-IN,CAR
|
|
RTRUE
|
|
?CCL8: CALL DONT-UNDERSTAND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROUGH,RM,DIR
|
|
CALL NOUN-USED?,W?DOOR,W?GATE,W?HOLE
|
|
ZERO? STACK \?PRD5
|
|
CALL NOUN-USED?,W?PANEL
|
|
ZERO? STACK /?CCL3
|
|
?PRD5: FSET? PRSO,OPENBIT /?CTR2
|
|
CALL WALK-THRU-DOOR?,FALSE-VALUE,PRSO,FALSE-VALUE
|
|
ZERO? STACK /?CCL3
|
|
?CTR2: CALL DOOR-ROOM,HERE,PRSO >RM
|
|
ZERO? RM /?CCL12
|
|
CALL GOTO,RM
|
|
ZERO? STACK \TRUE
|
|
?CCL12: CALL V-FOO
|
|
RSTACK
|
|
?CCL3: IN? PRSO,ROOMS \?CCL16
|
|
EQUAL? PRSO,HERE \?CCL19
|
|
CALL WALK-WITHIN-ROOM
|
|
RTRUE
|
|
?CCL19: CALL SEE-INTO?,PRSO,FALSE-VALUE
|
|
ZERO? STACK /?CCL21
|
|
CALL GOTO,PRSO
|
|
RTRUE
|
|
?CCL21: CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?CCL16: FSET? PRSO,VEHBIT \?CCL23
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RSTACK
|
|
?CCL23: FSET? PRSO,PERSONBIT \?CCL26
|
|
CALL HAR-HAR
|
|
RSTACK
|
|
?CCL26: FSET? PRSO,TAKEBIT /?CCL28
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?102
|
|
PRINTI " into"
|
|
CALL PRINTT,PRSO
|
|
CALL THIS-IS-IT,PRSO
|
|
PRINTI " trying to go through"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
?CCL28: CALL HAR-HAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-EXAMINE
|
|
CALL ROOM-CHECK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-EXAMINE,TXT=0
|
|
EQUAL? PRSO,PSEUDO-OBJECT /?CCL2
|
|
CALL NOUN-USED?,W?DOOR,W?PANEL
|
|
ZERO? STACK /?CND1
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?CND1
|
|
?CCL2: SET 'TXT,TRUE-VALUE
|
|
?CND1: EQUAL? PRSO,INTDIR \?CCL9
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(If you want to see what's there, go there!)"
|
|
?CCL9: EQUAL? PRSO,LIGHT-GLOBAL /?CTR12
|
|
EQUAL? PRSO,WALL,TOWER,OTHER-OUTFIT /?CTR12
|
|
EQUAL? PRSO,HEAD,HANDS,CASTLE \?CCL13
|
|
?CTR12: CALL NOTHING-SPECIAL
|
|
RSTACK
|
|
?CCL13: IN? PRSO,GLOBAL-OBJECTS \?CCL18
|
|
CALL NOT-HERE,PRSO
|
|
RTRUE
|
|
?CCL18: IN? PRSO,ROOMS \?CCL20
|
|
ZERO? TXT \?CCL20
|
|
CALL ROOM-PEEK,PRSO
|
|
RSTACK
|
|
?CCL20: CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE /?CCL24
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK \?CCL24
|
|
ZERO? TXT \?CCL24
|
|
CALL TOO-BAD-BUT,PRSO,STR?103
|
|
RSTACK
|
|
?CCL24: GETP PRSO,P?TEXT >TXT
|
|
ZERO? TXT /?CCL29
|
|
PRINT TXT
|
|
CRLF
|
|
RTRUE
|
|
?CCL29: FSET? PRSO,DOORBIT \?CCL33
|
|
CALL CHECK-DOOR,PRSO
|
|
RSTACK
|
|
?CCL33: FSET? PRSO,CONTBIT /?CTR34
|
|
FSET? PRSO,SURFACEBIT \?CCL35
|
|
?CTR34: CALL V-LOOK-INSIDE
|
|
RSTACK
|
|
?CCL35: CALL NOTHING-SPECIAL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT NOTHING-SPECIAL
|
|
PRINTI "You look over"
|
|
CALL PRINTT,PRSO
|
|
PRINTR " for a minute and find nothing suspicious -- for now."
|
|
|
|
|
|
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,TBL,VAL=0
|
|
GETPT OBJ2,P?GLOBAL >TBL
|
|
ZERO? TBL /?CND1
|
|
PTSIZE TBL
|
|
SUB STACK,1
|
|
CALL ZMEMQB,OBJ1,TBL,STACK >VAL
|
|
?CND1: ZERO? VAL /?PRD6
|
|
RETURN VAL
|
|
?PRD6: EQUAL? OBJ1,OBJ2 /?CCL4
|
|
RETURN VAL
|
|
?CCL4: SET 'VAL,TRUE-VALUE
|
|
RETURN VAL
|
|
|
|
|
|
.FUNCT V-FAINT
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?3
|
|
CALL HIM-HER-IT,WINNER,FALSE-VALUE,TRUE-VALUE
|
|
PRINTI " best, but"
|
|
CALL HE-SHE-IT,WINNER,0,STR?1
|
|
PRINTR " too excited."
|
|
|
|
|
|
.FUNCT V-FILL
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-FIND,?TMP1
|
|
EQUAL? PRSO,PLAYER-NAME,PLAYER /FALSE
|
|
FSET? PRSO,SECRETBIT \?CCL5
|
|
FSET? PRSO,SEENBIT /?CCL5
|
|
CALL NO-FUN
|
|
RSTACK
|
|
?CCL5: IN? PRSO,ROOMS \?CCL9
|
|
EQUAL? PRSO,HERE \?CCL12
|
|
CALL ALREADY,WINNER,STR?104
|
|
RSTACK
|
|
?CCL12: CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?CCL9: FSET? PRSO,PERSONBIT \FALSE
|
|
CALL META-LOC,WINNER >?TMP1
|
|
CALL META-LOC,PRSO
|
|
EQUAL? ?TMP1,STACK \?CCL18
|
|
FSET? PRSO,NDESCBIT /?CCL18
|
|
CALL BITE-YOU
|
|
RTRUE
|
|
?CCL18: CALL FOLLOW-LOC?
|
|
ZERO? STACK \TRUE
|
|
CALL WHO-KNOWS?,PRSO
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT BITE-YOU
|
|
PRINTI "If"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTI " were any closer,"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTR "'d bite you!"
|
|
|
|
|
|
.FUNCT FAR-AWAY?,L
|
|
GETP HERE,P?LINE
|
|
ZERO? STACK /TRUE
|
|
EQUAL? L,GLOBAL-OBJECTS /TRUE
|
|
FSET? L,SECRETBIT \?CCL7
|
|
FSET? L,SEENBIT \TRUE
|
|
?CCL7: EQUAL? L,YOUR-ROOM \?CCL11
|
|
EQUAL? HERE,YOUR-BATHROOM /FALSE
|
|
?CCL11: EQUAL? L,YOUR-BATHROOM \?CCL15
|
|
EQUAL? HERE,YOUR-ROOM /FALSE
|
|
?CCL15: GETP L,P?LINE
|
|
ZERO? STACK /TRUE
|
|
FSET? FRIEND,TOUCHBIT /?CCL21
|
|
EQUAL? L,CAR,DRIVEWAY,COURTYARD \TRUE
|
|
?CCL21: EQUAL? HERE,DRIVEWAY \?CND1
|
|
EQUAL? L,CAR,DRIVEWAY /FALSE
|
|
GETB LAST-NAME,0
|
|
ZERO? STACK /TRUE
|
|
?CND1: FSET? HERE,SECRETBIT \?PRD32
|
|
FSET? L,SECRETBIT \?CCL30
|
|
?PRD32: FSET? HERE,SECRETBIT /FALSE
|
|
FSET? L,SECRETBIT \FALSE
|
|
?CCL30: CALL SEE-INTO?,L,FALSE-VALUE
|
|
ZERO? STACK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-FIND,L
|
|
LOC PRSO >L
|
|
EQUAL? PRSO,PLAYER \?CCL3
|
|
PRINTI "You're right here, "
|
|
CALL TELL-LOCATION
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,HANDS,HEAD \?CCL7
|
|
CALL BITE-YOU
|
|
RSTACK
|
|
?CCL7: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL9
|
|
PRINTR "You have it."
|
|
?CCL9: FSET? PRSO,SECRETBIT /?CTR12
|
|
EQUAL? PRSO,ARTIFACT \?CCL13
|
|
?CTR12: CALL NO-FUN
|
|
RSTACK
|
|
?CCL13: CALL VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL17
|
|
FSET? PRSO,SECRETBIT \?PRG21
|
|
CALL DISCOVER,PRSO
|
|
RSTACK
|
|
?PRG21: PRINTR "It's right here."
|
|
?CCL17: FSET? PRSO,SEENBIT /?CCL24
|
|
CALL NOT-HERE,PRSO,TRUE-VALUE
|
|
RSTACK
|
|
?CCL24: EQUAL? L,GLOBAL-OBJECTS,LOCAL-GLOBALS \?CCL27
|
|
PRINTR "It's around somewhere."
|
|
?CCL27: CALL META-LOC,PRSO
|
|
CALL FAR-AWAY?,STACK
|
|
ZERO? STACK /?CCL32
|
|
PRINTR "It's far away from here."
|
|
?CCL32: FSET? L,PERSONBIT \?CCL36
|
|
CALL THIS-IS-IT,L
|
|
CALL START-SENTENCE,L
|
|
PRINTR " probably has it."
|
|
?CCL36: FSET? L,SURFACEBIT /?CTR39
|
|
FSET? L,CONTBIT /?CTR39
|
|
IN? L,ROOMS \?PRG55
|
|
?CTR39: CALL THIS-IS-IT,L
|
|
PRINTI "It's probably "
|
|
FSET? L,SURFACEBIT \?PRG51
|
|
PRINTI "on"
|
|
JUMP ?PRG53
|
|
?PRG51: PRINTI "in"
|
|
?PRG53: CALL PRINTT,L
|
|
PRINTR "."
|
|
?PRG55: PRINTR "It's nowhere in particular."
|
|
|
|
|
|
.FUNCT NO-FUN
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(If it's that easy, it spoils the fun!)"
|
|
|
|
|
|
.FUNCT TELL-LOCATION,DIR
|
|
IN? PLAYER,HERE /?CND1
|
|
PRINTI "sitting "
|
|
?CND1: FSET? HERE,SURFACEBIT \?PRG10
|
|
PRINTI "on"
|
|
JUMP ?PRG12
|
|
?PRG10: PRINTI "in"
|
|
?PRG12: CALL PRINTT,HERE
|
|
PRINTC 46
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FIX
|
|
CALL MORE-SPECIFIC
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FOLLOW-LOC?,L
|
|
GETP PRSO,P?CHARACTER >L
|
|
GET FOLLOW-LOC,L >L
|
|
ZERO? L /FALSE
|
|
PRINTI "The last you knew,"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTI " was "
|
|
FSET? L,SURFACEBIT \?PRG11
|
|
PRINTI "on"
|
|
JUMP ?CND6
|
|
?PRG11: PRINTI "in"
|
|
?CND6: GETP PRSO,P?CHARACTER
|
|
CALL TELL-HIS-HER-BEDROOM,STACK,L
|
|
PRINTI ".
|
|
"
|
|
RETURN L
|
|
|
|
|
|
.FUNCT V-FOLLOW,L
|
|
EQUAL? PRSO,WINNER \?CCL3
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSO,GHOST-NEW /?CCL5
|
|
FSET? PRSO,PERSONBIT /?CCL5
|
|
PRINTI "How tragic to see you, a"
|
|
PRINT FAMOUS-YOUNG-DETECTIVE
|
|
PRINTI ", stalking "
|
|
CALL PRINTA,PRSO
|
|
PRINTR "!"
|
|
?CCL5: CALL META-LOC,PRSO >L
|
|
EQUAL? HERE,L \?CCL11
|
|
PRINTI "You're in the same place as"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTR "!"
|
|
?CCL11: GETP PRSO,P?CHARACTER
|
|
GET FOLLOW-LOC,STACK >L
|
|
ZERO? L /?CCL15
|
|
CALL PERFORM,V?WALK-TO,L
|
|
RSTACK
|
|
?CCL15: CALL WHO-KNOWS?,PRSO
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-FOO
|
|
PRINTR "[Foo!! This is a bug!!]"
|
|
|
|
|
|
.FUNCT V-FORGIVE
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-GIVE
|
|
EQUAL? PRSI,PLAYER,PLAYER-NAME /FALSE
|
|
CALL NOT-HOLDING?,PRSO
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-GIVE
|
|
ZERO? PRSI \?CCL3
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL3: FSET? PRSI,PERSONBIT /?CCL5
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE
|
|
PRINTI " can't give "
|
|
CALL PRINTA,PRSO
|
|
PRINTI " to "
|
|
CALL PRINTA,PRSI
|
|
PRINTR "!"
|
|
?CCL5: EQUAL? PRSI,PLAYER \?CCL9
|
|
CALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL9: EQUAL? PRSO,LUGGAGE \?CCL11
|
|
FIRST? PRSO \?CCL11
|
|
FSET? YOUR-ROOM,TOUCHBIT \?CCL11
|
|
CALL HE-SHE-IT,PRSI,TRUE-VALUE,STR?105
|
|
PRINTR " your gift."
|
|
?CCL11: MOVE PRSO,PRSI
|
|
CALL HE-SHE-IT,PRSI,TRUE-VALUE,STR?106
|
|
PRINTI " your gift."
|
|
CRLF
|
|
CALL TREASURE-FOUND?,PRSO,PRSI
|
|
GETP PRSI,P?CHARACTER
|
|
EQUAL? VARIATION,STACK \TRUE
|
|
FSET? PRSO,RMUNGBIT /?CCL20
|
|
EQUAL? PRSO,BLOWGUN,COSTUME \TRUE
|
|
?CCL20: SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-SGIVE,X
|
|
GET P-NAMW,0 >X
|
|
GET P-NAMW,1
|
|
PUT P-NAMW,0,STACK
|
|
PUT P-NAMW,1,X
|
|
CALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SGIVE
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-HELLO,P,WORD=0
|
|
EQUAL? P-PRSA-WORD,W?HELLO,W?HI \?CCL3
|
|
SET 'WORD,STR?107
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? P-PRSA-WORD,W?SORRY \?CND1
|
|
SET 'WORD,STR?108
|
|
?CND1: EQUAL? PRSO,ROOMS /?CCL7
|
|
FSET? PRSO,PERSONBIT /?CCL10
|
|
EQUAL? PRSO,CREW-GLOBAL /?CCL10
|
|
CALL WONT-HELP-TO-TALK-TO,PRSO
|
|
RTRUE
|
|
?CCL10: FSET? PRSO,MUNGBIT \?CCL14
|
|
CALL PERFORM,V?ALARM,PRSO
|
|
RTRUE
|
|
?CCL14: ZERO? WORD /FALSE
|
|
PRINT I-ASSUME
|
|
PRINT WORD
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI ".]"
|
|
CRLF
|
|
RFALSE
|
|
?CCL7: CALL QCONTEXT-GOOD?
|
|
ZERO? STACK /?CCL20
|
|
PRINT I-ASSUME
|
|
PRINTC 32
|
|
PRINTD QCONTEXT
|
|
PRINTI ".]"
|
|
CRLF
|
|
CALL PERFORM,PRSA,QCONTEXT
|
|
RTRUE
|
|
?CCL20: EQUAL? WINNER,PLAYER \?CCL26
|
|
CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P /?CCL26
|
|
PRINT I-ASSUME
|
|
PRINTC 32
|
|
PRINTD P
|
|
PRINTI ".]"
|
|
CRLF
|
|
CALL PERFORM,PRSA,P
|
|
RTRUE
|
|
?CCL26: CALL NOT-CLEAR-WHOM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HELLO
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
FSET? PRSO,MUNGBIT /?CCL6
|
|
ZERO? LIT \?PRG12
|
|
PRINTR """Hello."""
|
|
?PRG12: CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?109
|
|
PRINTR " at you."
|
|
?CCL6: CALL WONT-HELP-TO-TALK-TO,PRSO
|
|
RSTACK
|
|
?CCL3: CALL NOT-CLEAR-WHOM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HELP
|
|
EQUAL? PRSO,FALSE-VALUE,PLAYER \?CCL3
|
|
CALL HELP-TEXT
|
|
RSTACK
|
|
?CCL3: CALL MORE-SPECIFIC
|
|
RSTACK
|
|
|
|
|
|
.FUNCT HELP-TEXT
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "[You'll find plenty of help in your "
|
|
PRINTD MOONMIST
|
|
PRINTR " package.
|
|
If you're really stuck, you can order an InvisiClues (TM) hint booklet and map from your dealer or via mail with the form in your package.]"
|
|
|
|
|
|
.FUNCT V-KILL
|
|
CALL IKILL,STR?110
|
|
RSTACK
|
|
|
|
|
|
.FUNCT IKILL,STR=0
|
|
ZERO? PRSO \?CCL3
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "(There's nothing here to "
|
|
PRINT STR
|
|
PRINTR ".)"
|
|
?CCL3: ZERO? PRSI \?CCL7
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINT YOU-DIDNT-SAY-W
|
|
PRINTI "hat to "
|
|
PRINT STR
|
|
CALL PRINTT,PRSO
|
|
FSET? PRSO,WEAPONBIT \?PRG15
|
|
PRINTI " at"
|
|
JUMP ?PRG17
|
|
?PRG15: PRINTI " with"
|
|
?PRG17: PRINTR ".]"
|
|
?CCL7: FSET? PRSO,PERSONBIT /?PRG21
|
|
CALL HAR-HAR
|
|
RSTACK
|
|
?PRG21: PRINT NO-VIOLENCE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-KISS,X
|
|
EQUAL? PRSO,PLAYER \?CCL3
|
|
PRINTI "You kiss "
|
|
PRINTD PLAYER
|
|
PRINTR " for a minute. Yuk!"
|
|
?CCL3: FSET? PRSO,PERSONBIT \?PRG10
|
|
FSET? PRSO,MUNGBIT /?PRG10
|
|
CALL FACE-RED
|
|
RSTACK
|
|
?PRG10: PRINTR "What a (ahem!) strange idea!"
|
|
|
|
|
|
.FUNCT V-KNOCK,P
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
FSET? PRSO,OPENBIT \?CCL7
|
|
PRINTR "It's open!"
|
|
?CCL7: CALL DOOR-ROOM,HERE,PRSO >P
|
|
ZERO? P /?PRG16
|
|
CALL FIND-FLAG,P,PERSONBIT,PLAYER >P
|
|
ZERO? P /?PRG16
|
|
FCLEAR PRSO,LOCKED
|
|
FSET PRSO,OPENBIT
|
|
FSET PRSO,ONBIT
|
|
CALL UNSNOOZE,P
|
|
CALL THIS-IS-IT,P
|
|
CALL HE-SHE-IT,P,TRUE-VALUE
|
|
PRINTR " opens the door, then retreats into the room."
|
|
?PRG16: PRINTR "There's no answer."
|
|
?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "(Why knock on "
|
|
CALL PRINTA,PRSO
|
|
PRINTR "?)"
|
|
|
|
|
|
.FUNCT V-STAND,P
|
|
EQUAL? WINNER,PLAYER \?CCL3
|
|
IN? PLAYER,HERE /?CCL3
|
|
CALL OWN-FEET
|
|
RSTACK
|
|
?CCL3: CALL ALREADY,WINNER,STR?113
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAP
|
|
ZERO? PRSO /?CCL3
|
|
EQUAL? PRSO,INTDIR /?CCL3
|
|
CALL YOU-CANT
|
|
RTRUE
|
|
?CCL3: EQUAL? HERE,DECK,LOVER-PATH \?CCL7
|
|
PRINTI "This was not a very safe place to try jumping."
|
|
CALL FINISH
|
|
RSTACK
|
|
?CCL7: CALL V-SKIP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SKIP
|
|
CALL WHEE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WHEE,X
|
|
RANDOM 5 >X
|
|
EQUAL? 1,X \?CCL3
|
|
PRINTR "Very good. Now you can go to the second grade."
|
|
?CCL3: EQUAL? 2,X \?CCL7
|
|
PRINTR "I hope you enjoyed that more than I did."
|
|
?CCL7: EQUAL? 3,X \?CCL11
|
|
PRINTI "Are you enjoying "
|
|
PRINTD PLAYER
|
|
PRINTR "?"
|
|
?CCL11: EQUAL? 4,X \?PRG18
|
|
PRINTR "Wheeeeeeeeee!!!!!"
|
|
?PRG18: PRINTR "Do you expect someone to applaud?"
|
|
|
|
|
|
.FUNCT V-LEAVE,GT
|
|
EQUAL? WINNER,FOLLOWER \?CND1
|
|
SET 'FOLLOWER,0
|
|
?CND1: EQUAL? PRSO,ROOMS,HERE,GLOBAL-HERE \?CCL5
|
|
CALL DO-WALK,P?OUT
|
|
PUTP WINNER,P?LDESC,9
|
|
EQUAL? WINNER,FRIEND \TRUE
|
|
EQUAL? VARIATION,FRIEND-C /TRUE
|
|
GET GOAL-TABLES,FRIEND-C >GT
|
|
LESS? BED-TIME,PRESENT-TIME \?CCL12
|
|
EQUAL? HERE,TAMARA-ROOM /TRUE
|
|
PUT GT,GOAL-FUNCTION,X-RETIRES
|
|
CALL ESTABLISH-GOAL,FRIEND,TAMARA-ROOM
|
|
RTRUE
|
|
?CCL12: PUT GT,GOAL-FUNCTION,NULL-F
|
|
IN? LORD,HERE /TRUE
|
|
LOC LORD
|
|
CALL ESTABLISH-GOAL,FRIEND,STACK
|
|
RTRUE
|
|
?CCL5: LOC PRSO
|
|
EQUAL? STACK,PLAYER \?CCL18
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL18: LOC WINNER
|
|
EQUAL? STACK,PRSO /?CCL20
|
|
CALL TELL-NOT-IN,PRSO
|
|
RETURN 2
|
|
?CCL20: CALL DO-WALK,P?OUT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-LIE
|
|
CALL ROOM-CHECK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LIE
|
|
CALL V-SIT,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-LISTEN
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
GETP PRSO,P?LDESC
|
|
EQUAL? STACK,22 \?CCL3
|
|
CALL PERFORM,V?LISTEN,PIANO
|
|
RTRUE
|
|
?CCL3: CALL PRE-ASK-ABOUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LISTEN
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
FSET? PRSO,MUNGBIT /?CCL3
|
|
CALL WAITING-FOR-YOU-TO-SPEAK
|
|
RTRUE
|
|
?CCL3: CALL TOO-BAD-BUT,PRSO
|
|
PRINTR " makes no sound."
|
|
|
|
|
|
.FUNCT V-LOCK
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
EQUAL? PRSO,HERE \?CCL6
|
|
CALL OKAY,PRSO,STR?67
|
|
RSTACK
|
|
?CCL6: CALL TELL-FIND-NONE,STR?114,PRSO
|
|
RSTACK
|
|
?CCL3: CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK
|
|
CALL DESCRIBE-ROOM,TRUE-VALUE
|
|
ZERO? STACK /FALSE
|
|
CALL DESCRIBE-OBJECTS
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-BEHIND
|
|
FSET? PRSO,DOORBIT \?PRG6
|
|
FSET? PRSO,OPENBIT /?PRG6
|
|
CALL TOO-BAD-BUT,PRSO,STR?61
|
|
RSTACK
|
|
?PRG6: PRINTI "There's nothing behind"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-LOOK-DOWN
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
PRINTI "You see nothing suspicious "
|
|
CALL GROUND-DESC
|
|
PRINT STACK
|
|
PRINTR "."
|
|
?CCL3: CALL HAR-HAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-LOOK-INSIDE
|
|
CALL ROOM-CHECK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-INSIDE,DIR=P?IN,RM
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
EQUAL? DIR,P?OUT \?CCL5
|
|
CALL GLOBAL-IN?,WINDOW,HERE
|
|
ZERO? STACK /?CND1
|
|
CALL PERFORM,PRSA,WINDOW,PRSI
|
|
RTRUE
|
|
?CCL5: SET 'RM,P-IT-OBJECT
|
|
FSET? RM,CONTBIT /?CCL9
|
|
CALL FIND-FLAG-LG,HERE,CONTBIT >RM
|
|
ZERO? RM \?CCL9
|
|
SET 'RM,WINDOW
|
|
CALL GLOBAL-IN?,RM,HERE
|
|
ZERO? STACK \?CCL9
|
|
CALL FIND-FLAG-LG,HERE,DOORBIT >RM
|
|
ZERO? RM /?CND1
|
|
?CCL9: CALL TELL-I-ASSUME,RM
|
|
CALL PERFORM,PRSA,RM,PRSI
|
|
RTRUE
|
|
?CND1: EQUAL? PRSO,GLOBAL-HERE \?CCL16
|
|
CALL PERFORM,V?LOOK
|
|
RTRUE
|
|
?CCL16: IN? PRSO,ROOMS \?CCL18
|
|
CALL NOUN-USED?,W?DOOR
|
|
ZERO? STACK \?CCL18
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK \?CTR17
|
|
CALL SEE-INTO?,PRSO,FALSE-VALUE
|
|
ZERO? STACK /?CCL18
|
|
?CTR17: CALL ROOM-PEEK,PRSO
|
|
RSTACK
|
|
?CCL18: CALL V-LOOK-THROUGH,TRUE-VALUE
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,CONTBIT /?CTR26
|
|
FSET? PRSO,SURFACEBIT \?CCL27
|
|
?CTR26: CALL SEE-INSIDE?,PRSO,TRUE-VALUE
|
|
ZERO? STACK \?CND30
|
|
CALL FIRST-YOU,STR?66,PRSO
|
|
?CND30: FIRST? PRSO \?CCL34
|
|
PRINTI "You can see"
|
|
CALL PRINT-CONTENTS,PRSO
|
|
FSET? PRSO,SURFACEBIT \?PRG42
|
|
PRINTI " on"
|
|
JUMP ?PRG44
|
|
?PRG42: PRINTI " inside"
|
|
?PRG44: CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
?CCL34: EQUAL? PRSO,SIDEBOARD,CHAIR-DINING /?CTR46
|
|
EQUAL? PRSO,TABLE-DINING,PIANO,WYVERN /?CTR46
|
|
EQUAL? PRSO,COAT-RACK,WRITING-DESK,VICTORIA-CHAIR \?CCL47
|
|
?CTR46: CALL TELL-LIKE-BROCHURE
|
|
RSTACK
|
|
?CCL47: FSET? PRSO,SURFACEBIT \?CCL52
|
|
PRINTI "There's nothing on"
|
|
CALL HIM-HER-IT,PRSO
|
|
IN? PLAYER,PRSO \?PRG59
|
|
PRINTI " except you"
|
|
?PRG59: PRINTR "."
|
|
?CCL52: CALL TOO-BAD-BUT,PRSO,STR?100
|
|
RSTACK
|
|
?CCL27: EQUAL? DIR,P?IN \?CCL62
|
|
CALL YOU-CANT,STR?115
|
|
RSTACK
|
|
?CCL62: CALL YOU-CANT,STR?116
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FIRST-YOU,STR,OBJ=0,OBJ2=0
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR
|
|
ZERO? OBJ /?PRG13
|
|
CALL PRINTT,OBJ
|
|
EQUAL? STR,STR?66 \?CND7
|
|
FSET OBJ,OPENBIT
|
|
?CND7: ZERO? OBJ2 /?PRG13
|
|
PRINTI " from"
|
|
CALL PRINTT,OBJ2
|
|
?PRG13: PRINTR " first.)"
|
|
|
|
|
|
.FUNCT V-LOOK-THROUGH,INSIDE=0,RM
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
FSET? PRSO,OPENBIT /?CTR5
|
|
FSET? PRSO,TRANSBIT \?CCL6
|
|
?CTR5: CALL DOOR-ROOM,HERE,PRSO >RM
|
|
ZERO? RM /?CCL11
|
|
CALL ROOM-PEEK,RM,TRUE-VALUE
|
|
RSTACK
|
|
?CCL11: CALL NO-BEYOND
|
|
RSTACK
|
|
?CCL6: CALL ZMEMQ,PRSO,CHAR-ROOM-TABLE
|
|
ZERO? STACK /?CCL13
|
|
CALL PERFORM,PRSA,KEYHOLE
|
|
RTRUE
|
|
?CCL13: CALL TOO-BAD-BUT,PRSO,STR?61
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSO,WINDOW \?CCL15
|
|
CALL NO-BEYOND
|
|
RSTACK
|
|
?CCL15: FSET? PRSO,PERSONBIT \?CCL18
|
|
PRINTR "You forgot to bring your X-ray glasses."
|
|
?CCL18: ZERO? INSIDE \FALSE
|
|
FSET? PRSO,TRANSBIT \?CCL24
|
|
PRINTR "Everything looks bigger."
|
|
?CCL24: CALL YOU-CANT,STR?117
|
|
RSTACK
|
|
|
|
|
|
.FUNCT NO-BEYOND
|
|
PRINTI "You can't tell what's beyond"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT ROOM-PEEK,RM,SAFE=0,X=0,OHERE,OLIT,TXT
|
|
EQUAL? RM,HERE \?CCL3
|
|
CALL V-LOOK
|
|
RTRUE
|
|
?CCL3: ZERO? SAFE \?CCL5
|
|
CALL SEE-INTO?,RM
|
|
ZERO? STACK /FALSE
|
|
?CCL5: SET 'OHERE,HERE
|
|
SET 'OLIT,LIT
|
|
SET 'HERE,RM
|
|
CALL MAKE-ALL-PEOPLE,-12
|
|
CALL LIT? >LIT
|
|
PRINTI "You peer "
|
|
FSET? RM,SURFACEBIT \?PRG15
|
|
PRINTI "at"
|
|
JUMP ?PRG17
|
|
?PRG15: PRINTI "into"
|
|
?PRG17: CALL HIM-HER-IT,RM
|
|
PRINTC 58
|
|
CRLF
|
|
CALL DESCRIBE-OBJECTS
|
|
ZERO? STACK /?CCL21
|
|
SET 'X,TRUE-VALUE
|
|
JUMP ?CND19
|
|
?CCL21: GETP RM,P?LDESC >TXT
|
|
ZERO? TXT /?CND19
|
|
SET 'X,TRUE-VALUE
|
|
PRINT TXT
|
|
CRLF
|
|
?CND19: ZERO? X \?CND25
|
|
PRINTI "You can't see anything suspicious."
|
|
CRLF
|
|
?CND25: SET 'HERE,OHERE
|
|
SET 'LIT,OLIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SEE-INTO?,THERE,TELL?=1,IGNORE-DOOR=0,P,L,TBL,O
|
|
CALL CORRIDOR-LOOK,THERE
|
|
ZERO? STACK \TRUE
|
|
SET 'P,0
|
|
?PRG3: NEXTP HERE,P >P
|
|
ZERO? P /?CCL6
|
|
LESS? P,LOW-DIRECTION \?CND5
|
|
?CCL6: ZERO? TELL? /FALSE
|
|
CALL TELL-CANT-FIND
|
|
RFALSE
|
|
?CND5: GETPT HERE,P >TBL
|
|
PTSIZE TBL >L
|
|
EQUAL? L,UEXIT \?CCL13
|
|
GETB TBL,REXIT
|
|
EQUAL? STACK,THERE \?PRG3
|
|
RTRUE
|
|
?CCL13: EQUAL? L,DEXIT \?CCL17
|
|
GETB TBL,REXIT
|
|
EQUAL? STACK,THERE \?PRG3
|
|
GETB TBL,DEXITOBJ
|
|
FSET? STACK,OPENBIT /TRUE
|
|
GETB TBL,DEXITOBJ
|
|
CALL WALK-THRU-DOOR?,TBL,STACK,FALSE-VALUE
|
|
ZERO? STACK \TRUE
|
|
ZERO? IGNORE-DOOR \TRUE
|
|
ZERO? TELL? /FALSE
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "(The door to that room is closed.)"
|
|
CRLF
|
|
RFALSE
|
|
?CCL17: EQUAL? L,CEXIT \?PRG3
|
|
GETB TBL,REXIT
|
|
EQUAL? STACK,THERE \?PRG3
|
|
GETB TBL,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK \TRUE
|
|
ZERO? TELL? /FALSE
|
|
CALL TELL-CANT-FIND
|
|
RFALSE
|
|
|
|
|
|
.FUNCT TELL-CANT-FIND
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(That place isn't close enough.)"
|
|
|
|
|
|
.FUNCT V-LOOK-ON
|
|
FSET? PRSO,SURFACEBIT \?PRG4
|
|
CALL V-LOOK-INSIDE
|
|
RSTACK
|
|
?PRG4: PRINTI "There's no good surface on"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-LOOK-OUTSIDE
|
|
CALL V-LOOK-INSIDE,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-LOOK-UNDER
|
|
CALL ROOM-CHECK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-UNDER
|
|
EQUAL? PRSO,HEAD,HANDS,EYE \?CCL3
|
|
CALL WONT-HELP
|
|
RSTACK
|
|
?CCL3: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
PRINTI "You're "
|
|
FSET? PRSO,WORNBIT \?PRG13
|
|
PRINTI "wear"
|
|
JUMP ?PRG15
|
|
?PRG13: PRINTI "hold"
|
|
?PRG15: PRINTI "ing"
|
|
CALL PRINTT,PRSO
|
|
PRINTR "!"
|
|
?CCL5: FSET? PRSO,PERSONBIT \?CCL18
|
|
PRINTI "Nope. Nothing hiding under"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
?CCL18: LOC PRSO
|
|
EQUAL? STACK,VIVIEN-BOX,WENDISH-KIT \?CCL22
|
|
PRINTR "There's more stuff there."
|
|
?CCL22: LOC PRSO
|
|
EQUAL? STACK,HERE,LOCAL-GLOBALS \?PRG30
|
|
PRINTR "There's nothing there but dust."
|
|
?PRG30: PRINTR "That's not a bit useful."
|
|
|
|
|
|
.FUNCT V-LOOK-UP,HR
|
|
ZERO? PRSI /?CCL3
|
|
PRINTI "There's no information in"
|
|
CALL PRINTT,PRSI
|
|
PRINTI " about"
|
|
CALL PRINTT,PRSO
|
|
PRINTR "."
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CCL7
|
|
CALL OUTSIDE?,HERE
|
|
ZERO? STACK /?CCL10
|
|
CALL PERFORM,V?EXAMINE,MOON
|
|
RTRUE
|
|
?CCL10: CALL CREEPY?,HERE
|
|
ZERO? STACK /?PRG21
|
|
PRINTI "Shadows play on the stone ceiling"
|
|
EQUAL? HERE,SITTING-PASSAGE \?PRG19
|
|
PRINTI " and"
|
|
CALL PRINTT,SECRET-SITTING-DOOR
|
|
?PRG19: PRINTR "."
|
|
?PRG21: PRINTI "The ceiling is decorated with swirly lines and patterns."
|
|
EQUAL? HERE,TAMARA-ROOM \?CND23
|
|
GETP LUMBER-ROOM,P?CORRIDOR
|
|
ZERO? STACK /?CND23
|
|
PRINTR " There's a hole directly over the bed."
|
|
?CND23: CRLF
|
|
RTRUE
|
|
?CCL7: CALL YOU-CANT,STR?118
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-MEET
|
|
IN? PRSO,HERE \?CCL3
|
|
CALL PERFORM,V?HELLO,PRSO
|
|
RTRUE
|
|
?CCL3: CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MEET
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-MOVE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /FALSE
|
|
PRINTR "Juggling isn't one of your talents."
|
|
|
|
|
|
.FUNCT V-MOVE
|
|
FSET? PRSO,TAKEBIT \?CCL3
|
|
PRINTI "Moving"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR " reveals nothing."
|
|
?CCL3: CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-MOVE-DIR
|
|
EQUAL? PRSI,INTDIR /FALSE
|
|
CALL DONT-UNDERSTAND
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MOVE-DIR
|
|
PRINTI "You can't move"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI " in any particular "
|
|
PRINTD INTDIR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-NOD
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL3: ZERO? AWAITING-REPLY /?CCL5
|
|
CALL PERFORM,V?YES
|
|
RTRUE
|
|
?CCL5: CALL PERFORM,V?HELLO,ROOMS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-OPEN,F,STR
|
|
FSET? PRSO,CONTBIT /?CCL3
|
|
FSET? PRSO,DOORBIT /?CCL3
|
|
EQUAL? PRSO,WINDOW /?CCL3
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,DOORBIT /?CTR7
|
|
EQUAL? PRSO,WINDOW /?CTR7
|
|
GETP PRSO,P?CAPACITY
|
|
ZERO? STACK /?CCL8
|
|
?CTR7: FSET? PRSO,LOCKED \?CND12
|
|
CALL UNLOCK-DOOR?,PRSO
|
|
ZERO? STACK /?CCL16
|
|
FCLEAR PRSO,LOCKED
|
|
CALL FIRST-YOU,STR?119,PRSO
|
|
?CND12: FSET? PRSO,OPENBIT \?CCL19
|
|
CALL ALREADY,PRSO,STR?66
|
|
RSTACK
|
|
?CCL16: CALL TOO-BAD-BUT,PRSO,STR?67
|
|
RTRUE
|
|
?CCL19: FSET PRSO,OPENBIT
|
|
FSET? PRSO,DOORBIT /?CTR21
|
|
EQUAL? PRSO,WINDOW /?CTR21
|
|
FIRST? PRSO \?CTR21
|
|
FSET? PRSO,TRANSBIT \?PRG27
|
|
?CTR21: CALL OKAY,PRSO,STR?66
|
|
RSTACK
|
|
?PRG27: PRINTI "You open"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI " and see"
|
|
CALL PRINT-CONTENTS,PRSO
|
|
PRINTR "."
|
|
?CCL8: CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-OPEN-WITH
|
|
CALL NOT-HOLDING?,PRSI
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-OPEN-WITH
|
|
CALL PERFORM,V?OPEN,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PLAY
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "[Speaking of playing, you'd enjoy Infocom's other fictions, too!]"
|
|
|
|
|
|
.FUNCT V-POUR
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PRAY
|
|
PRINTR """From ghoulies and ghosties and long-leggety beasties
|
|
And things that go bump in the night, Good Lord, deliver us!"""
|
|
|
|
|
|
.FUNCT V-PUSH
|
|
CALL HACK-HACK,STR?120
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WEAR-CHECK,X
|
|
EQUAL? NOW-WEARING,PRSO \FALSE
|
|
CALL NOUN-USED?,W?CLOTHES
|
|
ZERO? STACK /?CCL6
|
|
CALL FIND-OUTFIT >X
|
|
ZERO? X /?CCL6
|
|
CALL TELL-I-ASSUME,X
|
|
SET 'PRSO,X
|
|
RFALSE
|
|
?CCL6: CALL YOU-CANT,FALSE-VALUE,FALSE-VALUE,STR?121
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-PUT
|
|
CALL WEAR-CHECK
|
|
ZERO? STACK \TRUE
|
|
FCLEAR PRSO,WORNBIT
|
|
EQUAL? PRSO,OTHER-OUTFIT,HANDS,HEAD \?CCL5
|
|
CALL WONT-HELP
|
|
RTRUE
|
|
?CCL5: IN? PRSO,GLOBAL-OBJECTS \?CCL7
|
|
CALL NOT-HERE,PRSO
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSI,GLOBAL-HERE,FLOOR /FALSE
|
|
IN? PRSI,GLOBAL-OBJECTS \FALSE
|
|
CALL NOT-HERE,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUT
|
|
FSET? PRSI,PERSONBIT \?CCL3
|
|
SET 'WINNER,PRSI
|
|
CALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSI,SURFACEBIT /?CND1
|
|
EQUAL? PRSI,BOOKCASE /?CND1
|
|
FSET? PRSI,VEHBIT /?CND1
|
|
PRINTI "There's no good surface on"
|
|
CALL HIM-HER-IT,PRSI
|
|
PRINTR "."
|
|
?CND1: CALL PUT-ON-OR-IN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TELL-FIND-NONE,STR,OBJ=0
|
|
PRINTI "You search for "
|
|
PRINT STR
|
|
ZERO? OBJ /?PRG7
|
|
CALL PRINTT,OBJ
|
|
?PRG7: PRINTR " but find none."
|
|
|
|
|
|
.FUNCT PRE-PUT-IN
|
|
GET P-OFW,1
|
|
EQUAL? STACK,W?FRONT \?CCL3
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSI,PSEUDO-OBJECT /?CTR4
|
|
EQUAL? PRSI,FIREPLACE,EARRING,CHAIR \?CCL5
|
|
?CTR4: CALL PRE-PUT
|
|
RSTACK
|
|
?CCL5: EQUAL? PRSI,MOONMIST,INKWELL \?CCL9
|
|
CALL YOU-SHOULDNT,STR?122
|
|
RETURN 2
|
|
?CCL9: EQUAL? PRSI,PEEPHOLE-2,PEEPHOLE,OCEAN /?CTR12
|
|
EQUAL? PRSI,HOLE-IN-WALL,HANDS,EYE \?CCL13
|
|
?CTR12: CALL WONT-HELP
|
|
RETURN 2
|
|
?CCL13: FSET? PRSI,READBIT \?CCL19
|
|
CALL WONT-HELP
|
|
RETURN 2
|
|
?CCL19: FSET? PRSI,CONTBIT /?CND1
|
|
CALL TELL-FIND-NONE,STR?101,PRSI
|
|
RETURN 2
|
|
?CND1: FSET? PRSI,OPENBIT /?CND25
|
|
CALL FIRST-YOU,STR?66,PRSI
|
|
?CND25: CALL PRE-PUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-IN
|
|
FSET? PRSI,OPENBIT /?CND1
|
|
FSET? PRSI,VEHBIT /?CND1
|
|
FSET? PRSI,DOORBIT /?CTR6
|
|
FSET? PRSI,CONTBIT \?PRG10
|
|
?CTR6: CALL TOO-BAD-BUT,PRSI,STR?61
|
|
RTRUE
|
|
?PRG10: PRINTI "You can't open"
|
|
CALL HIM-HER-IT,PRSI
|
|
PRINTR "."
|
|
?CND1: CALL PUT-ON-OR-IN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PUT-ON-OR-IN,?TMP1,?TMP2
|
|
ZERO? PRSI \?CCL3
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSI,PRSO \?CCL5
|
|
CALL HAR-HAR
|
|
RSTACK
|
|
?CCL5: IN? PRSO,PRSI \?CCL7
|
|
CALL TOO-BAD-BUT,PRSO
|
|
PRINTI " is already "
|
|
FSET? PRSI,SURFACEBIT \?CCL12
|
|
PUSH STR?64
|
|
JUMP ?CND10
|
|
?CCL12: PUSH STR?124
|
|
?CND10: PRINT STACK
|
|
CALL HIM-HER-IT,PRSI
|
|
PRINTR "!"
|
|
?CCL7: CALL WEIGHT,PRSI >?TMP2
|
|
GETP PRSO,P?SIZE
|
|
ADD ?TMP2,STACK >?TMP1
|
|
GETP PRSI,P?CAPACITY
|
|
GRTR? ?TMP1,STACK \?CCL14
|
|
PRINT NOT-ENOUGH-ROOM
|
|
RTRUE
|
|
?CCL14: CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL18
|
|
CALL ITAKE
|
|
ZERO? STACK /TRUE
|
|
?CCL18: MOVE PRSO,PRSI
|
|
FSET PRSO,TOUCHBIT
|
|
FSET? PRSI,PERSONBIT \?PRG25
|
|
FSET? PRSO,WEARBIT \?PRG25
|
|
FSET PRSO,WORNBIT
|
|
?PRG25: PRINTR "Okay."
|
|
|
|
|
|
.FUNCT WEIGHT,OBJ,CONT,WT=0
|
|
FIRST? OBJ >CONT /?PRG3
|
|
RETURN WT
|
|
?PRG3: GETP CONT,P?SIZE
|
|
ADD WT,STACK >WT
|
|
NEXT? CONT >CONT /?PRG3
|
|
RETURN WT
|
|
|
|
|
|
.FUNCT V-PUT-UNDER
|
|
PRINT NOT-ENOUGH-ROOM
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-SREAD
|
|
CALL PERFORM,V?READ,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SREAD
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-READ,VAL
|
|
IN? PRSO,GLOBAL-OBJECTS \FALSE
|
|
CALL NOT-HERE,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-READ
|
|
FSET? PRSO,READBIT /?PRG4
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?PRG4: GETP PRSO,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REMOVE
|
|
FSET? PRSO,WORNBIT \?CCL3
|
|
CALL PERFORM,V?TAKE-OFF,PRSO
|
|
RTRUE
|
|
?CCL3: CALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RING
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RUB
|
|
FSET? PRSO,PERSONBIT \?CCL3
|
|
FSET? PRSO,MUNGBIT /?CCL3
|
|
EQUAL? PRSO,PLAYER /?CCL3
|
|
CALL FACE-RED
|
|
RSTACK
|
|
?CCL3: CALL HACK-HACK,STR?125
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SAY,P
|
|
CALL QCONTEXT-GOOD?
|
|
ZERO? STACK /?CCL3
|
|
CALL PERFORM,V?TELL,QCONTEXT
|
|
RTRUE
|
|
?CCL3: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P /?CCL5
|
|
CALL TELL-I-ASSUME,P,STR?126
|
|
CALL PERFORM,V?TELL,P
|
|
RTRUE
|
|
?CCL5: CALL NOT-CLEAR-WHOM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-SEARCH
|
|
CALL ROOM-CHECK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SEARCH,OBJ
|
|
IN? PRSO,ROOMS \?CCL3
|
|
CALL PERFORM,PRSA,GLOBAL-HERE
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PERSONBIT \?CCL5
|
|
FIRST? PRSO >OBJ \?CCL5
|
|
FSET OBJ,TAKEBIT
|
|
FCLEAR OBJ,NDESCBIT
|
|
FCLEAR OBJ,WORNBIT
|
|
FCLEAR OBJ,SECRETBIT
|
|
CALL THIS-IS-IT,OBJ
|
|
MOVE OBJ,PLAYER
|
|
PRINTI "You find "
|
|
CALL PRINTA,OBJ
|
|
PRINTI " and take it. "
|
|
PRINTC 89
|
|
PRINT OU-STOP-SEARCHING
|
|
PRINTR "."
|
|
?CCL5: CALL FIND-FLAG,PRSO,SECRETBIT >OBJ
|
|
ZERO? OBJ /?CCL11
|
|
CALL DISCOVER,OBJ,PRSO
|
|
RSTACK
|
|
?CCL11: FSET? PRSO,DOORBIT \?CCL14
|
|
CALL NOTHING-SPECIAL
|
|
RSTACK
|
|
?CCL14: FSET? PRSO,CONTBIT /?CTR15
|
|
FSET? PRSO,SURFACEBIT \?CCL16
|
|
?CTR15: CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
?CCL16: CALL NOTHING-SPECIAL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DISCOVER,OBJ,WHERE=0
|
|
EQUAL? OBJ,YOUR-SWITCH /?CND1
|
|
FCLEAR OBJ,NDESCBIT
|
|
?CND1: FCLEAR OBJ,SECRETBIT
|
|
FCLEAR OBJ,WORNBIT
|
|
ZERO? WHERE \?CND3
|
|
LOC OBJ >WHERE
|
|
?CND3: EQUAL? OBJ,MOONMIST,YOUR-SWITCH /?CND5
|
|
FSET OBJ,TAKEBIT
|
|
?CND5: EQUAL? WHERE,COFFIN,INKWELL,JEWELRY-CASE \?CCL9
|
|
PRINTI "Inside the "
|
|
PRINTD WHERE
|
|
JUMP ?CND7
|
|
?CCL9: EQUAL? WHERE,PAINT \?CCL14
|
|
PRINTI "Under the "
|
|
PRINTD WHERE
|
|
JUMP ?CND7
|
|
?CCL14: EQUAL? HERE,GARDEN \?CCL18
|
|
PRINTI "Buried in the dirt"
|
|
JUMP ?CND7
|
|
?CCL18: EQUAL? HERE,CRYPT \?CCL23
|
|
PRINTI "Hanging on the neck of the "
|
|
PRINTD WHERE
|
|
JUMP ?CND7
|
|
?CCL23: EQUAL? HERE,YOUR-ROOM \?CCL27
|
|
PRINTI "Behind the "
|
|
PRINTD YOUR-MIRROR
|
|
JUMP ?CND7
|
|
?CCL27: EQUAL? HERE,GREAT-HALL \?CCL31
|
|
PRINTI "Inside the helmet of the "
|
|
PRINTD ARMOR
|
|
JUMP ?CND7
|
|
?CCL31: EQUAL? HERE,CHAPEL \?CCL35
|
|
PRINTI "Stuck on the apple of the "
|
|
PRINTD STAINED-WINDOW
|
|
JUMP ?CND7
|
|
?CCL35: EQUAL? HERE,GAME-ROOM \?CCL39
|
|
PRINTI "Hidden behind the "
|
|
PRINTD GLASS-EYE
|
|
PRINTI " of the "
|
|
PRINTD RHINO-HEAD
|
|
JUMP ?CND7
|
|
?CCL39: EQUAL? HERE,WENDISH-ROOM \?CCL43
|
|
PRINTI "Underneath some items in the "
|
|
PRINTD WENDISH-KIT
|
|
JUMP ?CND7
|
|
?CCL43: EQUAL? HERE,TAMARA-ROOM \?CCL47
|
|
PRINTI "Neatly hidden under the bed"
|
|
JUMP ?CND7
|
|
?CCL47: EQUAL? HERE,JACK-ROOM \?CCL51
|
|
PRINTI "Inside a drawer of the tallboy"
|
|
JUMP ?CND7
|
|
?CCL51: EQUAL? HERE,STUDY,LUMBER-ROOM \?CCL55
|
|
PRINTI "Among some papers"
|
|
JUMP ?CND7
|
|
?CCL55: EQUAL? HERE,VIVIEN-ROOM \?CCL59
|
|
PRINTI "Inside"
|
|
CALL PRINTT,VIVIEN-BOX
|
|
JUMP ?CND7
|
|
?CCL59: FSET? WHERE,SURFACEBIT /?PRG68
|
|
FSET? WHERE,PERSONBIT \?PRG70
|
|
?PRG68: PRINTI "On"
|
|
JUMP ?PRG72
|
|
?PRG70: PRINTI "In"
|
|
?PRG72: CALL PRINTT,WHERE
|
|
?CND7: EQUAL? OBJ,COSTUME \?PRG79
|
|
PRINTI " are a shimmering white gown and blonde wig"
|
|
JUMP ?CND74
|
|
?PRG79: PRINTI " is "
|
|
CALL PRINTA,OBJ
|
|
?CND74: CALL THIS-IS-IT,OBJ
|
|
FSET OBJ,SEENBIT
|
|
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \?CND81
|
|
PRINTI ", so y"
|
|
PRINT OU-STOP-SEARCHING
|
|
?CND81: EQUAL? HERE,TAMARA-ROOM \?PRG96
|
|
MOVE OBJ,PLAYER
|
|
EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \?PRG92
|
|
PRINTI " and "
|
|
JUMP ?PRG94
|
|
?PRG92: PRINTI ", so you "
|
|
?PRG94: PRINTI "take it"
|
|
?PRG96: PRINTI ".
|
|
"
|
|
EQUAL? OBJ,COSTUME \?CCL100
|
|
GET FOUND-COSTUME,PLAYER-C
|
|
ZERO? STACK \?CCL100
|
|
CALL CONGRATS,COSTUME
|
|
JUMP ?CND98
|
|
?CCL100: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,PLAYER >WHERE
|
|
ZERO? WHERE /?CND98
|
|
CALL EVIDENCE?,OBJ,WHERE
|
|
ZERO? STACK \?CND98
|
|
CALL GOOD-SHOW,WHERE,OBJ
|
|
?CND98: EQUAL? OBJ,TREASURE \TRUE
|
|
CALL CONGRATS,ARTIFACT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CONGRATS,FOUND=0
|
|
PRINTI "
|
|
(Congratulations, "
|
|
CALL TITLE-NAME
|
|
PRINTI "! You've "
|
|
EQUAL? FOUND,COSTUME \?PRG8
|
|
PRINT IDENTIFIED-THE-GHOST
|
|
JUMP ?PRG17
|
|
?PRG8: PRINTI "found"
|
|
ZERO? FOUND \?PRG15
|
|
PRINTI " evidence of the crime"
|
|
JUMP ?PRG17
|
|
?PRG15: CALL PRINTT,FOUND
|
|
?PRG17: PRINTI "!)"
|
|
CRLF
|
|
EQUAL? FOUND,ARTIFACT \?CCL21
|
|
SET 'TREASURE-FOUND,TREASURE
|
|
GET FOUND-COSTUME,PLAYER-C
|
|
ZERO? STACK /TRUE
|
|
ZERO? CONFESSED /TRUE
|
|
CALL WRAP-UP
|
|
CALL FINISH
|
|
RTRUE
|
|
?CCL21: EQUAL? FOUND,COSTUME \TRUE
|
|
PUT FOUND-COSTUME,PLAYER-C,TRUE-VALUE
|
|
ZERO? TREASURE-FOUND /TRUE
|
|
ZERO? CONFESSED /TRUE
|
|
CALL WRAP-UP
|
|
CALL FINISH
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-SSEARCH-FOR
|
|
CALL PERFORM,V?SEARCH-FOR,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSEARCH-FOR
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-SEARCH-FOR,OBJ
|
|
CALL ROOM-CHECK
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SEARCH-FOR
|
|
IN? PRSO,ROOMS \?CCL3
|
|
CALL PERFORM,PRSA,GLOBAL-HERE,PRSI
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PERSONBIT \?CCL5
|
|
IN? PRSI,PRSO \?PRG11
|
|
PRINTI "Indeed,"
|
|
CALL HE-SHE-IT,PRSO,0,STR?2
|
|
CALL HIM-HER-IT,PRSI
|
|
PRINTR "."
|
|
?PRG11: CALL START-SENTENCE,PRSO
|
|
PRINTI " doesn't have"
|
|
IN? PRSI,GLOBAL-OBJECTS \?CCL15
|
|
CALL PRINTT,PRSI
|
|
PRINTR "."
|
|
?CCL15: ZERO? PRSI \?PRG22
|
|
PRINTR " that."
|
|
?PRG22: CALL PRINTT,PRSI
|
|
PRINTI " hidden on"
|
|
CALL HIM-HER-IT,PRSO,FALSE-VALUE,TRUE-VALUE
|
|
PRINTR " person."
|
|
?CCL5: FSET? PRSO,CONTBIT \?CCL25
|
|
FSET? PRSO,OPENBIT /?CCL25
|
|
PRINTI "You'll have to open"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR " first."
|
|
?CCL25: IN? PRSI,PRSO \?CCL31
|
|
FSET? PRSI,SECRETBIT \?PRG35
|
|
CALL DISCOVER,PRSI
|
|
RSTACK
|
|
?PRG35: PRINTI "How observant you are! There"
|
|
CALL HE-SHE-IT,PRSI,0,STR?1
|
|
PRINTR "!"
|
|
?CCL31: ZERO? PRSI \?PRG39
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?PRG39: PRINTI "You don't find"
|
|
FSET? PRSI,SECRETBIT \?PRG46
|
|
PRINTI " it"
|
|
JUMP ?PRG48
|
|
?PRG46: CALL HIM-HER-IT,PRSI
|
|
?PRG48: PRINTR " there."
|
|
|
|
|
|
.FUNCT V-SHAKE,X
|
|
FSET? PRSO,TAKEBIT /?CCL3
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(You can't shake it if you can't take it!)"
|
|
?CCL3: FSET? PRSO,OPENBIT /?CCL7
|
|
FIRST? PRSO \?CCL7
|
|
PRINTI "It sounds as if there is something inside"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
?CCL7: FSET? PRSO,OPENBIT \?PRG24
|
|
FIRST? PRSO >X \?PRG24
|
|
PRINTI "Right "
|
|
CALL GROUND-DESC
|
|
PRINT STACK
|
|
PRINTI " spill"
|
|
NEXT? X /?CND20
|
|
PRINTC 115
|
|
?CND20: CALL ROB,PRSO,HERE,TRUE-VALUE
|
|
CRLF
|
|
RTRUE
|
|
?PRG24: PRINTI "You hear nothing inside"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-SHOOT
|
|
ZERO? PRSI /?PRD5
|
|
LOC PRSI
|
|
EQUAL? STACK,WINNER /?CCL3
|
|
?PRD5: CALL FIND-FLAG,WINNER,WEAPONBIT
|
|
ZERO? STACK \?CCL3
|
|
PRINTR "You're not holding anything to shoot with."
|
|
?CCL3: CALL IKILL,STR?128
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-SSHOOT
|
|
CALL PERFORM,V?SHOOT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSHOOT
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SHOW
|
|
EQUAL? PRSO,PLAYER \?CCL3
|
|
SET 'WINNER,PLAYER
|
|
CALL VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL6
|
|
CALL PERFORM,V?EXAMINE,PRSI
|
|
RTRUE
|
|
?CCL6: CALL PERFORM,V?FIND,PRSI
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,PERSONBIT \?PRG11
|
|
FSET? PRSO,MUNGBIT \?CCL8
|
|
?PRG11: PRINTI "Don't wait for"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR " to applaud."
|
|
?CCL8: CALL WHO-CARES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-SSHOW,P
|
|
ZERO? PRSI /?CCL3
|
|
SET 'P-MERGED,TRUE-VALUE
|
|
IN? PRSI,ROOMS \?CND4
|
|
CALL PERFORM,V?TAKE-TO,PRSO,PRSI
|
|
RTRUE
|
|
?CND4: CALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
?CCL3: CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL7
|
|
LOC PRSO
|
|
FSET? STACK,PERSONBIT \?CCL10
|
|
CALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL10: CALL TELL-I-ASSUME,PRSO,STR?129
|
|
CALL PERFORM,V?ASK-CONTEXT-ABOUT,PRSO
|
|
RTRUE
|
|
?CCL7: CALL QCONTEXT-GOOD?
|
|
ZERO? STACK /?CCL12
|
|
CALL PERFORM,V?SHOW,QCONTEXT,PRSO
|
|
RTRUE
|
|
?CCL12: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P /?CCL14
|
|
CALL TELL-I-ASSUME,P,STR?130
|
|
CALL PERFORM,V?SHOW,P,PRSO
|
|
RTRUE
|
|
?CCL14: CALL TELL-I-ASSUME,PLAYER,STR?130
|
|
CALL PERFORM,V?SHOW,PLAYER,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSHOW
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SIGN
|
|
PRINTR "You would use your usual hand."
|
|
|
|
|
|
.FUNCT PRE-SIT
|
|
CALL ROOM-CHECK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SIT,LIE?=0
|
|
EQUAL? WINNER,PLAYER \?CCL3
|
|
FSET? PRSO,VEHBIT /?PRG9
|
|
EQUAL? PRSO,FLOOR,HERE,GLOBAL-HERE \?CCL3
|
|
?PRG9: PRINTI "You're now "
|
|
ZERO? LIE? \?PRG16
|
|
PRINTI "sitt"
|
|
JUMP ?CND11
|
|
?PRG16: PRINTI "ly"
|
|
?CND11: FSET? PRSO,VEHBIT \?PRG20
|
|
MOVE PLAYER,PRSO
|
|
?PRG20: PRINTI "ing "
|
|
FSET? PRSO,SURFACEBIT \?PRG27
|
|
PRINTI "on"
|
|
JUMP ?PRG29
|
|
?PRG27: PRINTI "in"
|
|
?PRG29: CALL PRINTT,PRSO
|
|
PRINTR "."
|
|
?CCL3: CALL WONT-HELP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WONT-HELP
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(That won't help solve this case!)"
|
|
|
|
|
|
.FUNCT V-SIT-AT
|
|
CALL V-SIT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SLAP
|
|
EQUAL? PRSI,ROOMS \?CND1
|
|
SET 'PRSI,FALSE-VALUE
|
|
?CND1: EQUAL? PRSO,PLAYER \?CCL5
|
|
PRINTR "That sounds like a sign you could wear on your back."
|
|
?CCL5: FSET? PRSO,PERSONBIT /?CCL9
|
|
CALL IF-SPY
|
|
RSTACK
|
|
?CCL9: FSET? PRSO,MUNGBIT \?CCL11
|
|
PRINTI "If"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTI " could,"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTR " would slap you right back."
|
|
?CCL11: CALL FACE-RED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT IF-SPY
|
|
ZERO? PRSI \?PRG13
|
|
PRINTI "You give"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI " a swift "
|
|
EQUAL? P-PRSA-WORD,W?KICK \?PRG11
|
|
PRINTI "kick"
|
|
JUMP ?PRG15
|
|
?PRG11: PRINTI "hand chop"
|
|
JUMP ?PRG15
|
|
?PRG13: PRINTI "You swing"
|
|
CALL HIM-HER-IT,PRSI
|
|
PRINTI " at"
|
|
CALL HIM-HER-IT,PRSO
|
|
?PRG15: PRINTI ", but"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTR " seems indestructible."
|
|
|
|
|
|
.FUNCT FACE-RED,P=0,X
|
|
ZERO? P \?CND1
|
|
SET 'P,PRSO
|
|
?CND1: CALL UNSNOOZE,P
|
|
GETP P,P?LINE >X
|
|
ADD 1,X
|
|
PUTP P,P?LINE,STACK
|
|
EQUAL? FOLLOWER,P \?CND3
|
|
SET 'FOLLOWER,FALSE-VALUE
|
|
?CND3: GETP P,P?LDESC
|
|
EQUAL? STACK,4 /?PRG7
|
|
PUTP P,P?LDESC,20
|
|
?PRG7: CALL HE-SHE-IT,P,TRUE-VALUE
|
|
ZERO? X \?PRG14
|
|
PRINTR " looks at you as if you were insane."
|
|
?PRG14: PRINTR " gives you a good slap. It hurts, too!"
|
|
|
|
|
|
.FUNCT V-SMELL
|
|
CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?131
|
|
PRINTI " just like "
|
|
CALL PRINTA,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-SMILE
|
|
CALL HAR-HAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SORRY
|
|
EQUAL? PRSO,CONFESSED \?CCL3
|
|
CALL WONT-HELP-TO-TALK-TO,PRSO
|
|
RSTACK
|
|
?CCL3: CALL GRAB-ATTENTION,PRSO
|
|
ZERO? STACK \?CCL6
|
|
RETURN 2
|
|
?CCL6: GETP PRSO,P?LINE
|
|
LESS? 0,STACK /?CCL10
|
|
PRINTI """I'm not angry with"
|
|
CALL HIM-HER-IT,WINNER
|
|
PRINTR " now."""
|
|
?CCL10: PUTP PRSO,P?LINE,0
|
|
PUTP PRSO,P?LDESC,3
|
|
PRINTR """Apology accepted."""
|
|
|
|
|
|
.FUNCT V-SOUND
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-STOP
|
|
EQUAL? PRSO,FALSE-VALUE,GLOBAL-HERE \?CCL3
|
|
PRINTR "Hey, no problem."
|
|
?CCL3: FSET? PRSO,PERSONBIT \?CCL7
|
|
CALL PERFORM,V?$CALL,PRSO
|
|
RTRUE
|
|
?CCL7: CALL PERFORM,V?LAMP-OFF,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWIM
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE
|
|
PRINTI " can't swim "
|
|
ZERO? PRSO /?PRG8
|
|
PRINTI "in"
|
|
CALL HIM-HER-IT,PRSO
|
|
JUMP ?PRG10
|
|
?PRG8: CALL GROUND-DESC
|
|
PRINT STACK
|
|
?PRG10: PRINTR ".)"
|
|
|
|
|
|
.FUNCT PRE-TAKE,L
|
|
LOC PRSO >L
|
|
EQUAL? PRSO,MOONMIST \?CND1
|
|
EQUAL? VARIATION,DOCTOR-C \?CND1
|
|
IN? MOONMIST,INKWELL \?CND1
|
|
ZERO? TREASURE-FOUND /?CND1
|
|
LOC INKWELL >L
|
|
?CND1: EQUAL? PRSO,KEYHOLE,WALL,FLOOR /?CTR8
|
|
EQUAL? PRSO,TOWER,OTHER-OUTFIT,NOW-WEARING /?CTR8
|
|
EQUAL? PRSO,OCEAN,MOON,CASTLE \?CCL9
|
|
?CTR8: CALL HAR-HAR
|
|
RSTACK
|
|
?CCL9: EQUAL? PRSO,YOU,TREASURE /FALSE
|
|
EQUAL? PRSO,PASSAGE,HANDS,ARTIFACT /FALSE
|
|
EQUAL? PRSO,NIGHTLAMP,LIGHT-GLOBAL \?CCL18
|
|
CALL CREEPY?,HERE
|
|
ZERO? STACK /?PRG22
|
|
CALL NOT-HERE,PRSO
|
|
RSTACK
|
|
?PRG22: PRINTR "The cord isn't long enough."
|
|
?CCL18: EQUAL? PRSO,MIRROR-GLOBAL \?CCL25
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL25: EQUAL? PRSO,UNDRESSED \?CCL27
|
|
CALL NOUN-USED?,W?DRESSE
|
|
ZERO? STACK /?CCL30
|
|
ZERO? PRSI /?CCL33
|
|
CALL PERFORM,V?WEAR,PRSI
|
|
RTRUE
|
|
?CCL33: CALL PERFORM,V?DRESS,WINNER
|
|
RTRUE
|
|
?CCL30: CALL PERFORM,V?UNDRESS,WINNER
|
|
RTRUE
|
|
?CCL27: IN? PRSO,GLOBAL-OBJECTS \?CCL35
|
|
CALL NOT-HERE,PRSO
|
|
RSTACK
|
|
?CCL35: ZERO? L /?CCL37
|
|
FSET? L,CONTBIT \?CCL37
|
|
FSET? L,OPENBIT /?CCL37
|
|
CALL TOO-BAD-BUT,L,STR?61
|
|
RTRUE
|
|
?CCL37: ZERO? PRSI /?CCL42
|
|
EQUAL? PRSI,WALL,L \?CCL45
|
|
SET 'PRSI,FALSE-VALUE
|
|
RFALSE
|
|
?CCL45: FSET? PRSI,SURFACEBIT /?CCL47
|
|
FSET? PRSI,OPENBIT /?CCL47
|
|
FSET? PRSI,PERSONBIT /?CCL47
|
|
CALL TOO-BAD-BUT,PRSI,STR?61
|
|
RTRUE
|
|
?CCL47: EQUAL? PRSI,L /FALSE
|
|
FSET? PRSI,PERSONBIT /?PRG58
|
|
CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?1
|
|
PRINTI "n't in"
|
|
CALL PRINTT,PRSI
|
|
PRINTR "!"
|
|
?PRG58: CALL HE-SHE-IT,PRSI,TRUE-VALUE,STR?5
|
|
PRINTI "n't have"
|
|
CALL PRINTT,PRSO
|
|
PRINTR "!"
|
|
?CCL42: CALL PRE-TAKE-WITH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-TAKE-WITH,X
|
|
EQUAL? PRSO,YOU /FALSE
|
|
FSET? PRSO,PERSONBIT \?CCL5
|
|
EQUAL? PRSO,GHOST-NEW /?CCL5
|
|
EQUAL? P-PRSA-WORD,W?SEIZE,W?GRAB \?CCL5
|
|
CALL PERFORM,V?ARREST,PRSO
|
|
RTRUE
|
|
?CCL5: CALL META-LOC,PRSO
|
|
EQUAL? STACK,GLOBAL-OBJECTS \?CCL10
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK \FALSE
|
|
FSET? PRSO,PERSONBIT /FALSE
|
|
CALL NOT-HERE,PRSO
|
|
RSTACK
|
|
?CCL10: IN? PRSO,WINNER \?CCL17
|
|
CALL ALREADY,PLAYER
|
|
PRINTI "holding"
|
|
CALL PRINTT,PRSO
|
|
PRINTR "!)"
|
|
?CCL17: LOC PRSO
|
|
FSET? STACK,CONTBIT \?CCL21
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?CCL21
|
|
CALL YOU-CANT,STR?132
|
|
RSTACK
|
|
?CCL21: IN? WINNER,PRSO \FALSE
|
|
CALL NOUN-USED?,W?DOOR,W?KEYHOLE
|
|
ZERO? STACK \FALSE
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?1
|
|
PRINTI " in"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR ", nitwit!)"
|
|
|
|
|
|
.FUNCT V-TAKE
|
|
CALL ITAKE
|
|
EQUAL? STACK,TRUE-VALUE \FALSE
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?1
|
|
PRINTI " now holding"
|
|
CALL PRINTT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-TAKE-OFF
|
|
EQUAL? PRSO,NOW-WEARING \?CCL3
|
|
SET 'PRSO,FALSE-VALUE
|
|
CALL V-WEAR
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,WORNBIT \?PRG10
|
|
FCLEAR PRSO,WORNBIT
|
|
PRINTI "Okay,"
|
|
LOC PRSO
|
|
CALL HE-SHE-IT,STACK,0,STR?1
|
|
PRINTI " no longer wearing"
|
|
MOVE PRSO,WINNER
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
?PRG10: LOC PRSO
|
|
CALL HE-SHE-IT,STACK,TRUE-VALUE,STR?1
|
|
PRINTI "n't wearing"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-TAKE-TO
|
|
CALL PERFORM,V?WALK-TO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DISEMBARK
|
|
CALL ROOM-CHECK
|
|
ZERO? STACK \TRUE
|
|
EQUAL? PRSO,GLOBAL-HERE,HERE,ROOMS \?CCL5
|
|
EQUAL? WINNER,PLAYER \?CCL8
|
|
IN? PLAYER,HERE /?CCL8
|
|
CALL OWN-FEET
|
|
RSTACK
|
|
?CCL8: CALL DO-WALK,P?OUT
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,NOW-WEARING \?CCL12
|
|
CALL V-TAKE-OFF
|
|
RTRUE
|
|
?CCL12: LOC PRSO
|
|
EQUAL? STACK,WINNER \?CCL14
|
|
PRINTI "You don't need to take"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTI " out to use"
|
|
CALL HIM-HER-IT,PRSO
|
|
PRINTR "."
|
|
?CCL14: LOC WINNER
|
|
EQUAL? STACK,PRSO /?CCL18
|
|
IN? PLAYER,PRSO /?CCL18
|
|
PRINTI "You're not "
|
|
FSET? PRSO,SURFACEBIT \?PRG28
|
|
PRINTI "on"
|
|
JUMP ?PRG30
|
|
?PRG28: PRINTI "in"
|
|
?PRG30: CALL HIM-HER-IT,PRSO
|
|
PRINTI "!
|
|
"
|
|
RETURN 2
|
|
?CCL18: CALL OWN-FEET
|
|
RSTACK
|
|
|
|
|
|
.FUNCT OWN-FEET
|
|
MOVE WINNER,HERE
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE,STR?1
|
|
PRINTI " on"
|
|
CALL HIM-HER-IT,WINNER,FALSE-VALUE,TRUE-VALUE
|
|
PRINTI " own feet again."
|
|
CRLF
|
|
EQUAL? DRIVEWAY,HERE \TRUE
|
|
CALL ENTER-ROOM
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-HOLD-UP
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL PERFORM,V?STAND
|
|
RTRUE
|
|
?CCL3: CALL WONT-HELP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TELL,P
|
|
EQUAL? PRSO,PLAYER \?CCL3
|
|
EQUAL? WINNER,PLAYER /?CCL6
|
|
SET 'P,WINNER
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK,P
|
|
RTRUE
|
|
?CCL6: ZERO? QCONTEXT /?CCL8
|
|
SET 'QCONTEXT,FALSE-VALUE
|
|
ZERO? P-CONT /?PRG12
|
|
SET 'WINNER,PLAYER
|
|
RETURN WINNER
|
|
?PRG12: PRINTR "Okay, you're not talking to anyone else."
|
|
?CCL8: CALL WONT-HELP-TO-TALK-TO,PLAYER
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
RETURN 2
|
|
?CCL3: FSET? PRSO,PERSONBIT \?CCL17
|
|
FSET? PRSO,MUNGBIT /?CCL17
|
|
CALL UNSNOOZE,PRSO
|
|
SET 'QCONTEXT,PRSO
|
|
ZERO? P-CONT /?PRG23
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
SET 'WINNER,PRSO
|
|
RETURN WINNER
|
|
?PRG23: CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?1
|
|
PRINTC 32
|
|
GET LDESC-STRINGS,12
|
|
PRINT STACK
|
|
PRINTR "."
|
|
?CCL17: CALL WONT-HELP-TO-TALK-TO,PRSO
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT PRE-STELL-ABOUT
|
|
CALL PERFORM,V?TELL-ABOUT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STELL-ABOUT
|
|
CALL V-FOO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-TELL-ABOUT,P
|
|
EQUAL? PRSO,PLAYER-NAME,PLAYER \?CCL3
|
|
CALL QCONTEXT-GOOD?
|
|
ZERO? STACK /?CCL6
|
|
CALL PERFORM,V?ASK-ABOUT,QCONTEXT,PRSI
|
|
RTRUE
|
|
?CCL6: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P /?CCL8
|
|
CALL TELL-I-ASSUME,P,STR?87
|
|
CALL PERFORM,V?ASK-ABOUT,P,PRSI
|
|
RTRUE
|
|
?CCL8: CALL ARENT-TALKING
|
|
RTRUE
|
|
?CCL3: FSET? PRSI,SEENBIT /?CCL11
|
|
FSET? PRSI,TOUCHBIT /?CCL11
|
|
CALL NOT-FOUND,PRSI
|
|
RTRUE
|
|
?CCL11: EQUAL? PRSI,BRICKS,COFFIN,CRYPT /?PRG19
|
|
EQUAL? PRSI,DUNGEON,IRON-MAIDEN,TOMB /?PRG19
|
|
EQUAL? PRSI,WELL \?CCL15
|
|
?PRG19: PRINT ANCIENT-SECRETS
|
|
CRLF
|
|
RTRUE
|
|
?CCL15: CALL PRE-ASK-ABOUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TELL-ABOUT,P
|
|
PRINTR """I'm afraid you'll have to show me instead of telling me."""
|
|
|
|
|
|
.FUNCT PRE-TALK-ABOUT,P
|
|
EQUAL? WINNER,PLAYER /?CCL3
|
|
SET 'P,WINNER
|
|
SET 'WINNER,PLAYER
|
|
CALL PERFORM,V?ASK-ABOUT,P,PRSO
|
|
RTRUE
|
|
?CCL3: CALL QCONTEXT-GOOD?
|
|
ZERO? STACK /?CCL5
|
|
CALL PERFORM,V?ASK-ABOUT,QCONTEXT,PRSO
|
|
RTRUE
|
|
?CCL5: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P /FALSE
|
|
CALL TELL-I-ASSUME,P,STR?133
|
|
CALL PERFORM,V?ASK-ABOUT,P,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TALK-ABOUT
|
|
CALL ARENT-TALKING
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THANKS
|
|
ZERO? PRSO /?CCL3
|
|
FSET? PRSO,PERSONBIT \?CCL6
|
|
FSET? PRSO,MUNGBIT /?CCL6
|
|
PRINT QUITE-WELCOME
|
|
RTRUE
|
|
?CCL6: CALL YOU-CANT
|
|
RSTACK
|
|
?CCL3: CALL QCONTEXT-GOOD?
|
|
ZERO? STACK \?PRG16
|
|
CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER
|
|
ZERO? STACK /?PRG18
|
|
?PRG16: PRINT QUITE-WELCOME
|
|
RTRUE
|
|
?PRG18: PRINTR "You're more than welcome."
|
|
|
|
|
|
.FUNCT V-THROW
|
|
CALL IDROP
|
|
ZERO? STACK /FALSE
|
|
PRINTR "Thrown."
|
|
|
|
|
|
.FUNCT V-THROW-AT
|
|
CALL IDROP
|
|
ZERO? STACK /TRUE
|
|
CALL HE-SHE-IT,PRSI,TRUE-VALUE,STR?5
|
|
PRINTI "n't duck"
|
|
PRINTI " as"
|
|
CALL HE-SHE-IT,PRSO
|
|
PRINTR " flies by."
|
|
|
|
|
|
.FUNCT PRE-THROW-THROUGH
|
|
FCLEAR PRSO,WORNBIT
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-THROW-THROUGH
|
|
FSET? PRSO,PERSONBIT /?CCL3
|
|
PRINTR "Let's not resort to vandalism, please."
|
|
?CCL3: CALL V-THROW
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TIME
|
|
PRINTI "The time is now "
|
|
CALL TIME-PRINT,PRESENT-TIME
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT TIME-PRINT,NUM,HR
|
|
DIV NUM,60 >HR
|
|
GRTR? HR,12 \?CND1
|
|
SUB HR,12 >HR
|
|
?CND1: PRINTN HR
|
|
PRINTC 58
|
|
MOD NUM,60 >HR
|
|
LESS? HR,10 \?PRG9
|
|
PRINTC 48
|
|
?PRG9: PRINTN HR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TURN
|
|
FSET? PRSO,DOORBIT \?PRG6
|
|
FSET? PRSO,OPENBIT \?PRG6
|
|
CALL PERFORM,V?CLOSE,PRSO
|
|
RTRUE
|
|
?PRG6: PRINTR "What do you want that to do?"
|
|
|
|
|
|
.FUNCT V-LAMP-OFF
|
|
FSET? PRSO,LIGHTBIT /?CCL3
|
|
CALL YOU-CANT,STR?44
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,ONBIT /?CCL5
|
|
CALL ALREADY,PRSO,STR?65
|
|
RSTACK
|
|
?CCL5: CALL OKAY,PRSO,STR?65
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LAMP-ON
|
|
FSET? PRSO,ONBIT \?CCL3
|
|
CALL ALREADY,PRSO,STR?64
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,LIGHTBIT \?CCL5
|
|
CALL OKAY,PRSO,STR?64
|
|
RSTACK
|
|
?CCL5: FSET? PRSO,PERSONBIT \?CCL7
|
|
CALL HAR-HAR
|
|
RSTACK
|
|
?CCL7: CALL YOU-CANT,STR?45
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNLOCK
|
|
FSET? PRSO,DOORBIT /?CTR2
|
|
FSET? PRSO,CONTBIT \?CCL3
|
|
GETP PRSO,P?CAPACITY
|
|
ZERO? STACK /?CCL3
|
|
?CTR2: FSET? PRSO,LOCKED /?CCL10
|
|
CALL ALREADY,PRSO,STR?68
|
|
RSTACK
|
|
?CCL10: CALL UNLOCK-DOOR?,PRSO
|
|
ZERO? STACK \?CCL12
|
|
CALL YOU-CANT
|
|
RSTACK
|
|
?CCL12: FCLEAR PRSO,LOCKED
|
|
CALL OKAY,PRSO,STR?68
|
|
RSTACK
|
|
?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,PRSO,TRUE-VALUE,STR?1
|
|
PRINTR "n't locked!)"
|
|
|
|
|
|
.FUNCT MORE-SPECIFIC
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "[Please be more specific.]"
|
|
|
|
|
|
.FUNCT V-USE
|
|
CALL MORE-SPECIFIC
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WAIT,NUM=-1,WHO=0,INT=0,WHO-WAIT=0,VAL,HR,RESULT=1
|
|
EQUAL? -1,NUM \?CND1
|
|
SET 'NUM,10
|
|
?CND1: ZERO? INT \?CND3
|
|
FSET? PRSO,PERSONBIT /?CND3
|
|
EQUAL? PRSO,GHOST-NEW,TURN,INTNUM /?CND3
|
|
PRINT I-ASSUME
|
|
PRINTI " Wait "
|
|
PRINTN NUM
|
|
PRINTI " minute"
|
|
EQUAL? NUM,1 /?PRG14
|
|
PRINTC 115
|
|
?PRG14: PRINTI ".]"
|
|
CRLF
|
|
?CND3: SET 'HR,HERE
|
|
ZERO? INT \?CND16
|
|
PRINTI "Time passes..."
|
|
CRLF
|
|
?CND16: DEC 'NUM
|
|
?PRG20: DLESS? 'NUM,0 \?CCL24
|
|
SET 'KEEP-WAITING,FALSE-VALUE
|
|
RETURN RESULT
|
|
?CCL24: CALL CLOCKER >VAL
|
|
ZERO? VAL /?CCL26
|
|
EQUAL? VAL,M-FATAL /?CTR28
|
|
EQUAL? HR,HERE /?CCL29
|
|
?CTR28: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
SET 'RESULT,M-FATAL
|
|
RETURN RESULT
|
|
?CCL29: ZERO? WHO /?CCL33
|
|
IN? WHO,HERE \?CCL33
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
CALL NOT-IT,WHO
|
|
CALL START-SENTENCE,WHO
|
|
PRINTI ", for wh"
|
|
FSET? WHO,PERSONBIT \?PRG43
|
|
PRINTI "om"
|
|
JUMP ?PRG45
|
|
?PRG43: PRINTI "ich"
|
|
?PRG45: PRINTI " you're waiting, has arrived."
|
|
CRLF
|
|
RETURN RESULT
|
|
?CCL33: INC 'WHO-WAIT
|
|
GET 0,0
|
|
BTST STACK,16 \?CND47
|
|
PRINTC 40
|
|
CALL TIME-PRINT,PRESENT-TIME >VAL
|
|
PRINTI ") "
|
|
?CND47: ZERO? KEEP-WAITING /?PRG55
|
|
USL
|
|
JUMP ?PRG20
|
|
?PRG55: PRINTI "Do you want to keep "
|
|
CALL VERB-PRINT,TRUE-VALUE >VAL
|
|
CALL YES?
|
|
ZERO? STACK /?CCL59
|
|
USL
|
|
JUMP ?PRG20
|
|
?CCL59: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
SET 'RESULT,M-FATAL
|
|
RETURN RESULT
|
|
?CCL26: ZERO? WHO /?CCL61
|
|
IGRTR? 'WHO-WAIT,30 \?CCL61
|
|
CALL START-SENTENCE,WHO >VAL
|
|
PRINTI " still hasn't arrived. Do you want to keep waiting?"
|
|
CALL YES?
|
|
ZERO? STACK \?CND66
|
|
RETURN RESULT
|
|
?CND66: SET 'WHO-WAIT,0
|
|
USL
|
|
JUMP ?PRG20
|
|
?CCL61: USL
|
|
JUMP ?PRG20
|
|
|
|
|
|
.FUNCT V-WAIT-FOR,WHO
|
|
EQUAL? -1,P-NUMBER /?CCL3
|
|
EQUAL? PRSO,INTNUM,TURN,ROOMS \?CCL3
|
|
ZERO? P-TIME /?CCL8
|
|
CALL V-WAIT-UNTIL
|
|
RSTACK
|
|
?CCL8: CALL V-WAIT,P-NUMBER
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSO,GLOBAL-HERE,TURN,ROOMS \?CCL10
|
|
CALL V-WAIT
|
|
RSTACK
|
|
?CCL10: EQUAL? PRSO,PLAYER \?CCL12
|
|
CALL ALREADY,PLAYER,STR?104
|
|
RSTACK
|
|
?CCL12: FSET? PRSO,PERSONBIT /?CTR13
|
|
EQUAL? PRSO,GHOST-NEW \?PRG20
|
|
?CTR13: CALL META-LOC,PRSO
|
|
EQUAL? STACK,HERE \?CCL19
|
|
CALL ALREADY,PRSO,STR?104
|
|
RSTACK
|
|
?CCL19: CALL V-WAIT,10000,PRSO
|
|
RSTACK
|
|
?PRG20: PRINTR "Not a good idea. You might wait forever."
|
|
|
|
|
|
.FUNCT V-WAIT-UNTIL,N,?TMP1
|
|
EQUAL? -1,P-NUMBER /?CCL3
|
|
EQUAL? PRSO,INTNUM,TURN,ROOMS \?CCL3
|
|
SET 'N,P-NUMBER
|
|
ZERO? P-TIME /?CCL8
|
|
LESS? N,420 \?CND6
|
|
ADD N,720 >N
|
|
JUMP ?CND6
|
|
?CCL8: LESS? N,8 \?CCL13
|
|
MUL N,60
|
|
ADD STACK,720 >N
|
|
JUMP ?CND11
|
|
?CCL13: LESS? N,13 \?CCL15
|
|
MUL N,60 >N
|
|
JUMP ?CND11
|
|
?CCL15: LESS? N,24 \?CCL17
|
|
MUL N,60
|
|
SUB STACK,720 >N
|
|
JUMP ?CND11
|
|
?CCL17: GRTR? N,99 \?CND11
|
|
MOD N,100 >?TMP1
|
|
DIV N,100
|
|
MUL STACK,60
|
|
ADD ?TMP1,STACK >N
|
|
?CND11: LESS? N,420 \?PRG21
|
|
ADD N,720 >N
|
|
?PRG21: PRINT I-ASSUME
|
|
PRINTC 32
|
|
CALL TIME-PRINT,N
|
|
PRINTC 93
|
|
CRLF
|
|
?CND6: GRTR? N,PRESENT-TIME \?CCL27
|
|
SUB N,PRESENT-TIME
|
|
CALL V-WAIT,STACK
|
|
RSTACK
|
|
?CCL27: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTR "(It's already past that time!)"
|
|
?CCL3: CALL YOU-CANT,STR?42
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ALARM
|
|
EQUAL? PRSO,ROOMS \?CND1
|
|
SET 'PRSO,WINNER
|
|
?CND1: CALL TOO-BAD-BUT,PRSO,STR?135
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DO-WALK,DIR,P
|
|
SET 'P-WALK-DIR,DIR
|
|
CALL PERFORM,V?WALK,DIR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WALK,PT,PTS,STR,RM
|
|
ZERO? P-WALK-DIR \?CND1
|
|
EQUAL? PRSO,P?IN \?CCL5
|
|
IN? P-IT-OBJECT,ROOMS /?CTR4
|
|
FSET? P-IT-OBJECT,VEHBIT /?CTR4
|
|
FSET? P-IT-OBJECT,CONTBIT \?CCL5
|
|
?CTR4: CALL TELL-I-ASSUME,P-IT-OBJECT
|
|
CALL PERFORM,V?THROUGH,P-IT-OBJECT
|
|
RTRUE
|
|
?CCL5: CALL V-WALK-AROUND
|
|
RETURN 2
|
|
?CND1: LOC WINNER
|
|
GETPT STACK,PRSO >PT
|
|
ZERO? PT /?CCL15
|
|
PTSIZE PT >PTS
|
|
EQUAL? PTS,UEXIT \?CCL18
|
|
GETB PT,REXIT >RM
|
|
CALL GOTO,RM
|
|
ZERO? STACK /TRUE
|
|
CALL OKAY
|
|
RTRUE
|
|
?CCL18: EQUAL? PTS,NEXIT \?CCL22
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
GET PT,NEXITSTR
|
|
PRINT STACK
|
|
PRINTC 41
|
|
CRLF
|
|
RETURN 2
|
|
?CCL22: EQUAL? PTS,FEXIT \?CCL28
|
|
GET PT,FEXITFCN
|
|
CALL STACK >RM
|
|
ZERO? RM /?PRG34
|
|
CALL GOTO,RM
|
|
ZERO? STACK /TRUE
|
|
CALL OKAY
|
|
RTRUE
|
|
?PRG34: RETURN 2
|
|
?CCL28: EQUAL? PTS,CEXIT \?CCL37
|
|
GETB PT,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK /?CCL40
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
ZERO? STACK /TRUE
|
|
CALL OKAY
|
|
RTRUE
|
|
?CCL40: GET PT,CEXITSTR >STR
|
|
ZERO? STR /?CCL44
|
|
PRINT STR
|
|
CRLF
|
|
RETURN 2
|
|
?CCL44: CALL YOU-CANT,STR?40
|
|
RETURN 2
|
|
?CCL37: EQUAL? PTS,DEXIT \FALSE
|
|
CALL WALK-THRU-DOOR?,PT
|
|
ZERO? STACK /?PRG58
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
ZERO? STACK /TRUE
|
|
CALL OKAY
|
|
RTRUE
|
|
?PRG58: RETURN 2
|
|
?CCL15: EQUAL? PRSO,P?IN,P?OUT \?CCL61
|
|
CALL V-WALK-AROUND
|
|
RSTACK
|
|
?CCL61: EQUAL? PRSO,P?UP \?CCL63
|
|
CALL PERFORM,V?CLIMB-UP,STAIRS
|
|
RTRUE
|
|
?CCL63: EQUAL? PRSO,P?DOWN \?CCL65
|
|
CALL PERFORM,V?CLIMB-DOWN,STAIRS
|
|
RTRUE
|
|
?CCL65: EQUAL? HERE,DRIVEWAY \?CCL67
|
|
PRINT CASTLE-IS-SOUTH
|
|
RETURN 2
|
|
?CCL67: CALL YOU-CANT,STR?40
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT UNLOCK-DOOR?,DR
|
|
EQUAL? HERE,DR /TRUE
|
|
GETP HERE,P?STATION
|
|
EQUAL? HERE,DRIVEWAY,STACK /FALSE
|
|
EQUAL? DR,SECRET-SITTING-DOOR,FRONT-GATE /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WALK-THRU-DOOR?,PT,OBJ=0,TELL?=1,RM
|
|
ZERO? OBJ \?CND1
|
|
GETB PT,DEXITOBJ >OBJ
|
|
?CND1: FSET? OBJ,OPENBIT /TRUE
|
|
FSET? OBJ,SECRETBIT \?CCL7
|
|
FSET? OBJ,TOUCHBIT /?CCL7
|
|
EQUAL? FALSE-VALUE,TELL?,VERBOSITY /FALSE
|
|
FSET? HERE,SECRETBIT /?CCL14
|
|
CALL YOU-CANT,STR?40
|
|
RFALSE
|
|
?CCL14: ZERO? LIT \?CCL16
|
|
CALL NOT-FOUND,OBJ
|
|
RFALSE
|
|
?CCL16: EQUAL? PRSA,V?WALK-TO /TRUE
|
|
CALL OPEN-DOOR-AND-CLOSE-IT-AGAIN,OBJ
|
|
RTRUE
|
|
?CCL7: FSET? OBJ,LOCKED /?CCL20
|
|
EQUAL? PRSA,V?WALK-TO /TRUE
|
|
FCLEAR OBJ,SECRETBIT
|
|
FSET OBJ,SEENBIT
|
|
EQUAL? FALSE-VALUE,TELL?,VERBOSITY /TRUE
|
|
CALL OPEN-DOOR-AND-CLOSE-IT-AGAIN,OBJ
|
|
RTRUE
|
|
?CCL20: ZERO? PT /?CCL26
|
|
GET PT,DEXITSTR >RM
|
|
ZERO? RM /?CCL26
|
|
ZERO? TELL? /FALSE
|
|
PRINT RM
|
|
CRLF
|
|
RFALSE
|
|
?CCL26: ZERO? TELL? /FALSE
|
|
CALL UNLOCK-DOOR?,OBJ
|
|
ZERO? STACK /?CCL37
|
|
EQUAL? PRSA,V?WALK-TO /TRUE
|
|
ZERO? VERBOSITY /TRUE
|
|
CALL OPEN-DOOR-AND-CLOSE-IT-AGAIN,OBJ
|
|
RTRUE
|
|
?CCL37: CALL TOO-BAD-BUT,OBJ,STR?67
|
|
CALL THIS-IS-IT,OBJ
|
|
RFALSE
|
|
|
|
|
|
.FUNCT OPEN-DOOR-AND-CLOSE-IT-AGAIN,OBJ
|
|
FSET OBJ,SEENBIT
|
|
EQUAL? WINNER,PLAYER \TRUE
|
|
PRINTI "(You "
|
|
FSET? OBJ,LOCKED \?PRG9
|
|
FCLEAR OBJ,LOCKED
|
|
PRINTI "unlock and "
|
|
?PRG9: PRINTI "open the "
|
|
EQUAL? OBJ,FRONT-GATE \?PRG16
|
|
PRINTI "gate"
|
|
JUMP ?CND11
|
|
?PRG16: PRINTI "door"
|
|
?CND11: FSET? OBJ,SECRETBIT \?PRG21
|
|
FSET OBJ,OPENBIT
|
|
JUMP ?PRG23
|
|
?PRG21: PRINTI " and close it again"
|
|
?PRG23: PRINTR ".)"
|
|
|
|
|
|
.FUNCT V-WALK-AROUND
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 91
|
|
PRINT WHICH-DIR
|
|
PRINTI "]
|
|
"
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT WHO-KNOWS?,OBJ
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTI "(Who knows where"
|
|
CALL HE-SHE-IT,OBJ,0,STR?1
|
|
PRINTR "?)"
|
|
|
|
|
|
.FUNCT WALK-WITHIN-ROOM
|
|
CALL NO-NEED,STR?137,HERE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WALK-TO,L,VAL,?TMP1
|
|
CALL META-LOC,PRSO >L
|
|
FSET? PRSO,PERSONBIT \?CND1
|
|
CALL META-LOC,WINNER
|
|
EQUAL? STACK,L \?CCL5
|
|
FSET? PRSO,NDESCBIT /?CCL5
|
|
CALL BITE-YOU
|
|
RTRUE
|
|
?CCL5: CALL FOLLOW-LOC? >L
|
|
ZERO? L \?CND1
|
|
CALL WHO-KNOWS?,PRSO
|
|
RETURN 2
|
|
?CND1: FSET? PRSO,SECRETBIT \?CCL13
|
|
EQUAL? L,PRSO /?CCL13
|
|
CALL NO-FUN
|
|
RSTACK
|
|
?CCL13: LOC WINNER
|
|
EQUAL? HERE,STACK \?CCL17
|
|
EQUAL? L,HERE /?CTR16
|
|
EQUAL? PRSO,PSEUDO-OBJECT,WALL /?CTR16
|
|
IN? L,ROOMS /?CCL17
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?CCL17
|
|
?CTR16: CALL WALK-WITHIN-ROOM
|
|
RSTACK
|
|
?CCL17: EQUAL? L,LOCAL-GLOBALS \?CCL26
|
|
CALL MORE-SPECIFIC
|
|
RSTACK
|
|
?CCL26: CALL TOUR?
|
|
ZERO? STACK \TRUE
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-EXIT
|
|
ZERO? STACK \TRUE
|
|
EQUAL? PRSO,INTDIR \?CCL34
|
|
CALL V-WALK-AROUND
|
|
RSTACK
|
|
?CCL34: IN? PRSO,ROOMS /?CCL36
|
|
FSET? PRSO,TOUCHBIT /?CCL36
|
|
CALL WHO-KNOWS?,PRSO
|
|
RETURN 2
|
|
?CCL36: CALL FAR-AWAY?,L
|
|
ZERO? STACK /?CCL43
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
PRINTC 40
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE
|
|
PRINTI " can't go there from here"
|
|
EQUAL? L,GLOBAL-OBJECTS /?PRG50
|
|
PRINTI ", at least not directly"
|
|
?PRG50: PRINTR ".)"
|
|
?CCL43: EQUAL? WINNER,PLAYER /?CCL53
|
|
CALL GOTO,L
|
|
ZERO? STACK /TRUE
|
|
EQUAL? WINNER,FOLLOWER \?CND56
|
|
SET 'FOLLOWER,0
|
|
?CND56: GETP WINNER,P?CHARACTER
|
|
GET GOAL-TABLES,STACK >L
|
|
GET L,GOAL-S
|
|
ZERO? STACK /?CND58
|
|
GET L,GOAL-F >?TMP1
|
|
GET L,GOAL-ENABLE
|
|
CALL ESTABLISH-GOAL,WINNER,?TMP1,STACK
|
|
?CND58: CALL OKAY
|
|
RTRUE
|
|
?CCL53: CALL SEE-INTO?,PRSO,FALSE-VALUE
|
|
ZERO? STACK /?CCL62
|
|
CALL DIR-FROM,HERE,L >VAL
|
|
ZERO? VAL /?CND63
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,VAL
|
|
EQUAL? M-FATAL,STACK \?CND63
|
|
RETURN 2
|
|
?CND63: CALL GOTO,PRSO,FALSE-VALUE
|
|
RTRUE
|
|
?CCL62: ZERO? NOW-WEARING \?PRG72
|
|
CALL YOUR-ROOM-F,P?OUT
|
|
RETURN 2
|
|
?PRG72: PRINTI "You go quickly toward"
|
|
CALL PRINTT,L
|
|
PRINTI ".
|
|
"
|
|
CALL ESTABLISH-GOAL,PLAYER,L
|
|
SET 'OHERE,HERE
|
|
FSET PLAYER,INVISIBLE
|
|
?PRG74: CALL FOLLOW-GOAL,PLAYER >VAL
|
|
ZERO? VAL /?PRG74
|
|
FCLEAR PLAYER,INVISIBLE
|
|
ZERO? FOLLOWER /?CND78
|
|
CALL FRIEND-FOLLOWS-YOU,HERE
|
|
?CND78: EQUAL? OHERE,HERE /?CND80
|
|
CALL ENTER-ROOM
|
|
?CND80: RETURN VAL
|
|
|
|
|
|
.FUNCT ENTER-ROOM,VAL
|
|
CALL LIT? >LIT
|
|
FSET? HERE,SECRETBIT \?CCL3
|
|
SET 'WASHED,FALSE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? HERE,JACK-ROOM,TAMARA-ROOM,IRIS-ROOM /?PRG8
|
|
EQUAL? HERE,WENDISH-ROOM,VIVIEN-ROOM,IAN-ROOM /?PRG8
|
|
EQUAL? HERE,HYDE-ROOM \?CND1
|
|
?PRG8: PRINTI "You enter the room cautiously after a preliminary peek."
|
|
CALL ZMEMQ,HERE,CHAR-ROOM-TABLE
|
|
SUB STACK,1
|
|
GET CHARACTER-TABLE,STACK
|
|
LOC STACK
|
|
EQUAL? STACK,HERE,LOCAL-GLOBALS /?CND10
|
|
SET 'DISCOVERED-HERE,HERE
|
|
CALL QUEUE,I-DISCOVERED,6
|
|
?CND10: ZERO? LIT /?CND13
|
|
CALL FIND-FLAG-HERE,PERSONBIT,PLAYER
|
|
ZERO? STACK \?CND13
|
|
PRINTI " No one is there."
|
|
?CND13: CRLF
|
|
?CND1: GETP HERE,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
CALL V-FIRST-LOOK >VAL
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-FLASH
|
|
RETURN VAL
|
|
|
|
|
|
.FUNCT V-RUN-OVER
|
|
PRINTR "That doesn't make much sense."
|
|
|
|
|
|
.FUNCT NO-CHANGING?,X
|
|
CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >X
|
|
ZERO? X /?CCL3
|
|
EQUAL? X,GHOST-NEW \?PRG9
|
|
PRINT NO-CHANGING
|
|
RTRUE
|
|
?PRG9: CALL HE-SHE-IT,X,TRUE-VALUE
|
|
PRINTR " says, ""I wish you wouldn't change clothes while I'm here!"""
|
|
?CCL3: EQUAL? HERE,YOUR-BATHROOM,YOUR-ROOM /FALSE
|
|
PRINT NO-CHANGING
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WEAR,X
|
|
ZERO? PRSO /?CND1
|
|
FSET? PRSO,WEARBIT /?CCL5
|
|
CALL HE-SHE-IT,WINNER,TRUE-VALUE
|
|
PRINTI " can't wear"
|
|
CALL HIM-HER-IT,PRSO
|
|
EQUAL? PRSO,NECKLACE-OF-D \?PRG12
|
|
PRINTI ", because"
|
|
PRINT CLASP-MUNGED
|
|
?PRG12: PRINTR "."
|
|
?CCL5: FSET? PRSO,WORNBIT \?CND1
|
|
CALL ALREADY,PRSO,STR?121
|
|
RTRUE
|
|
?CND1: EQUAL? PRSO,LENS-2,LENS-1 /?CND15
|
|
EQUAL? PRSO,LENS,EARRING,NECKLACE /?CND15
|
|
CALL NO-CHANGING?
|
|
ZERO? STACK \TRUE
|
|
ZERO? NOW-WEARING /?CND19
|
|
ZERO? PRSO /?CND23
|
|
CALL FIRST-YOU,STR?139,NOW-WEARING
|
|
?CND23: FCLEAR NOW-WEARING,WORNBIT
|
|
?CND19: SET 'NOW-WEARING,PRSO
|
|
?CND15: ZERO? PRSO /?PRG38
|
|
MOVE PRSO,PLAYER
|
|
FSET PRSO,WORNBIT
|
|
EQUAL? PRSO,LENS-2,LENS-1 /?PRG34
|
|
EQUAL? PRSO,LENS,EARRING,NECKLACE /?PRG34
|
|
FSET? PRSO,MUNGBIT \?CCL30
|
|
?PRG34: PRINTR "Okay."
|
|
?CCL30: FSET PRSO,MUNGBIT
|
|
PRINTR "Ahhh! Nothing like a new outfit to change your whole outlook!"
|
|
?PRG38: PRINTI "Okay... "
|
|
ZERO? GENDER-KNOWN \?PRG45
|
|
PRINTR "You immediately wish for central heating!"
|
|
?PRG45: PRINTI "My, what a fine figure of a "
|
|
FSET? PLAYER,FEMALE \?PRG51
|
|
PRINTI "wo"
|
|
?PRG51: PRINTR "man!"
|
|
|
|
|
|
.FUNCT V-YELL,N=0,RM,P
|
|
CALL QCONTEXT-GOOD? >P
|
|
ZERO? P \?PRG6
|
|
CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P
|
|
ZERO? P /?CCL3
|
|
?PRG6: CALL START-SENTENCE,P
|
|
PRINTR " says, ""I'm right here. You needn't yell."""
|
|
?CCL3: GETP HERE,P?CHARACTER
|
|
EQUAL? 3,STACK \?PRG32
|
|
FSET? HERE,WEARBIT /?PRG16
|
|
FSET? HERE,WEARBIT /?PRG32
|
|
FSET? HERE,SECRETBIT /?PRG32
|
|
?PRG16: IGRTR? 'N,DEB-C /?PRG32
|
|
GET CHARACTER-TABLE,N >P
|
|
EQUAL? P,GHOST-NEW,CONFESSED,CAPTOR /?PRG16
|
|
CALL META-LOC,P >RM
|
|
GETP RM,P?CHARACTER
|
|
EQUAL? 3,STACK \?PRG16
|
|
FSET? HERE,WEARBIT \?PRD27
|
|
FSET? RM,WEARBIT /?CCL23
|
|
?PRD27: FSET? HERE,WEARBIT /?PRG16
|
|
FSET? RM,WEARBIT /?PRG16
|
|
?CCL23: CALL GO-TO-SOUND,HERE,P
|
|
JUMP ?PRG16
|
|
?PRG32: PRINTR """Aaaarrrrgggghhhh!"""
|
|
|
|
|
|
.FUNCT V-YES,NO?=0,PER
|
|
SET 'PER,WINNER
|
|
EQUAL? PER,PLAYER \?CTR2
|
|
ZERO? AWAITING-REPLY /?PRD7
|
|
GETB QUESTIONERS,AWAITING-REPLY >PER
|
|
ZERO? PER \?CTR2
|
|
?PRD7: CALL QCONTEXT-GOOD? >PER
|
|
ZERO? PER /?CCL3
|
|
?CTR2: GETP PER,P?ACTION
|
|
CALL D-APPLY,STR?10,STACK,M-WINNER
|
|
ZERO? STACK \TRUE
|
|
PRINTR """I see..."""
|
|
?CCL3: EQUAL? HERE,DRIVEWAY \?CCL15
|
|
PRINTR "The echoes fade and silence is soon restored."
|
|
?CCL15: CALL ARENT-TALKING
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-NO
|
|
CALL V-YES,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FINISH,REPEATING=0,VAL
|
|
CRLF
|
|
CRLF
|
|
ZERO? REPEATING \?PRG3
|
|
CALL V-SCORE
|
|
CRLF
|
|
?PRG3: PRINTI "Would you like to:
|
|
RESTORE your place from where you saved it,
|
|
RESTART the story from the beginning, or
|
|
QUIT for now?"
|
|
CRLF
|
|
?PRG5: PRINTC 62
|
|
READ P-INBUF,P-LEXV
|
|
GET P-LEXV,P-LEXSTART >VAL
|
|
ZERO? VAL /?PRG19
|
|
CALL WT?,VAL,64,1 >VAL
|
|
EQUAL? VAL,ACT?RESTART \?CCL13
|
|
RESTART
|
|
CALL FINISH,TRUE-VALUE
|
|
JUMP ?PRG19
|
|
?CCL13: EQUAL? VAL,ACT?RESTORE \?CCL15
|
|
CALL V-RESTORE
|
|
ZERO? STACK \TRUE
|
|
CALL FINISH,TRUE-VALUE
|
|
JUMP ?PRG19
|
|
?CCL15: EQUAL? VAL,ACT?QUIT \?PRG19
|
|
QUIT
|
|
?PRG19: PRINTI "[Type RESTORE, RESTART, or QUIT.] "
|
|
JUMP ?PRG5
|
|
|
|
|
|
.FUNCT DIVESTMENT?,OBJ
|
|
EQUAL? PRSO,OBJ \FALSE
|
|
EQUAL? PRSA,V?THROW-THROUGH /TRUE
|
|
EQUAL? PRSA,V?THROW-AT,V?REMOVE,V?PUT-UNDER /TRUE
|
|
EQUAL? PRSA,V?PUT-IN,V?PUT,V?POUR /TRUE
|
|
EQUAL? PRSA,V?GIVE,V?DROP,V?DISEMBARK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT REMOTE-VERB?
|
|
EQUAL? PRSA,V?WALK-TO,V?WAIT-UNTIL,V?WAIT-FOR /TRUE
|
|
EQUAL? PRSA,V?TELL-ABOUT,V?TALK-ABOUT,V?TAKE-TO /TRUE
|
|
EQUAL? PRSA,V?SSHOW,V?SHOW,V?SEARCH-FOR /TRUE
|
|
EQUAL? PRSA,V?SEARCH,V?LOOK-UP,V?LEAVE /TRUE
|
|
EQUAL? PRSA,V?FOLLOW,V?FIND,V?DRESS /TRUE
|
|
EQUAL? PRSA,V?DISEMBARK,V?DESCRIBE,V?ASK-FOR /TRUE
|
|
EQUAL? PRSA,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT /TRUE
|
|
RFALSE
|
|
|
|
.ENDI
|