abyss/verbs.zap
historicalsource 2ac9da82cb Final Revision
2019-04-14 16:25:39 -04:00

1865 lines
40 KiB
Plaintext

.FUNCT V-DESC-LEVEL:ANY:0:0
PRINTC 91
EQUAL? P-PRSA-WORD,W?SUPER,W?SUPERBRIEF \?CCL3
PRINTI "Super brief is not supported"
JUMP ?CND1
?CCL3: EQUAL? P-PRSA-WORD,W?BRIEF \?CCL6
SET 'VERBOSITY,1
PRINTI "Brief"
JUMP ?CND4
?CCL6: SET 'VERBOSITY,2
PRINTI "Verbose"
?CND4: PRINTI " descriptions"
?CND1: PRINTR ".]"
.FUNCT V-SCRIPT:ANY:0:0
EQUAL? P-PRSA-WORD,W?SCRIPT \?CCL3
DIROUT K-D-PRT-ON
PRINTR "Transcript: Begin"
?CCL3: PRINTI "Transcript: End"
CRLF
DIROUT K-D-PRT-OFF
RTRUE
.FUNCT V-VERIFY:ANY:0:0
ZERO? PRSO /?CCL3
EQUAL? PRSO,INTNUM \?CCL6
EQUAL? P-NUMBER,105 \?CCL6
PRINTN SERIAL
CRLF
RTRUE
?CCL6: CALL1 DONT-UNDERSTAND
RSTACK
?CCL3: PRINTI "[Verifying... "
VERIFY \?CCL11
PRINTI "Correct"
JUMP ?CND9
?CCL11: PRINTI "Error"
?CND9: PRINTI ".]"
CRLF
RETURN 2
.FUNCT V-COMMAND:ANY:0:0
DIRIN 1
RTRUE
.FUNCT V-RECORD:ANY:0:0
DIROUT D-RECORD-ON
RTRUE
.FUNCT V-UNRECORD:ANY:0:0
DIROUT D-RECORD-OFF
RTRUE
.FUNCT V-INVENTORY:ANY:0:0
ICALL RT-MOVE-ALL-WORN,WINNER,PSEUDO-OBJECT
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
PRINTI " holding"
CALL RT-PRINT-CONTENTS,WINNER,TRUE-VALUE
ZERO? STACK \?CND1
PRINTI " nothing"
?CND1: CALL2 RT-SEE-ANYTHING-IN?,PSEUDO-OBJECT
ZERO? STACK /?CND3
PRINTI ". "
ICALL RT-PRINT-OBJ,WINNER,K-ART-HE,TRUE-VALUE,STR?56
PRINTI " wearing"
ICALL2 RT-PRINT-CONTENTS,PSEUDO-OBJECT
ICALL RT-MOVE-ALL-WORN,PSEUDO-OBJECT,WINNER
?CND3: PRINTR "."
.FUNCT V-QUIT:ANY:0:1,ASK?
ASSIGNED? 'ASK? /?CND1
SET 'ASK?,TRUE-VALUE
?CND1: ZERO? ASK? /?CCL5
PRINTI "Are you sure you want to quit?
"
CALL1 Y?
ZERO? STACK /?CCL8
QUIT
RTRUE
?CCL8: PRINTR "Continuing..."
?CCL5: QUIT
RTRUE
.FUNCT RT-FAILED-MSG:ANY:1:1,STR
PRINTC 91
PRINT STR
PRINTR " failed.]"
.FUNCT V-RESTART:ANY:0:0
RESTART
CALL2 RT-FAILED-MSG,STR?74
RSTACK
.FUNCT V-SAVE:ANY:0:0,X
PUTB G-INBUF,1,0
SET 'P-CONT,FALSE-VALUE
SAVE >X
EQUAL? X,2 /?CCL2
GET 0,8
BTST STACK,4 \?CND1
?CCL2: COLOR GL-F-COLOR,GL-B-COLOR
EQUAL? X,2 /?PRD5
PUSH 0
JUMP ?PRD6
?PRD5: PUSH 1
?PRD6: ICALL2 V-$REFRESH,STACK
?CND1: ZERO? X \?CCL9
ICALL2 RT-FAILED-MSG,STR?75
RETURN 2
?CCL9: PRINTI "[Okay.]"
CRLF
RETURN 2
.FUNCT V-RESTORE:ANY:0:0
RESTORE
ZERO? STACK \FALSE
ICALL2 RT-FAILED-MSG,STR?76
RFALSE
.FUNCT RT-PRINT-CONTENTS:ANY:1:3,CONT,RECUR?,CNT,OBJ,1ST?
SET '1ST?,TRUE-VALUE
FIRST? CONT >OBJ /?BOGUS1
?BOGUS1: ZERO? OBJ \?PRG4
RETURN CNT
?PRG4: ZERO? OBJ /?REP5
FSET? OBJ,FL-INVISIBLE /?CND6
FSET? OBJ,FL-NO-DESC /?CND6
EQUAL? OBJ,WINNER /?CND6
ZERO? 1ST? /?CCL15
INC 'CNT
SET '1ST?,FALSE-VALUE
JUMP ?CND13
?CCL15: NEXT? OBJ /?BOGUS16
?BOGUS16: ICALL2 RT-COMMA-MSG,STACK
?CND13: ICALL RT-PRINT-OBJ,OBJ,K-ART-A
ICALL2 THIS-IS-IT,OBJ
FSET OBJ,FL-SEEN
?CND6: NEXT? OBJ >OBJ /?PRG4
JUMP ?PRG4
?REP5: ZERO? RECUR? \?CCL19
RETURN CNT
?CCL19: FIRST? CONT >OBJ /?PRG21
?PRG21: ZERO? OBJ \?CCL25
RETURN CNT
?CCL25: FSET? OBJ,FL-INVISIBLE /?CND23
FSET? OBJ,FL-NO-DESC /?CND23
EQUAL? OBJ,WINNER /?CND23
FSET? OBJ,FL-SURFACE /?CCL30
FSET? OBJ,FL-CONTAINER \?CND23
FSET? OBJ,FL-OPEN /?CCL30
FSET? OBJ,FL-TRANSPARENT \?CND23
?CCL30: CALL2 RT-SEE-ANYTHING-IN?,OBJ
ZERO? STACK /?CND23
PRINTI ". "
ICALL RT-IN-ON-MSG,OBJ,TRUE-VALUE
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,FALSE-VALUE,STR?77
CALL RT-PRINT-CONTENTS,OBJ,TRUE-VALUE,CNT >CNT
?CND23: NEXT? OBJ >OBJ /?PRG21
JUMP ?PRG21
.FUNCT RT-DESCRIBE-OBJECTS:ANY:0:3,CONT,CNT,LVL,OBJ,NXT,1ST?,P-CNT,P-PL?
ASSIGNED? 'CONT /?CND1
SET 'CONT,HERE
?CND1: SET '1ST?,TRUE-VALUE
FIRST? CONT >OBJ /?PRG4
?PRG4: ZERO? OBJ /?REP5
FSET? OBJ,FL-NO-DESC /?CTR9
FSET? OBJ,FL-INVISIBLE \?CCL10
?CTR9: NEXT? OBJ >OBJ /?PRG4
JUMP ?PRG4
?CCL10: FSET? OBJ,FL-PERSON \?CCL15
INC 'P-CNT
NEXT? OBJ >OBJ /?PRG4
JUMP ?PRG4
?CCL15: ZERO? 1ST? /?CND6
GRTR? CNT,0 \?CCL20
PRINTC 32
JUMP ?CND18
?CCL20: PRINTC TAB
?CND18: SET '1ST?,FALSE-VALUE
IN? CONT,ROOMS \?CCL23
PRINTC 89
JUMP ?CND21
?CCL23: ICALL RT-IN-ON-MSG,CONT,TRUE-VALUE
ICALL RT-PRINT-OBJ,CONT,K-ART-THE
PRINTI " y"
?CND21: PRINTI "ou see"
?CND6: ICALL RT-PRINT-OBJ,OBJ,K-ART-A
ICALL2 THIS-IS-IT,OBJ
FSET OBJ,FL-SEEN
INC 'CNT
NEXT? OBJ >OBJ /?PRG25
?PRG25: ZERO? OBJ /?REP26
FSET? OBJ,FL-NO-DESC /?CND27
FSET? OBJ,FL-INVISIBLE /?CND27
FSET? OBJ,FL-PERSON \?REP26
INC 'P-CNT
?CND27: NEXT? OBJ >OBJ /?PRG25
JUMP ?PRG25
?REP26: ZERO? OBJ /?CCL37
NEXT? OBJ >NXT /?PRG39
?PRG39: ZERO? NXT /?REP40
FSET? NXT,FL-NO-DESC /?CND41
FSET? NXT,FL-INVISIBLE /?CND41
FSET? NXT,FL-PERSON \?REP40
?CND41: NEXT? NXT >NXT /?PRG39
JUMP ?PRG39
?REP40: ZERO? NXT \?CCL51
PRINTI " and"
JUMP ?PRG4
?CCL51: PRINTC 44
JUMP ?PRG4
?CCL37: IN? CONT,ROOMS \?CND52
PRINTI " here"
?CND52: PRINTC 46
JUMP ?PRG4
?REP5: GRTR? P-CNT,0 \?CND54
GRTR? CNT,0 \?CCL58
PRINTC 32
JUMP ?CND56
?CCL58: PRINTC TAB
?CND56: ADD CNT,P-CNT >CNT
GRTR? P-CNT,1 \?CND59
SET 'P-PL?,TRUE-VALUE
?CND59: FIRST? CONT >OBJ /?BOGUS61
?BOGUS61: SET '1ST?,TRUE-VALUE
?PRG62: FSET? OBJ,FL-NO-DESC /?CND64
FSET? OBJ,FL-INVISIBLE /?CND64
FSET? OBJ,FL-PERSON \?CND64
ZERO? 1ST? /?CCL71
ICALL RT-PRINT-OBJ,OBJ,K-ART-A,TRUE-VALUE
JUMP ?CND69
?CCL71: ICALL RT-PRINT-OBJ,OBJ,K-ART-A
?CND69: SET '1ST?,FALSE-VALUE
FSET? OBJ,FL-PLURAL \?CND72
SET 'P-PL?,TRUE-VALUE
?CND72: DLESS? 'P-CNT,1 \?CCL76
ZERO? P-PL? /?CCL79
PRINTI " are"
JUMP ?CND77
?CCL79: PRINTI " is"
?CND77: PRINTI " here."
?CND54: FIRST? CONT >OBJ /?PRG84
?PRG84: ZERO? OBJ /?REP85
FSET? OBJ,FL-INVISIBLE /?CND86
FSET? OBJ,FL-SURFACE /?CCL90
FSET? OBJ,FL-CONTAINER \?CND86
FSET? OBJ,FL-TRANSPARENT \?CND86
?CCL90: ADD LVL,1
CALL RT-DESCRIBE-OBJECTS,OBJ,CNT,STACK >CNT
?CND86: NEXT? OBJ >OBJ /?PRG84
JUMP ?PRG84
?CCL76: EQUAL? P-CNT,1 \?CCL81
PRINTI " and"
JUMP ?CND64
?CCL81: PRINTC 44
?CND64: NEXT? OBJ >OBJ /?PRG62
JUMP ?PRG62
?REP85: ZERO? LVL /?CCL97
RETURN CNT
?CCL97: GRTR? CNT,0 /?CCL99
RETURN CNT
?CCL99: CRLF
RETURN CNT
.FUNCT RT-DESCRIBE-ROOM:ANY:0:1,LOOK?,VAL,P
ZERO? LIT \?CCL3
PRINT K-TOO-DARK-MSG
CRLF
FSET HERE,FL-TOUCHED
RFALSE
?CCL3: EQUAL? LIT,HERE,CH-PLAYER /?CND1
PRINTC TAB
PRINTI "Light comes from"
ICALL RT-PRINT-OBJ,LIT,K-ART-THE
PRINTI ".
"
?CND1: GETP HERE,P?ACTION >P
ZERO? P /?CND5
ZERO? LOOK? /?CCL9
CALL P,M-LOOK >VAL
JUMP ?CND5
?CCL9: FSET? HERE,FL-TOUCHED /?CCL11
CALL P,M-F-LOOK >VAL
JUMP ?CND5
?CCL11: EQUAL? VERBOSITY,2 \?CCL13
CALL P,M-V-LOOK >VAL
JUMP ?CND5
?CCL13: CALL P,M-B-LOOK >VAL
?CND5: FSET HERE,FL-TOUCHED
FSET HERE,FL-SEEN
ZERO? VAL /TRUE
RFALSE
.FUNCT NOT-HOLDING?:ANY:1:1,OBJ
IN? OBJ,WINNER /FALSE
LOC OBJ
IN? STACK,WINNER /FALSE
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTC 91
ICALL RT-PRINT-OBJ,WINNER,K-ART-HE,TRUE-VALUE,STR?56
PRINTI "n't holding"
ICALL RT-PRINT-OBJ,OBJ,K-ART-HIM
PRINTR ".]"
.FUNCT HELD?:ANY:1:2,OBJ,CONT,L
ZERO? CONT \?PRG3
SET 'CONT,PLAYER
?PRG3: LOC OBJ >L
ZERO? L /FALSE
EQUAL? L,CONT /TRUE
EQUAL? CONT,PLAYER,WINNER \?CCL11
SET 'OBJ,L
JUMP ?PRG3
?CCL11: EQUAL? L,ROOMS,GLOBAL-OBJECTS /FALSE
SET 'OBJ,L
JUMP ?PRG3
.FUNCT TOO-DARK:ANY:0:0
PRINTR "It's too dark to see."
.FUNCT V-ASK-ABOUT:ANY:0:0
CALL1 RT-NO-RESPONSE-MSG
RSTACK
.FUNCT V-ATTACH:ANY:0:0
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't attach"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " to"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR "."
.FUNCT V-CLOSE:ANY:0:0
FSET? PRSO,FL-OPENABLE /?CCL3
CALL1 RT-YOU-CANT-MSG
RSTACK
?CCL3: FSET? PRSO,FL-OPEN \?CCL6
FCLEAR PRSO,FL-OPEN
FSET? PRSO,FL-DOOR \?CND7
ICALL2 RT-CHECK-ADJ,PRSO
?CND7: GRTR? P-MULT,1 \?CCL11
PRINTI "Closed"
JUMP ?CND9
?CCL11: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?78
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
?CND9: PRINTR "."
?CCL6: CALL RT-ALREADY-MSG,PRSO,STR?79
RSTACK
.FUNCT V-CUT:ANY:0:0
PRINTC TAB
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't cut"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " with"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR "."
.FUNCT IDROP:ANY:0:0
CALL2 NOT-HOLDING?,PRSO
ZERO? STACK \FALSE
IN? PRSO,WINNER /?CCL5
LOC PRSO
FSET? STACK,FL-OPEN /?CCL5
LOC PRSO
ICALL RT-PRINT-OBJ,STACK,K-ART-THE,TRUE-VALUE,STR?56
PRINTI " closed."
CRLF
RFALSE
?CCL5: FSET? PRSO,FL-WORN \?CND8
ICALL RT-FIRST-YOU-MSG,STR?80,PRSO
?CND8: MOVE PRSO,HERE
FCLEAR PRSO,FL-WORN
FCLEAR PRSO,FL-NO-DESC
FCLEAR PRSO,FL-INVISIBLE
RTRUE
.FUNCT V-DROP:ANY:0:0,L
CALL1 IDROP
ZERO? STACK /FALSE
GRTR? P-MULT,1 \?CCL6
PRINTI "Dropped"
JUMP ?CND4
?CCL6: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?81
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
CALL FIND-FLAG,HERE,FL-VEHICLE,PRSO >L
ZERO? L /?CND4
MOVE PRSO,L
ICALL2 RT-IN-ON-MSG,L
PRINTI "to"
ICALL RT-PRINT-OBJ,L,K-ART-THE
?CND4: PRINTR "."
.FUNCT PRE-EMPTY:ANY:0:0,L
FSET? PRSO,FL-SURFACE /?CCL3
FSET? PRSO,FL-CONTAINER /?CCL3
LOC PRSO >L
ZERO? L /?CCL8
FSET? L,FL-SURFACE /?CTR7
FSET? L,FL-CONTAINER \?CCL8
?CTR7: ICALL PERFORM,V?EMPTY,L,PRSI
RTRUE
?CCL8: CALL1 RT-YOU-CANT-MSG
RSTACK
?CCL3: FSET? PRSO,FL-CONTAINER \?CCL14
FSET? PRSO,FL-OPEN /?CCL14
FSET? PRSO,FL-OPENABLE \?CCL14
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTR "n't open."
?CCL14: EQUAL? PRSI,FALSE-VALUE,ROOMS,TH-HANDS /FALSE
FSET? PRSI,FL-SURFACE /FALSE
FSET? PRSI,FL-CONTAINER /FALSE
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't empty"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " into"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR "."
.FUNCT V-EMPTY:ANY:0:0
CALL RT-EMPTY-MSG,PRSO,PRSI
RSTACK
.FUNCT RT-EMPTY-MSG:ANY:1:2,CONT,DEST,OBJ,NXT,X,OM
SET 'OM,P-MULT
SET 'P-MULT,0
FIRST? CONT >OBJ /?PRG2
?PRG2: ZERO? OBJ /?REP3
FSET? OBJ,FL-INVISIBLE /?CND4
FSET? OBJ,FL-TAKEABLE \?CND4
INC 'P-MULT
?CND4: NEXT? OBJ >OBJ /?PRG2
JUMP ?PRG2
?REP3: ZERO? P-MULT \?CND11
PRINTI "There is nothing"
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTC 46
CRLF
SET 'P-MULT,OM
RTRUE
?CND11: FIRST? CONT >OBJ /?BOGUS13
?BOGUS13: EQUAL? DEST,FALSE-VALUE,ROOMS,TH-GROUND /?CTR15
EQUAL? DEST,GLOBAL-HERE \?CCL16
?CTR15: SET 'DEST,HERE
JUMP ?PRG20
?CCL16: EQUAL? DEST,TH-HANDS \?PRG20
SET 'DEST,CH-PLAYER
?PRG20: ZERO? OBJ /?REP21
FSET? OBJ,FL-INVISIBLE /?PRG20
FSET? OBJ,FL-TAKEABLE \?PRG20
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE,TRUE-VALUE
PRINTI ": "
NEXT? OBJ >NXT /?BOGUS28
?BOGUS28: EQUAL? DEST,CH-PLAYER \?CCL31
CALL PERFORM,V?TAKE,OBJ,PRSO >X
EQUAL? X,M-FATAL /?REP21
JUMP ?CND29
?CCL31: EQUAL? DEST,HERE \?CCL35
MOVE OBJ,HERE
ICALL RT-PRINT-OBJ,OBJ,K-ART-HE,TRUE-VALUE,STR?82
PRINTI " on"
ICALL RT-PRINT-OBJ,TH-GROUND,K-ART-THE
PRINTI " nearby."
CRLF
JUMP ?CND29
?CCL35: CALL RT-ROOM-IN-MSG?,OBJ,DEST
ZERO? STACK \?CND29
CALL RT-CHECK-MOVE-MSG?,OBJ,DEST
ZERO? STACK \?REP21
MOVE OBJ,DEST
PRINTI "Done."
CRLF
?CND29: SET 'OBJ,NXT
JUMP ?PRG20
?REP21: SET 'P-MULT,OM
RTRUE
.FUNCT V-EMPTY-FROM:ANY:0:0
IN? PRSO,PRSI /?CCL3
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't"
ICALL2 RT-IN-ON-MSG,PRSI
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR "."
?CCL3: ICALL PERFORM,V?EMPTY,PRSI
RTRUE
.FUNCT V-ENTER:ANY:0:0,VEH,DIR,RM
EQUAL? PRSO,ROOMS \?CCL3
CALL FIND-FLAG,HERE,FL-VEHICLE >VEH
ZERO? VEH /?CCL6
IN? WINNER,VEH \?CCL9
ICALL2 RT-ALREADY-MSG,WINNER
ICALL2 RT-IN-ON-MSG,VEH
ICALL RT-PRINT-OBJ,VEH,K-ART-THE
PRINTR ".]"
?CCL9: FSET? VEH,FL-SURFACE /?CTR10
FSET? VEH,FL-OPEN \?CCL11
?CTR10: MOVE WINNER,VEH
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?83
ICALL2 RT-IN-ON-MSG,VEH
ICALL RT-PRINT-OBJ,VEH,K-ART-THE
PRINTR "."
?CCL11: FSET? VEH,FL-OPENABLE \?CCL15
ICALL RT-PRINT-OBJ,VEH,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " closed."
?CCL15: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't get"
ICALL2 RT-IN-ON-MSG,VEH
ICALL RT-PRINT-OBJ,VEH,K-ART-THE
PRINTR "."
?CCL6: CALL2 RT-DO-WALK,P?IN
EQUAL? STACK,FALSE-VALUE,M-FATAL \TRUE
SET 'CLOCK-WAIT,TRUE-VALUE
RTRUE
?CCL3: EQUAL? PRSO,HERE,GLOBAL-HERE \?CCL18
ICALL2 RT-ALREADY-MSG,WINNER
ICALL2 RT-IN-ON-MSG,HERE
ICALL RT-PRINT-OBJ,HERE,K-ART-THE
PRINTR ".]"
?CCL18: IN? PRSO,ROOMS \?CCL20
CALL2 RT-FIND-DIR,PRSO >DIR
ZERO? DIR /?CCL22
CALL2 RT-DO-WALK,DIR
ZERO? STACK \TRUE
?CCL22: FSET? PRSO,FL-AUTO-ENTER \?CCL26
ICALL2 RT-GOTO,PRSO
RTRUE
?CCL26: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTR " can't get there from here."
?CCL20: FSET? PRSO,FL-DOOR \?CCL28
CALL2 RT-OTHER-SIDE,PRSO
ZERO? STACK /?CCL31
ICALL2 RT-DO-WALK,GL-DOOR-DIR
RTRUE
?CCL31: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?66
PRINTR "n't seem to go anywhere."
?CCL28: FSET? PRSO,FL-VEHICLE \?CCL33
FSET? PRSO,FL-SURFACE /?CTR35
FSET? PRSO,FL-OPEN \?CCL36
?CTR35: MOVE WINNER,PRSO
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?83
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL36: FSET? PRSO,FL-OPENABLE \?CCL40
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " closed."
?CCL40: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't get"
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL33: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT V-EXIT:ANY:0:0,VEH,L,DIR
EQUAL? PRSO,ROOMS \?CCL3
LOC WINNER >L
IN? L,ROOMS \?CCL6
ICALL2 RT-DO-WALK,P?OUT
RTRUE
?CCL6: FSET? L,FL-VEHICLE /?CTR7
FSET? L,FL-SURFACE /?CTR7
FSET? L,FL-CONTAINER \?CCL8
?CTR7: FSET? L,FL-SURFACE /?CTR13
FSET? L,FL-OPEN \?CCL14
?CTR13: LOC L
MOVE WINNER,STACK
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?83
ICALL2 RT-OUT-OFF-MSG,L
PRINTI " of"
ICALL RT-PRINT-OBJ,L,K-ART-THE
PRINTR "."
?CCL14: FSET? L,FL-OPENABLE \?CCL18
ICALL RT-PRINT-OBJ,L,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " closed."
?CCL18: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't get"
ICALL2 RT-OUT-OFF-MSG,L
PRINTI " of"
ICALL RT-PRINT-OBJ,L,K-ART-THE
PRINTR "."
?CCL8: CALL FIND-FLAG,HERE,FL-VEHICLE >VEH
ZERO? VEH /TRUE
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't"
ICALL2 RT-IN-ON-MSG,VEH
ICALL RT-PRINT-OBJ,VEH,K-ART-THE
PRINTR "."
?CCL3: EQUAL? PRSO,HERE,GLOBAL-HERE \?CCL21
ICALL2 RT-DO-WALK,P?OUT
RTRUE
?CCL21: IN? PRSO,ROOMS \?CCL23
ICALL1 RT-NOT-IN-ROOM-MSG
RTRUE
?CCL23: FSET? PRSO,FL-DOOR \?CCL25
CALL2 RT-OTHER-SIDE,PRSO
ZERO? STACK /?CCL28
ICALL2 RT-DO-WALK,GL-DOOR-DIR
RTRUE
?CCL28: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?66
PRINTR "n't seem to go anywhere."
?CCL25: FSET? PRSO,FL-VEHICLE /?CTR29
FSET? PRSO,FL-CONTAINER /?CTR29
FSET? PRSO,FL-SURFACE \?CCL30
?CTR29: IN? WINNER,PRSO \?CCL36
FSET? PRSO,FL-SURFACE /?CTR38
FSET? PRSO,FL-OPEN \?CCL39
?CTR38: LOC WINNER
LOC STACK
MOVE WINNER,STACK
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?83
ICALL2 RT-OUT-OFF-MSG,PRSO
PRINTI " of"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL39: FSET? PRSO,FL-OPENABLE \?CCL43
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " closed."
?CCL43: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't get"
ICALL2 RT-OUT-OFF-MSG,PRSO
PRINTI " of"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL36: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't"
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL30: LOC PRSO >L
FSET? L,FL-CONTAINER \?CCL45
PRINTI "[from"
ICALL RT-PRINT-OBJ,L,K-ART-THE
PRINTC 93
CRLF
ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL45: ICALL1 RT-IMPOSSIBLE-MSG
RTRUE
.FUNCT RT-NOT-IN-ROOM-MSG:ANY:0:0
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't"
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
.FUNCT RT-DO-WALK:ANY:1:3,DIR1,DIR2,DIR3,X
SET 'P-WALK-DIR,DIR1
CALL PERFORM,V?WALK,DIR1 >X
ZERO? DIR2 \?PRD4
RETURN X
?PRD4: EQUAL? X,FALSE-VALUE,M-FATAL /?CND1
SET 'P-WALK-DIR,DIR2
CALL PERFORM,V?WALK,DIR2 >X
ZERO? DIR3 \?PRD8
RETURN X
?PRD8: EQUAL? X,FALSE-VALUE,M-FATAL /?CND1
SET 'P-WALK-DIR,DIR3
CALL PERFORM,V?WALK,DIR3 >X
?CND1: RETURN X
.FUNCT V-EXAMINE:ANY:0:0
EQUAL? PRSO,HERE,GLOBAL-HERE \?CCL3
CALL2 PERFORM,V?LOOK
RSTACK
?CCL3: EQUAL? PRSO,INTDIR \?CCL5
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "[If you want to see what's there, go there.]"
?CCL5: FSET? PRSO,FL-DOOR \?CCL7
FSET PRSO,FL-SEEN
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
ICALL2 RT-OPEN-MSG,PRSO
PRINTR "."
?CCL7: FSET? PRSO,FL-CONTAINER /?CTR8
FSET? PRSO,FL-SURFACE \?CCL9
?CTR8: FSET PRSO,FL-SEEN
CALL1 V-LOOK-IN
RSTACK
?CCL9: FSET PRSO,FL-SEEN
CALL1 RT-NOTHING-SPECIAL-MSG
RSTACK
.FUNCT RT-NOTHING-SPECIAL-MSG:ANY:0:0
PRINTI "You see nothing "
CALL2 RT-PICK-NEXT,K-UNUSUAL-TBL
PRINT STACK
PRINTI " about"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
.FUNCT V-EXTINGUISH:ANY:0:0
PRINTI "['Extinguish' currently has no default handling.]
"
RETURN 2
.FUNCT V-FOLLOW:ANY:0:0
PRINTI "['Follow' currently has no default handling.]
"
RETURN 2
.FUNCT V-GIVE:ANY:0:0
PRINTC TAB
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE,TRUE-VALUE,STR?66
PRINTI "n't seem interested in"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
.FUNCT V-GIVE-SWP:ANY:0:0
ICALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-HIT:ANY:0:0
PRINTI "['Hit' currently has no default handling.]
"
RETURN 2
.FUNCT V-INFLATE:ANY:0:0
PRINT K-HOW-INTEND-MSG
CRLF
RTRUE
.FUNCT V-LIFT:ANY:0:0
PRINTI "['Lift' currently has no default handling.]
"
RETURN 2
.FUNCT V-LISTEN:ANY:0:0
EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?85
PRINTI "nothing "
CALL2 RT-PICK-NEXT,K-UNUSUAL-TBL
PRINT STACK
PRINTR "."
?CCL3: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " silent."
.FUNCT V-LOCK:ANY:0:0
FSET? PRSO,FL-LOCKED \?CCL3
CALL RT-ALREADY-MSG,PRSO,STR?86
RSTACK
?CCL3: CALL RT-MATCH-KEY,PRSO,PRSI
ZERO? STACK \?CCL5
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't lock"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " with"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTC 46
CRLF
RTRUE
?CCL5: FSET PRSO,FL-LOCKED
FSET? PRSO,FL-OPEN \?CCL8
FCLEAR PRSO,FL-OPEN
FSET? PRSO,FL-DOOR \?CND9
ICALL2 RT-CHECK-ADJ,PRSO
?CND9: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?78
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " and"
ICALL RT-PRINT-VERB,WINNER,STR?87
ICALL RT-PRINT-OBJ,PRSO,K-ART-HIM
PRINTR "."
?CCL8: ICALL RT-LOCK-MSG,PRSO,PRSI,TRUE-VALUE
PRINTR "."
.FUNCT V-LOOK:ANY:0:0
CALL2 RT-DESCRIBE-ROOM,TRUE-VALUE
ZERO? STACK /TRUE
ICALL1 RT-DESCRIBE-OBJECTS
RTRUE
.FUNCT V-LOOK-BEHIND:ANY:0:0
PRINTC TAB
PRINTI "You don't see anything "
CALL2 RT-PICK-NEXT,K-UNUSUAL-TBL
PRINT STACK
PRINTR "."
.FUNCT V-LOOK-UNDER:ANY:0:0
PRINTC TAB
PRINTI "You don't see anything "
CALL2 RT-PICK-NEXT,K-UNUSUAL-TBL
PRINT STACK
PRINTR "."
.FUNCT V-LOOK-IN:ANY:0:1,DIR,RM
ASSIGNED? 'DIR /?CND1
SET 'DIR,P?IN
?CND1: EQUAL? PRSO,ROOMS \?CND3
SET 'RM,P-IT-OBJECT
FSET? RM,FL-CONTAINER /?CCL6
CALL FIND-FLAG-LG,HERE,FL-OPENABLE >RM
ZERO? RM /?CND3
?CCL6: ICALL PERFORM,PRSA,RM,PRSI
RTRUE
?CND3: FSET? PRSO,FL-OPEN /?CCL11
FSET? PRSO,FL-OPENABLE \?CCL11
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " closed."
?CCL11: FSET? PRSO,FL-CONTAINER /?PRD17
FSET? PRSO,FL-SURFACE \?CCL15
?PRD17: CALL2 RT-SEE-INSIDE?,PRSO
ZERO? STACK /?CCL15
FIRST? PRSO \?CCL22
PRINTI "You can see"
ICALL2 RT-PRINT-CONTENTS,PRSO
ICALL2 RT-IN-ON-MSG,PRSO
FSET? PRSO,FL-SURFACE /?CND23
PRINTI "side"
?CND23: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL22: PRINTI "There's nothing"
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL15: EQUAL? DIR,P?IN \?CCL26
CALL2 RT-YOU-CANT-MSG,STR?88
RSTACK
?CCL26: CALL2 RT-YOU-CANT-MSG,STR?89
RSTACK
.FUNCT TELL-CANT-FIND:ANY:0:0
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "[That place isn't close enough.]"
.FUNCT V-LOOK-ON:ANY:0:0
FSET? PRSO,FL-SURFACE \?CCL3
CALL1 V-LOOK-IN
RSTACK
?CCL3: PRINTI "There's no good surface on"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
.FUNCT V-MOVE:ANY:0:0
PRINTI "['Move' currently has no default handling.]
"
RETURN 2
.FUNCT V-NO:ANY:0:0
PRINTI "[You seem sure of yourself.]"
CRLF
RETURN 2
.FUNCT RT-MATCH-KEY:ANY:1:2,DOOR,KEY
EQUAL? DOOR,TH-STEEL-BOX \?CCL3
EQUAL? KEY,TH-STEEL-KEY /TRUE
RFALSE
?CCL3: EQUAL? DOOR,TH-MISSILE-PANEL \FALSE
EQUAL? KEY,TH-MISSILE-ACCESS-KEY /TRUE
RFALSE
.FUNCT RT-OTHER-SIDE:ANY:1:1,DOOR,RM,L,P,OBJ,PT,PTS
LOC WINNER >L
?PRG1: NEXTP L,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /FALSE
GETPT L,P >PT
ZERO? PT /?PRG1
PTSIZE PT >PTS
EQUAL? PTS,DEXIT \?PRG1
GET PT,DEXITOBJ
EQUAL? DOOR,STACK \?PRG1
SET 'GL-DOOR-DIR,P
GET PT,REXIT >RM
RETURN RM
.FUNCT RT-LOCK-MSG:ANY:3:3,DOOR,KEY,LOCK?
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?90
ICALL RT-PRINT-OBJ,KEY,K-ART-THE
PRINTI " in the lock and"
ICALL RT-PRINT-VERB,WINNER,STR?91
PRINTI " it a turn"
ZERO? LOCK? /?CCL3
PRINTI ". "
ICALL RT-PRINT-OBJ,DOOR,K-ART-THE,TRUE-VALUE
PRINTI " locks with"
JUMP ?CND1
?CCL3: PRINTI ", and"
ICALL RT-PRINT-VERB,WINNER,STR?85
?CND1: PRINTI " a satisfying click"
RTRUE
.FUNCT RT-OPEN-DOOR-MSG:ANY:1:2,DOOR,KEY,RM,LOCK?,TMP1,TMP2,?TMP1
FSET? DOOR,FL-LOCKED \?CCL3
SET 'LOCK?,TRUE-VALUE
FCLEAR DOOR,FL-LOCKED
ICALL RT-LOCK-MSG,DOOR,KEY,FALSE-VALUE
FSET? DOOR,FL-AUTO-OPEN /?CCL5
EQUAL? PRSA,V?OPEN \?CND1
?CCL5: FSET DOOR,FL-OPEN
FSET? DOOR,FL-DOOR \?CND8
ICALL2 RT-CHECK-ADJ,DOOR
?CND8: PRINTI ". "
ICALL RT-PRINT-OBJ,DOOR,K-ART-THE,TRUE-VALUE,STR?92
PRINTI " open"
JUMP ?CND1
?CCL3: FSET DOOR,FL-OPEN
FSET? DOOR,FL-DOOR \?CND10
ICALL2 RT-CHECK-ADJ,DOOR
?CND10: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?93
ICALL RT-PRINT-OBJ,DOOR,K-ART-THE
?CND1: FSET? DOOR,FL-OPEN \?CND12
FSET? DOOR,FL-DOOR \?CCL16
CALL2 RT-OTHER-SIDE,DOOR >RM
ZERO? RM /?CND12
FSET? DOOR,FL-AUTO-ENTER \?CCL20
PRINTI " and"
ZERO? LOCK? /?CND21
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE
?CND21: ICALL RT-PRINT-VERB,WINNER,STR?94
PRINTI " through."
CRLF
CRLF
ICALL2 RT-GOTO,RM
RTRUE
?CCL20: GETP HERE,P?ADJACENT >TMP2
ZERO? TMP2 /?CND12
ADD TMP2,1 >?TMP1
GETB TMP2,0
INTBL? RM,?TMP1,STACK,1 >TMP1 \?CND12
GETB TMP1,1
ZERO? STACK /?CND12
CALL2 RT-SEE-ANYTHING-IN?,RM
ZERO? STACK /?CND12
PRINTI " and"
ZERO? LOCK? /?CND30
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE
?CND30: ICALL RT-PRINT-VERB,WINNER,STR?77
ICALL2 RT-PRINT-CONTENTS,RM
JUMP ?CND12
?CCL16: FSET? DOOR,FL-TRANSPARENT /?CND12
CALL2 RT-SEE-ANYTHING-IN?,DOOR
ZERO? STACK /?CND12
PRINTI ". Inside you see"
ICALL2 RT-PRINT-CONTENTS,DOOR
?CND12: PRINTC 46
CRLF
FSET? DOOR,FL-TAKEABLE /FALSE
FSET? DOOR,FL-OPEN \FALSE
CALL2 RT-SCORE-OBJ,DOOR
RSTACK
.FUNCT V-OPEN:ANY:0:0,F,STR,RM
FSET? PRSO,FL-OPENABLE /?CCL3
CALL1 RT-YOU-CANT-MSG
RSTACK
?CCL3: FSET? PRSO,FL-OPEN \?CCL5
CALL RT-ALREADY-MSG,PRSO,STR?93
RSTACK
?CCL5: ZERO? PRSI \?CCL7
FSET? PRSO,FL-LOCKED \?CCL7
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " locked."
?CCL7: ZERO? PRSI /?CCL11
CALL RT-MATCH-KEY,PRSO,PRSI
ZERO? STACK \?CCL11
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't open"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " with"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR "."
?CCL11: CALL RT-OPEN-DOOR-MSG,PRSO,PRSI
RSTACK
.FUNCT V-PLUG-IN:ANY:0:0
PRINTC TAB
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't plug in"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
.FUNCT V-PULL:ANY:0:0
PRINTI " You pull"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR ", but nothing happens."
.FUNCT V-PUSH:ANY:0:0
PRINTI " You push"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR ", but nothing happens."
.FUNCT PRE-PUT:ANY:0:0
IN? PRSO,GLOBAL-OBJECTS \?CCL3
ICALL2 NOT-HERE,PRSO
RTRUE
?CCL3: EQUAL? PRSI,TH-GROUND,GLOBAL-HERE,FALSE-VALUE /FALSE
IN? PRSI,GLOBAL-OBJECTS \?CCL7
ICALL2 NOT-HERE,PRSI
RTRUE
?CCL7: CALL HELD?,PRSI,PRSO
ZERO? STACK /FALSE
CALL RT-YOU-CANT-MSG,STR?90,PRSI,STR?95
RSTACK
.FUNCT V-PUT:ANY:0:0
FSET? PRSI,FL-SURFACE /?CCL3
PRINTI "There's no good surface on"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR "."
?CCL3: CALL1 RT-PUT-ON-OR-IN
RSTACK
.FUNCT TELL-FIND-NONE:ANY:1:2,STR,OBJ
PRINTI "You search for "
PRINT STR
ZERO? OBJ /?CND1
ICALL RT-PRINT-OBJ,OBJ,K-ART-A
?CND1: PRINTR " but find none."
.FUNCT PRE-PUT-IN:ANY:0:0
EQUAL? PRSI,PSEUDO-OBJECT \?CCL3
CALL1 PRE-PUT
RSTACK
?CCL3: FSET? PRSI,FL-READABLE \?CCL5
ICALL1 WONT-HELP
RETURN 2
?CCL5: FSET? PRSI,FL-CONTAINER /?CND1
ICALL TELL-FIND-NONE,STR?96,PRSI
RETURN 2
?CND1: FSET? PRSI,FL-OPEN /?CND11
FSET? PRSI,FL-OPENABLE \?CND11
ICALL RT-FIRST-YOU-MSG,STR?93,PRSI
FSET PRSI,FL-OPEN
?CND11: CALL1 PRE-PUT
RSTACK
.FUNCT V-PUT-IN:ANY:0:0
FSET? PRSI,FL-OPEN /?CCL3
FSET? PRSI,FL-OPENABLE \?CCL6
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE,TRUE-VALUE,STR?56
PRINTI " closed"
JUMP ?CND4
?CCL6: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't open"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
?CND4: PRINTR "."
?CCL3: CALL1 RT-PUT-ON-OR-IN
RSTACK
.FUNCT RT-PUT-ON-OR-IN:ANY:0:0
ZERO? PRSI \?CCL3
CALL1 RT-YOU-CANT-MSG
RSTACK
?CCL3: EQUAL? PRSO,PRSI \?CCL5
CALL1 HAR-HAR
RSTACK
?CCL5: IN? PRSO,PRSI \?CCL7
ICALL2 RT-ALREADY-MSG,PRSO
ICALL2 RT-IN-ON-MSG,PRSI
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR ".]"
?CCL7: CALL RT-ROOM-IN-MSG?,PRSO,PRSI
ZERO? STACK \TRUE
CALL2 HELD?,PRSO
ZERO? STACK \?CCL11
CALL1 ITAKE
ZERO? STACK /TRUE
?CCL11: FSET? PRSO,FL-WORN \?CND14
FCLEAR PRSO,FL-WORN
ICALL RT-FIRST-YOU-MSG,STR?80,PRSO
?CND14: MOVE PRSO,PRSI
FSET PRSO,FL-TOUCHED
FSET? PRSI,FL-PERSON \?CCL18
FSET? PRSO,FL-CLOTHING \?CCL18
FSET PRSO,FL-WORN
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?90
PRINTI " on"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
JUMP ?CND16
?CCL18: GRTR? P-MULT,1 \?CCL22
PRINTI "Done"
JUMP ?CND16
?CCL22: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?90
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTC 32
FSET? PRSI,FL-SURFACE /?CTR24
FSET? PRSI,FL-PERSON \?CCL25
?CTR24: PRINTC 111
JUMP ?CND23
?CCL25: PRINTC 105
?CND23: PRINTI "nto"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
?CND16: PRINTR "."
.FUNCT RT-TOTAL-SIZE:ANY:1:1,OBJ1,OBJ,TOTSIZ
FIRST? OBJ1 >OBJ /?PRG2
?PRG2: ZERO? OBJ \?CCL6
RETURN TOTSIZ
?CCL6: FSET? OBJ,FL-WORN /?CND4
GETPT OBJ,P?SIZE
GETB STACK,K-SIZ-SIZ
ADD TOTSIZ,STACK >TOTSIZ
?CND4: NEXT? OBJ >OBJ /?PRG2
JUMP ?PRG2
.FUNCT RT-OBJ-TOO-LARGE?:ANY:2:2,OBJ1,OBJ2,CAP,?TMP1
GETPT OBJ2,P?SIZE
GETB STACK,K-SIZ-CAP >CAP
EQUAL? CAP,K-CAP-MAX /FALSE
GETPT OBJ1,P?SIZE
GETB STACK,K-SIZ-SIZ >?TMP1
CALL2 RT-TOTAL-SIZE,OBJ2
ADD ?TMP1,STACK
GRTR? STACK,CAP /TRUE
RFALSE
.FUNCT RT-ROOM-IN-MSG?:ANY:2:2,OBJ1,OBJ2
CALL RT-OBJ-TOO-LARGE?,OBJ1,OBJ2
ZERO? STACK /FALSE
PRINTI "There is not enough room"
ICALL2 RT-IN-ON-MSG,OBJ2
ICALL RT-PRINT-OBJ,OBJ2,K-ART-THE
PRINTR "."
.FUNCT RT-CHECK-MOVE-MSG?:ANY:2:2,SRC,DEST,PTR,OLOC,CNT
ZERO? DEST /FALSE
SET 'PTR,GL-LOC-TRAIL
SET 'OLOC,DEST
?PRG4: PUT PTR,0,OLOC
INC 'CNT
ZERO? OLOC /?REP5
IN? OLOC,ROOMS /?REP5
IN? OLOC,LOCAL-GLOBALS /?REP5
IN? OLOC,GLOBAL-OBJECTS /?REP5
LOC OLOC >OLOC
ADD PTR,2 >PTR
EQUAL? OLOC,DEST \?PRG4
?REP5: INTBL? SRC,GL-LOC-TRAIL,CNT \FALSE
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't put"
ICALL RT-PRINT-OBJ,SRC,K-ART-THE
ICALL2 RT-IN-ON-MSG,SRC
ICALL RT-PRINT-OBJ,SRC,K-ART-HIM
PRINTI "self, or"
ICALL2 RT-IN-ON-MSG,SRC
PRINTI "something that is already"
ICALL2 RT-IN-ON-MSG,SRC
ICALL RT-PRINT-OBJ,SRC,K-ART-HIM
PRINTR "."
.FUNCT V-REACH-BEHIND:ANY:0:0
PRINTI "['Reach behind' currently has no default handling.]
"
RETURN 2
.FUNCT V-REACH-IN:ANY:0:0
PRINTI "['Reach in' currently has no default handling.]
"
RETURN 2
.FUNCT V-REACH-UNDER:ANY:0:0
PRINTI "['Reach under' currently has no default handling.]
"
RETURN 2
.FUNCT V-READ:ANY:0:0
PRINTI "['Read' currently has no default handling.]
"
RETURN 2
.FUNCT V-SHOW:ANY:0:0
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE,TRUE-VALUE,STR?98
PRINTI " unimpressed by"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
.FUNCT V-SHOW-SWP:ANY:0:0
CALL PERFORM,V?SHOW,PRSI,PRSO
RSTACK
.FUNCT V-SIT:ANY:0:0,OBJ
SET 'OBJ,PRSO
EQUAL? PRSO,ROOMS \?CND1
SET 'OBJ,TH-GROUND
?CND1: CALL RT-NO-POINT-MSG,STR?99,OBJ
RSTACK
.FUNCT ITAKE:ANY:0:2,OB,V?,CNT,OBJ,L
ASSIGNED? 'V? /?CND1
SET 'V?,TRUE-VALUE
?CND1: ZERO? OB \?CND3
SET 'OB,PRSO
?CND3: LOC OB >L
FSET? OB,FL-TAKEABLE /?CCL7
ZERO? V? /FALSE
ICALL2 RT-YOU-CANT-MSG,STR?100
RFALSE
?CCL7: CALL RT-OBJ-TOO-LARGE?,OB,WINNER
ZERO? STACK /?CCL12
ZERO? V? /FALSE
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
PRINTI " holding too much."
CRLF
RFALSE
?CCL12: EQUAL? PRSA,V?TAKE /?CND16
EQUAL? L,WINNER /?CND16
ICALL RT-FIRST-YOU-MSG,STR?100,OB,L
?CND16: CALL2 RT-DO-TAKE,OB
RSTACK
.FUNCT RT-DO-TAKE:ANY:1:2,OBJ,FORCED?,L
LOC OBJ >L
MOVE OBJ,WINNER
FSET OBJ,FL-SEEN
FSET OBJ,FL-TOUCHED
FCLEAR OBJ,FL-NO-DESC
FCLEAR OBJ,FL-INVISIBLE
FCLEAR OBJ,FL-WORN
RTRUE
.FUNCT PRE-TAKE:ANY:0:0,L
EQUAL? PRSO,TH-HANDS,YOU /FALSE
LOC PRSO >L
EQUAL? L,GLOBAL-OBJECTS \?CCL5
CALL2 NOT-HERE,PRSO
RSTACK
?CCL5: CALL RT-META-IN?,WINNER,PRSO
ZERO? STACK /?CCL7
ICALL2 RT-ALREADY-MSG,WINNER
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR ".]"
?CCL7: ZERO? L /?CCL9
FSET? L,FL-SURFACE /?CCL9
FSET? L,FL-OPENABLE \?CCL9
FSET? L,FL-OPEN /?CCL9
ICALL RT-PRINT-OBJ,L,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " closed."
?CCL9: EQUAL? PRSA,V?TAKE-WITH /FALSE
ZERO? PRSI /?CCL18
EQUAL? PRSI,L \?CCL21
SET 'PRSI,FALSE-VALUE
RFALSE
?CCL21: FSET? L,FL-SURFACE /?CCL23
FSET? PRSI,FL-OPENABLE \?CCL23
FSET? PRSI,FL-OPEN /?CCL23
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE,TRUE-VALUE,STR?56
PRINTR " closed."
?CCL23: EQUAL? PRSI,L /FALSE
FSET? PRSI,FL-PERSON \?CCL32
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE,TRUE-VALUE,STR?66
PRINTI "n't have"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
JUMP ?CND30
?CCL32: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't"
ICALL2 RT-IN-ON-MSG,PRSI
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
?CND30: PRINTR "."
?CCL18: CALL1 PRE-TAKE-WITH
RSTACK
.FUNCT PRE-TAKE-WITH:ANY:0:0,X
EQUAL? PRSO,YOU /FALSE
CALL2 META-LOC,PRSO
EQUAL? STACK,GLOBAL-OBJECTS \?CCL5
CALL2 HELD?,PRSO
ZERO? STACK \FALSE
FSET? PRSO,FL-PERSON /FALSE
CALL2 NOT-HERE,PRSO
RSTACK
?CCL5: IN? PRSO,WINNER \?CCL12
ICALL2 RT-ALREADY-MSG,PLAYER
PRINTI " holding"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR ".]"
?CCL12: LOC PRSO
FSET? STACK,FL-CONTAINER \?CCL14
LOC PRSO
FSET? STACK,FL-SURFACE /?CCL14
LOC PRSO
FSET? STACK,FL-OPEN /?CCL14
CALL2 RT-YOU-CANT-MSG,STR?101
RSTACK
?CCL14: IN? WINNER,PRSO \FALSE
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTC 91
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
ICALL2 RT-IN-ON-MSG,PRSO
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR ".]"
.FUNCT V-TAKE:ANY:0:0,L,V
LOC PRSO >L
CALL1 ITAKE >V
EQUAL? V,M-FATAL \?CCL3
RETURN 2
?CCL3: ZERO? V /FALSE
GRTR? P-MULT,1 \?CCL10
PRINTI "Taken"
JUMP ?CND8
?CCL10: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?100
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
IN? L,ROOMS /?CND8
EQUAL? L,GLOBAL-OBJECTS,LOCAL-GLOBALS /?CND8
PRINTI " from"
EQUAL? L,PLAYER \?CCL17
EQUAL? WINNER,PLAYER /?CCL17
PRINTI " you"
JUMP ?CND8
?CCL17: ICALL RT-PRINT-OBJ,L,K-ART-THE
?CND8: PRINTR "."
.FUNCT V-TAKE-WITH:ANY:0:0
PRINTI "['Take with' currently has no default handling.]
"
RETURN 2
.FUNCT V-TALK-TO:ANY:0:0
PRINTI "['Talk to' currently has no default handling.]
"
RETURN 2
.FUNCT V-TELL:ANY:0:0
EQUAL? PRSO,PLAYER \?CCL3
ZERO? QCONTEXT /?CCL6
SET 'QCONTEXT,FALSE-VALUE
ZERO? P-CONT /?CCL9
SET 'WINNER,PLAYER
RETURN WINNER
?CCL9: PRINTR "Okay, you're not talking to anyone else."
?CCL6: ICALL2 WONT-HELP-TO-TALK-TO,PLAYER
SET 'P-CONT,FALSE-VALUE
RETURN 2
?CCL3: FSET? PRSO,FL-ALIVE \?CCL13
SET 'QCONTEXT,PRSO
ZERO? P-CONT /?CCL16
SET 'CLOCK-WAIT,TRUE-VALUE
SET 'WINNER,PRSO
RFALSE
?CCL16: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?102
PRINTR " at you expectantly, as if you seemed to be about to talk."
?CCL13: ICALL2 WONT-HELP-TO-TALK-TO,PRSO
SET 'P-CONT,FALSE-VALUE
RETURN 2
.FUNCT WONT-HELP-TO-TALK-TO:ANY:1:1,OBJ
PRINTI "Talking to"
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
PRINTR " won't help one bit."
.FUNCT V-TELL-ABOUT:ANY:0:0,PERSON
EQUAL? PRSO,CH-PLAYER \?CCL3
EQUAL? WINNER,CH-PLAYER \?CCL6
CALL FIND-FLAG,HERE,FL-PERSON,CH-PLAYER >PERSON
ZERO? PERSON \?CTR8
CALL FIND-FLAG,HERE,FL-ALIVE,CH-PLAYER >PERSON
ZERO? PERSON /?CCL9
?CTR8: ICALL PERFORM,V?ASK-ABOUT,PERSON,PRSI
RTRUE
?CCL9: PRINT K-TALK-TO-SELF-MSG
CRLF
RTRUE
?CCL6: SET 'PERSON,WINNER
SET 'WINNER,CH-PLAYER
ICALL PERFORM,V?ASK-ABOUT,PERSON,PRSI
RTRUE
?CCL3: FSET? PRSO,FL-ALIVE /?CCL13
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI "can't tell anything to"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL13: FSET? PRSO,FL-ASLEEP \?CCL15
PRINTI "Talking to"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " in"
ICALL RT-PRINT-OBJ,PRSO,K-ART-HIS
PRINTR " current condition would be a waste of time."
?CCL15: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?103
PRINTR " indifferently."
.FUNCT V-THANK:ANY:0:0
EQUAL? WINNER,CH-PLAYER \?CCL3
EQUAL? PRSO,CH-PLAYER \?CCL6
PRINTR "Patting yourself on the back won't help."
?CCL6: FSET? PRSO,FL-ASLEEP \?CCL8
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?104
PRINTR "n't in any condition to accept your thanks."
?CCL8: PRINTR """You're welcome."""
?CCL3: ICALL1 RT-FOOLISH-TO-TALK?
RTRUE
.FUNCT V-TIE-TO:ANY:0:0
PRINTI "You can't tie"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " to"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTR "."
.FUNCT V-TURN:ANY:0:0
PRINTI "['Turn' currently has no default handling.]
"
RETURN 2
.FUNCT V-TURN-OFF:ANY:0:0
PRINTI "['Turn off' currently has no default handling.]
"
RETURN 2
.FUNCT V-TURN-ON:ANY:0:0
PRINTI "['Turn on' currently has no default handling.]
"
RETURN 2
.FUNCT V-TURN-TO:ANY:0:0
PRINTI "['Turn to' currently has no default handling.]
"
RETURN 2
.FUNCT V-UNDO:ANY:0:0
ZERO? P-CAN-UNDO /FALSE
SET 'GL-SL-HERE,FALSE-VALUE
IRESTORE
ZERO? STACK \?CCL6
PRINTR "[UNDO failed.]"
?CCL6: PRINTR "[UNDO is not available.]"
.FUNCT V-UNLOCK:ANY:0:0
FSET? PRSO,FL-OPENABLE /?CCL3
CALL1 RT-YOU-CANT-MSG
RSTACK
?CCL3: FSET? PRSO,FL-OPEN \?CCL5
CALL RT-ALREADY-MSG,PRSO,STR?93
RSTACK
?CCL5: FSET? PRSO,FL-LOCKED /?CCL7
CALL RT-ALREADY-MSG,PRSO,STR?105
RSTACK
?CCL7: CALL RT-MATCH-KEY,PRSO,PRSI
ZERO? STACK \?CCL9
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE
PRINTI " can't unlock"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI " with"
ICALL RT-PRINT-OBJ,PRSI,K-ART-THE
PRINTC 46
CRLF
RTRUE
?CCL9: CALL RT-OPEN-DOOR-MSG,PRSO,PRSI
RSTACK
.FUNCT V-UNWEAR:ANY:0:0
IN? PRSO,WINNER \?CCL3
FSET? PRSO,FL-WORN \?CCL6
FCLEAR PRSO,FL-WORN
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?100
PRINTI " off"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL6: ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't wearing"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL3: CALL PERFORM,V?TAKE,PRSO
RSTACK
.FUNCT V-WAIT:ANY:0:0,N,ABS?
SET 'N,-1
ZERO? PRSO \?CCL3
SET 'N,20
JUMP ?CND1
?CCL3: EQUAL? PRSO,INTNUM \?CCL5
GRTR? P-NUMBER,0 \?CND1
MUL P-NUMBER,2 >N
JUMP ?CND1
?CCL5: EQUAL? PRSO,TH-TIME \?CCL9
CALL NOUN-USED?,PRSO,W?TURN,W?TURNS
ZERO? STACK /?CCL12
CALL ADJ-USED?,PRSO,W?INT.NUM
ZERO? STACK /?CCL15
GRTR? P-NUMBER,0 \?CCL15
SET 'N,P-NUMBER
JUMP ?CND1
?CCL15: SET 'N,1
JUMP ?CND1
?CCL12: CALL NOUN-USED?,PRSO,W?MIN,W?MINUTE,W?MINUTES
ZERO? STACK /?CCL19
CALL ADJ-USED?,PRSO,W?INT.NUM
ZERO? STACK /?CCL22
GRTR? P-NUMBER,0 \?CCL22
MUL P-NUMBER,2 >N
JUMP ?CND1
?CCL22: SET 'N,2
JUMP ?CND1
?CCL19: CALL NOUN-USED?,PRSO,W?HOUR,W?HOURS
ZERO? STACK /?CND1
CALL ADJ-USED?,PRSO,W?INT.NUM
ZERO? STACK /?CCL28
GRTR? P-NUMBER,0 \?CCL28
MUL P-NUMBER,120 >N
JUMP ?CND1
?CCL28: SET 'N,120
?CND1: GRTR? N,0 \?CCL35
SUB N,1
ADD GL-MOVES,STACK >GL-MOVES
PRINT K-TIME-PASSES-MSG
RTRUE
?CCL9: PRINTI "[You can't wait for"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTI ".]
"
RETURN 2
?CCL35: ZERO? ABS? /?CCL37
PRINTI "[That time has already passed.]
"
RETURN 2
?CCL37: PRINTI "[You can't wait for that.]
"
RETURN 2
.FUNCT RT-FIND-DIR:ANY:1:2,RM,L,P,OD,OBJ,PT,PTS
ASSIGNED? 'L /?CND1
LOC WINNER >L
?CND1: SET 'OD,P-WALK-DIR
?PRG3: NEXTP L,P >P
ZERO? P /FALSE
LESS? P,LOW-DIRECTION /FALSE
SET 'P-WALK-DIR,P
GETPT L,P >PT
ZERO? PT /?PRG3
PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?CCL13
GET PT,REXIT
EQUAL? RM,STACK /?REP4
JUMP ?PRG3
?CCL13: EQUAL? PTS,FEXIT \?CCL17
GET PT,FEXITFCN
CALL STACK,TRUE-VALUE
EQUAL? RM,STACK /?REP4
JUMP ?PRG3
?CCL17: EQUAL? PTS,CEXIT \?CCL21
GET PT,REXIT
EQUAL? RM,STACK /?REP4
JUMP ?PRG3
?CCL21: EQUAL? PTS,DEXIT \?PRG3
GET PT,REXIT
EQUAL? RM,STACK \?PRG3
GET PT,DEXITOBJ >OBJ
ZERO? OBJ /?PRG3
?REP4: SET 'P-WALK-DIR,OD
RETURN P
.FUNCT RT-FIND-ROOM:ANY:1:2,DIR,L,OD,RM,PT,PTS
ASSIGNED? 'L /?CND1
LOC WINNER >L
?CND1: GETPT L,DIR >PT
ZERO? PT /?CND3
PTSIZE PT >PTS
EQUAL? PTS,UEXIT,CEXIT,DEXIT \?CCL7
GET PT,REXIT >RM
RETURN RM
?CCL7: EQUAL? PTS,FEXIT /?CCL8
RETURN RM
?CCL8: SET 'OD,P-WALK-DIR
SET 'P-WALK-DIR,DIR
GET PT,FEXITFCN
CALL STACK,TRUE-VALUE >RM
SET 'P-WALK-DIR,OD
?CND3: RETURN RM
.FUNCT RT-SET-PUPPY:ANY:1:1,OBJ
ZERO? GL-PUPPY /?CND1
FCLEAR GL-PUPPY,FL-NO-DESC
?CND1: SET 'GL-PUPPY,OBJ
FSET GL-PUPPY,FL-NO-DESC
RTRUE
.FUNCT RT-CLEAR-PUPPY:ANY:0:0
ZERO? GL-PUPPY /TRUE
FCLEAR GL-PUPPY,FL-NO-DESC
SET 'GL-PUPPY,FALSE-VALUE
RTRUE
.FUNCT V-WALK:ANY:0:0,PT,PTS,STR,RM
ZERO? P-WALK-DIR \?CND1
ICALL1 V-WALK-AROUND
RETURN 2
?CND1: LOC WINNER
GETPT STACK,PRSO >PT
ZERO? PT /?CCL7
PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?CCL10
GET PT,REXIT
ICALL2 RT-GOTO,STACK
RTRUE
?CCL10: EQUAL? PTS,NEXIT \?CCL12
SET 'CLOCK-WAIT,TRUE-VALUE
GET PT,NEXITSTR
PRINT STACK
CRLF
RETURN 2
?CCL12: EQUAL? PTS,FEXIT \?CCL16
GET PT,FEXITFCN
CALL STACK >RM
ZERO? RM /?PRG20
ICALL2 RT-GOTO,RM
RTRUE
?PRG20: RETURN 2
?CCL16: EQUAL? PTS,CEXIT \?CCL23
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?CCL26
GET PT,REXIT
ICALL2 RT-GOTO,STACK
RTRUE
?CCL26: GET PT,CEXITSTR >STR
ZERO? STR /?CCL28
PRINT STR
CRLF
RETURN 2
?CCL28: ICALL2 RT-YOU-CANT-MSG,STR?106
RETURN 2
?CCL23: EQUAL? PTS,DEXIT \FALSE
CALL2 WALK-THRU-DOOR?,PT
ZERO? STACK /?PRG38
GET PT,REXIT
ICALL2 RT-GOTO,STACK
RTRUE
?PRG38: RETURN 2
?CCL7: EQUAL? PRSO,P?IN,P?OUT \?CCL41
CALL1 V-WALK-AROUND
RSTACK
?CCL41: ICALL2 RT-YOU-CANT-MSG,STR?106
RETURN 2
.FUNCT WALK-THRU-DOOR?:ANY:1:3,PT,OBJ,TELL?,RM
ASSIGNED? 'TELL? /?CND1
SET 'TELL?,TRUE-VALUE
?CND1: ZERO? OBJ \?CND3
GET PT,DEXITOBJ >OBJ
?CND3: FSET? OBJ,FL-OPEN /TRUE
ZERO? PT /?CCL9
GET PT,DEXITSTR >RM
ZERO? RM /?CCL9
ZERO? TELL? /FALSE
PRINT RM
CRLF
RFALSE
?CCL9: ICALL RT-PRINT-OBJ,OBJ,K-ART-THE,TRUE-VALUE,STR?56
PRINTI "n't open."
CRLF
RFALSE
.FUNCT RT-GOTO:ANY:1:2,RM,FORCED?
IN? WINNER,RM \?CND1
ICALL1 RT-WALK-WITHIN-ROOM-MSG
RFALSE
?CND1: GETP HERE,P?ACTION
CALL STACK,M-EXIT
ZERO? STACK /?CND3
ZERO? FORCED? /FALSE
?CND3: MOVE WINNER,RM
EQUAL? WINNER,PLAYER \?CND7
ZERO? GL-PUPPY /?CND9
MOVE GL-PUPPY,RM
?CND9: SET 'OHERE,HERE
SET 'HERE,RM
ICALL1 RT-ENTER-ROOM
?CND7: ZERO? GL-PUPPY /TRUE
PRINTC TAB
ICALL RT-PRINT-OBJ,GL-PUPPY,K-ART-THE,TRUE-VALUE,STR?107
PRINTR " you."
.FUNCT RT-ENTER-ROOM:ANY:0:0,VAL,CNT,TBL,I,C
CALL1 LIT? >LIT
DIROUT D-TABLE-ON,K-DIROUT-TBL
ICALL1 RT-ROOM-NAME-MSG
DIROUT D-TABLE-OFF
SET 'TBL,K-DIROUT-TBL+2
GET K-DIROUT-TBL,0 >CNT
GRTR? CNT,0 \?CND1
?PRG3: GETB TBL,I >C
LESS? C,97 /?CND5
GRTR? C,122 /?CND5
SUB C,32
PUTB TBL,I,STACK
?CND5: IGRTR? 'I,CNT \?PRG3
?CND1: HLIGHT H-BOLD
PRINTT TBL,CNT
HLIGHT H-NORMAL
CRLF
GETP HERE,P?ACTION
ICALL STACK,M-ENTER
CALL1 RT-DESCRIBE-ROOM
ZERO? STACK \?CCL13
SET 'VAL,0
JUMP ?CND11
?CCL13: CALL1 RT-DESCRIBE-OBJECTS >VAL
?CND11: GETP HERE,P?ACTION
ICALL STACK,M-ENTERED
RETURN VAL
.FUNCT RT-ROOM-NAME-MSG:ANY:0:0
ZERO? LIT /?CCL3
CALL2 RT-PRINT-DESC,HERE
RSTACK
?CCL3: PRINTI "darkness"
RTRUE
.FUNCT V-WALK-AROUND:ANY:0:0
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTC 91
PRINT K-WHICH-DIR-MSG
PRINTC 93
CRLF
RETURN 2
.FUNCT V-WALK-TO:ANY:0:0
PRINTI "['Walk to' currently has no default handling.]
"
RETURN 2
.FUNCT RT-WALK-WITHIN-ROOM-MSG:ANY:0:0
CALL NO-NEED,STR?109,HERE
RSTACK
.FUNCT V-WEAR:ANY:0:0
IN? PRSO,WINNER /?CCL3
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?66
PRINTI "n't have"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL3: FSET? PRSO,FL-WORN \?CCL5
ICALL2 RT-ALREADY-MSG,WINNER
PRINTI " wearing"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR ".]"
?CCL5: FSET? PRSO,FL-CLOTHING \?CCL7
FSET PRSO,FL-WORN
ICALL RT-PRINT-OBJ,WINNER,K-ART-THE,TRUE-VALUE,STR?90
PRINTI " on"
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
PRINTR "."
?CCL7: CALL2 RT-YOU-CANT-MSG,STR?110
RSTACK
.FUNCT V-WELD:ANY:0:0
PRINTI "['Weld' currently has no default handling.]
"
RETURN 2
.FUNCT V-YES:ANY:0:0
PRINTI "[You seem sure of yourself.]"
CRLF
RETURN 2
.ENDI