317 lines
6.4 KiB
Plaintext
317 lines
6.4 KiB
Plaintext
|
|
|||
|
.SEGMENT "0"
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBE-ROOM:ANY:0:1,LOOK?,V?,STR,AV
|
|||
|
ZERO? LIT \?CND1
|
|||
|
PRINTI "It is pitch black."
|
|||
|
CRLF
|
|||
|
RFALSE
|
|||
|
?CND1: IN? HERE,ROOMS \?CND3
|
|||
|
HLIGHT H-BOLD
|
|||
|
PRINTD HERE
|
|||
|
HLIGHT H-NORMAL
|
|||
|
?CND3: LOC WINNER >AV
|
|||
|
FSET? AV,VEHBIT \?CND5
|
|||
|
FSET? AV,SURFACEBIT \?CCL9
|
|||
|
PRINTI ", on "
|
|||
|
JUMP ?CND7
|
|||
|
?CCL9: PRINTI ", in "
|
|||
|
?CND7: ICALL2 THE-PRINT,AV
|
|||
|
?CND5: CRLF
|
|||
|
ZERO? LOOK? /?PRD12
|
|||
|
SET 'V?,LOOK?
|
|||
|
JUMP ?PEN10
|
|||
|
?PRD12: EQUAL? VERBOSITY,2 /?PRD13
|
|||
|
PUSH 0
|
|||
|
JUMP ?PRD14
|
|||
|
?PRD13: PUSH 1
|
|||
|
?PRD14: SET 'V?,STACK
|
|||
|
?PEN10: FSET? HERE,TOUCHBIT /?CND15
|
|||
|
FSET HERE,TOUCHBIT
|
|||
|
ZERO? VERBOSITY /?CND15
|
|||
|
SET 'V?,TRUE-VALUE
|
|||
|
?CND15: SET 'DESCRIBED-ROOM?,V?
|
|||
|
ZERO? V? /TRUE
|
|||
|
EQUAL? HERE,AV /?CCL23
|
|||
|
FSET? AV,VEHBIT \?CCL23
|
|||
|
GETP AV,P?ACTION
|
|||
|
CALL STACK,M-LOOK
|
|||
|
ZERO? STACK \TRUE
|
|||
|
?CCL23: GETP HERE,P?ACTION
|
|||
|
CALL STACK,M-LOOK
|
|||
|
ZERO? STACK \TRUE
|
|||
|
GETP HERE,P?LDESC >STR
|
|||
|
ZERO? STR /TRUE
|
|||
|
PRINT STR
|
|||
|
CRLF
|
|||
|
RTRUE
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBE-OBJECTS:ANY:0:0,O,STR,AV,TMP
|
|||
|
LOC WINNER >AV
|
|||
|
FIRST? HERE >O /?BOGUS1
|
|||
|
?BOGUS1: ZERO? O /FALSE
|
|||
|
?PRG4: ZERO? O /?REP5
|
|||
|
CALL2 DESCRIBABLE?,O
|
|||
|
ZERO? STACK /?CND6
|
|||
|
FSET? O,TOUCHBIT /?CND6
|
|||
|
GETP O,P?FDESC >STR
|
|||
|
ZERO? STR /?CND6
|
|||
|
ICALL2 THIS-IS-IT,O
|
|||
|
CRLF
|
|||
|
PRINT STR
|
|||
|
FSET? O,CONTBIT \?CND13
|
|||
|
ADD D-ALL?,D-PARA?
|
|||
|
ICALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
|
|||
|
?CND13: CRLF
|
|||
|
?CND6: NEXT? O >O /?PRG4
|
|||
|
JUMP ?PRG4
|
|||
|
?REP5: FIRST? HERE >O /?PRG17
|
|||
|
?PRG17: ZERO? O /?REP18
|
|||
|
CALL2 DESCRIBABLE?,O
|
|||
|
ZERO? STACK /?CND19
|
|||
|
GETP O,P?FDESC
|
|||
|
ZERO? STACK /?CCL23
|
|||
|
FSET? O,TOUCHBIT \?CND19
|
|||
|
?CCL23: GETP O,P?DESCFCN >STR
|
|||
|
ZERO? STR /?CCL29
|
|||
|
CALL STR,M-OBJDESC?,O >TMP
|
|||
|
ZERO? TMP /?CCL29
|
|||
|
EQUAL? TMP,M-FATAL /?CND19
|
|||
|
ICALL2 THIS-IS-IT,O
|
|||
|
CRLF
|
|||
|
CALL STR,M-OBJDESC,O >STR
|
|||
|
ZERO? STR /?CND34
|
|||
|
FSET? O,CONTBIT \?CND34
|
|||
|
EQUAL? STR,M-FATAL /?CND34
|
|||
|
ADD D-ALL?,D-PARA?
|
|||
|
ICALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
|
|||
|
?CND34: CRLF
|
|||
|
JUMP ?CND19
|
|||
|
?CCL29: GETP O,P?LDESC >STR
|
|||
|
ZERO? STR /?CND19
|
|||
|
ICALL2 THIS-IS-IT,O
|
|||
|
CRLF
|
|||
|
PRINT STR
|
|||
|
FSET? O,CONTBIT \?CND41
|
|||
|
ADD D-ALL?,D-PARA?
|
|||
|
ICALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
|
|||
|
?CND41: CRLF
|
|||
|
?CND19: NEXT? O >O /?PRG17
|
|||
|
JUMP ?PRG17
|
|||
|
?REP18: SUB 0,PERSON >D-BIT
|
|||
|
ICALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,FALSE-VALUE
|
|||
|
SET 'D-BIT,PERSON
|
|||
|
ICALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,FALSE-VALUE
|
|||
|
SET 'D-BIT,FALSE-VALUE
|
|||
|
ZERO? AV /FALSE
|
|||
|
EQUAL? HERE,AV /FALSE
|
|||
|
CALL DESCRIBE-CONTENTS,AV,FALSE-VALUE,FALSE-VALUE
|
|||
|
RSTACK
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBE-CONTENTS:ANY:1:3,OBJ,LEVEL,ALL?,F,N,1ST?,IT?,TWO?,START?,PARA?,DB
|
|||
|
ASSIGNED? 'LEVEL /?CND1
|
|||
|
SET 'LEVEL,-1
|
|||
|
?CND1: ASSIGNED? 'ALL? /?CND3
|
|||
|
SET 'ALL?,D-ALL?
|
|||
|
?CND3: SET '1ST?,TRUE-VALUE
|
|||
|
EQUAL? LEVEL,2 \?CCL7
|
|||
|
SET 'LEVEL,TRUE-VALUE
|
|||
|
SET 'PARA?,TRUE-VALUE
|
|||
|
SET 'START?,TRUE-VALUE
|
|||
|
JUMP ?CND5
|
|||
|
?CCL7: BTST ALL?,D-PARA? \?CND5
|
|||
|
SET 'PARA?,TRUE-VALUE
|
|||
|
?CND5: FIRST? OBJ >N /?BOGUS9
|
|||
|
?BOGUS9: ZERO? START? \?PRG25
|
|||
|
IN? OBJ,ROOMS /?PRG25
|
|||
|
FSET? OBJ,PERSON /?PRG25
|
|||
|
ZERO? N /FALSE
|
|||
|
FSET? OBJ,CONTBIT \FALSE
|
|||
|
FSET? OBJ,OPENBIT /?PRD20
|
|||
|
FSET? OBJ,TRANSBIT \FALSE
|
|||
|
?PRD20: EQUAL? LEVEL,-1 /?PRG25
|
|||
|
FSET? OBJ,SEARCHBIT \FALSE
|
|||
|
?PRG25: ZERO? N /?CCL28
|
|||
|
CALL2 DESCRIBABLE?,N
|
|||
|
ZERO? STACK /?CND27
|
|||
|
BTST ALL?,D-ALL? /?CCL28
|
|||
|
CALL2 SIMPLE-DESC?,N
|
|||
|
ZERO? STACK /?CND27
|
|||
|
?CCL28: ZERO? F /?CND35
|
|||
|
ZERO? 1ST? /?CCL39
|
|||
|
SET '1ST?,FALSE-VALUE
|
|||
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CCL42
|
|||
|
ZERO? START? \?CND37
|
|||
|
ZERO? PARA? \?CCL47
|
|||
|
SET 'PARA?,TRUE-VALUE
|
|||
|
CRLF
|
|||
|
JUMP ?CND45
|
|||
|
?CCL47: EQUAL? LEVEL,TRUE-VALUE \?CND45
|
|||
|
PRINTC 11
|
|||
|
?CND45: FSET? F,PLURAL \?CCL51
|
|||
|
PUSH TRUE-VALUE
|
|||
|
JUMP ?CND49
|
|||
|
?CCL51: PUSH N
|
|||
|
?CND49: ICALL DESCRIBE-START,OBJ,STACK
|
|||
|
JUMP ?CND37
|
|||
|
?CCL42: EQUAL? LEVEL,-1 /?CND37
|
|||
|
PRINT LEVEL
|
|||
|
JUMP ?CND37
|
|||
|
?CCL39: ZERO? N /?CCL54
|
|||
|
PRINTI ", "
|
|||
|
JUMP ?CND37
|
|||
|
?CCL54: PRINTI " and "
|
|||
|
?CND37: ICALL2 PRINTA,F
|
|||
|
ICALL2 DESCRIBE-SPECIAL,F
|
|||
|
ZERO? IT? \?CCL57
|
|||
|
ZERO? TWO? \?CCL57
|
|||
|
SET 'IT?,F
|
|||
|
JUMP ?CND35
|
|||
|
?CCL57: SET 'TWO?,TRUE-VALUE
|
|||
|
SET 'IT?,FALSE-VALUE
|
|||
|
?CND35: SET 'F,N
|
|||
|
?CND27: ZERO? N /?CND60
|
|||
|
NEXT? N >N /?CND60
|
|||
|
?CND60: ZERO? F \?PRG25
|
|||
|
ZERO? N \?PRG25
|
|||
|
ZERO? IT? /?CND67
|
|||
|
ZERO? TWO? \?CND67
|
|||
|
ICALL2 THIS-IS-IT,IT?
|
|||
|
?CND67: ZERO? 1ST? /?CCL73
|
|||
|
ZERO? START? /?CCL73
|
|||
|
PRINTI " nothing"
|
|||
|
RFALSE
|
|||
|
?CCL73: ZERO? 1ST? \?REP26
|
|||
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP26
|
|||
|
EQUAL? OBJ,HERE \?CND79
|
|||
|
PRINTI " here"
|
|||
|
?CND79: PRINTC 46
|
|||
|
?REP26: EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND81
|
|||
|
FIRST? OBJ >F /?PRG84
|
|||
|
?PRG84: ZERO? F /?CND81
|
|||
|
FSET? F,CONTBIT /?PRD91
|
|||
|
EQUAL? F,HERE \?CND86
|
|||
|
?PRD91: CALL DESCRIBABLE?,F,TRUE-VALUE
|
|||
|
ZERO? STACK /?CND86
|
|||
|
BTST ALL?,D-ALL? /?CCL89
|
|||
|
CALL2 SIMPLE-DESC?,F
|
|||
|
ZERO? STACK /?CND86
|
|||
|
?CCL89: SET 'DB,D-BIT
|
|||
|
SET 'D-BIT,FALSE-VALUE
|
|||
|
ZERO? PARA? /?CCL101
|
|||
|
PUSH 3
|
|||
|
JUMP ?CND99
|
|||
|
?CCL101: PUSH D-ALL?
|
|||
|
?CND99: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK
|
|||
|
ZERO? STACK /?CND97
|
|||
|
SET '1ST?,FALSE-VALUE
|
|||
|
SET 'PARA?,TRUE-VALUE
|
|||
|
?CND97: SET 'D-BIT,DB
|
|||
|
?CND86: NEXT? F >F /?PRG84
|
|||
|
JUMP ?PRG84
|
|||
|
?CND81: ZERO? 1ST? \?CND103
|
|||
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND103
|
|||
|
LOC WINNER
|
|||
|
EQUAL? OBJ,HERE,STACK \?CND103
|
|||
|
CRLF
|
|||
|
?CND103: ZERO? 1ST? /TRUE
|
|||
|
RFALSE
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBE-START:ANY:2:2,OBJ,N
|
|||
|
EQUAL? OBJ,HERE \?CCL3
|
|||
|
EQUAL? D-BIT,PERSON \?CCL6
|
|||
|
PRINTI "You see "
|
|||
|
RTRUE
|
|||
|
?CCL6: PRINTI "There "
|
|||
|
ZERO? N /?CCL9
|
|||
|
PRINTI "are "
|
|||
|
RTRUE
|
|||
|
?CCL9: PRINTI "is "
|
|||
|
RTRUE
|
|||
|
?CCL3: EQUAL? OBJ,PLAYER \?CCL11
|
|||
|
EQUAL? D-BIT,WEARBIT \?CCL14
|
|||
|
PRINTI "You are wearing "
|
|||
|
RTRUE
|
|||
|
?CCL14: PRINTI "You are carrying "
|
|||
|
RTRUE
|
|||
|
?CCL11: FSET? OBJ,PERSON \?CCL16
|
|||
|
ICALL2 CTHE-PRINT,OBJ
|
|||
|
PRINTI " has "
|
|||
|
RTRUE
|
|||
|
?CCL16: FSET? OBJ,SURFACEBIT \?CCL18
|
|||
|
EQUAL? OBJ,LADDER \?CCL21
|
|||
|
PRINTI "Stand"
|
|||
|
JUMP ?CND19
|
|||
|
?CCL21: PRINTI "Sitt"
|
|||
|
?CND19: PRINTI "ing on "
|
|||
|
ICALL2 THE-PRINT,OBJ
|
|||
|
ZERO? N /?CCL24
|
|||
|
PRINTI " are "
|
|||
|
RTRUE
|
|||
|
?CCL24: PRINTI " is "
|
|||
|
RTRUE
|
|||
|
?CCL18: ICALL2 CTHE-PRINT,OBJ
|
|||
|
PRINTI " contains "
|
|||
|
RTRUE
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBE-SPECIAL:ANY:1:1,OBJ
|
|||
|
FSET? OBJ,ONBIT \FALSE
|
|||
|
PRINTI " (providing light)"
|
|||
|
RTRUE
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBABLE?:ANY:1:2,OBJ,CONT?
|
|||
|
FSET? OBJ,INVISIBLE /FALSE
|
|||
|
EQUAL? OBJ,WINNER /FALSE
|
|||
|
LOC WINNER
|
|||
|
EQUAL? OBJ,STACK \?CCL7
|
|||
|
LOC WINNER
|
|||
|
EQUAL? HERE,STACK \FALSE
|
|||
|
?CCL7: ZERO? CONT? \?CCL11
|
|||
|
FSET? OBJ,NDESCBIT /FALSE
|
|||
|
?CCL11: ZERO? D-BIT /TRUE
|
|||
|
GRTR? D-BIT,0 \?CCL18
|
|||
|
FSET? OBJ,D-BIT /TRUE
|
|||
|
RFALSE
|
|||
|
?CCL18: SUB 0,D-BIT
|
|||
|
FSET? OBJ,STACK /FALSE
|
|||
|
RTRUE
|
|||
|
|
|||
|
|
|||
|
.FUNCT SIMPLE-DESC?:ANY:1:1,OBJ,STR
|
|||
|
GETP OBJ,P?FDESC
|
|||
|
ZERO? STACK /?CCL3
|
|||
|
FSET? OBJ,TOUCHBIT \FALSE
|
|||
|
?CCL3: GETP OBJ,P?DESCFCN >STR
|
|||
|
ZERO? STR /?CCL7
|
|||
|
CALL STR,M-OBJDESC?,OBJ
|
|||
|
ZERO? STACK \FALSE
|
|||
|
?CCL7: GETP OBJ,P?LDESC
|
|||
|
ZERO? STACK /TRUE
|
|||
|
RFALSE
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBE-REST:ANY:1:1,OBJ
|
|||
|
CALL2 DESCRIBE-CONTENTS,OBJ
|
|||
|
ZERO? STACK \TRUE
|
|||
|
PRINTI "nothing"
|
|||
|
RTRUE
|
|||
|
|
|||
|
|
|||
|
.FUNCT DESCRIBE-SENT:ANY:1:1,OBJ
|
|||
|
CALL DESCRIBE-CONTENTS,OBJ,FALSE-VALUE,3
|
|||
|
ZERO? STACK \TRUE
|
|||
|
PRINTI "The "
|
|||
|
ICALL2 DPRINT,OBJ
|
|||
|
PRINTI " is empty."
|
|||
|
RTRUE
|
|||
|
|
|||
|
.ENDSEG
|
|||
|
|
|||
|
.ENDI
|