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

824 lines
23 KiB
Plaintext

.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