amfv/verbs.zap

3311 lines
66 KiB
Plaintext

.FUNCT V-VERBOSE
SET 'VERBOSITY,2
SET 'ELAPSED-TIME,0
PRINTI "Maximum verbosity."
CRLF
CRLF
CALL1 V-LOOK
RSTACK
.FUNCT V-BRIEF
SET 'VERBOSITY,1
SET 'ELAPSED-TIME,0
PRINTR "Brief descriptions."
.FUNCT V-SUPER-BRIEF
SET 'ELAPSED-TIME,0
SET 'VERBOSITY,0
PRINTR "Super-brief descriptions."
.FUNCT V-DIAGNOSE
GRTR? AIR-CONDITIONING-COUNTER,34 \?ELS5
CRLF
ZERO? SIMULATING /?ELS10
PRINTR "You feel as if you're burning up with fever: weak, hot, and sweaty."
?ELS10: PRINTR "You detect a throbbing feeling, almost like a dull pain or a wave of heat, which is severely impairing your functioning."
?ELS5: GRTR? AIR-CONDITIONING-COUNTER,19 \?ELS19
CRLF
ZERO? SIMULATING /?ELS24
PRINTR "Despite the coolness of the air, you feel hot and flushed, almost as though you were running a slight fever."
?ELS24: PRINTR "You feel a strange sensation, a physical disturbance, which you cannot seem to pin down."
?ELS19: ZERO? SIMULATING \?ELS33
PRINTR "All your systems seem to be functioning properly."
?ELS33: ZERO? BRUISED /?ELS37
PRINTI "You have some tender bruises from the beating you received."
ZERO? MUGGED /?CND41
PRINTI " Also, y"
PRINT HEAD-THROBS
?CND41: CRLF
RTRUE
?ELS37: ZERO? MUGGED /?ELS48
PRINTI "Y"
PRINT HEAD-THROBS
CRLF
RTRUE
?ELS48: EQUAL? SYEAR,2081 \?ELS53
CALL2 SCORE,40
PRINTI "You are weak from hunger, a dangerous condition at your age. Your last meal was... you can't even remember. You remember picking at the remains of a squirrel, but that might have been weeks ago. Your memories are jumbled."
FSET? CEMETERY,ONBIT \?CND56
PRINTI " In addition, your jaw is throbbing from that attack in the cemetery."
?CND56: CRLF
RTRUE
?ELS53: PRINTR "You are in good health."
.FUNCT V-INVENTORY,SPARE-KLUDGE
ZERO? SIMULATING \?ELS5
SET 'YES-NO-FLAG,1
CALL QUEUE,I-YES-NO,2
PRINTR "You have no appendages, remember?"
?ELS5: FIRST? PLAYER /?ELS9
PRINTR "You are empty-handed."
?ELS9: PRINTI "You are carrying:"
CRLF
CALL2 PRINT-CONT,PLAYER
RSTACK
.FUNCT V-QUIT
PRINTI "Do you really want to quit?"
CALL1 YES?
ZERO? STACK /?ELS7
QUIT
RTRUE
?ELS7: SET 'ELAPSED-TIME,0
PRINTR "Ok."
.FUNCT V-RESTART
SET 'ELAPSED-TIME,0
PRINTI "Do you wish to restart?"
CALL1 YES?
ZERO? STACK /?ELS7
PRINTI "Restarting."
CRLF
RESTART
PRINTR "Failed."
?ELS7: PRINTR "Ok."
.FUNCT FINISH
PUTB P-INBUF,0,20
CRLF
PRINTI "Would you like to start over, restore a saved position, or end this session?
(Type RESTART, RESTORE, or QUIT): >"
READ P-INBUF,P-LEXV
PUTB P-INBUF,0,60
GET P-LEXV,1
EQUAL? STACK,W?RESTART \?ELS7
RESTART
PRINTI "Failed."
CRLF
CALL1 FINISH
RSTACK
?ELS7: GET P-LEXV,1
EQUAL? STACK,W?RESTORE \?ELS11
RESTORE
ZERO? STACK /?ELS16
PRINTR "Bug #4M"
?ELS16: PRINTI "Failed."
CRLF
CALL1 FINISH
RSTACK
?ELS11: GET P-LEXV,1
EQUAL? STACK,W?QUIT,W?Q \?ELS24
QUIT
RTRUE
?ELS24: CALL1 FINISH
RSTACK
.FUNCT YES?,CHAR,X=0
PRINTI " (y/n) >"
?PRG1: BUFOUT FALSE-VALUE
BUFOUT TRUE-VALUE
INPUT 1 >CHAR
EQUAL? CHAR,89,121 /?THN6
EQUAL? CHAR,217,249 \?ELS5
?THN6: SET 'X,TRUE-VALUE
CRLF
JUMP ?REP2
?ELS5: EQUAL? CHAR,78,110 /?THN10
EQUAL? CHAR,206,238 \?ELS9
?THN10: CRLF
JUMP ?REP2
?ELS9: CRLF
PRINTI "[Type Y or N] >"
JUMP ?PRG1
?REP2: ZERO? X /FALSE
RTRUE
.FUNCT V-RESTORE
RESTORE
ZERO? STACK /?ELS5
PRINTR "Bug #4M"
?ELS5: SET 'ELAPSED-TIME,0
PRINTR "Restore failed."
.FUNCT V-SAVE,X
SAVE >X
SET 'ELAPSED-TIME,0
ZERO? X \?ELS5
PRINTR "Save failed."
?ELS5: EQUAL? X,1 \?ELS9
PRINTR "Ok, saved."
?ELS9: SET 'L-MODE,FALSE-VALUE
SET 'L-HERE,FALSE-VALUE
SET 'L-DATE,FALSE-VALUE
SET 'L-RECORDING,FALSE-VALUE
PRINTI "Ok, restored."
CRLF
CRLF
CALL1 STATUS-LINE
CALL1 V-LOOK
EQUAL? HERE,THE-COACHMAN,SIMONS \?ELS18
EQUAL? MEAL-STATUS,4 \?ELS18
DEC 'WAITER-COUNTER
CALL1 I-MEAL
RTRUE
?ELS18: EQUAL? HERE,NEWS \?ELS22
CALL2 NEWS-F,M-END
RTRUE
?ELS22: EQUAL? HERE,TUBE-JUNCTION \?ELS24
CALL2 TUBE-JUNCTION-F,M-END
RTRUE
?ELS24: FSET? HERE,TUBEBIT \TRUE
CALL2 RED-TUBE-STATION-F,M-END
CALL2 BROWN-TUBE-STATION-F,M-END
RTRUE
.FUNCT V-SCRIPT
SET 'ELAPSED-TIME,0
GET 0,8
BTST STACK,1 \?ELS5
PRINTR "[Scripting is already on!]"
?ELS5: PRINTI "[Scripting is now on.]"
CRLF
DIROUT D-PRINTER-ON
DIROUT D-SCREEN-OFF
CALL2 COPR-NOTICE,STR?253
CALL1 V-VERSION
DIROUT D-SCREEN-ON
RTRUE
.FUNCT V-UNSCRIPT
SET 'ELAPSED-TIME,0
GET 0,8
BTST STACK,1 \?ELS5
DIROUT D-SCREEN-OFF
CALL2 COPR-NOTICE,STR?254
CALL1 V-VERSION
DIROUT D-SCREEN-ON
DIROUT D-PRINTER-OFF
PRINTR "[Scripting is now off.]"
?ELS5: PRINTR "[Scripting is already off!]"
.FUNCT COPR-NOTICE,STRING
PRINTI "Here "
PRINT STRING
PRINTI " a transcript of interaction with "
RTRUE
.FUNCT V-VERSION,CNT=17,V
GET 0,1
BAND STACK,2047 >V
SET 'ELAPSED-TIME,0
CALL1 TITLE-PRINT
CRLF
PRINTI "Infocom interactive fiction - a science fiction story
Copyright (c) 1985 by Infocom, Inc. All rights reserved."
CRLF
CALL1 TITLE-PRINT
PRINTI " is a trademark of Infocom, Inc.
Release "
PRINTN V
PRINTI " / Serial number "
?PRG5: IGRTR? 'CNT,23 \?ELS9
JUMP ?REP6
?ELS9: GETB 0,CNT
PRINTC STACK
JUMP ?PRG5
?REP6: CRLF
RTRUE
.FUNCT V-$VERIFY
EQUAL? PRSO,INTNUM \?ELS5
EQUAL? P-NUMBER,469 \?ELS5
PRINTN SERIAL
CRLF
RTRUE
?ELS5: SET 'ELAPSED-TIME,0
PRINTI "EZIP Interpreter "
GETB 0,30
PRINTN STACK
PRINTI ", Version "
GETB 0,31
PRINTC STACK
PRINTI ". Verifying..."
CRLF
VERIFY \?ELS22
PRINTR "Good."
?ELS22: CRLF
PRINTR "** Bad **"
.FUNCT V-$REFRESH
SET 'ELAPSED-TIME,0
CALL1 REFRESH-STATUS-LINE
RSTACK
.FUNCT REFRESH-STATUS-LINE
SET 'L-RECORDING,FALSE-VALUE
SET 'L-HERE,FALSE-VALUE
SET 'L-MODE,FALSE-VALUE
SET 'L-DATE,FALSE-VALUE
CALL INIT-STATUS-LINE,2,TRUE-VALUE
CALL1 STATUS-LINE
RSTACK
.FUNCT V-$COMMAND-FILE
SET 'ELAPSED-TIME,0
DIRIN 1
RTRUE
.FUNCT V-$RANDOM
SET 'ELAPSED-TIME,0
EQUAL? PRSO,INTNUM /?ELS5
PRINTR "Use a number!"
?ELS5: SUB 0,P-NUMBER
RANDOM STACK
RTRUE
.FUNCT V-$RECORD
SET 'ELAPSED-TIME,0
DIROUT D-RECORD-ON
RTRUE
.FUNCT V-$UNRECORD
SET 'ELAPSED-TIME,0
DIROUT D-RECORD-OFF
RTRUE
.FUNCT V-ABORT
EQUAL? PART-FLAG,4 \?ELS5
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS5: ZERO? SIMULATING /?ELS9
ZERO? RECORDING /?ELS13
PRINTI "Deactivating the record feature and a"
JUMP ?CND11
?ELS13: PRINTI "A"
?CND11: PRINTI "borting to "
PRINTD COMM-MODE
CALL2 JIGS-UP,STR?255
RSTACK
?ELS9: CALL2 ERR,STR?256
RSTACK
.FUNCT V-ABORT-OBJECT
EQUAL? PRSO,SIMULATION-MODE \?ELS5
CALL1 V-ABORT
RSTACK
?ELS5: PRINT RECOGNIZE
CRLF
RTRUE
.FUNCT V-ALARM
EQUAL? PRSO,ROOMS \?ELS5
CALL PERFORM,V?ALARM,ME
RTRUE
?ELS5: PRINTI "I don't think"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " is sleeping."
.FUNCT V-ANSWER
CALL1 ANSWER-SAY-SHARE
ZERO? STACK \TRUE
PRINTI "Nobody is awaiting your answer."
CRLF
CALL1 CLEAR-BUF
RSTACK
.FUNCT ANSWER-SAY-SHARE
EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS5
EQUAL? MEAL-STATUS,1 \?ELS5
CALL1 NEXT-WORD-YES?
ZERO? STACK /?ELS5
CALL1 V-YES
CALL1 CLEAR-BUF
RTRUE
?ELS5: EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS9
EQUAL? MEAL-STATUS,1 \?ELS9
GET P-LEXV,P-CONT
EQUAL? STACK,W?NO \?ELS9
CALL1 V-NO
CALL1 CLEAR-BUF
RTRUE
?ELS9: EQUAL? HERE,HOSPITAL,POLICE-STATION \?ELS13
CALL1 NEXT-WORD-YES?
ZERO? STACK /?ELS13
CALL1 V-YES
CALL1 CLEAR-BUF
RTRUE
?ELS13: EQUAL? HERE,HOSPITAL,POLICE-STATION \?ELS17
GET P-LEXV,P-CONT
EQUAL? STACK,W?NO \?ELS17
CALL1 V-NO
CALL1 CLEAR-BUF
RTRUE
?ELS17: GRTR? GRIMWOLD-COUNTER,0 \?ELS21
CALL1 NEXT-WORD-YES?
ZERO? STACK /?ELS21
CALL1 V-YES
CALL1 CLEAR-BUF
RTRUE
?ELS21: GRTR? GRIMWOLD-COUNTER,0 \FALSE
GET P-LEXV,P-CONT
EQUAL? STACK,W?NO \FALSE
CALL1 V-NO
CALL1 CLEAR-BUF
RTRUE
.FUNCT NEXT-WORD-YES?
GET P-LEXV,P-CONT
EQUAL? STACK,W?YES,W?Y,W?YEAH /TRUE
GET P-LEXV,P-CONT
EQUAL? STACK,W?OK,W?OKAY,W?SURE /TRUE
GET P-LEXV,P-CONT
EQUAL? STACK,W?YEA,W?YUP,W?YEP /TRUE
GET P-LEXV,P-CONT
EQUAL? STACK,W?AYE,W?AFFIRMATI \FALSE
RTRUE
.FUNCT V-ASK-ABOUT
EQUAL? PRSO,ME \?ELS5
CALL PERFORM,V?TELL,ME
RTRUE
?ELS5: FSET? PRSO,ACTORBIT \?ELS7
SET 'WINNER,PRSO
CALL PERFORM,V?TELL-ABOUT,ME,PRSI
SET 'P-IT-OBJECT,WINNER
SET 'WINNER,PLAYER
RTRUE
?ELS7: CALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-ASK-NO-ONE-FOR,ACTOR
CALL FIND-IN,HERE,ACTORBIT >ACTOR
ZERO? ACTOR /?ELS5
CALL PERFORM,V?ASK-FOR,ACTOR,PRSO
RTRUE
?ELS5: PRINTR "There's no one here to ask!"
.FUNCT V-ASK-FOR
PRINTI "Not surprisingly,"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " doesn't oblige."
.FUNCT V-BITE
CALL2 HACK-HACK,STR?257
RSTACK
.FUNCT PRE-BOARD
LOC PLAYER
EQUAL? PRSO,STACK \FALSE
PRINT LOOK-AROUND
CRLF
RTRUE
.FUNCT V-BOARD
FSET? PRSO,VEHBIT \?ELS5
MOVE PLAYER,PRSO
EQUAL? PRSO,STADIUM-STANDS \?CND6
FCLEAR PRSO,FURNITUREBIT
?CND6: PRINTI "You are now "
EQUAL? PRSO,GLOBAL-TABLE,DINETTE-SET \?ELS13
PRINTI "seated at"
JUMP ?CND11
?ELS13: FSET? PRSO,FURNITUREBIT \?ELS17
PRINTI "on"
JUMP ?CND11
?ELS17: PRINTI "in"
?CND11: CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
?ELS5: PRINTI "You can't get into"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "!"
.FUNCT PRE-BUY
ZERO? SIMULATING \?ELS5
CALL PERFORM,V?EAT,PRSO
RTRUE
?ELS5: EQUAL? PRSO,MEAL \?ELS7
EQUAL? HERE,SIMONS,THE-COACHMAN /FALSE
?ELS7: EQUAL? PRSO,CREDIT-CARD \?ELS11
PRINTR "You must think that money grows on trees."
?ELS11: CALL2 HELD?,CREDIT-CARD
ZERO? STACK \?ELS15
PRINTI "You don't have your "
PRINTD CREDIT-CARD
PRINTR "."
?ELS15: MOVE CREDIT-CARD,PLAYER
RFALSE
.FUNCT V-BUY
PRINTI "You can't buy"
CALL2 ARTICLE,PRSO
PRINTR "!"
.FUNCT V-BUY-WITH
EQUAL? PRSI,CREDIT-CARD \?ELS5
CALL PERFORM,V?BUY,PRSO
RTRUE
?ELS5: ZERO? SIMULATING \?ELS7
CALL PERFORM,V?EAT,PRSO
RTRUE
?ELS7: PRINTI "You can buy things only with your "
PRINTD CREDIT-CARD
PRINTR "."
.FUNCT V-CALL
FSET? PRSO,ACTORBIT \?ELS5
PRINTI "You do so, but"
CALL2 ARTICLE,PRSO
PRINTR " doesn't seem to hear you."
?ELS5: PRINTR "That's an odd thought."
.FUNCT V-CHASTISE
PRINTR "Use prepositions to indicate precisely what you want to do: LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc."
.FUNCT V-CLIMB-DOWN
EQUAL? PRSO,ROOMS \?ELS5
CALL2 DO-WALK,P?DOWN
RSTACK
?ELS5: CALL1 V-LOCK
RSTACK
.FUNCT V-CLIMB-FOO
EQUAL? PRSO,ROOMS \?ELS5
CALL2 DO-WALK,P?UP
RSTACK
?ELS5: CALL1 V-LOCK
RSTACK
.FUNCT V-CLIMB-ON
FSET? PRSO,VEHBIT \?ELS5
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS5: PRINTI "You can't climb onto"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-CLIMB-OVER
CALL1 V-LOCK
RSTACK
.FUNCT V-CLIMB-UP
EQUAL? PRSO,ROOMS \?ELS5
CALL2 DO-WALK,P?UP
RSTACK
?ELS5: CALL1 V-LOCK
RSTACK
.FUNCT V-CLOSE
FSET? PRSO,SURFACEBIT /?THN6
FSET? PRSO,ACTORBIT \?ELS5
?THN6: CALL1 V-COUNT
RSTACK
?ELS5: FSET? PRSO,VEHBIT \?ELS9
PRINTR "Huh?"
?ELS9: FSET? PRSO,DOORBIT /?THN14
FSET? PRSO,CONTBIT \?ELS13
?THN14: FSET? PRSO,OPENBIT \?ELS20
PRINTI "Okay,"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " is now closed."
CRLF
FCLEAR PRSO,OPENBIT
RTRUE
?ELS20: PRINT ALREADY-CLOSED
CRLF
RTRUE
?ELS13: CALL1 TELL-ME-HOW
RSTACK
.FUNCT V-COMFORT
FSET? PRSO,ACTORBIT \?ELS5
PRINTI "But"
CALL2 ARTICLE,PRSO
PRINTR " doesn't need comforting."
?ELS5: CALL1 V-COUNT
RSTACK
.FUNCT V-COUNT
CALL2 PICK-ONE,IMPOSSIBLES
PRINT STACK
CRLF
RTRUE
.FUNCT V-CROSS
PRINTI "You can't cross"
CALL2 ARTICLE,PRSO
PRINTR "."
.FUNCT V-CRY
ZERO? MITCHELL-RAID-FLAG /?ELS5
PRINTR "The tears come easily."
?ELS5: ZERO? SIMULATING /?ELS10
PRINTR "A tear trickles down your cheek."
?ELS10: PRINTR "You have no tear ducts."
.FUNCT V-CUT
ZERO? PRSI \?ELS5
CALL1 V-LOCK
RSTACK
?ELS5: PRINTI "The ""cutting edge"" of"
CALL2 ARTICLE,PRSI
PRINTR " is hardly adequate."
.FUNCT V-DANCE
PRINTR "That was fun. Well, at least good exercise."
.FUNCT V-DATE
PRINTI "Today is "
ZERO? SIMULATING /?ELS5
PRINTN SMONTH
PRINTI "/"
PRINTN SDATE
PRINTI "/"
PRINTN SYEAR
JUMP ?CND3
?ELS5: PRINTN MONTH
PRINTI "/"
PRINTN DATE
PRINTI "/"
PRINTN YEAR
?CND3: PRINTR "."
.FUNCT V-DIG
CALL1 V-YELL
RSTACK
.FUNCT V-DISEMBARK
FSET? PRSO,TAKEBIT \?ELS5
CALL2 META-LOC,PRSO
EQUAL? STACK,HERE \?ELS5
IN? PRSO,HERE /?ELS5
IN? PRSO,PLAYER /?ELS5
CALL PERFORM,V?TAKE,PRSO
RTRUE
?ELS5: LOC PRSO
EQUAL? STACK,WALLET \?ELS9
CALL2 HELD?,WALLET
ZERO? STACK /?ELS9
CALL PERFORM,V?TAKE,PRSO,WALLET
RTRUE
?ELS9: LOC PLAYER
EQUAL? PRSO,STACK /?ELS13
PRINTI "But you're not in"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "!"
?ELS13: EQUAL? PRSO,SEAT \?ELS19
FSET? PRSO,ONBIT \?ELS19
FCLEAR PRSO,ONBIT
MOVE PLAYER,HERE
PRINTR "You stand slowly, still feeling a little shaky from your joybooth experience."
?ELS19: MOVE PLAYER,HERE
PRINTI "You are no longer "
EQUAL? PRSO,DINETTE-SET,RESTAURANT-TABLE \?ELS30
PRINTI "at"
JUMP ?CND28
?ELS30: FSET? PRSO,FURNITUREBIT \?ELS34
PRINTI "on"
JUMP ?CND28
?ELS34: PRINTI "in"
?CND28: EQUAL? PRSO,STADIUM-STANDS \?CND41
FSET PRSO,FURNITUREBIT
?CND41: CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-DISPLAY
CALL1 V-YELL
RSTACK
.FUNCT V-DRINK
FSET? PRSO,DRINKBIT \?ELS5
MOVE PRSO,LOCAL-GLOBALS
PRINTR "Drunk."
?ELS5: PRINTR "You can't drink that!"
.FUNCT V-DRINK-FROM
CALL1 V-COUNT
RSTACK
.FUNCT PRE-DROP
CALL1 IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-DROP
MOVE PRSO,HERE
PRINTR "Dropped."
.FUNCT V-EAT
FSET? PRSO,EATBIT \?ELS5
MOVE PRSO,LOCAL-GLOBALS
PRINTR "Eaten."
?ELS5: PRINTI "Nutritionists agree that"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " is inedible."
.FUNCT V-ENTER,VEHICLE
ZERO? PRSO /?ELS5
IN? PRSO,ROOMS \?ELS5
CALL2 GOTO,PRSO
RSTACK
?ELS5: EQUAL? HERE,TUBE-JUNCTION \?ELS9
CALL2 DO-WALK,P?IN
RSTACK
?ELS9: CALL FIND-IN,HERE,VEHBIT >VEHICLE
ZERO? VEHICLE /?ELS11
CALL PERFORM,V?BOARD,VEHICLE
RTRUE
?ELS11: CALL2 DO-WALK,P?IN
RSTACK
.FUNCT V-EXAMINE
CALL1 UNSEEABLE-OBJECT
ZERO? STACK \TRUE
FSET? PRSO,DOORBIT /?THN8
FSET? PRSO,VEHBIT \?ELS7
?THN8: CALL1 V-LOOK-INSIDE
RSTACK
?ELS7: FSET? PRSO,ACTORBIT /?THN12
FSET? PRSO,MYBIT \?ELS11
?THN12: PRINTI "You see nothing unusual about"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
?ELS11: FSET? PRSO,CONTBIT \?ELS19
FSET? PRSO,OPENBIT /?THN25
FSET? PRSO,SURFACEBIT \?ELS24
?THN25: CALL1 V-LOOK-INSIDE
RSTACK
?ELS24: PRINTR "It's closed."
?ELS19: FSET? PRSO,READBIT \?ELS32
CALL PERFORM,V?READ,PRSO
RTRUE
?ELS32: EQUAL? PRSO,HEAD \?ELS34
PRINTR "That would involve quite a contortion."
?ELS34: PRINTI "Totally ordinary looking "
CALL2 DPRINT,PRSO
PRINTR "."
.FUNCT UNSEEABLE-OBJECT
FSET? PRSO,UNSEENBIT \FALSE
PRINTI "You can't actually see"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-EXIT
LOC PLAYER
FSET? STACK,VEHBIT \?ELS5
LOC PLAYER
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?ELS5: CALL2 DO-WALK,P?OUT
RSTACK
.FUNCT V-FEED
PRINTI "A nice thought, but"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " doesn't need feeding."
.FUNCT V-FILL
PRINTR "You can't fill that!"
.FUNCT V-FIND,WHERE=0,L
LOC PRSO >L
EQUAL? PRSO,HEAD,HANDS \?ELS5
SET 'YES-NO-FLAG,2
CALL QUEUE,I-YES-NO,2
PRINTI "Are you sure"
CALL ARTICLE,PRSO,TRUE-VALUE
CALL2 PLURAL,PRSO
PRINTR " lost?"
?ELS5: IN? PRSO,PLAYER \?ELS11
PRINTR "You have it!"
?ELS11: CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK \?THN16
IN? PRSO,GLOBAL-OBJECTS /?THN16
ZERO? L \?ELS15
?THN16: PRINTR "You figure it out!"
?ELS15: FSET? L,ACTORBIT \?ELS21
CALL2 VISIBLE?,L
ZERO? STACK /?ELS21
PRINTI "As far as you can tell,"
CALL ARTICLE,L,TRUE-VALUE
PRINTR " has it."
?ELS21: FSET? L,CONTBIT \?ELS29
CALL2 VISIBLE?,PRSO
ZERO? STACK /?ELS29
PRINTI "It's in"
CALL ARTICLE,L,TRUE-VALUE
PRINTR "."
?ELS29: CALL2 VISIBLE?,PRSO
ZERO? STACK /?ELS37
PRINTR "Right in front of you!"
?ELS37: ZERO? WHERE /?ELS41
PRINTR "Beats me."
?ELS41: PRINTR "You'll have to do that yourself."
.FUNCT V-FIRST-LOOK
CALL1 DESCRIBE-ROOM
ZERO? STACK /FALSE
EQUAL? VERBOSITY,1,2 \FALSE
CALL1 DESCRIBE-OBJECTS
RSTACK
.FUNCT V-FLUSH
CALL1 V-COUNT
RSTACK
.FUNCT V-FOLLOW
CALL2 VISIBLE?,PRSO
ZERO? STACK /?ELS5
CALL1 RIGHT-HERE
RSTACK
?ELS5: FSET? PRSO,ACTORBIT /?ELS7
CALL1 V-COUNT
RSTACK
?ELS7: EQUAL? FOLLOW-FLAG,9 \?ELS9
PRINTI "You didn't notice which way"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " went."
?ELS9: PRINTI "You have no idea where"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " is."
.FUNCT I-UNFOLLOW
SET 'FOLLOW-FLAG,0
RFALSE
.FUNCT PRE-GIVE
CALL1 IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-GIVE
FSET? PRSI,ACTORBIT \?ELS5
PRINTI "After a moment,"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTR " refuses your offer."
?ELS5: PRINTI "You can't give"
CALL2 ARTICLE,PRSO
PRINTI " to"
CALL2 ARTICLE,PRSI
PRINTR "!"
.FUNCT V-HANG
CALL1 V-COUNT
RSTACK
.FUNCT V-HELLO,ACTOR
ZERO? PRSO /?ELS5
FSET? PRSO,ACTORBIT \?ELS11
PRINTI "[That's not the correct way to speak to people. Try """
CALL2 DPRINT,PRSO
PRINTR ", hello.""]"
?ELS11: CALL1 V-COUNT
RSTACK
?ELS5: CALL FIND-IN,HERE,ACTORBIT >ACTOR
ZERO? ACTOR /?ELS17
CALL2 ADDRESS-DIRECTLY,ACTOR
RSTACK
?ELS17: CALL PERFORM,V?TELL,ME
RTRUE
.FUNCT V-HELP
SET 'ELAPSED-TIME,0
PRINTR "[If you're really stuck, you can order an InvisiClues Hint Booklet from your dealer, or via mail order using the form that came in your package.]"
.FUNCT V-HIDE
PRINTR "There's no place to hide here."
.FUNCT V-HOLD
FSET? PRSO,ACTORBIT \?ELS5
CALL PERFORM,V?COMFORT,PRSO
RTRUE
?ELS5: CALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-INCOMPLETE-QUESTION
PRINTR "Why? When? Which?"
.FUNCT V-KICK
CALL2 HACK-HACK,STR?258
RSTACK
.FUNCT V-KILL
PRINTR "Violence solves nothing."
.FUNCT V-KNOCK
FSET? PRSO,DOORBIT \?ELS5
PRINTR "Nothing happens."
?ELS5: CALL2 HACK-HACK,STR?259
RSTACK
.FUNCT V-KISS
PRINTR "You reconsider."
.FUNCT V-LEAP
ZERO? PRSO /?ELS5
IN? PRSO,HERE /?ELS5
CALL1 V-COUNT
RSTACK
?ELS5: CALL1 V-SKIP
RSTACK
.FUNCT V-LEAVE
ZERO? PRSO \?CND1
SET 'PRSO,ROOMS
?CND1: EQUAL? PRSO,ROOMS \?ELS8
CALL2 DO-WALK,P?OUT
RSTACK
?ELS8: LOC PLAYER
EQUAL? PRSO,STACK \?ELS10
CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?ELS10: CALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT V-LIE-DOWN
EQUAL? PRSO,ROOMS \?ELS5
EQUAL? HERE,BEDROOM \?ELS10
CALL PERFORM,V?LIE-DOWN,BED
RTRUE
?ELS10: CALL PERFORM,V?LIE-DOWN,GROUND
RTRUE
?ELS5: CALL PERFORM,V?BOARD,PRSO
RTRUE
.FUNCT V-LISTEN
EQUAL? HERE,LIBRARY-ROOM,INTERFACE-ROOM \?ELS5
CALL2 ERR,STR?260
RSTACK
?ELS5: ZERO? PRSO \?ELS7
EQUAL? HERE,COMM-ROOM \?ELS12
CALL2 ERR,STR?261
RSTACK
?ELS12: EQUAL? HERE,CONTROL-CENTER \?ELS14
CALL PERFORM,V?LISTEN,CONVERSATION
RTRUE
?ELS14: EQUAL? HERE,NEWS \?ELS16
CALL PERFORM,V?EXAMINE,CURRENT-FEED
RTRUE
?ELS16: EQUAL? HERE,WAREHOUSE-2 \?ELS18
PRINTR "A loud alarm is ringing."
?ELS18: EQUAL? HERE,DORM \?ELS22
EQUAL? SYEAR,2041,2051 \?ELS22
PRINTR "Loud music is playing nearby."
?ELS22: EQUAL? HERE,ALLEY,BAR \?ELS28
PRINTI "Loud music comes from the "
EQUAL? HERE,ALLEY \?ELS35
PRINTR "end of the alley."
?ELS35: PRINTR "jukebox."
?ELS28: EQUAL? HERE,MAIN-STREET-BRIDGE \?ELS43
GRTR? WILD-DOG-COUNTER,0 \?ELS43
CALL PERFORM,V?LISTEN,BARKING
RTRUE
?ELS43: IN? RYDER,HERE \?ELS47
PRINTD RYDER
PRINTR " continues his harangue:"
?ELS47: EQUAL? HERE,CONSTRUCTION-SITE-1 \?ELS51
EQUAL? LIGHT-LEVEL,3 \?ELS51
CALL PERFORM,V?LISTEN,DERRICOPTERS
RTRUE
?ELS51: EQUAL? HERE,CORE \?ELS55
GET HVAC-STATUS-TABLE,11
EQUAL? STACK,1 \?ELS55
CALL PERFORM,V?LISTEN,VENT
RTRUE
?ELS55: PRINTR "At the moment, you hear nothing interesting."
?ELS7: PRINTI "At the moment,"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " make"
FSET? PRSO,PLURALBIT /?CND68
PRINTI "s"
?CND68: PRINTR " no sound."
.FUNCT V-LOCK
CALL2 PICK-ONE,YUKS
PRINT STACK
CRLF
RTRUE
.FUNCT V-LOOK
EQUAL? HERE,SLEEP-ROOM,INTERFACE-ROOM /?THN6
EQUAL? HERE,LIBRARY-ROOM,SIMULATION-ROOM \?ELS5
?THN6: GETP MODE,P?LDESC
PRINT STACK
CRLF
RTRUE
?ELS5: EQUAL? HERE,COMM-ROOM \?ELS11
PRINTI "You have entered "
PRINTD COMM-MODE
PRINTI ". "
EQUAL? PART-FLAG,4 /?CND16
PRINTI "The following locations are equipped with communication outlets:"
CRLF
?CND16: CALL PERFORM,V?DISPLAY,OUTLETS
RTRUE
?ELS11: CALL2 DESCRIBE-ROOM,TRUE-VALUE
CALL2 DESCRIBE-OBJECTS,TRUE-VALUE
RTRUE
.FUNCT V-LOOK-BEHIND
CALL1 UNSEEABLE-OBJECT
ZERO? STACK \TRUE
PRINTI "There is nothing behind"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-LOOK-DOWN
EQUAL? PRSO,ROOMS \?ELS5
CALL PERFORM,V?EXAMINE,GROUND
RTRUE
?ELS5: CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOOK-INSIDE
CALL1 UNSEEABLE-OBJECT
ZERO? STACK \TRUE
FSET? PRSO,ACTORBIT \?ELS7
PRINTR "There is nothing special to be seen."
?ELS7: FSET? PRSO,DOORBIT \?ELS11
PRINTI "All you can tell is that"
CALL ARTICLE,PRSO,TRUE-VALUE
CALL2 PLURAL,PRSO
FSET? PRSO,OPENBIT \?ELS18
PRINTR " open."
?ELS18: PRINTR " closed."
?ELS11: FSET? PRSO,VEHBIT \?ELS26
EQUAL? PRSO,COUCH \?ELS31
IN? JILL,HERE \?ELS31
EQUAL? JILL-COUNTER,4,10 /?THN34
EQUAL? SYEAR,2071 \?ELS31
?THN34: CALL1 JILL-DESCFCN
RSTACK
?ELS31: EQUAL? PRSO,BED \?ELS37
IN? JILL,HERE \?ELS37
EQUAL? JILL-COUNTER,0,12 /?THN40
EQUAL? SYEAR,2061 \?ELS37
?THN40: CALL1 JILL-DESCFCN
RSTACK
?ELS37: EQUAL? PRSO,SEAT \?ELS43
EQUAL? HERE,SKYCAB \?ELS43
CALL1 JILL-DESCFCN
RSTACK
?ELS43: LOC PLAYER
EQUAL? PRSO,STACK \?ELS47
CALL1 DESCRIBE-VEHICLE
RSTACK
?ELS47: PRINTR "You see nothing special."
?ELS26: FSET? PRSO,SURFACEBIT \?ELS53
FIRST? PRSO \?ELS58
CALL2 PRINT-CONT,PRSO
RSTACK
?ELS58: PRINTI "There is nothing on"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
?ELS53: FSET? PRSO,CONTBIT \?ELS66
CALL2 SEE-INSIDE?,PRSO
ZERO? STACK /?ELS71
FIRST? PRSO \?ELS76
CALL2 PRINT-CONT,PRSO
RSTACK
?ELS76: PRINTR "It's empty."
?ELS71: FSET? PRSO,OPENBIT /?ELS82
FIRST? PRSO \?ELS82
CALL PERFORM,V?OPEN,PRSO
RTRUE
?ELS82: PRINTI "It seems that"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " is closed."
?ELS66: PRINTR "You can't do that."
.FUNCT V-LOOK-UNDER
CALL2 HELD?,PRSO
ZERO? STACK /?ELS5
FSET? PRSO,WORNBIT \?ELS10
PRINTR "You're wearing it!"
?ELS10: PRINTR "You're holding it!"
?ELS5: CALL1 UNSEEABLE-OBJECT
ZERO? STACK \TRUE
PRINTI "There is nothing but "
FSET? HERE,OUTSIDEBIT \?ELS25
PRINTI "dirt"
JUMP ?CND23
?ELS25: PRINTI "dust"
?CND23: PRINTR " there."
.FUNCT V-LOOK-UP
EQUAL? PRSO,ROOMS \?ELS5
FSET? HERE,OUTSIDEBIT \?ELS10
CALL PERFORM,V?EXAMINE,SKY
RTRUE
?ELS10: CALL PERFORM,V?EXAMINE,CEILING
RTRUE
?ELS5: CALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOWER
CALL1 V-RAISE
RSTACK
.FUNCT V-MACO
EQUAL? PART-FLAG,4 \?ELS5
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS5: CALL1 PSYCH-CHECK
ZERO? STACK /?ELS9
RETURN 2
?ELS9: EQUAL? HERE,CORE \?ELS13
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS13: EQUAL? MODE,COMM-MODE \?ELS17
CALL2 GOTO,CORE
RSTACK
?ELS17: PRINT ENTER-COMM-MODE
CRLF
RTRUE
.FUNCT V-MOVE
CALL2 HELD?,PRSO
ZERO? STACK /?ELS5
PRINTR "Why juggle objects?"
?ELS5: CALL1 LOC-CLOSED
ZERO? STACK \TRUE
FSET? PRSO,TAKEBIT \?ELS11
PRINTI "Moving"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " reveals nothing."
?ELS11: PRINTI "You can't move"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-MUNG
CALL2 HACK-HACK,STR?262
RSTACK
.FUNCT V-NO
EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS5
EQUAL? MEAL-STATUS,1 \?ELS5
SET 'MEAL-STATUS,2
PRINTR """Fine,"" says the maitre d'. ""I'll come back when the rest of your party arrives."" He walks away."
?ELS5: GRTR? GRIMWOLD-COUNTER,0 \?ELS11
PRINTR "Grimwold fidgets impatiently."
?ELS11: EQUAL? YES-NO-FLAG,1,2,3 /?THN16
EQUAL? YES-NO-FLAG,4,5 \?ELS15
?THN16: CALL1 V-YES
RSTACK
?ELS15: EQUAL? YES-NO-FLAG,6 \?ELS19
PRINTR "Perelman looks unhappy. ""I'm counting on you."""
?ELS19: EQUAL? YES-NO-FLAG,7 \?ELS23
EQUAL? SYEAR,2041 \?ELS28
PRINTR """Don't worry -- things'll turn around!"""
?ELS28: PRINTI """What else is new"
PRINT CHANGE-AGENTS
CRLF
RTRUE
?ELS23: EQUAL? YES-NO-FLAG,8 \?ELS36
CALL PERFORM,V?TELL,SABOTEURS
RTRUE
?ELS36: EQUAL? YES-NO-FLAG,9,11 \?ELS38
PRINTR "Jill frowns at you."
?ELS38: EQUAL? YES-NO-FLAG,10 \?ELS42
PRINTR "Jill gives you a kiss."
?ELS42: EQUAL? YES-NO-FLAG,12 \?ELS46
EQUAL? HERE,HOSPITAL \?ELS51
PRINTI "The nurse replies, ""Well, then, there's no loitering here."" She summons an orderly to escort you away."
CRLF
CRLF
CALL2 GOTO,ELM-AND-KENNEDY
SET 'FOLLOW-FLAG,13
ADD ELAPSED-TIME,2
CALL QUEUE,I-UNFOLLOW,STACK
PUTP SPEAR-CARRIER,P?SDESC,STR?263
PRINTR "The orderly releases you and reenters the hospital."
?ELS51: EQUAL? HERE,POLICE-STATION \?ELS57
PRINTR """Then scram before I put you in a cell."""
?ELS57: CALL1 V-YES
RSTACK
?ELS46: PRINTR "You sound rather negative."
.FUNCT V-OFF
FSET? PRSO,LIGHTBIT \?ELS5
FSET? PRSO,ONBIT \?ELS10
FCLEAR PRSO,ONBIT
PRINTR "It is now off."
?ELS10: PRINTR "It is already off."
?ELS5: PRINTR "You can't turn that off."
.FUNCT V-ON
FSET? PRSO,LIGHTBIT \?ELS5
FSET? PRSO,ONBIT \?ELS10
PRINTR "It is already on."
?ELS10: FSET PRSO,ONBIT
PRINTR "It is now on."
?ELS5: PRINTR "You can't turn that on."
.FUNCT V-OPEN,F,STR
FSET? PRSO,SURFACEBIT /?THN6
FSET? PRSO,ACTORBIT \?ELS5
?THN6: CALL1 V-COUNT
RSTACK
?ELS5: FSET? PRSO,VEHBIT \?ELS9
PRINTR "Huh?"
?ELS9: FSET? PRSO,CONTBIT \?ELS13
FSET? PRSO,OPENBIT \?ELS18
PRINT ALREADY-OPEN
CRLF
RTRUE
?ELS18: FSET PRSO,OPENBIT
FSET PRSO,TOUCHBIT
FIRST? PRSO \?THN28
FSET? PRSO,TRANSBIT \?ELS27
?THN28: PRINTR "Opened."
?ELS27: PRINTI "Opening"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " reveals"
CALL2 PRINT-CONTENTS,PRSO
PRINTR "."
?ELS13: FSET? PRSO,DOORBIT \?ELS41
FSET? PRSO,OPENBIT \?ELS46
PRINT ALREADY-OPEN
CRLF
RTRUE
?ELS46: PRINTI "Okay,"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " is now open."
CRLF
FSET PRSO,OPENBIT
RTRUE
?ELS41: CALL1 TELL-ME-HOW
RSTACK
.FUNCT V-PAY-FOR
EQUAL? PRSO,MEAL \?ELS5
EQUAL? MEAL-STATUS,4 \?ELS5
CALL PERFORM,V?GIVE,CREDIT-CARD,SPEAR-CARRIER
RTRUE
?ELS5: CALL PERFORM,V?BUY,PRSO
RTRUE
.FUNCT V-PCAF
EQUAL? PART-FLAG,4 \?ELS5
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS5: CALL1 PSYCH-CHECK
ZERO? STACK /?ELS9
RETURN 2
?ELS9: EQUAL? HERE,CAFETERIA \?ELS13
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS13: EQUAL? MODE,COMM-MODE \?ELS17
CALL2 GOTO,CAFETERIA
RSTACK
?ELS17: PRINT ENTER-COMM-MODE
CRLF
RTRUE
.FUNCT V-PEOF
EQUAL? PART-FLAG,4 \?ELS5
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS5: EQUAL? HERE,OFFICE \?ELS9
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS9: EQUAL? MODE,COMM-MODE \?ELS13
CALL2 GOTO,OFFICE
RSTACK
?ELS13: PRINT ENTER-COMM-MODE
CRLF
RTRUE
.FUNCT V-PICK
CALL1 V-COUNT
RSTACK
.FUNCT V-PLAY
PRINTR "You can't play that!"
.FUNCT V-PLAY-WITH
PRINTR "That's a silly idea."
.FUNCT V-POINT
PRINTR "That would be pointless."
.FUNCT V-POUR
CALL1 V-LOCK
RSTACK
.FUNCT V-PPCC
EQUAL? PART-FLAG,4 \?ELS5
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS5: CALL1 PSYCH-CHECK
ZERO? STACK /?ELS9
RETURN 2
?ELS9: EQUAL? HERE,CONTROL-CENTER \?ELS13
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS13: EQUAL? MODE,COMM-MODE \?ELS17
CALL2 GOTO,CONTROL-CENTER
RSTACK
?ELS17: PRINT ENTER-COMM-MODE
CRLF
RTRUE
.FUNCT V-PRAY
ZERO? SIMULATING /?ELS5
SET 'ELAPSED-TIME,3
PRINTR "Although you've never been particularly religious, you pray for several minutes."
?ELS5: PRINTR "You do so. The Creator of the Universe, if He exists, is likely to listen with compassion to your prayers, as much as He would to the prayers of any man."
.FUNCT V-PUSH
CALL2 HACK-HACK,STR?264
RSTACK
.FUNCT PRE-PUT
EQUAL? PRSI,GROUND \?ELS5
CALL PERFORM,V?DROP,PRSO
RTRUE
?ELS5: LOC PRSI
EQUAL? PRSO,STACK \?ELS7
PRINTI "You can't put"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " in"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTI " when"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTI " is already in"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "!"
?ELS7: EQUAL? PRSI,ME,HEAD \?ELS19
EQUAL? PRSO,HEADSET /FALSE
?ELS19: CALL1 IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-PUT,CONT-CLOSED=0,?TMP1
EQUAL? PRSO,HEADSET \?ELS3
EQUAL? PRSI,ME,HEAD \?ELS3
CALL PERFORM,V?WEAR,HEADSET
RTRUE
?ELS3: FSET? PRSI,OPENBIT /?ELS7
FSET? PRSI,DOORBIT /?ELS7
FSET? PRSI,CONTBIT /?ELS7
FSET? PRSI,SURFACEBIT /?ELS7
FSET? PRSI,VEHBIT /?ELS7
PRINTI "You can't put"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " in"
CALL2 ARTICLE,PRSI
PRINTR "!"
?ELS7: EQUAL? PRSI,PRSO /?THN18
CALL2 HELD?,PRSO
ZERO? STACK /?ELS17
FSET? PRSO,TAKEBIT /?ELS17
?THN18: PRINTR "How can you do that?"
?ELS17: IN? PRSO,PRSI \?ELS25
PRINTI "I think"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " is already in"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTR "."
?ELS25: FSET? PRSI,OPENBIT /?CND1
FSET? PRSI,SURFACEBIT /?CND1
SET 'CONT-CLOSED,TRUE-VALUE
?CND1: CALL2 WEIGHT,PRSI >?TMP1
GETP PRSO,P?SIZE
ADD ?TMP1,STACK >?TMP1
GETP PRSI,P?SIZE
SUB ?TMP1,STACK >?TMP1
GETP PRSI,P?CAPACITY
GRTR? ?TMP1,STACK \?ELS40
FSET? PRSI,VEHBIT \?ELS45
CALL1 V-YELL
RSTACK
?ELS45: ZERO? CONT-CLOSED /?ELS50
FSET PRSI,OPENBIT
PRINTI "You open"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTI " and discover that t"
JUMP ?CND48
?ELS50: PRINTI "T"
?CND48: PRINTR "here's not enough room inside."
?ELS40: CALL2 HELD?,PRSO
ZERO? STACK \?ELS63
CALL1 ITAKE
EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE
?ELS63: MOVE PRSO,PRSI
FSET PRSO,TOUCHBIT
EQUAL? PRSI,BUREAU \?ELS72
PRINTI "You put"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " on the bureau."
?ELS72: PRINTI "Done"
ZERO? CONT-CLOSED /?CND81
FSET PRSI,OPENBIT
PRINTI " (after opening"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTI ", of course)"
?CND81: PRINTR "."
.FUNCT V-PUT-AWAY
EQUAL? PRSO,DRIVERS-LICENSE,RATION-CARD,CREDIT-CARD \?ELS5
CALL PERFORM,V?PUT,PRSO,WALLET
RTRUE
?ELS5: PRINTI "You don't have a good place to put"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-PUT-BEHIND
CALL1 V-YELL
RSTACK
.FUNCT V-PUT-ON
EQUAL? PRSI,ME \?ELS5
CALL PERFORM,V?WEAR,PRSO
RTRUE
?ELS5: FSET? PRSI,SURFACEBIT /?THN8
FSET? PRSI,FURNITUREBIT \?ELS7
?THN8: CALL1 V-PUT
RSTACK
?ELS7: PRINTI "There's no good surface on"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTR "."
.FUNCT V-PUT-UNDER
CALL1 V-YELL
RSTACK
.FUNCT V-RAPE
CALL1 V-KISS
RSTACK
.FUNCT V-RAISE
CALL2 HACK-HACK,STR?265
RSTACK
.FUNCT V-RCRO
EQUAL? PART-FLAG,4 \?ELS5
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS5: CALL1 PSYCH-CHECK
ZERO? STACK /?ELS9
RETURN 2
?ELS9: EQUAL? HERE,ROOFTOP \?ELS13
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS13: EQUAL? MODE,COMM-MODE /?THN18
EQUAL? HERE,CORE,OFFICE,NEWS \?ELS17
?THN18: CALL2 GOTO,ROOFTOP
RSTACK
?ELS17: PRINT ENTER-COMM-MODE
CRLF
RTRUE
.FUNCT V-REACH-IN,OBJ
FSET? PRSO,CONTBIT \?THN6
FSET? PRSO,ACTORBIT \?ELS5
?THN6: CALL1 V-LOCK
RSTACK
?ELS5: FSET? PRSO,OPENBIT /?ELS9
PRINTR "It's not open."
?ELS9: FIRST? PRSO >OBJ \?THN14
FSET? OBJ,INVISIBLE /?THN14
FSET? OBJ,TAKEBIT /?ELS13
?THN14: PRINTR "It's empty."
?ELS13: PRINTI "You reach into"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " and feel something."
.FUNCT PRE-READ
ZERO? PRSI /FALSE
FSET? PRSI,TRANSBIT /FALSE
PRINTI "How does one look through"
CALL2 ARTICLE,PRSI
PRINTR "?"
.FUNCT V-READ
FSET? PRSO,READBIT \?ELS5
GETP PRSO,P?TEXT
PRINT STACK
CRLF
RTRUE
?ELS5: PRINTI "How can you read"
CALL2 ARTICLE,PRSO
PRINTR "?"
.FUNCT V-RECORD-ON
ZERO? PRSO /?ELS5
EQUAL? PRSO,ROOMS /?ELS5
PRINT RECOGNIZE
CRLF
RTRUE
?ELS5: EQUAL? PART-FLAG,4 \?ELS11
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS11: ZERO? REVIEWING-RECORDINGS \?THN16
EQUAL? RECORD-BUFFER,FEED-BUFFER \?ELS15
?THN16: CALL ERR,STR?266,TRUE-VALUE
PRINTD RECORD-BUFFER
PRINTR "."
?ELS15: ZERO? RECORDING /?ELS21
CALL2 ERR,STR?267
RSTACK
?ELS21: ZERO? SIMULATING \?ELS24
EQUAL? HERE,NEWS,OFFICE,ROOFTOP /?ELS24
EQUAL? HERE,CORE,CONTROL-CENTER,CAFETERIA /?ELS24
CALL2 ERR,STR?268
RSTACK
?ELS24: GETP RECORD-BUFFER,P?SIZE
GRTR? STACK,90 \?ELS28
CALL2 ERR,STR?269
RSTACK
?ELS28: SET 'RECORDING,TRUE-VALUE
PRINTR "Record feature activated."
.FUNCT V-RECORD-OFF
EQUAL? PRSO,ROOMS /?ELS5
PRINT RECOGNIZE
CRLF
RTRUE
?ELS5: ZERO? RECORDING \?ELS9
CALL2 ERR,STR?270
RSTACK
?ELS9: SET 'RECORDING,FALSE-VALUE
PRINTR "Record feature deactivated."
.FUNCT V-REMOVE
FSET? PRSO,WEARBIT \?ELS5
CALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
?ELS5: CALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-REPLY
PRINTI "It is hardly likely that"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " is interested."
CRLF
CALL1 CLEAR-BUF
RSTACK
.FUNCT V-REPORT
CALL PERFORM,V?TELL-ABOUT,PRSI,PRSO
RTRUE
.FUNCT V-ROB
FSET? PRSO,TAKEBIT /?THN6
FSET? PRSO,TRYTAKEBIT \?ELS5
?THN6: CALL1 V-YELL
RSTACK
?ELS5: PRINTR "Theft is a serious crime."
.FUNCT V-ROFF
SET 'PRSO,ROOMS
CALL1 V-RECORD-OFF
RSTACK
.FUNCT V-SAY,ACTOR
CALL1 ANSWER-SAY-SHARE
ZERO? STACK \TRUE
CALL FIND-IN,HERE,ACTORBIT >ACTOR
ZERO? ACTOR /?ELS7
CALL2 ADDRESS-DIRECTLY,ACTOR
RSTACK
?ELS7: CALL PERFORM,V?TELL,ME
CALL1 CLEAR-BUF
RSTACK
.FUNCT V-SEARCH
FSET? PRSO,ACTORBIT \?ELS3
PRINTR "That wouldn't be polite."
?ELS3: FSET? PRSO,CONTBIT \?CND1
LOC PLAYER
EQUAL? PRSO,STACK \?ELS10
CALL1 DESCRIBE-VEHICLE
JUMP ?CND1
?ELS10: FSET? PRSO,OPENBIT /?ELS12
PRINTR "You'll have to open it first."
?ELS12: FIRST? PRSO \?CND1
FIRST? PRSO /?PRD19
PUSH 0
JUMP ?PRD20
?PRD19: PUSH 1
?PRD20: FSET? STACK,NDESCBIT /?CND1
CALL2 PRINT-CONT,PRSO
RTRUE
?CND1: PRINTR "You find nothing unusual."
.FUNCT V-SET
EQUAL? MODE,INTERFACE-MODE \?ELS5
CALL1 V-TURN-ON
RSTACK
?ELS5: CALL1 V-COUNT
RSTACK
.FUNCT V-SGIVE
CALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-SHAKE
CALL2 HACK-HACK,STR?271
RSTACK
.FUNCT V-SHAKE-WITH
EQUAL? PRSO,HANDS /?ELS5
PRINT RECOGNIZE
CRLF
RTRUE
?ELS5: FSET? PRSI,ACTORBIT /?ELS9
PRINTI "I don't think"
CALL ARTICLE,PRSI,TRUE-VALUE
PRINTR " even has hands."
?ELS9: CALL PERFORM,V?THANK,PRSI
RTRUE
.FUNCT V-SHOOT
PRINTR "You don't have a gun."
.FUNCT V-SHOW
PRINTI "I doubt"
CALL ARTICLE,PRSI,TRUE-VALUE
CALL2 PLURAL,PRSI
PRINTR " interested."
.FUNCT V-SHUT-OFF
CALL1 V-TURN-ON
RSTACK
.FUNCT V-SIT,VEHICLE
EQUAL? PRSO,ROOMS \?ELS5
CALL FIND-IN,HERE,FURNITUREBIT >VEHICLE
ZERO? VEHICLE /?ELS10
CALL PERFORM,V?BOARD,VEHICLE
RTRUE
?ELS10: CALL1 V-YELL
RSTACK
?ELS5: FSET? PRSO,VEHBIT \?ELS14
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS14: PRINTI "You can't sit on"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-SIT-NEXT-TO
FSET? PRSO,ACTORBIT \?ELS5
PRINTI "But"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " isn't sitting!"
?ELS5: CALL1 V-COUNT
RSTACK
.FUNCT V-SKIP
SET 'YES-NO-FLAG,3
CALL QUEUE,I-YES-NO,2
PRINTR "Wasn't that fun?"
.FUNCT V-SLEEP,WAKE-TIME
EQUAL? MODE,SLEEP-MODE \?ELS5
CALL1 SIM-SLEEP
RSTACK
?ELS5: ZERO? SIMULATING \?ELS7
CALL PERFORM,V?THROUGH,SLEEP-MODE
RTRUE
?ELS7: EQUAL? HERE,BEDROOM \?ELS9
LESS? STIME,1320 \?ELS14
GRTR? STIME,1019 \?ELS14
PRINTR "You never go to bed this early."
?ELS14: LESS? STIME,1020 \?ELS20
GRTR? STIME,720 \?ELS20
PRINTR "It's the middle of the afternoon!"
?ELS20: GRTR? STIME,540 \?ELS26
LESS? STIME,721 \?ELS26
PRINTR "The day's barely begun!"
?ELS26: GRTR? STIME,419 \?ELS32
LESS? STIME,541 \?ELS32
PRINTR "You've never been able to fall asleep once the sun has come up."
?ELS32: CALL2 HELD?,BABY
ZERO? STACK /?ELS38
PRINT MITCHELL-BACK-FIRST
CRLF
RTRUE
?ELS38: EQUAL? SYEAR,2041 \?ELS45
SET 'WAKE-TIME,486
JUMP ?CND43
?ELS45: MOVE MITCHELL,LOCAL-GLOBALS
SET 'MITCHELL-COUNTER,0
SET 'WAKE-TIME,421
?CND43: GRTR? STIME,1319 \?ELS50
SUB 1440,STIME
ADD STACK,WAKE-TIME >ELAPSED-TIME
JUMP ?CND48
?ELS50: SUB WAKE-TIME,STIME >ELAPSED-TIME
?CND48: FIRST? PLAYER \?ELS55
CALL ROB,PLAYER,BUREAU
PRINTI "You put everything on the bureau and"
JUMP ?CND53
?ELS55: IN? PLAYER,BED \?ELS59
PRINTI "You"
JUMP ?CND53
?ELS59: PRINTI "You climb into the bed and"
?CND53: PRINTI " snuggle under the covers. What seems like only moments later, "
SET 'LIGHT-LEVEL,3
MOVE PLAYER,BED
EQUAL? SYEAR,2041 \?ELS70
MOVE JILL,HERE
SET 'JILL-COUNTER,1
PRINTI "Jill is shaking you gently, cooing, ""Perry, hon, wake up."" Diffuse sunlight seeps"
JUMP ?CND68
?ELS70: ZERO? MITCHELL-RAID-FLAG /?ELS77
PRINTI "you bolt upright in bed, screaming Jill's name, an unanswered call. T"
JUMP ?CND75
?ELS77: SET 'JILL-COUNTER,0
EQUAL? SYEAR,2051 \?CND83
MOVE JILL,BEDROOM
?CND83: FCLEAR JILL-BOOK,NDESCBIT
PRINTI "a familiar sound stirs you to wakefulness: t"
?CND75: CALL1 END-CURFEW
PRINTI " Gray morning light shines"
?CND68: PRINTR " through the bedroom window."
?ELS9: EQUAL? HERE,JAIL-CELL \?ELS93
GRTR? STIME,415 \?ELS98
PRINTR "You try to sleep, and fail."
?ELS98: RANDOM 30
ADD 110,STACK >ELAPSED-TIME
PRINTR "You doze off for a couple of hours."
?ELS93: PRINTR "There's no bed here."
.FUNCT END-CURFEW
CALL2 SCORE,116
PRINTI "he sirens hailing the end of curfew are blaring"
FSET? HERE,OUTSIDEBIT /?CND3
PRINTI " outside"
?CND3: PRINTI "."
RTRUE
.FUNCT V-SMELL
ZERO? PRSO \?ELS5
EQUAL? HERE,FOODVILLE-2 \?ELS10
EQUAL? SYEAR,2081 \?ELS10
CALL PERFORM,V?SMELL,SUPERMARKET
RTRUE
?ELS10: EQUAL? HERE,WICKER-AND-RIVER \?ELS14
EQUAL? SYEAR,2071 /?ELS14
CALL PERFORM,V?SMELL,STAIRS
RTRUE
?ELS14: EQUAL? HERE,POOL-HALL \?ELS18
PRINT TOBACCO-ODOR
CRLF
RTRUE
?ELS18: EQUAL? HERE,MAIN-LIBRARY \?ELS22
EQUAL? SYEAR,2071 \?ELS22
CALL PERFORM,V?SMELL,MAIN-LIBRARY-OBJECT
RTRUE
?ELS22: EQUAL? HERE,BOOKSTORE \?ELS26
CALL PERFORM,V?SMELL,BOOKSTORE-OBJECT
RTRUE
?ELS26: EQUAL? HERE,CINEMA \?ELS28
EQUAL? SYEAR,2071 \?ELS28
CALL PERFORM,V?SMELL,MOVIE-THEATRE-OBJECT
RTRUE
?ELS28: EQUAL? HERE,BURGER-MEISTER \?ELS32
EQUAL? SYEAR,2071 \?ELS32
CALL PERFORM,V?SMELL,BAR-OBJECT
RTRUE
?ELS32: EQUAL? HERE,DORM \?ELS36
EQUAL? SYEAR,2041,2051 \?ELS36
CALL PERFORM,V?SMELL,MINDEX
RTRUE
?ELS36: EQUAL? HERE,AQUARIUM \?ELS40
EQUAL? SYEAR,2071 \?ELS40
CALL PERFORM,V?SMELL,AQUARIUM-OBJECT
RTRUE
?ELS40: EQUAL? HERE,TENEMENT-2,TENEMENT-3 \?ELS44
EQUAL? SYEAR,2071 \?ELS44
CALL PERFORM,V?SMELL,TENEMENT-OBJECT
RTRUE
?ELS44: PRINTR "You smell nothing unusual."
?ELS5: FSET? PRSO,PLURALBIT \?ELS55
PRINTI "They smell"
JUMP ?CND53
?ELS55: PRINTI "It smells"
?CND53: PRINTI " just like"
CALL2 ARTICLE,PRSO
PRINTR "."
.FUNCT V-SMILE
PRINTR "How nice."
.FUNCT V-SPUT-ON
CALL PERFORM,V?PUT-ON,PRSI,PRSO
RTRUE
.FUNCT V-SQUEEZE
CALL1 V-YELL
RSTACK
.FUNCT V-SSHOOT
CALL PERFORM,V?SHOOT,PRSI,PRSO
RTRUE
.FUNCT V-SSHOW
CALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
.FUNCT V-SSHUT-OFF
CALL PERFORM,V?SHUT-OFF,PRSI,PRSO
RTRUE
.FUNCT V-STAND
EQUAL? HERE,SKYCAB \?ELS5
PRINTR "There's not enough headroom."
?ELS5: LOC PLAYER
FSET? STACK,VEHBIT \?ELS9
LOC PLAYER
EQUAL? STACK,SHOWER /?ELS9
LOC PLAYER
CALL PERFORM,V?DISEMBARK,STACK
RTRUE
?ELS9: ZERO? PRSO /?ELS13
EQUAL? PRSO,ROOMS /?ELS13
CALL1 V-COUNT
RSTACK
?ELS13: PRINTR "You are already standing."
.FUNCT V-STAND-ON
CALL1 V-YELL
RSTACK
.FUNCT V-STATUS
CALL1 V-TURN-ON
RSTACK
.FUNCT V-STURN-ON
CALL PERFORM,V?TURN-ON,PRSI,PRSO
RTRUE
.FUNCT V-SWIM
ZERO? PRSO /?ELS5
PRINTI "Not even a fish could swim in"
CALL2 ARTICLE,PRSO
PRINTR "."
?ELS5: CALL GLOBAL-IN?,RIVER,HERE
ZERO? STACK /?ELS12
CALL PERFORM,V?SWIM,RIVER
RTRUE
?ELS12: CALL GLOBAL-IN?,RESERVOIR,HERE
ZERO? STACK /?ELS14
CALL PERFORM,V?SWIM,RESERVOIR
RTRUE
?ELS14: EQUAL? HERE,KENNEDY-PARK \?ELS16
EQUAL? SYEAR,2061 /?ELS16
CALL PERFORM,V?SWIM,WATERPOOL
RTRUE
?ELS16: EQUAL? HERE,AQUARIUM \?ELS20
CALL PERFORM,V?SWIM,TANK
RTRUE
?ELS20: EQUAL? HERE,HALLEY-PARK-WEST \?ELS22
CALL PERFORM,V?SWIM,DUCK-POND
RTRUE
?ELS22: PRINTR "There's not a swimming hole in sight."
.FUNCT PRE-TAKE
CALL1 LOC-CLOSED
ZERO? STACK \TRUE
IN? PRSO,PLAYER /?THN8
CALL2 HELD?,PRSO
ZERO? STACK /?ELS7
FSET? PRSO,TAKEBIT /?ELS7
?THN8: FSET? PRSO,WORNBIT \?ELS16
PRINTR "You are already wearing it."
?ELS16: PRINTR "You already have it."
?ELS7: ZERO? PRSI /?ELS24
EQUAL? PRSO,ME \?ELS30
CALL PERFORM,V?DROP,PRSI
RTRUE
?ELS30: LOC PRSO
EQUAL? PRSI,STACK /?ELS32
PRINTI "But"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTI " isn't "
FSET? PRSI,ACTORBIT \?ELS39
PRINTI "being held by"
JUMP ?CND37
?ELS39: FSET? PRSI,SURFACEBIT \?ELS43
PRINTI "on"
JUMP ?CND37
?ELS43: PRINTI "in"
?CND37: CALL ARTICLE,PRSI,TRUE-VALUE
PRINTR "."
?ELS32: SET 'PRSI,FALSE-VALUE
RFALSE
?ELS24: LOC PLAYER
EQUAL? PRSO,STACK \FALSE
EQUAL? PRSO,RESTAURANT-TABLE,DINETTE-SET,SHOWER /FALSE
PRINTR "You are in it!"
.FUNCT V-TAKE
CALL1 ITAKE
EQUAL? STACK,TRUE-VALUE \FALSE
PRINTR "Taken."
.FUNCT V-TAKE-OFF
FSET? PRSO,WORNBIT \?ELS5
FCLEAR PRSO,WORNBIT
EQUAL? PRSO,HEADSET \?CND6
MOVE HEADSET,HERE
FSET HEADSET,NDESCBIT
?CND6: PRINTI "Okay, you're no longer wearing"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
?ELS5: LOC PLAYER
EQUAL? PRSO,STACK /?THN15
EQUAL? PRSO,BROWN-TUBECAR-OBJECT,RED-TUBECAR-OBJECT \?ELS14
?THN15: CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
?ELS14: FSET? PRSO,VEHBIT /?THN19
FSET? PRSO,ACTORBIT \?ELS18
?THN19: PRINTI "You're not on"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "!"
?ELS18: PRINTI "You aren't wearing"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "!"
.FUNCT V-TELL
FSET? PRSO,ACTORBIT \?ELS5
ZERO? P-CONT /?ELS10
SET 'ELAPSED-TIME,0
SET 'WINNER,PRSO
LOC WINNER >HERE
RTRUE
?ELS10: EQUAL? PRSO,JILL \?ELS13
ZERO? JILL-COUNTER \?ELS13
CALL PERFORM,V?KISS,JILL
RTRUE
?ELS13: EQUAL? HERE,INTERFACE-ROOM \?ELS17
PRINT CONTACT
CRLF
RTRUE
?ELS17: PRINTI "Hmmm..."
CALL ARTICLE,PRSO,TRUE-VALUE
FSET? PRSO,PLURALBIT \?ELS26
PRINTI " look"
JUMP ?CND24
?ELS26: PRINTI " looks"
?CND24: PRINTR " at you expectantly, as if you seemed to be about to talk."
?ELS5: PRINTI "You can't talk to"
CALL2 ARTICLE,PRSO
PRINTI "!"
CRLF
CALL1 CLEAR-BUF
RSTACK
.FUNCT V-TELL-ABOUT
EQUAL? PRSO,ME \?ELS5
CALL PERFORM,V?WHAT,PRSI
RTRUE
?ELS5: PRINTI "It doesn't look as though"
CALL ARTICLE,PRSO,TRUE-VALUE
CALL2 PLURAL,PRSO
PRINTR " interested."
.FUNCT V-THANK
FSET? PRSO,ACTORBIT \?ELS5
PRINTI "You do so, but"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " seems less than overjoyed."
?ELS5: CALL1 V-LOCK
RSTACK
.FUNCT V-THROUGH
FSET? PRSO,DOORBIT \?ELS5
CALL2 OTHER-SIDE,PRSO
CALL2 DO-WALK,STACK
RTRUE
?ELS5: FSET? PRSO,VEHBIT \?ELS7
CALL PERFORM,V?BOARD,PRSO
RTRUE
?ELS7: FSET? PRSO,TAKEBIT /?ELS9
ZERO? SIMULATING /?ELS14
PRINTI "You hit your head against"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " as you attempt this feat."
?ELS14: CALL2 DO-WALK,P?NORTH
RSTACK
?ELS9: IN? PRSO,WINNER \?ELS23
CALL PERFORM,V?EXAMINE,HEAD
RTRUE
?ELS23: CALL1 V-LOCK
RSTACK
.FUNCT PRE-THROW
CALL1 IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-THROW
MOVE PRSO,HERE
PRINTR "You missed."
.FUNCT V-THROW-OFF
PRINTR "You can't do that!"
.FUNCT V-TIE
PRINTI "You can't tie"
CALL2 ARTICLE,PRSO
PRINTR "."
.FUNCT V-TIME
SET 'ELAPSED-TIME,0
PRINTI "It is "
ZERO? SIMULATING /?ELS5
CALL2 TIME-PRINT,STIME
JUMP ?CND3
?ELS5: CALL2 TIME-PRINT,TIME
?CND3: PRINTR "."
.FUNCT V-TOUCH
CALL1 LOC-CLOSED
ZERO? STACK \TRUE
CALL2 HACK-HACK,STR?272
RSTACK
.FUNCT V-TRANSMIT
PRINTR "Only a transmitter can transmit things."
.FUNCT V-TURN
EQUAL? PRSO,ROOMS,ME \?ELS5
CALL1 V-SKIP
RSTACK
?ELS5: PRINTR "This has no effect."
.FUNCT V-TURN-ON
EQUAL? MODE,INTERFACE-MODE \?ELS5
PRINTR "[Perhaps you meant to address one of the Interface devices.]"
?ELS5: PRINTI "[This syntax is useful only for communicating in "
PRINTD INTERFACE-MODE
PRINTR ".]"
.FUNCT V-UNLOCK
CALL1 V-LOCK
RSTACK
.FUNCT V-UNTIE
CALL1 V-LOCK
RSTACK
.FUNCT V-WAIT,NUM=10,X=0,SHORT-WAIT=0
ZERO? NUM \?CND1
SET 'ELAPSED-TIME,0
PRINTR "Time doesn't pass..."
?CND1: PRINTI "Time passes..."
CRLF
LESS? NUM,11 \?CND8
SET 'SHORT-WAIT,TRUE-VALUE
?CND8:
?PRG11: CALL1 CLOCKER >X
DLESS? 'NUM,1 /?THN16
EQUAL? HERE,NEWS \?CND13
?THN16: SET 'X,TRUE-VALUE
?CND13: EQUAL? HERE,SIMONS,THE-COACHMAN \?CND18
EQUAL? MEAL-STATUS,1 \?CND18
EQUAL? SYEAR,2081 /?CND18
SET 'X,TRUE-VALUE
?CND18: CALL2 INCREMENT-TIME,1
ZERO? X \?REP12
ZERO? STOP-WAIT /?ELS25
JUMP ?REP12
?ELS25: ZERO? SHORT-WAIT \?THN30
ZERO? SIMULATING /?ELS33
MOD STIME,10
ZERO? STACK /?THN30
?ELS33: ZERO? SIMULATING \?PRG11
MOD TIME,10
ZERO? STACK \?PRG11
?THN30: CALL1 STATUS-LINE
JUMP ?PRG11
?REP12: SET 'CLOCK-WAIT,TRUE-VALUE
RETURN CLOCK-WAIT
.FUNCT V-WAIT-FOR
EQUAL? PRSO,INTNUM \?ELS5
GRTR? P-NUMBER,120 \?ELS10
PRINTR "That's too long to wait."
?ELS10: CALL2 V-WAIT,P-NUMBER
RSTACK
?ELS5: EQUAL? PRSO,NOON,DUSK,DAWN /?THN17
EQUAL? PRSO,MIDNIGHT \?ELS16
?THN17: CALL PERFORM,V?WAIT-UNTIL,PRSO
RTRUE
?ELS16: CALL2 VISIBLE?,PRSO
ZERO? STACK /?ELS20
CALL1 RIGHT-HERE
RSTACK
?ELS20: PRINTR "You might be waiting quite a while."
.FUNCT V-WAIT-UNTIL,TIM=0,NAMED-TIME=0,OLD-P-NUMBER
SET 'OLD-P-NUMBER,P-NUMBER
ZERO? SIMULATING /?ELS3
SET 'TIM,STIME
JUMP ?CND1
?ELS3: SET 'TIM,TIME
?CND1: EQUAL? PRSO,NOON \?ELS9
SET 'P-NUMBER,720
SET 'NAMED-TIME,TRUE-VALUE
JUMP ?CND7
?ELS9: EQUAL? PRSO,MIDNIGHT \?ELS11
SET 'P-NUMBER,1440
SET 'NAMED-TIME,TRUE-VALUE
JUMP ?CND7
?ELS11: EQUAL? PRSO,DAWN \?ELS13
ZERO? SIMULATING /?ELS16
MUL SMONTH,20
SUB STACK,20
SUB 455,STACK >P-NUMBER
JUMP ?CND14
?ELS16: SET 'P-NUMBER,350
?CND14: SET 'NAMED-TIME,TRUE-VALUE
JUMP ?CND7
?ELS13: EQUAL? PRSO,DUSK \?CND7
ZERO? SIMULATING /?ELS24
MUL SMONTH,20
SUB STACK,20
SUB 1028,STACK >P-NUMBER
JUMP ?CND22
?ELS24: SET 'P-NUMBER,1075
?CND22: SET 'NAMED-TIME,TRUE-VALUE
?CND7: ZERO? NAMED-TIME /?ELS32
SET 'PRSO,INTNUM
GRTR? P-NUMBER,TIM \?ELS36
SUB P-NUMBER,TIM >P-NUMBER
JUMP ?CND34
?ELS36: SUB 1440,TIM
ADD P-NUMBER,STACK >P-NUMBER
?CND34: CALL1 V-WAIT-FOR
RSTACK
?ELS32: EQUAL? PRSO,INTNUM \?ELS40
LESS? P-NUMBER,13 \?CND41
MUL P-NUMBER,60 >P-NUMBER
?CND41: GRTR? TIM,720 \?CND44
SUB TIM,720 >TIM
?CND44: GRTR? P-NUMBER,TIM \?ELS49
SUB P-NUMBER,TIM >P-NUMBER
JUMP ?CND47
?ELS49: SUB 720,TIM
ADD P-NUMBER,STACK >P-NUMBER
?CND47: CALL1 V-WAIT-FOR
SET 'P-NUMBER,OLD-P-NUMBER
RETURN P-NUMBER
?ELS40: PRINTR "Try waiting until a specific time, as in WAIT UNTIL 3:45."
.FUNCT V-WALK,PT,PTS,STR,OBJ,RM
ZERO? PRSO \?ELS5
CALL1 V-WALK-AROUND
RSTACK
?ELS5: ZERO? P-WALK-DIR \?ELS7
CALL PERFORM,V?WALK-TO,PRSO
RTRUE
?ELS7: GETPT HERE,PRSO >PT
ZERO? PT /?ELS9
PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?ELS14
GET PT,REXIT
CALL2 GOTO,STACK
RSTACK
?ELS14: EQUAL? PTS,NEXIT \?ELS16
GET PT,NEXITSTR
PRINT STACK
CRLF
RETURN 2
?ELS16: EQUAL? PTS,FEXIT \?ELS22
GET PT,FEXITFCN
CALL STACK >RM
ZERO? RM /?ELS27
CALL2 GOTO,RM
RSTACK
?ELS27: RETURN 2
?ELS22: EQUAL? PTS,CEXIT \?ELS33
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?ELS38
GET PT,REXIT
CALL2 GOTO,STACK
RSTACK
?ELS38: GET PT,CEXITSTR >STR
ZERO? STR /?ELS40
PRINT STR
CRLF
RETURN 2
?ELS40: PRINT CANT-GO
CRLF
RETURN 2
?ELS33: EQUAL? PTS,DEXIT \FALSE
GET PT,DEXITOBJ >OBJ
FSET? OBJ,OPENBIT \?ELS57
GET PT,REXIT
CALL2 GOTO,STACK
RSTACK
?ELS57: GET PT,DEXITSTR >STR
ZERO? STR /?ELS59
PRINT STR
CRLF
SET 'P-IT-OBJECT,OBJ
RETURN 2
?ELS59: PRINTI "The "
CALL2 DPRINT,OBJ
PRINTI " is closed."
CRLF
SET 'P-IT-OBJECT,OBJ
RETURN 2
?ELS9: EQUAL? PRSO,P?IN,P?OUT \?ELS74
CALL1 V-WALK-AROUND
RETURN 2
?ELS74: ZERO? SIMULATING /?ELS76
PRINT CANT-GO
CRLF
RETURN 2
?ELS76: SET 'YES-NO-FLAG,4
CALL QUEUE,I-YES-NO,2
PRINTI "You're an immobile computer, remember?"
CRLF
RETURN 2
.FUNCT V-WALK-AROUND
SET 'YES-NO-FLAG,5
CALL QUEUE,I-YES-NO,2
PRINTR "Did you have any particular direction in mind?"
.FUNCT V-WALK-OUT
FSET? PRSO,DOORBIT \?ELS5
CALL PERFORM,V?THROUGH,PRSO
RTRUE
?ELS5: CALL PERFORM,V?DISEMBARK,PRSO
RTRUE
.FUNCT V-WALK-TO
IN? PRSO,HERE /?THN6
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?ELS5
?THN6: FSET? PRSO,ACTORBIT \?ELS10
EQUAL? HERE,INTERFACE-ROOM /?ELS10
EQUAL? PRSO,JILL \?ELS15
PRINTI "She"
JUMP ?CND8
?ELS15: PRINTI "He"
JUMP ?CND8
?ELS10: PRINTI "It"
?CND8: PRINTR "'s here!"
?ELS5: CALL1 V-WALK-AROUND
RSTACK
.FUNCT V-WALK-UNDER
PRINTR "That would be quite a trick."
.FUNCT V-WASH
FSET? PRSO,PLURALBIT \?ELS3
PRINTI "They are"
JUMP ?CND1
?ELS3: PRINTI "It is"
?CND1: PRINTR "n't dirty."
.FUNCT V-WAVE
CALL1 V-LOCK
RSTACK
.FUNCT V-WAVE-AT
ZERO? PRSO \?ELS5
CALL1 V-SMILE
RSTACK
?ELS5: PRINTI "Despite your friendly nature,"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR " isn't likely to respond."
.FUNCT V-WEAR
FSET? PRSO,WEARBIT /?ELS5
PRINTI "You can't wear"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
?ELS5: FSET? PRSO,WORNBIT \?ELS11
PRINTI "You're already wearing"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "!"
?ELS11: MOVE PRSO,PLAYER
FSET PRSO,WORNBIT
EQUAL? PRSO,HEADSET \?CND18
FCLEAR HEADSET,NDESCBIT
?CND18: PRINTI "You are now wearing"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
.FUNCT V-WHAT
PRINTR "Good question. Try asking someone."
.FUNCT V-WHERE
CALL2 V-FIND,TRUE-VALUE
RSTACK
.FUNCT V-WHO
FSET? PRSO,ACTORBIT \?ELS5
CALL PERFORM,V?WHAT,PRSO
RTRUE
?ELS5: PRINTR "That's not a person!"
.FUNCT V-WNNF
EQUAL? PART-FLAG,4 \?ELS5
PRINT NOT-ACTIVE
CRLF
RTRUE
?ELS5: CALL1 PSYCH-CHECK
ZERO? STACK /?ELS9
RETURN 2
?ELS9: EQUAL? HERE,NEWS \?ELS13
PRINT LOOK-AROUND
CRLF
RTRUE
?ELS13: EQUAL? MODE,COMM-MODE \?ELS17
MOVE CURRENT-FEED,NEWS
CALL2 GOTO,NEWS
RSTACK
?ELS17: PRINT ENTER-COMM-MODE
CRLF
RTRUE
.FUNCT V-WRITE
PRINTI "You can't write on"
CALL2 ARTICLE,PRSO
PRINTR "!"
.FUNCT V-YELL
CALL2 PICK-ONE,WASTES
PRINT STACK
CRLF
CALL1 CLEAR-BUF
RSTACK
.FUNCT I-YES-NO
SET 'YES-NO-FLAG,0
RFALSE
.FUNCT V-YES
EQUAL? HERE,SIMONS,THE-COACHMAN \?ELS5
EQUAL? SYEAR,2081 /?ELS5
EQUAL? MEAL-STATUS,1 \?ELS5
MOVE PLAYER,RESTAURANT-TABLE
SET 'MEAL-STATUS,3
CALL QUEUE,I-MEAL,12
SET 'WAITER-COUNTER,0
PUTP SPEAR-CARRIER,P?SDESC,STR?53
PRINTR "The maitre d' shows you to a small table at the back of the restaurant."
?ELS5: GRTR? GRIMWOLD-COUNTER,0 \?ELS11
CALL1 BLOT-ACTION
RSTACK
?ELS11: EQUAL? YES-NO-FLAG,1,2,3 /?THN14
EQUAL? YES-NO-FLAG,4,5 \?ELS13
?THN14: PRINTR "[That was just a rhetorical question.]"
?ELS13: EQUAL? YES-NO-FLAG,6 \?ELS19
PRINTR "Perelman nods."
?ELS19: EQUAL? YES-NO-FLAG,7 \?ELS23
EQUAL? SYEAR,2041 \?ELS28
PRINTR """I knew things would turn around!"""
?ELS28: PRINTI """It's about time"
PRINT CHANGE-AGENTS
CRLF
RTRUE
?ELS23: EQUAL? YES-NO-FLAG,8 \?ELS36
CALL PERFORM,V?TELL,SABOTEURS
RTRUE
?ELS36: EQUAL? YES-NO-FLAG,9,11 \?ELS38
PRINTR "Jill smiles."
?ELS38: EQUAL? YES-NO-FLAG,10 \?ELS42
PRINTR "Jill threatens to pound you."
?ELS42: EQUAL? YES-NO-FLAG,12 \?ELS46
EQUAL? HERE,HOSPITAL \?ELS51
PRINTI "A few quick questions by the nurse reveal that you need no hospital attention. She tells you so, "
EQUAL? SYEAR,2061,2071 \?CND54
PRINTI "adding haughtily that you couldn't afford their services anyway, "
?CND54: PRINTI "and summons an orderly to lead you out."
CRLF
CRLF
SET 'FOLLOW-FLAG,13
ADD ELAPSED-TIME,2
CALL QUEUE,I-UNFOLLOW,STACK
PUTP SPEAR-CARRIER,P?SDESC,STR?263
CALL2 GOTO,ELM-AND-KENNEDY
PRINTR "The orderly returns to the hospital."
?ELS51: EQUAL? HERE,POLICE-STATION \?ELS64
CALL PERFORM,V?TELL-ABOUT,POLICEMAN,CRIME
RTRUE
?ELS64: EQUAL? HERE,EZZIS-BAR,BAR,BURGER-MEISTER \?ELS66
PRINTR """Order something or get outta here."""
?ELS66: EQUAL? HERE,BANK \?ELS70
PRINTR """I'll need your credit card if you want to make a transaction..."""
?ELS70: EQUAL? HERE,BASE-GATE \?ELS74
PRINTR """Well you can't go on, and you can't stay here, so you might as well turn around and get lost."""
?ELS74: EQUAL? SYEAR,2041 \?ELS83
PRINTR """Feel free to look around..."""
?ELS83: EQUAL? SYEAR,2071 \?ELS87
PRINTR """Buy something or scram."""
?ELS87: PRINTR """If you wanna buy something, say so."""
?ELS46: PRINTR "You sound rather positive."
.FUNCT ITAKE,VB=1,CNT,OBJ,?TMP1
FSET? PRSO,TAKEBIT /?ELS3
ZERO? VB /?CND4
CALL1 V-LOCK
?CND4: RETURN 2
?ELS3: LOC PRSO
IN? STACK,WINNER /?CND1
CALL2 WEIGHT,PRSO >?TMP1
CALL2 WEIGHT,WINNER
ADD ?TMP1,STACK
GRTR? STACK,100 \?ELS14
ZERO? VB /?CND15
PRINTI "Your load is too heavy."
CRLF
?CND15: RETURN 2
?ELS14: CALL2 CCOUNT,WINNER >CNT
GRTR? CNT,7 \?CND1
ZERO? VB /?CND25
PRINTI "You're holding too many things already."
CRLF
?CND25: RETURN 2
?CND1: MOVE PRSO,PLAYER
FSET PRSO,TOUCHBIT
RTRUE
.FUNCT IDROP
EQUAL? PRSO,HEAD,HANDS \?ELS5
EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE
CALL1 V-COUNT
RSTACK
?ELS5: EQUAL? PRSO,CLOTHES \?ELS14
CALL PERFORM,V?TAKE-OFF,CLOTHES
RTRUE
?ELS14: EQUAL? PRSA,V?GIVE \?ELS16
EQUAL? PRSO,BATHROOM-OBJECT /FALSE
?ELS16: CALL2 HELD?,PRSO
ZERO? STACK \?ELS20
PRINTI "That's easy for you to say since you don't even have"
CALL ARTICLE,PRSO,TRUE-VALUE
PRINTR "."
?ELS20: IN? PRSO,WINNER /?ELS26
LOC PRSO
FSET? STACK,CONTBIT \?ELS26
LOC PRSO
FSET? STACK,OPENBIT /?ELS26
PRINTI "Impossible because"
LOC PRSO
CALL ARTICLE,STACK,TRUE-VALUE
PRINTR " is closed."
?ELS26: FSET? PRSO,WORNBIT \FALSE
PRINTR "You'll have to remove it first."
.FUNCT CCOUNT,OBJ,CNT=0,X
FIRST? OBJ >X \?CND1
?PRG4: FSET? X,WORNBIT /?CND6
INC 'CNT
?CND6: NEXT? X >X /?PRG4
?CND1: RETURN CNT
.FUNCT WEIGHT,OBJ,CONT,WT=0
FIRST? OBJ >CONT \?CND1
?PRG4: EQUAL? OBJ,PLAYER \?ELS8
FSET? CONT,WORNBIT \?ELS8
INC 'WT
JUMP ?CND6
?ELS8: EQUAL? OBJ,PLAYER \?ELS12
LOC CONT
FSET? STACK,WORNBIT \?ELS12
INC 'WT
JUMP ?CND6
?ELS12: CALL2 WEIGHT,CONT
ADD WT,STACK >WT
?CND6: NEXT? CONT >CONT /?PRG4
?CND1: GETP OBJ,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT DESCRIBE-ROOM,LOOK?=0,PRINT-DESC=0,STR,AV
ZERO? LOOK? \?THN4
EQUAL? VERBOSITY,2 \?CND1
?THN4: SET 'PRINT-DESC,TRUE-VALUE
?CND1: FSET? HERE,TOUCHBIT /?CND6
FSET HERE,TOUCHBIT
SET 'PRINT-DESC,TRUE-VALUE
?CND6: IN? HERE,ROOMS \?CND9
CALL2 DPRINT,HERE
?CND9: ZERO? LOOK? \?THN17
EQUAL? VERBOSITY,1,2 \?CND14
?THN17: LOC PLAYER
FSET? STACK,VEHBIT \?CND19
LOC PLAYER
EQUAL? STACK,GLOBAL-TABLE,RESTAURANT-TABLE,DINETTE-SET \?ELS24
PRINTI ", seated at a table"
JUMP ?CND19
?ELS24: LOC PLAYER
FSET? STACK,FURNITUREBIT \?ELS28
PRINTI ", on"
LOC PLAYER
CALL2 ARTICLE,STACK
JUMP ?CND19
?ELS28: PRINTI ", in"
LOC PLAYER
CALL2 ARTICLE,STACK
?CND19: ZERO? PRINT-DESC /?ELS37
GETPT HERE,P?LDESC
ZERO? STACK /?ELS37
CRLF
GETP HERE,P?LDESC
PRINT STACK
CALL1 CROWD-DESC
JUMP ?CND14
?ELS37: ZERO? PRINT-DESC /?CND14
CRLF
GETP HERE,P?ACTION
CALL STACK,M-LOOK
CALL1 CROWD-DESC
?CND14: CRLF
RTRUE
.FUNCT CROWD-DESC
FSET? HERE,STREETBIT \FALSE
EQUAL? HERE,AIRPORT-ENTRANCE /FALSE
EQUAL? HERE,BASE-GATE /FALSE
EQUAL? HERE,ROCKVIL-UNIVERSITY /FALSE
EQUAL? HERE,INTERCHANGE /FALSE
FSET? HERE,BADAREABIT /FALSE
EQUAL? SYEAR,2081 /FALSE
ZERO? DESCRIBE-CROWDS /FALSE
SET 'DESCRIBE-CROWDS,FALSE-VALUE
CALL QUEUE,I-DESCRIBE-CROWDS,90
GRTR? STIME,720 \?ELS12
LESS? STIME,810 \?ELS12
PRINTI " The street is bustling with lunchtime crowds."
RTRUE
?ELS12: EQUAL? LIGHT-LEVEL,3 \?ELS18
PRINTI " The sidewalks and street are crowded with people."
RTRUE
?ELS18: EQUAL? LIGHT-LEVEL,2 \?ELS22
LESS? STIME,720 \?ELS27
PRINTI " The street is getting more crowded as the new day begins."
RTRUE
?ELS27: PRINTI " The number of people around seems to be diminishing."
RTRUE
?ELS22: EQUAL? LIGHT-LEVEL,1 \?ELS35
LESS? STIME,720 \?ELS40
PRINTI " The city is still fairly quiet, but there are more people around now than during the dead of night."
RTRUE
?ELS40: PRINTI " The midday crowds have almost completely dispersed; the street is much less busy now."
RTRUE
?ELS35: EQUAL? SYEAR,2041 /?THN49
GRTR? STIME,720 \?ELS48
LESS? STIME,1260 \?ELS48
?THN49: PRINTI " The street is dark and almost completely deserted. Only a few people are visible, hurrying to destinations unknown to you."
RTRUE
?ELS48: PRINTI " The street is totally deserted."
RTRUE
.FUNCT I-DESCRIBE-CROWDS
SET 'DESCRIBE-CROWDS,TRUE-VALUE
RFALSE
.FUNCT DESCRIBE-OBJECTS,V?=0
FIRST? HERE \FALSE
ZERO? V? /?ORP9
PUSH V?
JUMP ?THN6
?ORP9: EQUAL? VERBOSITY,2 /?ORT8
PUSH 0
JUMP ?THN6
?ORT8: PUSH 1
?THN6: POP 'V?
CALL PRINT-CONT,HERE,V?,-1
RSTACK
.FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV
ZERO? LEVEL \?ELS3
GETP OBJ,P?DESCFCN
CALL STACK,M-OBJDESC
ZERO? STACK \TRUE
?ELS3: ZERO? LEVEL \?ELS7
FSET? OBJ,TOUCHBIT /?ELS13
GETP OBJ,P?FDESC >STR
ZERO? STR \?THN10
?ELS13: GETP OBJ,P?LDESC >STR
ZERO? STR /?ELS7
?THN10: PRINT STR
JUMP ?CND1
?ELS7: ZERO? LEVEL \?ELS17
PRINTI "There"
CALL2 PLURAL,OBJ
CALL2 ARTICLE,OBJ
PRINTI " here."
JUMP ?CND1
?ELS17: GET INDENTS,LEVEL
PRINT STACK
FSET? OBJ,NARTICLEBIT \?ELS28
JUMP ?CND26
?ELS28: FSET? OBJ,VOWELBIT \?ELS30
PRINTI "an "
JUMP ?CND26
?ELS30: PRINTI "a "
?CND26: CALL2 DPRINT,OBJ
FSET? OBJ,WORNBIT \?CND1
PRINTI " (being worn)"
?CND1: CRLF
CALL2 SEE-INSIDE?,OBJ
ZERO? STACK /FALSE
FIRST? OBJ \FALSE
CALL PRINT-CONT,OBJ,V?,LEVEL
RSTACK
.FUNCT PRINT-CONT,OBJ,V?=0,LEVEL=0,Y,1ST?=1,AV=0,STR,PV?=0,INV?=0
FIRST? OBJ >Y \TRUE
LOC WINNER
FSET? STACK,VEHBIT \?CND4
LOC WINNER >AV
?CND4: LOC OBJ
EQUAL? PLAYER,OBJ,STACK \?ELS9
SET 'INV?,TRUE-VALUE
JUMP ?CND7
?ELS9:
?PRG12: ZERO? Y \?ELS16
JUMP ?CND7
?ELS16: EQUAL? Y,AV \?ELS18
SET 'PV?,TRUE-VALUE
JUMP ?CND14
?ELS18: EQUAL? Y,WINNER \?ELS20
JUMP ?CND14
?ELS20: FSET? Y,INVISIBLE /?CND14
FSET? Y,TOUCHBIT /?CND14
GETP Y,P?FDESC >STR
ZERO? STR /?CND14
FSET? Y,NDESCBIT /?CND25
PRINT STR
CRLF
?CND25: CALL2 SEE-INSIDE?,Y
ZERO? STACK /?CND14
LOC Y
GETP STACK,P?DESCFCN
ZERO? STACK \?CND14
FIRST? Y \?CND14
CALL PRINT-CONT,Y,V?,0
?CND14: NEXT? Y >Y /?KLU72
?KLU72: JUMP ?PRG12
?CND7: FIRST? OBJ >Y /?KLU73
?KLU73:
?PRG35: ZERO? Y \?ELS39
ZERO? PV? /?CND40
ZERO? AV /?CND40
FIRST? AV \?CND40
CALL PRINT-CONT,AV,V?,LEVEL
?CND40: ZERO? 1ST? \?PRD45
PUSH 1
RETURN STACK
?PRD45: PUSH 0
RETURN STACK
?ELS39: EQUAL? Y,AV,PLAYER \?ELS48
JUMP ?CND37
?ELS48: FSET? Y,INVISIBLE /?CND37
ZERO? INV? \?THN53
FSET? Y,TOUCHBIT /?THN53
GETP Y,P?FDESC
ZERO? STACK \?CND37
?THN53: FSET? Y,NDESCBIT /?ELS57
ZERO? 1ST? /?CND58
CALL FIRSTER,OBJ,LEVEL
ZERO? STACK /?CND62
LESS? LEVEL,0 \?CND62
SET 'LEVEL,0
?CND62: INC 'LEVEL
SET '1ST?,FALSE-VALUE
?CND58: CALL DESCRIBE-OBJECT,Y,V?,LEVEL
JUMP ?CND37
?ELS57: FIRST? Y \?CND37
CALL2 SEE-INSIDE?,Y
ZERO? STACK /?CND37
CALL PRINT-CONT,Y,V?,LEVEL
?CND37: NEXT? Y >Y /?KLU74
?KLU74: JUMP ?PRG35
.FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1,IT?=0,TWO?=0
FIRST? OBJ >F \FALSE
?PRG6: NEXT? F >N /?KLU36
?KLU36: ZERO? 1ST? /?ELS10
SET '1ST?,FALSE-VALUE
JUMP ?CND8
?ELS10: PRINTI ","
ZERO? N \?CND8
PRINTI " and"
?CND8: CALL2 ARTICLE,F
ZERO? IT? \?ELS23
ZERO? TWO? \?ELS23
SET 'IT?,F
JUMP ?CND21
?ELS23: SET 'TWO?,TRUE-VALUE
SET 'IT?,FALSE-VALUE
?CND21: SET 'F,N
ZERO? F \?PRG6
ZERO? IT? /TRUE
ZERO? TWO? \TRUE
SET 'P-IT-OBJECT,IT?
RTRUE
.FUNCT FIRSTER,OBJ,LEVEL
EQUAL? OBJ,WINNER /TRUE
IN? OBJ,ROOMS /FALSE
GRTR? LEVEL,0 \?CND8
GET INDENTS,LEVEL
PRINT STACK
?CND8: FSET? OBJ,SURFACEBIT \?ELS17
PRINTI "Sitting on"
CALL ARTICLE,OBJ,TRUE-VALUE
PRINTR " is:"
?ELS17: FSET? OBJ,ACTORBIT \?ELS23
PRINT IT-LOOKS-LIKE
CALL ARTICLE,OBJ,TRUE-VALUE
PRINTR " is holding:"
?ELS23: PRINT IT-LOOKS-LIKE
CALL ARTICLE,OBJ,TRUE-VALUE
PRINTR " contains:"
.FUNCT DESCRIBE-VEHICLE
MOVE PLAYER,ROOMS
FIRST? PRSO \?ELS3
CALL2 PRINT-CONT,PRSO
JUMP ?CND1
?ELS3: PRINTI "It's empty (not counting you)."
CRLF
?CND1: MOVE PLAYER,PRSO
RTRUE
.FUNCT GOTO,RM,V?=1
MOVE PLAYER,RM
SET 'HERE,RM
ZERO? SIMULATING /?CND1
EQUAL? SYEAR,2091 /?CND1
FSET? HERE,TUBEBIT /?CND1
EQUAL? HERE,RED-TUBECAR,BROWN-TUBECAR /?CND1
CALL1 IN-APARTMENT?
ZERO? STACK \?CND1
SET 'ELAPSED-TIME,5
?CND1: GETP HERE,P?ACTION
CALL STACK,M-ENTER
EQUAL? HERE,COMM-ROOM,INTERFACE-ROOM,SLEEP-ROOM /TRUE
EQUAL? HERE,LIBRARY-ROOM,SIMULATION-ROOM /TRUE /TRUE
EQUAL? HERE,RM \TRUE
CALL1 V-FIRST-LOOK
RTRUE
.FUNCT JIGS-UP,DESC,X
PRINT DESC
CALL2 HELD?,HEADSET
ZERO? STACK /?CND3
MOVE HEADSET,JOYBOOTH
?CND3: CALL ROB,PLAYER,LOCAL-GLOBALS
MOVE STONES,LOCAL-GLOBALS
MOVE TIMBERS,LOCAL-GLOBALS
MOVE STEW,LOCAL-GLOBALS
MOVE BANNER,LOCAL-GLOBALS
MOVE SOUVENIR,LOCAL-GLOBALS
MOVE FIRETRUCK,LOCAL-GLOBALS
MOVE SCARF,LOCAL-GLOBALS
MOVE ANDERSON-DIRECTORY,LOCAL-GLOBALS
MOVE DUCKS,LOCAL-GLOBALS
MOVE TURTLE,LOCAL-GLOBALS
MOVE MANTA-RAY,LOCAL-GLOBALS
MOVE TURKEY-SANDWICH,LOCAL-GLOBALS
MOVE HAM-SANDWICH,LOCAL-GLOBALS
MOVE SALAD,LOCAL-GLOBALS
MOVE SODA,LOCAL-GLOBALS
MOVE APPLE,LOCAL-GLOBALS
MOVE GRANOLA-CLUSTER,LOCAL-GLOBALS
MOVE BEER,LOCAL-GLOBALS
MOVE FORMULA,LOCAL-GLOBALS
MOVE TOY,CRIB
MOVE BANNED-TITLES-LIST,LOCAL-GLOBALS
MOVE SCOTCH,LIQUOR-STORE
MOVE CRIB,LOCAL-GLOBALS
MOVE MITCHELL,LOCAL-GLOBALS
MOVE BABY,CRIB
MOVE PARTITION,LOCAL-GLOBALS
MOVE WATERPOOL,LOCAL-GLOBALS
MOVE STATUE,LOCAL-GLOBALS
MOVE PLAQUE,LOCAL-GLOBALS
MOVE FOUNTAIN,LOCAL-GLOBALS
MOVE MOLD,LOCAL-GLOBALS
MOVE TICKET,LOCAL-GLOBALS
MOVE CHURCH-OFFICIAL,LOCAL-GLOBALS
MOVE GOVERNMENT-OFFICIAL,LOCAL-GLOBALS
MOVE OFFICIAL-SNACK,LOCAL-GLOBALS
MOVE SWEATER,DUNBARS
MOVE SACK,LOCAL-GLOBALS
MOVE RUSTY-CROSS,LOCAL-GLOBALS
MOVE PAMPHLET,LOCAL-GLOBALS
MOVE ROY,LOCAL-GLOBALS
MOVE DRIVERS-LICENSE,LOCAL-GLOBALS
MOVE RATION-CARD,LOCAL-GLOBALS
MOVE NEWSPAPER-DISPENSER,LOCAL-GLOBALS
MOVE NEWSPAPER,LOCAL-GLOBALS
MOVE GROCERIES,LOCAL-GLOBALS
MOVE BOOK,BOOKSTORE
MOVE JILL-BOOK,LOCAL-GLOBALS
MOVE BARKING,LOCAL-GLOBALS
MOVE RESTAURANT-TABLE,LOCAL-GLOBALS
MOVE CHAIR,LOCAL-GLOBALS
FSET NEWSPAPER,TRYTAKEBIT
FSET NEWSPAPER,NDESCBIT
FSET BOOK,NDESCBIT
FSET BOOK,TRYTAKEBIT
FSET SWEATER,NDESCBIT
FSET SWEATER,TRYTAKEBIT
FSET SCOTCH,TRYTAKEBIT
FSET SCOTCH,NDESCBIT
FSET TICKET,TRYTAKEBIT
FSET TICKET,NDESCBIT
FSET HEADSET,NDESCBIT
FCLEAR CHURCH-STREET-PARK,PARKBIT
FCLEAR CHURCH-STREET-PARK,OUTSIDEBIT
FCLEAR WAREHOUSE-1,OUTSIDEBIT
FCLEAR ST-MICHAELS,OUTSIDEBIT
FCLEAR FIRST-METHODIST-CHURCH,OUTSIDEBIT
FCLEAR WORD-PROCESSOR,ONBIT
FCLEAR CEMETERY,ONBIT
FCLEAR WALLET,OPENBIT
FCLEAR APARTMENT-DOOR,OPENBIT
FCLEAR PARKVIEW-DOOR,OPENBIT
FCLEAR JILL,TOUCHBIT
FCLEAR GROCERIES,TOUCHBIT
FCLEAR PAMPHLET,TOUCHBIT
FCLEAR REFRIGERATOR,OPENBIT
FCLEAR SOY-PATTY,TOUCHBIT
FCLEAR CHURCH-OFFICIAL,TOUCHBIT
FCLEAR HEADSET,WORNBIT
SET 'HUNGER-WARNING,FALSE-VALUE
SET 'BRUISED,FALSE-VALUE
SET 'MUGGED,FALSE-VALUE
SET 'JOYBOOTH-USED,FALSE-VALUE
SET 'MITCHELL-NEWS-FLAG,FALSE-VALUE
SET 'MITCHELL-RAID-FLAG,FALSE-VALUE
SET 'WILD-DOG-COUNTER,0
SET 'DORM-RAID-FLAG,FALSE-VALUE
SET 'APARTMENT-RAID-FLAG,FALSE-VALUE
SET 'STONING-FLAG,FALSE-VALUE
SET 'BEGGAR-FLAG,FALSE-VALUE
SET 'CLERK-WAITING,FALSE-VALUE
SET 'RAID-PROB,0
SET 'RECORDING,FALSE-VALUE
SET 'MAITRE-COUNTER,0
SET 'WAITER-COUNTER,0
SET 'MEAL-STATUS,0
SET 'JILL-COUNTER,-1
SET 'JILL-NOT-SPOKEN-YET,TRUE-VALUE
CALL2 INT,I-HUNGER
PUT STACK,0,0
CALL2 INT,I-JOYBOOTH-RECHARGE
PUT STACK,0,0
CALL2 INT,I-MUG
PUT STACK,0,0
CALL2 INT,I-JAIL
PUT STACK,0,0
CALL2 INT,I-CITY-NOISES
PUT STACK,0,0
CALL2 INT,I-RED-TUBE
PUT STACK,0,0
CALL2 INT,I-BROWN-TUBE
PUT STACK,0,0
CALL2 INT,I-SUNRISE-SUNSET
PUT STACK,0,0
CALL2 INT,I-JILL
PUT STACK,0,0
CALL2 INT,I-MITCHELL
PUT STACK,0,0
CALL2 INT,I-MITCHELL-RAID
PUT STACK,0,0
CALL2 INT,I-CURFEW
PUT STACK,0,0
PUTP SOUTHWAY-AND-RIVER,P?SCENE,34
PUTP MAIN-AND-RIVER,P?SCENE,0
PUTP MAIN-AND-CHURCH,P?SCENE,50
PUTP MAIN-AND-WICKER,P?SCENE,25
PUTP HALLEY-AND-UNIVERSITY,P?SCENE,100
PUTP AIRPORTWAY-AND-RIVER,P?SCENE,34
PUTP MUSEUM-ENTRANCE,P?SCENE,100
PUTP TERMINAL,P?SCENE,34
PUTP CENTRE-AND-KENNEDY,P?SCENE,25
PUTP ZOO-ENTRANCE,P?SCENE,100
PUTP WICKER-AND-RIVER,P?SCENE,34
EQUAL? SYEAR,2041 \?ELS8
RANDOM 60
SUB STACK,1 >2041-SECONDS
RANDOM 10
SUB STACK,1 >2041-TENTHS
JUMP ?CND6
?ELS8: EQUAL? SYEAR,2051 \?ELS10
RANDOM 60
SUB STACK,1 >2051-SECONDS
RANDOM 10
SUB STACK,1 >2051-TENTHS
JUMP ?CND6
?ELS10: EQUAL? SYEAR,2061 \?ELS12
RANDOM 60
SUB STACK,1 >2061-SECONDS
RANDOM 10
SUB STACK,1 >2061-TENTHS
JUMP ?CND6
?ELS12: EQUAL? SYEAR,2071 \?ELS14
RANDOM 60
SUB STACK,1 >2071-SECONDS
RANDOM 10
SUB STACK,1 >2071-TENTHS
JUMP ?CND6
?ELS14: EQUAL? SYEAR,2081 \?CND6
RANDOM 60
SUB STACK,1 >2081-SECONDS
RANDOM 10
SUB STACK,1 >2081-TENTHS
?CND6: CRLF
CRLF
HLIGHT H-BOLD
PRINTI " -- SIMULATION TERMINATED --"
HLIGHT 0
CRLF
FIRST? ROOMS >X /?KLU34
?KLU34:
?PRG19: FCLEAR X,TOUCHBIT
NEXT? X >X /?KLU35
?KLU35: ZERO? X \?PRG19
CALL2 QUEUED?,I-FIRST-SIMULATION-RESULT
ZERO? STACK \?CND24
CALL2 QUEUED?,I-VIEW
ZERO? STACK \?CND24
EQUAL? PART-FLAG,1 \?ELS31
MOVE PERELMAN,LOCAL-GLOBALS
CALL QUEUE,I-MESSAGE-D,6
JUMP ?CND24
?ELS31: LESS? PART-FLAG,3 \?CND24
CALL1 PUT-PERELMAN-IN-THE-RIGHT-PLACE
CALL QUEUE,I-PERELMAN,-1
SUB TIME,1 >LAST-ABE-TIME
?CND24: SET 'L-DATE,FALSE-VALUE
SET 'SIMULATING,FALSE-VALUE
SET 'MODE,COMM-MODE
CALL2 GOTO,COMM-ROOM
RSTACK
.FUNCT MOBY-VERB?
CALL1 PRSO-VERB?
ZERO? STACK \TRUE
CALL1 PRSI-VERB?
ZERO? STACK /FALSE
RTRUE
.FUNCT ACCESSIBLE?,OBJ,L
LOC OBJ >L
FSET? OBJ,INVISIBLE /FALSE
ZERO? L /FALSE
EQUAL? L,PLAYER,WINNER,HERE /TRUE
EQUAL? L,GLOBAL-OBJECTS /TRUE
EQUAL? L,LOCAL-GLOBALS \?ELS13
CALL GLOBAL-IN?,OBJ,HERE
ZERO? STACK \TRUE
?ELS13: CALL2 META-LOC,OBJ
EQUAL? STACK,HERE \FALSE
FSET? L,OPENBIT \FALSE
CALL2 ACCESSIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT VISIBLE?,OBJ,L
LOC OBJ >L
CALL2 ACCESSIBLE?,OBJ
ZERO? STACK \TRUE
CALL2 SEE-INSIDE?,L
ZERO? STACK /FALSE
CALL2 VISIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT META-LOC,OBJ,INV=0
?PRG1: ZERO? OBJ /FALSE
ZERO? INV /?ELS7
FSET? OBJ,INVISIBLE /FALSE
?ELS7: IN? OBJ,GLOBAL-OBJECTS \?CND3
RETURN GLOBAL-OBJECTS
?CND3: IN? OBJ,ROOMS \?ELS14
RETURN OBJ
?ELS14: 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
GET 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
IN? OBJ,GLOBAL-OBJECTS /FALSE
LOC OBJ
CALL2 HELD?,STACK
RSTACK
.FUNCT SEE-INSIDE?,OBJ
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
DIV STACK,2
INTBL? OBJ1,TEE,STACK /TRUE
RFALSE
.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 LOC-CLOSED
LOC PRSO
FSET? STACK,CONTBIT \FALSE
LOC PRSO
FSET? STACK,OPENBIT /FALSE
FSET? PRSO,TAKEBIT \FALSE
PRINTI "But"
LOC PRSO
CALL ARTICLE,STACK,TRUE-VALUE
PRINTR " is closed!"
.FUNCT RIGHT-HERE
PRINTI "But"
CALL ARTICLE,PRSO,TRUE-VALUE
CALL2 PLURAL,PRSO
PRINTR " right here!"
.FUNCT DO-WALK,DIR
SET 'P-WALK-DIR,DIR
CALL PERFORM,V?WALK,DIR
RSTACK
.FUNCT CHANGE-OBJECT,OLD,NEW
EQUAL? PRSO,OLD \?ELS5
CALL PERFORM,PRSA,NEW,PRSI
RTRUE
?ELS5: CALL PERFORM,PRSA,PRSO,NEW
RTRUE
.FUNCT CLEAR-BUF
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
RETURN 2
.FUNCT ROB,WHO,WHERE,N,X
FIRST? WHO >X /?KLU11
?KLU11:
?PRG1: ZERO? X /TRUE
NEXT? X >N /?KLU12
?KLU12: EQUAL? WHO,PLAYER \?CND6
FSET? X,WORNBIT \?CND6
FCLEAR X,WORNBIT
?CND6: MOVE X,WHERE
SET 'X,N
JUMP ?PRG1
.FUNCT HACK-HACK,STR
PRINT STR
CALL ARTICLE,PRSO,TRUE-VALUE
CALL2 PICK-ONE,HO-HUM
PRINT STACK
CRLF
RTRUE
.FUNCT ARTICLE,OBJ,THE=0
ZERO? OBJ \?CND1
SET 'OBJ,NOT-HERE-OBJECT
?CND1: FSET? OBJ,NARTICLEBIT /?CND4
ZERO? THE /?ELS9
PRINTI " the"
JUMP ?CND4
?ELS9: FSET? OBJ,VOWELBIT \?ELS14
PRINTI " an"
JUMP ?CND4
?ELS14: PRINTI " a"
?CND4: PRINTI " "
CALL2 DPRINT,OBJ
RSTACK
.FUNCT PLURAL,OBJ
FSET? OBJ,PLURALBIT \?ELS5
PRINTI " are"
RTRUE
?ELS5: PRINTI " is"
RTRUE
.ENDI