.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