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

738 lines
17 KiB
Plaintext

.FUNCT RT-META-IN?,OBJ1,OBJ2
?PRG1: ZERO? OBJ1 /FALSE
IN? OBJ1,ROOMS /FALSE
IN? OBJ1,LOCAL-GLOBALS /FALSE
EQUAL? OBJ1,OBJ2 /TRUE
LOC OBJ1 >OBJ1
JUMP ?PRG1
.FUNCT RT-SEE-INSIDE?,THING
ZERO? THING /FALSE
FSET? THING,FL-SURFACE /TRUE
FSET? THING,FL-CONTAINER \?CCL7
FSET? THING,FL-OPENED /TRUE
FSET? THING,FL-TRANSPARENT /TRUE
?CCL7: FSET? THING,FL-PERSON /?PRD15
FSET? THING,FL-ALIVE \FALSE
?PRD15: EQUAL? THING,CH-PLAYER /FALSE
RTRUE
.FUNCT RT-VISIBLE?,OBJ
CALL RT-ACCESSIBLE?,OBJ,TRUE-VALUE
RSTACK
.FUNCT CLOSED?,WLOC,VISIBLE?
ZERO? WLOC /FALSE
FSET? WLOC,FL-OPENED /FALSE
ZERO? VISIBLE? /?PRD7
FSET? WLOC,FL-TRANSPARENT /FALSE
?PRD7: FSET? WLOC,FL-SURFACE /FALSE
FSET? WLOC,FL-ALIVE /FALSE
IN? WLOC,ROOMS \TRUE
RFALSE
.FUNCT RT-ACCESSIBLE?,OBJ,VISIBLE?,LOC,OLOC,WLOC,RMG,RMGL
GETPT GL-PLACE-CUR,P?GLOBAL >RMG
PTSIZE RMG >RMGL
ZERO? OBJ \?CCL3
SET 'GL-CLOSED-OBJECT,FALSE-VALUE
RFALSE
?CCL3: EQUAL? OBJ,ROOMS /TRUE
EQUAL? OBJ,PSEUDO-OBJECT \?CND1
EQUAL? LAST-PSEUDO-LOC,GL-PLACE-CUR /TRUE
RFALSE
?CND1: LOC GL-WINNER >WLOC
?PRG9: IN? WLOC,ROOMS /?REP10
CALL CLOSED?,WLOC,VISIBLE?
ZERO? STACK \?REP10
LOC WLOC >WLOC
JUMP ?PRG9
?REP10: SET 'OLOC,OBJ
EQUAL? OLOC,WLOC /TRUE
?PRG18: ZERO? OLOC /FALSE
IN? OLOC,GLOBAL-OBJECTS /?CCL23
INTBL? OLOC,RMG,RMGL,1 \?CND22
?CCL23: IN? OLOC,ROOMS \TRUE
EQUAL? OLOC,OBJ /TRUE
RFALSE
?CND22: IN? OLOC,ROOMS /FALSE
LOC OLOC >OLOC
EQUAL? OLOC,WLOC /TRUE
CALL CLOSED?,OLOC,VISIBLE?
ZERO? STACK /?PRG18
IN? OLOC,GLOBAL-OBJECTS /TRUE
INTBL? OLOC,RMG,RMGL,1 /TRUE
SET 'GL-CLOSED-OBJECT,OLOC
SET 'GL-IN-OUT,TRUE-VALUE
RFALSE
.FUNCT RT-DONT-ALL?,O,I,L
LOC O >L
ZERO? L /TRUE
EQUAL? O,I /TRUE
FSET? O,FL-BODYPART /TRUE
FSET? O,FL-NOALL /TRUE
EQUAL? GL-PRSA,V?TAKE \?CCL11
ZERO? I \?CCL14
CALL RT-META-IN?,O,GL-WINNER
ZERO? STACK /?CCL14
IN? O,GL-WINNER /TRUE
GET GL-P-NAMW,0
ZERO? STACK /TRUE
GET GL-P-BUTS,K-P-MATCHLEN
ZERO? STACK \TRUE
?CCL14: FSET? O,FL-TAKEABLE /?CCL22
FSET? O,FL-TRYTAKE \TRUE
?CCL22: FSET? L,FL-PERSON \?CCL26
EQUAL? L,I \TRUE
?CCL26: FSET? L,FL-CONTAINER \?CCL30
FSET? L,FL-OPENED \TRUE
?CCL30: ZERO? I /?CCL34
EQUAL? L,I \TRUE
CALL2 RT-SEE-INSIDE?,I
ZERO? STACK /TRUE
RFALSE
?CCL34: EQUAL? L,GL-PLACE-CUR /FALSE
CALL2 RT-SEE-INSIDE?,L
ZERO? STACK /TRUE
RFALSE
?CCL11: EQUAL? GL-PRSA,V?DROP,V?PUT,V?PUT-ON /?CTR44
EQUAL? GL-PRSA,V?THROW,V?THROW-OVER \FALSE
?CTR44: EQUAL? O,TH-POCKET /TRUE
EQUAL? L,TH-POCKET /TRUE
FSET? O,FL-WORN /TRUE
EQUAL? L,GL-WINNER /FALSE
RTRUE
.FUNCT DPRINT,O,X
FSET? O,FL-HAS-SDESC \?CCL3
GETP O,P?ACTION >X
ZERO? X /?CCL3
CALL X,K-M-SDESC
RSTACK
?CCL3: PRINTD O
RTRUE
.FUNCT RT-A-PRINT,O
ICALL RT-THEO-PRINT,O,FALSE-VALUE,K-DESC-A
RTRUE
.FUNCT RT-THEO-PRINT,O,CAP?,CLASS,?TMP1
ASSIGNED? 'CLASS /?CND1
SET 'CLASS,K-DESC-THE
?CND1: ZERO? O \?CND3
SET 'O,GL-PRSO
?CND3: ZERO? CAP? /?PRG7
DIROUT K-D-SCR-OFF
DIROUT K-D-TBL-ON,GL-DIROUT-TBL
?PRG7: FSET? O,FL-NOARTC /?CCL11
FSET? O,FL-YOUR \?CCL14
PRINTI "your"
JUMP ?CND12
?CCL14: EQUAL? CLASS,K-DESC-ANY \?CCL16
PRINTI "any"
JUMP ?CND12
?CCL16: EQUAL? CLASS,K-DESC-THE /?CTR17
FSET? O,FL-PLURAL \?CCL18
FSET? O,FL-PERSON \?CCL18
?CTR17: PRINTI "the"
JUMP ?CND12
?CCL18: FSET? O,FL-PLURAL \?CCL24
FSET? O,FL-PERSON /?CCL24
PRINTI "some"
JUMP ?CND12
?CCL24: EQUAL? O,LG-WATER /?CND12
FSET? O,FL-VOWEL \?CCL30
PRINTI "an"
JUMP ?CND12
?CCL30: PRINTC 97
?CND12: PRINTC 32
?CND9: EQUAL? O,CH-ME \?CCL34
ZERO? CAP? /?CCL34
PRINTI "you"
JUMP ?REP8
?CCL11: FSET? O,FL-HAS-SDESC \?CND9
GETP O,P?ACTION
ICALL STACK,K-M-SDESC,CLASS
JUMP ?REP8
?CCL34: ICALL2 DPRINT,O
?REP8: ZERO? CAP? /TRUE
DIROUT K-D-TBL-OFF
DIROUT K-D-SCR-ON
GETB GL-DIROUT-TBL,2 >CAP?
LESS? CAP?,97 /?CND39
GRTR? CAP?,122 /?CND39
SUB CAP?,32
PUTB GL-DIROUT-TBL,2,STACK
?CND39: ADD GL-DIROUT-TBL,2 >?TMP1
GET GL-DIROUT-TBL,0
PRINTT ?TMP1,STACK
RTRUE
.FUNCT RT-CTHEO-PRINT,O
CALL RT-THEO-PRINT,O,TRUE-VALUE
RSTACK
.FUNCT RT-THEI-PRINT,I
ZERO? I \?CND1
SET 'I,GL-PRSI
?CND1: CALL2 RT-THEO-PRINT,I
RSTACK
.FUNCT RT-CTHEI-PRINT,I
ZERO? I \?CND1
SET 'I,GL-PRSI
?CND1: CALL RT-THEO-PRINT,I,TRUE-VALUE
RSTACK
.FUNCT RT-PRINT-SPACES,N,AMT
?PRG1: GRTR? N,GL-BLANKS-LEN \?CCL5
SET 'AMT,GL-BLANKS-LEN
JUMP ?CND3
?CCL5: SET 'AMT,N
?CND3: PRINTT GL-BLANKS,AMT
SUB N,AMT >N
GRTR? N,0 /?PRG1
RTRUE
.FUNCT SAY-NUMBER,N,X
SET 'X,10000
?PRG1: LESS? N,X \?REP2
PRINTC 32
DIV X,10 >X
LESS? X,10 \?PRG1
?REP2: PRINTN N
RTRUE
.FUNCT RT-UPDATE-STATUS-LINE
GET 0,8
BTST STACK,4 \?CND1
ICALL2 RT-INIT-SCREEN,TRUE-VALUE
GET 0,8
BAND STACK,-5
PUT 0,8,STACK
?CND1: SCREEN K-S-WIN
HLIGHT K-H-INV
EQUAL? GL-PLACE-CUR,GL-PLACE-STS /?CND3
ZERO? GL-SHORT-STAT? /?CCL7
CURSET GL-SPLIT-ROW,1
JUMP ?CND5
?CCL7: CURSET GL-SPLIT-ROW,2
?CND5: ICALL2 RT-PRINT-SPACES,GL-STAT-MAX-ROOM
CURSET GL-SPLIT-ROW,2
CALL RT-SAY-ROOM-NAME-IF-LIT,GL-PLACE-CUR,FALSE-VALUE,TRUE-VALUE
ZERO? STACK /?CCL10
SET 'GL-PLACE-STS,GL-PLACE-CUR
JUMP ?CND3
?CCL10: SET 'GL-PLACE-STS,-1
?CND3: EQUAL? GL-SCORE-CUR,GL-SCORE-STS /?CND11
SET 'GL-SCORE-STS,GL-SCORE-CUR
ADD GL-SCORE-HEADER-LEN,GL-STAT-S-POS
CURSET GL-SPLIT-ROW,STACK
ICALL2 SAY-NUMBER,GL-SCORE-CUR
?CND11: CURSET GL-SPLIT-ROW,GL-STAT-T-POS
ZERO? GL-SHORT-STAT? /?CCL15
ICALL2 RT-CLK-DOW-MSG,3
PRINTC 32
ICALL2 RT-CLK-NTI-MSG,22
JUMP ?CND13
?CCL15: ICALL2 RT-CLK-DOW-MSG,5
ADD 10,GL-STAT-T-POS
CURSET GL-SPLIT-ROW,STACK
ICALL2 RT-CLK-NTI-MSG,7
?CND13: HLIGHT K-H-NRM
SCREEN K-S-NOR
RTRUE
.FUNCT RT-REFER-TO-MSG
PRINTR "[To what are you referring?]"
.FUNCT RT-SAY-ROOM-NAME-IF-LIT,HERE,FORCE?,SL?,LEN,MAXLEN,LC,X,CNT
ASSIGNED? 'HERE /?CND1
SET 'HERE,GL-PLACE-CUR
?CND1: SET 'MAXLEN,300
SET 'CNT,2
ZERO? SL? /?CND3
SET 'MAXLEN,GL-STAT-MAX-ROOM
?CND3: ZERO? FORCE? \?CTR6
ZERO? GL-NOW-LIT? /?CCL7
?CTR6: DIROUT K-D-SCR-OFF
DIROUT K-D-TBL-ON,GL-DIROUT-TBL
ICALL2 DPRINT,HERE
DIROUT K-D-TBL-OFF
DIROUT K-D-SCR-ON
GET GL-DIROUT-TBL,0 >LEN
INC 'LEN
PUT GL-DIROUT-TBL,0,0
GRTR? LEN,1 \?CCL12
SET 'LC,32
?PRG13: GETB GL-DIROUT-TBL,CNT >X
LESS? X,97 /?CND15
GRTR? X,122 /?CND15
EQUAL? CNT,2 /?CCL20
EQUAL? LC,32 \?CND15
?CCL20: SUB X,32 >X
?CND15: PRINTC X
SET 'LC,X
IGRTR? 'CNT,LEN /TRUE
GRTR? CNT,MAXLEN \?PRG13
RTRUE
?CCL12: GET GL-DIROUT-TBL,2
PRINTC STACK
RTRUE
?CCL7: PRINTI "Darkness"
RFALSE
.FUNCT RT-DESCRIBE-PLACE,PLACE,LOOK
ZERO? PLACE \?CND1
SET 'PLACE,GL-PLACE-CUR
?CND1: CALL RT-IS-LIT?,PLACE,TRUE-VALUE
ZERO? STACK \?CND3
PRINT K-TOO-DARK-MSG
CRLF
RTRUE
?CND3: HLIGHT K-H-BLD
ICALL RT-SAY-ROOM-NAME-IF-LIT,PLACE,TRUE-VALUE
CRLF
CRLF
HLIGHT K-H-NRM
ZERO? LOOK /?CCL7
CALL RT-EXEC-RM-DESCFCN,PLACE,K-M-DESC-3
RSTACK
?CCL7: FSET? PLACE,FL-TOUCHED /?CCL9
FSET PLACE,FL-TOUCHED
CALL RT-EXEC-RM-DESCFCN,PLACE,K-M-DESC-1
RSTACK
?CCL9: EQUAL? GL-DESC-LEVEL,2 \?CCL11
CALL RT-EXEC-RM-DESCFCN,PLACE,K-M-DESC-2
RSTACK
?CCL11: EQUAL? GL-DESC-LEVEL,1 /TRUE
ZERO? GL-DESC-LEVEL /FALSE
RFALSE
.FUNCT RT-EXEC-RM-DESCFCN,PLACE,CONTEXT,DF
FSET? PLACE,FL-HAS-DESCFCN \TRUE
GETP PLACE,P?ACTION
CALL STACK,CONTEXT
ZERO? STACK /TRUE
RFALSE
.FUNCT RT-DESCFCN-CONTEXT,CONTEXT
EQUAL? CONTEXT,K-M-DESC-1,K-M-DESC-2,K-M-DESC-3 /TRUE
RFALSE
.FUNCT RT-DESC-ALL,PLACE,LOOK,HOLMES-IN-HOUSE?
CALL RT-DESCRIBE-PLACE,PLACE,LOOK
ZERO? STACK /?CND1
ICALL RT-DESCRIBE-PLACE-CONTENTS,PLACE,LOOK
?CND1: CALL RT-IS-LIT?,PLACE,TRUE-VALUE
ZERO? STACK /TRUE
ZERO? GL-PUPPY-MSG? \?CCL7
SET 'GL-PUPPY-MSG?,TRUE-VALUE
RTRUE
?CCL7: ZERO? GL-PUPPY /TRUE
EQUAL? GL-PUPPY,CH-HOLMES \?CCL11
CRLF
CALL2 RT-PICK-NEXT,GL-HOLMES-DESC-TXT
PRINT STACK
EQUAL? GL-PLACE-CUR,RM-ENTRY-HALL,RM-PARLOUR,RM-VESTIBULE /?CCL13
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY,RM-HOLMES-BEDROOM \?CND12
?CCL13: SET 'HOLMES-IN-HOUSE?,TRUE-VALUE
?CND12: ZERO? LOOK /?CCL18
IN? CH-HOLMES,TH-BOAT \?CCL21
PRINT K-SEASICK-MSG
JUMP ?CND19
?CCL21: IN? CH-HOLMES,TH-HANSOM-CAB /?CTR22
IN? CH-HOLMES,TH-GROWLER-CAB \?CCL23
?CTR22: PRINT K-SITTING-QUIETLY-MSG
JUMP ?CND19
?CCL23: ZERO? HOLMES-IN-HOUSE? /?CCL27
CALL2 RT-PICK-NEXT,GL-HOLMES-HOUSE-LOOK-TXT
PRINT STACK
JUMP ?CND19
?CCL27: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL29
CALL2 RT-PICK-NEXT,GL-HOLMES-INDOORS-LOOK-TXT
PRINT STACK
JUMP ?CND19
?CCL29: CALL2 RT-PICK-NEXT,GL-HOLMES-OUTDOORS-LOOK-TXT
PRINT STACK
?CND19: PRINTR "."
?CCL18: EQUAL? GL-DESC-LEVEL,2,1 \TRUE
ZERO? HOLMES-IN-HOUSE? /?CCL33
CALL2 RT-PICK-NEXT,GL-HOLMES-HOUSE-ENTER-TXT
PRINT STACK
JUMP ?CND31
?CCL33: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL35
CALL2 RT-PICK-NEXT,GL-HOLMES-INDOORS-ENTER-TXT
PRINT STACK
JUMP ?CND31
?CCL35: CALL2 RT-PICK-NEXT,GL-HOLMES-OUTDOORS-ENTER-TXT
PRINT STACK
?CND31: PRINTR "."
?CCL11: EQUAL? GL-PUPPY,CH-WIGGINS \TRUE
CRLF
CALL2 RT-PICK-NEXT,GL-WIGGINS-DESC-TXT
PRINT STACK
ZERO? LOOK /?CCL39
IN? CH-WIGGINS,TH-BOAT \?CCL42
PRINT K-ENJOYING-RIDE-MSG
JUMP ?CND40
?CCL42: IN? CH-WIGGINS,TH-HANSOM-CAB /?CTR43
IN? CH-WIGGINS,TH-GROWLER-CAB \?CCL44
?CTR43: PRINT K-FIDGETING-MSG
JUMP ?CND40
?CCL44: CALL2 RT-PICK-NEXT,GL-WIGGINS-LOOK-TXT
PRINT STACK
?CND40: PRINTR "."
?CCL39: EQUAL? GL-DESC-LEVEL,2,1 \TRUE
CALL2 RT-PICK-NEXT,GL-WIGGINS-ENTER-TXT
PRINT STACK
PRINTR "."
.FUNCT RT-GOTO,NEWPLACE,X,NEWLIT?,OLDPLACE,AMP?,SS?
SET 'OLDPLACE,GL-PLACE-CUR
MOVE CH-PLAYER,NEWPLACE
SET 'GL-PLACE-CUR,NEWPLACE
CALL1 RT-IS-LIT? >NEWLIT?
MOVE CH-PLAYER,OLDPLACE
SET 'GL-PLACE-CUR,OLDPLACE
ZERO? NEWLIT? \?CND1
ICALL2 TOO-DARK-TO-GO,NEWPLACE
RTRUE
?CND1: GETP GL-PLACE-CUR,P?ACTION
CALL STACK,K-M-EXIT >X
FSET? OLDPLACE,FL-INDOORS /?CND3
FSET? NEWPLACE,FL-INDOORS /?CND3
ICALL RT-CLOCK-JMP,0,5,0
?CND3: SET 'GL-PLACE-PRV,OLDPLACE
SET 'GL-PLACE-CUR,NEWPLACE
CALL1 RT-IS-LIT? >GL-NOW-LIT?
MOVE CH-PLAYER,GL-PLACE-CUR
GETP GL-PLACE-CUR,P?ACTION
CALL STACK,K-M-ENTERING >X
ZERO? GL-PUPPY /?CCL9
LOC CH-PLAYER
MOVE GL-PUPPY,STACK
JUMP ?CND7
?CCL9: ZERO? GL-FORMER-PUPPY /?CND7
IN? GL-FORMER-PUPPY,GL-PLACE-CUR \?CND7
FSET? GL-FORMER-PUPPY,FL-ASLEEP /?CND7
SET 'GL-PUPPY,GL-FORMER-PUPPY
SET 'GL-FORMER-PUPPY,FALSE-VALUE
?CND7: ICALL1 RT-DESC-ALL
IN? TH-ETHERIUM-AMPOULE,CH-PLAYER \?PST15
FSET? TH-ETHERIUM-AMPOULE,FL-BROKEN /?PRD18
SET 'AMP?,1
JUMP ?PEN14
?PRD18: SET 'AMP?,0
JUMP ?PEN14
?PST15: SET 'AMP?,0
?PEN14: FSET? TH-STETHOSCOPE,FL-WORN /?PRD20
PUSH 0
JUMP ?PRD21
?PRD20: PUSH 1
?PRD21: SET 'SS?,STACK
ZERO? AMP? \?CCL23
ZERO? SS? /?CND22
?CCL23: ICALL HOLMES-COMPLAINS,AMP?,SS?
?CND22: GETP GL-PLACE-CUR,P?ACTION
CALL STACK,K-M-ENTERED >X
ICALL1 RT-RESET-THEM
IN? TH-ETHERIUM-GAS,GL-PLACE-CUR \TRUE
ICALL1 RT-SMELL-ETHERIUM?
RTRUE
.FUNCT RT-RESET-THEM
CALL2 RT-VISIBLE?,GL-P-IT-OBJECT
ZERO? STACK \?CND1
SET 'GL-P-IT-OBJECT,TH-NOT-HERE-OBJECT
?CND1: CALL2 RT-VISIBLE?,GL-P-THEM-OBJECT
ZERO? STACK \?CND3
SET 'GL-P-THEM-OBJECT,TH-NOT-HERE-OBJECT
?CND3: CALL2 RT-VISIBLE?,GL-P-HIM-OBJECT
ZERO? STACK \?CND5
SET 'GL-P-HIM-OBJECT,TH-NOT-HERE-OBJECT
?CND5: CALL2 RT-VISIBLE?,GL-P-HER-OBJECT
ZERO? STACK \TRUE
SET 'GL-P-HER-OBJECT,TH-NOT-HERE-OBJECT
RTRUE
.FUNCT RT-UPDATE-SCORE,PTS
ASSIGNED? 'PTS /?CND1
SET 'PTS,1
?CND1: ADD GL-SCORE-CUR,PTS >GL-SCORE-CUR
CALL2 RT-NEW-SCORE-MSG,PTS
RSTACK
.FUNCT RT-UPDATE-MOVES,MVS
ASSIGNED? 'MVS /?CND1
SET 'MVS,1
?CND1: ZERO? GL-CLOCK-WAIT \FALSE
ZERO? GL-CLOCK-STOP \FALSE
ADD GL-MOVES-CUR,MVS >GL-MOVES-CUR
RETURN GL-MOVES-CUR
.FUNCT RT-UPDATE-CLOCK,HRS,MIN,SEC
ZERO? HRS \?CCL2
ZERO? MIN \?CCL2
ZERO? SEC /?CND1
?CCL2: ICALL RT-DO-CLOCK-SET,GL-TIME-UPDT-INC,HRS,MIN,SEC
?CND1: CALL1 RT-CLOCK-INC
RSTACK
.FUNCT RT-MAIN-LOOP,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,X,TOUCH-VERB?,MYCROFT?,TV,?TMP1
?PRG1: SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
SET 'GL-P-MULT?,FALSE-VALUE
EQUAL? GL-PLACE-CUR,GL-P-QCONTEXT-RM /?CND3
SET 'GL-P-QCONTEXT-TH,FALSE-VALUE
?CND3: CALL1 RT-PARSER >GL-P-GOOD
ZERO? GL-P-GOOD /?CCL7
GET GL-P-PRSI,K-P-MATCHLEN >ICNT
GET GL-P-PRSO,K-P-MATCHLEN >OCNT
ZERO? GL-P-IT-OBJECT /?CND8
CALL2 RT-ACCESSIBLE?,GL-P-IT-OBJECT
ZERO? STACK /?CND8
SET 'TMP,FALSE-VALUE
?PRG12: IGRTR? 'CNT,ICNT /?REP13
GET GL-P-PRSI,CNT
EQUAL? STACK,TH-IT \?PRG12
PUT GL-P-PRSI,CNT,GL-P-IT-OBJECT
SET 'TMP,TRUE-VALUE
?REP13: ZERO? TMP \?CND19
SET 'CNT,0
?PRG21: IGRTR? 'CNT,OCNT /?CND19
GET GL-P-PRSO,CNT
EQUAL? STACK,TH-IT \?PRG21
PUT GL-P-PRSO,CNT,GL-P-IT-OBJECT
?CND19: SET 'CNT,0
?CND8: ZERO? OCNT \?CCL30
SET 'NUM,OCNT
JUMP ?CND28
?CCL30: GRTR? OCNT,1 \?CCL32
SET 'TBL,GL-P-PRSO
ZERO? ICNT \?CCL35
SET 'OBJ,FALSE-VALUE
JUMP ?CND33
?CCL35: GET GL-P-PRSI,1 >OBJ
?CND33: SET 'NUM,OCNT
JUMP ?CND28
?CCL32: GRTR? ICNT,1 \?CCL37
SET 'PTBL,FALSE-VALUE
SET 'TBL,GL-P-PRSI
GET GL-P-PRSO,1 >OBJ
SET 'NUM,ICNT
JUMP ?CND28
?CCL37: SET 'NUM,1
?CND28: ZERO? OBJ \?CND38
EQUAL? ICNT,1 \?CND38
GET GL-P-PRSI,1 >OBJ
?CND38: EQUAL? GL-PRSA,V?WALK \?CCL44
CALL RT-PERFORM,GL-PRSA,GL-PRSO >V
JUMP ?CND42
?CCL44: ZERO? NUM \?CCL46
GETB GL-P-SYNTAX,0
SHIFT STACK,-6
ZERO? STACK \?CCL49
CALL2 RT-PERFORM,GL-PRSA >V
SET 'GL-PRSO,FALSE-VALUE
JUMP ?CND42
?CCL49: ZERO? GL-NOW-LIT? \?CCL51
ICALL1 RT-P-CLEAR
PRINT K-TOO-DARK-MSG
CRLF
JUMP ?CND42
?CCL51: ICALL1 RT-P-CLEAR
PRINTI "[There isn't anything to "
GET GL-P-ITBL,K-P-VERBN >TMP
CALL1 RT-TALK-VERB?
ZERO? STACK /?CCL54
PRINTI "talk to"
JUMP ?CND52
?CCL54: ZERO? GL-P-MERGED \?CTR55
ZERO? GL-P-ORPH /?CCL56
?CTR55: GET TMP,0
PRINTB STACK
JUMP ?CND52
?CCL56: GETB TMP,2 >?TMP1
GETB TMP,3
CALL RT-WORD-PRINT,?TMP1,STACK >V
?CND52: PRINTI ".]"
CRLF
SET 'V,FALSE-VALUE
JUMP ?CND42
?CCL46: SET 'X,0
GRTR? NUM,1 \?CND59
SET 'GL-P-MULT?,TRUE-VALUE
?CND59: SET 'TMP,FALSE-VALUE
?PRG61: IGRTR? 'CNT,NUM \?CCL65
GRTR? X,0 \?CCL68
PRINTI "[The "
EQUAL? X,NUM /?CND69
PRINTI "other "
?CND69: PRINTI "object"
EQUAL? X,1 /?CND71
PRINTC 115
?CND71: PRINTI " that you mentioned "
EQUAL? X,1 /?CCL75
PRINTI "are"
JUMP ?CND73
?CCL75: PRINTI "is"
?CND73: PRINTI "n't here.]"
CRLF
JUMP ?REP62
?CCL68: ZERO? TMP \?REP62
ICALL1 RT-REFER-TO-MSG
JUMP ?REP62
?CCL65: ZERO? PTBL /?CCL79
GET GL-P-PRSO,CNT >OBJ1
JUMP ?CND77
?CCL79: GET GL-P-PRSI,CNT >OBJ1
?CND77: GRTR? NUM,1 /?CCL81
GET GL-P-ITBL,K-P-NC1
GET STACK,0
EQUAL? STACK,W?ALL,W?EVERYTHING \?CND80
?CCL81: EQUAL? OBJ1,TH-NOT-HERE-OBJECT \?CCL86
INC 'X
JUMP ?PRG61
?CCL86: EQUAL? GL-P-GET-FLAGS,K-P-ALL \?CCL88
CALL RT-DONT-ALL?,OBJ1,OBJ
ZERO? STACK \?PRG61
?CCL88: CALL2 RT-ACCESSIBLE?,OBJ1
ZERO? STACK /?PRG61
EQUAL? OBJ1,CH-PLAYER /?PRG61
EQUAL? OBJ1,TH-IT \?CCL97
ICALL2 RT-CTHEO-PRINT,GL-P-IT-OBJECT
JUMP ?CND95
?CCL97: ICALL2 RT-CTHEO-PRINT,OBJ1
?CND95: PRINTI ": "
?CND80: SET 'TMP,TRUE-VALUE
ZERO? PTBL /?CCL100
SET 'GL-PRSO,OBJ1
JUMP ?CND98
?CCL100: SET 'GL-PRSO,OBJ
?CND98: ZERO? PTBL /?CCL103
SET 'GL-PRSI,OBJ
JUMP ?CND101
?CCL103: SET 'GL-PRSI,OBJ1
?CND101: EQUAL? GL-WINNER,CH-BUTLER \?CND104
GET GL-P-NAMW,0
EQUAL? STACK,W?HOLMES,W?MYCROFT \?CND104
SET 'MYCROFT?,TRUE-VALUE
SET 'TOUCH-VERB?,FALSE-VALUE
?CND104: ZERO? MYCROFT? \?CND108
EQUAL? GL-PRSA,V?FIND /?CND108
CALL1 RT-TOUCH-VERB? >TOUCH-VERB?
ZERO? TOUCH-VERB? \?CCL109
INTBL? GL-PRSA,GL-SEE-VERBS+2,20 >TV \?CND108
?CCL109: ZERO? GL-PRSO /?CCL117
CALL2 RT-VISIBLE?,GL-PRSO
ZERO? STACK \?CCL117
ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSO
GRTR? OCNT,1 /?PRG61
SET 'V,FATAL-VALUE
JUMP ?REP62
?CCL117: ZERO? GL-PRSI /?CND108
CALL2 RT-VISIBLE?,GL-PRSI
ZERO? STACK \?CND108
ICALL2 RT-CANT-SEE-ANY-MSG,GL-PRSI
GRTR? ICNT,1 /?PRG61
SET 'V,FATAL-VALUE
JUMP ?REP62
?CND108: ZERO? TOUCH-VERB? /?CND127
ZERO? GL-PRSO /?CCL131
CALL2 RT-ACCESSIBLE?,GL-PRSO
ZERO? STACK \?CCL131
ICALL RT-CANT-TOUCH-MSG,GL-PRSO,GL-CLOSED-OBJECT,GL-IN-OUT
GRTR? OCNT,1 /?PRG61
SET 'V,FATAL-VALUE
JUMP ?REP62
?CCL131: ZERO? GL-PRSI /?CND127
CALL2 RT-ACCESSIBLE?,GL-PRSI
ZERO? STACK \?CND127
ICALL RT-CANT-TOUCH-MSG,GL-PRSI,GL-CLOSED-OBJECT,GL-IN-OUT
GRTR? ICNT,1 /?PRG61
SET 'V,FATAL-VALUE
JUMP ?REP62
?CND127: CALL RT-PERFORM,GL-PRSA,GL-PRSO,GL-PRSI >V
EQUAL? V,FATAL-VALUE \?PRG61
?REP62: ZERO? GL-P-OVERFLOW /?CND42
CRLF
PRINTI "[Note: There are so many objects here that a few may have been overlooked. Please double check to make sure you have accomplished what you intended.]"
CRLF
?CND42: EQUAL? V,FATAL-VALUE \?CND5
SET 'GL-P-CONT,FALSE-VALUE
JUMP ?CND5
?CCL7: SET 'GL-P-CONT,FALSE-VALUE
?CND5: ZERO? GL-P-GOOD /?CND147
EQUAL? V,FATAL-VALUE /?CND147
INTBL? GL-PRSA,GL-GAME-VERBS+2,10 >TV /?CND147
ICALL1 RT-UPDATE-MOVES
ICALL1 RT-UPDATE-CLOCK
ICALL1 RT-ALARM-CHK
?CND147: ICALL1 RT-TIME-OF-DAY-MSG
SET 'GL-PRSA,FALSE-VALUE
SET 'GL-PRSO,FALSE-VALUE
SET 'GL-PRSI,FALSE-VALUE
JUMP ?PRG1
.FUNCT RT-TOUCH-VERB?
INTBL? GL-PRSA,GL-TOUCH-VERBS+2,69 /?BOGUS1
?BOGUS1: RSTACK
.FUNCT RT-TALK-VERB?
INTBL? GL-PRSA,GL-TALK-VERBS+2,19 /?BOGUS1
?BOGUS1: RSTACK
.FUNCT RT-AC-CH-PLAYER,CONTEXT
SET 'GL-WAIT-BELL,FALSE-VALUE
EQUAL? CONTEXT,K-M-WINNER \?CCL3
EQUAL? GL-PRSA,V?TELL \?CCL6
SET 'GL-CLOCK-WAIT,FALSE-VALUE
RFALSE
?CCL6: EQUAL? GL-PRSO,TH-HANDS /?PRD10
EQUAL? GL-PRSI,TH-HANDS \?CCL8
?PRD10: CALL1 RT-CHECK-HANDS
ZERO? STACK \FALSE
?CCL8: CALL1 RT-TOUCH-VERB?
ZERO? STACK /FALSE
FSET? TH-HANDS,FL-LOCKED \FALSE
CALL1 RT-HANDS-COVERING-EARS
RSTACK
?CCL3: CALL1 RT-AC-CH-PLAYER-AUX
RSTACK
.ENDI