Final Revision
This commit is contained in:
578
find.zap
Normal file
578
find.zap
Normal file
@@ -0,0 +1,578 @@
|
||||
|
||||
.SEGMENT "0"
|
||||
|
||||
|
||||
.FUNCT FIND-DESCENDANTS:ANY:2:2,PARENT,FLAGS,F,FOBJ
|
||||
SET 'F,FINDER
|
||||
EQUAL? PARENT,GLOBAL-HERE \?CND1
|
||||
SET 'PARENT,HERE
|
||||
?CND1: FIRST? PARENT >FOBJ \TRUE
|
||||
?PRG6: CALL2 VISIBLE?,FOBJ
|
||||
ZERO? STACK /?CND8
|
||||
BTST FLAGS,8 /?CND10
|
||||
BTST FLAGS,1 \?PRF16
|
||||
PUSH 1
|
||||
JUMP ?PEN14
|
||||
?PRF16: PUSH 0
|
||||
?PEN14: CALL MATCH-OBJECT,FOBJ,F,STACK
|
||||
ZERO? STACK /FALSE
|
||||
?CND10: BTST FLAGS,4 \?CND8
|
||||
FIRST? FOBJ \?CND8
|
||||
EQUAL? FOBJ,WINNER /?CND8
|
||||
FSET? FOBJ,SEARCHBIT \?PRD24
|
||||
FSET? FOBJ,OPENBIT /?CCL18
|
||||
FSET? FOBJ,TRANSBIT /?CCL18
|
||||
?PRD24: FSET? FOBJ,SURFACEBIT \?CND8
|
||||
?CCL18: BTST FLAGS,1 \?CCL33
|
||||
PUSH 5
|
||||
JUMP ?CND31
|
||||
?CCL33: PUSH 4
|
||||
?CND31: CALL FIND-DESCENDANTS,FOBJ,STACK
|
||||
ZERO? STACK /FALSE
|
||||
?CND8: NEXT? FOBJ >FOBJ /?PRG6
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT EXCLUDED?:ANY:2:2,FOBJ,F,EXC,PHRASE,CT,VEC,VV
|
||||
GET F,8 >EXC
|
||||
ZERO? EXC /FALSE
|
||||
GET EXC,3 >PHRASE
|
||||
GET PHRASE,1 >CT
|
||||
ADD PHRASE,6 >VEC
|
||||
?PRG6: DLESS? 'CT,0 \?CND8
|
||||
SET 'VV,FALSE-VALUE
|
||||
JUMP ?REP7
|
||||
?CND8: GET VEC,0
|
||||
EQUAL? FOBJ,STACK \?CND10
|
||||
SET 'VV,TRUE-VALUE
|
||||
?REP7: ZERO? VV \TRUE
|
||||
GET EXC,1 >EXC
|
||||
ZERO? EXC /FALSE
|
||||
GET EXC,3 >PHRASE
|
||||
GET PHRASE,1 >CT
|
||||
ADD PHRASE,6 >VEC
|
||||
JUMP ?PRG6
|
||||
?CND10: ADD VEC,4 >VEC
|
||||
JUMP ?PRG6
|
||||
|
||||
|
||||
.FUNCT INVALID-OBJECT?:ANY:1:1,OBJ
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT MATCH-OBJECT:ANY:3:3,FOBJ,F,INCLUDE?,NOUN,ADJS,APP,TB,RES,?TMP1
|
||||
GET F,9 >RES
|
||||
FSET? FOBJ,INVISIBLE /TRUE
|
||||
GET F,6 >NOUN
|
||||
EQUAL? NOUN,FALSE-VALUE,W?ONE /?PRD6
|
||||
GETPT FOBJ,P?SYNONYM >TB
|
||||
ZERO? TB /TRUE
|
||||
PTSIZE TB
|
||||
DIV STACK,2
|
||||
INTBL? NOUN,TB,STACK \TRUE
|
||||
?PRD6: GET F,7 >ADJS
|
||||
ZERO? ADJS /?PRD11
|
||||
CALL CHECK-ADJS,FOBJ,F,ADJS
|
||||
ZERO? STACK /TRUE
|
||||
?PRD11: GET F,5 >ADJS
|
||||
ZERO? ADJS /?PRD14
|
||||
CALL CHECK-ADJS,FOBJ,F,ADJS
|
||||
ZERO? STACK /TRUE
|
||||
?PRD14: CALL EXCLUDED?,FOBJ,F
|
||||
ZERO? STACK \TRUE
|
||||
GET F,1
|
||||
BTST STACK,1 /?CTR2
|
||||
CALL2 INVALID-OBJECT?,FOBJ
|
||||
ZERO? STACK \TRUE
|
||||
?CTR2: ZERO? INCLUDE? /TRUE
|
||||
GET F,5 >ADJS
|
||||
ZERO? ADJS /?CCL24
|
||||
GET ADJS,4 >?TMP1
|
||||
GETPT FOBJ,P?ADJECTIVE
|
||||
PTSIZE STACK
|
||||
DIV STACK,2
|
||||
EQUAL? ?TMP1,STACK \?CCL24
|
||||
PUT RES,1,1
|
||||
PUT RES,2,FALSE-VALUE
|
||||
PUT RES,4,FOBJ
|
||||
EQUAL? FOBJ,HERE \FALSE
|
||||
PUT RES,4,GLOBAL-HERE
|
||||
RFALSE
|
||||
?CCL24: GET F,0 >APP
|
||||
ZERO? APP /?CCL31
|
||||
GET F,1
|
||||
BTST STACK,1 /?CCL31
|
||||
GET RES,1
|
||||
ZERO? STACK /?CTR35
|
||||
GET F,2
|
||||
ZERO? STACK /?CCL36
|
||||
?CTR35: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL36: CALL TEST-OBJECT,FOBJ,APP,F
|
||||
ZERO? STACK /FALSE
|
||||
GET RES,1
|
||||
EQUAL? STACK,1 \?CCL43
|
||||
GET RES,4
|
||||
CALL TEST-OBJECT,STACK,APP,F
|
||||
ZERO? STACK \?CCL46
|
||||
PUT RES,4,FOBJ
|
||||
EQUAL? FOBJ,HERE \TRUE
|
||||
PUT RES,4,GLOBAL-HERE
|
||||
RTRUE
|
||||
?CCL46: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL43: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL31: ZERO? APP \?CCL50
|
||||
GET F,1
|
||||
BTST STACK,1 \?CTR52
|
||||
GET F,2
|
||||
ZERO? STACK /TRUE
|
||||
?CTR52: CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
?CCL50: CALL TEST-OBJECT,FOBJ,APP,F
|
||||
ZERO? STACK /TRUE
|
||||
CALL ADD-OBJECT,FOBJ,F
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT TEST-OBJECT:ANY:3:3,FOBJ,APP,F,N,NN,?TMP1
|
||||
BAND APP,65280
|
||||
ZERO? STACK \?CCL3
|
||||
BTST APP,128 \?CCL6
|
||||
BAND APP,63
|
||||
FSET? FOBJ,STACK /FALSE
|
||||
RTRUE
|
||||
?CCL6: FSET? FOBJ,APP /TRUE
|
||||
RFALSE
|
||||
?CCL3: GET APP,1
|
||||
BTST STACK,256 \?CND12
|
||||
GET APP,1
|
||||
BAND STACK,63
|
||||
GETP FOBJ,STACK >?TMP1
|
||||
GET APP,2
|
||||
EQUAL? ?TMP1,STACK /TRUE
|
||||
RFALSE
|
||||
?CND12: GET APP,0 >N
|
||||
?PRG17: GET APP,N >NN
|
||||
BTST NN,128 \?CCL21
|
||||
BAND NN,63
|
||||
FSET? FOBJ,STACK /?CND19
|
||||
RTRUE
|
||||
?CCL21: FSET? FOBJ,NN /TRUE
|
||||
?CND19: DLESS? 'N,1 \?PRG17
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT ADD-OBJECT:ANY:2:2,OBJ,F,VEC,NC,DOIT?,SYN,WHICH,?TMP1
|
||||
GET F,9 >VEC
|
||||
SET 'DOIT?,TRUE-VALUE
|
||||
GET F,3 >SYN
|
||||
GET F,4 >WHICH
|
||||
EQUAL? OBJ,HERE \?CND1
|
||||
SET 'OBJ,GLOBAL-HERE
|
||||
?CND1: GET F,2
|
||||
ZERO? STACK \?CND3
|
||||
ZERO? SYN /?CND3
|
||||
GET VEC,1
|
||||
EQUAL? 1,STACK \?CND3
|
||||
CALL MULTIPLE-EXCEPTION?,OBJ,SYN,WHICH,F
|
||||
ZERO? STACK /?CCL10
|
||||
SET 'DOIT?,FALSE-VALUE
|
||||
JUMP ?CND3
|
||||
?CCL10: GET VEC,4
|
||||
CALL MULTIPLE-EXCEPTION?,STACK,SYN,WHICH,F
|
||||
ZERO? STACK /?CND3
|
||||
PUT VEC,4,OBJ
|
||||
SET 'DOIT?,FALSE-VALUE
|
||||
?CND3: ZERO? DOIT? /TRUE
|
||||
GET F,2
|
||||
ZERO? STACK /?PRD17
|
||||
GET F,3
|
||||
ZERO? STACK /?PRD17
|
||||
GET F,3 >?TMP1
|
||||
GET F,4
|
||||
CALL MULTIPLE-EXCEPTION?,OBJ,?TMP1,STACK,F
|
||||
ZERO? STACK \TRUE
|
||||
?PRD17: CALL NOT-IN-FIND-RES?,OBJ,VEC >WHICH
|
||||
ZERO? WHICH /TRUE
|
||||
GET VEC,1
|
||||
ADD 1,STACK
|
||||
PUT VEC,1,STACK
|
||||
PUT WHICH,0,OBJ
|
||||
GET F,2
|
||||
EQUAL? STACK,NP-QUANT-A /FALSE
|
||||
RTRUE
|
||||
|
||||
|
||||
.FUNCT NOT-IN-FIND-RES?:ANY:2:3,OBJ,VEC,NO-CHANGE?,CT,SZ,ANS,NVEC,NEW-OBJECT
|
||||
GET VEC,1 >CT
|
||||
GET VEC,0 >SZ
|
||||
?PRG1: ADD VEC,8 >ANS
|
||||
LESS? CT,1 \?CCL5
|
||||
RETURN ANS
|
||||
?CCL5: GRTR? CT,SZ \?CCL7
|
||||
SUB CT,SZ >CT
|
||||
JUMP ?CND3
|
||||
?CCL7: SET 'SZ,CT
|
||||
?CND3: INTBL? OBJ,ANS,SZ /FALSE
|
||||
GET VEC,2 >NVEC
|
||||
ZERO? NVEC /?CCL12
|
||||
SET 'VEC,NVEC
|
||||
SET 'SZ,FIND-RES-MAXOBJ
|
||||
JUMP ?PRG1
|
||||
?CCL12: LESS? SZ,FIND-RES-MAXOBJ \?CCL14
|
||||
MUL 2,SZ
|
||||
ADD ANS,STACK
|
||||
RSTACK
|
||||
?CCL14: ZERO? NO-CHANGE? \TRUE
|
||||
SET 'SZ,FIND-RES-MAXOBJ
|
||||
CALL DO-PMEM-ALLOC,7,9 >NEW-OBJECT
|
||||
SET 'NVEC,NEW-OBJECT
|
||||
PUT VEC,2,NVEC
|
||||
ADD NVEC,8
|
||||
RSTACK
|
||||
|
||||
|
||||
.FUNCT EVERYWHERE-VERB?:ANY:0:2,WHICH,SYNTAX,SYN
|
||||
ASSIGNED? 'WHICH /?CND1
|
||||
GET FINDER,4 >WHICH
|
||||
?CND1: ASSIGNED? 'SYNTAX /?CND3
|
||||
GET PARSE-RESULT,3 >SYNTAX
|
||||
?CND3: EQUAL? WHICH,1 \?CCL7
|
||||
GETB SYNTAX,5 >SYN
|
||||
JUMP ?CND5
|
||||
?CCL7: GETB SYNTAX,9 >SYN
|
||||
?CND5: BTST SYN,128 \FALSE
|
||||
BTST SYN,64 \TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT MULTIPLE-EXCEPTION?:ANY:4:4,OBJ,SYNTAX,WHICH,F,L,VB
|
||||
LOC OBJ >L
|
||||
GET SYNTAX,0 >VB
|
||||
EQUAL? OBJ,FALSE-VALUE,ROOMS \?CCL3
|
||||
INC 'P-NOT-HERE
|
||||
RTRUE
|
||||
?CCL3: CALL EVERYWHERE-VERB?,WHICH,SYNTAX
|
||||
ZERO? STACK \?CCL5
|
||||
CALL2 ACCESSIBLE?,OBJ
|
||||
ZERO? STACK /TRUE
|
||||
?CCL5: EQUAL? VB,V?TAKE \?CCL9
|
||||
GET F,6
|
||||
ZERO? STACK \?CCL9
|
||||
EQUAL? WHICH,1 \?CCL9
|
||||
FSET? OBJ,TAKEBIT /?CCL15
|
||||
FSET? OBJ,TRYTAKEBIT \TRUE
|
||||
?CCL15: EQUAL? L,WINNER /TRUE
|
||||
RFALSE
|
||||
?CCL9: EQUAL? VB,V?DROP \FALSE
|
||||
IN? OBJ,WINNER \TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT CHECK-ADJS-THERE?:ANY:1:1,OWNER,TMP
|
||||
GET OWNER-SR-THERE,1 >TMP
|
||||
ZERO? TMP /FALSE
|
||||
INTBL? OWNER,OWNER-SR-THERE+8,TMP /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT CHECK-ADJS:ANY:3:3,OBJ,F,ADJS,CNT,TMP,OWNER,ID,VEC,CT,ADJ,FL,OADJS,NUM,?TMP1
|
||||
GETP OBJ,P?OWNER >OWNER
|
||||
GETB ADJS,1
|
||||
EQUAL? STACK,2 /?CCL2
|
||||
GET ADJS,2 >TMP
|
||||
ZERO? TMP /?CND1
|
||||
?CCL2: SET 'ID,OWNER
|
||||
LESS? 0,ID \?CCL7
|
||||
SET 'ID,OWNER
|
||||
GRTR? ID,LAST-OBJECT /?CCL7
|
||||
EQUAL? OWNER,TMP /?CND1
|
||||
EQUAL? OWNER,ROOMS \?CCL14
|
||||
GET OWNER-SR-HERE,1
|
||||
ZERO? STACK /?CCL17
|
||||
GET OWNER-SR-HERE,4 >ID
|
||||
JUMP ?CND1
|
||||
?CCL17: GET OWNER-SR-THERE,1
|
||||
ZERO? STACK /FALSE
|
||||
GET OWNER-SR-THERE,4 >ID
|
||||
JUMP ?CND1
|
||||
?CCL14: GET OWNER-SR-HERE,1 >TMP
|
||||
ZERO? TMP \?CCL21
|
||||
CALL2 CHECK-ADJS-THERE?,OWNER
|
||||
ZERO? STACK \?CND1
|
||||
RFALSE
|
||||
?CCL21: INTBL? OWNER,OWNER-SR-HERE+8,TMP /?CND1
|
||||
CALL2 CHECK-ADJS-THERE?,OWNER
|
||||
ZERO? STACK \?CND1
|
||||
RFALSE
|
||||
?CCL7: ZERO? OWNER /?CCL28
|
||||
GET OWNER-SR-HERE,1 >CNT
|
||||
ZERO? CNT \?CCL31
|
||||
SET 'ID,PLAYER
|
||||
JUMP ?CND1
|
||||
?CCL31: ADD OWNER,2 >TMP
|
||||
SET 'VEC,OWNER-SR-HERE+8
|
||||
?PRG33: DLESS? 'CNT,0 /FALSE
|
||||
GET VEC,0 >?TMP1
|
||||
GET OWNER,0
|
||||
INTBL? ?TMP1,TMP,STACK >ID \?CCL39
|
||||
GET ID,0 >ID
|
||||
JUMP ?CND1
|
||||
?CCL39: ADD VEC,2 >VEC
|
||||
JUMP ?PRG33
|
||||
?CCL28: LESS? 0,TMP \?CCL41
|
||||
GRTR? TMP,LAST-OBJECT /?CCL41
|
||||
CALL HELD?,OBJ,TMP
|
||||
ZERO? STACK \?CND1
|
||||
RFALSE
|
||||
?CCL41: GET OWNER-SR-HERE,1 >TMP
|
||||
ZERO? TMP /FALSE
|
||||
LOC OBJ
|
||||
INTBL? STACK,OWNER-SR-HERE+8,TMP >ID \FALSE
|
||||
?CND1: EQUAL? ID,0,OBJ /?CND50
|
||||
GET F,9
|
||||
PUT STACK,3,ID
|
||||
?CND50: GETB ADJS,1
|
||||
EQUAL? STACK,2 /TRUE
|
||||
ADD ADJS,10 >VEC
|
||||
GET ADJS,4 >CT
|
||||
GETPT OBJ,P?ADJECTIVE >OADJS
|
||||
PTSIZE OADJS
|
||||
DIV STACK,2 >NUM
|
||||
?PRG54: DLESS? 'CT,0 /TRUE
|
||||
GET VEC,CT >ADJ
|
||||
SET 'ID,ADJ
|
||||
EQUAL? ADJ,W?NO.WORD /?PRG54
|
||||
INTBL? ID,OADJS,NUM /?PRG54
|
||||
EQUAL? ID,W?CLOSED,W?SHUT \?CCL63
|
||||
FSET? OBJ,OPENBIT \?PRG54
|
||||
?CCL63: EQUAL? ID,W?OPEN \FALSE
|
||||
FSET? OBJ,OPENBIT /?PRG54
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT SEARCH-IN-LG?:ANY:1:1,OBJ
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT EXCLUDE-HERE-OBJECT?:ANY:0:0
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT FIND-OBJECTS:ANY:0:3,SEARCH,PARENT,NO-ADJACENT,GLBS,CONT?,N,RES,NEW-OBJECT,LOSING?,FLAG,?PR-FLAG,O,OBJ,?TMP1,?TMP2
|
||||
ASSIGNED? 'SEARCH /?CND1
|
||||
GET FINDER,4
|
||||
EQUAL? 1,STACK \?CCL5
|
||||
GET PARSE-RESULT,3
|
||||
GETB STACK,5 >SEARCH
|
||||
JUMP ?CND1
|
||||
?CCL5: GET PARSE-RESULT,3
|
||||
GETB STACK,9 >SEARCH
|
||||
?CND1: SET 'CONT?,TRUE-VALUE
|
||||
GET FINDER,9 >RES
|
||||
PUT RES,1,0
|
||||
PUT RES,2,FALSE-VALUE
|
||||
ZERO? PARENT /?CCL8
|
||||
CALL FIND-DESCENDANTS,PARENT,7
|
||||
ZERO? STACK /?CND6
|
||||
GET RES,1
|
||||
ZERO? STACK \?CND6
|
||||
?CCL8: ZERO? PARENT /?CND13
|
||||
ZERO? NO-ADJACENT \?CND13
|
||||
GET FINDER,5 >GLBS
|
||||
ZERO? GLBS \?CND13
|
||||
CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT
|
||||
PUT NEW-OBJECT,2,PARENT
|
||||
SET 'GLBS,NEW-OBJECT
|
||||
PUT FINDER,5,GLBS
|
||||
?CND13: BTST SEARCH,128 \?CND19
|
||||
BTST SEARCH,64 /?CND19
|
||||
FIRST? GENERIC-OBJECTS \?CND19
|
||||
FIRST? GENERIC-OBJECTS >NEW-OBJECT /?PRG25
|
||||
?PRG25: CALL MATCH-OBJECT,NEW-OBJECT,FINDER,TRUE-VALUE
|
||||
ZERO? STACK /?REP26
|
||||
NEXT? NEW-OBJECT >NEW-OBJECT /?PRG25
|
||||
?REP26: GET RES,1 >CONT?
|
||||
ZERO? CONT? /?CND19
|
||||
EQUAL? CONT?,1 /TRUE
|
||||
RFALSE
|
||||
?CND19: SET 'LOSING?,FALSE-VALUE
|
||||
?PRG35: ZERO? LOSING? \?PRD40
|
||||
BAND SEARCH,12
|
||||
ZERO? STACK \?CCL38
|
||||
?PRD40: ZERO? LOSING? /?CND37
|
||||
?CCL38: ZERO? LOSING? \?CTR44
|
||||
BTST SEARCH,8 \?CCL45
|
||||
?CTR44: SET '?PR-FLAG,6
|
||||
JUMP ?CND43
|
||||
?CCL45: SET '?PR-FLAG,2
|
||||
?CND43: ZERO? LOSING? \?CTR49
|
||||
BAND SEARCH,12
|
||||
ZERO? STACK /?CCL50
|
||||
?CTR49: BOR 1,?PR-FLAG >FLAG
|
||||
JUMP ?CND48
|
||||
?CCL50: BAND ?PR-FLAG,-2 >FLAG
|
||||
?CND48: ZERO? LOSING? \?CCL55
|
||||
BTST SEARCH,4 /?CCL55
|
||||
BOR 8,FLAG
|
||||
JUMP ?CND53
|
||||
?CCL55: BAND FLAG,-9
|
||||
?CND53: CALL FIND-DESCENDANTS,WINNER,STACK >CONT?
|
||||
?CND37: ZERO? LOSING? \?CCL59
|
||||
BAND SEARCH,3
|
||||
ZERO? STACK /?CND58
|
||||
?CCL59: ZERO? LOSING? \?CTR63
|
||||
BAND SEARCH,3
|
||||
ZERO? STACK /?CCL64
|
||||
?CTR63: SET '?PR-FLAG,3
|
||||
JUMP ?CND62
|
||||
?CCL64: SET '?PR-FLAG,2
|
||||
?CND62: ZERO? LOSING? \?CTR69
|
||||
BTST SEARCH,2 \?CCL70
|
||||
?CTR69: BOR 4,?PR-FLAG >FLAG
|
||||
JUMP ?CND68
|
||||
?CCL70: BAND ?PR-FLAG,-5 >FLAG
|
||||
?CND68: ZERO? LOSING? \?CCL75
|
||||
BTST SEARCH,1 /?CCL75
|
||||
BOR 8,FLAG
|
||||
JUMP ?CND73
|
||||
?CCL75: BAND FLAG,-9
|
||||
?CND73: CALL FIND-DESCENDANTS,HERE,STACK >CONT?
|
||||
?CND58: GET RES,1
|
||||
ZERO? STACK \?CND6
|
||||
BTST SEARCH,15 /?CND78
|
||||
ZERO? LOSING? \?CND78
|
||||
GET TLEXV,0 >GLBS
|
||||
ZERO? GLBS /?CCL86
|
||||
GET GLBS,4
|
||||
ZERO? STACK \?CTR85
|
||||
GET GLBS,3
|
||||
ZERO? STACK /?CCL86
|
||||
?CTR85: SET 'LOSING?,TRUE-VALUE
|
||||
JUMP ?PRG35
|
||||
?CCL86: BTST SEARCH,64 \?CND78
|
||||
BTST SEARCH,128 \FALSE
|
||||
?CND78: GETPT HERE,P?GLOBAL >GLBS
|
||||
ZERO? GLBS /?CND94
|
||||
PTSIZE GLBS
|
||||
DIV STACK,2 >N
|
||||
?PRG97: DLESS? 'N,0 /?CND94
|
||||
GET GLBS,N >O
|
||||
CALL MATCH-OBJECT,O,FINDER,TRUE-VALUE >CONT?
|
||||
ZERO? CONT? /?CND94
|
||||
FIRST? O \?PRG97
|
||||
BTST SEARCH,2 \?PRG97
|
||||
CALL2 SEARCH-IN-LG?,O
|
||||
ZERO? STACK /?PRG97
|
||||
CALL FIND-DESCENDANTS,O,FD-INCLUDE? >CONT?
|
||||
ZERO? CONT? \?PRG97
|
||||
?CND94: ZERO? CONT? /?CND111
|
||||
CALL1 EXCLUDE-HERE-OBJECT?
|
||||
ZERO? STACK \?CND111
|
||||
CALL MATCH-OBJECT,HERE,FINDER,TRUE-VALUE >CONT?
|
||||
?CND111: ZERO? CONT? /?CND115
|
||||
LOC PLAYER
|
||||
EQUAL? HERE,STACK /?CND115
|
||||
LOC PLAYER
|
||||
GETP STACK,P?THINGS
|
||||
ZERO? STACK /?CND115
|
||||
LOC PLAYER
|
||||
CALL TEST-THINGS,STACK,FINDER >CONT?
|
||||
?CND115: ZERO? CONT? /?CND120
|
||||
GETP HERE,P?THINGS
|
||||
ZERO? STACK /?CND120
|
||||
CALL TEST-THINGS,HERE,FINDER >CONT?
|
||||
?CND120: GET RES,1
|
||||
ZERO? STACK /?CND124
|
||||
SET 'CONT?,FALSE-VALUE
|
||||
?CND124: ZERO? CONT? /?CND126
|
||||
BTST SEARCH,2 \?CCL130
|
||||
PUSH 5
|
||||
JUMP ?CND128
|
||||
?CCL130: PUSH 1
|
||||
?CND128: CALL FIND-DESCENDANTS,GLOBAL-OBJECTS,STACK >CONT?
|
||||
?CND126: ZERO? CONT? /?CND131
|
||||
GET RES,1
|
||||
ZERO? STACK \?CND131
|
||||
ZERO? NO-ADJACENT \?CND131
|
||||
GETP HERE,P?ADJACENT >GLBS
|
||||
ZERO? GLBS /?CND131
|
||||
GETB GLBS,0 >N
|
||||
?PRG137: GETB GLBS,N
|
||||
ZERO? STACK /?CCL141
|
||||
DEC 'N
|
||||
GETB GLBS,N
|
||||
ICALL FIND-OBJECTS,1,STACK,TRUE-VALUE
|
||||
JUMP ?CND139
|
||||
?CCL141: DEC 'N
|
||||
?CND139: DLESS? 'N,1 \?PRG137
|
||||
GET RES,1
|
||||
ZERO? STACK /?CND131
|
||||
SET 'CONT?,FALSE-VALUE
|
||||
?CND131: ZERO? CONT? /?CND6
|
||||
GET RES,1
|
||||
ZERO? STACK \?CND6
|
||||
BTST SEARCH,128 \?PRD152
|
||||
BTST SEARCH,64 \?CCL147
|
||||
?PRD152: GET PARSE-RESULT,1 >?TMP2
|
||||
ADD WORD-FLAG-TABLE,2 >?TMP1
|
||||
GET WORD-FLAG-TABLE,0
|
||||
INTBL? ?TMP2,?TMP1,STACK,132 >O \?CCL157
|
||||
GET O,1
|
||||
JUMP ?CND155
|
||||
?CCL157: PUSH FALSE-VALUE
|
||||
?CND155: BTST STACK,512 \?CND6
|
||||
?CCL147: SET 'OBJ,1
|
||||
?PRG158: CALL MATCH-OBJECT,OBJ,FINDER,TRUE-VALUE
|
||||
ZERO? STACK /?CND6
|
||||
IGRTR? 'OBJ,LAST-OBJECT \?PRG158
|
||||
?CND6: GET RES,1
|
||||
EQUAL? STACK,1 /TRUE
|
||||
RFALSE
|
||||
|
||||
|
||||
.FUNCT TEST-THINGS:ANY:2:2,RM,F,CT,GLBS,N,NOUN,V,TTBL,MATCH,I,?TMP2,?TMP1
|
||||
GETP RM,P?THINGS >GLBS
|
||||
GETB GLBS,0 >N
|
||||
INC 'GLBS
|
||||
GET F,5 >CT
|
||||
ZERO? CT /?CND1
|
||||
GET CT,4 >CT
|
||||
?CND1: GET F,6 >NOUN
|
||||
GET F,5
|
||||
ADD STACK,10 >V
|
||||
SET 'MATCH,FALSE-VALUE
|
||||
?PRG3: GET GLBS,1 >TTBL
|
||||
ZERO? TTBL /?CND5
|
||||
ADD TTBL,1 >?TMP1
|
||||
GETB TTBL,0
|
||||
INTBL? NOUN,?TMP1,STACK \?CND5
|
||||
ZERO? CT \?CCL11
|
||||
SET 'MATCH,TRUE-VALUE
|
||||
JUMP ?CND9
|
||||
?CCL11: GET GLBS,0 >TTBL
|
||||
ZERO? TTBL /?CND9
|
||||
SET 'I,0
|
||||
?PRG13: GET V,I >?TMP2
|
||||
ADD TTBL,1 >?TMP1
|
||||
GETB TTBL,0
|
||||
INTBL? ?TMP2,?TMP1,STACK \?CCL17
|
||||
SET 'MATCH,TRUE-VALUE
|
||||
JUMP ?CND9
|
||||
?CCL17: SUB CT,1
|
||||
IGRTR? 'I,STACK \?PRG13
|
||||
?CND9: ZERO? MATCH /?CND5
|
||||
SET 'LAST-PSEUDO-LOC,RM
|
||||
GET GLBS,2
|
||||
PUTP PSEUDO-OBJECT,P?ACTION,STACK
|
||||
ICALL ADD-OBJECT,PSEUDO-OBJECT,F
|
||||
RFALSE
|
||||
?CND5: ADD GLBS,6 >GLBS
|
||||
DLESS? 'N,1 \?PRG3
|
||||
RFALSE
|
||||
|
||||
.ENDSEG
|
||||
|
||||
.ENDI
|
||||
Reference in New Issue
Block a user