3442 lines
65 KiB
Plaintext
3442 lines
65 KiB
Plaintext
|
|
|
|
.FUNCT V-VERBOSE
|
|
SET 'VERBOSITY,2
|
|
PRINTI "Maximum verbosity."
|
|
CRLF
|
|
CRLF
|
|
CALL V-LOOK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BRIEF
|
|
SET 'VERBOSITY,1
|
|
PRINTC 66
|
|
PRINT RIEF-DESC
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SUPER-BRIEF
|
|
SET 'VERBOSITY,0
|
|
PRINTI "Superb"
|
|
PRINT RIEF-DESC
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SAVE
|
|
SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
SAVE \?CCL3
|
|
PRINT OK
|
|
RTRUE
|
|
?CCL3: PRINT FAILED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RESTORE
|
|
RESTORE \?CCL3
|
|
PRINT OK
|
|
RTRUE
|
|
?CCL3: PRINT FAILED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SCRIPT
|
|
GET 0,8
|
|
BOR STACK,1
|
|
PUT 0,8,STACK
|
|
CALL CORP-NOTICE,STR?243
|
|
CALL V-VERSION
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-UNSCRIPT
|
|
CALL CORP-NOTICE,STR?244
|
|
CALL V-VERSION
|
|
GET 0,8
|
|
BAND STACK,-2
|
|
PUT 0,8,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CORP-NOTICE,STRING
|
|
PRINTI "Here "
|
|
PRINT STRING
|
|
PRINTR " a transcript of interaction with"
|
|
|
|
|
|
.FUNCT V-INVENTORY
|
|
CALL RUNNING?,I-LSED
|
|
ZERO? STACK /?CND1
|
|
GRTR? LAFOND-CTR,HORNY \?CND1
|
|
CALL HELD?,PINCH
|
|
ZERO? STACK /?CCL7
|
|
CALL CTPRINT,PINCH
|
|
PRINTI " is not enough to cover"
|
|
JUMP ?CND5
|
|
?CCL7: PRINTI "You blush to look at"
|
|
?CND5: PRINTR " your naked body."
|
|
?CND1: SUB 0,WORNBIT >D-BIT
|
|
CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,3
|
|
SET 'D-BIT,WORNBIT
|
|
CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,3
|
|
SET 'D-BIT,FALSE-VALUE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-QUIT
|
|
CALL V-SCORE
|
|
CALL DO-YOU-WISH,STR?245
|
|
CALL YES?
|
|
ZERO? STACK /?CCL3
|
|
QUIT
|
|
RTRUE
|
|
?CCL3: PRINT OK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RESTART
|
|
CALL V-SCORE
|
|
CALL DO-YOU-WISH,STR?246
|
|
CALL YES?
|
|
ZERO? STACK /FALSE
|
|
PRINTI "Restarting."
|
|
CRLF
|
|
RESTART
|
|
PRINT FAILED
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DO-YOU-WISH,STRING
|
|
PRINT INDENT
|
|
PRINTI "Do you wish to "
|
|
PRINT STRING
|
|
PRINTI "? (Y is affirmative): "
|
|
RTRUE
|
|
|
|
|
|
.FUNCT YES?
|
|
?FCN: PRINTC 62
|
|
READ P-INBUF,P-LEXV
|
|
GET P-LEXV,1
|
|
CALL YES-WORD,STACK
|
|
ZERO? STACK \TRUE
|
|
GET P-LEXV,1
|
|
CALL NO-WORD,STACK
|
|
ZERO? STACK \FALSE
|
|
GET P-LEXV,1
|
|
EQUAL? STACK,W?N /FALSE
|
|
PRINTI "This is important: please answer YES or NO. "
|
|
JUMP ?FCN
|
|
|
|
|
|
.FUNCT FINISH,REPEATING=0,CNT=0
|
|
?PRG1: CRLF
|
|
ZERO? REPEATING \?CND3
|
|
SET 'REPEATING,TRUE-VALUE
|
|
PRINT INDENT
|
|
CALL V-SCORE
|
|
?CND3: GRTR? SCORE,24 \?CND5
|
|
PRINT INDENT
|
|
PRINTI "Thus you have finished the story of "
|
|
PRINT GAME-CAPS
|
|
PRINTI ", earning the title, """
|
|
GET WINNING-RANKS,FINAL-RANK
|
|
PRINT STACK
|
|
PRINTI "."""
|
|
LESS? FINAL-RANK,4 \?CND7
|
|
PRINTI " There are other, perhaps more satisfying, conclusions."
|
|
?CND7: CRLF
|
|
?CND5: PRINT INDENT
|
|
PRINTI "You may start over, restore a saved position, or end this session of the game. (Type RESTART, RESTORE, or QUIT):
|
|
>"
|
|
PUTB P-LEXV,0,10
|
|
READ P-INBUF,P-LEXV
|
|
PUTB P-LEXV,0,60
|
|
INC 'CNT
|
|
GET P-LEXV,1
|
|
EQUAL? STACK,W?RESTAR \?CCL11
|
|
RESTART
|
|
PRINT FAILED
|
|
JUMP ?PRG1
|
|
?CCL11: GET P-LEXV,1
|
|
EQUAL? STACK,W?RESTOR \?CCL13
|
|
RESTORE /?CCL13
|
|
PRINT FAILED
|
|
JUMP ?PRG1
|
|
?CCL13: GET P-LEXV,1
|
|
EQUAL? STACK,W?QUIT,W?Q /?CCL16
|
|
GRTR? CNT,10 \?PRG1
|
|
?CCL16: QUIT
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT V-VERSION,CNT=17,V
|
|
GET 0,1
|
|
BAND STACK,2047 >V
|
|
PRINT GAME-CAPS
|
|
CRLF
|
|
PRINTI "Infocom interactive fiction
|
|
Copyright (c) 1987 by Infocom, Inc. All rights reserved.
|
|
"
|
|
PRINT GAME-CAPS
|
|
PRINTI " is a trademark of Infocom, Inc.
|
|
Release "
|
|
PRINTN V
|
|
PRINTI " / Serial number "
|
|
?PRG1: IGRTR? 'CNT,23 /?REP2
|
|
GETB 0,CNT
|
|
PRINTC STACK
|
|
JUMP ?PRG1
|
|
?REP2: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$COMMAND
|
|
DIRIN 1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-$RANDOM
|
|
EQUAL? PRSO,INTNUM /?CCL3
|
|
PRINTR "ILLEGAL."
|
|
?CCL3: 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-$VERIFY
|
|
EQUAL? PRSO,INTNUM \?CCL3
|
|
EQUAL? P-NUMBER,25 \?CCL3
|
|
PRINTN SERIAL
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: PRINTI "Verifying."
|
|
CRLF
|
|
VERIFY \?CCL8
|
|
PRINT OK
|
|
RTRUE
|
|
?CCL8: CRLF
|
|
PRINTR "** Bad **"
|
|
|
|
|
|
.FUNCT V-ALARM
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL PERFORM-PRSA,ME
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ME \?CCL5
|
|
PRINTI "You pinch yourself. "
|
|
PRINT YOU-ARENT
|
|
PRINTI " dreaming"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,DEADBIT /?CCL7
|
|
FSET? PRSO,ACTORBIT /?CTR6
|
|
EQUAL? PRSO,CROC \?CCL7
|
|
?CTR6: CALL PRONOUN
|
|
PRINTR " isn't asleep."
|
|
?CCL7: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ANSWER-KLUDGE
|
|
CALL NOUN-USED,W?I,ME
|
|
ZERO? STACK /?CCL3
|
|
CALL V-INVENTORY
|
|
RSTACK
|
|
?CCL3: SET 'P-WON,FALSE-VALUE
|
|
PRINT NO-VERB
|
|
CALL STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-APPLAUD
|
|
PRINTR "Clap."
|
|
|
|
|
|
.FUNCT V-ASK-ABOUT,OWINNER
|
|
EQUAL? PRSO,ME \?CCL3
|
|
CALL PERFORM,V?TELL,ME
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
|
|
SET 'OWINNER,WINNER
|
|
SET 'WINNER,PRSO
|
|
CALL PERFORM,V?TELL-ABOUT,ME,PRSI
|
|
SET 'WINNER,OWINNER
|
|
CALL THIS-IS-IT,PRSI
|
|
CALL THIS-IS-IT,PRSO
|
|
RTRUE
|
|
?CCL5: CALL PERFORM,V?TELL,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-ASK-FOR
|
|
PRINTI "Naturally,"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " doesn't oblige."
|
|
|
|
|
|
.FUNCT V-ASK-NO-ONE-FOR,ACTOR
|
|
CALL FIND-IN,HERE,ACTORBIT >ACTOR
|
|
ZERO? ACTOR /?CCL3
|
|
CALL PERFORM,V?ASK-FOR,ACTOR,PRSO
|
|
RTRUE
|
|
?CCL3: CALL NO-ONE-HERE,STR?247
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BITE
|
|
CALL HACK-HACK,STR?248
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BLOW
|
|
CALL CANT-VERB-A-PRSO,STR?249
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-BOARD
|
|
IN? PROTAGONIST,PRSO \?CCL3
|
|
PRINT LOOK-AROUND
|
|
RTRUE
|
|
?CCL3: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL5: CALL UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /FALSE
|
|
CALL CANT-REACH,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BOARD,AV
|
|
LOC PROTAGONIST >AV
|
|
FSET? PRSO,VEHBIT \?CCL3
|
|
MOVE PROTAGONIST,PRSO
|
|
PRINTI "You are now "
|
|
FSET? PRSO,INBIT \?CCL6
|
|
PRINTC 105
|
|
JUMP ?CND4
|
|
?CCL6: PRINTC 111
|
|
?CND4: PRINTC 110
|
|
CALL TPRINT-PRSO
|
|
PRINTC 46
|
|
LOC PROTAGONIST
|
|
GETP STACK,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
CRLF
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,ACTORBIT \?CCL8
|
|
PRINT POLITE-SOCIETY
|
|
RTRUE
|
|
?CCL8: GET P-ITBL,P-PREP1
|
|
EQUAL? STACK,PR?IN \?CCL10
|
|
CALL CANT-VERB-A-PRSO,STR?250
|
|
RSTACK
|
|
?CCL10: CALL CANT-VERB-A-PRSO,STR?251
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-BRIBE
|
|
ZERO? PRSI \?CCL3
|
|
CALL HELD?,BANKNOTE
|
|
ZERO? STACK /?CCL6
|
|
CALL PERFORM,V?GIVE,BANKNOTE,PRSO
|
|
RTRUE
|
|
?CCL6: PRINTI "A lady bribes only with money"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: CALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-BURN
|
|
ZERO? PRSI \?CCL3
|
|
CALL GLOBAL-IN?,FIRE,HERE
|
|
ZERO? STACK \?CCL3
|
|
CALL GLOBAL-IN?,TORCH,HERE
|
|
ZERO? STACK \?CCL3
|
|
PRINTI "You have no source of fire."
|
|
CRLF
|
|
FSET? PRSO,WORNBIT \?CCL10
|
|
PRINTI "Unless you relish a fiery death, you had best remove"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: PRINTR "Ladies do not play with fire."
|
|
?CCL10: EQUAL? PRSO,POWDER \?CCL12
|
|
PRINTI "Papa says never put "
|
|
PRINTD POWDER
|
|
PRINTR " near a flame."
|
|
?CCL12: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL14
|
|
CALL DO-FIRST,STR?252,PRSO
|
|
RSTACK
|
|
?CCL14: FSET? PRSO,ACTORBIT \?CCL16
|
|
PRINT UNLADY
|
|
RTRUE
|
|
?CCL16: FSET? PRSO,BURNBIT \?CCL18
|
|
REMOVE PRSO
|
|
PRINTI "In an instant,"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is consumed by fire."
|
|
?CCL18: CALL CANT-VERB-A-PRSO,STR?253
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CHASTISE
|
|
EQUAL? PRSO,INTDIR \?CCL3
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTI "go in that "
|
|
PRINTD INTDIR
|
|
PRINTR " to see what's there."
|
|
?CCL3: ZERO? CHASTISED? \?CND4
|
|
PRINTI "You may use prepositions to indicate precisely what you want to do: LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc. In this case I'll take you to mean LOOK AT the object."
|
|
CRLF
|
|
PRINT INDENT
|
|
SET 'CHASTISED?,TRUE-VALUE
|
|
?CND4: EQUAL? PRSO,ROOMS \?CCL8
|
|
CALL PERFORM,V?LOOK
|
|
RTRUE
|
|
?CCL8: CALL PERFORM,V?EXAMINE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-CLEAN
|
|
SET 'AWAITING-REPLY,2
|
|
CALL QUEUE,I-REPLY,2
|
|
PRINTR "Do you also do windows?"
|
|
|
|
|
|
.FUNCT V-CLIMB
|
|
EQUAL? PRSO,INTDIR \?CCL3
|
|
EQUAL? P-PRSA-WORD,W?CRAWL \?CCL3
|
|
CALL DO-WALK,P-DIRECTION
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CCL7
|
|
CALL DO-WALK,P?UP
|
|
RSTACK
|
|
?CCL7: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL9
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL9: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-DOWN
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL DO-WALK,P?DOWN
|
|
RSTACK
|
|
?CCL3: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL5: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-ON
|
|
FSET? PRSO,VEHBIT /?CTR2
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
?CTR2: CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?CCL3: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL7
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL7: GET P-ITBL,P-PREP1
|
|
EQUAL? STACK,PR?IN \?CCL9
|
|
CALL CANT-VERB-A-PRSO,STR?254
|
|
RSTACK
|
|
?CCL9: CALL CANT-VERB-A-PRSO,STR?255
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLIMB-OVER
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL3: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CLOSE
|
|
FSET? PRSO,DOORBIT /?PRD5
|
|
FSET? PRSO,CONTBIT \?CCL3
|
|
?PRD5: FSET? PRSO,SURFACEBIT /?CCL3
|
|
FSET? PRSO,ACTORBIT /?CCL3
|
|
EQUAL? PRSO,RIGGING-OBJECT,GARTER,CROC /?CCL3
|
|
CALL OPEN-CLOSE,PRSO
|
|
RSTACK
|
|
?CCL3: CALL CANT-VERB-A-PRSO,STR?256
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CRAWL-UNDER
|
|
FSET? PRSO,TAKEBIT /?CCL3
|
|
CALL TELL-HIT-HEAD
|
|
RSTACK
|
|
?CCL3: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CRY
|
|
CALL NO-TIME-FOR,STR?257
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-CUT
|
|
ZERO? PRSI /?CTR2
|
|
EQUAL? PRSI,ROOMS \?CCL3
|
|
?CTR2: CALL HELD?,DAGGER
|
|
ZERO? STACK /?CCL8
|
|
CALL PERFORM,V?CUT,PRSO,DAGGER
|
|
RTRUE
|
|
?CCL8: FSET? PRSO,ACTORBIT \?CCL10
|
|
CALL PERFORM,V?KILL,PRSO
|
|
RTRUE
|
|
?CCL10: PRINTR "Your fingernails aren't that sharp!"
|
|
?CCL3: PRINTI "To put it bluntly, neither"
|
|
CALL TPRINT-PRSI
|
|
PRINTI " nor you are very sharp"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-DANCE,OW
|
|
EQUAL? WINNER,PROTAGONIST /?CCL3
|
|
EQUAL? PRSO,FALSE-VALUE,ME,PROTAGONIST \?CCL3
|
|
SET 'OW,WINNER
|
|
SET 'WINNER,PROTAGONIST
|
|
CALL PERFORM,V?DANCE,OW
|
|
SET 'WINNER,OW
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,ACTORBIT \?CCL7
|
|
EQUAL? HERE,BALLROOM,ORCHESTRA /?CCL10
|
|
PRINTI "This isn't a good place to dance"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL10: PRINTI "It is unlikely"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " would want to dance just now."
|
|
?CCL7: EQUAL? PRSO,ROOMS,ME \?CCL12
|
|
ZERO? PARTNER /?CCL15
|
|
PRINT PACE
|
|
RTRUE
|
|
?CCL15: PRINTR "One cannot dance the minuet alone."
|
|
?CCL12: PRINTI "Dancing with"
|
|
CALL APRINT,PRSO
|
|
PRINTR " is an early symptom of the plague."
|
|
|
|
|
|
.FUNCT V-DISEMBARK
|
|
ZERO? PRSO \?CCL3
|
|
IN? PROTAGONIST,HERE /?CCL6
|
|
LOC PROTAGONIST
|
|
CALL PERFORM-PRSA,STACK
|
|
RTRUE
|
|
?CCL6: PRINT LOOK-AROUND
|
|
RTRUE
|
|
?CCL3: EQUAL? P-PRSA-WORD,W?TAKE \?CCL8
|
|
CALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
?CCL8: EQUAL? PRSO,LEDGE \?CCL10
|
|
EQUAL? HERE,CABIN \?CCL10
|
|
CALL PERFORM,V?CLIMB-ON,PRSO
|
|
RTRUE
|
|
?CCL10: IN? PROTAGONIST,PRSO /?CCL14
|
|
PRINT LOOK-AROUND
|
|
RETURN 8
|
|
?CCL14: EQUAL? HERE,BY-SHIP,LAGOON \?CCL18
|
|
CALL V-SWIM
|
|
RSTACK
|
|
?CCL18: MOVE PROTAGONIST,HERE
|
|
PRINTI "You"
|
|
IN? HERO,PRSO \?CND19
|
|
MOVE HERO,HERE
|
|
PRINTI " and "
|
|
PRINTD HERO
|
|
?CND19: PRINTI " get o"
|
|
CALL OFF-VEHICLE?,PRSO
|
|
ZERO? STACK /?CCL23
|
|
PRINTI "ff"
|
|
JUMP ?CND21
|
|
?CCL23: PRINTI "ut of"
|
|
?CND21: CALL TPRINT-PRSO
|
|
PRINTR "."
|
|
|
|
|
|
.FUNCT V-DRESS
|
|
ZERO? PRSO /?CCL3
|
|
FSET? PRSO,ACTORBIT \?CCL6
|
|
PRINTR "There's no need for that."
|
|
?CCL6: CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL3: SET 'PRSO,ROOMS
|
|
CALL V-GET-DRESSED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRINK
|
|
CALL CANT-VERB-A-PRSO,STR?258
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DRINK-FROM
|
|
CALL CANT-VERB-A-PRSO,STR?259
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-DROP
|
|
CALL SPECIAL-DROP
|
|
ZERO? STACK \FALSE
|
|
LOC PROTAGONIST
|
|
EQUAL? STACK,SKIFF,CASK \?CCL6
|
|
LOC PROTAGONIST
|
|
MOVE PRSO,STACK
|
|
JUMP ?CND4
|
|
?CCL6: MOVE PRSO,HERE
|
|
?CND4: PRINTR "Dropped."
|
|
|
|
|
|
.FUNCT SPECIAL-DROP
|
|
EQUAL? HERE,BOWSPRIT,ON-LADDER \?CCL3
|
|
REMOVE PRSO
|
|
PRINTI "With a splash,"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is lost forever."
|
|
?CCL3: LOC PROTAGONIST
|
|
EQUAL? STACK,SHALLOWS \?CCL5
|
|
REMOVE PRSO
|
|
PRINTI "With a plop,"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is dragged out by a wave."
|
|
?CCL5: EQUAL? HERE,RIGGING-ROOM /?CCL7
|
|
EQUAL? HERE,CROWS-NEST \FALSE
|
|
EQUAL? PRSA,V?THROW \FALSE
|
|
?CCL7: FSET? PRSO,WEARBIT \?CCL14
|
|
FSET? PRSO,WORNBIT /?CCL14
|
|
MOVE PRSO,HERE
|
|
PRINTI "Billowing out,"
|
|
CALL TPRINT-PRSO
|
|
PRINTI " catch"
|
|
FSET? PRSO,PLURALBIT /?CND17
|
|
PRINTI "es"
|
|
?CND17: PRINTI " in"
|
|
CALL TPRINT,RIGGING-OBJECT
|
|
PRINTR " nearby."
|
|
?CCL14: MOVE PRSO,WHICH-MAST?
|
|
CALL CTPRINT,PRSO
|
|
PRINTR " falls to the deck below."
|
|
|
|
|
|
.FUNCT V-EAT
|
|
PRINTI "A lady is trained to eat anything, but this is absurd"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EMBRACE
|
|
CALL TOUCHING?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
PRINTI "You give"
|
|
CALL TPRINT-PRSO
|
|
PRINTI " a brief embrace"
|
|
FSET? PRSO,ACTORBIT /?CND4
|
|
PRINTI " and are not surprised when it doesn't respond"
|
|
?CND4: PRINT PCR
|
|
RTRUE
|
|
?CCL3: IN? PRSO,GLOBAL-OBJECTS \?CCL7
|
|
CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL7: CALL CANT-REACH,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-EMPTY,OBJ,NXT
|
|
ZERO? PRSI \?CND1
|
|
SET 'PRSI,GROUND
|
|
?CND1: FSET? PRSO,CONTBIT /?CCL5
|
|
PRINT HUH
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,OPENBIT /?CCL7
|
|
PRINTI "But"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " isn't open."
|
|
?CCL7: FIRST? PRSO /?CCL9
|
|
PRINTI "But"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is already empty!"
|
|
?CCL9: FIRST? PRSO
|
|
EQUAL? PRSI,STACK \?CCL11
|
|
NEXT? PRSI /?CCL11
|
|
PRINT THERES-NOTHING
|
|
PRINTI "in"
|
|
CALL TPRINT-PRSO
|
|
PRINTI " but"
|
|
CALL TRPRINT,PRSI
|
|
RSTACK
|
|
?CCL11: FIRST? PRSO >OBJ /?PRG15
|
|
?PRG15: NEXT? OBJ >NXT /?BOGUS17
|
|
?BOGUS17: EQUAL? OBJ,PROTAGONIST /?CND18
|
|
PRINTD OBJ
|
|
PRINTI ": "
|
|
FSET? OBJ,TAKEBIT \?CCL22
|
|
MOVE OBJ,PROTAGONIST
|
|
EQUAL? PRSI,HANDS \?CCL25
|
|
PRINTI "Taken."
|
|
CRLF
|
|
JUMP ?CND18
|
|
?CCL25: EQUAL? PRSI,GROUND \?CCL27
|
|
CALL PERFORM,V?DROP,OBJ
|
|
JUMP ?CND18
|
|
?CCL27: FSET? PRSI,SURFACEBIT \?CCL29
|
|
CALL PERFORM,V?PUT-ON,OBJ,PRSI
|
|
JUMP ?CND18
|
|
?CCL29: CALL PERFORM,V?PUT,OBJ,PRSI
|
|
JUMP ?CND18
|
|
?CCL22: CALL WASTES
|
|
?CND18: ZERO? NXT /TRUE
|
|
SET 'OBJ,NXT
|
|
JUMP ?PRG15
|
|
|
|
|
|
.FUNCT V-EMPTY-FROM
|
|
IN? PRSO,PRSI \?CCL3
|
|
FSET? PRSO,TAKEBIT \?CCL6
|
|
MOVE PRSO,PROTAGONIST
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL6: CALL WASTES
|
|
RSTACK
|
|
?CCL3: CALL NOT-IN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ENTER
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
CALL OTHER-SIDE,PRSO
|
|
CALL DO-WALK,STACK
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,VEHBIT \?CCL5
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?CCL5: FSET? PRSO,ACTORBIT \?CCL7
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?CCL7: IN? PRSO,LOCAL-GLOBALS \?CCL9
|
|
CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL9: FSET? PRSO,TAKEBIT /?CCL11
|
|
CALL TELL-HIT-HEAD
|
|
RSTACK
|
|
?CCL11: CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL13
|
|
PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL13: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-EXAMINE
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
FIRST? PRSO \?CCL6
|
|
CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
?CCL6: CALL NOTHING-INTERESTING
|
|
PRINTI "about"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,DOORBIT /?CTR7
|
|
FSET? PRSO,SURFACEBIT \?CCL8
|
|
?CTR7: CALL V-LOOK-INSIDE
|
|
RSTACK
|
|
?CCL8: FSET? PRSO,CONTBIT \?CCL12
|
|
FSET? PRSO,OPENBIT \?CCL15
|
|
CALL V-LOOK-INSIDE
|
|
RSTACK
|
|
?CCL15: PRINTI "It"
|
|
PRINT IS-CLOSED
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL12: FSET? PRSO,LIGHTBIT \?CCL17
|
|
PRINTI "It's o"
|
|
FSET? PRSO,ONBIT \?CCL20
|
|
PRINTC 110
|
|
JUMP ?CND18
|
|
?CCL20: PRINTI "ff"
|
|
?CND18: PRINT PCR
|
|
RTRUE
|
|
?CCL17: FSET? PRSO,NARTICLEBIT \?CCL22
|
|
CALL SENSE-OBJECT,STR?260
|
|
RSTACK
|
|
?CCL22: RANDOM 100
|
|
LESS? 25,STACK \?CTR23
|
|
EQUAL? PRSO,PSEUDO-OBJECT \?CCL24
|
|
?CTR23: PRINT COMMON-LOOKING
|
|
PRINTD PRSO
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL24: RANDOM 100
|
|
LESS? 60,STACK /?CCL28
|
|
CALL NOTHING-INTERESTING
|
|
PRINTI "about"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL28: CALL PRONOUN
|
|
PRINTI " look"
|
|
FSET? PRSO,PLURALBIT /?CND29
|
|
EQUAL? PRSO,ME /?CND29
|
|
PRINTC 115
|
|
?CND29: PRINTI " like every other "
|
|
PRINTD PRSO
|
|
PRINTR " you've ever seen."
|
|
|
|
|
|
.FUNCT NOTHING-INTERESTING
|
|
PRINT THERES-NOTHING
|
|
RANDOM 100
|
|
LESS? 25,STACK /?CCL3
|
|
PRINTI "unusual"
|
|
JUMP ?CND1
|
|
?CCL3: RANDOM 100
|
|
LESS? 33,STACK /?CCL5
|
|
PRINTI "noteworthy"
|
|
JUMP ?CND1
|
|
?CCL5: RANDOM 100
|
|
LESS? 50,STACK /?CCL7
|
|
PRINTI "extraordinary"
|
|
JUMP ?CND1
|
|
?CCL7: PRINTI "special"
|
|
?CND1: PRINTC 32
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-EXIT
|
|
ZERO? PRSO /?CCL3
|
|
FSET? PRSO,VEHBIT \?CCL3
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
?CCL3: CALL IN-EXITABLE-VEHICLE?
|
|
ZERO? STACK \FALSE
|
|
CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT IN-EXITABLE-VEHICLE?,AV
|
|
LOC PROTAGONIST >AV
|
|
EQUAL? AV,CASK,SKIFF,LEDGE /?CTR2
|
|
EQUAL? AV,LAFS-BED,CAPT-BED,COT /?CTR2
|
|
EQUAL? AV,CABIN-BED \FALSE
|
|
?CTR2: LOC PROTAGONIST
|
|
CALL PERFORM,V?DISEMBARK,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FEED
|
|
CALL MORE-SPECIFIC
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FIDDLE
|
|
CALL HACK-HACK,STR?261
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FILL
|
|
ZERO? PRSI \?CCL3
|
|
PRINT THERES-NOTHING
|
|
PRINTR "to fill it with."
|
|
?CCL3: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SFILL
|
|
CALL PERFORM,V?FILL,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FIND,WHERE=0,L
|
|
LOC PRSO >L
|
|
ZERO? L \?CCL3
|
|
CALL PRONOUN
|
|
PRINTR " could be anywhere!"
|
|
?CCL3: IN? PRSO,PROTAGONIST \?CCL5
|
|
PRINTR "You have it!"
|
|
?CCL5: IN? PRSO,HERE \?CCL7
|
|
PRINTR "Right in front of you."
|
|
?CCL7: IN? PRSO,GLOBAL-OBJECTS /?CTR8
|
|
CALL GLOBAL-IN?,PRSO,HERE
|
|
ZERO? STACK \?CTR8
|
|
EQUAL? PRSO,PSEUDO-OBJECT \?CCL9
|
|
?CTR8: CALL FIGURE-IT-OUT
|
|
RSTACK
|
|
?CCL9: FSET? L,ACTORBIT \?CCL14
|
|
CALL VISIBLE?,L
|
|
ZERO? STACK /?CCL14
|
|
PRINTI "Looks as if"
|
|
CALL TPRINT,L
|
|
PRINTR " has it."
|
|
?CCL14: FSET? L,CONTBIT \?CCL18
|
|
CALL VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL18
|
|
IN? L,GLOBAL-OBJECTS /?CCL18
|
|
FSET? L,SURFACEBIT \?CCL24
|
|
PRINTC 79
|
|
JUMP ?CND22
|
|
?CCL24: FSET? L,VEHBIT \?CCL26
|
|
FSET? L,INBIT /?CCL26
|
|
PRINTC 79
|
|
JUMP ?CND22
|
|
?CCL26: PRINTC 73
|
|
?CND22: PRINTC 110
|
|
CALL TRPRINT,L
|
|
RSTACK
|
|
?CCL18: ZERO? WHERE /?CCL30
|
|
PRINTR "Beats me."
|
|
?CCL30: CALL FIGURE-IT-OUT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-FOLLOW
|
|
CALL VISIBLE?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
PRINTI "But"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is right here!"
|
|
?CCL3: FSET? PRSO,ACTORBIT /?CCL5
|
|
CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL5: PRINTI "You have no idea where"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is."
|
|
|
|
|
|
.FUNCT PRE-GIVE,GLASS=0
|
|
FSET? PRSO,DEADBIT \?CCL3
|
|
EQUAL? PRSI,SALTS /?CCL3
|
|
PRINTI "It's unlikely"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " will want that."
|
|
?CCL3: EQUAL? PRSA,V?GIVE \?CCL7
|
|
EQUAL? PRSO,HANDS \?CCL7
|
|
CALL PERFORM,V?SHAKE-WITH,PRSI
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSO,WINE \?CCL11
|
|
CALL HELD?,BLUE-GLASS
|
|
ZERO? STACK \?CTR10
|
|
CALL HELD?,GREEN-GLASS
|
|
ZERO? STACK /?CCL11
|
|
?CTR10: CALL HELD?,BLUE-GLASS
|
|
ZERO? STACK /?CCL18
|
|
SET 'GLASS,BLUE-GLASS
|
|
JUMP ?CND16
|
|
?CCL18: CALL HELD?,GREEN-GLASS
|
|
ZERO? STACK /?CND16
|
|
SET 'GLASS,GREEN-GLASS
|
|
?CND16: CALL PERFORM-PRSA,GLASS,PRSI
|
|
RTRUE
|
|
?CCL11: CALL IDROP
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-GET-DRESSED
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL MORE-SPECIFIC
|
|
RSTACK
|
|
?CCL3: CALL RECOGNIZE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-GET-DRUNK
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
CALL RECOGNIZE
|
|
RSTACK
|
|
?CCL3: SET 'AWAITING-REPLY,2
|
|
CALL QUEUE,I-REPLY,2
|
|
PRINTR "Here?"
|
|
|
|
|
|
.FUNCT V-GET-UNDRESSED
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL REMOVE-CLOTHES,TRUE-VALUE
|
|
RSTACK
|
|
?CCL3: CALL RECOGNIZE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT REMOVE-CLOTHES,CALLED-BY-GET-UNDRESSED=0,X,N
|
|
ZERO? CALLED-BY-GET-UNDRESSED /?CND1
|
|
CALL LAF-DOFF-CHECK
|
|
ZERO? STACK \TRUE
|
|
PRINTI "You"
|
|
FSET? CHEMISE,EVERYBIT /?CCL8
|
|
FSET? PANTS,WORNBIT /?CCL8
|
|
FSET? SHIRT,WORNBIT /?CCL8
|
|
PRINTR "'re already stripped!"
|
|
?CCL8: PRINTI " strip down to your chemise"
|
|
PRINT PCR
|
|
?CND1: FIRST? PROTAGONIST >X /?PRG13
|
|
?PRG13: ZERO? X /?REP14
|
|
FSET? X,WORNBIT \?CND15
|
|
FCLEAR X,WORNBIT
|
|
?CND15: NEXT? X >N /?BOGUS19
|
|
?BOGUS19: SET 'X,N
|
|
JUMP ?PRG13
|
|
?REP14: MOVE RETICULE,PROTAGONIST
|
|
FSET SHOES,WORNBIT
|
|
FSET CHEMISE,WORNBIT
|
|
FCLEAR CHEMISE,EVERYBIT
|
|
SET 'BOY-DRESS?,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNDRESS
|
|
ZERO? PRSO /?CCL3
|
|
EQUAL? PRSO,DAD \?CCL6
|
|
SET 'AWAITING-REPLY,2
|
|
CALL QUEUE,I-REPLY,2
|
|
PRINTR "Undress your father?!"
|
|
?CCL6: EQUAL? PRSO,ME \?CCL8
|
|
CALL PERFORM,V?GET-UNDRESSED,ROOMS
|
|
RTRUE
|
|
?CCL8: FSET? PRSO,ACTORBIT \?CCL10
|
|
FSET? PRSO,FEMALEBIT /?CCL10
|
|
PRINT MOTHER
|
|
RTRUE
|
|
?CCL10: CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL3: SET 'PRSO,ROOMS
|
|
CALL V-GET-UNDRESSED
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-GIVE
|
|
FSET? PRSI,ACTORBIT \?CCL3
|
|
FSET? PRSI,DEADBIT \?CCL6
|
|
PRINT DOESNT-RESPOND
|
|
RTRUE
|
|
?CCL6: PRINTI "Briskly,"
|
|
CALL TPRINT-PRSI
|
|
PRINTR " refuses your offer."
|
|
?CCL3: PRINT YOU-CANT
|
|
PRINTI "give"
|
|
CALL APRINT,PRSO
|
|
PRINTI " to"
|
|
CALL APRINT,PRSI
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT V-HELLO
|
|
ZERO? PRSO /?CCL3
|
|
EQUAL? PRSO,W?SAILOR \?CCL6
|
|
PRINTI "Nothing happens"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL6: PRINTR "[The proper way to talk to characters in the story is PERSON, HELLO.]"
|
|
?CCL3: EQUAL? HERE,CABIN \?CCL8
|
|
IN? HERO,HERE \?CCL8
|
|
CALL PERFORM,V?HELLO,HERO
|
|
RTRUE
|
|
?CCL8: CALL PERFORM,V?TELL,ME
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-HALT
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
PRINTI "You haven't started"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: CALL PROPOSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HELP
|
|
PRINTI "If you're feeling pillaged, maps and hint booklets are available from your dealer, or via mail order with the form"
|
|
CALL IN-PACKAGE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-HIDE
|
|
PRINT YOU-CANT
|
|
PRINTI "hide "
|
|
ZERO? PRSO /?CND1
|
|
PRINTC 116
|
|
?CND1: PRINTR "here."
|
|
|
|
|
|
.FUNCT V-I-LOVE-YOU
|
|
EQUAL? P-PRSA-WORD,W?I \?CCL3
|
|
PRINTR "[Why... I'm speechless! Thank you.]"
|
|
?CCL3: CALL RECOGNIZE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-IN,VEHICLE
|
|
CALL DO-WALK,P?IN
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-KICK
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
FSET? PRSO,DEADBIT \?CCL6
|
|
PRINT DOESNT-RESPOND
|
|
RTRUE
|
|
?CCL6: PRINTR """Hey! Cut that out!"""
|
|
?CCL3: CALL HACK-HACK,STR?262
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-KILL
|
|
PRINTR "Relax."
|
|
|
|
|
|
.FUNCT V-KISS
|
|
PRINTR """Smooch!"""
|
|
|
|
|
|
.FUNCT V-CURTSEY
|
|
PRINTR "You curtsey gracefully."
|
|
|
|
|
|
.FUNCT V-KNOCK
|
|
CALL HACK-HACK,STR?263
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LAUGH
|
|
PRINTR """Ha-ha."""
|
|
|
|
|
|
.FUNCT V-LAUNCH
|
|
PRINTR "Your brain is out to launch."
|
|
|
|
|
|
.FUNCT V-LEAP
|
|
ZERO? PRSO /?CTR2
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
?CTR2: EQUAL? HERE,DUNGEON \?CCL8
|
|
FSET? TRAP,OPENBIT \?CCL8
|
|
CALL PERFORM,V?ENTER,TRAP
|
|
RTRUE
|
|
?CCL8: EQUAL? HERE,RIGGING-ROOM,CROWS-NEST,BOWSPRIT \?CCL12
|
|
PRINT SUICIDE
|
|
RTRUE
|
|
?CCL12: CALL WHEE
|
|
RSTACK
|
|
?CCL3: IN? PRSO,HERE /?CCL14
|
|
CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL14: CALL WHEE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAP-OFF
|
|
FSET? PRSO,VEHBIT \?CCL3
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
?CCL3: CALL SHIP-BOARD,HERE
|
|
ZERO? STACK /?CCL5
|
|
PRINT SUICIDE
|
|
RTRUE
|
|
?CCL5: CALL PERFORM,V?LEAP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LEAP-OVERBOARD
|
|
CALL SHIP-BOARD,HERE
|
|
ZERO? STACK /?CCL3
|
|
PRINT SUICIDE
|
|
RTRUE
|
|
?CCL3: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LEAVE
|
|
ZERO? PRSO \?CND1
|
|
SET 'PRSO,ROOMS
|
|
?CND1: EQUAL? PRSO,ROOMS \?CCL5
|
|
CALL DO-WALK,P?OUT
|
|
RSTACK
|
|
?CCL5: IN? PROTAGONIST,PRSO \?CCL7
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
?CCL7: CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LIE-DOWN
|
|
FSET? PRSO,VEHBIT /?CTR2
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
?CTR2: CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?CCL3: CALL WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LISTEN
|
|
CALL RUNNING?,I-LUCY
|
|
ZERO? STACK /?CCL3
|
|
CALL PERFORM,V?LISTEN,LUCY
|
|
RTRUE
|
|
?CCL3: IN? HERO,HERE /?CTR4
|
|
IN? DAD,HERE /?CTR4
|
|
IN? LAFOND,HERE /?CTR4
|
|
IN? COOKIE,HERE \?CCL5
|
|
?CTR4: PRINTI "You listen intently"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,PATROL \?CCL11
|
|
CALL CTPRINT,PATROL
|
|
PRINTR " confers quietly."
|
|
?CCL11: CALL RUNNING?,I-PIRATE-RESCUE
|
|
ZERO? STACK /?CCL13
|
|
PRINT THE-BALLROOM
|
|
PRINTR "tumult of screams."
|
|
?CCL13: EQUAL? HERE,ORCHESTRA,BALLROOM,SUPPER-ROOM \?CCL15
|
|
ZERO? ENDGAME \?CCL15
|
|
PRINTR "The orchestra plays a sprightly dance tune."
|
|
?CCL15: ZERO? PRSO /?CCL19
|
|
CALL SENSE-OBJECT,STR?264
|
|
RSTACK
|
|
?CCL19: PRINTR "You hear nothing of interest."
|
|
|
|
|
|
.FUNCT PRE-LOCK
|
|
EQUAL? HERE,QUARTERDECK,LANDING \?CCL3
|
|
EQUAL? P-PRSA-WORD,W?UNBAR /FALSE
|
|
?CCL3: EQUAL? PRSO,FLOWER \?CCL7
|
|
EQUAL? PRSA,V?PICK \?CCL7
|
|
CALL PERFORM,V?TAKE,FLOWER
|
|
RTRUE
|
|
?CCL7: EQUAL? PRSO,HERO \?CCL11
|
|
EQUAL? HERE,DUNGEON \?CCL11
|
|
ZERO? PRSI /?CCL16
|
|
CALL PERFORM,V?UNLOCK,MANACLES,PRSI
|
|
RTRUE
|
|
?CCL16: CALL PROPOSE
|
|
RSTACK
|
|
?CCL11: FSET? PRSO,LOCKEDBIT /?PRD20
|
|
EQUAL? PRSA,V?PICK,V?UNLOCK /?CTR17
|
|
?PRD20: FSET? PRSO,LOCKEDBIT \?CCL18
|
|
EQUAL? PRSA,V?LOCK \?CCL18
|
|
?CTR17: EQUAL? PRSO,MANACLES \?CCL27
|
|
PRINT ALREADY-ARE
|
|
RTRUE
|
|
?CCL27: PRINT ALREADY-IS
|
|
RTRUE
|
|
?CCL18: ZERO? PRSI \FALSE
|
|
EQUAL? PRSA,V?PICK \?CCL32
|
|
CALL HELD?,JEWEL
|
|
ZERO? STACK /?CCL32
|
|
PRINTI "[with"
|
|
CALL TPRINT,JEWEL
|
|
PRINTC 93
|
|
CRLF
|
|
CALL PERFORM-PRSA,PRSO,JEWEL
|
|
RSTACK
|
|
?CCL32: CALL HELD?,LARGE-KEY
|
|
ZERO? STACK /?CCL36
|
|
PRINTI "[with"
|
|
CALL TPRINT,LARGE-KEY
|
|
PRINTC 93
|
|
CRLF
|
|
CALL PERFORM-PRSA,PRSO,LARGE-KEY
|
|
RSTACK
|
|
?CCL36: CALL PROPOSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK
|
|
CALL DESCRIBE-ROOM,TRUE-VALUE
|
|
ZERO? STACK /TRUE
|
|
CALL DESCRIBE-OBJECTS
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-BEHIND
|
|
FSET? PRSO,DOORBIT \?CND1
|
|
CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
?CND1: PRINTI "There is nothing behind"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-DOWN
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL PERFORM,V?EXAMINE,GROUND
|
|
RTRUE
|
|
?CCL3: CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-INSIDE
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
PRINT IT-SEEMS-THAT
|
|
FSET? PRSO,FEMALEBIT \?CCL6
|
|
PRINTI " sh"
|
|
JUMP ?CND4
|
|
?CCL6: PRINTI " h"
|
|
?CND4: PRINTI "e has"
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: IN? PROTAGONIST,PRSO \?CCL10
|
|
CALL DESCRIBE-VEHICLE
|
|
RSTACK
|
|
?CCL10: FSET? PRSO,SURFACEBIT \?CCL12
|
|
PRINT YOU-SEE
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINTI " on"
|
|
CALL TRPRINT,PRSO
|
|
RTRUE
|
|
?CCL12: FSET? PRSO,DOORBIT \?CCL16
|
|
PRINTI "You can only tell that"
|
|
CALL TPRINT-PRSO
|
|
PRINTI " is"
|
|
CALL TELL-OPEN/CLOSED,PRSO
|
|
PRINTI ".
|
|
"
|
|
RTRUE
|
|
?CCL16: FSET? PRSO,CONTBIT \?CCL18
|
|
CALL SEE-INSIDE?,PRSO
|
|
ZERO? STACK /?CCL21
|
|
PRINT YOU-SEE
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINTI " in"
|
|
CALL TRPRINT,PRSO
|
|
RTRUE
|
|
?CCL21: FSET? PRSO,OPENBIT /?CCL25
|
|
FIRST? PRSO \?CCL25
|
|
CALL PRE-TOUCH
|
|
ZERO? STACK \TRUE
|
|
CALL PERFORM,V?OPEN,PRSO
|
|
RTRUE
|
|
?CCL25: CALL DO-FIRST,STR?265,PRSO
|
|
RSTACK
|
|
?CCL18: GET P-ITBL,P-PREP1
|
|
EQUAL? STACK,PR?IN \?CCL31
|
|
CALL CANT-VERB-A-PRSO,STR?266
|
|
RSTACK
|
|
?CCL31: PRINTI "Even if Queen Augusta commanded it, you couldn't see through that"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-LOOK-UNDER
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
FSET? PRSO,WORNBIT \?CCL6
|
|
PRINTR "You're wearing it!"
|
|
?CCL6: PRINT HOLDING-IT
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,DOORBIT \?CCL8
|
|
PRINTR "The space is too narrow to see anything."
|
|
?CCL8: CALL NOTHING-INTERESTING
|
|
PRINTI "under"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-LOOK-UP
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
EQUAL? HERE,RIGGING-ROOM,CROWS-NEST \?CCL6
|
|
PRINT YOU-SEE
|
|
PRINTR " a mess of sails and rope."
|
|
?CCL6: FSET? HERE,INDOORSBIT \?CCL8
|
|
CALL PERFORM,V?EXAMINE,CEILING
|
|
RTRUE
|
|
?CCL8: PRINTR "The midnight sky is clear of all but a full moon."
|
|
?CCL3: CALL PERFORM,V?LOOK-INSIDE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MAKE-OUT,KISSEE
|
|
EQUAL? PRSO,ROOMS /?CCL3
|
|
SET 'KISSEE,PRSO
|
|
JUMP ?CND1
|
|
?CCL3: CALL FIND-IN,HERE,ACTORBIT,STR?267 >KISSEE
|
|
ZERO? KISSEE \?CND1
|
|
SET 'KISSEE,ME
|
|
?CND1: CALL PERFORM,V?KISS,KISSEE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-MARRY
|
|
EQUAL? PRSO,COOKIE,CRULLEY,LAFOND \?CCL3
|
|
PRINTI "I doubt that"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is the marrying type."
|
|
?CCL3: EQUAL? PRSO,DAD \?CCL5
|
|
PRINTR "Don't be absurd."
|
|
?CCL5: EQUAL? PRSO,HERO \?CCL7
|
|
CALL LADY-MUST,STR?268
|
|
RSTACK
|
|
?CCL7: CALL WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MOVE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL3
|
|
CALL WASTES
|
|
RSTACK
|
|
?CCL3: CALL LOC-CLOSED
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,TAKEBIT \?CCL7
|
|
PRINTI "Moving"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " reveals nothing."
|
|
?CCL7: EQUAL? P-PRSA-WORD,W?PULL \?CCL9
|
|
CALL HACK-HACK,STR?269
|
|
RSTACK
|
|
?CCL9: CALL CANT-VERB-A-PRSO,STR?270
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MUNG
|
|
CALL HACK-HACK,STR?271
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-MUZZLE
|
|
CALL HACK-HACK,STR?272
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-NO
|
|
EQUAL? AWAITING-REPLY,1,2 \?CCL3
|
|
CALL V-YES
|
|
RSTACK
|
|
?CCL3: EQUAL? AWAITING-REPLY,3 \?CCL5
|
|
PRINTI "One should hope not! Lafond is too respectable to harbour such secrets"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL5: EQUAL? AWAITING-REPLY,4 \?CCL7
|
|
PRINTI """Foolish of me to have thought you were serious,"" he smiles, relieved"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL7: EQUAL? AWAITING-REPLY,5 \?CCL9
|
|
PRINTI """No!"" you say pertly"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL9: EQUAL? AWAITING-REPLY,6 \?CCL11
|
|
PRINTR "Papa clucks. ""Pity. I'll introduce you to Lucy after we're out of this mess."""
|
|
?CCL11: EQUAL? AWAITING-REPLY,9 \?CCL13
|
|
PRINT SHAKE-HEAD
|
|
PRINTR " firmly, ""No."""
|
|
?CCL13: EQUAL? AWAITING-REPLY,10 \?CCL15
|
|
PRINT SHAKE-HEAD
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL15: EQUAL? AWAITING-REPLY,11 \?CCL17
|
|
PRINTI """No,"" you say, chin trembling"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL17: EQUAL? AWAITING-REPLY,12 \?CCL19
|
|
PRINT SHAKE-HEAD
|
|
PRINTR ", teeth clenched."
|
|
?CCL19: EQUAL? AWAITING-REPLY,13 \?CCL21
|
|
PRINTR """God's blood! We'll have to find some other way."""
|
|
?CCL21: EQUAL? AWAITING-REPLY,14 \?CCL23
|
|
PRINTI """Sorry, but I'm enjoying this dance too much to just let you go."" Jamison tightens his grip on "
|
|
PRINTD HANDS
|
|
PRINTI " as you circle each other"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL23: EQUAL? AWAITING-REPLY,15 \?CCL25
|
|
PRINT SHAKE-HEAD
|
|
PRINTR " breathlessly."
|
|
?CCL25: EQUAL? AWAITING-REPLY,16 \?CCL27
|
|
PRINTR """'Tis a pity. I was hoping..."""
|
|
?CCL27: EQUAL? AWAITING-REPLY,17 \?CCL29
|
|
PRINTR """I'll do the hittin' 'ere."""
|
|
?CCL29: CALL YOU-SOUND,STR?273
|
|
RSTACK
|
|
|
|
|
|
.FUNCT NO-WORD,WRD
|
|
EQUAL? WRD,W?NO,W?NOPE /TRUE
|
|
EQUAL? WRD,W?NAY,W?NEVER /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-OFF
|
|
FSET? PRSO,LIGHTBIT \?CCL3
|
|
FSET? PRSO,ONBIT \?CCL6
|
|
FCLEAR PRSO,ONBIT
|
|
PRINTI "Okay,"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is now off."
|
|
?CCL6: PRINTR "It isn't on!"
|
|
?CCL3: CALL CANT-VERB-A-PRSO,STR?274
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ON
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
PRINT HUH
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,LIGHTBIT \?CCL5
|
|
FSET? PRSO,ONBIT \?CCL8
|
|
PRINT ALREADY-IS
|
|
RTRUE
|
|
?CCL8: FSET PRSO,ONBIT
|
|
PRINTI "Okay,"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " is now on."
|
|
?CCL5: CALL CANT-VERB-A-PRSO,STR?275
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-OPEN
|
|
FSET? PRSO,LOCKEDBIT \?CCL3
|
|
PRINTR "It's quite locked."
|
|
?CCL3: FSET? PRSO,DOORBIT /?PRD7
|
|
FSET? PRSO,CONTBIT \?CCL5
|
|
?PRD7: FSET? PRSO,SURFACEBIT /?CCL5
|
|
FSET? PRSO,ACTORBIT /?CCL5
|
|
CALL OPEN-CLOSE,PRSO
|
|
RSTACK
|
|
?CCL5: CALL CANT-VERB-A-PRSO,STR?265
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PICK
|
|
FSET? PRSO,DOORBIT \?CCL3
|
|
CALL HELD?,JEWEL
|
|
ZERO? STACK /?CCL3
|
|
PRINTI "That doesn't work here"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: CALL CANT-VERB-A-PRSO,STR?276
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-POINT
|
|
PRINTR "That would be pointless."
|
|
|
|
|
|
.FUNCT V-SPOINT
|
|
CALL PERFORM,V?POINT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SPECIFY-WHAT,ACTION-STRING,OBJ
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTI "specify what you want to "
|
|
PRINT ACTION-STRING
|
|
CALL TPRINT,OBJ
|
|
PRINTI " in"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-POUR
|
|
EQUAL? PRSO,WINE \?CCL3
|
|
ZERO? PRSI \?CCL3
|
|
EQUAL? P-PRSA-WORD,W?SPILL /?CCL3
|
|
CALL SPECIFY-WHAT,STR?277,PRSO
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSO,LAUD,BOTTLE \FALSE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL11
|
|
PRINT YNH
|
|
CALL TRPRINT,BOTTLE
|
|
RSTACK
|
|
?CCL11: ZERO? LAUD-LEFT \?CCL13
|
|
PRINTI "There's no "
|
|
PRINTD LAUD
|
|
PRINTR " left."
|
|
?CCL13: ZERO? PRSI \?CCL15
|
|
MOVE BOTTLE,PROTAGONIST
|
|
PRINTI "A bubble of "
|
|
PRINTD LAUD
|
|
PRINTI " forms on the tip of"
|
|
CALL TPRINT,BOTTLE
|
|
PRINTR " then slurps back in."
|
|
?CCL15: EQUAL? PRSI,WINE \?CCL17
|
|
PRINT YOULL-HAVE-TO
|
|
PRINTI "specify which glass you want to put"
|
|
CALL TPRINT,LAUD
|
|
PRINTR " into."
|
|
?CCL17: GETP PRSI,P?CONTENTS
|
|
EQUAL? STACK,POISONED,W-P \FALSE
|
|
PRINT YOU-HAVE-ALREADY
|
|
PRINTI " dosed"
|
|
CALL TPRINT-PRSI
|
|
PRINTI ". Any more might be dangerous"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-PUSH
|
|
CALL HACK-HACK,STR?278
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUSH-DIR
|
|
EQUAL? PRSI,INTDIR \?CCL3
|
|
CALL V-PUSH
|
|
RSTACK
|
|
?CCL3: CALL RECOGNIZE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT PRE-PUT
|
|
EQUAL? PRSI,GROUND \?CCL3
|
|
CALL PERFORM,V?DROP,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,LAUD,WINE \?CCL5
|
|
CALL PERFORM,V?POUR,PRSO,PRSI
|
|
RTRUE
|
|
?CCL5: EQUAL? PRSO,HANDS \?CCL7
|
|
EQUAL? PRSA,V?PUT \?CCL10
|
|
CALL PERFORM,V?REACH-IN,PRSI
|
|
RTRUE
|
|
?CCL10: CALL WASTES
|
|
RSTACK
|
|
?CCL7: EQUAL? PRSI,SEA \?CCL12
|
|
EQUAL? HERE,RIGGING-ROOM,CROWS-NEST,BOWSPRIT /?PRD15
|
|
EQUAL? HERE,POOP,QUARTERDECK,MAIN-DECK /?PRD15
|
|
EQUAL? HERE,FOCSLE \?CCL12
|
|
?PRD15: EQUAL? PRSA,V?PUT-ON,V?DROP,V?THROW /FALSE
|
|
EQUAL? PRSA,V?PUT /FALSE
|
|
?CCL12: FSET? PRSI,ACTORBIT \?CCL22
|
|
EQUAL? PRSA,V?PUT-ON /?CCL22
|
|
CALL WASTES
|
|
RSTACK
|
|
?CCL22: CALL HELD?,PRSI,PRSO
|
|
ZERO? STACK /?CCL26
|
|
PRINT YOU-CANT
|
|
PRINTI "put"
|
|
CALL TPRINT-PRSO
|
|
GET P-ITBL,P-PREP2
|
|
EQUAL? STACK,PR?ON \?CCL29
|
|
PRINTI " on"
|
|
JUMP ?CND27
|
|
?CCL29: PRINTI " in"
|
|
?CND27: CALL TPRINT-PRSI
|
|
PRINTI " when"
|
|
CALL TPRINT-PRSI
|
|
PRINTI " is already "
|
|
FSET? PRSO,SURFACEBIT \?CCL32
|
|
PRINTI "on"
|
|
JUMP ?CND30
|
|
?CCL32: PRINTI "in"
|
|
?CND30: CALL TPRINT-PRSO
|
|
PRINTR "!"
|
|
?CCL26: CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL34
|
|
EQUAL? PRSO,MANACLES /?CCL34
|
|
PRINT YNH
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL34: CALL UNTOUCHABLE?,PRSI
|
|
ZERO? STACK /?CCL38
|
|
CALL CANT-REACH,PRSI
|
|
RSTACK
|
|
?CCL38: CALL IDROP
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-PUT,?TMP1,?TMP2,?TMP3
|
|
FSET? PRSI,OPENBIT /?CCL3
|
|
FSET? PRSI,CONTBIT /?CCL3
|
|
FSET? PRSI,SURFACEBIT /?CCL3
|
|
FSET? PRSI,VEHBIT /?CCL3
|
|
PRINT YOU-CANT
|
|
PRINTI "put"
|
|
CALL TPRINT-PRSO
|
|
PRINTI " in"
|
|
CALL APRINT,PRSI
|
|
PRINTR "!"
|
|
?CCL3: EQUAL? PRSI,PRSO /?CTR8
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL9
|
|
FSET? PRSO,TAKEBIT /?CCL9
|
|
?CTR8: CALL WASTES
|
|
RSTACK
|
|
?CCL9: FSET? PRSI,DOORBIT \?CCL15
|
|
PRINT CANT-FROM-HERE
|
|
RTRUE
|
|
?CCL15: FSET? PRSI,OPENBIT /?CCL17
|
|
FSET? PRSI,SURFACEBIT /?CCL17
|
|
CALL THIS-IS-IT,PRSI
|
|
CALL DO-FIRST,STR?265,PRSI
|
|
RSTACK
|
|
?CCL17: IN? PRSO,PRSI \?CCL21
|
|
PRINTI "But"
|
|
CALL TPRINT-PRSO
|
|
PRINTI " is already in"
|
|
CALL TRPRINT,PRSI
|
|
RSTACK
|
|
?CCL21: 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 \?CCL23
|
|
CALL HELD?,PRSO,PRSI
|
|
ZERO? STACK \?CCL23
|
|
PRINTI "There's no room "
|
|
FSET? PRSI,SURFACEBIT \?CCL28
|
|
PRINTI "on"
|
|
JUMP ?CND26
|
|
?CCL28: PRINTI "in"
|
|
?CND26: CALL TPRINT-PRSI
|
|
PRINTI " for"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL23: CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL30
|
|
CALL ITAKE,FALSE-VALUE
|
|
EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE
|
|
?CCL30: MOVE PRSO,PRSI
|
|
FSET PRSO,TOUCHBIT
|
|
PRINTR "Done."
|
|
|
|
|
|
.FUNCT V-PUT-ON
|
|
EQUAL? PRSI,ME \?CCL3
|
|
CALL PERFORM,V?WEAR,PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSI,SURFACEBIT \?CCL5
|
|
CALL V-PUT
|
|
RSTACK
|
|
?CCL5: PRINTI "There's no good surface on"
|
|
CALL TRPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-PUT-THROUGH
|
|
FSET? PRSI,DOORBIT \?CCL3
|
|
FSET? PRSI,OPENBIT \?CCL6
|
|
CALL V-THROW
|
|
RSTACK
|
|
?CCL6: CALL DO-FIRST,STR?265,PRSI
|
|
RSTACK
|
|
?CCL3: LOC PROTAGONIST
|
|
EQUAL? PRSI,STACK \?CCL8
|
|
EQUAL? P-PRSA-WORD,W?THROW,W?TOSS,W?HURL \?CCL8
|
|
SET 'PRSI,FALSE-VALUE
|
|
CALL V-THROW
|
|
RSTACK
|
|
?CCL8: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RAISE
|
|
CALL HACK-HACK,STR?279
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-RAPE
|
|
PRINT UNLADY
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-REACH-IN,OBJ
|
|
FIRST? PRSO >OBJ /?BOGUS1
|
|
?BOGUS1: FSET? PRSO,ACTORBIT /?CTR3
|
|
FSET? PRSO,SURFACEBIT /?CTR3
|
|
FSET? PRSO,CONTBIT /?CCL4
|
|
?CTR3: CALL WASTES
|
|
RSTACK
|
|
?CCL4: FSET? PRSO,OPENBIT /?CCL9
|
|
CALL DO-FIRST,STR?265,PRSO
|
|
RSTACK
|
|
?CCL9: ZERO? OBJ /?CTR10
|
|
FSET? OBJ,INVISIBLE /?CTR10
|
|
FSET? OBJ,TAKEBIT /?CCL11
|
|
?CTR10: PRINT THERES-NOTHING
|
|
PRINTI "in"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL11: PRINTI "You feel something inside"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-READ
|
|
CALL CANT-VERB-A-PRSO,STR?280
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-REFLECT
|
|
EQUAL? PRSO,MOONBEAM \?CCL3
|
|
EQUAL? PRSI,TRAY,MIRROR \?CCL3
|
|
EQUAL? HERE,LAFS-ROOM \?CCL3
|
|
CALL PERFORM,V?SPOINT,SHIP,PRSI
|
|
RTRUE
|
|
?CCL3: CALL WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-REMOVE
|
|
FSET? PRSO,WEARBIT \?CCL3
|
|
IN? PRSO,PROTAGONIST \?CCL3
|
|
FSET? PRSO,WORNBIT /?CCL8
|
|
PRINT YOU-ARENT
|
|
PRINTR "wearing that!"
|
|
?CCL8: CALL LAF-DOFF-CHECK
|
|
ZERO? STACK \FALSE
|
|
FCLEAR PRSO,WORNBIT
|
|
PRINTI "You remove"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL3: CALL PERFORM,V?TAKE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT LAF-DOFF-CHECK
|
|
EQUAL? HERE,LAFS-ROOM \FALSE
|
|
IN? LAFOND,HERE \FALSE
|
|
GRTR? LAFOND-CTR,HORNY \?CCL8
|
|
PRINT THERES-NOTHING
|
|
PRINTR "to remove!"
|
|
?CCL8: PRINTD LAFOND
|
|
PRINTI " chuckles. ""No, ma cherie, "
|
|
LESS? LAFOND-CTR,3 \?CCL11
|
|
PRINTR "have some wine first."""
|
|
?CCL11: PRINTI "I'll do that."""
|
|
CRLF
|
|
SET 'LAFOND-CTR,HORNY
|
|
CALL QUEUE,I-LSED,-1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RETURN,ACTOR
|
|
ZERO? PRSI \?CCL3
|
|
CALL FIND-IN,HERE,ACTORBIT,STR?281 >ACTOR
|
|
ZERO? ACTOR /?CCL6
|
|
CALL PERFORM,V?GIVE,PRSO,ACTOR
|
|
RTRUE
|
|
?CCL6: CALL NO-ONE-HERE,STR?282
|
|
RSTACK
|
|
?CCL3: FSET? PRSI,ACTORBIT \?CCL8
|
|
CALL PERFORM,V?GIVE,PRSO,PRSI
|
|
RTRUE
|
|
?CCL8: CALL PERFORM,V?PUT,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-RIP
|
|
EQUAL? PRSO,LETTER,INVITE \?CCL3
|
|
PRINTI "There's no reason to be so destructive"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: PRINTR "It doesn't tear."
|
|
|
|
|
|
.FUNCT V-ROLL
|
|
EQUAL? PRSO,EYES \?CCL3
|
|
PRINTR "You ARE exasperated."
|
|
?CCL3: CALL UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /?CCL5
|
|
CALL CANT-REACH,PRSO
|
|
RSTACK
|
|
?CCL5: EQUAL? P-PRSA-WORD,W?TIP \?CCL7
|
|
EQUAL? PRSO,HEAD \?CCL10
|
|
CALL V-YES
|
|
RSTACK
|
|
?CCL10: CALL PRONOUN
|
|
PRINTR " can't take tips!"
|
|
?CCL7: PRINTI "A rolling "
|
|
PRINTD PRSO
|
|
PRINTR " gathers no moss."
|
|
|
|
|
|
.FUNCT V-ROW
|
|
PRINTR "You haven't any oars!"
|
|
|
|
|
|
.FUNCT V-ROW-DIR
|
|
EQUAL? PRSI,INTDIR \?CCL3
|
|
CALL V-ROW
|
|
RSTACK
|
|
?CCL3: CALL RECOGNIZE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-ROW-TO
|
|
EQUAL? PRSO,ISLAND /?CTR2
|
|
EQUAL? PRSO,SKIFF \?CCL3
|
|
EQUAL? PRSI,ISLAND \?CCL3
|
|
?CTR2: SET 'P-DIRECTION,P?WEST
|
|
CALL PERFORM,V?ROW-DIR,SKIFF,INTDIR
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,REEFS,SHIP /?CTR8
|
|
EQUAL? PRSO,SKIFF \?CCL9
|
|
EQUAL? PRSI,REEFS,SHIP \?CCL9
|
|
?CTR8: SET 'P-DIRECTION,P?EAST
|
|
CALL PERFORM,V?ROW-DIR,SKIFF,INTDIR
|
|
RTRUE
|
|
?CCL9: LOC PROTAGONIST
|
|
EQUAL? STACK,SKIFF \?CCL16
|
|
CALL WASTES
|
|
RSTACK
|
|
?CCL16: CALL DO-FIRST,STR?283,SKIFF
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SAVE-SOMETHING
|
|
CALL PROPOSE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SCORE
|
|
PRINTI "In "
|
|
PRINTN MOVES
|
|
PRINTI " turn"
|
|
EQUAL? MOVES,1 /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTI ", you have achieved a score of "
|
|
PRINTN SCORE
|
|
PRINTI " out of 25 points"
|
|
LESS? SCORE,25 \?CND3
|
|
PRINTI ". This gives you the rank of "
|
|
LESS? SCORE,5 \?CCL7
|
|
PRINTI "Damsel in Distress"
|
|
JUMP ?CND3
|
|
?CCL7: LESS? SCORE,10 \?CCL9
|
|
PRINTI "Missish Minx"
|
|
JUMP ?CND3
|
|
?CCL9: LESS? SCORE,15 \?CCL11
|
|
PRINTI "Plucky Lass"
|
|
JUMP ?CND3
|
|
?CCL11: LESS? SCORE,20 \?CCL13
|
|
PRINTI "Daring Demoiselle"
|
|
JUMP ?CND3
|
|
?CCL13: LESS? SCORE,25 \?CND3
|
|
PRINTI "Lady Leman"
|
|
?CND3: PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SEARCH
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
CALL V-SHAKE
|
|
RSTACK
|
|
?CCL3: IN? PROTAGONIST,PRSO \?CCL5
|
|
CALL DESCRIBE-VEHICLE
|
|
RSTACK
|
|
?CCL5: FSET? PRSO,CONTBIT \?CCL7
|
|
FSET? PRSO,OPENBIT /?CCL7
|
|
CALL DO-FIRST,STR?265,PRSO
|
|
RSTACK
|
|
?CCL7: FSET? PRSO,CONTBIT \?CCL11
|
|
PRINTI "You find"
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL11: CALL CANT-VERB-A-PRSO,STR?284
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SET
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
CALL WHEE
|
|
RSTACK
|
|
?CCL3: ZERO? PRSI \?CCL5
|
|
FSET? PRSO,TAKEBIT \?CCL8
|
|
CALL HACK-HACK,STR?285
|
|
RSTACK
|
|
?CCL8: PRINT YNH
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL5: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SGIVE
|
|
CALL PERFORM,V?GIVE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHAKE
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
PRINT POLITE
|
|
RTRUE
|
|
?CCL3: CALL HACK-HACK,STR?286
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SHAKE-WITH
|
|
EQUAL? PRSO,HANDS /?CCL3
|
|
CALL RECOGNIZE
|
|
RSTACK
|
|
?CCL3: FSET? PRSI,ACTORBIT /?CCL5
|
|
PRINTI "I don't think"
|
|
CALL TPRINT-PRSI
|
|
PRINTR " even has hands."
|
|
?CCL5: CALL PERFORM,V?THANK,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHOOT
|
|
ZERO? PRSI \?CCL3
|
|
CALL HELD?,PISTOL
|
|
ZERO? STACK /?CCL6
|
|
CALL PERFORM,V?SHOOT,PRSO,PISTOL
|
|
RTRUE
|
|
?CCL6: CALL PROPOSE
|
|
RSTACK
|
|
?CCL3: PRINTR "Don't ever bother applying for a job as a gunswoman."
|
|
|
|
|
|
.FUNCT PRE-SSHOOT
|
|
EQUAL? PRSO,CANNON /FALSE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK \FALSE
|
|
ZERO? PRSI \?CCL7
|
|
CALL HELD?,PISTOL
|
|
ZERO? STACK \?CCL10
|
|
CALL PROPOSE
|
|
RSTACK
|
|
?CCL10: CALL PERFORM,V?SHOOT,PRSO
|
|
RTRUE
|
|
?CCL7: PRINT YNH
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SSHOOT
|
|
CALL PERFORM,V?SHOOT,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SHOW
|
|
PRINT DOESNT-LOOK
|
|
CALL TPRINT-PRSI
|
|
PRINTR " is interested."
|
|
|
|
|
|
.FUNCT V-SHUT-UP
|
|
EQUAL? PRSO,ROOMS \?CCL3
|
|
PRINTR "[I hope you're not addressing me...]"
|
|
?CCL3: CALL PERFORM,V?CLOSE,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SIGH
|
|
PRINTR "You sigh contentedly, smiling."
|
|
|
|
|
|
.FUNCT V-SIT,VEHICLE
|
|
CALL FIND-IN,HERE,VEHBIT >VEHICLE
|
|
ZERO? VEHICLE /?CCL3
|
|
CALL PERFORM,V?BOARD,VEHICLE
|
|
RTRUE
|
|
?CCL3: CALL WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SLEEP
|
|
CALL QUEUED?,I-SLEEP
|
|
ZERO? STACK /?CCL3
|
|
CALL I-SLEEP
|
|
RSTACK
|
|
?CCL3: PRINTR "You're not tired."
|
|
|
|
|
|
.FUNCT V-SMELL
|
|
ZERO? PRSO /?CCL3
|
|
PRINTI "Smells like any other "
|
|
PRINTD PRSO
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: LOC PROTAGONIST
|
|
EQUAL? STACK,CASK \?CCL5
|
|
PRINTI "You recoil from the taint of rancid meat"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL5: EQUAL? HERE,FOCSLE,GALLEY \?CCL7
|
|
PRINTR "The odor of old grease and char does not improve your appetite."
|
|
?CCL7: EQUAL? HERE,CABIN \?CCL9
|
|
PRINTI "The odors of charred wood, sea salt and blood burn your nose"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL9: EQUAL? HERE,CREWS-QUARTERS \?CCL11
|
|
PRINTR "Close quarters, indeed."
|
|
?CCL11: PRINTI "Nothing smells unusual"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SOAK
|
|
ZERO? PRSI \?CCL3
|
|
CALL SPECIFY-WHAT,STR?287,PRSO
|
|
RSTACK
|
|
?CCL3: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SENSE-OBJECT,STRING
|
|
CALL PRONOUN
|
|
PRINTC 32
|
|
PRINT STRING
|
|
FSET? PRSO,PLURALBIT /?CND1
|
|
EQUAL? PRSO,ME /?CND1
|
|
PRINTC 115
|
|
?CND1: PRINTI " just like"
|
|
CALL ARPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SPUT-ON
|
|
CALL PERFORM,V?PUT-ON,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SSHOW
|
|
CALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STAND
|
|
EQUAL? P-PRSA-WORD,W?HOLD \?CCL3
|
|
CALL WASTES
|
|
RSTACK
|
|
?CCL3: LOC PROTAGONIST
|
|
FSET? STACK,VEHBIT \?CCL5
|
|
LOC PROTAGONIST
|
|
CALL PERFORM,V?DISEMBARK,STACK
|
|
RTRUE
|
|
?CCL5: ZERO? PRSO /?CCL7
|
|
FSET? PRSO,TAKEBIT \?CCL7
|
|
CALL WASTES
|
|
RSTACK
|
|
?CCL7: EQUAL? HERE,IN-HEDGE,BY-HOUSE,SLEEPING-CUPBOARD \?CCL11
|
|
PRINTR "There's not enough room for even your petite frame to stand straight."
|
|
?CCL11: PRINT YOU-ARE-ALREADY
|
|
PRINTR "standing."
|
|
|
|
|
|
.FUNCT V-STELL
|
|
CALL PERFORM,V?TELL,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-STHROW
|
|
CALL PERFORM,V?THROW-TO,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-FIX
|
|
EQUAL? PRSO,DAGGER \?CCL3
|
|
CALL REPERTOIRE,STR?288
|
|
RSTACK
|
|
?CCL3: PRINTI "But"
|
|
CALL TPRINT-PRSO
|
|
PRINTI " isn't "
|
|
EQUAL? P-PRSA-WORD,W?SHARPEN,W?WHET \?CCL6
|
|
PRINTI "dull"
|
|
JUMP ?CND4
|
|
?CCL6: PRINTI "broken"
|
|
?CND4: PRINTR "!"
|
|
|
|
|
|
.FUNCT V-SWIM
|
|
EQUAL? PRSO,SEA /?CTR2
|
|
ZERO? PRSO \?CCL3
|
|
CALL GLOBAL-IN?,SEA,HERE
|
|
ZERO? STACK /?CCL3
|
|
?CTR2: CALL REPERTOIRE,STR?289
|
|
RSTACK
|
|
?CCL3: PRINTR "Your head must be swimming."
|
|
|
|
|
|
.FUNCT V-SWING
|
|
ZERO? PRSI /?CCL3
|
|
CALL PERFORM,V?KILL,PRSI,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,ROOMS \?CCL5
|
|
EQUAL? HERE,GALLERY \?CCL5
|
|
CALL PERFORM,V?SWING,ROPE
|
|
RTRUE
|
|
?CCL5: CALL WHEE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-SWOON
|
|
PRINTI "You've never been missish enough to faint on demand"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-SWRAP
|
|
CALL PERFORM,V?WRAP,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-TAKE
|
|
CALL LOC-CLOSED
|
|
ZERO? STACK \TRUE
|
|
IN? PROTAGONIST,PRSO \?CCL5
|
|
PRINTI "You're "
|
|
FSET? PRSO,INBIT \?CCL8
|
|
PRINTC 105
|
|
JUMP ?CND6
|
|
?CCL8: PRINTC 111
|
|
?CND6: PRINTR "n it!"
|
|
?CCL5: GRTR? LAFOND-CTR,HORNY \?CCL10
|
|
EQUAL? HERE,LAFS-ROOM \?CCL10
|
|
IN? HERE,LAFOND /FALSE
|
|
?CCL10: IN? PRSO,PROTAGONIST /?CTR14
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL15
|
|
FSET? PRSO,TAKEBIT /?CCL15
|
|
?CTR14: FSET? PRSO,WORNBIT \?CCL22
|
|
PRINT YOU-ARE-ALREADY
|
|
PRINTI "wearing"
|
|
JUMP ?CND20
|
|
?CCL22: PRINT YOU-HAVE-ALREADY
|
|
?CND20: CALL TRPRINT,PRSO
|
|
RSTACK
|
|
?CCL15: EQUAL? PRSO,LAUD \?CCL24
|
|
EQUAL? PRSI,BOTTLE /?CCL24
|
|
CALL WASTES
|
|
RSTACK
|
|
?CCL24: ZERO? PRSI /FALSE
|
|
IN? PRSO,PRSI /FALSE
|
|
IN? PRSO,PRSI /?CCL32
|
|
CALL NOT-IN
|
|
RSTACK
|
|
?CCL32: EQUAL? PRSO,ME \?CCL34
|
|
CALL PERFORM,V?DROP,PRSI
|
|
RTRUE
|
|
?CCL34: SET 'PRSI,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-TAKE
|
|
CALL ITAKE
|
|
EQUAL? STACK,TRUE-VALUE \FALSE
|
|
PRINTR "Taken."
|
|
|
|
|
|
.FUNCT V-TAKE-OFF
|
|
FSET? PRSO,WORNBIT \?CCL3
|
|
CALL PERFORM,V?REMOVE,PRSO
|
|
RTRUE
|
|
?CCL3: FSET? PRSO,VEHBIT \?CCL5
|
|
CALL PERFORM,V?DISEMBARK,PRSO
|
|
RTRUE
|
|
?CCL5: PRINT YOU-ARENT
|
|
PRINTI "wearing"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TAKE-WITH
|
|
PRINTI "Sorry,"
|
|
CALL TPRINT-PRSI
|
|
PRINTI " is no help in getting"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TELL
|
|
FSET? PRSO,ACTORBIT \?CCL3
|
|
EQUAL? PRSO,CROC /?CCL3
|
|
FSET? PRSO,DEADBIT \?CCL8
|
|
PRINT DOESNT-RESPOND
|
|
CALL STOP
|
|
RSTACK
|
|
?CCL8: ZERO? P-CONT /?CCL10
|
|
SET 'WINNER,PRSO
|
|
SET 'CLOCK-WAIT,TRUE-VALUE
|
|
RTRUE
|
|
?CCL10: PRINTI "Hmmm ..."
|
|
CALL TPRINT-PRSO
|
|
PRINTR " looks at you expectantly, as if you seemed to be about to talk."
|
|
?CCL3: CALL CANT-VERB-A-PRSO,STR?290
|
|
CALL STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-TELL-ABOUT
|
|
EQUAL? PRSO,ME \?CCL3
|
|
CALL PERFORM,V?WHAT,PRSI
|
|
RTRUE
|
|
?CCL3: CALL PERFORM,V?SHOW,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-THANK
|
|
ZERO? PRSO \?CCL3
|
|
PRINTR "[Just doing my job.]"
|
|
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
|
|
PRINTR """You're welcome."""
|
|
?CCL5: CALL IMPOSSIBLES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-THROW-AT
|
|
CALL PERFORM,V?MUNG,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-THROW
|
|
CALL SPECIAL-DROP
|
|
ZERO? STACK \FALSE
|
|
EQUAL? HERE,LAGOON,BY-SHIP,SHALLOWS \?CCL6
|
|
CALL PERFORM,V?PUT,PRSO,SEA
|
|
RTRUE
|
|
?CCL6: ZERO? PRSI /?CCL8
|
|
MOVE PRSO,HERE
|
|
PRINTR "You missed."
|
|
?CCL8: MOVE PRSO,HERE
|
|
PRINTR "Thrown."
|
|
|
|
|
|
.FUNCT V-THROW-OVER
|
|
MOVE PRSO,HERE
|
|
PRINTR "You missed."
|
|
|
|
|
|
.FUNCT V-THROW-OVERBOARD
|
|
EQUAL? HERE,LAGOON,SHALLOWS /?CTR2
|
|
CALL SHIP-BOARD,HERE
|
|
ZERO? STACK /?CCL3
|
|
?CTR2: CALL PERFORM,V?PUT,PRSO,SEA
|
|
RTRUE
|
|
?CCL3: PRINTR "One normally tries this on a boat."
|
|
|
|
|
|
.FUNCT V-THROW-TO
|
|
FSET? PRSI,ACTORBIT \?CCL3
|
|
CALL PERFORM,V?GIVE,PRSO,PRSI
|
|
RTRUE
|
|
?CCL3: CALL PERFORM,V?THROW,PRSO,PRSI
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-TIE-WITH
|
|
CALL PERFORM,V?TIE,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PRE-TOUCH
|
|
EQUAL? PRSA,V?LOWER,V?RAISE \?CCL3
|
|
ZERO? PRSI /?CCL3
|
|
EQUAL? PRSI,ROOMS /?CCL3
|
|
CALL RECOGNIZE
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?TOUCH \?CCL8
|
|
EQUAL? PRSO,COOKIE \?CCL8
|
|
EQUAL? PRSI,DAGGER \?CCL8
|
|
PRINT UNLADY
|
|
RTRUE
|
|
?CCL8: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL13
|
|
EQUAL? PRSO,CABIN-BED,COT,DIVAN /?CTR12
|
|
EQUAL? PRSO,GUEST-BED,LAFS-BED,CAPT-BED \?CCL13
|
|
?CTR12: CALL CANT-VERB-A-PRSO,STR?291
|
|
RSTACK
|
|
?CCL13: EQUAL? PRSO,LINE \?CCL19
|
|
EQUAL? PRSA,V?TOUCH \?CCL19
|
|
LOC PROTAGONIST
|
|
EQUAL? STACK,CASK \?CCL19
|
|
PRINTI "Your fingers just brush"
|
|
CALL TRPRINT,LINE
|
|
RSTACK
|
|
?CCL19: CALL UNTOUCHABLE?,PRSO
|
|
ZERO? STACK /?CCL24
|
|
CALL CANT-REACH,PRSO
|
|
RSTACK
|
|
?CCL24: EQUAL? PRSA,V?EMPTY \?CCL26
|
|
EQUAL? PRSO,RUM-BARREL,WATER-BARREL /FALSE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CTR30
|
|
CALL TAKE-CHECK
|
|
ZERO? STACK \FALSE
|
|
?CTR30: PRINT YNH
|
|
CALL TRPRINT,PRSO
|
|
RETURN 8
|
|
?CCL26: EQUAL? PRSA,V?EMPTY-FROM \FALSE
|
|
EQUAL? PRSI,RUM-BARREL,WATER-BARREL /FALSE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /?CCL37
|
|
CALL TAKE-CHECK
|
|
ZERO? STACK \FALSE
|
|
?CCL37: PRINT YNH
|
|
CALL TRPRINT,PRSO
|
|
RETURN 8
|
|
|
|
|
|
.FUNCT V-TOUCH
|
|
CALL LOC-CLOSED
|
|
ZERO? STACK \TRUE
|
|
CALL HACK-HACK,STR?292
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-STOUCH
|
|
CALL PERFORM,V?TOUCH,PRSI,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-UNLOCK
|
|
ZERO? PRSI /?CCL3
|
|
CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,LOCKEDBIT \?CCL5
|
|
SET 'AWAITING-REPLY,2
|
|
CALL QUEUE,I-REPLY,2
|
|
PRINTR "Your nose is key-shaped, I suppose?"
|
|
?CCL5: FSET? PRSO,DOORBIT \?CCL7
|
|
PRINTI "But"
|
|
CALL TPRINT-PRSO
|
|
PRINTR " isn't locked."
|
|
?CCL7: CALL WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WALK,AV,VEHICLE,PT,PTS,STR,OBJ,RM
|
|
LOC PROTAGONIST >AV
|
|
ZERO? P-WALK-DIR \?CCL3
|
|
CALL PERFORM,V?WALK-TO,PRSO
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSO,P?OUT \?CCL5
|
|
CALL IN-EXITABLE-VEHICLE?
|
|
ZERO? STACK \TRUE
|
|
?CCL5: EQUAL? PRSO,P?IN \?CCL9
|
|
GETPT HERE,P?IN
|
|
ZERO? STACK \?CCL9
|
|
CALL FIND-IN,HERE,VEHBIT >VEHICLE
|
|
ZERO? VEHICLE /?CCL9
|
|
CALL HELD?,VEHICLE
|
|
ZERO? STACK \?CCL9
|
|
CALL PERFORM,V?BOARD,VEHICLE
|
|
RTRUE
|
|
?CCL9: GETPT HERE,PRSO >PT
|
|
ZERO? PT /?CCL15
|
|
PTSIZE PT >PTS
|
|
EQUAL? PTS,UEXIT \?CCL18
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?CCL18: EQUAL? PTS,NEXIT \?CCL20
|
|
GET PT,NEXITSTR
|
|
PRINT STACK
|
|
CRLF
|
|
RETURN 8
|
|
?CCL20: EQUAL? PTS,FEXIT \?CCL24
|
|
GET PT,FEXITFCN
|
|
CALL STACK >RM
|
|
ZERO? RM /?PRG30
|
|
EQUAL? RM,ROOMS /TRUE
|
|
CALL GOTO,RM
|
|
RSTACK
|
|
?PRG30: RETURN 8
|
|
?CCL24: EQUAL? PTS,CEXIT \?CCL33
|
|
GETB PT,CEXITFLAG
|
|
VALUE STACK
|
|
ZERO? STACK /?CCL36
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?CCL36: GET PT,CEXITSTR >STR
|
|
ZERO? STR /?CCL38
|
|
PRINT STR
|
|
CRLF
|
|
RETURN 8
|
|
?CCL38: PRINT CANT-GO
|
|
RETURN 8
|
|
?CCL33: EQUAL? PTS,DEXIT \FALSE
|
|
GETB PT,DEXITOBJ >OBJ
|
|
FSET? OBJ,OPENBIT \?CCL47
|
|
GETB PT,REXIT
|
|
CALL GOTO,STACK
|
|
RSTACK
|
|
?CCL47: GET PT,DEXITSTR >STR
|
|
ZERO? STR /?CCL49
|
|
CALL THIS-IS-IT,OBJ
|
|
PRINT STR
|
|
CRLF
|
|
RETURN 8
|
|
?CCL49: CALL THIS-IS-IT,OBJ
|
|
CALL DO-FIRST,STR?265,OBJ
|
|
RETURN 8
|
|
?CCL15: EQUAL? PRSO,P?IN,P?OUT \?CCL56
|
|
CALL V-WALK-AROUND
|
|
RETURN 8
|
|
?CCL56: PRINT CANT-GO
|
|
RETURN 8
|
|
|
|
|
|
.FUNCT V-WAVE,AT-OBJ=0
|
|
PRINTI "You wave"
|
|
ZERO? AT-OBJ \?CCL3
|
|
CALL PRSO-PRINT
|
|
PRINTI " in the air"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: PRINTI " cheerfully at"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WAVE-AT
|
|
CALL V-WAVE,TRUE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT V-WRING
|
|
ZERO? PRSI \?CCL3
|
|
EQUAL? PRSO,DRESS \?PRD8
|
|
ZERO? WET-DRESS \?CTR5
|
|
?PRD8: EQUAL? PRSO,RAG \?CCL6
|
|
ZERO? WET-RAG /?CCL6
|
|
?CTR5: PRINTR "You don't have time to dry it."
|
|
?CCL6: EQUAL? P-PRSA-WORD,W?DRY \?CCL14
|
|
PRINTR "That isn't wet!"
|
|
?CCL14: CALL WASTES
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSI,RAG,DRESS \?CCL16
|
|
CALL PERFORM,V?WRING,PRSI
|
|
RTRUE
|
|
?CCL16: CALL WASTES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WALK-AROUND
|
|
SET 'AWAITING-REPLY,2
|
|
CALL QUEUE,I-REPLY,2
|
|
PRINTI "Did you have any particular "
|
|
PRINTD INTDIR
|
|
PRINTR " in mind?"
|
|
|
|
|
|
.FUNCT V-WALK-TO
|
|
EQUAL? PRSO,INTDIR \?CCL3
|
|
CALL DO-WALK,P-DIRECTION
|
|
RSTACK
|
|
?CCL3: 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 PRE-DOFF,?TMP1
|
|
CALL NOUN-USED,W?DECK,GROUND
|
|
ZERO? STACK /?CCL3
|
|
EQUAL? HERE,DEUX-DECK /?CTR2
|
|
CALL SHIP-BOARD,HERE
|
|
ZERO? STACK /?CCL3
|
|
?CTR2: CALL V-WALK-AROUND
|
|
RTRUE
|
|
?CCL3: ZERO? PRSO /?CCL9
|
|
EQUAL? PRSA,V?UNDRESS /FALSE
|
|
?CCL9: CALL CHECK-STRIP
|
|
ZERO? STACK \TRUE
|
|
EQUAL? HERE,LAFS-ROOM /FALSE
|
|
EQUAL? HERE,ANTEROOM \?CCL15
|
|
IN? DAD,HERE \FALSE
|
|
?CCL15: CALL FIND-IN,HERE,ACTORBIT,STR?293
|
|
ZERO? STACK \?CTR20
|
|
EQUAL? HERE,ORCHESTRA,SUPPER-ROOM,BALLROOM \?CCL21
|
|
?CTR20: PRINT POLITE-SOCIETY
|
|
RTRUE
|
|
?CCL21: EQUAL? HERE,ANTEROOM \?CCL25
|
|
LOC DAD >?TMP1
|
|
LOC COOKIE
|
|
EQUAL? HERE,?TMP1,STACK \FALSE
|
|
?CCL25: ZERO? PRSO /FALSE
|
|
EQUAL? PRSO,RETICULE /FALSE
|
|
FSET? PRSO,WORNBIT /?CCL33
|
|
FSET? PRSO,WEARBIT \FALSE
|
|
?CCL33: FSET? PRSO,WORNBIT /FALSE
|
|
PRINTI "You're not wearing"
|
|
CALL TPRINT-PRSO
|
|
PRINTR "!"
|
|
|
|
|
|
.FUNCT PRE-WEAR
|
|
FSET? PRSO,WEARBIT /?CCL3
|
|
CALL CANT-VERB-A-PRSO,STR?294
|
|
RSTACK
|
|
?CCL3: FSET? PRSO,WORNBIT \?CCL5
|
|
PRINT YOU-ARE-ALREADY
|
|
PRINTI "wearing"
|
|
CALL TPRINT-PRSO
|
|
PRINTR "!"
|
|
?CCL5: CALL CHECK-STRIP
|
|
ZERO? STACK \TRUE
|
|
CALL RUNNING?,I-LSED
|
|
ZERO? STACK /?CCL9
|
|
LOC LAFOND
|
|
EQUAL? STACK,HERE \?CCL9
|
|
PRINTD LAFOND
|
|
PRINTR " prevents you."
|
|
?CCL9: ZERO? ENDGAME \FALSE
|
|
EQUAL? HERE,FOYER,BALLROOM,SUPPER-ROOM /?CCL13
|
|
EQUAL? HERE,ORCHESTRA \FALSE
|
|
?CCL13: PRINTR "People might notice."
|
|
|
|
|
|
.FUNCT CHECK-STRIP
|
|
EQUAL? HERE,CABIN \?CCL3
|
|
PRINTI "With pirates attacking?! "
|
|
PRINT MOTHER
|
|
RTRUE
|
|
?CCL3: EQUAL? HERE,ON-LADDER,RIGGING-ROOM \?CCL5
|
|
PRINT YOU-CANT
|
|
PRINTI "manage the fastenings while whipping to and fro "
|
|
EQUAL? HERE,ON-LADDER \?CCL8
|
|
PRINTI "on"
|
|
CALL ARPRINT,LADDER
|
|
RSTACK
|
|
?CCL8: PRINTI "in"
|
|
CALL TRPRINT,RIGGING-OBJECT
|
|
RSTACK
|
|
?CCL5: EQUAL? HERE,IN-HEDGE,BY-HOUSE \FALSE
|
|
PRINT YOU-CANT
|
|
PRINTR "even stand straight, much less change clothes!"
|
|
|
|
|
|
.FUNCT V-WEAR
|
|
MOVE PRSO,PROTAGONIST
|
|
FSET PRSO,WORNBIT
|
|
PRINTI "You're now wearing"
|
|
CALL TRPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-WHAT
|
|
PRINTR "Good question."
|
|
|
|
|
|
.FUNCT V-WHERE
|
|
CALL V-FIND,TRUE-VALUE
|
|
RSTACK
|
|
|
|
|
|
.FUNCT V-YELL
|
|
EQUAL? HERE,GALLERY,DEUX-DECK \?CCL3
|
|
PRINTI "Although your voice is quite piercing, no one notices you."
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL3: EQUAL? HERE,CABIN \?CCL5
|
|
PRINT HELP-SCREAM
|
|
CRLF
|
|
JUMP ?CND1
|
|
?CCL5: PRINTI "Papa always says, ""Action, not reaction, girl!"""
|
|
CRLF
|
|
?CND1: CALL STOP
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-REPLY
|
|
SET 'AWAITING-REPLY,FALSE-VALUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT V-YES
|
|
EQUAL? AWAITING-REPLY,1 \?CCL3
|
|
PRINTI "That wasn't a yes or no question"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL3: EQUAL? AWAITING-REPLY,2 \?CCL5
|
|
PRINTR "That was just a rhetorical question."
|
|
?CCL5: EQUAL? AWAITING-REPLY,3 \?CCL7
|
|
PRINTR "Whither goes a will, goes a way."
|
|
?CCL7: EQUAL? AWAITING-REPLY,4 \?CCL9
|
|
REMOVE HERO
|
|
CALL STOP-QUEUES
|
|
PRINTR "Silently he drops your arm and retreats. You are alone."
|
|
?CCL9: EQUAL? AWAITING-REPLY,5 \?CCL11
|
|
PRINTR "You nod tentatively."
|
|
?CCL11: EQUAL? AWAITING-REPLY,6 \?CCL13
|
|
PRINTI """Quite a girl, isn't she? You two will be great friends,"" he says"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL13: EQUAL? AWAITING-REPLY,9 \?CCL15
|
|
PRINTI "You have no breath to speak. You nod once, never taking "
|
|
PRINTD EYES
|
|
PRINTI " off Nicholas Jamison"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL15: EQUAL? AWAITING-REPLY,10 \?CCL17
|
|
PRINTR "You nod eagerly."
|
|
?CCL17: EQUAL? AWAITING-REPLY,11 \?CCL19
|
|
PRINTR "You summon a gracious smile, ""Why yes, I'd love to."""
|
|
?CCL19: EQUAL? AWAITING-REPLY,12 \?CCL21
|
|
PRINTI "You nod"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL21: EQUAL? AWAITING-REPLY,13 \?CCL23
|
|
PRINTI "Nicholas pulls forward a fettered wrist"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL23: EQUAL? AWAITING-REPLY,14 \?CCL25
|
|
PRINTI "Jamison grins at you"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL25: EQUAL? AWAITING-REPLY,15 \?CCL27
|
|
PRINTI "Breathless, eager, you lean into him"
|
|
PRINT PCR
|
|
RTRUE
|
|
?CCL27: EQUAL? AWAITING-REPLY,16 \?CCL29
|
|
PRINTR "Your father twinkles, ""Good! He's of good family, you know."""
|
|
?CCL29: EQUAL? AWAITING-REPLY,17 \?CCL31
|
|
PRINTR """Har, just you try!"""
|
|
?CCL31: CALL YOU-SOUND,STR?295
|
|
RSTACK
|
|
|
|
|
|
.FUNCT YOU-SOUND,STRING
|
|
PRINTI "You sound rather "
|
|
PRINT STRING
|
|
PRINTR "tive."
|
|
|
|
|
|
.FUNCT YES-WORD,WRD
|
|
EQUAL? WRD,W?YES,W?Y,W?YUP /TRUE
|
|
EQUAL? WRD,W?OK,W?OKAY,W?SURE /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT ITAKE,VB=1,OBJ,?TMP1
|
|
FSET? PRSO,TAKEBIT /?CCL3
|
|
ZERO? VB /?PRG6
|
|
CALL WASTES
|
|
?PRG6: RETURN 8
|
|
?CCL3: CALL PRE-TOUCH
|
|
ZERO? STACK /?CCL9
|
|
RETURN 8
|
|
?CCL9: CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL13
|
|
CALL WEIGHT,PRSO >?TMP1
|
|
CALL WEIGHT,PROTAGONIST
|
|
ADD ?TMP1,STACK
|
|
GRTR? STACK,110 \?CCL13
|
|
ZERO? VB /?PRG18
|
|
PRINTI "It's too heavy, considering your current load."
|
|
CRLF
|
|
?PRG18: RETURN 8
|
|
?CCL13: CALL CCOUNT,PROTAGONIST
|
|
GRTR? STACK,12 \?CND1
|
|
ZERO? VB /?PRG23
|
|
PRINT YOU-ARE-ALREADY
|
|
PRINTI "juggling as many items as you can possibly carry."
|
|
CRLF
|
|
?PRG23: RETURN 8
|
|
?CND1: FSET PRSO,TOUCHBIT
|
|
FCLEAR PRSO,NDESCBIT
|
|
IN? PROTAGONIST,PRSO /FALSE
|
|
MOVE PRSO,PROTAGONIST
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IDROP
|
|
EQUAL? PRSO,HANDS \?CCL3
|
|
EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE
|
|
CALL IMPOSSIBLES
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSO,RETICULE \?CCL8
|
|
EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE
|
|
PRINTR "A lady is never without her reticule."
|
|
?CCL8: EQUAL? PRSO,ME \?CCL13
|
|
EQUAL? PRSA,V?PUT \?CCL13
|
|
FSET? PRSI,ACTORBIT \?CCL13
|
|
CALL PERFORM,V?BOARD,PRSI
|
|
RTRUE
|
|
?CCL13: EQUAL? PRSI,ME \?CCL18
|
|
EQUAL? PRSA,V?PUT \?CCL18
|
|
FSET? PRSO,ACTORBIT \?CCL18
|
|
CALL PERFORM,V?BOARD,PRSO
|
|
RTRUE
|
|
?CCL18: EQUAL? PRSO,SPICES /?PRD25
|
|
EQUAL? PRSO,PINCH \?CCL23
|
|
?PRD25: CALL HELD?,PINCH
|
|
ZERO? STACK \FALSE
|
|
?CCL23: CALL HELD?,PRSO
|
|
ZERO? STACK \?CCL29
|
|
EQUAL? PRSO,ME /?CTR31
|
|
FSET? PRSO,BODYBIT \?CCL32
|
|
?CTR31: CALL IMPOSSIBLES
|
|
RETURN 8
|
|
?CCL32: PRINT YNH
|
|
CALL TRPRINT,PRSO
|
|
RETURN 8
|
|
?CCL29: IN? PRSO,PROTAGONIST /?CCL38
|
|
LOC PRSO
|
|
FSET? STACK,CONTBIT \?CCL38
|
|
LOC PRSO
|
|
FSET? STACK,OPENBIT /?CCL38
|
|
LOC PRSO
|
|
CALL DO-FIRST,STR?265,STACK
|
|
RSTACK
|
|
?CCL38: FSET? PRSO,WORNBIT \FALSE
|
|
CALL DO-FIRST,STR?296,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT CCOUNT,OBJ,CNT=0,X
|
|
FIRST? OBJ >X /?PRG3
|
|
RETURN CNT
|
|
?PRG3: FSET? X,WORNBIT /?CND5
|
|
INC 'CNT
|
|
?CND5: NEXT? X >X /?PRG3
|
|
RETURN CNT
|
|
|
|
|
|
.FUNCT WEIGHT,OBJ,CONT,WT=0
|
|
FIRST? OBJ >CONT \?CND1
|
|
?PRG3: CALL WEIGHT,CONT
|
|
ADD WT,STACK >WT
|
|
NEXT? CONT >CONT /?PRG3
|
|
?CND1: GETP OBJ,P?SIZE
|
|
ADD WT,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DESCRIBE-ROOM,VERB-IS-LOOK=0,FIRST-VISIT=0,NUM=0
|
|
ZERO? LIT \?CND1
|
|
PRINT TOO-DARK
|
|
CRLF
|
|
RFALSE
|
|
?CND1: FSET? HERE,TOUCHBIT /?CND3
|
|
FSET HERE,TOUCHBIT
|
|
SET 'FIRST-VISIT,TRUE-VALUE
|
|
?CND3: PRINTD HERE
|
|
LOC PROTAGONIST
|
|
FSET? STACK,VEHBIT \?CND5
|
|
PRINTI ", "
|
|
LOC PROTAGONIST
|
|
FSET? STACK,INBIT \?CCL9
|
|
PRINTC 105
|
|
JUMP ?CND7
|
|
?CCL9: PRINTC 111
|
|
?CND7: PRINTC 110
|
|
LOC PROTAGONIST
|
|
CALL TPRINT,STACK
|
|
?CND5: CRLF
|
|
ZERO? VERB-IS-LOOK \?CCL11
|
|
EQUAL? VERBOSITY,2 /?CCL11
|
|
ZERO? FIRST-VISIT /TRUE
|
|
EQUAL? VERBOSITY,1 \TRUE
|
|
?CCL11: PRINT INDENT
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-LOOK
|
|
ZERO? STACK \?CND17
|
|
GETP HERE,P?LDESC
|
|
PRINT STACK
|
|
?CND17: CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBE-OBJECTS,O,STR,1ST?=1,AV
|
|
LOC WINNER >AV
|
|
FIRST? HERE >O /?BOGUS1
|
|
?BOGUS1: 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
|
|
PRINT INDENT
|
|
PRINT STR
|
|
FSET? O,CONTBIT \?CND13
|
|
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,3
|
|
?CND13: CRLF
|
|
?CND6: NEXT? O >O /?PRG4
|
|
JUMP ?PRG4
|
|
?REP5: FIRST? HERE >O /?BOGUS16
|
|
?BOGUS16: SET '1ST?,TRUE-VALUE
|
|
?PRG17: ZERO? O /?REP18
|
|
CALL DESCRIBABLE?,O
|
|
ZERO? STACK /?CND19
|
|
GETP O,P?FDESC
|
|
ZERO? STACK /?CCL23
|
|
FSET? O,TOUCHBIT \?CND19
|
|
?CCL23: GETP O,P?DESCFCN >STR
|
|
ZERO? STR /?CCL29
|
|
CALL STR,M-OBJDESC >STR
|
|
ZERO? STR /?CCL29
|
|
FSET? O,CONTBIT \?CND32
|
|
EQUAL? STR,M-FATAL /?CND32
|
|
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,3
|
|
?CND32: CRLF
|
|
JUMP ?CND19
|
|
?CCL29: GETP O,P?LDESC >STR
|
|
ZERO? STR /?CND19
|
|
PRINT INDENT
|
|
PRINT STR
|
|
FSET? O,CONTBIT \?CND37
|
|
CALL DESCRIBE-CONTENTS,O,TRUE-VALUE,3
|
|
?CND37: CRLF
|
|
?CND19: NEXT? O >O /?PRG17
|
|
JUMP ?PRG17
|
|
?REP18: 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,TWO?=0,START?=0,PARA?=0,DB
|
|
EQUAL? LEVEL,2 \?CCL3
|
|
SET 'LEVEL,TRUE-VALUE
|
|
SET 'PARA?,TRUE-VALUE
|
|
SET 'START?,TRUE-VALUE
|
|
JUMP ?CND1
|
|
?CCL3: BTST ALL?,D-PARA? \?CND1
|
|
SET 'PARA?,TRUE-VALUE
|
|
?CND1: FIRST? OBJ >N /?BOGUS5
|
|
?BOGUS5: ZERO? START? \?PRG21
|
|
IN? OBJ,ROOMS /?PRG21
|
|
FSET? OBJ,ACTORBIT /?PRG21
|
|
ZERO? N /FALSE
|
|
FSET? OBJ,CONTBIT \FALSE
|
|
FSET? OBJ,OPENBIT /?PRD16
|
|
FSET? OBJ,TRANSBIT \FALSE
|
|
?PRD16: EQUAL? LEVEL,-1 /?PRG21
|
|
FSET? OBJ,SEARCHBIT \FALSE
|
|
?PRG21: ZERO? N /?CCL24
|
|
CALL DESCRIBABLE?,N
|
|
ZERO? STACK /?CND23
|
|
BTST ALL?,D-ALL? /?CCL24
|
|
CALL SIMPLE-DESC?,N
|
|
ZERO? STACK /?CND23
|
|
?CCL24: ZERO? F /?CND31
|
|
ZERO? 1ST? /?CCL35
|
|
SET '1ST?,FALSE-VALUE
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CCL38
|
|
ZERO? START? \?CND33
|
|
ZERO? PARA? \?CCL43
|
|
EQUAL? OBJ,PROTAGONIST /?CND44
|
|
PRINT INDENT
|
|
?CND44: SET 'PARA?,TRUE-VALUE
|
|
JUMP ?CND41
|
|
?CCL43: EQUAL? LEVEL,TRUE-VALUE \?CND41
|
|
PRINTC 32
|
|
?CND41: CALL DESCRIBE-START,OBJ
|
|
JUMP ?CND33
|
|
?CCL38: EQUAL? LEVEL,-1 /?CND33
|
|
PRINT LEVEL
|
|
JUMP ?CND33
|
|
?CCL35: ZERO? N /?CCL49
|
|
PRINTC 44
|
|
JUMP ?CND33
|
|
?CCL49: PRINTI " and"
|
|
?CND33: CALL APRINT,F
|
|
FSET? F,ONBIT \?CCL52
|
|
PRINTI " (providing light)"
|
|
JUMP ?CND50
|
|
?CCL52: EQUAL? F,RETICULE \?CND50
|
|
PRINTI " (hanging from your wrist)"
|
|
?CND50: ZERO? IT? \?CCL56
|
|
ZERO? TWO? \?CCL56
|
|
SET 'IT?,F
|
|
JUMP ?CND31
|
|
?CCL56: SET 'TWO?,TRUE-VALUE
|
|
SET 'IT?,FALSE-VALUE
|
|
?CND31: SET 'F,N
|
|
?CND23: ZERO? N /?CND59
|
|
NEXT? N >N /?CND59
|
|
?CND59: ZERO? F \?PRG21
|
|
ZERO? N \?PRG21
|
|
ZERO? IT? /?CND66
|
|
ZERO? TWO? \?CND66
|
|
CALL THIS-IS-IT,IT?
|
|
?CND66: ZERO? 1ST? /?CCL72
|
|
ZERO? START? /?CCL72
|
|
PRINTI " nothing"
|
|
RFALSE
|
|
?CCL72: ZERO? 1ST? \?REP22
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP22
|
|
EQUAL? OBJ,HERE \?CND78
|
|
PRINTI " here"
|
|
?CND78: PRINTC 46
|
|
?REP22: EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND80
|
|
FIRST? OBJ >F /?PRG83
|
|
?PRG83: ZERO? F /?CND80
|
|
FSET? F,CONTBIT \?CND85
|
|
CALL DESCRIBABLE?,F,TRUE-VALUE
|
|
ZERO? STACK /?CND85
|
|
BTST ALL?,D-ALL? /?CCL88
|
|
CALL SIMPLE-DESC?,F
|
|
ZERO? STACK /?CND85
|
|
?CCL88: SET 'DB,D-BIT
|
|
SET 'D-BIT,FALSE-VALUE
|
|
ZERO? PARA? /?CCL98
|
|
PUSH 3
|
|
JUMP ?CND96
|
|
?CCL98: PUSH D-ALL?
|
|
?CND96: CALL DESCRIBE-CONTENTS,F,TRUE-VALUE,STACK
|
|
ZERO? STACK /?CND94
|
|
SET '1ST?,FALSE-VALUE
|
|
SET 'PARA?,TRUE-VALUE
|
|
?CND94: SET 'D-BIT,DB
|
|
?CND85: NEXT? F >F /?PRG83
|
|
JUMP ?PRG83
|
|
?CND80: ZERO? 1ST? \?CND100
|
|
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND100
|
|
LOC WINNER
|
|
EQUAL? OBJ,HERE,STACK \?CND100
|
|
CRLF
|
|
?CND100: ZERO? 1ST? /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DESCRIBE-START,OBJ
|
|
EQUAL? OBJ,HERE \?CCL3
|
|
PRINT YOU-SEE
|
|
RTRUE
|
|
?CCL3: EQUAL? OBJ,PROTAGONIST \?CCL5
|
|
EQUAL? D-BIT,WORNBIT \?CCL8
|
|
PRINTI " You are wearing"
|
|
RTRUE
|
|
?CCL8: PRINTI "You have"
|
|
RTRUE
|
|
?CCL5: FSET? OBJ,SURFACEBIT \?CCL10
|
|
PRINTI "Sitting on"
|
|
CALL TPRINT,OBJ
|
|
PRINTI " is"
|
|
RTRUE
|
|
?CCL10: FSET? OBJ,ACTORBIT \?CCL12
|
|
EQUAL? OBJ,CROC /?CCL12
|
|
EQUAL? OBJ,LUCY \?CCL17
|
|
PRINTI "Sh"
|
|
JUMP ?CND15
|
|
?CCL17: PRINTC 72
|
|
?CND15: PRINTI "e has"
|
|
RTRUE
|
|
?CCL12: EQUAL? OBJ,FENCE,BOTTLE,HORN /TRUE
|
|
PRINT IT-SEEMS-THAT
|
|
CALL TPRINT,OBJ
|
|
PRINTI " contains"
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBABLE?,OBJ,CONT?=0
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
EQUAL? OBJ,WINNER /FALSE
|
|
LOC WINNER
|
|
EQUAL? OBJ,STACK \?CCL7
|
|
LOC WINNER
|
|
EQUAL? HERE,STACK \FALSE
|
|
?CCL7: ZERO? CONT? \?CCL11
|
|
FSET? OBJ,NDESCBIT /FALSE
|
|
?CCL11: ZERO? D-BIT /TRUE
|
|
GRTR? D-BIT,0 \?CCL18
|
|
FSET? OBJ,D-BIT /TRUE
|
|
RFALSE
|
|
?CCL18: SUB 0,D-BIT
|
|
FSET? OBJ,STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SIMPLE-DESC?,OBJ,STR
|
|
GETP OBJ,P?FDESC
|
|
ZERO? STACK /?CCL3
|
|
FSET? OBJ,TOUCHBIT \FALSE
|
|
?CCL3: GETP OBJ,P?DESCFCN >STR
|
|
ZERO? STR /?CCL7
|
|
CALL STR,M-DESC?
|
|
ZERO? STACK \FALSE
|
|
?CCL7: GETP OBJ,P?LDESC
|
|
ZERO? STACK /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT DESCRIBE-VEHICLE
|
|
PRINTI "Other than "
|
|
PRINTD ME
|
|
PRINTI ", you can see"
|
|
CALL DESCRIBE-NOTHING
|
|
ZERO? STACK \TRUE
|
|
FSET? PRSO,INBIT \?CCL5
|
|
PRINTI " in"
|
|
JUMP ?CND3
|
|
?CCL5: PRINTI " on"
|
|
?CND3: CALL TRPRINT,PRSO
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DESCRIBE-NOTHING
|
|
CALL DESCRIBE-CONTENTS,PRSO,2
|
|
ZERO? STACK /FALSE
|
|
IN? PROTAGONIST,PRSO /TRUE
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GOTO,NEW-LOC,DONT-DESCRIBE-DAD=0,OLD-HERE
|
|
SET 'OLD-HERE,HERE
|
|
MOVE PROTAGONIST,NEW-LOC
|
|
IN? NEW-LOC,ROOMS \?CCL3
|
|
SET 'HERE,NEW-LOC
|
|
JUMP ?CND1
|
|
?CCL3: LOC NEW-LOC >HERE
|
|
?CND1: CALL LIT?,HERE >LIT
|
|
EQUAL? OLD-HERE,LIBRARY \?CND4
|
|
CALL HELD?,HAT
|
|
ZERO? STACK /?CND4
|
|
EQUAL? HERE,BY-HOUSE,HALL-E \?CND4
|
|
CALL SAFETY-SAKE
|
|
CRLF
|
|
?CND4: GETP HERE,P?ACTION
|
|
CALL STACK,M-ENTER
|
|
EQUAL? HERE,PASSAGE-4 \?CCL11
|
|
IN? DAD,HERE \?CCL11
|
|
PRINTI """What a brave tot! You've inherited all your mother's spirit."" Your father beams with pride"
|
|
PRINT PCR
|
|
CRLF
|
|
JUMP ?CND9
|
|
?CCL11: EQUAL? HERE,BOTTOM-STAIRS \?CCL15
|
|
IN? COOKIE,ANTEROOM \?CCL15
|
|
SET 'COOKIE-FIGHTING-CROC,FALSE-VALUE
|
|
FCLEAR CROC,NDESCBIT
|
|
PRINTI """I ain't goin' to fight this beast if you're headin' back upstairs."""
|
|
CALL TPRINT,COOKIE
|
|
IN? RAPIER,PROTAGONIST \?CND18
|
|
MOVE RAPIER,COOKIE
|
|
PRINTI " eyes"
|
|
CALL TPRINT,RAPIER
|
|
PRINTI " in"
|
|
CALL TPRINT,HANDS
|
|
PRINTI ". ""Not a proper thing fer a lady,"" he grumbles, taking it from you. He"
|
|
?CND18: PRINTI " follows you"
|
|
PRINT PCR
|
|
CRLF
|
|
JUMP ?CND9
|
|
?CCL15: EQUAL? HERE,LAGOON /TRUE
|
|
?CND9: CALL DESCRIBE-ROOM
|
|
ZERO? STACK /?CND21
|
|
ZERO? VERBOSITY /?CND21
|
|
CALL DESCRIBE-OBJECTS
|
|
?CND21: IN? DAD,OLD-HERE \?CND25
|
|
IN? PROTAGONIST,HERE \?CND25
|
|
ZERO? DONT-DESCRIBE-DAD \?CND25
|
|
ZERO? ENDGAME \?CND25
|
|
CALL DAD-FOLLOWS-YOU
|
|
?CND25: IN? HERO,OLD-HERE \?CND31
|
|
IN? PROTAGONIST,HERE \?CND31
|
|
ZERO? ENDGAME \?CND31
|
|
EQUAL? HERE,BALLROOM \?CCL38
|
|
EQUAL? PARTNER,HERO \?CCL38
|
|
MOVE HERO,HERE
|
|
PRINTD HERO
|
|
PRINTI " smiles and follows you, pulling you onto"
|
|
PRINT DANCE-FLOOR
|
|
PRINT PCR
|
|
JUMP ?CND31
|
|
?CCL38: EQUAL? OLD-HERE,BALLROOM \?CCL42
|
|
MOVE HERO,HERE
|
|
RTRUE
|
|
?CCL42: CALL STOP-QUEUES
|
|
REMOVE HERO
|
|
PRINT INDENT
|
|
PRINTI """No, wait -- !"" Jamison cries. He "
|
|
EQUAL? HERE,LAWN \?CCL45
|
|
PRINTI "slips past you into the forest"
|
|
JUMP ?CND43
|
|
?CCL45: PRINTI "hesitates and turns away"
|
|
?CND43: PRINT PCR
|
|
?CND31: ZERO? ENDGAME /TRUE
|
|
IN? COOKIE,OLD-HERE \TRUE
|
|
IN? PROTAGONIST,HERE \TRUE
|
|
ZERO? COOKIE-FIGHTING-CROC \TRUE
|
|
CALL RUNNING?,I-ENDGAME
|
|
ZERO? STACK \TRUE
|
|
CALL RUNNING?,I-DUEL
|
|
ZERO? STACK /?CCL55
|
|
EQUAL? OLD-HERE,GALLERY,STAIRTOP /TRUE
|
|
?CCL55: EQUAL? HERE,BEACH /TRUE
|
|
MOVE COOKIE,HERE
|
|
PRINT INDENT
|
|
PRINTD COOKIE
|
|
PRINTI " pegs after you"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAFETY-SAKE
|
|
MOVE HAT,LIBRARY
|
|
FCLEAR HAT,WORNBIT
|
|
FSET HAT,EVERYBIT
|
|
FCLEAR KNOB,EVERYBIT
|
|
FSET KNOB,DEADBIT
|
|
PRINTI "For safety's sake, you leave"
|
|
CALL TPRINT,HAT
|
|
PRINTI " on its knob. Best not to show that you've been wandering"
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DAD-FOLLOWS-YOU
|
|
EQUAL? HERE,CELL-4 \?CCL3
|
|
PRINTR "Your father chuckles in the darkness of the passageway, ""No dear, I'm not going in there again!"""
|
|
?CCL3: LOC PROTAGONIST
|
|
MOVE DAD,STACK
|
|
PRINT INDENT
|
|
PRINTI "Papa "
|
|
CALL PICK-ONE,FOLLOWS
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT JIGS-UP,DESC
|
|
PRINT DESC
|
|
PRINT YOU-DIED
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT H-JIGS-UP,DESC,DAD-DEAD=0
|
|
PRINT DESC
|
|
PRINT YOU-DIED
|
|
PRINT INDENT
|
|
ZERO? DAD-DEAD /?CCL3
|
|
PRINTI "Troubled by Papa's death, caused by your own unthinking pride, your life loses meaning. You die by your own hand, in grief and shame."
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI "Rather, your flesh is intact, but your spirit has flown with the death of your heart's love. The years pass, unnoticed, twisting you into an old and ugly spinster, that dies alone, loved by no one."
|
|
?CND1: CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FWTD,DESC
|
|
PRINT DESC
|
|
CRLF
|
|
CRLF
|
|
PRINTI " *** You have suffered
|
|
a fate worse than death ***"
|
|
CRLF
|
|
CALL FINISH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ACCESSIBLE?,OBJ,L
|
|
ZERO? OBJ /FALSE
|
|
LOC OBJ >L
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
EQUAL? OBJ,PSEUDO-OBJECT \?CCL7
|
|
EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
|
|
RFALSE
|
|
?CCL7: ZERO? L /FALSE
|
|
EQUAL? L,GLOBAL-OBJECTS /TRUE
|
|
EQUAL? L,LOCAL-GLOBALS \?CCL16
|
|
CALL GLOBAL-IN?,OBJ,HERE
|
|
ZERO? STACK \TRUE
|
|
?CCL16: CALL META-LOC,OBJ
|
|
EQUAL? STACK,HERE \FALSE
|
|
EQUAL? L,WINNER,HERE /TRUE
|
|
FSET? L,OPENBIT \FALSE
|
|
CALL ACCESSIBLE?,L
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT VISIBLE?,OBJ,L
|
|
ZERO? OBJ /FALSE
|
|
LOC OBJ >L
|
|
CALL ACCESSIBLE?,OBJ
|
|
ZERO? STACK \TRUE
|
|
CALL SEE-INSIDE?,L
|
|
ZERO? STACK /FALSE
|
|
CALL VISIBLE?,L
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT UNTOUCHABLE?,OBJ
|
|
ZERO? OBJ /FALSE
|
|
EQUAL? OBJ,SEA \?CCL5
|
|
EQUAL? HERE,LAGOON,SHALLOWS,MAIN-DECK /FALSE
|
|
EQUAL? HERE,BEACH /FALSE
|
|
RTRUE
|
|
?CCL5: EQUAL? OBJ,LADDER \?CCL12
|
|
LOC PROTAGONIST
|
|
EQUAL? STACK,LEDGE /FALSE
|
|
?CCL12: IN? PROTAGONIST,HERE /FALSE
|
|
LOC PROTAGONIST
|
|
CALL HELD?,OBJ,STACK
|
|
ZERO? STACK \FALSE
|
|
LOC PROTAGONIST
|
|
EQUAL? OBJ,STACK /FALSE
|
|
IN? OBJ,GLOBAL-OBJECTS /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT META-LOC,OBJ
|
|
?PRG1: ZERO? OBJ /FALSE
|
|
IN? OBJ,GLOBAL-OBJECTS \?CND3
|
|
RETURN GLOBAL-OBJECTS
|
|
?CND3: IN? OBJ,ROOMS \?CCL9
|
|
RETURN OBJ
|
|
?CCL9: LOC OBJ >OBJ
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT OTHER-SIDE,DOBJ,P=0,TEE
|
|
?PRG1: NEXTP HERE,P >P
|
|
LESS? P,LOW-DIRECTION /FALSE
|
|
GETPT HERE,P >TEE
|
|
PTSIZE TEE
|
|
EQUAL? STACK,DEXIT \?PRG1
|
|
GETB TEE,DEXITOBJ
|
|
EQUAL? STACK,DOBJ \?PRG1
|
|
RETURN P
|
|
|
|
|
|
.FUNCT HELD?,OBJ,CONT=0
|
|
ZERO? CONT \?CND1
|
|
SET 'CONT,WINNER
|
|
?CND1: ZERO? OBJ /FALSE
|
|
IN? OBJ,CONT /TRUE
|
|
IN? OBJ,ROOMS /FALSE
|
|
LOC OBJ
|
|
CALL HELD?,STACK,CONT
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SEE-INSIDE?,OBJ
|
|
ZERO? OBJ /FALSE
|
|
FSET? OBJ,INVISIBLE /FALSE
|
|
FSET? OBJ,TRANSBIT /TRUE
|
|
FSET? OBJ,OPENBIT /TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT GLOBAL-IN?,OBJ1,OBJ2,TEE
|
|
GETPT OBJ2,P?GLOBAL >TEE
|
|
ZERO? TEE /FALSE
|
|
PTSIZE TEE
|
|
SUB STACK,1
|
|
CALL ZMEMQB,OBJ1,TEE,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FIND-IN,WHERE,FLAG-IN-QUESTION,STRING=0,OBJ,RECURSIVE-OBJ
|
|
FIRST? WHERE >OBJ /?BOGUS1
|
|
?BOGUS1: ZERO? OBJ /FALSE
|
|
?PRG4: FSET? OBJ,FLAG-IN-QUESTION \?CCL8
|
|
FSET? OBJ,INVISIBLE /?CCL8
|
|
ZERO? STRING \?CCL12
|
|
RETURN OBJ
|
|
?CCL12: PRINTC 91
|
|
PRINT STRING
|
|
CALL TPRINT,OBJ
|
|
PRINTC 93
|
|
CRLF
|
|
RETURN OBJ
|
|
?CCL8: CALL FIND-IN,OBJ,FLAG-IN-QUESTION >RECURSIVE-OBJ
|
|
ZERO? RECURSIVE-OBJ /?CCL14
|
|
RETURN RECURSIVE-OBJ
|
|
?CCL14: NEXT? OBJ >OBJ /?PRG4
|
|
RFALSE
|
|
|
|
|
|
.FUNCT LOC-CLOSED,L
|
|
LOC PRSO >L
|
|
FSET? L,CONTBIT \FALSE
|
|
FSET? L,OPENBIT /FALSE
|
|
FSET? PRSO,TAKEBIT \FALSE
|
|
CALL DO-FIRST,STR?265,L
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DO-WALK,DIR
|
|
SET 'P-WALK-DIR,DIR
|
|
CALL PERFORM,V?WALK,DIR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT STOP
|
|
SET 'P-CONT,FALSE-VALUE
|
|
SET 'QUOTE-FLAG,FALSE-VALUE
|
|
RETURN 8
|
|
|
|
|
|
.FUNCT ANYTHING-HELD,SOMETHING-HELD=0,N,X
|
|
FIRST? PROTAGONIST >X /?PRG2
|
|
?PRG2: ZERO? X /?REP3
|
|
FSET? X,WORNBIT /?CND6
|
|
EQUAL? X,RETICULE /?CND6
|
|
SET 'SOMETHING-HELD,TRUE-VALUE
|
|
?CND6: NEXT? X >N /?BOGUS10
|
|
?BOGUS10: SET 'X,N
|
|
JUMP ?PRG2
|
|
?REP3: RETURN SOMETHING-HELD
|
|
|
|
|
|
.FUNCT ROB,WHO,WHERE=0,N,X
|
|
FIRST? WHO >X /?PRG2
|
|
?PRG2: ZERO? X /?REP3
|
|
NEXT? X >N /?BOGUS6
|
|
?BOGUS6: FSET? X,WORNBIT /?CND7
|
|
EQUAL? X,PINCH /?CND7
|
|
ZERO? WHERE /?CCL13
|
|
MOVE X,WHERE
|
|
JUMP ?CND7
|
|
?CCL13: REMOVE X
|
|
?CND7: SET 'X,N
|
|
JUMP ?PRG2
|
|
?REP3: MOVE RETICULE,PROTAGONIST
|
|
RTRUE
|
|
|
|
|
|
.FUNCT HACK-HACK,STR
|
|
PRINT STR
|
|
CALL TPRINT-PRSO
|
|
CALL HO-HUM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT HO-HUM
|
|
CALL PICK-ONE,HO-HUM-LIST
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT IMPOSSIBLES
|
|
CALL PICK-ONE,IMPOSSIBLE-LIST
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT WASTES
|
|
CALL PICK-ONE,WASTE-LIST
|
|
PRINT STACK
|
|
CRLF
|
|
RTRUE
|
|
|
|
.ENDI
|