abyss/be.zap

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