249 lines
7.6 KiB
Plaintext
249 lines
7.6 KiB
Plaintext
|
|
||
|
|
||
|
.FUNCT RT-IDENTIFY-FLOOR?,WD,OBJ,NAM
|
||
|
GETP TH-FLOOR-ETC,P?OBJ-NOUN >NAM
|
||
|
ZERO? OBJ /?CND1
|
||
|
EQUAL? OBJ,TH-FLOOR-ETC \FALSE
|
||
|
?CND1: EQUAL? WD,W?FLOOR \?CCL7
|
||
|
EQUAL? NAM,W?FLOOR /TRUE
|
||
|
RFALSE
|
||
|
?CCL7: EQUAL? WD,W?CEILING \?CCL11
|
||
|
EQUAL? NAM,W?CEILING /TRUE
|
||
|
RFALSE
|
||
|
?CCL11: EQUAL? WD,W?SKY \?CCL15
|
||
|
EQUAL? NAM,W?SKY,W?CLOUD,W?CLOUDS /TRUE
|
||
|
EQUAL? NAM,W?FOG /TRUE
|
||
|
RFALSE
|
||
|
?CCL15: EQUAL? WD,W?GROUND \FALSE
|
||
|
EQUAL? NAM,W?SURFACE,W?GROUND /TRUE
|
||
|
RFALSE
|
||
|
|
||
|
|
||
|
.FUNCT TELL-THE-FLOOR
|
||
|
PRINTI "the floor"
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT TELL-THE-GROUND
|
||
|
PRINTI "the ground"
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT RT-AC-TH-FLOOR-ETC,CONTEXT,INDOORS?,UP?,OBJ,NXT,NAM,THING,TOD
|
||
|
SET 'THING,TH-FLOOR-ETC
|
||
|
EQUAL? CONTEXT,K-M-DESCFCN \?CCL3
|
||
|
GETP TH-FLOOR-ETC,P?OBJ-NOUN
|
||
|
EQUAL? STACK,W?CEILING \FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-HENRY-VII-CHAPEL \FALSE
|
||
|
PRINT K-BREATH-TAKING-MSG
|
||
|
CRLF
|
||
|
RTRUE
|
||
|
?CCL3: EQUAL? CONTEXT,K-M-SDESC \?CCL10
|
||
|
GETP THING,P?OBJ-NOUN
|
||
|
PRINTB STACK
|
||
|
RTRUE
|
||
|
?CCL10: ZERO? CONTEXT \FALSE
|
||
|
GETP THING,P?OBJ-NOUN >NAM
|
||
|
EQUAL? NAM,W?FLOOR,W?CEILING \?CND1
|
||
|
SET 'INDOORS?,TRUE-VALUE
|
||
|
?CND1: CALL2 RT-IDENTIFY-FLOOR?,W?CEILING
|
||
|
ZERO? STACK \?CCL15
|
||
|
CALL2 RT-IDENTIFY-FLOOR?,W?SKY
|
||
|
ZERO? STACK /?CND14
|
||
|
?CCL15: SET 'UP?,TRUE-VALUE
|
||
|
?CND14: FSET? GL-PLACE-CUR,FL-INDOORS /?PRD22
|
||
|
PUSH 1
|
||
|
JUMP ?PEN21
|
||
|
?PRD22: PUSH 0
|
||
|
?PEN21: EQUAL? INDOORS?,STACK \?CCL20
|
||
|
ICALL2 RT-CANT-SEE-ANY-MSG,THING
|
||
|
RETURN 2
|
||
|
?CCL20: ZERO? GL-NOW-PRSI? /?CCL25
|
||
|
EQUAL? GL-PRSA,V?PUT-ON,V?PUT,V?THROW /?CCL28
|
||
|
EQUAL? GL-PRSA,V?THROW-OVER,V?EMPTY-INTO \FALSE
|
||
|
?CCL28: ZERO? UP? \?CCL33
|
||
|
CALL RT-PERFORM,V?DROP,GL-PRSO
|
||
|
RSTACK
|
||
|
?CCL33: PRINTI "Despite your best efforts, "
|
||
|
ICALL1 RT-THEO-PRINT
|
||
|
PRINTR " just won't stay up."
|
||
|
?CCL25: ZERO? UP? \?CCL35
|
||
|
ZERO? GL-NOW-PRSI? \?CCL35
|
||
|
EQUAL? GL-PRSA,V?CROSS \?CCL40
|
||
|
CALL1 V-WALK-AROUND
|
||
|
RSTACK
|
||
|
?CCL40: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON,V?SEARCH \FALSE
|
||
|
FSET? THING,FL-HAS-DESCFCN \?CND43
|
||
|
GETP THING,P?ACTION
|
||
|
CALL STACK,K-M-DESCFCN
|
||
|
ZERO? STACK \TRUE
|
||
|
?CND43: ICALL2 RT-REMOVE-ALL,TH-X-OBJECT
|
||
|
FIRST? GL-PLACE-CUR >OBJ /?PRG48
|
||
|
?PRG48: ZERO? OBJ /?REP49
|
||
|
NEXT? OBJ >NXT /?BOGUS53
|
||
|
?BOGUS53: FSET? OBJ,FL-NODESC /?CCL55
|
||
|
FSET? OBJ,FL-ALIVE \?PRD58
|
||
|
FSET? OBJ,FL-ASLEEP \?CCL55
|
||
|
?PRD58: FSET? OBJ,FL-TAKEABLE /?CND54
|
||
|
FSET? OBJ,FL-TRYTAKE /?CND54
|
||
|
?CCL55: MOVE OBJ,TH-X-OBJECT
|
||
|
?CND54: SET 'OBJ,NXT
|
||
|
JUMP ?PRG48
|
||
|
?REP49: FIRST? GL-PLACE-CUR \?CCL65
|
||
|
ICALL RT-CYOU-MSG,STR?665,STR?666
|
||
|
ICALL2 RT-PRINT-CONTENTS-2,GL-PLACE-CUR
|
||
|
JUMP ?CND63
|
||
|
?CCL65: PRINTI "There is nothing very "
|
||
|
CALL2 RT-PICK-NEXT,GL-BORING-TXT
|
||
|
PRINT STACK
|
||
|
?CND63: PRINTI " on "
|
||
|
ICALL2 RT-THEO-PRINT,THING
|
||
|
PRINTC 46
|
||
|
CRLF
|
||
|
CALL RT-MOVE-ALL,TH-X-OBJECT,GL-PLACE-CUR
|
||
|
RSTACK
|
||
|
?CCL35: ZERO? GL-NOW-PRSI? \FALSE
|
||
|
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-INSIDE,V?SEARCH \?CCL70
|
||
|
EQUAL? GL-PLACE-CUR,RM-HENRY-VII-CHAPEL \?CCL73
|
||
|
ICALL2 RT-CTHEO-PRINT,THING
|
||
|
PRINTR " is breathtakingly beautiful."
|
||
|
?CCL73: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL75
|
||
|
ICALL2 RT-CTHEO-PRINT,THING
|
||
|
PRINTR " is high above you."
|
||
|
?CCL75: ICALL2 RT-CTHEO-PRINT,THING
|
||
|
CALL1 RT-TIME-OF-DAY >TOD
|
||
|
ZERO? TOD \?CCL78
|
||
|
PRINTR " is dark and foggy."
|
||
|
?CCL78: EQUAL? TOD,1 \?CCL80
|
||
|
PRINTR " is foggy, but at least there's enough light to see."
|
||
|
?CCL80: EQUAL? TOD,2 \?CCL82
|
||
|
PRINTR " is pretty light."
|
||
|
?CCL82: EQUAL? TOD,3 \FALSE
|
||
|
PRINTR " is getting darker."
|
||
|
?CCL70: EQUAL? GL-PRSA,V?SHOOT \FALSE
|
||
|
FSET? GL-PLACE-CUR,FL-INDOORS /FALSE
|
||
|
PRINTR "The bullet disappears into the air."
|
||
|
|
||
|
|
||
|
.FUNCT RT-AC-TH-WALL,CONTEXT,OBJ,NAM,ADJ
|
||
|
SET 'OBJ,TH-WALL
|
||
|
GETP OBJ,P?OBJ-NOUN >NAM
|
||
|
GETP OBJ,P?OBJ-ADJ >ADJ
|
||
|
EQUAL? CONTEXT,K-M-SDESC \?CCL3
|
||
|
GETP OBJ,P?OBJ-ADJ
|
||
|
ZERO? STACK /?CND4
|
||
|
PRINTB OBJ
|
||
|
PRINTC 32
|
||
|
?CND4: GETP OBJ,P?OBJ-NOUN
|
||
|
PRINTB STACK
|
||
|
RTRUE
|
||
|
?CCL3: ZERO? CONTEXT \FALSE
|
||
|
EQUAL? NAM,W?WALLS \?CCL9
|
||
|
FSET? GL-PLACE-CUR,FL-INDOORS \?CCL12
|
||
|
EQUAL? GL-PRSA,V?SHOOT \?CCL15
|
||
|
PUTP OBJ,P?OBJ-NOUN,W?WALL
|
||
|
PUTP OBJ,P?OBJ-ADJ,W?SOUTH
|
||
|
RFALSE
|
||
|
?CCL15: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \FALSE
|
||
|
PRINTI "The walls are covered with pictures."
|
||
|
RTRUE
|
||
|
?CCL12: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \?CCL22
|
||
|
EQUAL? GL-PLACE-CUR,RM-INSIDE-TRAITORS-GATE \FALSE
|
||
|
PRINTI "There are some ravens perched on the wall."
|
||
|
RTRUE
|
||
|
?CCL22: EQUAL? GL-PLACE-CUR,RM-TOTTENHAM-COURT-RD,RM-OXFORD-ST,RM-VICTORIA-SQUARE /FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-VICTORIA-STREET,RM-PARLIAMENT-SQUARE,RM-QUEENS-GARDENS /FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-BUCKINGHAM-PALACE,RM-DRAWBRIDGE,RM-BYWARD-TOWER /FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-OUTER-WARD,RM-TOWER-GREEN,RM-OUTSIDE-TRAITORS-GATE /FALSE
|
||
|
PRINT K-NOT-SEE-HERE-MSG
|
||
|
CRLF
|
||
|
RTRUE
|
||
|
?CCL9: EQUAL? ADJ,W?NORTH \?CCL33
|
||
|
EQUAL? GL-PLACE-CUR,RM-MARYLEBONE-RD,RM-GREAT-RUSSELL-ST,RM-THREADNEEDLE-ST /?CTR32
|
||
|
EQUAL? GL-PLACE-CUR,RM-MONUMENT,RM-OUTSIDE-TRAITORS-GATE \?CCL33
|
||
|
?CTR32: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-GREAT-RUSSELL-ST,RM-THREADNEEDLE-ST,RM-MONUMENT \FALSE
|
||
|
PRINT K-SIGN-HERE-MSG
|
||
|
RTRUE
|
||
|
?CCL33: EQUAL? ADJ,W?EAST \?CCL45
|
||
|
EQUAL? GL-PLACE-CUR,RM-BROAD-SANCTUARY,RM-WHITEHALL \?CCL45
|
||
|
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-BROAD-SANCTUARY \FALSE
|
||
|
PRINT K-SIGN-HERE-MSG
|
||
|
RTRUE
|
||
|
?CCL45: EQUAL? ADJ,W?WEST \?CCL55
|
||
|
EQUAL? GL-PLACE-CUR,RM-221B-BAKER-ST,RM-TRAFALGAR-SQUARE,RM-PINCHIN-LANE /?CTR54
|
||
|
EQUAL? GL-PLACE-CUR,RM-SWAN-LANE \?CCL55
|
||
|
?CTR54: EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-SWAN-LANE \FALSE
|
||
|
PRINT K-SIGN-HERE-MSG
|
||
|
RTRUE
|
||
|
?CCL55: ZERO? ADJ \?CND66
|
||
|
RANDOM 4 >ADJ
|
||
|
EQUAL? ADJ,1 \?CCL70
|
||
|
SET 'ADJ,W?NORTH
|
||
|
JUMP ?CND66
|
||
|
?CCL70: EQUAL? ADJ,2 \?CCL72
|
||
|
SET 'ADJ,W?SOUTH
|
||
|
JUMP ?CND66
|
||
|
?CCL72: EQUAL? ADJ,3 \?CCL74
|
||
|
SET 'ADJ,W?EAST
|
||
|
JUMP ?CND66
|
||
|
?CCL74: SET 'ADJ,W?WEST
|
||
|
?CND66: FSET? GL-PLACE-CUR,FL-INDOORS \?CCL77
|
||
|
EQUAL? ADJ,W?NORTH \?CCL80
|
||
|
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \FALSE
|
||
|
PRINTI "There is a large fireplace set into the north wall."
|
||
|
RTRUE
|
||
|
?CCL80: EQUAL? ADJ,W?SOUTH \FALSE
|
||
|
EQUAL? GL-PRSA,V?EXAMINE,V?LOOK-ON \FALSE
|
||
|
EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \FALSE
|
||
|
PRINTR "There is a patriotic ""V.R."" spelled out in bullet marks on the south wall."
|
||
|
?CCL77: PRINT K-NOT-SEE-HERE-MSG
|
||
|
CRLF
|
||
|
RTRUE
|
||
|
|
||
|
|
||
|
.FUNCT RT-AC-TH-CROWDS,CONTEXT
|
||
|
FSET? GL-PLACE-CUR,FL-INDOORS \?PRD4
|
||
|
EQUAL? GL-PLACE-CUR,RM-BRITISH-MUSEUM \?CCL2
|
||
|
?PRD4: FSET? GL-PLACE-CUR,FL-NO-CROWDS \?CND1
|
||
|
?CCL2: PRINTR "At last you've found some respite from the crowds."
|
||
|
?CND1: EQUAL? CONTEXT,K-M-DESCFCN \?CCL9
|
||
|
EQUAL? GL-PLACE-CUR,RM-FLEET-STREET \?CCL12
|
||
|
CALL1 RT-TIME-OF-DAY
|
||
|
ZERO? STACK \?CCL15
|
||
|
PRINTR "They're all inside, hard at work."
|
||
|
?CCL15: PRINTR "They hurry past you, intent on getting to their offices."
|
||
|
?CCL12: CALL1 RT-TIME-OF-DAY
|
||
|
ZERO? STACK \?CCL17
|
||
|
PRINTR "There are no crowds here. They're all asleep."
|
||
|
?CCL17: EQUAL? GL-PLACE-CUR,RM-TOTTENHAM-COURT-RD,RM-OXFORD-ST \?CCL19
|
||
|
PRINTI "The shoppers don't appear happy that the shops are closed."
|
||
|
RTRUE
|
||
|
?CCL19: EQUAL? GL-PLACE-CUR,RM-TRAFALGAR-SQUARE \?CCL21
|
||
|
PRINTR "The people are happily feeding the pigeons."
|
||
|
?CCL21: EQUAL? GL-PLACE-CUR,RM-GROSVENOR-PLACE \?CCL23
|
||
|
PRINTR "The people are anxiously consulting their sight-seeing maps."
|
||
|
?CCL23: EQUAL? GL-PLACE-CUR,RM-THE-STRAND \?CCL25
|
||
|
CALL1 RT-TIME-OF-DAY
|
||
|
EQUAL? STACK,3 \?CCL28
|
||
|
PRINTR "The theatre goers are happily discussing the evening's entertainment."
|
||
|
?CCL28: PRINTR "The crowds are trying to select a show to attend this evening."
|
||
|
?CCL25: CALL1 RT-TIME-OF-DAY
|
||
|
EQUAL? STACK,2 \?CCL31
|
||
|
PRINTR "They surge around you, excited about the sight-seeing they have planned for today."
|
||
|
?CCL31: CALL1 RT-TIME-OF-DAY
|
||
|
EQUAL? STACK,3 \?CCL33
|
||
|
PRINTR "They nearly trample you in their eagerness to get back to their hotels before darkness falls."
|
||
|
?CCL33: CALL1 RT-TIME-OF-DAY
|
||
|
EQUAL? STACK,1 \TRUE
|
||
|
PRINTR "They surge around you, intent on their sight-seeing."
|
||
|
?CCL9: CALL1 RT-TIME-OF-DAY
|
||
|
ZERO? STACK \FALSE
|
||
|
PRINTR "There are no tourists here. They're all asleep."
|
||
|
|
||
|
.ENDI
|