mirror of
https://github.com/historicalsource/amfv
synced 2024-05-19 09:28:36 +03:00
3311 lines
66 KiB
Plaintext
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
|