.FUNCT RT-AC-CH-HANSOM-CABBIE,CONTEXT EQUAL? CONTEXT,K-M-WINNER \?CCL3 EQUAL? GL-PRSA,V?WAIT \?CCL6 SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE PRINTI """Right-o.""" CRLF SET 'TH-HANSOM-CAB-AUX2,1 ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,30,0 CALL RT-ALARM-SET-REL,RT-I-HANSOM-LEAVE,STACK RSTACK ?CCL6: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL8 CALL1 RT-CF-TH-HANSOM-CAB RSTACK ?CCL8: EQUAL? GL-PRSA,V?HELLO,V?GOODBYE,V?THANK \?CCL10 SET 'GL-WINNER,CH-PLAYER CALL RT-PERFORM,GL-PRSA,CH-HANSOM-CABBIE RSTACK ?CCL10: PRINTR """Sorry, guv. All I does is drives a cab.""" ?CCL3: EQUAL? GL-PRSA,V?PAY \?PRD14 ZERO? GL-NOW-PRSI? /?CTR11 ?PRD14: EQUAL? GL-PRSA,V?GIVE \?CCL12 ZERO? GL-NOW-PRSI? /?CCL12 FSET? GL-PRSO,FL-MONEY \?CCL12 ?CTR11: PRINTR """No thanks, guv'nor. It'll go on Mr 'Olmes's monthly account.""" ?CCL12: EQUAL? GL-PRSA,V?TELL \?CCL21 ZERO? GL-NOW-PRSI? \?CCL21 ZERO? GL-P-CONT \FALSE ?CCL21: EQUAL? GL-PRSA,V?HELLO \?CCL26 PRINTR """'Ello.""" ?CCL26: EQUAL? GL-PRSA,V?GOODBYE \?CCL28 PRINTR """Ta ta.""" ?CCL28: EQUAL? GL-PRSA,V?THANK \?CCL30 PRINTR """Anytime, mate.""" ?CCL30: CALL1 RT-TALK-VERB? ZERO? STACK /FALSE PRINTR """Sorry, sir. No time to chat.""" .FUNCT RT-AC-CH-GROWLER-CABBIE,CONTEXT EQUAL? CONTEXT,K-M-WINNER \?CCL3 EQUAL? GL-PRSA,V?WAIT \?CCL6 SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE PRINTR " says brightly, ""Okay.""" ?CCL6: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL8 CALL1 RT-CF-TH-GROWLER-CAB RSTACK ?CCL8: ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE PRINTR " says brightly, ""Hello,"" and looks at you expectantly." ?CCL3: EQUAL? GL-PRSA,V?PAY \?PRD12 ZERO? GL-NOW-PRSI? /?CTR9 ?PRD12: EQUAL? GL-PRSA,V?GIVE \?CCL10 ZERO? GL-NOW-PRSI? /?CCL10 FSET? GL-PRSO,FL-MONEY \?CCL10 ?CTR9: ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE PRINTR " says brightly, ""No thanks. I'm not in it for the money. I just like to meet new people.""" ?CCL10: EQUAL? GL-PRSA,V?TELL \?CCL19 ZERO? GL-NOW-PRSI? \?CCL19 ZERO? GL-P-CONT \FALSE ?CCL19: CALL1 RT-TALK-VERB? ZERO? STACK /FALSE ICALL2 RT-CTHEO-PRINT,CH-GROWLER-CABBIE PRINTR " says brightly, ""Hello,"" and looks at you expectantly." .FUNCT RT-GET-ROOM-ID,HERE,TBL INTBL? HERE,CAB-ROOM-IDS,CAB-ROOM-IDS-LEN,1 >TBL \FALSE LESS? CAB-ROOM-IDS,0 \?CCL6 SUB TBL,CAB-ROOM-IDS ADD STACK,1 RSTACK ?CCL6: SUB CAB-ROOM-IDS,TBL ADD STACK,1 RSTACK .FUNCT RT-CAB-DIST,HERE,THERE,NUM1,NUM2,PTR,TMP CALL2 RT-GET-ROOM-ID,HERE >NUM1 CALL2 RT-GET-ROOM-ID,THERE >NUM2 EQUAL? HERE,THERE /FALSE EQUAL? NUM1,NUM2 /FALSE LESS? NUM1,NUM2 \?CND5 SET 'TMP,NUM1 SET 'NUM1,NUM2 SET 'NUM2,TMP ?CND5: SUB NUM1,2 >NUM1 ?PRG7: LESS? NUM1,1 /?REP8 ADD PTR,NUM1 >PTR DEC 'NUM1 JUMP ?PRG7 ?REP8: SUB NUM2,1 ADD PTR,STACK >PTR GETB GL-CAB-DIST-TBL,PTR RSTACK .FUNCT RT-I-CAB-ARRIVE,CAB,PLACE,NUM,SCORE,AUX1 SET 'NUM,TH-CAB-WHISTLE-AUX1 SET 'PLACE,TH-CAB-WHISTLE-AUX2 SET 'TH-CAB-WHISTLE-AUX1,0 SET 'TH-CAB-WHISTLE-AUX2,0 EQUAL? GL-PLACE-CUR,PLACE \FALSE EQUAL? GL-PRSA,V?WALK /FALSE EQUAL? NUM,1 \?CCL8 SET 'CAB,TH-GROWLER-CAB SET 'SCORE,0 CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0 ICALL RT-ALARM-SET-REL,RT-I-GROWLER-LEAVE,STACK ICALL2 RT-REMOVE-ALL,TH-GROWLER-CAB MOVE CH-GROWLER-CABBIE,TH-GROWLER-CAB FSET CH-GROWLER-CABBIE,FL-SEEN JUMP ?CND6 ?CCL8: EQUAL? NUM,2 \FALSE SET 'CAB,TH-HANSOM-CAB SET 'SCORE,5 CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0 ICALL RT-ALARM-SET-REL,RT-I-HANSOM-LEAVE,STACK ICALL2 RT-REMOVE-ALL,TH-HANSOM-CAB MOVE CH-HANSOM-CABBIE,TH-HANSOM-CAB FSET CH-HANSOM-CABBIE,FL-SEEN ?CND6: ZERO? SOUND-QUEUED? \?CND11 SET 'CAB-RAMP,2 ICALL1 RT-S-CAB-ARRIVES ?CND11: CRLF PRINTI "A " ICALL2 DPRINT,CAB PRINTI " pulls up beside you." CRLF MOVE CAB,GL-PLACE-CUR EQUAL? CAB,TH-HANSOM-CAB \?CCL15 SET 'AUX1,TH-HANSOM-CAB-AUX1 JUMP ?CND13 ?CCL15: SET 'AUX1,TH-GROWLER-CAB-AUX1 ?CND13: ZERO? AUX1 \TRUE EQUAL? CAB,TH-HANSOM-CAB \?CCL20 SET 'TH-HANSOM-CAB-AUX1,1 JUMP ?CND18 ?CCL20: SET 'TH-GROWLER-CAB-AUX1,1 ?CND18: ZERO? SCORE /TRUE ICALL2 RT-UPDATE-SCORE,SCORE RTRUE .FUNCT RT-I-HANSOM-LEAVE EQUAL? GL-PLACE-CUR,RM-VICTORIA-SQUARE /?CND1 CALL2 RT-VISIBLE?,TH-HANSOM-CAB ZERO? STACK /?CND3 ICALL1 RT-S-CAB-LEAVES ICALL2 RT-CTHEO-PRINT,TH-HANSOM-CAB PRINTI " drives off." CRLF ?CND3: MOVE TH-HANSOM-CAB,RM-VICTORIA-SQUARE ICALL2 RT-REMOVE-ALL,TH-HANSOM-CAB MOVE CH-HANSOM-CABBIE,TH-HANSOM-CAB CALL1 RT-IS-LIT? >GL-NOW-LIT? ?CND1: SET 'TH-HANSOM-CAB-AUX2,0 RFALSE .FUNCT RT-I-HANSOM-TO? IN? CH-PLAYER,TH-HANSOM-CAB \FALSE PRINTI """Where to mister?""" CRLF CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,1,0 CALL RT-ALARM-SET-REL,RT-I-HANSOM-TO?,STACK RSTACK .FUNCT RT-I-GROWLER-LEAVE EQUAL? GL-PLACE-CUR,RM-OXFORD-ST /FALSE CALL2 RT-VISIBLE?,TH-GROWLER-CAB ZERO? STACK /?CND3 ICALL1 RT-S-CAB-LEAVES ICALL2 RT-CTHEO-PRINT,TH-GROWLER-CAB PRINTI " drives off." CRLF ?CND3: MOVE TH-GROWLER-CAB,RM-OXFORD-ST ICALL2 RT-REMOVE-ALL,TH-GROWLER-CAB MOVE CH-GROWLER-CABBIE,TH-GROWLER-CAB CALL1 RT-IS-LIT? >GL-NOW-LIT? RFALSE .FUNCT RT-I-GROWLER-TO? IN? CH-PLAYER,TH-GROWLER-CAB \FALSE CRLF PRINTI "Suddenly the cabbie - who seems to have a low threshold of boredom - pipes up and says, ""I know where we can go!""" CRLF CRLF PRINT K-WILD-RIDE-MSG CRLF ICALL1 RT-MOVE-GROWLER CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0 ICALL RT-ALARM-SET-REL,RT-I-GROWLER-TO?,STACK CRLF CALL1 RT-DESC-ALL RSTACK .FUNCT RT-MOVE-HANSOM,ROOM,MIN EQUAL? GL-PLACE-CUR,ROOM \?CCL3 PRINTR """We're already here, guv.""" ?CCL3: ZERO? ROOM /FALSE SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE CALL RT-CAB-DIST,GL-PLACE-CUR,ROOM MUL STACK,K-HANSOM-TIME >MIN PRINTI """Right-o.""" CRLF CRLF MOVE TH-HANSOM-CAB,ROOM SET 'GL-PLACE-PRV,GL-PLACE-CUR SET 'GL-PLACE-CUR,ROOM IN? CH-PLAYER,TH-HANSOM-CAB \?CCL8 SET 'GL-PUPPY-MSG?,FALSE-VALUE EQUAL? ROOM,RM-COVENT-GARDEN \?CCL11 SET 'LOOPING?,S-CROWD SET 'LOOP-VOL,8 JUMP ?CND9 ?CCL11: SET 'LOOPING?,FALSE-VALUE ?CND9: ICALL SOUNDS,S-HORSE,S-START,4,6 PRINTI "The cab speeds through the streets, " CALL1 RT-TIME-OF-DAY EQUAL? STACK,1,2,3 \?CND12 PRINTI "deftly weaving in and out of the jubilee traffic and " ?CND12: PRINTI "whizzing past famous landmarks. Only a few minutes later, you arrive at your destination." CRLF CRLF ICALL1 RT-DESC-ALL JUMP ?CND6 ?CCL8: ICALL1 RT-S-CAB-LEAVES PRINTI "The cab drives off." CRLF CALL1 RT-IS-LIT? >GL-NOW-LIT? CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,30,0 ICALL RT-ALARM-SET-REL,RT-I-HANSOM-LEAVE,STACK ?CND6: ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE ICALL RT-CLOCK-JMP,0,MIN,0 RTRUE .FUNCT RT-MOVE-GROWLER,ROOM,NUM,MIN RANDOM 37 >NUM EQUAL? NUM,1 \?CCL3 SET 'ROOM,RM-AUDLEY-ST JUMP ?CND1 ?CCL3: EQUAL? NUM,2 \?CCL5 SET 'ROOM,RM-221B-BAKER-ST JUMP ?CND1 ?CCL5: EQUAL? NUM,3 \?CCL7 SET 'ROOM,RM-BIRDCAGE-WALK JUMP ?CND1 ?CCL7: EQUAL? NUM,5 \?CCL9 SET 'ROOM,RM-BROAD-SANCTUARY JUMP ?CND1 ?CCL9: EQUAL? NUM,6 \?CCL11 SET 'ROOM,RM-BUCKINGHAM-PALACE-RD JUMP ?CND1 ?CCL11: EQUAL? NUM,7 \?CCL13 SET 'ROOM,RM-CHEAPSIDE JUMP ?CND1 ?CCL13: EQUAL? NUM,8 \?CCL15 SET 'ROOM,RM-COVENT-GARDEN JUMP ?CND1 ?CCL15: EQUAL? NUM,9 \?CCL17 SET 'ROOM,RM-THE-EMBANKMENT JUMP ?CND1 ?CCL17: EQUAL? NUM,10 \?CCL19 SET 'ROOM,RM-FLEET-STREET JUMP ?CND1 ?CCL19: EQUAL? NUM,11 \?CCL21 SET 'ROOM,RM-GREAT-RUSSELL-ST JUMP ?CND1 ?CCL21: EQUAL? NUM,12 \?CCL23 SET 'ROOM,RM-GROSVENOR-PLACE JUMP ?CND1 ?CCL23: EQUAL? NUM,13 \?CCL25 SET 'ROOM,RM-HYDE-PARK-CORNER JUMP ?CND1 ?CCL25: EQUAL? NUM,14 \?CCL27 SET 'ROOM,RM-KENSINGTON-GARDENS JUMP ?CND1 ?CCL27: EQUAL? NUM,15 \?CCL29 SET 'ROOM,RM-KING-WILLIAM-ST JUMP ?CND1 ?CCL29: EQUAL? NUM,16 \?CCL31 SET 'ROOM,RM-LONDON-BRIDGE JUMP ?CND1 ?CCL31: EQUAL? NUM,17 \?CCL33 SET 'ROOM,RM-LOWER-THAMES-ST JUMP ?CND1 ?CCL33: EQUAL? NUM,18 \?CCL35 SET 'ROOM,RM-THE-MALL JUMP ?CND1 ?CCL35: EQUAL? NUM,19 \?CCL37 SET 'ROOM,RM-MARYLEBONE-RD JUMP ?CND1 ?CCL37: EQUAL? NUM,20 \?CCL39 SET 'ROOM,RM-MONUMENT JUMP ?CND1 ?CCL39: EQUAL? NUM,21 \?CCL41 SET 'ROOM,RM-NEW-OXFORD-ST JUMP ?CND1 ?CCL41: EQUAL? NUM,22 \?CCL43 SET 'ROOM,RM-OXFORD-ST JUMP ?CND1 ?CCL43: EQUAL? NUM,23 \?CCL45 SET 'ROOM,RM-ORCHARD-ST JUMP ?CND1 ?CCL45: EQUAL? NUM,24 \?CCL47 SET 'ROOM,RM-PARLIAMENT-SQUARE JUMP ?CND1 ?CCL47: EQUAL? NUM,25 \?CCL49 SET 'ROOM,RM-PINCHIN-LANE JUMP ?CND1 ?CCL49: EQUAL? NUM,26 \?CCL51 SET 'ROOM,RM-QUEENS-GARDENS JUMP ?CND1 ?CCL51: EQUAL? NUM,27 \?CCL53 SET 'ROOM,RM-ST-GILES-CIRCUS JUMP ?CND1 ?CCL53: EQUAL? NUM,28 \?CCL55 SET 'ROOM,RM-THE-STRAND JUMP ?CND1 ?CCL55: EQUAL? NUM,29 \?CCL57 SET 'ROOM,RM-THREADNEEDLE-ST JUMP ?CND1 ?CCL57: EQUAL? NUM,30 \?CCL59 SET 'ROOM,RM-TOTTENHAM-COURT-RD JUMP ?CND1 ?CCL59: EQUAL? NUM,31 \?CCL61 SET 'ROOM,RM-TOWER-ENTRANCE JUMP ?CND1 ?CCL61: EQUAL? NUM,32 \?CCL63 SET 'ROOM,RM-TRAFALGAR-SQUARE JUMP ?CND1 ?CCL63: EQUAL? NUM,33 \?CCL65 SET 'ROOM,RM-UPPER-THAMES-ST JUMP ?CND1 ?CCL65: EQUAL? NUM,34 \?CCL67 SET 'ROOM,RM-VICTORIA-STREET JUMP ?CND1 ?CCL67: EQUAL? NUM,35 \?CCL69 SET 'ROOM,RM-VICTORIA-SQUARE JUMP ?CND1 ?CCL69: EQUAL? NUM,36 \?CCL71 SET 'ROOM,RM-WHITEHALL JUMP ?CND1 ?CCL71: EQUAL? NUM,37 \?CCL73 SET 'ROOM,RM-YORK-PLACE JUMP ?CND1 ?CCL73: PRINTI "This is odd..." CRLF CRLF SET 'ROOM,RM-KENSINGTON-GARDENS ?CND1: CALL RT-CAB-DIST,GL-PLACE-CUR,ROOM MUL STACK,K-GROWLER-TIME >MIN EQUAL? ROOM,RM-COVENT-GARDEN \?CCL76 SET 'LOOPING?,S-CROWD SET 'LOOP-VOL,8 JUMP ?CND74 ?CCL76: SET 'LOOPING?,FALSE-VALUE ?CND74: ICALL SOUNDS,S-HORSE,S-START,4,6 MOVE TH-GROWLER-CAB,ROOM SET 'GL-PLACE-PRV,GL-PLACE-CUR SET 'GL-PLACE-CUR,ROOM SET 'GL-PUPPY-MSG?,FALSE-VALUE CALL RT-CLOCK-JMP,0,MIN,0 RSTACK .FUNCT RT-CF-TH-HANSOM-CAB,CONTEXT,WRD,ADJ IN? CH-PLAYER,TH-HANSOM-CAB \?CND1 SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE ?CND1: EQUAL? GL-PRSA,V?WALK \?CCL5 EQUAL? GL-P-WALK-DIR,P?OUT \?CCL5 CALL RT-PERFORM,V?EXIT,TH-HANSOM-CAB RSTACK ?CCL5: EQUAL? GL-PRSA,V?WALK \?PRD11 EQUAL? GL-WINNER,CH-PLAYER /?CTR8 ?PRD11: EQUAL? GL-PRSA,V?ENTER \?CCL9 EQUAL? GL-PRSO,TH-HANSOM-CAB /?CCL9 ?CTR8: ICALL1 RT-CYOU-MSG ICALL RT-WOULD-HAVE-TO-MSG,STR?797,TH-HANSOM-CAB PRINTR " first." ?CCL9: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL17 GET GL-P-NAMW,0 >WRD GET GL-P-ADJW,0 >ADJ EQUAL? GL-PRSO,RM-AUDLEY-ST \?CCL20 CALL2 RT-MOVE-HANSOM,RM-AUDLEY-ST RSTACK ?CCL20: EQUAL? GL-PRSO,RM-221B-BAKER-ST,RM-ENTRY-HALL \?CCL22 CALL2 RT-MOVE-HANSOM,RM-221B-BAKER-ST RSTACK ?CCL22: EQUAL? GL-PRSO,RM-BIRDCAGE-WALK \?CCL24 CALL2 RT-MOVE-HANSOM,RM-BIRDCAGE-WALK RSTACK ?CCL24: EQUAL? GL-PRSO,RM-BROAD-SANCTUARY,LG-TOMBS-ABBEY \?CCL26 CALL2 RT-MOVE-HANSOM,RM-BROAD-SANCTUARY RSTACK ?CCL26: EQUAL? GL-PRSO,RM-BUCKINGHAM-PALACE-RD \?CCL28 CALL2 RT-MOVE-HANSOM,RM-BUCKINGHAM-PALACE-RD RSTACK ?CCL28: EQUAL? GL-PRSO,RM-CHEAPSIDE \?CCL30 CALL2 RT-MOVE-HANSOM,RM-CHEAPSIDE RSTACK ?CCL30: EQUAL? GL-PRSO,RM-COVENT-GARDEN \?CCL32 CALL2 RT-MOVE-HANSOM,RM-COVENT-GARDEN RSTACK ?CCL32: EQUAL? GL-PRSO,RM-THE-EMBANKMENT,LG-WATER \?CCL34 CALL2 RT-MOVE-HANSOM,RM-THE-EMBANKMENT RSTACK ?CCL34: EQUAL? GL-PRSO,RM-FLEET-STREET \?CCL36 CALL2 RT-MOVE-HANSOM,RM-FLEET-STREET RSTACK ?CCL36: EQUAL? GL-PRSO,RM-GREAT-RUSSELL-ST,RM-BRITISH-MUSEUM \?CCL38 CALL2 RT-MOVE-HANSOM,RM-GREAT-RUSSELL-ST RSTACK ?CCL38: EQUAL? GL-PRSO,RM-GROSVENOR-PLACE \?CCL40 CALL2 RT-MOVE-HANSOM,RM-GROSVENOR-PLACE RSTACK ?CCL40: EQUAL? GL-PRSO,RM-HYDE-PARK-CORNER \?CCL42 CALL2 RT-MOVE-HANSOM,RM-HYDE-PARK-CORNER RSTACK ?CCL42: EQUAL? GL-PRSO,RM-KENSINGTON-GARDENS \?CCL44 CALL2 RT-MOVE-HANSOM,RM-KENSINGTON-GARDENS RSTACK ?CCL44: EQUAL? GL-PRSO,RM-KING-WILLIAM-ST \?CCL46 CALL2 RT-MOVE-HANSOM,RM-KING-WILLIAM-ST RSTACK ?CCL46: EQUAL? GL-PRSO,RM-LONDON-BRIDGE \?CCL48 CALL2 RT-MOVE-HANSOM,RM-LONDON-BRIDGE RSTACK ?CCL48: EQUAL? GL-PRSO,RM-LOWER-THAMES-ST,RM-BAR-OF-GOLD,RM-SWAN-LANE \?CCL50 CALL2 RT-MOVE-HANSOM,RM-LOWER-THAMES-ST RSTACK ?CCL50: EQUAL? GL-PRSO,RM-THE-MALL \?CCL52 CALL2 RT-MOVE-HANSOM,RM-THE-MALL RSTACK ?CCL52: EQUAL? GL-PRSO,RM-MARYLEBONE-RD,RM-MADAME-TUSSAUDS \?CCL54 CALL2 RT-MOVE-HANSOM,RM-MARYLEBONE-RD RSTACK ?CCL54: EQUAL? WRD,W?MONUMENT \?PRD58 EQUAL? ADJ,FALSE-VALUE /?CTR55 ?PRD58: EQUAL? GL-PRSO,RM-MONUMENT \?CCL56 ?CTR55: CALL2 RT-MOVE-HANSOM,RM-MONUMENT RSTACK ?CCL56: EQUAL? GL-PRSO,RM-NEW-OXFORD-ST \?CCL62 CALL2 RT-MOVE-HANSOM,RM-NEW-OXFORD-ST RSTACK ?CCL62: EQUAL? WRD,W?STREET,W?ST \?PRD66 EQUAL? ADJ,W?OXFORD /?CTR63 ?PRD66: EQUAL? GL-PRSO,RM-OXFORD-ST \?CCL64 ?CTR63: CALL2 RT-MOVE-HANSOM,RM-OXFORD-ST RSTACK ?CCL64: EQUAL? GL-PRSO,RM-ORCHARD-ST \?CCL70 CALL2 RT-MOVE-HANSOM,RM-ORCHARD-ST RSTACK ?CCL70: EQUAL? GL-PRSO,RM-PARLIAMENT-SQUARE,RM-PARLIAMENT,TH-BELL \?CCL72 CALL2 RT-MOVE-HANSOM,RM-PARLIAMENT-SQUARE RSTACK ?CCL72: EQUAL? GL-PRSO,RM-PINCHIN-LANE,RM-SHERMANS-HOUSE \?CCL74 CALL2 RT-MOVE-HANSOM,RM-PINCHIN-LANE RSTACK ?CCL74: EQUAL? GL-PRSO,RM-QUEENS-GARDENS,RM-BUCKINGHAM-PALACE \?CCL76 CALL2 RT-MOVE-HANSOM,RM-QUEENS-GARDENS RSTACK ?CCL76: EQUAL? GL-PRSO,RM-ST-GILES-CIRCUS \?CCL78 CALL2 RT-MOVE-HANSOM,RM-ST-GILES-CIRCUS RSTACK ?CCL78: EQUAL? GL-PRSO,RM-THE-STRAND \?CCL80 CALL2 RT-MOVE-HANSOM,RM-THE-STRAND RSTACK ?CCL80: EQUAL? GL-PRSO,RM-THREADNEEDLE-ST,RM-BANK-OF-ENGLAND \?CCL82 CALL2 RT-MOVE-HANSOM,RM-THREADNEEDLE-ST RSTACK ?CCL82: EQUAL? GL-PRSO,RM-TOTTENHAM-COURT-RD \?CCL84 CALL2 RT-MOVE-HANSOM,RM-TOTTENHAM-COURT-RD RSTACK ?CCL84: EQUAL? WRD,W?TOWER /?CTR85 EQUAL? GL-PRSO,RM-TOWER-ENTRANCE,LG-TOWER,RM-DRAWBRIDGE \?CCL86 ?CTR85: CALL2 RT-MOVE-HANSOM,RM-TOWER-ENTRANCE RSTACK ?CCL86: EQUAL? GL-PRSO,RM-TRAFALGAR-SQUARE,RM-DIOGENES-CLUB \?CCL90 CALL2 RT-MOVE-HANSOM,RM-TRAFALGAR-SQUARE RSTACK ?CCL90: EQUAL? GL-PRSO,RM-UPPER-THAMES-ST \?CCL92 CALL2 RT-MOVE-HANSOM,RM-UPPER-THAMES-ST RSTACK ?CCL92: EQUAL? GL-PRSO,RM-VICTORIA-STREET \?CCL94 CALL2 RT-MOVE-HANSOM,RM-VICTORIA-STREET RSTACK ?CCL94: EQUAL? GL-PRSO,RM-VICTORIA-SQUARE \?CCL96 CALL2 RT-MOVE-HANSOM,RM-VICTORIA-SQUARE RSTACK ?CCL96: EQUAL? GL-PRSO,RM-WHITEHALL,RM-SCOTLAND-YARD \?CCL98 CALL2 RT-MOVE-HANSOM,RM-WHITEHALL RSTACK ?CCL98: EQUAL? GL-PRSO,RM-YORK-PLACE \FALSE CALL2 RT-MOVE-HANSOM,RM-YORK-PLACE RSTACK ?CCL17: EQUAL? GL-PRSA,V?STAND,V?STAND-ON,V?LEAP \?CCL102 PRINT K-ENOUGH-ROOM-MSG CRLF RTRUE ?CCL102: EQUAL? GL-PRSA,V?SIT \?CCL104 PRINTR "You're already seated." ?CCL104: CALL1 RT-TOUCH-VERB? ZERO? STACK /FALSE EQUAL? GL-PRSO,FALSE-VALUE,ROOMS /?CND107 IN? GL-PRSO,GLOBAL-OBJECTS /?CND107 CALL RT-META-IN?,GL-PRSO,TH-HANSOM-CAB ZERO? STACK \?CND107 ICALL1 RT-CYOU-MSG PRINTI "cannot reach " ICALL1 RT-THEO-PRINT PRINTR "." ?CND107: EQUAL? GL-PRSI,FALSE-VALUE,ROOMS /FALSE IN? GL-PRSI,GLOBAL-OBJECTS /FALSE FSET? GL-PRSI,FL-PERSON \?CCL119 IN? GL-PRSI,GL-PLACE-CUR /FALSE ?CCL119: CALL RT-META-IN?,GL-PRSI,TH-HANSOM-CAB ZERO? STACK \FALSE ICALL1 RT-CYOU-MSG PRINTI "cannot reach " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT RT-CF-TH-GROWLER-CAB,CONTEXT IN? CH-PLAYER,TH-GROWLER-CAB \?CND1 SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE ?CND1: EQUAL? GL-PRSA,V?WALK \?CCL5 EQUAL? GL-P-WALK-DIR,P?OUT \?CCL5 CALL RT-PERFORM,V?EXIT,TH-GROWLER-CAB RSTACK ?CCL5: EQUAL? GL-PRSA,V?WALK \?PRD11 EQUAL? GL-WINNER,CH-PLAYER /?CTR8 ?PRD11: EQUAL? GL-PRSA,V?ENTER \?CCL9 EQUAL? GL-PRSO,TH-GROWLER-CAB /?CCL9 ?CTR8: ICALL1 RT-CYOU-MSG ICALL RT-WOULD-HAVE-TO-MSG,STR?797,TH-GROWLER-CAB PRINTR " first." ?CCL9: EQUAL? GL-PRSA,V?DRIVE,V?WALK-TO \?CCL17 PRINTI """Oh good! I've never been THERE before.""" CRLF CRLF SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE ICALL2 RT-ALARM-CLR,RT-I-GROWLER-TO? ICALL2 RT-ALARM-CLR,RT-I-GROWLER-LEAVE ICALL1 RT-MOVE-GROWLER IN? CH-PLAYER,TH-GROWLER-CAB \?CCL20 SET 'GL-PUPPY-MSG?,FALSE-VALUE PRINT K-WILD-RIDE-MSG CRLF CRLF CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0 ICALL RT-ALARM-SET-REL,RT-I-GROWLER-TO?,STACK ICALL1 RT-DESC-ALL RTRUE ?CCL20: PRINTI "The cab drives off." CRLF CALL1 RT-IS-LIT? >GL-NOW-LIT? CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,30,0 ICALL RT-ALARM-SET-REL,RT-I-GROWLER-LEAVE,STACK RTRUE ?CCL17: EQUAL? GL-PRSA,V?STAND,V?STAND-ON,V?LEAP \?CCL22 PRINT K-ENOUGH-ROOM-MSG CRLF RTRUE ?CCL22: EQUAL? GL-PRSA,V?SIT \?CCL24 PRINTR "You're already seated." ?CCL24: CALL1 RT-TOUCH-VERB? ZERO? STACK /FALSE EQUAL? GL-PRSO,FALSE-VALUE,ROOMS /?CND27 IN? GL-PRSO,GLOBAL-OBJECTS /?CND27 CALL RT-META-IN?,GL-PRSO,TH-GROWLER-CAB ZERO? STACK \?CND27 ICALL1 RT-CYOU-MSG PRINTI "cannot reach " ICALL1 RT-THEO-PRINT PRINTR "." ?CND27: EQUAL? GL-PRSI,FALSE-VALUE,ROOMS /FALSE IN? GL-PRSI,GLOBAL-OBJECTS /FALSE CALL RT-META-IN?,GL-PRSI,TH-GROWLER-CAB ZERO? STACK \FALSE ICALL1 RT-CYOU-MSG PRINTI "cannot reach " ICALL1 RT-THEI-PRINT PRINTR "." .FUNCT RT-BLOW-WHISTLE,WHO,WHO2,L,?TMP1 LOC TH-HANSOM-CAB >?TMP1 LOC TH-GROWLER-CAB EQUAL? GL-PLACE-CUR,?TMP1,STACK \?CCL3 PRINT K-CAB-HERE-MSG CRLF RTRUE ?CCL3: PRINTI "Tweeeeeeeeee!" CRLF FSET? GL-PLACE-CUR,FL-INDOORS \?CCL6 EQUAL? GL-PLACE-CUR,RM-HOLMES-STUDY \?CND7 FSET? CH-HOLMES,FL-ASLEEP \?CND7 PRINT K-HOLMES-DISTRACTION-MSG CRLF RTRUE ?CND7: CALL1 RT-ANYONE-HERE? >WHO ZERO? WHO /TRUE LOC WHO >L REMOVE WHO CALL1 RT-ANYONE-HERE? >WHO2 ZERO? WHO2 /?CCL15 PRINTI "Everyone holds their hands to their " JUMP ?CND13 ?CCL15: ICALL2 RT-CTHEO-PRINT,WHO PRINTI " hold" ICALL2 RT-S-NOS-MSG,WHO PRINTC 32 ICALL2 RT-YOUR-MSG,WHO PRINTI "hands to " ICALL2 RT-YOUR-MSG,WHO ?CND13: MOVE WHO,L PRINTI "ears and glare" ICALL2 RT-S-NOS-MSG,WHO PRINTR " at you." ?CCL6: EQUAL? GL-PLACE-CUR,RM-TOWER-GREEN,RM-OUTER-WARD,RM-BYWARD-TOWER /TRUE EQUAL? GL-PLACE-CUR,RM-INSIDE-TRAITORS-GATE,RM-OUTSIDE-TRAITORS-GATE,RM-DRAWBRIDGE /TRUE EQUAL? GL-PLACE-CUR,RM-THAMES-ONE,RM-THAMES-TWO,RM-THAMES-THREE /TRUE EQUAL? GL-PLACE-CUR,RM-THAMES-FOUR,RM-THAMES-FIVE,RM-SWAN-LANE /TRUE INC 'TH-CAB-WHISTLE-AUX1 SET 'TH-CAB-WHISTLE-AUX2,GL-PLACE-CUR CALL2 RT-ALARM-SET?,RT-I-CAB-ARRIVE ZERO? STACK \TRUE CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,1,0 ICALL RT-ALARM-SET-REL,RT-I-CAB-ARRIVE,STACK RTRUE .FUNCT RT-AC-TH-HANSOM-CAB,CONTEXT EQUAL? CONTEXT,K-M-DESCFCN \?CCL3 PRINTR "It is a small cab with two wheels and room for only two persons, drawn by a single horse." ?CCL3: EQUAL? GL-PRSA,V?ENTER \?CCL5 EQUAL? GL-PRSO,ROOMS,TH-HANSOM-CAB \?CCL5 FSET? TH-SUIT-OF-ARMOUR,FL-WORN \?CCL10 PRINT K-HEAVY-ARMOUR-MSG CRLF RTRUE ?CCL10: IN? GL-WINNER,TH-HANSOM-CAB /FALSE MOVE GL-WINNER,TH-HANSOM-CAB ZERO? GL-PUPPY /?CCL15 EQUAL? GL-WINNER,CH-PLAYER \?CCL15 MOVE GL-PUPPY,TH-HANSOM-CAB PRINTI "You and " ICALL2 RT-THEO-PRINT,GL-PUPPY PRINTI " get " JUMP ?CND13 ?CCL15: ICALL RT-CYOU-MSG,STR?753,STR?754 ?CND13: FSET TH-HANSOM-CAB,FL-NODESC ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE SET 'TH-HANSOM-CAB-AUX2,0 SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE PRINTR "into the cab." ?CCL5: EQUAL? GL-PRSA,V?EXIT \?CCL19 EQUAL? GL-PRSO,ROOMS,TH-HANSOM-CAB \?CCL19 IN? CH-PLAYER,TH-HANSOM-CAB \FALSE MOVE GL-WINNER,GL-PLACE-CUR ZERO? GL-PUPPY /?CCL27 EQUAL? GL-WINNER,CH-PLAYER \?CCL27 MOVE GL-PUPPY,GL-PLACE-CUR PRINTI "You and " ICALL2 RT-THEO-PRINT,GL-PUPPY PRINTI " get " JUMP ?CND25 ?CCL27: ICALL RT-CYOU-MSG,STR?753,STR?754 ?CND25: PRINTI "out of the cab." FCLEAR TH-HANSOM-CAB,FL-NODESC ZERO? TH-HANSOM-CAB-AUX2 \?CND30 IN? CH-PLAYER,TH-HANSOM-CAB /?CND30 ZERO? GL-PUPPY /?PRD35 IN? GL-PUPPY,TH-HANSOM-CAB /?CND30 ?PRD35: EQUAL? GL-PLACE-CUR,RM-VICTORIA-SQUARE /?CND30 PRINTI " After" ICALL RT-YOU-MSG,STR?753,STR?754 PRINTI "out, it drives off." ICALL1 RT-S-CAB-LEAVES MOVE TH-HANSOM-CAB,RM-VICTORIA-SQUARE ICALL2 RT-REMOVE-ALL,TH-HANSOM-CAB MOVE CH-HANSOM-CABBIE,TH-HANSOM-CAB ICALL2 RT-ALARM-CLR,RT-I-HANSOM-LEAVE CALL1 RT-IS-LIT? >GL-NOW-LIT? ?CND30: SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE CRLF RTRUE ?CCL19: EQUAL? GL-PRSA,V?LOOK-ON \?CCL39 PRINTR "There is a cab driver sitting on the hansom." ?CCL39: EQUAL? GL-PRSA,V?TAKE,V?PUSH-TO \?CCL41 ZERO? GL-NOW-PRSI? \?CCL41 PRINT K-TAKE-CAB-MSG CRLF RETURN 2 ?CCL41: EQUAL? GL-PRSA,V?SHOOT \FALSE CALL1 RT-WASTE-OF-BULLETS-MSG RSTACK .FUNCT RT-AC-TH-GROWLER-CAB,CONTEXT EQUAL? CONTEXT,K-M-DESCFCN \?CCL3 PRINTR "It is a large cab with four wheels and room for four persons, drawn by a single horse." ?CCL3: EQUAL? GL-PRSA,V?ENTER \?CCL5 EQUAL? GL-PRSO,ROOMS,TH-GROWLER-CAB \?CCL5 FSET? TH-SUIT-OF-ARMOUR,FL-WORN \?CCL10 PRINT K-HEAVY-ARMOUR-MSG CRLF RTRUE ?CCL10: IN? GL-WINNER,TH-GROWLER-CAB /FALSE MOVE GL-WINNER,TH-GROWLER-CAB ZERO? GL-PUPPY /?CCL15 EQUAL? GL-WINNER,CH-PLAYER \?CCL15 MOVE GL-PUPPY,TH-GROWLER-CAB PRINTI "You and " ICALL2 RT-THEO-PRINT,GL-PUPPY PRINTI " get " JUMP ?CND13 ?CCL15: ICALL RT-CYOU-MSG,STR?753,STR?754 ?CND13: FSET TH-GROWLER-CAB,FL-NODESC ICALL2 RT-ALARM-CLR,RT-I-GROWLER-LEAVE CALL RT-DO-CLOCK-SET,GL-TIME-PARM,0,5,0 ICALL RT-ALARM-SET-REL,RT-I-GROWLER-TO?,STACK SET 'GL-WHERE-TO-PROMPT?,TRUE-VALUE SET 'GL-WHERE-TO-ORPH?,TRUE-VALUE PRINTR "into the cab." ?CCL5: EQUAL? GL-PRSA,V?EXIT \?CCL19 EQUAL? GL-PRSO,ROOMS,TH-GROWLER-CAB \?CCL19 IN? CH-PLAYER,TH-GROWLER-CAB \FALSE MOVE GL-WINNER,GL-PLACE-CUR ZERO? GL-PUPPY /?CCL27 EQUAL? GL-WINNER,CH-PLAYER \?CCL27 MOVE GL-PUPPY,GL-PLACE-CUR PRINTI "You and " ICALL2 RT-THEO-PRINT,GL-PUPPY PRINTI " get " JUMP ?CND25 ?CCL27: ICALL RT-CYOU-MSG,STR?753,STR?754 ?CND25: PRINTI "out of the cab." FCLEAR TH-GROWLER-CAB,FL-NODESC IN? CH-PLAYER,TH-GROWLER-CAB /?CND30 ZERO? GL-PUPPY /?PRD34 IN? GL-PUPPY,TH-GROWLER-CAB /?CND30 ?PRD34: EQUAL? GL-PLACE-CUR,RM-OXFORD-ST /?CND30 PRINTI " After" ICALL RT-YOU-MSG,STR?753,STR?754 PRINTI "out, it drives off." ICALL1 RT-S-CAB-LEAVES MOVE TH-GROWLER-CAB,RM-OXFORD-ST ICALL2 RT-REMOVE-ALL,TH-GROWLER-CAB MOVE CH-GROWLER-CABBIE,TH-GROWLER-CAB ICALL2 RT-ALARM-CLR,RT-I-GROWLER-LEAVE ICALL2 RT-ALARM-CLR,RT-I-GROWLER-TO? CALL1 RT-IS-LIT? >GL-NOW-LIT? ?CND30: SET 'GL-WHERE-TO-PROMPT?,FALSE-VALUE SET 'GL-WHERE-TO-ORPH?,FALSE-VALUE CRLF RTRUE ?CCL19: EQUAL? GL-PRSA,V?LOOK-ON \?CCL38 PRINTR "There is a cab driver sitting on the growler." ?CCL38: EQUAL? GL-PRSA,V?TAKE,V?PUSH-TO \?CCL40 ZERO? GL-NOW-PRSI? \?CCL40 PRINT K-TAKE-CAB-MSG CRLF RETURN 2 ?CCL40: EQUAL? GL-PRSA,V?SHOOT \FALSE CALL1 RT-WASTE-OF-BULLETS-MSG RSTACK .FUNCT RT-AC-TH-CAB-WHISTLE EQUAL? GL-PRSA,V?BLOW-INTO \?CCL3 ZERO? GL-NOW-PRSI? \?CCL3 CALL1 RT-BLOW-WHISTLE RSTACK ?CCL3: EQUAL? GL-PRSA,V?CALL \?CCL7 ZERO? GL-NOW-PRSI? /?CCL7 EQUAL? GL-PRSO,TH-HANSOM-CAB \?CCL12 ICALL1 RT-BLOW-WHISTLE CALL2 RT-ALARM-SET?,RT-I-CAB-ARRIVE ZERO? STACK /TRUE ICALL RT-DO-CLOCK-SET,GL-TIME-UPDT-INC,0,2,0 ICALL1 RT-BLOW-WHISTLE RTRUE ?CCL12: EQUAL? GL-PRSO,TH-GROWLER-CAB \?CCL16 ICALL1 RT-BLOW-WHISTLE CALL2 RT-ALARM-SET?,RT-I-CAB-ARRIVE ZERO? STACK /TRUE ICALL RT-DO-CLOCK-SET,GL-TIME-UPDT-INC,0,2,0 RTRUE ?CCL16: GET GL-P-NAMW,0 EQUAL? STACK,W?CAB \?CCL20 CALL1 RT-BLOW-WHISTLE RSTACK ?CCL20: ICALL1 RT-CYOU-MSG PRINTI "can't " PRINTB GL-P-PRSA-WORD PRINTC 32 ICALL1 RT-A-PRINT PRINTI " with " ICALL1 RT-THEI-PRINT PRINTR "." ?CCL7: EQUAL? GL-PRSA,V?SHOOT \FALSE CALL1 RT-WASTE-OF-BULLETS-MSG RSTACK .ENDI