mirror of
https://github.com/historicalsource/hollywoodhijinx
synced 2024-04-25 21:49:32 +03:00
2791 lines
51 KiB
Plaintext
2791 lines
51 KiB
Plaintext
|
|
|
|
.FUNCT DESCRIBE-ROOM,VERB-IS-LOOK=0,FIRST-VISIT=0
|
|
ZERO? LIT \?CND1
|
|
EQUAL? HERE,ON-POOL-2 /?CND1
|
|
CALL NOW-BLACK
|
|
CRLF
|
|
RFALSE
|
|
?CND1: FSET? HERE,TOUCHBIT /?CND6
|
|
FSET HERE,TOUCHBIT
|
|
SET 'FIRST-VISIT,TRUE-VALUE
|
|
?CND6: CALL DPRINT,HERE
|
|
LOC PLAYER
|
|
FSET? STACK,VEHBIT \?CND9
|
|
PRINTI ", on"
|
|
LOC PLAYER
|
|
CALL TPRINT,STACK
|
|
?CND9: CRLF
|
|
ZERO? VERB-IS-LOOK \?THN15
|
|
EQUAL? VERBOSITY,2 /?THN15
|
|
ZERO? FIRST-VISIT /TRUE
|
|
EQUAL? VERBOSITY,1 \TRUE
|
|
?THN15: GETP HERE,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
ZERO? STACK \?CND19
|
|
GETP HERE,P?LDESC
|
|
PRINT STACK
|
|
?CND19: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBE-OBJECTS,O,STR,1ST?=1,AV
|
|
LOC WINNER >AV
|
|
FIRST? HERE >O /?KLU48
|
|
?KLU48: ZERO? O /FALSE
|
|
?PRG4: ZERO? O /?REP5
|
|
CALL DESCRIBABLE?,O
|
|
ZERO? STACK /?CND6
|
|
FSET? O,TOUCHBIT /?CND6
|
|
GETP O,P?FDESC >STR
|
|
ZERO? STR /?CND6
|
|
CRLF
|
|
PRINT STR
|
|
FSET? O,CONTBIT \?CND13
|
|
ADD D-ALL?,D-PARA?
|
|
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
|
|
?CND13: CRLF
|
|
?CND6: NEXT? O >O /?PRG4
|
|
JUMP ?PRG4
|
|
?REP5: FIRST? HERE >O /?KLU50
|
|
?KLU50: SET '1ST?,TRUE-VALUE
|
|
?PRG16: ZERO? O /?REP17
|
|
CALL DESCRIBABLE?,O
|
|
ZERO? STACK /?CND18
|
|
GETP O,P?FDESC
|
|
ZERO? STACK /?ELS22
|
|
FSET? O,TOUCHBIT \?CND18
|
|
?ELS22: GETP O,P?DESCFCN >STR
|
|
ZERO? STR /?ELS28
|
|
CALL STR,M-OBJDESC >STR
|
|
ZERO? STR /?ELS28
|
|
FSET? O,CONTBIT \?CND31
|
|
EQUAL? STR,M-FATAL /?CND31
|
|
ADD D-ALL?,D-PARA?
|
|
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
|
|
?CND31: CRLF
|
|
JUMP ?CND18
|
|
?ELS28: GETP O,P?LDESC >STR
|
|
ZERO? STR /?CND18
|
|
PRINT STR
|
|
FSET? O,CONTBIT \?CND38
|
|
ADD D-ALL?,D-PARA?
|
|
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,STACK
|
|
?CND38: CRLF
|
|
?CND18: NEXT? O >O /?PRG16
|
|
JUMP ?PRG16
|
|
?REP17: CALL DESCRIBE-CONTENTS,HERE,FALSE-VALUE,0
|
|
ZERO? AV /FALSE
|
|
EQUAL? HERE,AV /FALSE
|
|
CALL DESCRIBE-CONTENTS,AV,FALSE-VALUE,0
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DESCRIBE-CONTENTS,OBJ,LEVEL=-1,ALL?=D-ALL?,F=0,N,1ST?=1,IT?=0,START?=0,TWO?=0,PARA?=0
|
|
EQUAL? LEVEL,2 \?ELS3
|
|
SET 'LEVEL,TRUE-VALUE
|
|
SET 'PARA?,TRUE-VALUE
|
|
SET 'START?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?ELS3: BTST ALL?,D-PARA? \?CND1
|
|
SET 'PARA?,TRUE-VALUE
|
|
?CND1: FIRST? OBJ >N /?KLU145
|
|
?KLU145: ZERO? START? \?THN11
|
|
IN? OBJ,ROOMS /?THN11
|
|
FSET? OBJ,ACTORBIT /?THN11
|
|
FSET? OBJ,CONTBIT \FALSE
|
|
FSET? OBJ,OPENBIT /?THN15
|
|
FSET? OBJ,TRANSBIT \FALSE
|
|
?THN15: FSET? OBJ,SEARCHBIT \FALSE
|
|
ZERO? N /FALSE
|
|
?THN11:
|
|
?PRG17: ZERO? N /?THN26
|
|
CALL DESCRIBABLE?,N
|
|
ZERO? STACK /?CND19
|
|
BTST ALL?,D-ALL? /?THN26
|
|
CALL SIMPLE-DESC?,N
|
|
ZERO? STACK /?CND19
|
|
?THN26: ZERO? F /?CND28
|
|
ZERO? 1ST? /?ELS34
|
|
SET '1ST?,FALSE-VALUE
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?ELS38
|
|
ZERO? START? \?CND32
|
|
ZERO? PARA? \?ELS44
|
|
EQUAL? OBJ,PLAYER /?CND45
|
|
CRLF
|
|
?CND45: SET 'PARA?,TRUE-VALUE
|
|
JUMP ?CND42
|
|
?ELS44: EQUAL? LEVEL,TRUE-VALUE \?CND42
|
|
PRINTC 32
|
|
?CND42: EQUAL? OBJ,HERE \?ELS52
|
|
PRINT YOU-SEE
|
|
JUMP ?CND32
|
|
?ELS52: EQUAL? OBJ,PLAYER \?ELS54
|
|
PRINTI "You have"
|
|
JUMP ?CND32
|
|
?ELS54: FSET? OBJ,SURFACEBIT \?ELS56
|
|
PRINTI "Sitting on"
|
|
CALL TPRINT,OBJ
|
|
PRINTI " is"
|
|
JUMP ?CND32
|
|
?ELS56: PRINTI "It looks as if"
|
|
CALL TPRINT,OBJ
|
|
FSET? OBJ,ACTORBIT \?ELS61
|
|
PRINTI " has"
|
|
JUMP ?CND32
|
|
?ELS61: PRINTI " contains"
|
|
JUMP ?CND32
|
|
?ELS38: EQUAL? LEVEL,-1 /?CND32
|
|
PRINT LEVEL
|
|
JUMP ?CND32
|
|
?ELS34: ZERO? N /?ELS70
|
|
PRINTC 44
|
|
JUMP ?CND32
|
|
?ELS70: PRINTI " and"
|
|
?CND32: CALL APRINT,F
|
|
FSET? F,WORNBIT \?ELS76
|
|
PRINTI " (being worn)"
|
|
JUMP ?CND74
|
|
?ELS76: FSET? F,ONBIT \?CND74
|
|
PRINTI " (providing light)"
|
|
?CND74: ZERO? IT? \?ELS84
|
|
ZERO? TWO? \?ELS84
|
|
SET 'IT?,F
|
|
JUMP ?CND28
|
|
?ELS84: SET 'TWO?,TRUE-VALUE
|
|
SET 'IT?,FALSE-VALUE
|
|
?CND28: SET 'F,N
|
|
?CND19: ZERO? N /?CND89
|
|
NEXT? N >N /?CND89
|
|
?CND89: ZERO? F \?PRG17
|
|
ZERO? N \?PRG17
|
|
ZERO? IT? /?CND98
|
|
ZERO? TWO? \?CND98
|
|
CALL THIS-IS-IT,IT?
|
|
?CND98: ZERO? 1ST? /?CND103
|
|
ZERO? START? /?CND103
|
|
PRINTI " nothing"
|
|
RFALSE
|
|
?CND103: ZERO? 1ST? \?REP18
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP18
|
|
EQUAL? OBJ,HERE \?CND113
|
|
PRINTI " here"
|
|
?CND113: PRINTC 46
|
|
?REP18: FIRST? OBJ >F /?KLU147
|
|
?KLU147:
|
|
?PRG116: ZERO? F /?REP117
|
|
FSET? F,CONTBIT \?CND118
|
|
CALL DESCRIBABLE?,F,TRUE-VALUE
|
|
ZERO? STACK /?CND118
|
|
BTST ALL?,D-ALL? /?THN125
|
|
CALL SIMPLE-DESC?,F
|
|
ZERO? STACK /?CND118
|
|
?THN125: ZERO? PARA? /?ELS134
|
|
PUSH 3
|
|
JUMP ?CND130
|
|
?ELS134: PUSH D-ALL?
|
|
?CND130: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK
|
|
ZERO? STACK /?CND118
|
|
SET '1ST?,FALSE-VALUE
|
|
SET 'PARA?,TRUE-VALUE
|
|
?CND118: NEXT? F >F /?PRG116
|
|
JUMP ?PRG116
|
|
?REP117: ZERO? 1ST? \?CND138
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND138
|
|
LOC WINNER
|
|
EQUAL? OBJ,HERE,STACK \?CND138
|
|
CRLF
|
|
?CND138: ZERO? 1ST? \FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBABLE?,OBJ,CONT?=0
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
EQUAL? OBJ,WINNER /FALSE
|
|
LOC WINNER
|
|
EQUAL? OBJ,STACK \?ELS9
|
|
LOC WINNER
|
|
EQUAL? HERE,STACK \FALSE
|
|
?ELS9: ZERO? CONT? \TRUE
|
|
FSET? OBJ,NDESCBIT \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT SIMPLE-DESC?,OBJ,STR
|
|
GETP OBJ,P?FDESC
|
|
ZERO? STACK /?ELS5
|
|
FSET? OBJ,TOUCHBIT \FALSE
|
|
?ELS5: GETP OBJ,P?DESCFCN >STR
|
|
ZERO? STR /?ELS9
|
|
CALL STR,M-OBJDESC?
|
|
ZERO? STACK \FALSE
|
|
?ELS9: GETP OBJ,P?LDESC
|
|
ZERO? STACK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DESCRIBE-NOTHING
|
|
CALL DESCRIBE-CONTENTS,PRSO,2
|
|
ZERO? STACK /FALSE
|
|
IN? PLAYER,PRSO /TRUE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ALARM
|
|
EQUAL? PRSO,ME,ROOMS \?ELS3
|
|
PRINTI "But you're "
|
|
JUMP ?CND1
|
|
?ELS3: FSET? PRSO,ACTORBIT \?ELS5
|
|
CALL BUT-THE,PRSO
|
|
PRINTI "is "
|
|
JUMP ?CND1
|
|
?ELS5: CALL WHAT-A-CONCEPT
|
|
RTRUE
|
|
?CND1: PRINTR "already wide awake!"
|
|
|
|
|
|
.FUNCT ALREADY-OPEN
|
|
CALL ITS-ALREADY,STR?23
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ALREADY-CLOSED
|
|
CALL ITS-ALREADY,STR?24
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ASK-ABOUT
|
|
FSET? PRSO,ACTORBIT \?ELS5
|
|
SET 'WINNER,PRSO
|
|
CALL PERFORM,V?TELL,PRSO
|
|
SET 'WINNER,PLAYER
|
|
RTRUE
|
|
?ELS5: CALL V-ASK-FOR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ASK-FOR
|
|
EQUAL? PRSO,ME,ROOMS \?ELS3
|
|
CALL PERFORM,V?TELL,ME
|
|
JUMP ?CND1
|
|
?ELS3: CALL NOT-LIKELY,PRSO,STR?25
|
|
?CND1: CALL PCLEAR
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-BITE
|
|
CALL HACK-HACK,STR?26
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BLOW-INTO
|
|
FSET? PRSO,ACTORBIT \?ELS5
|
|
CALL PERFORM,V?USE,PRSO
|
|
RTRUE
|
|
?ELS5: CALL HACK-HACK,STR?27
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-BOARD
|
|
LOC PLAYER
|
|
EQUAL? PRSO,STACK \?ELS5
|
|
PRINTR "Look around you."
|
|
?ELS5: CALL ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /FALSE
|
|
PRINTR "You're holding it!"
|
|
|
|
|
|
.FUNCT V-BOARD
|
|
FSET? PRSO,VEHBIT \?ELS5
|
|
MOVE PLAYER,PRSO
|
|
PRINTI "You are now on"
|
|
CALL TPRINT,PRSO
|
|
PRINTR "."
|
|
?ELS5: PRINTI "You can't get into"
|
|
CALL TPRINT,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-BURN
|
|
FSET? PRSI,FLAMEBIT \?ELS5
|
|
FSET? PRSO,BURNBIT \?ELS10
|
|
REMOVE PRSO
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " catches fire and is reduced to ashes."
|
|
?ELS10: PRINT PYRO
|
|
RTRUE
|
|
?ELS5: PRINTI "With"
|
|
CALL APRINT,PRSI
|
|
PRINTI "? "
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BUY
|
|
CALL VISIBLE?,PRSO
|
|
ZERO? STACK \?ELS5
|
|
CALL CANT-SEE-ANY,PRSO
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,TAKEBIT /?ELS7
|
|
FSET? PRSO,TRYTAKEBIT /?ELS7
|
|
PRINT YOU-CANT
|
|
PRINTR "buy that!"
|
|
?ELS7: CALL ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK /?ELS11
|
|
PRINTR "You already have one."
|
|
?ELS11: ZERO? PRSI /?ELS13
|
|
CALL NOT-LIKELY,PRSI,STR?31
|
|
RSTACK
|
|
?ELS13: PRINTR "You don't have any money."
|
|
|
|
|
|
.FUNCT CANT-CLOSE-THAT
|
|
PRINT YOU-CANT
|
|
PRINTR "close that!"
|
|
|
|
|
|
.FUNCT CANT-GO
|
|
PRINT YOU-CANT
|
|
PRINTR "go that way."
|
|
|
|
|
|
.FUNCT CANT-LOCK,UN?=0
|
|
PRINT YOU-CANT
|
|
ZERO? UN? /?CND1
|
|
PRINTI "un"
|
|
?CND1: PRINTI "lock"
|
|
CALL TPRINT,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-CHASTISE
|
|
ZERO? LIT \?ELS5
|
|
CALL TOO-DARK
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSO,INTDIR \?ELS7
|
|
PRINTR "You'll have to go in that direction to see what's there."
|
|
?ELS7: PRINTR "Use prepositions to indicate precisely what you want to do. For example, LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc."
|
|
|
|
|
|
.FUNCT V-CLEAN
|
|
CALL NOT-A,STR?32
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB
|
|
CALL PERFORM,V?CLIMB-UP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLIMB-DOWN
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
?ELS5: CALL WHAT-A-CONCEPT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-ON
|
|
EQUAL? P-PRSA-WORD,W?HOLD \?ELS5
|
|
CALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?ELS5: PRINT YOU-CANT
|
|
PRINTR "climb onto that."
|
|
|
|
|
|
.FUNCT V-CLIMB-OVER
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL V-WALK-AROUND
|
|
RSTACK
|
|
?ELS5: PRINT YOU-CANT
|
|
PRINTR "climb over that."
|
|
|
|
|
|
.FUNCT V-CLIMB-UP
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
?ELS5: CALL WHAT-A-CONCEPT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLOSE
|
|
FSET? PRSO,ACTORBIT \?ELS5
|
|
CALL NOT-A,STR?33
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,SURFACEBIT \?ELS7
|
|
CALL CANT-CLOSE-THAT
|
|
RSTACK
|
|
?ELS7: FSET? PRSO,CONTBIT /?ELS9
|
|
FSET? PRSO,DOORBIT /?ELS9
|
|
CALL PERFORM,V?OPEN,PRSO
|
|
RTRUE
|
|
?ELS9: FSET? PRSO,SURFACEBIT /?ELS13
|
|
GETP PRSO,P?CAPACITY
|
|
ZERO? STACK /?ELS13
|
|
FSET? PRSO,OPENBIT \?ELS20
|
|
CALL NOW-CLOSED-OR-OPEN,PRSO
|
|
CALL SAY-IF-NOT-LIT
|
|
RSTACK
|
|
?ELS20: CALL ALREADY-CLOSED
|
|
RSTACK
|
|
?ELS13: FSET? PRSO,DOORBIT \?ELS24
|
|
FSET? PRSO,OPENBIT \?ELS29
|
|
FCLEAR PRSO,OPENBIT
|
|
CALL SAY-THE,PRSO
|
|
PRINTC 32
|
|
CALL PICK-ONE,DOOR-NOISES
|
|
PRINT STACK
|
|
PRINTR " as it closes."
|
|
?ELS29: CALL ALREADY-CLOSED
|
|
RSTACK
|
|
?ELS24: CALL CANT-CLOSE-THAT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-COMPARE
|
|
PRINTR "You compare the two items and find nothing interesting."
|
|
|
|
|
|
.FUNCT V-COUNT
|
|
CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-COVER
|
|
CALL PERFORM,V?PUT-ON,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CROSS
|
|
PRINT YOU-CANT
|
|
PRINTR "cross that!"
|
|
|
|
|
|
.FUNCT V-CUT
|
|
CALL NOT-LIKELY,PRSI,STR?34
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-$DEBUG
|
|
ZERO? DEBUG /?ELS5
|
|
SET 'DEBUG,FALSE-VALUE
|
|
PRINTR "Debug off."
|
|
?ELS5: SET 'DEBUG,TRUE-VALUE
|
|
PRINTR "Debug on."
|
|
|
|
|
|
.FUNCT V-DIAGNOSE
|
|
PRINTI "You're in good health"
|
|
RANDOM 100
|
|
LESS? 50,STACK /?CND1
|
|
PRINTI "... at the moment"
|
|
?CND1: PRINTR "."
|
|
|
|
|
|
.FUNCT V-DIG-WITH
|
|
CALL PERFORM,V?DIG,GROUND,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DIG
|
|
ZERO? PRSI \?CND1
|
|
IN? SHOVEL,PLAYER \?ELS6
|
|
SET 'PRSI,SHOVEL
|
|
PRINTI "[with the shovel]"
|
|
CRLF
|
|
JUMP ?CND1
|
|
?ELS6: SET 'PRSI,HANDS
|
|
PRINTI "[with your hands]"
|
|
CRLF
|
|
?CND1: EQUAL? PRSO,SAND,GROUND \?ELS13
|
|
EQUAL? PRSI,SHOVEL /?ELS18
|
|
PRINTR "I suppose you also excavate tunnels with a teaspoon."
|
|
?ELS18: EQUAL? PRSO,SAND /?THN21
|
|
EQUAL? HERE,BEACH \?ELS20
|
|
?THN21: PRINTR "You find nothing, so you fill in the hole."
|
|
?ELS20: GETP HERE,P?CAPACITY
|
|
EQUAL? STACK,2 \?ELS24
|
|
PRINTR "You attempt to dig in the stone path, but it proves too tough for your efforts."
|
|
?ELS24: GETP HERE,P?CAPACITY
|
|
ZERO? STACK \?ELS26
|
|
PRINTR "The ground is too hard here."
|
|
?ELS26: GETP HERE,P?CAPACITY
|
|
EQUAL? STACK,10 /?THN29
|
|
GETP HERE,P?CAPACITY
|
|
EQUAL? STACK,20 \?ELS28
|
|
?THN29: PRINTR "You can't dig a hole here!"
|
|
?ELS28: EQUAL? HERE,HEART-OF-MAZE \?ELS37
|
|
IN? HEART-OF-MAZE-HOLE,HEART-OF-MAZE \?ELS42
|
|
PRINTR "You already dug a hole here."
|
|
?ELS42: PRINTI "You dig a hole and uncover"
|
|
CALL ARPRINT,RUBBER-STAMP
|
|
MOVE HEART-OF-MAZE-HOLE,HEART-OF-MAZE
|
|
RTRUE
|
|
?ELS37: GETP HERE,P?CAPACITY
|
|
EQUAL? STACK,1 \?ELS51
|
|
GETB HM-TABLE,HM-ROOM
|
|
GRTR? STACK,15 \?ELS51
|
|
PRINTR "You've already dug a hole here."
|
|
?ELS51: GETP HERE,P?CAPACITY
|
|
EQUAL? STACK,1 \FALSE
|
|
MOVE MAZE-HOLE,HERE
|
|
GETB HM-TABLE,HM-ROOM
|
|
BOR STACK,X-H
|
|
PUTB HM-TABLE,HM-ROOM,STACK
|
|
GETB HM-TABLE,HM-ROOM >HM-BITS
|
|
PRINTR "You dig a good sized hole, but find nothing."
|
|
?ELS13: CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DISEMBARK
|
|
LOC PLAYER
|
|
EQUAL? STACK,PRSO /?ELS5
|
|
PRINTI "Look around you."
|
|
CRLF
|
|
RETURN 2
|
|
?ELS5: MOVE WINNER,HERE
|
|
PRINTI "You are no longer on"
|
|
CALL TPRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-DRINK
|
|
PRINT YOU-CANT
|
|
PRINTR "drink that!"
|
|
|
|
|
|
.FUNCT V-DRINK-FROM
|
|
CALL WHAT-A-CONCEPT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SPECIAL-DROP
|
|
EQUAL? HERE,ROOF-1,ROOF-2 \?ELS5
|
|
EQUAL? PRSO,FINCH \?ELS12
|
|
FSET? FINCH,BROKEN-BIT \?THN9
|
|
?ELS12: CALL ULTIMATELY-IN?,FINCH,PRSO
|
|
ZERO? STACK /?CND6
|
|
FSET? FINCH,BROKEN-BIT /?CND6
|
|
?THN9: CALL BREAK-FINCH,TRUE-VALUE
|
|
?CND6: EQUAL? PRSO,BLUE-CANDLE,WHITE-CANDLE,RED-CANDLE \?CND15
|
|
FSET? PRSO,FLAMEBIT \?CND15
|
|
CALL BLOW-OUT-CANDLE,PRSO,TRUE-VALUE
|
|
?CND15: MOVE PRSO,PATIO
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " slides off the roof."
|
|
?ELS5: EQUAL? HERE,ON-POOL-1,ON-POOL-2,INLET /?THN22
|
|
EQUAL? HERE,IN-POOL-1,IN-POOL-2 \?ELS21
|
|
?THN22: CALL PERFORM,V?PUT,PRSO,WATER
|
|
RTRUE
|
|
?ELS21: EQUAL? HERE,CHIMNEY-2 /?THN26
|
|
EQUAL? HERE,CHIMNEY-1 \FALSE
|
|
?THN26: CALL PERFORM,V?PUT,PRSO,CHIMNEY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DROP
|
|
CALL SPECIAL-DROP
|
|
ZERO? STACK \TRUE
|
|
CALL IDROP
|
|
ZERO? STACK /FALSE
|
|
PRINTR "Dropped."
|
|
|
|
|
|
.FUNCT IDROP
|
|
CALL DONT-HAVE?,PRSO
|
|
ZERO? STACK \FALSE
|
|
IN? PRSO,WINNER /?ELS5
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?ELS5
|
|
PRINT YOU-CANT
|
|
PRINTI "do that while"
|
|
CALL TPRINT,PRSO
|
|
CALL IS-CLOSED
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: FSET? PRSO,WORNBIT \?ELS9
|
|
PRINTI "You'll have to take off"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " first."
|
|
CRLF
|
|
RFALSE
|
|
?ELS9: MOVE PRSO,HERE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EAT
|
|
CALL NOT-LIKELY,PRSO,STR?35
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-EMPTY,OBJ,NXT
|
|
FSET? PRSO,CONTBIT \?ELS3
|
|
FSET? PRSO,OPENBIT \?ELS6
|
|
FIRST? PRSO >OBJ /?KLU28
|
|
?KLU28: ZERO? OBJ /?ELS9
|
|
?PRG11: ZERO? OBJ /TRUE
|
|
NEXT? OBJ >NXT /?KLU29
|
|
?KLU29: FSET? OBJ,NARTICLEBIT /?CND17
|
|
PRINTI "The "
|
|
?CND17: CALL DPRINT,OBJ
|
|
PRINTI ": "
|
|
CALL PERFORM,V?TAKE,OBJ,PRSO
|
|
SET 'OBJ,NXT
|
|
JUMP ?PRG11
|
|
?ELS9: CALL BUT-THE,PRSO
|
|
PRINTR "is already empty!"
|
|
?ELS6: CALL ITS-CLOSED,PRSO
|
|
RTRUE
|
|
?ELS3: PRINT YOU-CANT
|
|
PRINTR "empty that!"
|
|
|
|
|
|
.FUNCT V-ENTER
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL DO-WALK,P?IN
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,DOORBIT \?ELS7
|
|
CALL OTHER-SIDE,PRSO
|
|
CALL DO-WALK,STACK
|
|
RSTACK
|
|
?ELS7: IN? PRSO,WINNER \?ELS9
|
|
PRINTR "That would involve quite a contortion!"
|
|
?ELS9: FSET? PRSO,WEARBIT \?ELS11
|
|
CALL PRESUMABLY-YOU-WANT-TO,STR?36,PRSO
|
|
CALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?ELS11: FSET? PRSO,VEHBIT \?ELS13
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?ELS13: PRINTI "You hit your head against"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " as you attempt this feat."
|
|
|
|
|
|
.FUNCT PRE-EXAMINE
|
|
ZERO? LIT \FALSE
|
|
CALL TOO-DARK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXAMINE
|
|
FSET? PRSO,DOORBIT \?ELS5
|
|
PRINTI "It looks as if"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " is "
|
|
FSET? PRSO,OPENBIT \?ELS8
|
|
PRINTI "open"
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "closed"
|
|
?CND6: PRINTR "."
|
|
?ELS5: FSET? PRSO,SURFACEBIT \?ELS12
|
|
CALL V-LOOK-ON
|
|
RSTACK
|
|
?ELS12: FSET? PRSO,CONTBIT \?ELS14
|
|
FSET? PRSO,OPENBIT /?THN20
|
|
FSET? PRSO,TRANSBIT \?ELS19
|
|
?THN20: CALL V-LOOK-INSIDE
|
|
RSTACK
|
|
?ELS19: CALL ITS-CLOSED,PRSO
|
|
RSTACK
|
|
?ELS14: FSET? PRSO,READBIT \?ELS25
|
|
CALL PERFORM,V?READ,PRSO
|
|
RSTACK
|
|
?ELS25: PRINTI "You see nothing "
|
|
CALL PICK-ONE,YAWNS
|
|
PRINT STACK
|
|
PRINTI " about"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-EXIT
|
|
CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FAILED
|
|
PRINTR "Failed."
|
|
|
|
|
|
.FUNCT V-FILL
|
|
ZERO? PRSI \?ELS5
|
|
CALL GLOBAL-IN?,WATER,HERE
|
|
ZERO? STACK /?ELS10
|
|
CALL PERFORM,V?FILL,PRSO,WATER
|
|
RTRUE
|
|
?ELS10: FSET? PRSO,CONTBIT \?ELS12
|
|
PRINTR "There's nothing to fill it with."
|
|
?ELS12: CALL V-STAND-UNDER
|
|
RSTACK
|
|
?ELS5: EQUAL? PRSI,PORTABLE-WATER,WATER \?ELS16
|
|
CALL GLOBAL-IN?,WATER,HERE
|
|
ZERO? STACK \?ELS21
|
|
CALL CANT-SEE-ANY,WATER
|
|
RSTACK
|
|
?ELS21: EQUAL? PRSO,BUCKET /?ELS23
|
|
CALL V-STAND-UNDER
|
|
RSTACK
|
|
?ELS23: FIRST? BUCKET \?ELS25
|
|
FIRST? BUCKET /?KLU34
|
|
?KLU34: EQUAL? STACK,PORTABLE-WATER /?ELS25
|
|
PRINTR "That would get the stuff in the bucket all wet."
|
|
?ELS25: MOVE PORTABLE-WATER,BUCKET
|
|
CALL QUEUE,I-DRIP,2
|
|
SET 'AMOUNT-OF-WATER,26
|
|
PRINTI "You fill"
|
|
CALL TPRINT,BUCKET
|
|
PRINTR ", which naturally leaks slowly."
|
|
?ELS16: EQUAL? PRSI,PORTABLE-WATER \?ELS31
|
|
CALL PERFORM,V?POUR,PORTABLE-WATER,PRSO
|
|
CALL THIS-IS-IT,PRSO
|
|
RTRUE
|
|
?ELS31: CALL V-STAND-UNDER
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FIND,L
|
|
LOC PRSO >L
|
|
EQUAL? PRSO,ME,HANDS \?ELS3
|
|
PRINTI "You're right here"
|
|
JUMP ?CND1
|
|
?ELS3: IN? PRSO,PLAYER \?ELS5
|
|
PRINTI "You're holding it"
|
|
JUMP ?CND1
|
|
?ELS5: IN? PRSO,HERE /?THN8
|
|
EQUAL? PRSO,PSEUDO-OBJECT \?ELS7
|
|
?THN8: CALL BUT-THE,PRSO
|
|
PRINTI "is right in front of you"
|
|
JUMP ?CND1
|
|
?ELS7: IN? PRSO,LOCAL-GLOBALS \?ELS11
|
|
CALL HOW?
|
|
RTRUE
|
|
?ELS11: FSET? L,ACTORBIT \?ELS13
|
|
CALL VISIBLE?,L
|
|
ZERO? STACK /?ELS13
|
|
PRINTI "It looks as if"
|
|
CALL TPRINT,L
|
|
PRINTI " has it"
|
|
JUMP ?CND1
|
|
?ELS13: CALL SEE-INSIDE?,L
|
|
ZERO? STACK /?ELS17
|
|
CALL VISIBLE?,L
|
|
ZERO? STACK /?ELS17
|
|
PRINTI "It's "
|
|
FSET? L,SURFACEBIT \?ELS22
|
|
PRINTI "on"
|
|
JUMP ?CND20
|
|
?ELS22: PRINTI "in"
|
|
?CND20: CALL TPRINT,L
|
|
JUMP ?CND1
|
|
?ELS17: PRINTI "You'll have to do that yourself"
|
|
?CND1: PRINTR "."
|
|
|
|
|
|
.FUNCT FIND-IN,WHERE,WHAT,W
|
|
FIRST? WHERE >W /?KLU11
|
|
?KLU11: ZERO? W /FALSE
|
|
?PRG4: FSET? W,WHAT \?ELS8
|
|
RETURN W
|
|
?ELS8: NEXT? W >W /?PRG4
|
|
RFALSE
|
|
|
|
|
|
.FUNCT FINISH,REPEATING=0,WORD
|
|
CRLF
|
|
ZERO? REPEATING \?CND1
|
|
CALL V-SCORE
|
|
CRLF
|
|
?CND1: PRINTI "Do you want to restart the story, restore a saved position, or quit?
|
|
|
|
(Please type RESTART, RESTORE or QUIT.) >"
|
|
READ P-INBUF,P-LEXV
|
|
GET P-LEXV,1 >WORD
|
|
EQUAL? WORD,W?RESTAR \?ELS8
|
|
RESTART
|
|
CALL FAILED
|
|
CALL FINISH,TRUE-VALUE
|
|
RSTACK
|
|
?ELS8: EQUAL? WORD,W?RESTOR \?ELS10
|
|
RESTORE \?ELS15
|
|
CALL SAY-OKAY
|
|
RSTACK
|
|
?ELS15: CALL FAILED
|
|
CALL FINISH,TRUE-VALUE
|
|
RSTACK
|
|
?ELS10: EQUAL? WORD,W?QUIT,W?Q \?ELS19
|
|
QUIT
|
|
RTRUE
|
|
?ELS19: CALL FINISH,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FLY
|
|
PRINTR "That's not in the script!"
|
|
|
|
|
|
.FUNCT V-FOCUS
|
|
PRINTR "It's your thinking that's out of focus."
|
|
|
|
|
|
.FUNCT V-FOLLOW,WHERE
|
|
LOC PRSO >WHERE
|
|
CALL BUT-THE,PRSO
|
|
PRINTI "is "
|
|
EQUAL? WHERE,HERE /?THN4
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK /?ELS3
|
|
?THN4: PRINTI "right here in front of you"
|
|
JUMP ?CND1
|
|
?ELS3: EQUAL? WHERE,PLAYER \?ELS7
|
|
PRINTI "in"
|
|
CALL DPRINT,HANDS
|
|
PRINTC 115
|
|
JUMP ?CND1
|
|
?ELS7: IN? WHERE,PLAYER \?ELS9
|
|
PRINTI "in"
|
|
CALL TPRINT,WHERE
|
|
JUMP ?CND1
|
|
?ELS9: PRINTI "nowhere to be seen"
|
|
?CND1: PRINTR "!"
|
|
|
|
|
|
.FUNCT PRE-GIVE
|
|
ZERO? PRSO /?THN6
|
|
ZERO? PRSI \?ELS5
|
|
?THN6: CALL REFERRING
|
|
RTRUE
|
|
?ELS5: IN? PRSO,LOCAL-GLOBALS /?THN10
|
|
IN? PRSO,PSEUDO-OBJECT \?ELS9
|
|
?THN10: CALL NOT-HOLDING
|
|
RTRUE
|
|
?ELS9: CALL DONT-HAVE?,PRSO
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSI,ACTORBIT /?ELS15
|
|
PRINT YOU-CANT
|
|
PRINTR "give anything to that!"
|
|
?ELS15: FSET? PRSO,WORNBIT \FALSE
|
|
CALL TAKE-OFF-PRSO-FIRST
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-GIVE
|
|
FSET? PRSI,ACTORBIT \FALSE
|
|
PRINTI "Politely,"
|
|
CALL TPRINT,PRSI
|
|
PRINTR " refuses your offer."
|
|
|
|
|
|
.FUNCT V-SGIVE
|
|
CALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GOTO,RM,V?=1,OLIT,OHERE,X
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-EXIT >X
|
|
SET 'OHERE,HERE
|
|
SET 'OLIT,LIT
|
|
MOVE WINNER,RM
|
|
SET 'HERE,RM
|
|
CALL LIT?,HERE >LIT
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
CALL DESCRIBE-ROOM
|
|
ZERO? STACK /TRUE
|
|
ZERO? VERBOSITY /TRUE
|
|
CALL DESCRIBE-OBJECTS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HACK-HACK,STR
|
|
PRINT STR
|
|
CALL TPRINT,PRSO
|
|
PRINTC 32
|
|
CALL PICK-ONE,HO-HUM
|
|
PRINT STACK
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT PRE-HANG-UP
|
|
CALL ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK \FALSE
|
|
EQUAL? PRSO,PHONE /FALSE
|
|
CALL NOT-HOLDING,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HANG-UP
|
|
ZERO? PRSI \?ELS5
|
|
EQUAL? HERE,CLOSET \?ELS10
|
|
PRINTR "Next time, say which peg to hang it on."
|
|
?ELS10: PRINTR "There's no place to hang it up."
|
|
?ELS5: PRINTI "You can't hang something on"
|
|
CALL ARPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HELLO,WHO
|
|
ZERO? PRSO /?ELS3
|
|
SET 'WHO,PRSO
|
|
JUMP ?CND1
|
|
?ELS3: CALL ANYONE-HERE? >WHO
|
|
ZERO? WHO /?CND1
|
|
CALL SPOKEN-TO,WHO
|
|
CALL PERFORM,V?HELLO,WHO
|
|
RTRUE
|
|
?CND1: ZERO? WHO /?ELS15
|
|
FSET? WHO,ACTORBIT \?ELS21
|
|
PRINTI "It's apparent that"
|
|
CALL TPRINT,WHO
|
|
PRINTR " didn't expect you to say that."
|
|
?ELS21: CALL NOT-LIKELY,WHO,STR?25
|
|
RSTACK
|
|
?ELS15: CALL TALK-TO-SELF
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HELP
|
|
PRINTR "[If you're really stuck, maps and InvisiClues (TM) hint booklets are available using the order form that came in your HOLLYWOOD HIJINX package.]"
|
|
|
|
|
|
.FUNCT V-HIDE
|
|
PRINTR "There aren't any good hiding places here."
|
|
|
|
|
|
.FUNCT V-INVENTORY
|
|
CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE
|
|
ZERO? STACK \?CND1
|
|
PRINTI "You are empty-handed."
|
|
?CND1: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ITS-ALREADY,STR
|
|
PRINTI "It's already "
|
|
PRINT STR
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT JIGS-UP,REASON=0
|
|
ZERO? REASON /?CND1
|
|
PRINT REASON
|
|
CRLF
|
|
?CND1: CALL KILL-INTERRUPTS
|
|
CRLF
|
|
PRINTI "Fade to black:
|
|
|
|
**** You have died ****"
|
|
CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-KICK
|
|
CALL HACK-HACK,STR?44
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-KILL
|
|
FSET? PRSO,ACTORBIT /?ELS3
|
|
PRINT YOU-CANT
|
|
PRINTI "attack"
|
|
CALL TPRINT,PRSO
|
|
PRINTC 33
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "Attacking"
|
|
CALL TPRINT,PRSO
|
|
ZERO? PRSI /?CND6
|
|
PRINTI " with"
|
|
CALL TPRINT,PRSI
|
|
?CND6: PRINTI " isn't likely to help matters."
|
|
?CND1: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT KILL-INTERRUPTS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-KISS
|
|
PRINTR "Smack!"
|
|
|
|
|
|
.FUNCT V-KNOCK
|
|
FSET? PRSO,DOORBIT \?ELS5
|
|
CALL NO-ANSWER
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,ACTORBIT \?ELS7
|
|
CALL PERFORM,V?USE,PRSO
|
|
RTRUE
|
|
?ELS7: CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LAMP-OFF
|
|
EQUAL? P-PRSA-WORD,W?BLOW \?ELS5
|
|
EQUAL? PRSO,FLASHLIGHT,COMPUTER,FILM-PROJECTOR /?THN8
|
|
EQUAL? PRSO,SLIDE-PROJECTOR \?ELS5
|
|
?THN8: CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,LIGHTBIT /?THN12
|
|
FSET? PRSO,BURNBIT \?ELS11
|
|
?THN12: FSET? PRSO,ONBIT \?ELS18
|
|
FCLEAR PRSO,ONBIT
|
|
PRINTI "Okay,"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " is now off."
|
|
CRLF
|
|
CALL SAY-IF-NOT-LIT
|
|
RTRUE
|
|
?ELS18: PRINTR "It isn't on!"
|
|
?ELS11: CALL CANT-TURN,STR?46
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LAMP-ON
|
|
FSET? PRSO,LIGHTBIT \?ELS5
|
|
FSET? PRSO,ONBIT \?ELS10
|
|
CALL ITS-ALREADY,STR?47
|
|
RSTACK
|
|
?ELS10: FSET PRSO,ONBIT
|
|
PRINTI "Okay,"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " is now on."
|
|
CRLF
|
|
CALL NOW-LIT?
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,BURNBIT \?ELS14
|
|
CALL SET-FLAME-SOURCE
|
|
ZERO? STACK \TRUE
|
|
CALL PERFORM,V?BURN,PRSO,PRSI
|
|
RTRUE
|
|
?ELS14: CALL CANT-TURN,STR?48
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CANT-TURN,STRING
|
|
PRINT YOU-CANT
|
|
PRINTI "turn that o"
|
|
PRINT STRING
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-LEAP
|
|
EQUAL? PRSO,ROOMS /?ELS5
|
|
PRINTR "That'd be a cute trick."
|
|
?ELS5: EQUAL? HERE,IN-POOL-1,IN-POOL-2,ON-POOL-1 /?THN8
|
|
EQUAL? HERE,ON-POOL-2,INLET,UNDERPASS-1 /?THN8
|
|
EQUAL? HERE,UNDERPASS-2 \?ELS7
|
|
?THN8: CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
?ELS7: CALL GLOBAL-IN?,WATER,HERE
|
|
ZERO? STACK /?ELS11
|
|
CALL PERFORM,V?SWIM,WATER
|
|
RTRUE
|
|
?ELS11: CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAVE
|
|
EQUAL? PRSO,ROOMS /?THN4
|
|
FSET? PRSO,TAKEBIT /?ELS3
|
|
?THN4: CALL DO-WALK,P?OUT
|
|
RTRUE
|
|
?ELS3: CALL DONT-HAVE?,PRSO
|
|
ZERO? STACK \TRUE
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LET-GO
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LIE-DOWN
|
|
PRINTR "This is no time for resting."
|
|
|
|
|
|
.FUNCT V-LISTEN
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
EQUAL? HERE,CLOSET \?ELS10
|
|
ZERO? BUCKET-PEG /?ELS10
|
|
PRINTR """Hummm."""
|
|
?ELS10: PRINTR "You hear nothing special."
|
|
?ELS5: PRINTI "At the moment,"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " makes no sound."
|
|
|
|
|
|
.FUNCT V-LOCK
|
|
FSET? PRSO,DOORBIT /?THN6
|
|
FSET? PRSO,CONTBIT \?ELS5
|
|
?THN6: FSET? HERE,LOCKEDBIT /?ELS12
|
|
PRINT YOU-CANT
|
|
PRINTR "lock it from here."
|
|
?ELS12: FSET? PRSO,OPENBIT \?ELS14
|
|
PRINTI "You can't lock"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " when it's open. You should have eaten more fish (brain food) as Aunt Hildegarde told you to."
|
|
?ELS14: FSET? PRSO,LOCKEDBIT \?ELS16
|
|
PRINTI "You attempt to lock"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " and find it's already locked."
|
|
?ELS16: ZERO? PRSI /?ELS18
|
|
PRINTI "When was the last time you locked something with"
|
|
CALL ARPRINT,PRSI
|
|
RSTACK
|
|
?ELS18: FSET? HERE,LOCKEDBIT \?ELS21
|
|
FSET PRSO,LOCKEDBIT
|
|
PRINTI "You lock"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?ELS21: CALL THING-WONT-LOCK,PRSI,PRSO
|
|
RSTACK
|
|
?ELS5: CALL CANT-LOCK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT THING-WONT-LOCK,THING,CLOSED-THING,UN?=0
|
|
PRINTI "A quick test shows that"
|
|
CALL TPRINT,THING
|
|
PRINTI " won't "
|
|
ZERO? UN? /?CND1
|
|
PRINTI "un"
|
|
?CND1: PRINTI "lock"
|
|
CALL TRPRINT,CLOSED-THING
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK
|
|
CALL DESCRIBE-ROOM,TRUE-VALUE
|
|
ZERO? STACK /TRUE
|
|
CALL DESCRIBE-OBJECTS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-BEHIND
|
|
ZERO? LIT \?ELS5
|
|
CALL TOO-DARK
|
|
RSTACK
|
|
?ELS5: PRINTI "There's nothing behind"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-DOWN
|
|
ZERO? LIT \?ELS3
|
|
CALL TOO-DARK
|
|
RTRUE
|
|
?ELS3: EQUAL? HERE,UPPER-BEACH-STAIRS,LOWER-BEACH-STAIRS \?ELS5
|
|
CALL PERFORM,V?LOOK-INSIDE,GAP
|
|
RTRUE
|
|
?ELS5: EQUAL? PRSO,ROOMS \?ELS7
|
|
CALL PERFORM,V?EXAMINE,GROUND
|
|
RTRUE
|
|
?ELS7: CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-INSIDE
|
|
ZERO? LIT \?ELS5
|
|
CALL TOO-DARK
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,ACTORBIT \?ELS7
|
|
CALL NOT-A,STR?33
|
|
RSTACK
|
|
?ELS7: FSET? PRSO,DOORBIT \?ELS9
|
|
EQUAL? PRSO,UPSTAIRS-CD,FOYER-CD,CELLAR-CD /?THN17
|
|
EQUAL? PRSO,ATTIC-CD \?ELS14
|
|
?THN17: EQUAL? HERE,CLOSET /?ELS14
|
|
FSET? PRSO,OPENBIT \?ELS14
|
|
CALL PERFORM,V?LOOK-INSIDE,CLOSET-REF
|
|
RTRUE
|
|
?ELS14: CALL PERFORM,V?EXAMINE,PRSO
|
|
RTRUE
|
|
?ELS9: FSET? PRSO,CONTBIT \?ELS22
|
|
LOC WINNER
|
|
EQUAL? PRSO,STACK \?ELS27
|
|
CALL V-LOOK
|
|
RSTACK
|
|
?ELS27: FSET? PRSO,OPENBIT /?ELS29
|
|
FSET? PRSO,TRANSBIT /?ELS29
|
|
CALL ITS-CLOSED,PRSO
|
|
RSTACK
|
|
?ELS29: PRINT YOU-SEE
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINTI " in"
|
|
CALL TRPRINT,PRSO
|
|
RTRUE
|
|
?ELS22: PRINT YOU-CANT
|
|
PRINTI "look inside"
|
|
CALL ARPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-ON
|
|
ZERO? LIT \?CND1
|
|
CALL TOO-DARK
|
|
RTRUE
|
|
?CND1: PRINT YOU-SEE
|
|
FSET? PRSO,SURFACEBIT \?ELS8
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINTI " on"
|
|
CALL TRPRINT,PRSO
|
|
RTRUE
|
|
?ELS8: PRINTI " nothing "
|
|
CALL PICK-ONE,YAWNS
|
|
PRINT STACK
|
|
PRINTI " on"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-THRU
|
|
ZERO? LIT \?ELS5
|
|
CALL TOO-DARK
|
|
RSTACK
|
|
?ELS5: ZERO? PRSI /?ELS7
|
|
FSET? PRSI,TRANSBIT /?ELS7
|
|
PRINT YOU-CANT
|
|
PRINTR "look through that!"
|
|
?ELS7: CALL NOTHING-INTERESTING,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-UNDER
|
|
ZERO? LIT \?ELS5
|
|
CALL TOO-DARK
|
|
RSTACK
|
|
?ELS5: IN? PRSO,PLAYER \?ELS7
|
|
PRINTI "You're already "
|
|
FSET? PRSO,WORNBIT \?ELS10
|
|
PRINTI "wear"
|
|
JUMP ?CND8
|
|
?ELS10: PRINTI "hold"
|
|
?CND8: PRINTR "ing that!"
|
|
?ELS7: CALL NOTHING-INTERESTING,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-UP
|
|
ZERO? LIT \?ELS5
|
|
CALL TOO-DARK
|
|
RSTACK
|
|
?ELS5: EQUAL? HERE,UPSTAIRS-HALL-MIDDLE \?ELS7
|
|
FSET? ATTIC-DOOR,OPENBIT \?ELS12
|
|
PRINTR "You see an opening in the ceiling previously covered by the small panel. A ladder attached to the small door hangs down from the opening."
|
|
?ELS12: PRINTR "You see the outline of a small panel in the ceiling."
|
|
?ELS7: EQUAL? HERE,CLOSET-TOP \?ELS16
|
|
PRINTR "The shaft continues upward."
|
|
?ELS16: EQUAL? HERE,SHAFT-BOTTOM \?ELS18
|
|
PRINTI "You see the bottom of the closet "
|
|
EQUAL? CLOSET-FLOOR,UPSTAIRS-HALL-MIDDLE,ATTIC \?CND19
|
|
PRINTI "far "
|
|
?CND19: PRINTR "above you."
|
|
?ELS18: EQUAL? HERE,FIREPLACE,CHIMNEY-1,CHIMNEY-2 /?THN24
|
|
EQUAL? HERE,CHIMNEY-3 /?THN24
|
|
FSET? HERE,OUTDOORSBIT \?ELS23
|
|
?THN24: GRTR? MOVES,556 \?ELS30
|
|
PRINTR "You see the blue sky of a new day."
|
|
?ELS30: PRINTR "You see the night's sky."
|
|
?ELS23: PRINTR "You begin to get a stiff neck."
|
|
|
|
|
|
.FUNCT V-LOWER
|
|
CALL V-RAISE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MOVE
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL V-WALK-AROUND
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,TAKEBIT \?ELS7
|
|
PRINTI "Moving"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " reveals nothing "
|
|
CALL PICK-ONE,YAWNS
|
|
PRINT STACK
|
|
PRINTR "."
|
|
?ELS7: PRINT YOU-CANT
|
|
PRINTI "move"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MUNG
|
|
PRINTR "Let's leave the violence to the movies."
|
|
|
|
|
|
.FUNCT NO-ANSWER
|
|
PRINTR "There's no answer."
|
|
|
|
|
|
.FUNCT NOT-A,STR
|
|
PRINTI "You're not a "
|
|
PRINT STR
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT NOTHING-INTERESTING,SEE?=0
|
|
PRINTI "You "
|
|
ZERO? SEE? /?ELS3
|
|
PRINTI "see"
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "find"
|
|
?CND1: PRINTI " nothing "
|
|
CALL PICK-ONE,YAWNS
|
|
PRINT STACK
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT NOW-BLACK
|
|
PRINTI "It is pitch black."
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NOW-CLOSED-OR-OPEN,THING,OPEN?=0
|
|
CALL THIS-IS-IT,THING
|
|
PRINT OKAY
|
|
PRINTI "the "
|
|
CALL DPRINT,PRSO
|
|
PRINTI " is now "
|
|
ZERO? OPEN? /?ELS3
|
|
FSET THING,OPENBIT
|
|
PRINTI "open"
|
|
JUMP ?CND1
|
|
?ELS3: FCLEAR THING,OPENBIT
|
|
PRINTI "closed"
|
|
?CND1: PRINTR "."
|
|
|
|
|
|
.FUNCT V-OPEN,F,STR
|
|
FSET? PRSO,ACTORBIT \?ELS5
|
|
CALL NOT-A,STR?33
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,SURFACEBIT /?THN8
|
|
FSET? PRSO,VEHBIT \?ELS7
|
|
?THN8: PRINTR "Huh?"
|
|
?ELS7: FSET? PRSO,CONTBIT /?ELS11
|
|
FSET? PRSO,DOORBIT /?ELS11
|
|
PRINTI "How can you do that to"
|
|
CALL APRINT,PRSO
|
|
PRINTR "?"
|
|
?ELS11: FSET? PRSO,OPENBIT \?ELS15
|
|
CALL ALREADY-OPEN
|
|
RSTACK
|
|
?ELS15: FSET? PRSO,LOCKEDBIT \?ELS17
|
|
PRINTR "You'll have to unlock it first."
|
|
?ELS17: FSET? PRSO,CONTBIT \?ELS19
|
|
FSET PRSO,OPENBIT
|
|
FSET PRSO,TOUCHBIT
|
|
FIRST? PRSO \?THN25
|
|
FSET? PRSO,TRANSBIT \?ELS24
|
|
?THN25: CALL NOW-CLOSED-OR-OPEN,PRSO,TRUE-VALUE
|
|
RSTACK
|
|
?ELS24: PRINTI "Opening"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " reveals"
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINTR "."
|
|
?ELS19: FSET PRSO,OPENBIT
|
|
CALL SAY-THE,PRSO
|
|
ZERO? MYSTERY-GUEST /?ELS38
|
|
EQUAL? PRSO,OAK-DOOR \?ELS38
|
|
SET 'MYSTERY-GUEST,FALSE-VALUE
|
|
PRINTR " opens with a long squeal, and you hear hurried footsteps several rooms away."
|
|
?ELS38: PRINTC 32
|
|
CALL PICK-ONE,DOOR-NOISES
|
|
PRINT STACK
|
|
PRINTR " as it opens."
|
|
|
|
|
|
.FUNCT CANT-OPEN-CLOSE
|
|
PRINTI "You can't "
|
|
EQUAL? PRSA,V?OPEN \?ELS3
|
|
PRINTI "open"
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "close"
|
|
?CND1: CALL APRINT,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT OTHER-SIDE,DOBJ,P=0,T
|
|
?PRG1: NEXTP HERE,P >P
|
|
LESS? P,LOW-DIRECTION /FALSE
|
|
GETPT HERE,P >T
|
|
PTSIZE T
|
|
EQUAL? STACK,DEXIT \?PRG1
|
|
GETB T,DEXITOBJ
|
|
EQUAL? STACK,DOBJ \?PRG1
|
|
RETURN P
|
|
|
|
|
|
.FUNCT V-PICK
|
|
FSET? PRSO,DOORBIT \?ELS5
|
|
CALL NOT-A,STR?56
|
|
RSTACK
|
|
?ELS5: CALL WHAT-A-CONCEPT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PLAY,WD,PTR
|
|
ADD P-SENTENCE,P-LEXELEN >PTR
|
|
GET P-LEXV,PTR >WD
|
|
EQUAL? WD,W?QUOTE \?CND1
|
|
ADD PTR,P-LEXELEN
|
|
GET P-LEXV,STACK >WD
|
|
?CND1: ZERO? PRSI /?ELS8
|
|
EQUAL? PRSI,PIANO /?ELS8
|
|
PRINTI "You can't play"
|
|
CALL ARPRINT,PRSI
|
|
RSTACK
|
|
?ELS8: ZERO? PRSO /?ELS12
|
|
EQUAL? PRSO,PIANO /?ELS12
|
|
PRINTI "You can't play"
|
|
CALL ARPRINT,PRSO
|
|
RSTACK
|
|
?ELS12: IN? PIANO,HERE /?ELS16
|
|
PRINTI "There's not a musical instrument in sight."
|
|
CRLF
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS16: ZERO? SONG-NUMBER \?ELS18
|
|
EQUAL? WD,W?YESTER \?ELS18
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS18: EQUAL? SONG-NUMBER,1 \?ELS22
|
|
EQUAL? WD,W?GREENS \?ELS22
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS22: EQUAL? SONG-NUMBER,2 \?ELS26
|
|
EQUAL? WD,W?CAMELO \?ELS26
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS26: EQUAL? SONG-NUMBER,3 \?ELS30
|
|
EQUAL? WD,W?STARDU \?ELS30
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS30: EQUAL? SONG-NUMBER,4 \?ELS34
|
|
EQUAL? WD,W?MISTY \?ELS34
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS34: EQUAL? SONG-NUMBER,5 \?ELS38
|
|
EQUAL? WD,W?PEOPLE \?ELS38
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS38: EQUAL? SONG-NUMBER,6 \?ELS42
|
|
EQUAL? WD,W?FEELIN \?ELS42
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS42: EQUAL? SONG-NUMBER,7 \?ELS46
|
|
EQUAL? WD,W?TOMORR \?ELS46
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS46: EQUAL? SONG-NUMBER,8 \?ELS50
|
|
EQUAL? WD,W?TONIGH \?ELS50
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS50: EQUAL? SONG-NUMBER,9 \?ELS54
|
|
EQUAL? WD,W?OKLAHO \?ELS54
|
|
CALL OPEN-CRAWL-SPACE-DOOR?
|
|
CALL PCLEAR
|
|
RSTACK
|
|
?ELS54: ZERO? PRSO \?CND59
|
|
ZERO? PRSI \?CND59
|
|
PRINTI "[on the piano]"
|
|
CRLF
|
|
?CND59: PRINTI "You play for a few moments. It's very beautiful and melodious."
|
|
CRLF
|
|
CALL PCLEAR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT OPEN-CRAWL-SPACE-DOOR?
|
|
ZERO? SONG-PLAYED /?ELS5
|
|
PRINTI "You play """
|
|
GET SONGS,SONG-NUMBER
|
|
PRINT STACK
|
|
PRINTR """ again. You tell yourself you're getting better and promise to begin taking lessons again soon."
|
|
?ELS5: FSET CRAWL-SPACE-DOOR,OPENBIT
|
|
SET 'SONG-PLAYED,TRUE-VALUE
|
|
PRINTI "Although a little rusty, you begin to play """
|
|
GET SONGS,SONG-NUMBER
|
|
PRINT STACK
|
|
PRINTR "."" Just as you start to seriously consider taking lessons again, a door in the floor opens."
|
|
|
|
|
|
.FUNCT V-POUR
|
|
PRINT YOU-CANT
|
|
PRINTR "pour that!"
|
|
|
|
|
|
.FUNCT V-PULL
|
|
CALL HACK-HACK,STR?57
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUSH
|
|
CALL HACK-HACK,STR?58
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUSH-DOWN
|
|
ZERO? PRSI /?ELS5
|
|
PRINT YOU-CANT
|
|
PRINTR "push things down that."
|
|
?ELS5: CALL HACK-HACK,STR?59
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUSH-TO
|
|
PRINT YOU-CANT
|
|
PRINTR "push things to that."
|
|
|
|
|
|
.FUNCT V-PUSH-UP
|
|
CALL HACK-HACK,STR?60
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-PUT
|
|
EQUAL? PRSO,WHITE-WAX,RED-WAX,BLUE-WAX \?ELS5
|
|
EQUAL? PRSA,V?PUT-ON,V?PUT \?ELS5
|
|
CALL ULTIMATELY-IN?,PRSO
|
|
ZERO? STACK \FALSE
|
|
?ELS5: EQUAL? PRSO,YOUR-FEET \?ELS9
|
|
EQUAL? PRSI,BRICK-HOLE \?ELS9
|
|
PRINTR "If you want to climb up the chimney, say so."
|
|
?ELS9: EQUAL? PRSO,WATER,PORTABLE-WATER /FALSE
|
|
CALL ULTIMATELY-IN?,PRSI,PRSO
|
|
ZERO? STACK /?ELS15
|
|
PRINT YOU-CANT
|
|
PRINTI "put"
|
|
CALL TPRINT,PRSO
|
|
GET P-ITBL,P-PREP2
|
|
EQUAL? STACK,PR?ON \?ELS18
|
|
PRINTI " on"
|
|
JUMP ?CND16
|
|
?ELS18: PRINTI " in"
|
|
?CND16: CALL TPRINT,PRSI
|
|
PRINTI " when"
|
|
CALL TPRINT,PRSI
|
|
PRINTI " is already "
|
|
FSET? PRSO,SURFACEBIT \?ELS23
|
|
PRINTI "on"
|
|
JUMP ?CND21
|
|
?ELS23: PRINTI "in"
|
|
?CND21: CALL TPRINT,PRSO
|
|
PRINTR "!"
|
|
?ELS15: IN? PRSO,GLOBAL-OBJECTS /?THN28
|
|
FSET? PRSO,TAKEBIT /?ELS27
|
|
?THN28: CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS27: CALL DONT-HAVE?,PRSO
|
|
ZERO? STACK \TRUE
|
|
EQUAL? PRSI,GROUND \?ELS33
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?ELS33: ZERO? PRSI /?ELS35
|
|
CALL ACCESSIBLE?,PRSI
|
|
ZERO? STACK \?ELS35
|
|
CALL CANT-SEE-ANY,PRSI
|
|
RTRUE
|
|
?ELS35: FSET? PRSO,WORNBIT \FALSE
|
|
CALL TAKE-OFF-PRSO-FIRST
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT,?TMP1,?TMP2,?TMP3
|
|
EQUAL? PRSO,SKIS \?ELS5
|
|
EQUAL? PRSI,BS-SAFE,WALL-SAFE,SACK /?THN8
|
|
EQUAL? PRSI,COMPARTMENT \?ELS5
|
|
?THN8: PRINTR "The skis can't possibly fit in there."
|
|
?ELS5: ZERO? PRSI /?ELS11
|
|
FSET? PRSI,OPENBIT /?ELS11
|
|
FSET? PRSI,DOORBIT /?ELS11
|
|
FSET? PRSI,CONTBIT /?ELS11
|
|
FSET? PRSI,SURFACEBIT /?ELS11
|
|
PRINT YOU-CANT
|
|
PRINTR "possibly do that!"
|
|
?ELS11: FSET? PRSI,OPENBIT /?ELS15
|
|
FSET? PRSI,SURFACEBIT /?ELS15
|
|
CALL BUT-THE,PRSI
|
|
PRINTI "isn't open!"
|
|
CRLF
|
|
CALL THIS-IS-IT,PRSI
|
|
RSTACK
|
|
?ELS15: EQUAL? PRSI,PRSO \?ELS19
|
|
CALL WHAT-A-CONCEPT
|
|
RSTACK
|
|
?ELS19: IN? PRSO,PRSI \?ELS21
|
|
CALL BUT-THE,PRSO
|
|
PRINTI "is already "
|
|
FSET? PRSI,SURFACEBIT \?ELS24
|
|
PRINTI "on "
|
|
JUMP ?CND22
|
|
?ELS24: PRINTI "in "
|
|
?CND22: CALL TPRINT,PRSI
|
|
PRINTR "!"
|
|
?ELS21: FSET? PRSI,BURNBIT \?ELS28
|
|
FSET? PRSO,FLAMEBIT \?ELS28
|
|
CALL PERFORM,V?BURN,PRSI,PRSO
|
|
RTRUE
|
|
?ELS28: CALL WEIGHT,PRSI >?TMP3
|
|
CALL WEIGHT,PRSO
|
|
ADD ?TMP3,STACK >?TMP2
|
|
GETP PRSI,P?SIZE
|
|
SUB ?TMP2,STACK >?TMP1
|
|
GETP PRSI,P?CAPACITY
|
|
GRTR? ?TMP1,STACK \?ELS32
|
|
PRINTR "There's no room."
|
|
?ELS32: IN? PRSO,PLAYER /?ELS34
|
|
CALL ITAKE
|
|
EQUAL? STACK,FALSE-VALUE,M-FATAL /TRUE
|
|
?ELS34: MOVE PRSO,PRSI
|
|
FSET PRSO,TOUCHBIT
|
|
PRINTR "Done."
|
|
|
|
|
|
.FUNCT V-PUT-BEHIND
|
|
PRINTR "That hiding place is too obvious."
|
|
|
|
|
|
.FUNCT V-PUT-ON
|
|
EQUAL? PRSI,ME \?ELS5
|
|
CALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?ELS5: FSET? PRSI,SURFACEBIT \?ELS7
|
|
CALL V-PUT
|
|
RSTACK
|
|
?ELS7: EQUAL? PRSI,FILM-PROJECTOR \?ELS9
|
|
CALL V-PUT
|
|
RSTACK
|
|
?ELS9: PRINTI "There's no good surface on"
|
|
ZERO? PRSI /?ELS14
|
|
CALL TPRINT,PRSI
|
|
JUMP ?CND12
|
|
?ELS14: PRINTI " that"
|
|
?CND12: PRINTR "."
|
|
|
|
|
|
.FUNCT V-PUT-UNDER
|
|
PRINT YOU-CANT
|
|
PRINTR "put anything under that."
|
|
|
|
|
|
.FUNCT V-QUESTION
|
|
CALL V-ASK-FOR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-QUIT,ASK?=1
|
|
CALL V-SCORE
|
|
ZERO? ASK? /?ELS5
|
|
CALL SAY-SURE
|
|
PRINTI "leave the story now?"
|
|
CALL YES?
|
|
ZERO? STACK /?ELS11
|
|
CRLF
|
|
PRINTI "Cut! That's a take."
|
|
CRLF
|
|
QUIT
|
|
RTRUE
|
|
?ELS11: PRINT OKAY
|
|
PRINTR "continuing."
|
|
?ELS5: QUIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RAPE
|
|
PRINTR "What a wholesome idea."
|
|
|
|
|
|
.FUNCT V-RAISE
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL PERFORM,V?STAND,ROOMS
|
|
RTRUE
|
|
?ELS5: CALL HACK-HACK,STR?61
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-REACH-IN,OBJ
|
|
FIRST? PRSO >OBJ /?KLU16
|
|
?KLU16: FSET? PRSO,ACTORBIT \?ELS5
|
|
CALL NOT-A,STR?33
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,CONTBIT /?ELS7
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS7: FSET? PRSO,OPENBIT /?ELS9
|
|
PRINTR "It's not open."
|
|
?ELS9: ZERO? OBJ /?THN12
|
|
FSET? OBJ,INVISIBLE /?THN12
|
|
FSET? OBJ,TAKEBIT /?ELS11
|
|
?THN12: PRINTR "It's empty."
|
|
?ELS11: PRINTI "You reach into"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " and feel something."
|
|
|
|
|
|
.FUNCT V-READ
|
|
FSET? PRSO,READBIT \?ELS5
|
|
GETP PRSO,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: CALL CANT-VERB-A-PRSO,STR?62
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CANT-VERB-A-PRSO,STRING
|
|
PRINT YOU-CANT
|
|
PRINT STRING
|
|
CALL APRINT,PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-READ-TO
|
|
ZERO? LIT \?ELS5
|
|
CALL TOO-DARK
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,READBIT /?ELS7
|
|
CALL HOW-READ
|
|
PRINTI " to"
|
|
CALL APRINT,PRSI
|
|
PRINTR "?"
|
|
?ELS7: CALL NOT-LIKELY,PRSI,STR?63
|
|
RSTACK
|
|
|
|
|
|
.FUNCT HOW-READ
|
|
PRINTI "How can you read"
|
|
CALL APRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-REMOVE
|
|
FSET? PRSO,WORNBIT \?ELS5
|
|
CALL PERFORM,V?TAKE-OFF,PRSO
|
|
RTRUE
|
|
?ELS5: CALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REMOVE-FROM
|
|
EQUAL? PRSO,WAX-COAT-2,WAX-COAT-1 \?ELS5
|
|
EQUAL? PRSI,GREEN-MATCH,RED-MATCH \?ELS5
|
|
CALL PERFORM,V?SCRAPE-OFF,PRSO,PRSI
|
|
RTRUE
|
|
?ELS5: CALL PERFORM,V?TAKE,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REPLACE
|
|
EQUAL? PRSO,ME \?ELS3
|
|
PRINTI "That's easy"
|
|
JUMP ?CND1
|
|
?ELS3: CALL BUT-THE,PRSO
|
|
PRINTI "doesn't need replacement"
|
|
?CND1: PRINTR "."
|
|
|
|
|
|
.FUNCT V-REPLY
|
|
CALL NOT-LIKELY,PRSO,STR?64
|
|
CALL PCLEAR
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-RESCUE
|
|
EQUAL? PRSO,ME \?ELS5
|
|
CALL V-HELP
|
|
RSTACK
|
|
?ELS5: CALL BUT-THE,PRSO
|
|
PRINTR "doesn't need any help."
|
|
|
|
|
|
.FUNCT V-RESET
|
|
PRINTR "You don't need to reset that."
|
|
|
|
|
|
.FUNCT V-RESTART
|
|
CALL V-SCORE
|
|
CALL SAY-SURE
|
|
PRINTI "restart the story?"
|
|
CALL YES?
|
|
ZERO? STACK /FALSE
|
|
RESTART
|
|
CALL FAILED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RESTORE
|
|
RESTORE \?ELS5
|
|
CALL SAY-OKAY
|
|
RSTACK
|
|
?ELS5: CALL FAILED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RIDE
|
|
FSET? PRSO,ACTORBIT \?ELS3
|
|
CALL NOT-LIKELY,PRSO,STR?65
|
|
JUMP ?CND1
|
|
?ELS3: PRINT YOU-CANT
|
|
PRINTI "ride that!"
|
|
CRLF
|
|
?CND1: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT ROB,WHO,WHERE,N,X
|
|
FIRST? WHO >X /?KLU12
|
|
?KLU12:
|
|
?PRG1: ZERO? X /TRUE
|
|
NEXT? X >N /?KLU13
|
|
?KLU13: FSET? X,TAKEBIT \?CND7
|
|
MOVE X,WHERE
|
|
?CND7: SET 'X,N
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT V-ROLL-UP
|
|
PRINT YOU-CANT
|
|
PRINTI "roll up"
|
|
CALL APRINT,PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-RUB
|
|
CALL HACK-HACK,STR?66
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SAVE
|
|
PRINTI "You can almost hear Buck Palace saying, ""Wimp!"""
|
|
CRLF
|
|
CRLF
|
|
SAVE \?ELS5
|
|
CALL SAY-OKAY
|
|
RSTACK
|
|
?ELS5: CALL FAILED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SAY
|
|
CALL ANYONE-HERE?
|
|
ZERO? STACK /?ELS5
|
|
CALL WAY-TO-TALK
|
|
CALL PCLEAR
|
|
RETURN 2
|
|
?ELS5: CALL TALK-TO-SELF
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SAY-IF-NOT-LIT
|
|
CALL LIT?,HERE >LIT
|
|
ZERO? LIT \FALSE
|
|
CRLF
|
|
CALL NOW-BLACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAY-OKAY
|
|
PRINT OKAY
|
|
PRINTR "done."
|
|
|
|
|
|
.FUNCT SAY-SURE
|
|
PRINTI "Are you sure you want to "
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCORE
|
|
PRINTI "Your score is "
|
|
PRINTN SCORE
|
|
PRINTI " point"
|
|
EQUAL? SCORE,1 /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTI " out of "
|
|
PRINTN SCORE-MAX
|
|
PRINTI ", in "
|
|
PRINTN MOVES
|
|
PRINTI " move"
|
|
EQUAL? MOVES,1 /?CND4
|
|
PRINTC 115
|
|
?CND4: PRINTR "."
|
|
|
|
|
|
.FUNCT V-SCRAPE-OFF
|
|
ZERO? PRSI /?ELS5
|
|
PRINTI "You can't scrape"
|
|
CALL TPRINT,PRSO
|
|
PRINTI " off"
|
|
CALL TPRINT,PRSI
|
|
PRINTR "!"
|
|
?ELS5: PRINTI "There's nothing to scrape off"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SCRIPT
|
|
GET 0,8
|
|
BOR STACK,1
|
|
PUT 0,8,STACK
|
|
CALL TRANSCRIPT,STR?67
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNSCRIPT
|
|
CALL TRANSCRIPT,STR?68
|
|
GET 0,8
|
|
BAND STACK,-2
|
|
PUT 0,8,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TRANSCRIPT,STR
|
|
PRINTI "Here "
|
|
PRINT STR
|
|
PRINTI "s a transcript of interaction with"
|
|
CRLF
|
|
CALL V-VERSION
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SEARCH
|
|
EQUAL? PRSO,ME \?ELS5
|
|
CALL V-HELP
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,CONTBIT \?ELS7
|
|
FSET? PRSO,OPENBIT /?ELS12
|
|
FSET? PRSO,TRANSBIT /?ELS12
|
|
CALL YOUD-HAVE-TO,STR?23,PRSO
|
|
RSTACK
|
|
?ELS12: PRINTI "You find"
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINTR "."
|
|
?ELS7: FSET? PRSO,SURFACEBIT \?ELS21
|
|
PRINTI "You find"
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINTR "."
|
|
?ELS21: FSET? PRSO,ACTORBIT \?ELS26
|
|
CALL PERFORM,V?USE,PRSO
|
|
RTRUE
|
|
?ELS26: CALL NOTHING-INTERESTING
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SHAKE,X
|
|
FSET? PRSO,ACTORBIT \?ELS5
|
|
CALL PERFORM,V?ALARM,PRSO
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,TAKEBIT /?ELS7
|
|
FSET? PRSO,TRYTAKEBIT /?ELS7
|
|
CALL HACK-HACK,STR?69
|
|
RSTACK
|
|
?ELS7: CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SHOOT
|
|
ZERO? PRSI \?ELS5
|
|
CALL ULTIMATELY-IN?,GUN
|
|
ZERO? STACK /?ELS5
|
|
CALL PERFORM,V?SHOOT,GUN,PRSO
|
|
RTRUE
|
|
?ELS5: FSET? PRSO,ACTORBIT \?ELS9
|
|
PRINTR "You haven't got a gun."
|
|
?ELS9: PRINTR "You can't shoot that."
|
|
|
|
|
|
.FUNCT V-SSHOOT
|
|
CALL PERFORM,V?SHOOT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHOW
|
|
PRINTI "It isn't likely that"
|
|
CALL TPRINT,PRSI
|
|
PRINTR " is interested."
|
|
|
|
|
|
.FUNCT V-SSHOW
|
|
CALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SIT,VEHICLE
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
CALL GLOBAL-IN?,SEAT,HERE
|
|
ZERO? STACK /?ELS5
|
|
CALL PERFORM,V?BOARD,SEAT
|
|
RTRUE
|
|
?ELS5: CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-SKI
|
|
FSET? SKIS,WORNBIT /FALSE
|
|
PRINTR "You're not wearing skis!"
|
|
|
|
|
|
.FUNCT V-SKI
|
|
EQUAL? PRSO,INTDIR \?ELS5
|
|
EQUAL? P-DIRECTION,P?UP \?ELS10
|
|
PRINTR "There's no tow rope here."
|
|
?ELS10: CALL DO-WALK,P-DIRECTION
|
|
RSTACK
|
|
?ELS5: PRINTR "You can't ski down that!"
|
|
|
|
|
|
.FUNCT V-SLEEP
|
|
PRINTR "Maybe you should've had a nap before the lawyer dropped you off."
|
|
|
|
|
|
.FUNCT V-SMELL
|
|
EQUAL? PRSO,ROOMS \?ELS3
|
|
PRINTI "You smell nothing "
|
|
CALL PICK-ONE,YAWNS
|
|
PRINT STACK
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "It smells just like"
|
|
CALL APRINT,PRSO
|
|
?CND1: PRINTR "."
|
|
|
|
|
|
.FUNCT V-SPLICE
|
|
PRINT YOU-CANT
|
|
PRINTR "splice that!"
|
|
|
|
|
|
.FUNCT V-SQUEEZE
|
|
CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-STAND
|
|
ZERO? PRSO /?THN6
|
|
EQUAL? PRSO,ROOMS \?ELS5
|
|
?THN6: PRINTR "You're already standing."
|
|
?ELS5: PRINT YOU-CANT
|
|
PRINTR "stand that up."
|
|
|
|
|
|
.FUNCT V-STAND-ON
|
|
CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-STAND-UNDER
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWING
|
|
ZERO? PRSI \?ELS5
|
|
PRINTR "Whoosh!"
|
|
?ELS5: CALL PERFORM,V?KILL,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWIM
|
|
ZERO? PRSO /?ELS5
|
|
EQUAL? PRSO,INTDIR \?ELS11
|
|
FSET? PLAYER,WETBIT \?ELS16
|
|
CALL DO-WALK,P-DIRECTION
|
|
RSTACK
|
|
?ELS16: PRINTR "You'd be swimming in air."
|
|
?ELS11: PRINTI "You can't swim in"
|
|
CALL ARPRINT,PRSO
|
|
RSTACK
|
|
?ELS5: CALL GLOBAL-IN?,WATER,HERE
|
|
ZERO? STACK /?ELS22
|
|
CALL PERFORM,V?SWIM,WATER
|
|
RTRUE
|
|
?ELS22: PRINT YOU-CANT
|
|
PRINTR "swim here!"
|
|
|
|
|
|
.FUNCT V-SWIM-UP
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SWIM-DOWN
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-TAKE,CONTAINER
|
|
LOC PRSO >CONTAINER
|
|
IN? PRSO,WINNER \?ELS5
|
|
PRINTI "You're already "
|
|
FSET? PRSO,WORNBIT \?ELS8
|
|
PRINTI "wear"
|
|
JUMP ?CND6
|
|
?ELS8: PRINTI "hold"
|
|
?CND6: PRINTR "ing it."
|
|
?ELS5: ZERO? CONTAINER /?ELS12
|
|
FSET? CONTAINER,CONTBIT \?ELS12
|
|
FSET? CONTAINER,OPENBIT /?ELS12
|
|
PRINT YOU-CANT
|
|
PRINTI "reach into"
|
|
CALL TPRINT,CONTAINER
|
|
PRINTR ". It's closed."
|
|
?ELS12: ZERO? PRSI /?ELS16
|
|
EQUAL? PRSO,ME \?ELS20
|
|
CALL PERFORM,V?DROP,PRSI
|
|
RTRUE
|
|
?ELS20: EQUAL? PRSO,WATER \?ELS22
|
|
EQUAL? PRSI,POND /FALSE
|
|
?ELS22: IN? PRSO,PRSI /?ELS26
|
|
EQUAL? PRSO,RING \?ELS29
|
|
EQUAL? PRSI,DOG \?ELS29
|
|
FSET? DOG,CLUTCHING-BIT /FALSE
|
|
?ELS29: EQUAL? PRSO,LADDER \?ELS33
|
|
EQUAL? PRSI,HATCH-HOLE \?ELS33
|
|
FSET? LADDER,HUNG-BIT /FALSE
|
|
?ELS33: EQUAL? PRSO,LENS-CAP \?CND27
|
|
EQUAL? PRSI,FILM-PROJECTOR-LENS \?CND27
|
|
FSET? LENS-CAP,NDESCBIT /FALSE
|
|
?CND27: FSET? PRSI,ACTORBIT /?THN43
|
|
EQUAL? PRSI,DOG \?ELS42
|
|
?THN43: CALL BUT-THE,PRSI
|
|
PRINTI "doesn't have"
|
|
CALL APRINT,PRSO
|
|
JUMP ?CND40
|
|
?ELS42: CALL BUT-THE,PRSO
|
|
PRINTI "isn't in"
|
|
CALL TPRINT,PRSI
|
|
?CND40: PRINTR "."
|
|
?ELS26: CALL ULTIMATELY-IN?,PRSO,BUCKET
|
|
ZERO? STACK /FALSE
|
|
ZERO? BUCKET-PEG /FALSE
|
|
PRINT PEG-IN-WAY
|
|
RTRUE
|
|
?ELS16: CALL ULTIMATELY-IN?,PRSO,BUCKET
|
|
ZERO? STACK /?ELS54
|
|
ZERO? BUCKET-PEG /?ELS54
|
|
PRINT PEG-IN-WAY
|
|
RTRUE
|
|
?ELS54: LOC WINNER
|
|
EQUAL? PRSO,STACK \FALSE
|
|
PRINTR "You're in it!"
|
|
|
|
|
|
.FUNCT V-TAKE
|
|
CALL ITAKE
|
|
ZERO? STACK /FALSE
|
|
PRINTR "Taken."
|
|
|
|
|
|
.FUNCT ITAKE,VB=1
|
|
CALL THIS-IS-IT,PRSO
|
|
FSET? PRSO,TAKEBIT /?ELS5
|
|
ZERO? VB /FALSE
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RFALSE
|
|
?ELS5: CALL TOO-MUCH-JUNK?,VB
|
|
ZERO? STACK \FALSE
|
|
CALL BOKS-BIG-ONE,PRSO
|
|
ZERO? STACK /?ELS13
|
|
EQUAL? TREASURES-FOUND,10 /FALSE
|
|
?ELS13: MOVE PRSO,WINNER
|
|
FSET PRSO,TOUCHBIT
|
|
FCLEAR PRSO,NDESCBIT
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BOKS-BIG-ONE,T-OBJ
|
|
GETP T-OBJ,P?VALUE
|
|
ZERO? STACK /FALSE
|
|
GETP T-OBJ,P?VALUE
|
|
ADD SCORE,STACK >SCORE
|
|
PUTP T-OBJ,P?VALUE,0
|
|
INC 'TREASURES-FOUND
|
|
EQUAL? TREASURES-FOUND,10 \TRUE
|
|
LOC T-OBJ
|
|
MOVE PEG-0,STACK
|
|
LOC T-OBJ
|
|
MOVE NOTE,STACK
|
|
EQUAL? T-OBJ,FINCH /?CND9
|
|
MOVE T-OBJ,WINNER
|
|
?CND9: FSET T-OBJ,TOUCHBIT
|
|
FCLEAR T-OBJ,NDESCBIT
|
|
EQUAL? T-OBJ,RING \?ELS14
|
|
PRINTI "As you take"
|
|
CALL TPRINT,PRSO
|
|
PRINTI ", a small peg and a note drop out from under the model."
|
|
CRLF
|
|
MOVE PEG-0,HERE
|
|
MOVE NOTE,HERE
|
|
RTRUE
|
|
?ELS14: PRINTI "As you "
|
|
PRINTB P-PRSA-WORD
|
|
CALL TPRINT,PRSO
|
|
PRINTI " you notice a wooden peg and a note "
|
|
EQUAL? T-OBJ,CORPSE-LINE,GRATER,PARKING-METER \?ELS19
|
|
PRINTI "behind"
|
|
JUMP ?CND17
|
|
?ELS19: EQUAL? T-OBJ,FINCH \?ELS21
|
|
PRINTI "next to"
|
|
CALL ARPRINT,FINCH
|
|
RTRUE
|
|
?ELS21: PRINTI "beneath"
|
|
?CND17: PRINTR " it."
|
|
|
|
|
|
.FUNCT V-TAKE-OFF,WHERE
|
|
EQUAL? P-PRSA-WORD,W?GET \?ELS5
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
?ELS5: IN? PRSO,PLAYER \?ELS7
|
|
FSET? PRSO,WORNBIT \?ELS7
|
|
FCLEAR PRSO,WORNBIT
|
|
PRINT OKAY
|
|
PRINTI "you're no longer wearing"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?ELS7: PRINTR "You aren't wearing that!"
|
|
|
|
|
|
.FUNCT TAKE-OFF-PRSO-FIRST
|
|
PRINTI "You'll have to remove"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " first."
|
|
|
|
|
|
.FUNCT V-TASTE
|
|
CALL PERFORM,V?EAT,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TELL
|
|
EQUAL? PRSO,ME,ROOMS \?ELS5
|
|
CALL TALK-TO-SELF
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,ACTORBIT \?ELS7
|
|
ZERO? P-CONT /?ELS12
|
|
SET 'WINNER,PRSO
|
|
LOC WINNER >HERE
|
|
RETURN HERE
|
|
?ELS12: CALL NO-ANSWER
|
|
RSTACK
|
|
?ELS7: PRINT YOU-CANT
|
|
PRINTI "talk to"
|
|
CALL APRINT,PRSO
|
|
PRINTC 33
|
|
CRLF
|
|
CALL PCLEAR
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT TELL-TIME,MINUTES,HOURS,PM=0
|
|
ADD MOVES,1260 >MINUTES
|
|
GRTR? MINUTES,1439 \?CND1
|
|
SUB MINUTES,1440 >MINUTES
|
|
?CND1: DIV MINUTES,60 >HOURS
|
|
GRTR? HOURS,11 \?CND4
|
|
SET 'PM,TRUE-VALUE
|
|
SUB HOURS,12 >HOURS
|
|
?CND4: ZERO? HOURS \?CND7
|
|
SET 'HOURS,12
|
|
?CND7: PRINTN HOURS
|
|
PRINTC 58
|
|
MOD MINUTES,60 >MINUTES
|
|
LESS? MINUTES,10 \?CND10
|
|
PRINTC 48
|
|
?CND10: PRINTN MINUTES
|
|
ZERO? PM /?ELS17
|
|
PRINTI " pm"
|
|
RTRUE
|
|
?ELS17: PRINTI " am"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TIME
|
|
PRINTI "It's "
|
|
CALL TELL-TIME
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-THROW
|
|
CALL IDROP
|
|
ZERO? STACK /FALSE
|
|
CALL SPECIAL-DROP
|
|
ZERO? STACK \TRUE
|
|
ZERO? PRSI /?ELS12
|
|
PRINTR "You missed."
|
|
?ELS12: PRINTR "Thrown."
|
|
|
|
|
|
.FUNCT V-THROW-OFF
|
|
CALL WASTE-OF-TIME
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TIE
|
|
PRINT YOU-CANT
|
|
PRINTI "tie"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " to that."
|
|
|
|
|
|
.FUNCT V-TIE-UP
|
|
PRINT YOU-CANT
|
|
PRINTR "tie anything with that!"
|
|
|
|
|
|
.FUNCT TOO-DARK
|
|
PRINTR "It's too dark to see!"
|
|
|
|
|
|
.FUNCT TOO-MUCH-JUNK?,VB=1,?TMP1
|
|
LOC PRSO
|
|
IN? STACK,WINNER /FALSE
|
|
CALL WEIGHT,PRSO >?TMP1
|
|
CALL WEIGHT,WINNER
|
|
ADD ?TMP1,STACK
|
|
GRTR? STACK,LOAD-ALLOWED \FALSE
|
|
ZERO? VB /TRUE
|
|
FIRST? PLAYER \?ELS14
|
|
PRINTI "Your load is"
|
|
JUMP ?CND12
|
|
?ELS14: PRINTI "It's a little"
|
|
?CND12: PRINTR " too heavy."
|
|
|
|
|
|
.FUNCT V-TURN
|
|
FSET? PRSO,TAKEBIT /?ELS5
|
|
FSET? PRSO,TRYTAKEBIT /?ELS5
|
|
CALL PICK-ONE,YUKS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
?ELS5: CALL HACK-HACK,STR?72
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TURN-LEFT
|
|
CALL V-TURN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TURN-RIGHT
|
|
CALL V-TURN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-USE
|
|
FSET? PRSO,ACTORBIT \?ELS5
|
|
CALL BUT-THE,PRSO
|
|
PRINTR "might resent that."
|
|
?ELS5: CALL HOW?
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-VERBOSE
|
|
SET 'VERBOSITY,2
|
|
PRINTI "[Maximum verbosity.]"
|
|
CRLF
|
|
CRLF
|
|
CALL V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BRIEF
|
|
SET 'VERBOSITY,1
|
|
PRINTR "[Brief descriptions.]"
|
|
|
|
|
|
.FUNCT V-SUPER-BRIEF
|
|
SET 'VERBOSITY,0
|
|
PRINTR "[Superbrief descriptions.]"
|
|
|
|
|
|
.FUNCT V-VERSION,CNT=17,V
|
|
GET 0,1
|
|
BAND STACK,2047 >V
|
|
CRLF
|
|
PRINTI "HOLLYWOOD HIJINX
|
|
Infocom interactive fiction -- a zany treasure hunt
|
|
Copyright (C) 1986 Infocom, Inc. All rights reserved.
|
|
"
|
|
GETB 0,1
|
|
BAND STACK,8
|
|
ZERO? STACK /?CND1
|
|
PRINTI "Licensed to Tandy Corporation. Version 00.00."
|
|
PRINTN V
|
|
CRLF
|
|
?CND1: PRINTI "HOLLYWOOD HIJINX is a trademark of Infocom, Inc.
|
|
Release "
|
|
PRINTN V
|
|
PRINTI " / Serial Number "
|
|
?PRG4: IGRTR? 'CNT,23 /?REP5
|
|
GETB 0,CNT
|
|
PRINTC STACK
|
|
JUMP ?PRG4
|
|
?REP5: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$VERIFY
|
|
ZERO? PRSO /?ELS5
|
|
EQUAL? PRSO,INTNUM \?ELS11
|
|
EQUAL? P-NUMBER,57 \?ELS11
|
|
PRINTN SERIAL
|
|
CRLF
|
|
RTRUE
|
|
?ELS11: CALL DONT-UNDERSTAND
|
|
RSTACK
|
|
?ELS5: PRINTI "Verifying disk."
|
|
CRLF
|
|
VERIFY \?ELS22
|
|
PRINTR "Correct."
|
|
?ELS22: CALL FAILED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-$COMMAND
|
|
DIRIN 1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$RANDOM
|
|
EQUAL? PRSO,INTNUM /?ELS5
|
|
PRINTR "Illegal."
|
|
?ELS5: SUB 0,P-NUMBER
|
|
RANDOM STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$RECORD
|
|
DIROUT D-RECORD-ON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$UNRECORD
|
|
DIROUT D-RECORD-OFF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNLOCK
|
|
FSET? PRSO,DOORBIT /?THN6
|
|
FSET? PRSO,CONTBIT \?ELS5
|
|
?THN6: FSET? PRSO,OPENBIT \?ELS12
|
|
PRINTI "The "
|
|
CALL DPRINT,PRSO
|
|
PRINTR " is already open. You should have eaten more carrots as Aunt Hildegarde always told you."
|
|
?ELS12: FSET? PRSO,LOCKEDBIT /?ELS14
|
|
PRINTI "You attempt to unlock"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " and find it isn't locked."
|
|
?ELS14: ZERO? PRSI /?ELS16
|
|
PRINTI "When was the last time you unlocked something with"
|
|
CALL APRINT,PRSI
|
|
PRINTR "?"
|
|
?ELS16: FSET? PRSO,DOORBIT \?ELS19
|
|
FSET? HERE,LOCKEDBIT /?ELS24
|
|
PRINT YOU-CANT
|
|
PRINTR "unlock it from this side."
|
|
?ELS24: PRINTI "With a click you unlock"
|
|
CALL TRPRINT,PRSO
|
|
FCLEAR PRSO,LOCKEDBIT
|
|
RTRUE
|
|
?ELS19: FSET? PRSO,CONTBIT \?ELS28
|
|
FSET? PRSO,LOCKEDBIT \?ELS28
|
|
PRINTR "Perhaps if you had the combination..."
|
|
?ELS28: CALL THING-WONT-LOCK,PRSI,PRSO,TRUE-VALUE
|
|
RSTACK
|
|
?ELS5: CALL CANT-LOCK,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNROLL
|
|
PRINT YOU-CANT
|
|
PRINTI "unroll"
|
|
CALL ARPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNTIE
|
|
PRINTR "You don't need to untie it. It's not tied to anything."
|
|
|
|
|
|
.FUNCT DO-WALK,DIR
|
|
SET 'P-WALK-DIR,DIR
|
|
CALL PERFORM,V?WALK,DIR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WALK,PT,PTS,STR,OBJ,RM
|
|
FSET? SKIS,WORNBIT \?ELS5
|
|
EQUAL? PRSO,P?DOWN /?ELS5
|
|
PRINTI "These are downhill skis, not cross-country skis!"
|
|
CRLF
|
|
RETURN 2
|
|
?ELS5: ZERO? P-WALK-DIR \?ELS11
|
|
ZERO? PRSO /?ELS14
|
|
CALL PRESUMABLY-YOU-WANT-TO,STR?73,PRSO
|
|
CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?ELS14: CALL V-WALK-AROUND
|
|
RTRUE
|
|
?ELS11: LOC PLAYER
|
|
EQUAL? STACK,HERE /?ELS19
|
|
PRINTI "You're not going anywhere while you're on"
|
|
LOC PLAYER
|
|
CALL TRPRINT,STACK
|
|
RETURN 2
|
|
?ELS19: GETPT HERE,PRSO >PT
|
|
ZERO? PT /?ELS23
|
|
PTSIZE PT >PTS
|
|
EQUAL? PTS,UEXIT \?ELS28
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?ELS28: EQUAL? PTS,NEXIT \?ELS30
|
|
GET PT,NEXITSTR
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 2
|
|
?ELS30: EQUAL? PTS,FEXIT \?ELS34
|
|
GET PT,FEXITFCN
|
|
CALL STACK >RM
|
|
ZERO? RM /?ELS39
|
|
CALL GOTO,RM
|
|
RSTACK
|
|
?ELS39: RETURN 2
|
|
?ELS34: EQUAL? PTS,CEXIT \?ELS45
|
|
GETB PT,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK /?ELS50
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?ELS50: GET PT,CEXITSTR >STR
|
|
ZERO? STR /?ELS52
|
|
PRINT STR
|
|
CRLF
|
|
RETURN 2
|
|
?ELS52: CALL CANT-GO
|
|
RETURN 2
|
|
?ELS45: EQUAL? PTS,DEXIT \FALSE
|
|
GETB PT,DEXITOBJ >OBJ
|
|
FSET? OBJ,OPENBIT \?ELS65
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?ELS65: GET PT,DEXITSTR >STR
|
|
ZERO? STR /?ELS67
|
|
PRINT STR
|
|
CRLF
|
|
CALL THIS-IS-IT,OBJ
|
|
RETURN 2
|
|
?ELS67: CALL ITS-CLOSED,OBJ
|
|
RETURN 2
|
|
?ELS23: EQUAL? P-WALK-DIR,P?IN,P?OUT \?ELS80
|
|
PRINTR "Please use compass directions."
|
|
?ELS80: CALL CANT-GO
|
|
RETURN 2
|
|
|
|
|
|
.FUNCT V-WALK-AROUND
|
|
PRINTR "[Do you have any particular direction in mind?]"
|
|
|
|
|
|
.FUNCT V-WALK-TO
|
|
EQUAL? PRSO,INTDIR \?ELS5
|
|
CALL DO-WALK,P-DIRECTION
|
|
RSTACK
|
|
?ELS5: CALL V-WALK-AROUND
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WAIT,NUM=3
|
|
PRINTI "Time passes."
|
|
CRLF
|
|
?PRG1: DLESS? 'NUM,0 /?REP2
|
|
CALL CLOCKER
|
|
ZERO? STACK /?PRG1
|
|
?REP2: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN CLOCK-WAIT
|
|
|
|
|
|
.FUNCT V-$WAIT,NUM
|
|
EQUAL? PRSO,INTNUM \?ELS5
|
|
SET 'NUM,P-NUMBER
|
|
PRINTI "Time passes."
|
|
CRLF
|
|
?PRG6: DLESS? 'NUM,0 /?REP7
|
|
CALL CLOCKER
|
|
ZERO? STACK /?PRG6
|
|
?REP7: SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RETURN CLOCK-WAIT
|
|
?ELS5: PRINTR "Youse should use a numba."
|
|
|
|
|
|
.FUNCT V-WAIT-FOR
|
|
LOC PRSO
|
|
EQUAL? STACK,HERE,WINNER \?ELS3
|
|
CALL BUT-THE,PRSO
|
|
PRINTI "is already here!"
|
|
JUMP ?CND1
|
|
?ELS3: PRINTI "You may be waiting quite a while."
|
|
?CND1: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-WATER
|
|
ZERO? PRSI /?ELS5
|
|
EQUAL? PRSI,PORTABLE-WATER /FALSE
|
|
EQUAL? PRSI,BUCKET \?ELS13
|
|
IN? PORTABLE-WATER,BUCKET \?ELS13
|
|
SET 'PRSI,PORTABLE-WATER
|
|
RFALSE
|
|
?ELS13: PRINTI "As the word implies, you can only water"
|
|
CALL APRINT,PRSO
|
|
PRINTR " with water."
|
|
?ELS5: CALL ULTIMATELY-IN?,PORTABLE-WATER
|
|
ZERO? STACK /?ELS24
|
|
SET 'PRSI,PORTABLE-WATER
|
|
RFALSE
|
|
?ELS24: PRINTI "You don't have any water to water"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " with!"
|
|
|
|
|
|
.FUNCT V-WATER
|
|
PRINTI "A nice thought, but"
|
|
CALL TPRINT,PRSO
|
|
PRINTR " doesn't need watering."
|
|
|
|
|
|
.FUNCT V-WAVE-AT
|
|
CALL V-ASK-FOR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WEAR
|
|
FSET? PRSO,WORNBIT \?ELS5
|
|
PRINTI "You're already wearing"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?ELS5: FSET? PRSO,WEARBIT /?ELS7
|
|
PRINT YOU-CANT
|
|
PRINTI "wear"
|
|
CALL ARPRINT,PRSO
|
|
RSTACK
|
|
?ELS7: CALL DONT-HAVE?,PRSO
|
|
ZERO? STACK \TRUE
|
|
FSET PRSO,WORNBIT
|
|
EQUAL? PRSO,TOUPEE \?ELS16
|
|
PRINTI "You put on "
|
|
CALL DPRINT,TOUPEE
|
|
PRINTR " in an attempt to cover that Burbank bald spot."
|
|
?ELS16: EQUAL? PRSO,MASK \?ELS18
|
|
PRINTI "You slip on"
|
|
CALL TPRINT,MASK
|
|
PRINTR " and feel an unexplainable urge to go to summer camp."
|
|
?ELS18: PRINT OKAY
|
|
PRINTI "you're now wearing"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WEIGHT,THING,OBJ,WT=0
|
|
FIRST? THING >OBJ /?KLU16
|
|
?KLU16:
|
|
?PRG1: ZERO? OBJ /?REP2
|
|
EQUAL? THING,PLAYER \?ELS9
|
|
FSET? OBJ,WORNBIT \?ELS9
|
|
INC 'WT
|
|
JUMP ?CND7
|
|
?ELS9: CALL WEIGHT,OBJ
|
|
ADD WT,STACK >WT
|
|
?CND7: NEXT? OBJ >OBJ /?PRG1
|
|
JUMP ?PRG1
|
|
?REP2: GETP THING,P?SIZE
|
|
ADD WT,STACK >WT
|
|
RETURN WT
|
|
|
|
|
|
.FUNCT V-YELL
|
|
CALL PCLEAR
|
|
CALL ANYONE-HERE?
|
|
ZERO? STACK /?ELS5
|
|
CALL WAY-TO-TALK
|
|
RETURN 2
|
|
?ELS5: PRINTR "You begin to get a sore throat."
|
|
|
|
|
|
.FUNCT YES?,WORD
|
|
CRLF
|
|
?PRG1: CRLF
|
|
PRINTI "(Please type YES or NO.) >"
|
|
PUTB YES-LEXV,0,4
|
|
READ YES-INBUF,YES-LEXV
|
|
GET YES-LEXV,P-LEXSTART >WORD
|
|
GETB YES-LEXV,P-LEXWORDS
|
|
ZERO? STACK /?PRG1
|
|
ZERO? WORD /?PRG1
|
|
EQUAL? WORD,W?YES,W?Y,W?YUP /TRUE
|
|
EQUAL? WORD,W?OKAY,W?OK,W?AYE /TRUE
|
|
EQUAL? WORD,W?SURE,W?AFFIRM,W?POSITI /TRUE
|
|
EQUAL? WORD,W?NO,W?N,W?NOPE /FALSE
|
|
EQUAL? WORD,W?NAY,W?NAW,W?NEGATIVE \?PRG1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT NOW-LIT?
|
|
ZERO? LIT \FALSE
|
|
CALL LIT?,HERE
|
|
ZERO? STACK /FALSE
|
|
SET 'LIT,TRUE-VALUE
|
|
CRLF
|
|
CALL V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT WASTE-OF-TIME
|
|
CALL PICK-ONE,USELESSNESS
|
|
PRINT STACK
|
|
PRINTR "."
|
|
|
|
.ENDI
|