1345 lines
34 KiB
Plaintext
1345 lines
34 KiB
Plaintext
|
|
|
|
.FUNCT LETTER-F
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
|
|
FSET? LETTER,WETBIT \?ELS10
|
|
CALL WET-PAPER
|
|
RTRUE
|
|
?ELS10: PRINTR "The letter looks exactly like the letter in your exquisitely designed game package."
|
|
|
|
|
|
.FUNCT PHOTO-F
|
|
EQUAL? PRSA,V?EXAMINE,V?READ \FALSE
|
|
FSET? PHOTO,WETBIT \?CND6
|
|
CALL WET-PAPER
|
|
RTRUE
|
|
?CND6: FSET? PHOTO,READBIT /?CND9
|
|
FSET PHOTO,READBIT
|
|
?CND9: PRINTR "The photo looks exactly like the one that came in your game package."
|
|
|
|
|
|
.FUNCT BUCK-F,OARG=0
|
|
ZERO? OARG /?ELS5
|
|
EQUAL? OARG,M-OBJDESC? /TRUE
|
|
ZERO? BUCK-TURNED? \?CND10
|
|
EQUAL? SOUTH-JUNCTION-VISITS,2 \?CND10
|
|
SET 'BUCK-DIR,P?SOUTH
|
|
?CND10: CRLF
|
|
PRINTI "A life-size statue of Buck Palace, one of the stars of Uncle Buddy's talent stables, stands here. He's holding a bazooka pointing "
|
|
CALL SAY-BUCK-DIR
|
|
PRINTC 46
|
|
ZERO? BUCK-TURNED? \TRUE
|
|
EQUAL? SOUTH-JUNCTION-VISITS,2 \TRUE
|
|
PRINTI " Hmmm. It looks as if"
|
|
CALL TPRINT,BUCK
|
|
PRINTI ", has changed position."
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?TURN \?ELS21
|
|
ZERO? PRSI \?ELS26
|
|
PRINTR "Next time, say which direction to turn it."
|
|
?ELS26: EQUAL? PRSI,INTDIR \FALSE
|
|
EQUAL? P-DIRECTION,BUCK-DIR \?ELS30
|
|
CALL ITS-ALREADY,STR?108
|
|
RSTACK
|
|
?ELS30: SET 'BUCK-DIR,P-DIRECTION
|
|
SET 'BUCK-TURNED?,TRUE-VALUE
|
|
ZERO? STEPS-THROUGH-BUCK \?ELS35
|
|
EQUAL? P-DIRECTION,P?WEST \?ELS35
|
|
SET 'STEPS-THROUGH-BUCK,1
|
|
JUMP ?CND33
|
|
?ELS35: EQUAL? STEPS-THROUGH-BUCK,1 \?ELS39
|
|
EQUAL? P-DIRECTION,P?EAST \?ELS39
|
|
SET 'STEPS-THROUGH-BUCK,2
|
|
JUMP ?CND33
|
|
?ELS39: EQUAL? STEPS-THROUGH-BUCK,2 \?ELS43
|
|
EQUAL? P-DIRECTION,P?NORTH \?ELS43
|
|
SET 'STEPS-THROUGH-BUCK,3
|
|
JUMP ?CND33
|
|
?ELS43: SET 'STEPS-THROUGH-BUCK,0
|
|
?CND33: PRINTI "You turn"
|
|
CALL TPRINT,BUCK
|
|
PRINTI ", to the "
|
|
CALL SAY-BUCK-DIR
|
|
EQUAL? STEPS-THROUGH-BUCK,3 \?CND48
|
|
PRINTI ", and hear a click from off to the north"
|
|
FCLEAR OAK-DOOR,LOCKEDBIT
|
|
?CND48: PRINTR "."
|
|
?ELS21: EQUAL? PRSA,V?EXAMINE \?ELS52
|
|
PRINTI "It's pretty much what you would expect of a sculpture of Buck Palace. One hand is holding a pair of Uzi machine guns and his other hand is gripping a bazooka on his shoulder which he is pointing "
|
|
CALL SAY-BUCK-DIR
|
|
PRINTR ". Several belts of ammunition crisscross his half-naked chest. He's wearing a double belt of grenades around his waist, and has a high-powered rifle stuck in one of his combat boots and a bayonet between his teeth. Of course Buck Palace, the fighting letter carrier, would not be complete without his government-issue mailbag over his shoulder. The statue is on a round, rotating pedestal, encircled by a compass rose."
|
|
?ELS52: EQUAL? PRSA,V?MOVE,V?PUSH \FALSE
|
|
PRINTI "The "
|
|
CALL DPRINT,BUCK
|
|
PRINTI " turns slightly, then twists back with the bazooka pointing "
|
|
CALL SAY-BUCK-DIR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT SAY-BUCK-DIR
|
|
EQUAL? BUCK-DIR,P?NORTH,FALSE-VALUE \?ELS5
|
|
SET 'BUCK-DIR,P?NORTH
|
|
PRINTI "north"
|
|
RTRUE
|
|
?ELS5: EQUAL? BUCK-DIR,P?EAST \?ELS7
|
|
PRINTI "east"
|
|
RTRUE
|
|
?ELS7: EQUAL? BUCK-DIR,P?SOUTH \?ELS9
|
|
PRINTI "south"
|
|
RTRUE
|
|
?ELS9: EQUAL? BUCK-DIR,P?WEST \?ELS11
|
|
PRINTI "west"
|
|
RTRUE
|
|
?ELS11: EQUAL? BUCK-DIR,P?NE \?ELS13
|
|
PRINTI "northeast"
|
|
RTRUE
|
|
?ELS13: EQUAL? BUCK-DIR,P?NW \?ELS15
|
|
PRINTI "northwest"
|
|
RTRUE
|
|
?ELS15: EQUAL? BUCK-DIR,P?SE \?ELS17
|
|
PRINTI "southeast"
|
|
RTRUE
|
|
?ELS17: EQUAL? BUCK-DIR,P?SW \FALSE
|
|
PRINTI "southwest"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FLASHLIGHT-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
FSET? FLASHLIGHT,WETBIT \?ELS10
|
|
PRINTR "The soggy flashlight is switched on, but isn't working."
|
|
?ELS10: PRINTI "The rugged-looking "
|
|
CALL DPRINT,FLASHLIGHT
|
|
PRINTI " is turned "
|
|
FSET? FLASHLIGHT,ONBIT \?ELS15
|
|
PRINTI "on"
|
|
JUMP ?CND13
|
|
?ELS15: PRINTI "off"
|
|
?CND13: PRINTR "."
|
|
?ELS5: EQUAL? PRSA,V?LAMP-ON \?ELS19
|
|
FSET? FLASHLIGHT,WETBIT \FALSE
|
|
PRINTR "You turn it on, but nothing happens!"
|
|
?ELS19: EQUAL? PRSA,V?OPEN \FALSE
|
|
PRINTR "I'll bet you were the kind of kid who always took their toys apart."
|
|
|
|
|
|
.FUNCT STAIRS-F
|
|
EQUAL? PRSA,V?PUSH-DOWN \?ELS5
|
|
CALL MOVE-OBJ-DOWN
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?SKI \?ELS7
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
?ELS7: EQUAL? PRSA,V?CLIMB-UP \?ELS9
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
?ELS9: EQUAL? PRSA,V?CLIMB-DOWN \FALSE
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FOYER-F,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "This is the elegant foyer, covered in rich mahogany paneling. Your footsteps echo sharply in this large, hollow space. A broad, graceful staircase sweeps upstairs. Pillared archways beckon you east, west and north. The front door to the south is "
|
|
FSET? OAK-DOOR,OPENBIT \?ELS8
|
|
PRINTI "open"
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "closed"
|
|
?CND6: PRINTI ". There is a coat closet by the front door. The door to the closet is "
|
|
FSET? FOYER-CD,OPENBIT \?ELS13
|
|
PRINTI "open"
|
|
JUMP ?CND11
|
|
?ELS13: PRINTI "closed"
|
|
?CND11: PRINTC 46
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FOYER-CD-F
|
|
EQUAL? PRSA,V?OPEN \FALSE
|
|
FSET? FOYER-CD,OPENBIT /FALSE
|
|
EQUAL? CLOSET-FLOOR,FOYER /FALSE
|
|
EQUAL? HERE,FOYER \FALSE
|
|
CALL OPEN-DOOR-TO-SHAFT
|
|
FSET FOYER-CD,OPENBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT FOYER-STAIRS-F
|
|
EQUAL? PRSA,V?PUSH-DOWN \?ELS5
|
|
CALL MOVE-OBJ-DOWN
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \?ELS7
|
|
PRINTI "The stairs are made of rich mahogany and lead "
|
|
EQUAL? HERE,FOYER \?ELS10
|
|
PRINTI "up"
|
|
JUMP ?CND8
|
|
?ELS10: PRINTI "down"
|
|
?CND8: PRINTR "."
|
|
?ELS7: EQUAL? PRSA,V?CLIMB-UP \?ELS14
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
?ELS14: EQUAL? PRSA,V?SKI,V?CLIMB-DOWN \FALSE
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TO-UPSTAIRS-HALL-MIDDLE
|
|
FSET? NEWEL,NEWEL-TURNED-BIT /?ELS5
|
|
PRINTI "You start to go up, but suddenly the staircase flattens out. After you awkwardly slide back down, the flattened stairs return to normal."
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: PRINTI "You climb up the stairs to the..."
|
|
CRLF
|
|
CRLF
|
|
RETURN UPSTAIRS-HALL-MIDDLE
|
|
|
|
|
|
.FUNCT NEWEL-F
|
|
EQUAL? PRSA,V?TURN \?ELS5
|
|
FSET? NEWEL,NEWEL-TURNED-BIT \?ELS8
|
|
FCLEAR NEWEL,NEWEL-TURNED-BIT
|
|
JUMP ?CND6
|
|
?ELS8: FSET NEWEL,NEWEL-TURNED-BIT
|
|
?CND6: PRINTI "You turn"
|
|
CALL TPRINT,NEWEL
|
|
PRINTR " and hear a click from the staircase."
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "It's a life-size, wooden replica of the head of one of Uncle Buddy's rivals, Roger Corman."
|
|
|
|
|
|
.FUNCT FOYER-CLOSET-ENTER-F
|
|
FSET? FOYER-CD,OPENBIT /?ELS5
|
|
CALL ITS-CLOSED,FOYER-CD
|
|
RFALSE
|
|
?ELS5: EQUAL? CLOSET-FLOOR,FOYER \?ELS7
|
|
RETURN CLOSET
|
|
?ELS7: EQUAL? CLOSET-FLOOR,CELLAR \?ELS9
|
|
RETURN CLOSET-TOP
|
|
?ELS9: PRINTI "You enter the shaft and plunge down a floor. A bit shaken, you find yourself at..."
|
|
CRLF
|
|
CRLF
|
|
RETURN SHAFT-BOTTOM
|
|
|
|
|
|
.FUNCT CELLAR-F,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are in a musty cellar. One of Uncle Buddy's old movie props, a huge, over-teched "
|
|
CALL DPRINT,COMPUTER
|
|
PRINTI " is here. There is a"
|
|
FSET? CELLAR-CD,OPENBIT \?ELS8
|
|
PRINTI "n open"
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI " closed"
|
|
?CND6: PRINTI " closet door to the south. A staircase leads up."
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CELLAR-PSEUDO
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
CALL V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CELLAR-CD-F
|
|
EQUAL? PRSA,V?OPEN \FALSE
|
|
FSET? CELLAR-CD,OPENBIT /FALSE
|
|
EQUAL? CLOSET-FLOOR,CELLAR /FALSE
|
|
EQUAL? HERE,CELLAR \FALSE
|
|
CALL OPEN-DOOR-TO-SHAFT
|
|
FSET CELLAR-CD,OPENBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CELLAR-CLOSET-ENTER-F
|
|
FSET? CELLAR-CD,OPENBIT /?ELS5
|
|
CALL ITS-CLOSED,CELLAR-CD
|
|
RFALSE
|
|
?ELS5: EQUAL? CLOSET-FLOOR,CELLAR \?ELS7
|
|
RETURN CLOSET
|
|
?ELS7: PRINTI "You step down a foot into the..."
|
|
CRLF
|
|
CRLF
|
|
RETURN SHAFT-BOTTOM
|
|
|
|
|
|
.FUNCT DISPLAY-LIGHTS-F
|
|
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
|
|
FSET? COMPUTER,ONBIT \?ELS10
|
|
PRINTI "You study the display of lights and see:"
|
|
CRLF
|
|
CRLF
|
|
CALL FIXED-FONT-ON
|
|
GET DISPLAY-TABLE,0
|
|
PRINT STACK
|
|
CRLF
|
|
GET DISPLAY-TABLE,1
|
|
PRINT STACK
|
|
CRLF
|
|
GET DISPLAY-TABLE,2
|
|
PRINT STACK
|
|
CRLF
|
|
GET DISPLAY-TABLE,3
|
|
PRINT STACK
|
|
CRLF
|
|
GET DISPLAY-TABLE,4
|
|
PRINT STACK
|
|
CRLF
|
|
GET DISPLAY-TABLE,5
|
|
PRINT STACK
|
|
CRLF
|
|
GET DISPLAY-TABLE,6
|
|
PRINT STACK
|
|
CRLF
|
|
CALL FIXED-FONT-OFF
|
|
RSTACK
|
|
?ELS10: PRINTI "The "
|
|
CALL DPRINT,DISPLAY-LIGHTS
|
|
PRINTR " are off."
|
|
|
|
|
|
.FUNCT COMPUTER-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
PRINTI "It's the huge, massive, steel contraption of"
|
|
CALL APRINT,COMPUTER
|
|
PRINTI " that saved the earth from the maurading marketeers in ""Plan Nine from Marketing."" The front of"
|
|
CALL TPRINT,COMPUTER
|
|
PRINTI " is covered with rows of lights. Beneath the lights are a slot and a button. There is a hopper on one end of it. The "
|
|
CALL DPRINT,COMPUTER
|
|
PRINTI " is "
|
|
FSET? COMPUTER,ONBIT \?ELS8
|
|
PRINTI "on"
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "off"
|
|
?CND6: PRINTR "."
|
|
?ELS5: EQUAL? PRSA,V?PUT \?ELS12
|
|
EQUAL? PRSI,COMPUTER \?ELS12
|
|
GETPT PRSO,P?CARD-NUM
|
|
ZERO? STACK /?ELS19
|
|
FSET? COMPUTER,ONBIT /?ELS24
|
|
PRINT NO-DATA
|
|
RTRUE
|
|
?ELS24: FSET? PRSO,WETBIT \?ELS26
|
|
MOVE PRSO,HERE
|
|
PRINTI "The "
|
|
CALL DPRINT,COMPUTER
|
|
PRINTR " starts to suck in the wet punch card, then spits it back out at you."
|
|
?ELS26: PRINTI "The "
|
|
CALL DPRINT,COMPUTER
|
|
PRINTI " sucks in the card, making a slurping noise"
|
|
IN? TOUPEE,RESET-BUTTON \?CND29
|
|
PRINTI ", then begins to rumble like something inside is trying to get out"
|
|
?CND29: PRINTI ". It pauses as if it were thinking about what to do next, then"
|
|
CALL TPRINT,DISPLAY-LIGHTS
|
|
PRINTI " change."
|
|
CRLF
|
|
GETP PRSO,P?CARD-NUM
|
|
GET CARD-TABLE,STACK
|
|
PUT DISPLAY-TABLE,WHERE-TO-PRINT,STACK
|
|
INC 'WHERE-TO-PRINT
|
|
INC 'CARD-COUNT
|
|
MOVE PRSO,COMPUTER
|
|
EQUAL? CARD-COUNT,7 \TRUE
|
|
FSET TOUPEE,CARDS-RIGHT-BIT
|
|
RTRUE
|
|
?ELS19: GETP PRSO,P?SIZE
|
|
EQUAL? STACK,1 \?ELS36
|
|
FSET? COMPUTER,ONBIT \?ELS41
|
|
PRINTI "The "
|
|
CALL DPRINT,COMPUTER
|
|
PRINTI " sucks in"
|
|
CALL TPRINT,PRSO
|
|
PRINTI ", pauses momentarily, then spits out"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " with a whining noise."
|
|
CRLF
|
|
MOVE PRSO,HERE
|
|
RTRUE
|
|
?ELS41: PRINT NO-DATA
|
|
RTRUE
|
|
?ELS36: PRINTI "How are you going to fit"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " in"
|
|
CALL TPRINT,COMPUTER
|
|
PRINTR "'s card slot?"
|
|
?ELS12: EQUAL? PRSA,V?LAMP-ON \?ELS47
|
|
FSET? COMPUTER,ONBIT \?ELS52
|
|
CALL ITS-ALREADY,STR?47
|
|
RSTACK
|
|
?ELS52: PRINTI "The "
|
|
CALL DPRINT,COMPUTER
|
|
PRINTI "'s machinery begins to roar as you turn it on. The seven rows of display lights on the front of"
|
|
CALL TPRINT,COMPUTER
|
|
PRINTI " flash on and off in unison several times as it comes to life."
|
|
CRLF
|
|
FSET COMPUTER,ONBIT
|
|
FSET CELLAR,ONBIT
|
|
RTRUE
|
|
?ELS47: EQUAL? PRSA,V?LAMP-OFF \?ELS56
|
|
FSET? COMPUTER,ONBIT \?ELS56
|
|
PRINTI "The "
|
|
CALL DPRINT,COMPUTER
|
|
PRINTI " winds down slowly coming to a stop and the lights of the display dim and go out. "
|
|
CALL RESET-COMPUTER
|
|
FCLEAR CELLAR,ONBIT
|
|
FCLEAR COMPUTER,ONBIT
|
|
RTRUE
|
|
?ELS56: EQUAL? PRSA,V?RESET \FALSE
|
|
CALL PERFORM,V?PUSH,RESET-BUTTON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RESET-COMPUTER
|
|
FIRST? COMPUTER \?ELS3
|
|
EQUAL? CARD-COUNT,1 \?ELS6
|
|
PRINTI "A punch card drops"
|
|
JUMP ?CND4
|
|
?ELS6: LESS? CARD-COUNT,3 \?ELS11
|
|
PRINTI "A couple of"
|
|
JUMP ?CND9
|
|
?ELS11: LESS? CARD-COUNT,4 \?ELS13
|
|
PRINTI "A few"
|
|
JUMP ?CND9
|
|
?ELS13: LESS? CARD-COUNT,8 \?CND9
|
|
PRINTI "Some"
|
|
?CND9: PRINTI " punch cards drop"
|
|
?CND4: PRINTI " into"
|
|
CALL TPRINT,HOPPER
|
|
PRINTC 46
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS3: CRLF
|
|
?CND1: SET 'WHERE-TO-PRINT,0
|
|
CALL ROB,COMPUTER,HOPPER
|
|
SET 'CARD-COUNT,0
|
|
PUT DISPLAY-TABLE,0,COMPUTER-LIGHTS
|
|
PUT DISPLAY-TABLE,1,COMPUTER-LIGHTS
|
|
PUT DISPLAY-TABLE,2,COMPUTER-LIGHTS
|
|
PUT DISPLAY-TABLE,3,COMPUTER-LIGHTS
|
|
PUT DISPLAY-TABLE,4,COMPUTER-LIGHTS
|
|
PUT DISPLAY-TABLE,5,COMPUTER-LIGHTS
|
|
PUT DISPLAY-TABLE,6,COMPUTER-LIGHTS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT RESET-BUTTON-F
|
|
EQUAL? PRSA,V?PUSH \?ELS5
|
|
FSET? COMPUTER,ONBIT \?ELS10
|
|
PRINTI "All"
|
|
CALL TPRINT,DISPLAY-LIGHTS
|
|
PRINTI " flash off and on several times. "
|
|
CALL RESET-COMPUTER
|
|
RSTACK
|
|
?ELS10: PRINTR "You hear a click, but that's all."
|
|
?ELS5: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "It's a small button labeled ""Reset."""
|
|
|
|
|
|
.FUNCT TOUPEE-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
PRINTR "Ah, ahem, well, it looks like Uncle Buddy's toupee. One of the worst kept secrets in Hollywood."
|
|
?ELS5: EQUAL? PRSA,V?ROLL-UP \FALSE
|
|
PRINTR "Now come on, it's not that kind of a rug!"
|
|
|
|
|
|
.FUNCT PUNCH-CARD-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
PRINTI "The surface of"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " is covered with holes"
|
|
FSET? PRSO,WETBIT \?CND6
|
|
PRINTI " and it's rather soggy"
|
|
?CND6: PRINTR "."
|
|
?ELS5: EQUAL? PRSA,V?READ \FALSE
|
|
PRINTR "Only a computer can read a punch card!"
|
|
|
|
|
|
.FUNCT PERSIAN-RUG-F
|
|
EQUAL? PRSA,V?TAKE \?ELS5
|
|
PRINT SPINACH
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?PUT-ON \?ELS7
|
|
EQUAL? PRSI,PERSIAN-RUG \?ELS7
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?ELS7: EQUAL? PRSA,V?LOOK-UNDER,V?MOVE,V?ROLL-UP \FALSE
|
|
PRINTR "You move the rug but don't find any trap door. Amidst your sorrow you return the carpet to its original splendor."
|
|
|
|
|
|
.FUNCT BLUE-CANDLE-F
|
|
CALL CANDLE-F,BLUE-CANDLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WHITE-CANDLE-F
|
|
CALL CANDLE-F,WHITE-CANDLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT RED-CANDLE-F
|
|
CALL CANDLE-F,RED-CANDLE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GENERIC-CANDLE-F,NUM,LIT-CANDLE
|
|
EQUAL? PRSA,V?LAMP-OFF \FALSE
|
|
SET 'NUM,0
|
|
FSET? RED-CANDLE,FLAMEBIT \?ELS8
|
|
CALL VISIBLE?,RED-CANDLE
|
|
ZERO? STACK /?ELS8
|
|
INC 'NUM
|
|
SET 'LIT-CANDLE,RED-CANDLE
|
|
JUMP ?CND6
|
|
?ELS8: FSET? WHITE-CANDLE,FLAMEBIT \?ELS12
|
|
CALL VISIBLE?,WHITE-CANDLE
|
|
ZERO? STACK /?ELS12
|
|
INC 'NUM
|
|
SET 'LIT-CANDLE,WHITE-CANDLE
|
|
JUMP ?CND6
|
|
?ELS12: FSET? BLUE-CANDLE,FLAMEBIT \?CND6
|
|
CALL VISIBLE?,BLUE-CANDLE
|
|
ZERO? STACK /?CND6
|
|
INC 'NUM
|
|
SET 'LIT-CANDLE,BLUE-CANDLE
|
|
?CND6: EQUAL? NUM,1 \FALSE
|
|
RETURN LIT-CANDLE
|
|
|
|
|
|
.FUNCT CANDLE-F,CANDLE,SIZE,FEET,I-CANDLE,CANDLE-WAX
|
|
GETP PRSO,P?SIZE >SIZE
|
|
EQUAL? CANDLE,RED-CANDLE \?ELS3
|
|
SET 'FEET,RED-FEET
|
|
SET 'I-CANDLE,I-RED-CANDLE-BURN
|
|
SET 'CANDLE-WAX,RED-WAX
|
|
JUMP ?CND1
|
|
?ELS3: EQUAL? CANDLE,WHITE-CANDLE \?ELS5
|
|
SET 'FEET,WHITE-FEET
|
|
SET 'I-CANDLE,I-WHITE-CANDLE-BURN
|
|
SET 'CANDLE-WAX,WHITE-WAX
|
|
JUMP ?CND1
|
|
?ELS5: EQUAL? CANDLE,BLUE-CANDLE \?CND1
|
|
SET 'FEET,BLUE-FEET
|
|
SET 'I-CANDLE,I-BLUE-CANDLE-BURN
|
|
SET 'CANDLE-WAX,BLUE-WAX
|
|
?CND1: EQUAL? PRSA,V?EXAMINE \?ELS12
|
|
EQUAL? SIZE,1 \?CND13
|
|
CALL WAX-FEET,FEET
|
|
RTRUE
|
|
?CND13: PRINTI "It's "
|
|
LESS? SIZE,10 \?CND16
|
|
PRINTI "what's left of "
|
|
?CND16: PRINTI "a thin, wax statuette of a Hindu god, dressed in a long gown. "
|
|
GRTR? SIZE,7 \?CND19
|
|
PRINTI "The foot-high god is holding up its "
|
|
EQUAL? PRSO,WHITE-CANDLE \?ELS24
|
|
PRINTI "lef"
|
|
JUMP ?CND22
|
|
?ELS24: PRINTI "righ"
|
|
?CND22: PRINTI "t hand, showing "
|
|
EQUAL? PRSO,RED-CANDLE \?ELS29
|
|
PRINTI "three"
|
|
JUMP ?CND27
|
|
?ELS29: EQUAL? PRSO,WHITE-CANDLE \?ELS31
|
|
PRINTI "seven"
|
|
JUMP ?CND27
|
|
?ELS31: PRINTI "five"
|
|
?CND27: PRINTI " fingers. "
|
|
?CND19: FSET? PRSO,ONBIT \?ELS36
|
|
PRINTI "The wax statuette is lit, and a bit of wax is dripping down it"
|
|
JUMP ?CND34
|
|
?ELS36: GRTR? SIZE,1 \?CND34
|
|
PRINTI "A wick is sticking up from "
|
|
GRTR? SIZE,4 \?ELS44
|
|
PRINTI "the top of the statuette"
|
|
JUMP ?CND34
|
|
?ELS44: PRINTI "the little that remains of the statuette"
|
|
?CND34: LESS? SIZE,10 \?CND47
|
|
GRTR? SIZE,1 \?CND47
|
|
PRINTI ". The wax statuette has burned down to the god's "
|
|
GET CANDLE-DESC,SIZE
|
|
PRINT STACK
|
|
?CND47: PRINTR "."
|
|
?ELS12: EQUAL? PRSA,V?PUT \?ELS53
|
|
EQUAL? PRSI,CANDLE \?ELS53
|
|
PRINTR "You can't possibly do that."
|
|
?ELS53: EQUAL? PRSA,V?BURN,V?LAMP-ON \?ELS57
|
|
EQUAL? PRSO,BLUE-CANDLE,WHITE-CANDLE,RED-CANDLE \?ELS57
|
|
CALL SET-FLAME-SOURCE
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSI,FLAMEBIT \?ELS67
|
|
FSET? PRSO,FLAMEBIT \?ELS72
|
|
PRINTR "It's already lit."
|
|
?ELS72: EQUAL? SIZE,1 \?ELS74
|
|
PRINTI "It's all used up. "
|
|
CALL WAX-FEET,FEET
|
|
RSTACK
|
|
?ELS74: FSET PRSO,ONBIT
|
|
FSET PRSO,FLAMEBIT
|
|
FCLEAR PRSO,NDESCBIT
|
|
CALL QUEUE,I-CANDLE,-1
|
|
MOVE CANDLE-WAX,CANDLE
|
|
PRINTI "You light"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " and a bit of wax begins to dribble down the god."
|
|
?ELS67: EQUAL? PRSI,RED-CANDLE,GREEN-MATCH,RED-MATCH /?THN79
|
|
EQUAL? PRSI,WHITE-CANDLE,BLUE-CANDLE \FALSE
|
|
?THN79: PRINTI "But"
|
|
CALL TPRINT,PRSI
|
|
PRINTR "'s not lit!"
|
|
?ELS57: EQUAL? PRSA,V?LAMP-OFF \?ELS82
|
|
FSET? PRSO,ONBIT \?ELS87
|
|
CALL BLOW-OUT-CANDLE,CANDLE
|
|
RSTACK
|
|
?ELS87: PRINTR "The wax god isn't lit."
|
|
?ELS82: EQUAL? PRSA,V?CLOSE,V?OPEN \?ELS91
|
|
CALL CANT-OPEN-CLOSE
|
|
RSTACK
|
|
?ELS91: EQUAL? PRSA,V?TAKE \FALSE
|
|
FCLEAR PRSO,NDESCBIT
|
|
RFALSE
|
|
|
|
|
|
.FUNCT CANDLE-BURN,CANDLE,FEET,I-CANDLE,SIZE
|
|
GETP CANDLE,P?SIZE
|
|
SUB STACK,1
|
|
PUTP CANDLE,P?SIZE,STACK
|
|
GETP CANDLE,P?SIZE >SIZE
|
|
EQUAL? SIZE,1 \?CND1
|
|
CALL VISIBLE?,CANDLE
|
|
ZERO? STACK /?CND4
|
|
CRLF
|
|
?CND4: LOC CANDLE
|
|
MOVE FEET,STACK
|
|
CALL BLOW-OUT-CANDLE,CANDLE
|
|
REMOVE CANDLE
|
|
CALL DEQUEUE,I-CANDLE
|
|
?CND1: EQUAL? SIZE,2 \?CND7
|
|
EQUAL? CANDLE,RED-CANDLE \?ELS12
|
|
CALL QUEUE,I-RED-ALMOST-OUT,5
|
|
JUMP ?CND7
|
|
?ELS12: EQUAL? CANDLE,WHITE-CANDLE \?ELS14
|
|
CALL QUEUE,I-WHITE-ALMOST-OUT,5
|
|
JUMP ?CND7
|
|
?ELS14: EQUAL? CANDLE,BLUE-CANDLE \?CND7
|
|
CALL QUEUE,I-BLUE-ALMOST-OUT,5
|
|
?CND7: CALL ACCESSIBLE?,CANDLE
|
|
ZERO? STACK /FALSE
|
|
EQUAL? SIZE,8,6,4 /?THN24
|
|
EQUAL? SIZE,2 \FALSE
|
|
?THN24: CRLF
|
|
PRINTI "The "
|
|
CALL DPRINT,CANDLE
|
|
PRINTI " has burned down to the god's "
|
|
GET CANDLE-DESC,SIZE
|
|
PRINT STACK
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT I-RED-ALMOST-OUT
|
|
CALL QUEUE,I-RED-NEARLY-OUT,2
|
|
CALL ACCESSIBLE?,RED-CANDLE
|
|
ZERO? STACK /FALSE
|
|
CRLF
|
|
PRINTI "The "
|
|
CALL DPRINT,RED-CANDLE
|
|
PRINTR " is almost out!"
|
|
|
|
|
|
.FUNCT I-WHITE-ALMOST-OUT
|
|
CALL QUEUE,I-WHITE-NEARLY-OUT,2
|
|
CALL ACCESSIBLE?,WHITE-CANDLE
|
|
ZERO? STACK /FALSE
|
|
CRLF
|
|
PRINTI "The "
|
|
CALL DPRINT,WHITE-CANDLE
|
|
PRINTR " is almost out!"
|
|
|
|
|
|
.FUNCT I-BLUE-ALMOST-OUT
|
|
CALL QUEUE,I-BLUE-NEARLY-OUT,2
|
|
CALL ACCESSIBLE?,BLUE-CANDLE
|
|
ZERO? STACK /FALSE
|
|
CRLF
|
|
PRINTI "The "
|
|
CALL DPRINT,BLUE-CANDLE
|
|
PRINTR " is almost out!"
|
|
|
|
|
|
.FUNCT I-RED-NEARLY-OUT
|
|
CALL ACCESSIBLE?,RED-CANDLE
|
|
ZERO? STACK /FALSE
|
|
CRLF
|
|
PRINTI "The "
|
|
CALL DPRINT,RED-CANDLE
|
|
PRINTR " is nearly out!"
|
|
|
|
|
|
.FUNCT I-WHITE-NEARLY-OUT
|
|
CALL ACCESSIBLE?,WHITE-CANDLE
|
|
ZERO? STACK /FALSE
|
|
CRLF
|
|
PRINTI "The "
|
|
CALL DPRINT,WHITE-CANDLE
|
|
PRINTR " is nearly out!"
|
|
|
|
|
|
.FUNCT I-BLUE-NEARLY-OUT
|
|
CALL ACCESSIBLE?,BLUE-CANDLE
|
|
ZERO? STACK /FALSE
|
|
CRLF
|
|
PRINTI "The "
|
|
CALL DPRINT,BLUE-CANDLE
|
|
PRINTR " is nearly out!"
|
|
|
|
|
|
.FUNCT I-RED-CANDLE-BURN
|
|
ZERO? RED-MID-BURN /?ELS5
|
|
PUSH RED-MID-BURN
|
|
JUMP ?CND1
|
|
?ELS5: PUSH 10
|
|
?CND1: CALL QUEUE,I-RED-CANDLE-BURN,STACK
|
|
SET 'RED-MID-BURN,FALSE-VALUE
|
|
CALL CANDLE-BURN,RED-CANDLE,RED-FEET,I-RED-CANDLE-BURN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-WHITE-CANDLE-BURN
|
|
ZERO? WHITE-MID-BURN /?ELS5
|
|
PUSH WHITE-MID-BURN
|
|
JUMP ?CND1
|
|
?ELS5: PUSH 10
|
|
?CND1: CALL QUEUE,I-WHITE-CANDLE-BURN,STACK
|
|
SET 'WHITE-MID-BURN,FALSE-VALUE
|
|
CALL CANDLE-BURN,WHITE-CANDLE,WHITE-FEET,I-WHITE-CANDLE-BURN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-BLUE-CANDLE-BURN
|
|
ZERO? BLUE-MID-BURN /?ELS5
|
|
PUSH BLUE-MID-BURN
|
|
JUMP ?CND1
|
|
?ELS5: PUSH 10
|
|
?CND1: CALL QUEUE,I-BLUE-CANDLE-BURN,STACK
|
|
SET 'BLUE-MID-BURN,FALSE-VALUE
|
|
CALL CANDLE-BURN,BLUE-CANDLE,BLUE-FEET,I-BLUE-CANDLE-BURN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FEET-F
|
|
EQUAL? PRSA,V?BURN,V?LAMP-ON \FALSE
|
|
PRINTR "They're just wax. You can't light them."
|
|
|
|
|
|
.FUNCT BLOW-OUT-CANDLE,CANDLE,DONT-TELL=0,C,FEET
|
|
FCLEAR CANDLE,ONBIT
|
|
FCLEAR CANDLE,FLAMEBIT
|
|
EQUAL? CANDLE,RED-CANDLE \?ELS3
|
|
SET 'FEET,RED-FEET
|
|
CALL QUEUED?,I-RED-CANDLE-BURN >C
|
|
ZERO? C /?ELS6
|
|
GET C,C-TICK >RED-MID-BURN
|
|
JUMP ?CND4
|
|
?ELS6: SET 'RED-MID-BURN,FALSE-VALUE
|
|
?CND4: CALL STOP-RED-BURNING
|
|
JUMP ?CND1
|
|
?ELS3: EQUAL? CANDLE,WHITE-CANDLE \?ELS10
|
|
SET 'FEET,WHITE-FEET
|
|
CALL QUEUED?,I-WHITE-CANDLE-BURN >C
|
|
ZERO? C /?ELS13
|
|
GET C,C-TICK >WHITE-MID-BURN
|
|
JUMP ?CND11
|
|
?ELS13: SET 'WHITE-MID-BURN,FALSE-VALUE
|
|
?CND11: CALL STOP-WHITE-BURNING
|
|
JUMP ?CND1
|
|
?ELS10: EQUAL? CANDLE,BLUE-CANDLE \?CND1
|
|
SET 'FEET,BLUE-FEET
|
|
CALL QUEUED?,I-BLUE-CANDLE-BURN >C
|
|
ZERO? C /?ELS20
|
|
GET C,C-TICK >BLUE-MID-BURN
|
|
JUMP ?CND18
|
|
?ELS20: SET 'BLUE-MID-BURN,FALSE-VALUE
|
|
?CND18: CALL STOP-BLUE-BURNING
|
|
?CND1: ZERO? DONT-TELL \?CND23
|
|
CALL ACCESSIBLE?,CANDLE
|
|
ZERO? STACK /?CND23
|
|
PRINTI "The "
|
|
CALL DPRINT,CANDLE
|
|
PRINTI " goes out."
|
|
GETP CANDLE,P?SIZE
|
|
EQUAL? STACK,1 \?ELS30
|
|
PRINTC 32
|
|
CALL WAX-FEET,FEET
|
|
JUMP ?CND23
|
|
?ELS30: EQUAL? PRSI,POND /TRUE
|
|
CRLF
|
|
?CND23: CALL SAY-IF-NOT-LIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WAX-FEET,FEET
|
|
CALL ACCESSIBLE?,FEET
|
|
ZERO? STACK /FALSE
|
|
PRINTI "There's nothing left but"
|
|
CALL APRINT,FEET
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT STOP-RED-BURNING
|
|
CALL DEQUEUE,I-RED-CANDLE-BURN
|
|
CALL DEQUEUE,I-RED-ALMOST-OUT
|
|
CALL DEQUEUE,I-RED-NEARLY-OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT STOP-WHITE-BURNING
|
|
CALL DEQUEUE,I-WHITE-CANDLE-BURN
|
|
CALL DEQUEUE,I-WHITE-ALMOST-OUT
|
|
CALL DEQUEUE,I-WHITE-NEARLY-OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT STOP-BLUE-BURNING
|
|
CALL DEQUEUE,I-BLUE-CANDLE-BURN
|
|
CALL DEQUEUE,I-BLUE-ALMOST-OUT
|
|
CALL DEQUEUE,I-BLUE-NEARLY-OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT GENERIC-WAX-F,RED-HERE=0,BLUE-HERE=0,WHITE-HERE=0
|
|
EQUAL? PRSA,V?SCRAPE-OFF \?CND1
|
|
CALL VISIBLE?,WAX-COAT-1
|
|
ZERO? STACK /?ELS8
|
|
RETURN WAX-COAT-1
|
|
?ELS8: CALL VISIBLE?,WAX-COAT-2
|
|
ZERO? STACK /FALSE
|
|
RETURN WAX-COAT-2
|
|
?CND1: FSET? RED-CANDLE,ONBIT \?ELS15
|
|
CALL VISIBLE?,RED-CANDLE
|
|
ZERO? STACK /?ELS15
|
|
SET 'RED-HERE,TRUE-VALUE
|
|
JUMP ?CND13
|
|
?ELS15: FSET? WHITE-CANDLE,ONBIT \?ELS19
|
|
CALL VISIBLE?,WHITE-CANDLE
|
|
ZERO? STACK /?ELS19
|
|
SET 'WHITE-HERE,TRUE-VALUE
|
|
JUMP ?CND13
|
|
?ELS19: FSET? BLUE-CANDLE,ONBIT \?CND13
|
|
CALL VISIBLE?,BLUE-CANDLE
|
|
ZERO? STACK /?CND13
|
|
SET 'BLUE-HERE,TRUE-VALUE
|
|
?CND13: ZERO? BLUE-HERE /?ELS30
|
|
ZERO? RED-HERE \?ELS30
|
|
ZERO? WHITE-HERE \?ELS30
|
|
RETURN BLUE-WAX
|
|
?ELS30: ZERO? RED-HERE /?ELS34
|
|
ZERO? BLUE-HERE \?ELS34
|
|
ZERO? WHITE-HERE \?ELS34
|
|
RETURN RED-WAX
|
|
?ELS34: ZERO? WHITE-HERE /FALSE
|
|
ZERO? BLUE-HERE \FALSE
|
|
ZERO? RED-HERE \FALSE
|
|
RETURN WHITE-WAX
|
|
|
|
|
|
.FUNCT WAX-F
|
|
EQUAL? PRSO,RED-WAX \?ELS5
|
|
FSET? RED-CANDLE,FLAMEBIT /?ELS5
|
|
EQUAL? PRSA,V?PUT-ON,V?POUR \?ELS12
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " is not lit."
|
|
?ELS12: CALL PERFORM,PRSA,RED-CANDLE,PRSI
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSI,RED-WAX \?ELS16
|
|
FSET? RED-CANDLE,FLAMEBIT /?ELS16
|
|
CALL PERFORM,PRSA,PRSO,RED-CANDLE
|
|
RTRUE
|
|
?ELS16: EQUAL? PRSO,WHITE-WAX \?ELS20
|
|
FSET? WHITE-CANDLE,FLAMEBIT /?ELS20
|
|
EQUAL? PRSA,V?PUT-ON,V?POUR \?ELS27
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " is not lit."
|
|
?ELS27: CALL PERFORM,PRSA,WHITE-CANDLE,PRSI
|
|
RTRUE
|
|
?ELS20: EQUAL? PRSI,WHITE-WAX \?ELS31
|
|
FSET? WHITE-CANDLE,FLAMEBIT /?ELS31
|
|
CALL PERFORM,PRSA,PRSO,WHITE-CANDLE
|
|
RTRUE
|
|
?ELS31: EQUAL? PRSO,BLUE-WAX \?ELS35
|
|
FSET? BLUE-CANDLE,FLAMEBIT /?ELS35
|
|
EQUAL? PRSA,V?PUT-ON,V?POUR \?ELS42
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " is not lit."
|
|
?ELS42: CALL PERFORM,PRSA,BLUE-CANDLE,PRSI
|
|
RTRUE
|
|
?ELS35: EQUAL? PRSI,BLUE-WAX \?ELS46
|
|
FSET? BLUE-CANDLE,FLAMEBIT /?ELS46
|
|
CALL PERFORM,PRSA,PRSO,BLUE-CANDLE
|
|
RTRUE
|
|
?ELS46: EQUAL? PRSA,V?RUB,V?TAKE \?ELS50
|
|
PRINTR "You'd burn your fingers."
|
|
?ELS50: EQUAL? PRSA,V?PUT \?ELS52
|
|
EQUAL? PRSI,BLUE-WAX,WHITE-WAX,RED-WAX \?ELS52
|
|
CALL PERFORM,V?PUT-ON,PRSI,PRSO
|
|
RTRUE
|
|
?ELS52: EQUAL? PRSA,V?POUR \?ELS56
|
|
EQUAL? PRSO,BLUE-WAX,WHITE-WAX,RED-WAX \?ELS56
|
|
CALL PERFORM,V?PUT-ON,PRSO,PRSI
|
|
RTRUE
|
|
?ELS56: EQUAL? PRSA,V?DROP \?ELS60
|
|
PRINTR "Huh?"
|
|
?ELS60: EQUAL? PRSA,V?PUT-ON \FALSE
|
|
EQUAL? PRSO,BLUE-WAX,RED-WAX,WHITE-WAX \FALSE
|
|
FSET? PRSI,WAXED-BIT \?ELS69
|
|
CALL YOU-ALREADY
|
|
RSTACK
|
|
?ELS69: FSET? PRSI,FLAMEBIT \?ELS71
|
|
PRINT YOU-CANT
|
|
PRINTR "put wax on it while it's burning."
|
|
?ELS71: EQUAL? PRSI,GREEN-MATCH,RED-MATCH \?ELS73
|
|
FSET PRSI,WAXED-BIT
|
|
LOC WAX-COAT-1
|
|
ZERO? STACK /?ELS76
|
|
MOVE WAX-COAT-2,PRSI
|
|
JUMP ?CND74
|
|
?ELS76: MOVE WAX-COAT-1,PRSI
|
|
?CND74: PRINTR "The match head is now covered with a thin coating of candle wax."
|
|
?ELS73: PRINTI "You drip a bit of wax onto"
|
|
CALL TPRINT,PRSI
|
|
PRINTR ". Rather pointless, really."
|
|
|
|
|
|
.FUNCT PORTRAIT-F
|
|
EQUAL? PRSA,V?PULL,V?LOOK-BEHIND,V?MOVE /?THN6
|
|
EQUAL? PRSA,V?SWING,V?RAISE \?ELS5
|
|
?THN6: FSET? WALL-SAFE,INVISIBLE /?ELS12
|
|
CALL YOU-ALREADY
|
|
RSTACK
|
|
?ELS12: FCLEAR WALL-SAFE,INVISIBLE
|
|
PRINTI "You swing"
|
|
CALL TPRINT,PORTRAIT
|
|
PRINTI " away from the wall and find"
|
|
CALL APRINT,WALL-SAFE
|
|
PRINTC 46
|
|
FSET? GREEN-CARD,INVISIBLE \?ELS19
|
|
FCLEAR GREEN-CARD,INVISIBLE
|
|
PRINTI " A "
|
|
CALL DPRINT,GREEN-CARD
|
|
PRINTR " flutters to the floor."
|
|
?ELS19: CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?TAKE \?ELS23
|
|
PRINTR "It seems to be attached to the wall on one side."
|
|
?ELS23: EQUAL? PRSA,V?COVER \?ELS25
|
|
EQUAL? PRSO,WALL-SAFE \?ELS25
|
|
FSET WALL-SAFE,INVISIBLE
|
|
PRINTI "You cover"
|
|
CALL TPRINT,WALL-SAFE
|
|
PRINTI " with"
|
|
CALL TRPRINT,PORTRAIT
|
|
RSTACK
|
|
?ELS25: EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "It's a very conservative portrait of Aunt Hildegarde sitting in a Victorian-style chair with Uncle Buddy standing behind her, wearing a black-and-white checkered polyester leisure suit."
|
|
|
|
|
|
.FUNCT WALL-SAFE-F
|
|
EQUAL? PRSA,V?TURN-RIGHT,V?TURN-LEFT \?ELS5
|
|
EQUAL? PRSI,INTNUM \?ELS5
|
|
GRTR? P-NUMBER,10 \?ELS12
|
|
PRINTR "The dial only goes to 10."
|
|
?ELS12: SET 'DIAL-NUMBER,P-NUMBER
|
|
PRINTI "You turn the dial to "
|
|
PRINTN DIAL-NUMBER
|
|
PRINTC 46
|
|
FSET? WALL-SAFE,OPENBIT /?ELS17
|
|
ZERO? STEPS-THROUGH-WALL-SAFE \?ELS17
|
|
EQUAL? PRSA,V?TURN-RIGHT \?ELS17
|
|
EQUAL? DIAL-NUMBER,3 \?ELS17
|
|
SET 'STEPS-THROUGH-WALL-SAFE,1
|
|
JUMP ?CND15
|
|
?ELS17: FSET? WALL-SAFE,OPENBIT /?ELS21
|
|
EQUAL? STEPS-THROUGH-WALL-SAFE,1 \?ELS21
|
|
EQUAL? PRSA,V?TURN-LEFT \?ELS21
|
|
EQUAL? DIAL-NUMBER,7 \?ELS21
|
|
SET 'STEPS-THROUGH-WALL-SAFE,2
|
|
JUMP ?CND15
|
|
?ELS21: FSET? WALL-SAFE,OPENBIT /?ELS25
|
|
EQUAL? STEPS-THROUGH-WALL-SAFE,2 \?ELS25
|
|
EQUAL? PRSA,V?TURN-RIGHT \?ELS25
|
|
EQUAL? DIAL-NUMBER,5 \?ELS25
|
|
SET 'STEPS-THROUGH-WALL-SAFE,3
|
|
FCLEAR WALL-SAFE,LOCKEDBIT
|
|
PRINTI " You hear a faint click."
|
|
JUMP ?CND15
|
|
?ELS25: SET 'STEPS-THROUGH-WALL-SAFE,0
|
|
?CND15: CRLF
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSA,V?TURN-RIGHT,V?TURN-LEFT,V?TURN \?ELS31
|
|
EQUAL? PRSI,FALSE-VALUE,ROOMS \?ELS36
|
|
PRINTR "You didn't say what number you wanted to turn the dial to, or the direction."
|
|
?ELS36: EQUAL? PRSI,INTNUM \?ELS38
|
|
PRINTI "You didn't say whether you wanted to turn the dial RIGHT to "
|
|
PRINTN P-NUMBER
|
|
PRINTI " or LEFT to "
|
|
PRINTN P-NUMBER
|
|
PRINTR "."
|
|
?ELS38: PRINTR "Huh?"
|
|
?ELS31: EQUAL? PRSA,V?EXAMINE \?ELS42
|
|
PRINTI "It's a rather large safe with a dial which can be set to any number between 0 and 10. The dial is set to "
|
|
PRINTN DIAL-NUMBER
|
|
PRINTI ". "
|
|
RFALSE
|
|
?ELS42: EQUAL? PRSA,V?CLOSE \FALSE
|
|
FSET? WALL-SAFE,OPENBIT \FALSE
|
|
FSET WALL-SAFE,LOCKEDBIT
|
|
SET 'STEPS-THROUGH-WALL-SAFE,0
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GRATER-F
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "It's the cheese grater Mama Maggio used to paddle her nine sons and seven daughters with in the ""Maggio Boys and Girls"" serial. Uncle Buddy wrote the scripts for these mystery yarns about 16 teenage brothers and sisters who were junior detectives."
|
|
|
|
|
|
.FUNCT FIREPLACE-GLOBAL-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
EQUAL? HERE,FIREPLACE \?ELS10
|
|
CALL V-LOOK
|
|
RSTACK
|
|
?ELS10: PRINTR "You see a large, finely crafted brick fireplace."
|
|
?ELS5: EQUAL? PRSA,V?SEARCH,V?LOOK-INSIDE \?ELS14
|
|
EQUAL? HERE,LIVING-ROOM \?ELS19
|
|
PRINTR "You can't quite make out the inside of the fireplace from here."
|
|
?ELS19: PRINTR "Look around you!"
|
|
?ELS14: EQUAL? PRSA,V?BOARD,V?ENTER \?ELS23
|
|
EQUAL? HERE,LIVING-ROOM \?ELS23
|
|
CALL GOTO,FIREPLACE
|
|
RSTACK
|
|
?ELS23: EQUAL? PRSA,V?REACH-IN \?ELS27
|
|
EQUAL? HERE,LIVING-ROOM \FALSE
|
|
PRINTR "You reach in the fireplace and imagine a warm glow."
|
|
?ELS27: EQUAL? PRSA,V?CLIMB-UP \?ELS34
|
|
EQUAL? PRSI,FIREPLACE \?ELS34
|
|
EQUAL? HERE,FIREPLACE \?ELS34
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
?ELS34: EQUAL? PRSA,V?PUT \FALSE
|
|
MOVE PRSO,FIREPLACE
|
|
PRINTR "Done."
|
|
|
|
|
|
.FUNCT FIREPLACE-F,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "The fireplace is finely crafted masonry, but has long been neglected. The mortar is crumbling in a number of places."
|
|
FSET? BRICK-HOLE,INVISIBLE \?CND6
|
|
PRINTI " One brick, about waist high, seems particularly loose."
|
|
?CND6: PRINTI " The fireplace opens to the east."
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BRICK-HOLE-F
|
|
EQUAL? PRSA,V?PUT \?ELS5
|
|
EQUAL? PRSI,BRICK-HOLE \?ELS5
|
|
EQUAL? PRSO,BRICK \?ELS12
|
|
FCLEAR FIREPLACE,BRICK-REMOVED-BIT
|
|
FSET PRSO,NDESCBIT
|
|
FSET BRICK-HOLE,INVISIBLE
|
|
RFALSE
|
|
?ELS12: GETP PRSO,P?SIZE
|
|
LESS? STACK,5 \?ELS14
|
|
FSET? FIREPLACE,BRICK-REMOVED-BIT \?ELS14
|
|
REMOVE PRSO
|
|
PRINTR "You push it into the hole and it falls down into the space beyond the hole."
|
|
?ELS14: PRINTR "It doesn't fit into the hole."
|
|
?ELS5: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
CALL CANT-OPEN-CLOSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BRICK-HOLE-GLOBAL-F
|
|
EQUAL? PRSA,V?PUT \?ELS5
|
|
EQUAL? PRSI,BRICK-HOLE-GLOBAL \?ELS5
|
|
EQUAL? PRSO,BRICK \?ELS12
|
|
PRINTR "You wouldn't be able to climb the chimney if you did that."
|
|
?ELS12: GETP PRSO,P?SIZE
|
|
LESS? STACK,5 \?ELS14
|
|
REMOVE PRSO
|
|
PRINTR "It falls down into the space beyond the hole."
|
|
?ELS14: PRINTR "It doesn't fit into the hole."
|
|
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS18
|
|
PRINTR "You can't see a thing. It's pitch black."
|
|
?ELS18: EQUAL? PRSA,V?CLOSE,V?OPEN \FALSE
|
|
CALL CANT-OPEN-CLOSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BRICK-F
|
|
EQUAL? PRSA,V?PULL,V?TAKE \FALSE
|
|
CALL ITAKE
|
|
ZERO? STACK /TRUE
|
|
FSET FIREPLACE,BRICK-REMOVED-BIT
|
|
FCLEAR BRICK-HOLE,INVISIBLE
|
|
FSET? INDIGO-CARD,INVISIBLE \FALSE
|
|
FCLEAR INDIGO-CARD,INVISIBLE
|
|
PRINTI "You pull the brick out of the hole, and along with it comes"
|
|
CALL APRINT,INDIGO-CARD
|
|
PRINTR ", which drops in a spiral to the ground."
|
|
|
|
|
|
.FUNCT UP-CHIMNEY
|
|
FSET? FIREPLACE,BRICK-REMOVED-BIT /?ELS5
|
|
EQUAL? HERE,FIREPLACE \?ELS5
|
|
PRINTI "You'll have to figure that out for yourself."
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: CALL WEIGHT,PLAYER
|
|
GRTR? STACK,38 \?ELS9
|
|
PRINTI "You're carrying too much to climb up"
|
|
CALL TRPRINT,CHIMNEY
|
|
RFALSE
|
|
?ELS9: FSET? SKIS,WORNBIT \?ELS11
|
|
PRINTR "You can't climb up while you're wearing the skis."
|
|
?ELS11: PRINTI "Using the "
|
|
EQUAL? HERE,FIREPLACE \?ELS16
|
|
PRINTI "hole where the brick was,"
|
|
JUMP ?CND14
|
|
?ELS16: PRINTI "holes"
|
|
?CND14: PRINTI " you climb up the chimney several feet"
|
|
EQUAL? HERE,FIREPLACE \?ELS23
|
|
PRINTC 46
|
|
CRLF
|
|
CRLF
|
|
RETURN CHIMNEY-1
|
|
?ELS23: EQUAL? HERE,CHIMNEY-1 \?ELS25
|
|
PRINTC 46
|
|
CRLF
|
|
CRLF
|
|
RETURN CHIMNEY-2
|
|
?ELS25: PRINTI " onto the..."
|
|
CRLF
|
|
CRLF
|
|
EQUAL? HERE,CHIMNEY-2 \?ELS32
|
|
RETURN ROOF-1
|
|
?ELS32: RETURN ROOF-2
|
|
|
|
|
|
.FUNCT DOWN-CHIMNEY
|
|
PRINTI "Using the "
|
|
EQUAL? HERE,FIREPLACE \?ELS3
|
|
PRINTI "hole where the brick was"
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "holes"
|
|
?CND1: PRINTI ", you climb down the chimney several feet"
|
|
EQUAL? HERE,CHIMNEY-1 \?ELS10
|
|
PRINTI " into the..."
|
|
CRLF
|
|
CRLF
|
|
RETURN FIREPLACE
|
|
?ELS10: EQUAL? HERE,CHIMNEY-2 \FALSE
|
|
PRINTC 46
|
|
CRLF
|
|
CRLF
|
|
RETURN CHIMNEY-1
|
|
|
|
|
|
.FUNCT PENGUIN-F
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "It's a life-size stuffed penguin. It was probably used in the filming of ""Vampire Penguins of the North."""
|
|
|
|
|
|
.FUNCT MASK-F
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTI "It looks like"
|
|
CALL TPRINT,MASK
|
|
PRINTR " from ""Friday the 15th."""
|
|
|
|
|
|
.FUNCT CHIMNEY-F
|
|
EQUAL? PRSA,V?EXAMINE \?ELS5
|
|
PRINTR "It is your average chimney, made of bricks."
|
|
?ELS5: EQUAL? PRSA,V?LOOK-INSIDE \?ELS7
|
|
EQUAL? HERE,ROOF-1 \?ELS12
|
|
PRINTI "You see a few holes in the wall of"
|
|
CALL TRPRINT,CHIMNEY
|
|
RSTACK
|
|
?ELS12: PRINTR "You can't quite make out what's inside from here."
|
|
?ELS7: EQUAL? PRSA,V?PUT \?ELS16
|
|
EQUAL? PRSI,CHIMNEY \?ELS16
|
|
EQUAL? HERE,FIREPLACE \?ELS23
|
|
PRINTR "You're at the bottom of the chimney!"
|
|
?ELS23: PRINTI "You drop"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " down the chimney."
|
|
CRLF
|
|
EQUAL? HERE,ROOF-1,CHIMNEY-1,CHIMNEY-2 \?ELS30
|
|
EQUAL? PRSO,BLUE-CANDLE,WHITE-CANDLE,RED-CANDLE \?ELS33
|
|
FSET? PRSO,FLAMEBIT \?ELS33
|
|
CALL BLOW-OUT-CANDLE,PRSO
|
|
JUMP ?CND31
|
|
?ELS33: EQUAL? PRSO,FINCH /?THN38
|
|
CALL ULTIMATELY-IN?,FINCH,PRSO
|
|
ZERO? STACK /?CND31
|
|
?THN38: CALL BREAK-FINCH,TRUE-VALUE
|
|
?CND31: MOVE PRSO,FIREPLACE
|
|
RTRUE
|
|
?ELS30: MOVE PRSO,CHIMNEY-3
|
|
RTRUE
|
|
?ELS16: EQUAL? PRSA,V?ENTER \?ELS43
|
|
CALL DO-WALK,P?IN
|
|
RSTACK
|
|
?ELS43: EQUAL? PRSA,V?CLIMB-UP \?ELS45
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
?ELS45: EQUAL? PRSA,V?CLIMB-DOWN \FALSE
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ROOF-TO-CHIMNEY
|
|
PRINTI "You climb down into the chimney."
|
|
CRLF
|
|
CRLF
|
|
EQUAL? HERE,ROOF-1 \?ELS5
|
|
RETURN CHIMNEY-2
|
|
?ELS5: RETURN CHIMNEY-3
|
|
|
|
|
|
.FUNCT VERTICAL-MAP-F
|
|
EQUAL? PRSA,V?EXAMINE,V?READ \?ELS5
|
|
FSET? VERTICAL-MAP,WETBIT \?ELS10
|
|
CALL WET-PAPER
|
|
RSTACK
|
|
?ELS10: CALL LOOK-AT-MAP
|
|
PRINTI "
|
|
| | | | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | | | | | | |
|
|
| | | | | | | | | | | |
|
|
| | | | | | | | |
|
|
| | | | | | | | | | | | | | |
|
|
| | | | | | | | | | | | |
|
|
| | | | | | | | | | | | |
|
|
| | | | | | |X| | | | |
|
|
| | | | | | | | | | | | |
|
|
| | | | | | | | | | | | |
|
|
| | | | | | | | | | | |
|
|
| | | | | | | | | | | | | | | |
|
|
| | | | | | | | | | | | |
|
|
| | | | | | |
|
|
| | | | | | | | | |
|
|
| | | | | | | | | | | | | |
|
|
| | | | | | | | | | | | | | |
|
|
| | | | | | |
|
|
"
|
|
CALL FIXED-FONT-OFF
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?PUT-ON \FALSE
|
|
EQUAL? PRSO,HORIZONTAL-MAP /?THN20
|
|
EQUAL? PRSI,HORIZONTAL-MAP \?ELS19
|
|
?THN20: FSET? VERTICAL-MAP,WETBIT \?ELS26
|
|
FSET? HORIZONTAL-MAP,WETBIT \?ELS26
|
|
PRINTR "All you can make out on the soggy pieces of paper are some blurred lines."
|
|
?ELS26: FSET? PRSO,WETBIT \?ELS30
|
|
PRINTR "You see blurred vertical lines through the soggy paper."
|
|
?ELS30: FSET? PRSI,WETBIT \?ELS32
|
|
CALL PERFORM,V?READ,PRSO
|
|
RTRUE
|
|
?ELS32: CALL WHOLE-MAP
|
|
RSTACK
|
|
?ELS19: FSET? PRSI,SURFACEBIT /FALSE
|
|
PRINTR "That doesn't seem to accomplish much."
|
|
|
|
|
|
.FUNCT LOOK-AT-MAP
|
|
PRINTI "You see the following:"
|
|
CRLF
|
|
CALL FIXED-FONT-ON
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WET-PAPER
|
|
PRINTR "All you see is a piece of wet paper with ink stains on it."
|
|
|
|
|
|
.FUNCT HORIZONTAL-MAP-F
|
|
EQUAL? PRSA,V?EXAMINE,V?READ \?ELS5
|
|
FSET? HORIZONTAL-MAP,WETBIT \?ELS10
|
|
CALL WET-PAPER
|
|
RSTACK
|
|
?ELS10: CALL LOOK-AT-MAP
|
|
PRINTI "____________________________________
|
|
__ ____ ___ __ _____
|
|
__ __ __ _ ___
|
|
___ __ _
|
|
______ _____ _ _
|
|
__ ___ _ ____ __
|
|
__ _____ __
|
|
___ __ ______ _
|
|
___ ___ ____
|
|
___ ___ X ___ ____
|
|
_ _ ______
|
|
_ _ _____ ____ __
|
|
____ ____ __
|
|
_ _ _
|
|
__ __ ____ __ __
|
|
_________ __ ___ ____
|
|
____ _____ ___ __
|
|
_ ___
|
|
___ __ __ _
|
|
___ _______ ___ ____ ____ ____ ___
|
|
"
|
|
CALL FIXED-FONT-OFF
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSA,V?PUT-ON \FALSE
|
|
EQUAL? PRSO,VERTICAL-MAP /?THN20
|
|
EQUAL? PRSI,VERTICAL-MAP \?ELS19
|
|
?THN20: FSET? HORIZONTAL-MAP,WETBIT \?ELS26
|
|
FSET? VERTICAL-MAP,WETBIT \?ELS26
|
|
PRINTR "You see blurred vertical lines through the soggy paper."
|
|
?ELS26: FSET? PRSI,WETBIT \?ELS30
|
|
CALL PERFORM,V?READ,PRSO
|
|
RTRUE
|
|
?ELS30: CALL WHOLE-MAP
|
|
RSTACK
|
|
?ELS19: FSET? PRSI,SURFACEBIT /FALSE
|
|
PRINTR "That doesn't seem to accomplish much."
|
|
|
|
|
|
.FUNCT WHOLE-MAP
|
|
CALL LOOK-AT-MAP
|
|
PRINTI "____________________________________
|
|
| __| | |____ | | ___|__ | _____ |
|
|
| | __|__ | | |__ _ ___| | | |
|
|
| | ___ | | | | | | __| | _| | | | |
|
|
|______ | | |_____| | |_ |_| | | |
|
|
| __ ___|_ ____ | | | __ | | | |
|
|
|__| | | | | | _____| | |__| | | | |
|
|
| ___| | | | |__| ______| _| | | | |
|
|
| | ___| | |___ | | | |____| | | |
|
|
| | | ___|___ | | |X| |___ | ____| |
|
|
| | | | | | | |_| | _| |______ |
|
|
|_| | | | | | |_|_____| | ____ | __|
|
|
| ____| | | |____ | | | | __ | | |
|
|
| | | |_| | | |_| | | | | _| | |
|
|
| | | |__ __| | |____ |__ | |__| | |
|
|
| | |_________|__ ___ | ____ | |
|
|
| |____ | _____ | | | | |___ | __|
|
|
| | | | | | | | |_| | ___| | |
|
|
| | | |___| | | | |__ __| | |_ | | |
|
|
|___|_______|___|____ ____|____|___|
|
|
"
|
|
CALL FIXED-FONT-OFF
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TO-CELLAR
|
|
FSET? SKIS,WORNBIT \?CND1
|
|
PRINT SNOWPLOW
|
|
CRLF
|
|
CRLF
|
|
?CND1: RETURN CELLAR
|
|
|
|
.ENDI
|