sherlock/generic.zap
historicalsource d327e7626d Release Version
2019-04-16 09:16:28 -04:00

302 lines
5.6 KiB
Plaintext

.FUNCT RT-GN-PAPER,TBL,LEN,PTR,OBJ,PAPER,CONT,C-PAPER,HELD,H-PAPER,GND,G-PAPER
ZERO? LEN \?CND1
GET TBL,0 >LEN
?CND1: ADD TBL,2 >PTR
INTBL? GL-P-IT-OBJECT,PTR,LEN \?PRG6
PRINTC 91
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
PRINTC 93
CRLF
RETURN GL-P-IT-OBJECT
?PRG6: MUL LEN,2
ADD TBL,STACK
GRTR? PTR,STACK /?REP7
GET PTR,0 >OBJ
LOC OBJ
FSET? STACK,FL-SURFACE /?REP7
LOC OBJ
EQUAL? STACK,CH-PLAYER \?CCL15
ZERO? HELD \?CCL18
SET 'HELD,TRUE-VALUE
SET 'H-PAPER,OBJ
JUMP ?CND11
?CCL18: SET 'H-PAPER,FALSE-VALUE
JUMP ?CND11
?CCL15: LOC OBJ
EQUAL? STACK,GL-PLACE-CUR \?CCL20
ZERO? GND \?CCL23
SET 'GND,TRUE-VALUE
SET 'G-PAPER,OBJ
JUMP ?CND11
?CCL23: SET 'G-PAPER,FALSE-VALUE
JUMP ?CND11
?CCL20: ZERO? CONT \?CCL25
LOC OBJ
FSET? STACK,FL-CONTAINER \?CCL25
LOC OBJ >CONT
SET 'C-PAPER,OBJ
JUMP ?CND11
?CCL25: LOC OBJ
FSET? STACK,FL-CONTAINER \?CND11
ZERO? CONT /?CND11
LOC OBJ
EQUAL? STACK,CONT /?CND11
SET 'C-PAPER,FALSE-VALUE
?CND11: ADD PTR,2 >PTR
JUMP ?PRG6
?REP7: ZERO? OBJ /?CCL34
LOC OBJ
FSET? STACK,FL-SURFACE \?CCL34
SET 'PAPER,OBJ
JUMP ?CND32
?CCL34: ZERO? H-PAPER /?CCL38
SET 'PAPER,H-PAPER
JUMP ?CND32
?CCL38: ZERO? G-PAPER /?CCL40
SET 'PAPER,G-PAPER
JUMP ?CND32
?CCL40: ZERO? C-PAPER /FALSE
SET 'PAPER,C-PAPER
?CND32: PRINTC 91
ICALL2 RT-CTHEO-PRINT,PAPER
PRINTC 93
CRLF
CRLF
RETURN PAPER
.FUNCT RT-GN-GEM,TBL,LEN,PTR,OBJ,GEM,CONT,C-GEM,HELD,H-GEM,GND,G-GEM
ZERO? LEN \?CND1
GET TBL,0 >LEN
?CND1: ADD TBL,2 >PTR
INTBL? GL-P-IT-OBJECT,PTR,LEN \?CCL5
PRINTC 91
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
PRINTC 93
CRLF
CRLF
RETURN GL-P-IT-OBJECT
?CCL5: EQUAL? GL-PLACE-CUR,RM-CLOCK-TOWER \?PRG10
IN? TH-SAPPHIRE,TH-CLAPPER \?PRG10
RETURN TH-SAPPHIRE
?PRG10: MUL LEN,2
ADD TBL,STACK
GRTR? PTR,STACK /?REP11
GET PTR,0 >OBJ
LOC OBJ
EQUAL? STACK,CH-PLAYER \?CCL17
ZERO? HELD \?CCL20
SET 'HELD,TRUE-VALUE
SET 'H-GEM,OBJ
JUMP ?CND15
?CCL20: SET 'H-GEM,FALSE-VALUE
JUMP ?CND15
?CCL17: LOC OBJ
EQUAL? STACK,GL-PLACE-CUR \?CCL22
ZERO? GND \?CCL25
SET 'GND,TRUE-VALUE
SET 'G-GEM,OBJ
JUMP ?CND15
?CCL25: SET 'G-GEM,FALSE-VALUE
JUMP ?CND15
?CCL22: LOC OBJ
ZERO? STACK /?CCL27
ZERO? CONT \?CCL27
LOC OBJ
FSET? STACK,FL-CONTAINER \?CCL27
LOC OBJ >CONT
SET 'C-GEM,OBJ
JUMP ?CND15
?CCL27: LOC OBJ
ZERO? STACK /?CND15
LOC OBJ
FSET? STACK,FL-CONTAINER \?CND15
ZERO? CONT /?CND15
LOC OBJ
EQUAL? STACK,CONT /?CND15
SET 'C-GEM,FALSE-VALUE
?CND15: ADD PTR,2 >PTR
JUMP ?PRG10
?REP11: ZERO? H-GEM /?CCL38
SET 'GEM,H-GEM
JUMP ?CND36
?CCL38: ZERO? G-GEM /?CCL40
SET 'GEM,G-GEM
JUMP ?CND36
?CCL40: ZERO? C-GEM /FALSE
SET 'GEM,C-GEM
?CND36: PRINTC 91
ICALL2 RT-CTHEO-PRINT,GEM
PRINTC 93
CRLF
CRLF
RETURN GEM
.FUNCT RT-GN-PIGEON,TBL,LEN
FSET? CH-TRAINED-PIGEON,FL-ALIVE /?CCL3
PRINTC 91
ICALL2 RT-CTHEO-PRINT,TH-DEAD-PIGEON
PRINTC 93
CRLF
CRLF
RETURN TH-DEAD-PIGEON
?CCL3: PRINTC 91
ICALL2 RT-CTHEO-PRINT,CH-TRAINED-PIGEON
PRINTC 93
CRLF
CRLF
RETURN CH-TRAINED-PIGEON
.FUNCT RT-GN-OAR,TBL,LEN
EQUAL? GL-P-IT-OBJECT,TH-OAR-1,TH-OAR-2 \?CCL3
PRINTC 91
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
PRINTC 93
CRLF
CRLF
RETURN GL-P-IT-OBJECT
?CCL3: PRINTC 91
ICALL2 RT-CTHEO-PRINT,TH-OAR-2
PRINTC 93
CRLF
CRLF
RETURN TH-OAR-2
.FUNCT RT-GN-BOX,TBL,LEN,PTR
ZERO? LEN \?CND1
GET TBL,0 >LEN
?CND1: ADD TBL,2 >PTR
INTBL? GL-P-IT-OBJECT,PTR,LEN \FALSE
PRINTC 91
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
PRINTC 93
CRLF
CRLF
RETURN GL-P-IT-OBJECT
.FUNCT RT-GN-DOOR,TBL,LEN,PTR,OBJ,DOOR
ZERO? LEN \?CND1
GET TBL,0 >LEN
?CND1: ADD TBL,2 >PTR
?PRG3: MUL LEN,2
ADD TBL,STACK
GRTR? PTR,STACK /?REP4
GET PTR,0 >OBJ
EQUAL? GL-PRSA,V?OPEN \?CCL10
FSET? OBJ,FL-OPENED /?CND8
ZERO? DOOR \FALSE
SET 'DOOR,OBJ
JUMP ?CND8
?CCL10: EQUAL? GL-PRSA,V?CLOSE \?CND8
FSET? OBJ,FL-OPENED \?CND8
ZERO? DOOR \FALSE
SET 'DOOR,OBJ
?CND8: ADD PTR,2 >PTR
JUMP ?PRG3
?REP4: ZERO? DOOR /?CND22
PRINTC 91
ICALL2 RT-CTHEO-PRINT,DOOR
PRINTC 93
CRLF
CRLF
?CND22: RETURN DOOR
.FUNCT RT-GN-BOTTLE,TBL,LEN,PTR,OBJ,BOTTLE
ZERO? LEN \?CND1
GET TBL,0 >LEN
?CND1: ADD TBL,2 >PTR
?PRG3: MUL LEN,2
ADD TBL,STACK
GRTR? PTR,STACK /?REP4
GET PTR,0 >OBJ
EQUAL? GL-PRSA,V?OPEN \?PRD11
ZERO? GL-NOW-PRSI? \?PRD11
FSET? OBJ,FL-OPENED \?CCL9
?PRD11: EQUAL? GL-PRSA,V?CLOSE \?PRD15
ZERO? GL-NOW-PRSI? \?PRD15
FSET? OBJ,FL-OPENED /?CCL9
?PRD15: EQUAL? GL-PRSA,V?PUT \?CND8
ZERO? GL-NOW-PRSI? /?CND8
FSET? OBJ,FL-OPENED \?CND8
?CCL9: ZERO? BOTTLE \FALSE
SET 'BOTTLE,OBJ
?CND8: ADD PTR,2 >PTR
JUMP ?PRG3
?REP4: ZERO? BOTTLE /?CND25
PRINTC 91
ICALL2 RT-CTHEO-PRINT,BOTTLE
PRINTC 93
CRLF
CRLF
?CND25: RETURN BOTTLE
.FUNCT RT-GN-PILL,TBL,LEN,PTR,OBJ,PILL
ZERO? LEN \?CND1
GET TBL,0 >LEN
?CND1: ADD TBL,2 >PTR
CALL1 RT-TOUCH-VERB?
ZERO? STACK /?CND3
?PRG5: MUL LEN,2
ADD TBL,STACK
GRTR? PTR,STACK /?CND3
GET PTR,0 >OBJ
CALL2 RT-ACCESSIBLE?,OBJ
ZERO? STACK /?CND10
ZERO? PILL \FALSE
SET 'PILL,OBJ
?CND10: ADD PTR,2 >PTR
JUMP ?PRG5
?CND3: ZERO? PILL /?CND15
PRINTC 91
ICALL2 RT-CTHEO-PRINT,PILL
PRINTC 93
CRLF
CRLF
?CND15: RETURN PILL
.FUNCT RT-GN-TH-CLOTHES,TBL,LEN
RETURN TH-CLOTHES
.FUNCT RT-GN-BODY,TBL,LEN,PTR,OBJ
ZERO? LEN \?CND1
GET TBL,0 >LEN
?CND1: ADD TBL,2 >PTR
INTBL? TH-CLOTHES,PTR,LEN \?PRG5
RETURN TH-CLOTHES
?PRG5: ZERO? LEN /FALSE
GET PTR,0 >OBJ
FSET? OBJ,FL-BODYPART \?CND7
RETURN OBJ
?CND7: ADD PTR,2 >PTR
DEC 'LEN
JUMP ?PRG5
.FUNCT RT-GN-INTNUM,TBL,LEN
EQUAL? GL-PRSA,V?WAIT,V?WAIT-FOR /?CTR2
RETURN TH-SAFETY-DEPOSIT-BOX
?CTR2: RETURN TH-INTNUM
.FUNCT RT-GN-ETHERIUM,TBL,LEN
EQUAL? GL-PRSA,V?SMELL,V?INHALE \?CCL3
RETURN TH-ETHERIUM-GAS
?CCL3: EQUAL? GL-PRSA,V?MUNG,V?OPEN,V?LOOK-INSIDE \FALSE
RETURN TH-ETHERIUM-AMPOULE
.FUNCT RT-GN-TOWER,TBL,LEN
RETURN LG-TOWER
.ENDI