mirror of
https://github.com/historicalsource/sherlock
synced 2024-07-02 22:55:22 +03:00
302 lines
5.6 KiB
Plaintext
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
|