shogun/qverbs.zap

697 lines
13 KiB
Plaintext

.SEGMENT "0"
.FUNCT WHAT-F:ANY:0:0,OBJ,TMP,NOT?,LOC?
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK >NOT?
GET PARSE-RESULT,9 >LOC?
EQUAL? PRSA,V?BE? /FALSE
GET PARSE-RESULT,10 >OBJ
EQUAL? OBJ,W?WHO,W?WHAT,W?WHERE /FALSE
GET PARSE-RESULT,10 >OBJ
EQUAL? OBJ,W?WHY,W?WHEN,W?HOW /FALSE
CALL1 EVERYWHERE-VERB?
ZERO? STACK \?CCL9
PRINTR "That's precisely the sort of question you'll have to answer for yourself."
?CCL9: EQUAL? PRSI,INTPP \FALSE
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /FALSE
ZERO? NOT? \FALSE
CALL1 P-PP-PREP >TMP
ZERO? TMP \?PEN17
GET LOC?,1 >TMP
?PEN17: EQUAL? TMP,W?BEHIND \?CCL22
ICALL PERFORM,V?LOOK-BEHIND,OBJ
RTRUE
?CCL22: EQUAL? TMP,W?DOWN \?CCL24
ICALL PERFORM,V?LOOK-DOWN,OBJ
RTRUE
?CCL24: EQUAL? TMP,W?IN,W?ON,W?THROUGH \?CCL26
ICALL PERFORM,V?LOOK-INSIDE,OBJ
RTRUE
?CCL26: EQUAL? TMP,W?UNDER \FALSE
ICALL PERFORM,V?LOOK-UNDER,OBJ
RTRUE
.FUNCT TELL-Q-WORD:ANY:0:0,WD
EQUAL? PRSA,V?BE? \?CCL3
PRINTI "if"
RTRUE
?CCL3: GET PARSE-RESULT,10 >WD
EQUAL? WD,W?WHO,W?WHAT,W?WHERE /?CTR4
GET PARSE-RESULT,10 >WD
EQUAL? WD,W?WHY,W?WHEN,W?HOW \?CCL5
?CTR4: PRINTB WD
RTRUE
?CCL5: PRINTI "whether"
RTRUE
.FUNCT P-NEGATIVE?:ANY:0:0
GET PARSE-RESULT,16
BAND PARSE-NOT,STACK
RSTACK
.FUNCT TRY-QCONTEXT?:ANY:0:0,W
ZERO? QCONTEXT /FALSE
IN? QCONTEXT,HERE \FALSE
EQUAL? QCONTEXT,WINNER /FALSE
CALL1 PAST-TENSE?
ZERO? STACK \?CCL3
EQUAL? QCONTEXT,PRSO /FALSE
EQUAL? PRSA,V?ASK-ABOUT /FALSE
EQUAL? PRSA,V?TELL-ABOUT \?CCL3
EQUAL? PRSO,ME /FALSE
?CCL3: SET 'W,WINNER
SET 'WINNER,QCONTEXT
ICALL PERFORM,PRSA,PRSO,PRSI
SET 'WINNER,W
RTRUE
.FUNCT PRE-BE:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
RFALSE
.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?BE?,V?WHO,V?WHAT /?CTR2
EQUAL? PRSA,V?WHERE,V?WHY,V?WHEN /?CTR2
EQUAL? PRSA,V?HOW /?CTR2
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHO,W?WHAT,W?WHERE /?CTR2
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHY,W?WHEN,W?HOW \?CCL3
?CTR2: CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
EQUAL? PRSI,INTADJ \?CCL13
EQUAL? PRSO,ME,PLAYER \?CCL16
EQUAL? PRSA,V?BE? \?CCL19
PRINTI "You"
JUMP ?CND17
?CCL19: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
PRINTI " you"
?CND17: CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK /?CCL22
PRINTI " are "
JUMP ?CND14
?CCL22: PRINTI " aren't "
JUMP ?CND14
?CCL16: EQUAL? PRSA,V?BE? \?CCL25
ICALL2 CTHE-PRINT,PRSO
JUMP ?CND23
?CCL25: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
PRINTC 32
ICALL2 THE-PRINT,PRSO
?CND23: ICALL2 PRINT-IS/ARE,PRSO
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK \?CND26
PRINTI "n't"
?CND26: PRINTC 32
?CND14: PRINTB ADJ?
PRINTR "."
?CCL13: EQUAL? PRSI,INTPP \?CCL29
CALL1 P-PP-PREP >PREP
ZERO? PREP /?CCL32
CALL1 P-PP-OBJ >OBJ
ZERO? OBJ /?CCL32
EQUAL? PRSA,V?BE? \?CCL37
CALL RIGHT-PREP?,PREP,PRSO,OBJ
ZERO? STACK \?PRF40
PUSH 1
JUMP ?PEN38
?PRF40: PUSH 0
?PEN38: ICALL PRSO-IS,STACK,TRUE-VALUE
PRINTC 32
PRINTB PREP
PRINTC 32
ICALL2 THE-PRINT,OBJ
PRINTR "."
?CCL37: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
PRINTB PREP
PRINTC 32
ICALL2 THE-PRINT,OBJ
PRINTR "."
?CCL32: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
ICALL2 PRSO-IS,NOT?
PRINTC 32
GET LOC?,1
PRINTB STACK
PRINTC 32
GET LOC?,2
ICALL2 NP-PRINT,STACK
PRINTR "."
?CCL29: GET PARSE-RESULT,13
ZERO? STACK /?CCL42
CALL1 WHO-KNOWS
RSTACK
?CCL42: ZERO? PRSI \?CCL44
GET PARSE-RESULT,10
EQUAL? STACK,W?WHERE \?CCL44
EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL49
LOC PRSO >LOC?
JUMP ?CND47
?CCL49: SET 'LOC?,FALSE-VALUE
?CND47: ZERO? LOC? \?CCL52
PRINTR "That's an excellent question."
?CCL52: IN? PRSO,HERE \?CCL54
ICALL PRSO-IS,FALSE-VALUE,TRUE-VALUE
PRINTR " here."
?CCL54: EQUAL? LOC?,GENERIC-OBJECTS \?CCL56
PRINTI "You don't know where "
ICALL2 THE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "."
?CCL56: EQUAL? LOC?,GLOBAL-OBJECTS \?CCL58
PRINTI "No doubt "
ICALL2 THE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " around here somewhere."
?CCL58: EQUAL? LOC?,LOCAL-GLOBALS \?CCL60
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL60
ICALL2 CTHE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR " nearby."
?CCL60: FSET? LOC?,PERSONBIT \?CCL64
ICALL2 CTHE-PRINT,LOC?
PRINTI " has "
ICALL2 THE-PRINT,PRSO
PRINTR "."
?CCL64: CALL2 META-LOC,PRSO
EQUAL? STACK,HERE \?CCL66
ICALL2 CTHE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTI " in "
ICALL2 THE-PRINT,LOC?
PRINTR "."
?CCL66: IN? LOC?,ROOMS \?CCL68
ICALL2 CTHE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTI " probably "
FSET? PRSO,TOUCHBIT \?CCL71
PRINTI "still in the place called """
ICALL2 DPRINT,LOC?
PRINTR "."""
?CCL71: FSET? PRSO,PERSONBIT /?CND72
PRINTI "lying "
?CND72: PRINTR "around somewhere."
?CCL68: PRINT WHO-KNOWS-STRING
PRINTI "where "
ICALL2 THE-PRINT,PRSO
ICALL2 PRINT-IS/ARE,PRSO
PRINTR "."
?CCL44: PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
EQUAL? PRSO,FALSE-VALUE,ROOMS /?CND74
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND74
PRINTC 32
ICALL1 PRINTA-PRSI
?CND74: PRINTR "."
?CCL3: EQUAL? PRSI,INTADJ \?CCL80
CALL2 IS-PRSO-ADJ?,ADJ?
ZERO? STACK /?CCL83
ZERO? NOT? /?CCL86
PRINTI "Wrong,"
JUMP ?CND84
?CCL86: PRINTI "Right,"
?CND84: ICALL2 PRSO-IS,FALSE-VALUE
JUMP ?CND81
?CCL83: ZERO? NOT? /?CCL89
PRINTI "Right,"
JUMP ?CND87
?CCL89: PRINTI "Wrong,"
?CND87: ICALL2 PRSO-IS,TRUE-VALUE
?CND81: PRINTC 32
PRINTB ADJ?
PRINTR "."
?CCL80: EQUAL? PRSI,INTPP \?CCL91
PRINTI "So, you say"
ICALL2 PRSO-IS,NOT?
PRINTC 32
CALL1 P-PP-PREP >TMP
ZERO? TMP /?CCL94
PRINTB TMP
JUMP ?CND92
?CCL94: GET LOC?,1
PRINTB STACK
?CND92: PRINTC 32
CALL1 P-PP-OBJ >TMP
ZERO? TMP /?CCL97
ICALL2 THE-PRINT,TMP
JUMP ?CND95
?CCL97: GET LOC?,2
ICALL2 NP-PRINT,STACK
?CND95: PRINTR "."
?CCL91: EQUAL? P-PRSA-WORD,W?BE \?CCL99
EQUAL? PRSO,WINNER \?CCL102
ICALL2 CTHE-PRINT,PRSO
PRINTI " is already "
PRINTI "that"
PRINTR "."
?CCL102: PRINTR "That would take a bit of magic."
?CCL99: PRINTI "So you think"
ICALL2 PRSO-IS,NOT?
ZERO? PRSI /?CND103
PRINTC 32
ICALL1 PRINTA-PRSI
?CND103: PRINTR "."
.FUNCT RIGHT-PREP?:ANY:3:3,PREP,OBJ,CONT
IN? OBJ,CONT \FALSE
EQUAL? PREP,W?IN,W?INSIDE \?CCL5
CALL2 SEE-INSIDE?,CONT
ZERO? STACK /FALSE
RTRUE
?CCL5: EQUAL? PREP,W?ON \FALSE
FSET? CONT,SURFACEBIT /TRUE
RFALSE
.FUNCT V-BE?:ANY:0:0
CALL1 V-BE
RSTACK
.FUNCT V-WHO:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: ZERO? PRSI \?CCL5
PRINTI "You don't know anything special about "
ICALL1 THE-PRINT-PRSO
PRINTR "."
?CCL5: CALL1 V-BE
RSTACK
.FUNCT V-WHAT:ANY:0:0
CALL1 V-WHO
RSTACK
.FUNCT PRE-WHERE:ANY:0:0
ZERO? PRSS \FALSE
ZERO? PRSQ \FALSE
ICALL PERFORM,V?FIND,PRSO,PRSI
RTRUE
.FUNCT V-WHERE:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-WHEN:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-WHY:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT V-HOW:ANY:0:0
EQUAL? PRSO,ROOMS \?CCL3
CALL1 MORE-SPECIFIC
RSTACK
?CCL3: CALL1 V-BE
RSTACK
.FUNCT QUIET?:ANY:1:1,OBJ
RTRUE
.FUNCT OUTSIDE?:ANY:1:1,OBJ
FSET? HERE,OUTSIDE /TRUE
RFALSE
.FUNCT OPEN?:ANY:1:1,OBJ
FSET? OBJ,OPENABLE /?PRD3
FSET? OBJ,DOORBIT \FALSE
?PRD3: FSET? OBJ,OPENBIT /TRUE
RFALSE
.FUNCT Q-CLOSED?:ANY:1:1,OBJ
FSET? OBJ,OPENABLE /?PRD3
FSET? OBJ,DOORBIT \FALSE
?PRD3: FSET? OBJ,OPENBIT /FALSE
RTRUE
.FUNCT LOCKED?:ANY:1:1,OBJ
FSET? OBJ,DOORBIT \FALSE
FSET? OBJ,LOCKED /TRUE
RFALSE
.FUNCT UNLOCKED?:ANY:1:1,OBJ
FSET? OBJ,DOORBIT \FALSE
FSET? OBJ,LOCKED /FALSE
RTRUE
.FUNCT DEAD?:ANY:1:1,OBJ
FSET? OBJ,PERSONBIT \TRUE
FSET? OBJ,DEAD /TRUE
RFALSE
.FUNCT ALIVE?:ANY:1:1,OBJ
FSET? OBJ,PERSONBIT \FALSE
FSET? OBJ,DEAD /FALSE
RTRUE
.FUNCT PRSO-IS:ANY:1:2,NOT?,CAP?
EQUAL? PRSO,ME,PLAYER \?CCL3
ZERO? CAP? /?CCL6
PRINTI "You"
JUMP ?CND4
?CCL6: PRINTI " you"
?CND4: PRINTI " are"
ZERO? NOT? /FALSE
PRINTI "n't"
RTRUE
?CCL3: ZERO? CAP? /?CCL12
ICALL2 CTHE-PRINT,PRSO
JUMP ?CND10
?CCL12: PRINTC 32
ICALL2 THE-PRINT,PRSO
?CND10: ICALL2 PRINT-IS/ARE,PRSO
ZERO? NOT? /FALSE
PRINTI "n't"
RTRUE
.FUNCT PRINT-IS/ARE:ANY:1:1,OBJ
FSET? OBJ,PLURAL /?CTR2
EQUAL? OBJ,BLACKTHORNE,ME,YOU \?CCL3
?CTR2: PRINTI " are"
RTRUE
?CCL3: PRINTI " is"
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 PP?:ANY:2:2,P,N,TMP
GET PARSE-RESULT,9 >TMP
ZERO? TMP /FALSE
ZERO? P /FALSE
CALL1 P-PP-PREP
EQUAL? P,STACK \FALSE
ZERO? N /FALSE
CALL1 P-PP-OBJ
EQUAL? N,STACK /TRUE
RFALSE
.FUNCT V-STATEMENT:ANY:0:0
CALL1 V-DO?
RSTACK
.FUNCT WHO-KNOWS:ANY:0:1,WD,OBJ,SUBJ,V,M,N,?TMP1
ASSIGNED? 'WD /?CND1
GET PARSE-RESULT,14 >WD
?CND1: GET PARSE-RESULT,10
EQUAL? STACK,W?WHO,W?WHAT \?CCL5
GET P-PRSA-WORD,3
GET STACK,2 >OBJ
ZERO? OBJ /?CCL5
CALL GET-SYNTAX,OBJ,1,0,TRUE-VALUE
ZERO? STACK /?CCL5
CALL DETERMINE-OBJ,FALSE-VALUE,1,TRUE-VALUE >OBJ
ZERO? OBJ /?CCL5
GET OBJ,3 >OBJ
ZERO? OBJ /?CCL5
PRINTI "Perhaps"
JUMP ?CND3
?CCL5: SET 'OBJ,FALSE-VALUE
PRINT WHO-KNOWS-STRING
ICALL1 TELL-Q-WORD
?CND3: GET PARSE-RESULT,13 >SUBJ
ZERO? SUBJ /?CCL13
GET SUBJ,3 >SUBJ
JUMP ?CND11
?CCL13: EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL15
SET 'SUBJ,PRSO
?CND11: PRINTC 32
EQUAL? SUBJ,ME,PLAYER \?CCL18
PRINTI "you"
JUMP ?CND16
?CCL15: PRINTR "."
?CCL18: ICALL2 THE-PRINT,SUBJ
?CND16: ZERO? WD /?CND19
EQUAL? WD,W?DO,W?DOES,W?DID \?CCL22
GET PARSE-RESULT,13
ZERO? STACK \?CND19
?CCL22: PRINTC 32
PRINTB WD
?CND19: GET PARSE-RESULT,13
ZERO? STACK /?CND25
PRINTC 32
ZERO? WD /?CCL29
EQUAL? WD,W?DID \?CCL32
GETB VOCAB,0
ADD 1,STACK
ADD VOCAB,STACK >V
GETB V,0
BOR 128,STACK >M
EQUAL? P-PRSA-WORD,W?GET \?CCL37
PRINTI "got"
JUMP ?CND30
?CCL37: ADD V,9 >?TMP1
ADD V,1
GET STACK,0
INTBL? P-PRSA-WORD,?TMP1,STACK,M >N \?CCL39
GET N,1
BTST STACK,PAST-TENSE \?CCL39
PRINTB N
JUMP ?CND30
?CCL39: PRINTB P-PRSA-WORD
PRINTI "ed"
JUMP ?CND30
?CCL32: PRINTB P-PRSA-WORD
EQUAL? WD,W?DO,W?DOES \?CND30
EQUAL? SUBJ,ME,PLAYER /?CND30
FSET? SUBJ,PLURAL /?CND30
PRINTC 115
?CND30: ZERO? OBJ /?CCL49
PRINTC 32
EQUAL? OBJ,SUBJ \?CCL52
FSET? OBJ,PERSONBIT /?CCL55
PRINTI "it"
JUMP ?CND53
?CCL55: FSET? OBJ,FEMALE \?CCL57
PRINTI "her"
JUMP ?CND53
?CCL57: PRINTI "him"
?CND53: PRINTI "self"
JUMP ?CND25
?CCL52: ICALL2 THE-PRINT,OBJ
JUMP ?CND25
?CCL49: ICALL1 ECHO-NOUNS
JUMP ?CND25
?CCL29: PRINTB P-PRSA-WORD
?CND25: PRINTR "."
.FUNCT ECHO-NOUNS:ANY:0:0,WD
EQUAL? PRSO,0,WHAT,NOT-HERE-OBJECT /?CND1
GET PARSE-RESULT,7 >WD
ZERO? WD /?CND3
PRINTC 32
PRINTB WD
?CND3: PRINTC 32
ICALL2 THE-PRINT,PRSO
?CND1: EQUAL? PRSI,0,WHAT,NOT-HERE-OBJECT /FALSE
GET PARSE-RESULT,8 >WD
ZERO? WD /?CND8
PRINTC 32
PRINTB WD
?CND8: PRINTC 32
CALL2 THE-PRINT,PRSI
RSTACK
.FUNCT V-CAN?:ANY:0:0
CALL2 WHO-KNOWS,W?CAN
RSTACK
.FUNCT V-MAY?:ANY:0:0
CALL2 WHO-KNOWS,W?MAY
RSTACK
.FUNCT V-DO?:ANY:0:0
CALL1 TRY-QCONTEXT?
ZERO? STACK \TRUE
GET PARSE-RESULT,16
BTST STACK,PARSE-QUESTION /?CCL5
ZERO? PRSS \?CCL8
ICALL1 MORE-SPECIFIC
RTRUE
?CCL8: PRINTI "So you think"
EQUAL? PRSS,ME,PLAYER \?CCL11
PRINTI " you "
GET PARSE-RESULT,16
BTST STACK,1 \?CND9
PRINTI "don't "
JUMP ?CND9
?CCL11: PRINTC 32
ICALL2 THE-PRINT,PRSS
PRINTC 32
GET PARSE-RESULT,16
BTST STACK,1 \?CND9
PRINTI "doesn't "
?CND9: PRINTB P-PRSA-WORD
ICALL1 ECHO-NOUNS
PRINTR "."
?CCL5: CALL1 WHO-KNOWS
RSTACK
.FUNCT V-COULD?:ANY:0:0
CALL2 WHO-KNOWS,W?COULD
RSTACK
.FUNCT V-WOULD?:ANY:0:0
CALL2 WHO-KNOWS,W?WOULD
RSTACK
.FUNCT V-SHOULD?:ANY:0:0
CALL2 WHO-KNOWS,W?SHOULD
RSTACK
.FUNCT V-MIGHT?:ANY:0:0
CALL2 WHO-KNOWS,W?MIGHT
RSTACK
.FUNCT V-WILL?:ANY:0:0
CALL2 WHO-KNOWS,W?WILL
RSTACK
.FUNCT V-MUST?:ANY:0:0
CALL2 WHO-KNOWS,W?MUST
RSTACK
.FUNCT QUESTION-VERB?:ANY:0:0,TMP
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHO,W?WHAT,W?WHERE /TRUE
GET PARSE-RESULT,10 >TMP
EQUAL? TMP,W?WHY,W?WHEN,W?HOW /TRUE
EQUAL? PRSA,V?BE?,V?CAN?,V?COULD? /TRUE
EQUAL? PRSA,V?DO?,V?MAY?,V?MIGHT? /TRUE
EQUAL? PRSA,V?MUST?,V?SHOULD?,V?WILL? /TRUE
EQUAL? PRSA,V?WOULD? /TRUE
RFALSE
.FUNCT PRE-DROP?:ANY:0:0
LOC PRSS
EQUAL? PRSO,STACK \FALSE
ICALL PERFORM,V?DISEMBARK,PRSO,PRSI
RTRUE
.FUNCT V-DROP?:ANY:0:0
EQUAL? PRSO,ROOMS \FALSE
PRINT STR?61
PRINTR "hanging from anything."
.FUNCT V-DISEMBARK?:ANY:0:0,AV
LOC PRSS >AV
EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3
ZERO? AV /?CCL6
IN? AV,ROOMS /?CCL6
ICALL PERFORM,PRSA,AV,PRSI
RTRUE
?CCL6: PRINT STR?61
PRINTR "in anything."
?CCL3: ZERO? AV /?CCL10
IN? AV,ROOMS /?CCL10
EQUAL? AV,PRSO /FALSE
CALL HELD?,AV,PRSO
ZERO? STACK \FALSE
PRINT STR?55
FSET? AV,SURFACEBIT \?CCL20
PRINTI " on "
JUMP ?CND18
?CCL20: PRINTI " in "
?CND18: ICALL2 THE-PRINT,AV
PRINTR "!"
?CCL10: LOC PRSO
ZERO? STACK /?CCL22
ICALL PERFORM,V?TAKE,PRSO,PRSI
RTRUE
?CCL22: PRINT STR?117
CRLF
RTRUE
.FUNCT PRE-TAKE?:ANY:0:0
ZERO? PRSI \FALSE
CALL1 PRE-TAKE
RSTACK
.FUNCT V-TAKE?:ANY:0:0
GET PARSE-RESULT,10
ZERO? STACK \FALSE
PRINTR "Seems reasonable."
.ENDSEG
.ENDI