375 lines
6.6 KiB
Plaintext
375 lines
6.6 KiB
Plaintext
|
|
|
|
.FUNCT V-STATEMENT:ANY:0:0
|
|
CALL1 V-DO?
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BE:ANY:0:0,TMP,NOT?,ADJ?,LOC?,OBJ,PREP
|
|
GET PARSE-RESULT,16
|
|
BAND PARSE-NOT,STACK >NOT?
|
|
GET PARSE-RESULT,11 >ADJ?
|
|
GET PARSE-RESULT,9 >LOC?
|
|
EQUAL? PRSA,V?HOW /?CTR2
|
|
EQUAL? PRSA,V?WHEN,V?WHY,V?WHERE /?CTR2
|
|
EQUAL? PRSA,V?WHAT,V?WHO,V?BE? \?CCL3
|
|
?CTR2: EQUAL? PRSI,INTADJ \?CCL9
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
|
|
CALL2 IS-PRSO-ADJ?,ADJ?
|
|
ZERO? STACK \?CND10
|
|
PRINTI "n't"
|
|
?CND10: PRINTC 32
|
|
PRINTB ADJ?
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL9: EQUAL? PRSI,INTPP \?CCL13
|
|
CALL1 P-PP-PREP >PREP
|
|
ZERO? PREP /?CCL16
|
|
CALL1 P-PP-OBJ >OBJ
|
|
ZERO? OBJ /?CCL16
|
|
EQUAL? PRSA,V?BE? \?CCL21
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
|
|
CALL RIGHT-PREP?,PREP,PRSO,OBJ
|
|
ZERO? STACK \?CND22
|
|
PRINTI "n't"
|
|
?CND22: PRINTC 32
|
|
PRINTB PREP
|
|
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL21: PRINTI "You want to know "
|
|
ICALL1 TELL-Q-WORD
|
|
ICALL2 PRSO-IS,NOT?
|
|
PRINTC 32
|
|
PRINTB PREP
|
|
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL16: PRINTI "You want to know "
|
|
ICALL1 TELL-Q-WORD
|
|
ICALL2 PRSO-IS,NOT?
|
|
PRINTC 32
|
|
GET LOC?,1
|
|
PRINTB STACK
|
|
PRINTC 32
|
|
GET LOC?,2
|
|
ICALL2 NP-PRINT,STACK
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL13: ZERO? PRSI \?CCL25
|
|
EQUAL? PRSA,V?WHERE \?CCL25
|
|
LOC PRSO >LOC?
|
|
IN? PRSO,HERE \?CCL30
|
|
ICALL PRSO-IS,FALSE-VALUE,TRUE-VALUE
|
|
PRINTR " here."
|
|
?CCL30: EQUAL? LOC?,GLOBAL-OBJECTS \?CCL32
|
|
PRINTI "No doubt"
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
|
|
ICALL RT-PRINT-VERB,PRSO,STR?56
|
|
PRINTR " around here somewhere."
|
|
?CCL32: EQUAL? LOC?,LOCAL-GLOBALS \?CCL34
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?CCL34
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
|
|
PRINTR " nearby."
|
|
?CCL34: FSET? LOC?,FL-PERSON \?CCL38
|
|
ICALL RT-PRINT-OBJ,LOC?,K-ART-THE,TRUE-VALUE,STR?111
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL38: CALL2 META-LOC,PRSO
|
|
EQUAL? STACK,HERE \?CCL40
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?56
|
|
ICALL2 RT-IN-ON-MSG,LOC?
|
|
ICALL RT-PRINT-OBJ,LOC?,K-ART-THE
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL40: IN? LOC?,ROOMS \?CCL42
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE
|
|
PRINTI " is probably "
|
|
FSET? PRSO,TOUCHBIT \?CCL45
|
|
PRINTI "still in"
|
|
ICALL RT-PRINT-OBJ,LOC?,K-ART-THE
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL45: PRINTR "lying around somewhere."
|
|
?CCL42: PRINTI "That's an excellent question. Just where"
|
|
ICALL RT-PRINT-VERB,PRSO,STR?56
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
|
|
PRINTC 63
|
|
CRLF
|
|
RTRUE
|
|
?CCL25: PRINTI "You want to know "
|
|
ICALL1 TELL-Q-WORD
|
|
ICALL2 PRSO-IS,NOT?
|
|
ZERO? PRSI /?CND46
|
|
ICALL RT-PRINT-OBJ,PRSI,K-ART-A
|
|
?CND46: PRINTC 63
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSI,INTADJ \?CCL50
|
|
CALL2 IS-PRSO-ADJ?,ADJ?
|
|
ZERO? STACK /?CCL53
|
|
ZERO? NOT? /?CCL56
|
|
PRINTI "Wrong,"
|
|
JUMP ?CND54
|
|
?CCL56: PRINTI "Right,"
|
|
?CND54: ICALL2 PRSO-IS,FALSE-VALUE
|
|
JUMP ?CND51
|
|
?CCL53: ZERO? NOT? /?CCL59
|
|
PRINTI "Right,"
|
|
JUMP ?CND57
|
|
?CCL59: PRINTI "Wrong,"
|
|
?CND57: ICALL2 PRSO-IS,TRUE-VALUE
|
|
?CND51: PRINTC 32
|
|
PRINTB ADJ?
|
|
PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL50: EQUAL? PRSI,INTPP \?CCL61
|
|
PRINTI "So, you say"
|
|
ICALL2 PRSO-IS,NOT?
|
|
CALL1 P-PP-PREP >PREP
|
|
ZERO? PREP /?CCL64
|
|
CALL1 P-PP-OBJ >OBJ
|
|
ZERO? OBJ /?CCL64
|
|
PRINTB PREP
|
|
ICALL RT-PRINT-OBJ,OBJ,K-ART-THE
|
|
JUMP ?CND62
|
|
?CCL64: GET LOC?,1
|
|
PRINTB STACK
|
|
GET LOC?,2
|
|
CALL2 NP-PRINT,STACK
|
|
ICALL RT-PRINT-OBJ,STACK,K-ART-THE
|
|
?CND62: PRINTC 46
|
|
CRLF
|
|
RTRUE
|
|
?CCL61: PRINTI "So you think"
|
|
ICALL2 PRSO-IS,NOT?
|
|
ZERO? PRSI /?CND67
|
|
ICALL RT-PRINT-OBJ,PRSI,K-ART-A
|
|
?CND67: PRINTC 63
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TELL-Q-WORD:ANY:0:0
|
|
EQUAL? PRSA,V?BE? \?CCL3
|
|
PRINTI "if"
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?WHY \?CCL5
|
|
PRINTI "why"
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSA,V?WHO \?CCL7
|
|
PRINTI "who"
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSA,V?WHAT \?CCL9
|
|
PRINTI "what"
|
|
RTRUE
|
|
?CCL9: EQUAL? PRSA,V?WHERE \?CCL11
|
|
PRINTI "where"
|
|
RTRUE
|
|
?CCL11: EQUAL? PRSA,V?WHEN \?CCL13
|
|
PRINTI "when"
|
|
RTRUE
|
|
?CCL13: EQUAL? PRSA,V?HOW \?CCL15
|
|
PRINTI "how"
|
|
RTRUE
|
|
?CCL15: PRINTB P-PRSA-WORD
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RIGHT-PREP?:ANY:3:3,PREP,OBJ,CONT
|
|
IN? OBJ,CONT \FALSE
|
|
EQUAL? PREP,W?IN,W?INSIDE \?CCL5
|
|
CALL2 RT-SEE-INSIDE?,CONT
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
?CCL5: EQUAL? PREP,W?ON \FALSE
|
|
FSET? CONT,FL-SURFACE /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT IS-QUIET?:ANY:1:1,OBJ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IS-OUTSIDE?:ANY:1:1,OBJ
|
|
FSET? HERE,FL-INDOORS /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IS-OPEN?:ANY:1:1,OBJ
|
|
FSET? OBJ,FL-OPENABLE \FALSE
|
|
FSET? OBJ,FL-OPEN /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT IS-CLOSED?:ANY:1:1,OBJ
|
|
FSET? OBJ,FL-OPENABLE \FALSE
|
|
FSET? OBJ,FL-OPEN /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IS-LOCKED?:ANY:1:1,OBJ
|
|
FSET? OBJ,FL-OPENABLE \FALSE
|
|
FSET? OBJ,FL-LOCKED /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT IS-UNLOCKED?:ANY:1:1,OBJ
|
|
FSET? OBJ,FL-OPENABLE \FALSE
|
|
FSET? OBJ,FL-LOCKED /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IS-DEAD?:ANY:1:1,OBJ
|
|
FSET? OBJ,FL-PERSON \FALSE
|
|
FSET? OBJ,FL-ALIVE /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IS-ALIVE?:ANY:1:1,OBJ
|
|
FSET? OBJ,FL-PERSON \FALSE
|
|
FSET? OBJ,FL-ALIVE /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT IS-HERE?:ANY:1:1,OBJ,L
|
|
LOC OBJ >L
|
|
?PRG1: ZERO? L /FALSE
|
|
EQUAL? L,GLOBAL-OBJECTS,LOCAL-GLOBALS,ROOMS /FALSE
|
|
EQUAL? L,HERE /TRUE
|
|
LOC L >L
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT PRSO-IS:ANY:1:2,NOT?,CAP?
|
|
ZERO? CAP? /?CCL3
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: ICALL RT-PRINT-OBJ,PRSO,K-ART-THE
|
|
?CND1: ICALL RT-PRINT-VERB,PRSO,STR?56
|
|
ZERO? NOT? /FALSE
|
|
PRINTI "n't"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IS-PRSO-ADJ?:ANY:1:1,ADJ,TMP
|
|
GETPT PRSO,P?ADJECTIVE >TMP
|
|
ZERO? TMP /?CCL3
|
|
PTSIZE TMP
|
|
DIV STACK,2
|
|
INTBL? ADJ,TMP,STACK /TRUE
|
|
?CCL3: GET ADJ-TABLE,0
|
|
INTBL? ADJ,ADJ-TABLE,STACK >TMP \FALSE
|
|
GET TMP,1
|
|
CALL STACK,PRSO
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT YES-BUT?:ANY:2:2,STR1,STR2
|
|
GET PARSE-RESULT,10
|
|
ZERO? STACK \FALSE
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE
|
|
PRINTC 32
|
|
PRINT STR1
|
|
PRINTI ", but "
|
|
PRINT STR2
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-HE
|
|
PRINTC 63
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CAN?:ANY:0:0
|
|
CALL YES-BUT?,STR?112,STR?113
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MAY?:ANY:0:0
|
|
CALL YES-BUT?,STR?113,STR?112
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DO?:ANY:0:0
|
|
GET PARSE-RESULT,10
|
|
ZERO? STACK \FALSE
|
|
ICALL RT-PRINT-OBJ,PRSO,K-ART-THE,TRUE-VALUE,STR?66
|
|
PRINTR ", but why?"
|
|
|
|
|
|
.FUNCT V-COULD?:ANY:0:0
|
|
CALL YES-BUT?,STR?114,STR?115
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WOULD?:ANY:0:0
|
|
CALL YES-BUT?,STR?115,STR?114
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SHOULD?:ANY:0:0
|
|
CALL YES-BUT?,STR?116,STR?117
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MIGHT?:ANY:0:0
|
|
CALL YES-BUT?,STR?118,STR?117
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WILL?:ANY:0:0
|
|
CALL YES-BUT?,STR?117,STR?116
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MUST?:ANY:0:0
|
|
CALL YES-BUT?,STR?119,STR?112
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BE?:ANY:0:0
|
|
CALL1 V-BE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WHO:ANY:0:0
|
|
CALL1 V-BE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WHAT:ANY:0:0
|
|
CALL1 V-BE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WHEN:ANY:0:0
|
|
CALL1 V-BE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WHERE:ANY:0:0
|
|
CALL1 V-BE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WHY:ANY:0:0
|
|
CALL1 V-BE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HOW:ANY:0:0
|
|
CALL1 V-BE
|
|
RSTACK
|
|
|
|
.ENDI
|