zorkzero/verbs.zap

5512 lines
120 KiB
Plaintext

.SEGMENT "0"
.FUNCT V-VERBOSE
SET 'VERBOSITY,2
PRINTI "Maximum verbosity."
CRLF
CRLF
CALL1 V-LOOK
RSTACK
.FUNCT V-BRIEF
SET 'VERBOSITY,1
PRINTR "Brief descriptions."
.FUNCT V-SUPERBRIEF
SET 'VERBOSITY,0
PRINTR "Superbrief descriptions."
.FUNCT NOT-IN-DEMO
PRINTR "[Sorry, but that command is not available in this demonstration version.]"
.FUNCT V-SAVE,X,WRD,COLOR-SAME
CALL1 SAVE-UNDO-CHECK
ZERO? STACK \TRUE
ZERO? DEMO-VERSION? /?CND3
ICALL1 NOT-IN-DEMO
RETURN 2
?CND3: PUTB G-INBUF,2,0
SET 'P-CONT,FALSE-VALUE
SAVE >X
ZERO? X \?CCL9
SET 'P-CONT,-1
PRINTI "SAVE failed!"
CRLF
RETURN 2
?CCL9: EQUAL? X,1 \?CND7
ICALL1 RESTORE-ORPHAN
PRINTI "SAVE completed."
CRLF
RETURN 2
?CND7: WINGET S-TEXT,WCOLOR >WRD
SHIFT WRD,-8
EQUAL? STACK,FG-COLOR \?CCL17
BAND WRD,255
EQUAL? STACK,BG-COLOR \?CCL17
SET 'COLOR-SAME,TRUE-VALUE
JUMP ?CND15
?CCL17: SET 'COLOR-SAME,FALSE-VALUE
?CND15: COLOR FG-COLOR,BG-COLOR
SET 'OLD-HERE,FALSE-VALUE
ICALL1 SETUP-SCREEN
ICALL1 V-$REFRESH
ICALL1 RESTORE-ORPHAN
PRINTI "Okay, restored."
CRLF
CRLF
SET 'P-CONT,-1
CALL1 V-LOOK
RSTACK
.FUNCT SAVE-UNDO-CHECK
EQUAL? HERE,ROOM-OF-THREE-DOORS \FALSE
PRINTR "[You can't SAVE or UNDO here. You'll have to solve the puzzle!]"
.FUNCT RESTORE-ORPHAN
IN? JESTER,HERE \FALSE
ZERO? LIT /FALSE
EQUAL? HERE,ENTRANCE-HALL \?PRD8
FSET? PORTCULLIS,OPENBIT \?CCL3
?PRD8: EQUAL? HERE,SOLAR \?PRD11
IN? EAST-KEY,JESTER /?CCL3
?PRD11: EQUAL? HERE,OUBLIETTE /?CCL3
EQUAL? HERE,CAVE-IN \?PRD15
IN? PIT-BOMB,LOCAL-GLOBALS /?CCL3
?PRD15: EQUAL? HERE,TAX-OFFICE \?PRD18
IN? ZORKMID-COIN,LOCAL-GLOBALS /?CCL3
?PRD18: EQUAL? HERE,STREAM \FALSE
FSET? DIPLOMA,TRYTAKEBIT \FALSE
?CCL3: CALL2 SETUP-ORPHAN,STR?44
RSTACK
.FUNCT V-RESTORE
ZERO? DEMO-VERSION? /?CND1
ICALL1 NOT-IN-DEMO
RETURN 2
?CND1: RESTORE
ZERO? STACK \FALSE
PRINT FAILED
RTRUE
.FUNCT V-UNDO,X
SET 'OLD-HERE,FALSE-VALUE
SET 'OLD-REGION,FALSE-VALUE
CALL1 SAVE-UNDO-CHECK
ZERO? STACK \FALSE
IRESTORE >X
EQUAL? X,-1 \?CCL6
PRINTR "UNDO is unavailable on your computer system."
?CCL6: PRINT FAILED
RTRUE
.FUNCT V-SCRIPT
ZERO? DEMO-VERSION? /?CND1
ICALL1 NOT-IN-DEMO
RETURN 2
?CND1: PRINTI "[Transcript on.]"
CRLF
DIROUT D-PRINTER-ON
ICALL2 CORP-NOTICE,STR?45
RTRUE
.FUNCT V-UNSCRIPT
ZERO? DEMO-VERSION? /?CND1
ICALL1 NOT-IN-DEMO
RETURN 2
?CND1: ICALL2 CORP-NOTICE,STR?46
DIROUT D-PRINTER-OFF
PRINTI "[Transcript off.]"
CRLF
DIROUT D-SCREEN-OFF
CRLF
DIROUT D-SCREEN-ON
RTRUE
.FUNCT CORP-NOTICE,STRING
DIROUT D-SCREEN-OFF
PRINTI "Here "
PRINT STRING
PRINTI " a transcript of interaction with"
CRLF
ICALL1 V-VERSION
DIROUT D-SCREEN-ON
RTRUE
.FUNCT V-COLOR,DEFAULT
ZERO? COLOR-NOTE \?CND1
SET 'COLOR-NOTE,TRUE-VALUE
PRINTI "Aesthetically, we recommend not changing the standard setting, which is black text on a white background. "
GETB 0,30
EQUAL? STACK,MACINTOSH \?CND3
CALL1 MAC-II?
ZERO? STACK /?CND3
PRINTI "Also, if your Mac II displays only 16 colors, you probably won't get the color you ask for. "
?CND3: PRINTI "Do you still want to go ahead?"
CRLF
PRINTI "(Y or N) >"
CALL1 Y?
ZERO? STACK /TRUE
?CND1: CRLF
?PRG9: ICALL1 DO-COLOR
PRINTI "You should now get "
GET COLOR-TABLE,FG-COLOR
PRINT STACK
PRINTI " text on a "
GET COLOR-TABLE,BG-COLOR
PRINT STACK
PRINTI " background. Is that what you want?
(Y or N) >"
CALL1 Y?
ZERO? STACK \?REP10
GETB 0,30
EQUAL? STACK,MACINTOSH \?CND13
CALL1 MAC-II?
ZERO? STACK \?CND13
EQUAL? BG-COLOR,2 \?CCL19
SET 'BG-COLOR,9
SET 'FG-COLOR,2
JUMP ?REP10
?CCL19: SET 'BG-COLOR,2
SET 'FG-COLOR,9
JUMP ?REP10
?CND13: CRLF
PRINTI "Do you want to pick again, or would you like to just go back to the standard colors? (Type Y to pick again) >"
CALL1 Y?
ZERO? STACK /?CCL22
CRLF
JUMP ?PRG9
?CCL22: SET 'DEFAULT,TRUE-VALUE
?REP10: ZERO? DEFAULT /?CCL25
COLOR 1,1
JUMP ?CND23
?CCL25: COLOR FG-COLOR,BG-COLOR
?CND23: CALL1 V-$REFRESH
RSTACK
.FUNCT DO-COLOR
GETB 0,30
EQUAL? STACK,MACINTOSH \?CCL3
CALL1 MAC-II?
ZERO? STACK \?CCL3
EQUAL? BG-COLOR,2 \?CCL8
SET 'BG-COLOR,9
SET 'FG-COLOR,2
RETURN FG-COLOR
?CCL8: SET 'BG-COLOR,2
SET 'FG-COLOR,9
RETURN FG-COLOR
?CCL3: CALL PICK-COLOR,FG-COLOR,STR?47,TRUE-VALUE >FG-COLOR
CALL PICK-COLOR,BG-COLOR,STR?48 >BG-COLOR
RETURN BG-COLOR
.FUNCT PICK-COLOR,WHICH,STRING,SETTING-FG,CHAR
PRINTI "The current "
PRINT STRING
PRINTI " color is "
GET COLOR-TABLE,WHICH
PRINT STACK
PRINT PERIOD-CR
FONT 4
PRINTI " 1 --> WHITE 4 --> GREEN"
CRLF
PRINTI " 2 --> BLACK 5 --> YELLOW"
CRLF
PRINTI " 3 --> RED 6 --> BLUE"
CRLF
FONT 1
PRINTI "Type a number to select the "
PRINT STRING
PRINTI " color you want. >"
?PRG1: ZERO? DEMO-VERSION? /?CCL5
CALL2 INPUT-DEMO,1 >CHAR
JUMP ?CND3
?CCL5: INPUT 1 >CHAR
?CND3: SUB CHAR,48 >CHAR
EQUAL? CHAR,1 \?CND6
SET 'CHAR,9
?CND6: EQUAL? CHAR,2,3,4 /?CTR9
EQUAL? CHAR,5,6,9 \?CCL10
?CTR9: ZERO? SETTING-FG \?REP2
EQUAL? CHAR,FG-COLOR \?REP2
CRLF
PRINTI "You can't make the background the same color as the text! Pick another color. >"
JUMP ?PRG1
?CCL10: CRLF
PRINT TYPE-A-NUMBER
PRINTI "6. >"
JUMP ?PRG1
?REP2: CRLF
CRLF
RETURN CHAR
.ENDSEG
.SEGMENT "STARTUP"
.FUNCT V-CREDITS
ICALL CENTER-1,STR?59,TRUE-VALUE
ICALL CENTER-1,STR?60,TRUE-VALUE
CRLF
ICALL CENTER-1,STR?61,TRUE-VALUE
ICALL2 CENTER-1,STR?62
CRLF
ICALL CENTER-1,STR?63,TRUE-VALUE
ICALL CENTER-2,STR?64,STR?65
ICALL CENTER-2,STR?66,STR?62
CRLF
ICALL CENTER-1,STR?67,TRUE-VALUE
ICALL2 CENTER-1,STR?68
CRLF
ICALL CENTER-1,STR?69,TRUE-VALUE
ICALL CENTER-3,STR?70,STR?71,STR?72
ICALL CENTER-2,STR?73,STR?74
CRLF
ICALL CENTER-1,STR?75,TRUE-VALUE
ICALL CENTER-2,STR?64,STR?76
CRLF
ICALL CENTER-1,STR?77,TRUE-VALUE
ICALL CENTER-2,STR?64,STR?66
CRLF
ICALL CENTER-1,STR?78,TRUE-VALUE
ICALL2 CENTER-1,STR?79
ICALL2 CENTER-1,STR?80
ICALL2 CENTER-1,STR?81
ICALL2 CENTER-1,STR?82
CRLF
ICALL CENTER-1,STR?83,TRUE-VALUE
ICALL CENTER-3,STR?84,STR?85,STR?86
ICALL CENTER-3,STR?87,STR?88,STR?89
ICALL CENTER-3,STR?90,STR?91,STR?92
ICALL CENTER-3,STR?93,STR?94,STR?95
ICALL CENTER-2,STR?96,STR?97
CRLF
ICALL CENTER-1,STR?98,TRUE-VALUE
ICALL CENTER-2,STR?99,STR?100
CRLF
ICALL CENTER-1,STR?101,TRUE-VALUE
ICALL CENTER-2,STR?86,STR?100
ICALL2 CENTER-1,STR?62
CRLF
ICALL CENTER-1,STR?102,TRUE-VALUE
CALL2 CENTER-1,STR?103
RSTACK
.ENDSEG
.SEGMENT "0"
.FUNCT V-DIAGNOSE
GRTR? DESERT-DEATH,0 \?CCL3
PRINTI "You're "
GRTR? DESERT-DEATH,4 \?CCL6
PRINTI "about to pass out"
JUMP ?CND4
?CCL6: GRTR? DESERT-DEATH,2 \?CCL8
PRINTI "dangerously close to passing out"
JUMP ?CND4
?CCL8: PRINTI "feeling a bit faint"
?CND4: PRINTR " from the heat."
?CCL3: ZERO? ALLIGATOR /?CCL10
PRINTR "You're a perfectly healthy alligator."
?CCL10: ZERO? TURNED-INTO /?CCL12
EQUAL? TURNED-INTO,VIOLIN \?CCL15
PRINTR "You're fit as a fiddle. In fact, you ARE a fiddle."
?CCL15: PRINTI "You are"
ICALL2 APRINT,TURNED-INTO
PRINTR ". Other details of health pale in comparison."
?CCL12: FSET? CLOWN-NOSE,WORNBIT \?CCL17
PRINTI "You're having a bit of trouble breathing, thanks to the "
ICALL2 DPRINT,CLOWN-NOSE
PRINTR " on your nose."
?CCL17: GRTR? HUNGER-COUNT,0 \?CCL19
PRINTI "You feel "
EQUAL? HUNGER-COUNT,2 \?CCL22
PRINTI "very "
JUMP ?CND20
?CCL22: EQUAL? HUNGER-COUNT,3 \?CND20
PRINTI "incredibly "
?CND20: PRINTR "hungry."
?CCL19: PRINTR "You're as fit as a fiddle."
.FUNCT V-INVENTORY
SUB 0,WORNBIT >D-BIT
ADD D-ALL?,D-PARA?
CALL D-CONTENTS,WINNER,FALSE-VALUE,STACK
ZERO? STACK \?CND1
ZERO? TURNED-INTO /?CCL5
PRINTI "You are carrying nothing."
JUMP ?CND1
?CCL5: PRINTI "You are empty-"
ZERO? ALLIGATOR /?CCL8
PRINTI "claw"
JUMP ?CND6
?CCL8: PRINTI "hand"
?CND6: PRINTI "ed."
?CND1: SET 'D-BIT,WORNBIT
ADD D-ALL?,D-PARA?
ICALL D-CONTENTS,WINNER,FALSE-VALUE,STACK
SET 'D-BIT,FALSE-VALUE
FSET? GLOVE,WORNBIT \?CND9
ZERO? GLOVE-COMMENT \?CND9
SET 'GLOVE-COMMENT,TRUE-VALUE
PRINTR " [It's probably none of my business, but when you wear that single glove you resemble singer Michael Flathead, formerly of the Flathead Five.]"
?CND9: CRLF
RTRUE
.FUNCT V-MODE
CLEAR -1
ZERO? BORDER-ON /?CCL3
SET 'BORDER-ON,FALSE-VALUE
JUMP ?CND1
?CCL3: SET 'BORDER-ON,TRUE-VALUE
?CND1: ICALL2 SPLIT-BY-PICTURE,CURRENT-SPLIT
SCREEN S-FULL
ICALL2 INIT-STATUS-LINE,TRUE-VALUE
SCREEN S-TEXT
PRINTI "Border o"
ZERO? BORDER-ON /?CCL6
PRINTC 110
JUMP ?CND4
?CCL6: PRINTI "ff"
?CND4: PRINTR " (obviously)."
.FUNCT V-QUIT
ICALL1 V-SCORE
ICALL2 DO-YOU-WISH,STR?104
CALL1 Y?
ZERO? STACK /?CCL3
QUIT
RTRUE
?CCL3: PRINT OK
RTRUE
.FUNCT V-RESTART
ICALL1 V-SCORE
ICALL2 DO-YOU-WISH,STR?105
CALL1 Y?
ZERO? STACK /FALSE
PRINTI "Restarting."
CRLF
COLOR 1,1
RESTART
PRINT FAILED
RTRUE
.FUNCT DO-YOU-WISH,STRING
CRLF
PRINTI "Do you really want to "
PRINT STRING
PRINTI " (y or n)? >"
RTRUE
.FUNCT FINISH,REPEATING,CNT
?PRG1: CRLF
ZERO? REPEATING \?CND3
SET 'REPEATING,TRUE-VALUE
ICALL1 V-SCORE
?CND3: ICALL1 UPDATE-STATUS-LINE
PRINTI "Would you like to start over, restore a saved position, "
EQUAL? HERE,ROOM-OF-THREE-DOORS /?CND5
PRINTI "undo your last turn, "
?CND5: PRINTI "end this session of the game, or "
EQUAL? SCORE,1000 \?CCL9
PRINTI "see the credits?"
CRLF
JUMP ?CND7
?CCL9: PRINTI "get a hint?"
CRLF
?CND7: PRINTI "(Type RESTART, RESTORE, "
EQUAL? HERE,ROOM-OF-THREE-DOORS /?CND10
PRINTI "UNDO, "
?CND10: PRINTI "QUIT, or "
EQUAL? SCORE,1000 \?CCL14
PRINTI "CREDITS"
JUMP ?CND12
?CCL14: PRINTI "HINT"
?CND12: PRINTI "): >"
PUTB P-LEXV,0,10
PUTB P-INBUF,1,0
ZERO? DEMO-VERSION? /?CCL17
ICALL READ-DEMO,P-INBUF,P-LEXV
JUMP ?CND15
?CCL17: READ P-INBUF,P-LEXV
?CND15: ICALL1 MOUSE-INPUT?
PUTB P-LEXV,0,LEXV-LENGTH
INC 'CNT
GET P-LEXV,1
EQUAL? STACK,W?RESTART \?CCL20
COLOR 1,1
RESTART
PRINT FAILED
JUMP ?PRG1
?CCL20: GET P-LEXV,1
EQUAL? STACK,W?RESTORE \?CCL22
RESTORE
ZERO? STACK \?CCL22
PRINT FAILED
JUMP ?PRG1
?CCL22: GET P-LEXV,1
EQUAL? STACK,W?QUIT,W?Q /?CTR25
GRTR? CNT,10 \?CCL26
?CTR25: QUIT
JUMP ?PRG1
?CCL26: GET P-LEXV,1
EQUAL? STACK,W?UNDO \?CCL30
CALL1 V-UNDO
ZERO? STACK \?PRG1
?CCL30: GET P-LEXV,1
EQUAL? STACK,W?CREDIT,W?CREDITS \?CCL34
ICALL1 V-CREDITS
JUMP ?PRG1
?CCL34: GET P-LEXV,1
EQUAL? STACK,W?HINTS,W?HINT,W?HELP /?CCL36
GET P-LEXV,1
EQUAL? STACK,W?CLUE,W?CLUES \?PRG1
?CCL36: ICALL1 V-HINT
JUMP ?PRG1
.FUNCT V-VERSION,IDX
SET 'IDX,18
PRINTI "ZORK ZERO: The Revenge of Megaboz
Copyright (c) 1988 by Infocom, Inc. All rights reserved.
ZORK is a registered trademark of Infocom, Inc."
CRLF
ICALL1 INTERPRETER-ID
PRINTI "Release "
GET 0,1
BAND STACK,2047
PRINTN STACK
PRINTI " / Serial number "
?PRG1: GETB 0,IDX
PRINTC STACK
IGRTR? 'IDX,23 \?PRG1
CRLF
RTRUE
.FUNCT INTERPRETER-ID
GETB 0,30
GET MACHINES,STACK
PRINT STACK
PRINTI " Interpreter version "
GETB 0,0
PRINTN STACK
PRINTC 46
GETB 0,31
PRINTN STACK
CRLF
RTRUE
.FUNCT MAC-II?
PICINF ICON-OFFSET,PICINF-TBL /?BOGUS1
?BOGUS1: GET PICINF-TBL,0
ZERO? STACK /TRUE
RFALSE
.ENDSEG
.SEGMENT "STARTUP"
.FUNCT V-$COMMAND
DIRIN 1
RTRUE
.FUNCT V-$RANDOM
EQUAL? PRSO,INTNUM /?CCL3
PRINTR "ILLEGAL."
?CCL3: SUB 0,P-NUMBER
RANDOM STACK
RTRUE
.FUNCT V-$RECORD
DIROUT D-RECORD-ON
RTRUE
.FUNCT V-$UNRECORD
DIROUT D-RECORD-OFF
RTRUE
.FUNCT V-$VERIFY
EQUAL? PRSO,INTNUM \?CCL3
EQUAL? P-NUMBER,232 \?CCL3
PRINTN SERIAL
CRLF
RTRUE
?CCL3: ICALL1 INTERPRETER-ID
PRINTI "Verifying..."
CRLF
VERIFY \?CCL8
PRINT OK
RTRUE
?CCL8: PRINTR "** Bad **"
.ENDSEG
.SEGMENT "0"
.FUNCT V-$REFRESH,DONT-CLEAR
EQUAL? P-CAN-UNDO,2 \?CND1
ICALL1 RESTORE-ORPHAN
SET 'DIR-CNT,0
?CND1: EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CCL5
ICALL1 DO-MAP
RTRUE
?CCL5: EQUAL? CURRENT-SPLIT,B-SPLIT \?CCL7
ICALL1 DRAW-TOWER
RTRUE
?CCL7: EQUAL? CURRENT-SPLIT,PBOZ-SPLIT \?CCL9
ICALL1 SETUP-PBOZ
RTRUE
?CCL9: EQUAL? CURRENT-SPLIT,SN-SPLIT \?CCL11
ICALL1 SETUP-SN
RTRUE
?CCL11: EQUAL? CURRENT-SPLIT,F-SPLIT \?CCL13
ICALL1 SETUP-FANUCCI
RTRUE
?CCL13: ZERO? DONT-CLEAR /?CCL16
ICALL INIT-SL-WITH-SPLIT,CURRENT-SPLIT,TRUE-VALUE
JUMP ?CND14
?CCL16: ICALL1 INIT-STATUS-LINE
?CND14: ICALL1 UPDATE-STATUS-LINE
GET 0,8
BAND STACK,-5
PUT 0,8,STACK
EQUAL? P-CAN-UNDO,2 \TRUE
PRINTR "[Undone.]"
.ENDSEG
.SEGMENT "0"
.FUNCT V-ALARM
EQUAL? PRSO,ME,ROOMS \?CCL3
ICALL2 PERFORM-PRSA,ME
RTRUE
?CCL3: FSET? PRSO,ANIMATEDBIT \?CCL5
FSET? PRSO,FEMALEBIT \?CCL8
PRINTI "Sh"
JUMP ?CND6
?CCL8: PRINTC 72
?CND6: PRINTR "e's wide awake, or haven't you noticed..."
?CCL5: PRINTR "You're nuts."
.FUNCT V-ASK-ABOUT,OWINNER
EQUAL? PRSO,ME \?CCL3
ICALL PERFORM,V?TELL,ME
RTRUE
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
SET 'OWINNER,WINNER
SET 'WINNER,PRSO
ICALL PERFORM,V?TELL-ABOUT,ME,PRSI
SET 'WINNER,OWINNER
ICALL2 THIS-IS-IT,PRSI
ICALL2 THIS-IS-IT,PRSO
RTRUE
?CCL5: ICALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-ASK-FOR
EQUAL? PRSO,BROGMOID \?CCL3
PRINT TALK-TO-BROGMOID
RTRUE
?CCL3: PRINTI "Unsurprisingly,"
ICALL1 TPRINT-PRSO
PRINTR " doesn't oblige."
.FUNCT V-ASK-NO-ONE-FOR,ACTOR
CALL FIND-IN,HERE,ACTORBIT >ACTOR
ZERO? ACTOR /?CCL3
ICALL PERFORM,V?ASK-FOR,ACTOR,PRSO
RTRUE
?CCL3: PRINTR "There's no one here to ask."
.FUNCT V-BEHEAD,CALLED-BY-V-HANG
PRINTI "You usually need a "
ZERO? CALLED-BY-V-HANG /?CCL3
PRINTI "noose"
JUMP ?CND1
?CCL3: PRINTI "axe"
?CND1: PRINTI " to do this"
FSET? PRSO,ACTORBIT /?CND4
EQUAL? PRSO,ME /?CND4
PRINTI ", and besides, it doesn't look like"
ICALL1 TPRINT-PRSO
PRINTI " even has a "
ZERO? CALLED-BY-V-HANG /?CCL10
PRINTI "neck"
JUMP ?CND4
?CCL10: PRINTI "head"
?CND4: PRINT PERIOD-CR
RTRUE
.FUNCT V-BITE
CALL2 HACK-HACK,STR?117
RSTACK
.FUNCT V-BURN
ZERO? PRSI \?CND1
CALL FIND-IN,PROTAGONIST,FLAMEBIT >PRSI
ZERO? PRSI /?CCL5
PRINTI "[with"
ICALL1 TPRINT-PRSI
PRINTC 93
CRLF
ICALL PERFORM,V?BURN,PRSO,PRSI
RTRUE
?CCL5: PRINTR "Your burning gaze is insufficient."
?CND1: FSET? PRSI,FLAMEBIT /?CCL8
PRINTI "With"
ICALL2 APRINT,PRSI
PRINTR "??!?"
?CCL8: FSET? PRSO,BURNBIT \?CCL10
PRINTI "Instantly,"
ICALL1 TPRINT-PRSO
PRINTI " catches fire and is consumed."
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL13
CALL2 JIGS-UP,STR?118
RSTACK
?CCL13: REMOVE PRSO
CRLF
RTRUE
?CCL10: EQUAL? PRSO,CANDLE \?CCL15
FSET CANDLE,FLAMEBIT
FSET CANDLE,ONBIT
PRINTR "You relight the candle."
?CCL15: PRINT YOU-CANT
PRINTI "burn"
CALL2 ARPRINT,PRSO
RSTACK
.FUNCT V-BUY
PRINTR "That's not for sale."
.FUNCT V-CALL
EQUAL? PRSO,INTQUOTE \?CCL3
CALL1 V-SAY
RSTACK
?CCL3: CALL2 VISIBLE?,PRSO
ZERO? STACK /?CCL5
IN? PRSO,GLOBAL-OBJECTS /?CCL5
ICALL PERFORM,V?TELL,PRSO
RTRUE
?CCL5: CALL2 DO-FIRST,STR?119
RSTACK
.FUNCT V-CATCH
ZERO? PRSI /?CCL3
PRINTI "Sorry,"
ICALL1 TPRINT-PRSI
PRINTI " isn't much help in catching"
CALL2 TRPRINT,PRSO
RSTACK
?CCL3: PRINTR "The only thing you're likely to catch is a cold."
.FUNCT V-CHASTISE
EQUAL? PRSO,INTDIR \?CCL3
PRINT YOULL-HAVE-TO
PRINTR "go in that direction to see what's there."
?CCL3: CALL USE-PREPOSITIONS,STR?120,STR?121,STR?122,STR?123
RSTACK
.FUNCT USE-PREPOSITIONS,VRB,PREP1,PREP2,PREP3
PRINTI "[Use prepositions to indicate precisely what you want to do: "
PRINT VRB
PRINT PREP1
PRINTI " the object, "
PRINT VRB
PRINT PREP2
PRINTI " it, "
PRINT VRB
PRINT PREP3
PRINTR " it, etc.]"
.FUNCT V-CLEAN
SET 'AWAITING-REPLY,1
ICALL QUEUE,I-REPLY,2
PRINTR "Do you also do windows?"
.FUNCT V-CLIMB
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?UP
RSTACK
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
EQUAL? PRSO,WALDO /?CCL5
IN? PRSO,WALDO /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-CLIMB-DOWN
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?DOWN
RSTACK
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
EQUAL? PRSO,WALDO /?CCL5
IN? PRSO,WALDO /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-CLIMB-ON
EQUAL? PRSO,CAMEL \?CCL3
IN? PROTAGONIST,CAMEL \?CCL3
EQUAL? P-PRSA-WORD,W?RIDE \?CCL3
PRINTR "[You'll have to say which direction you want to ride in.]"
?CCL3: EQUAL? PRSO,INTDIR \?CCL8
CALL2 VISIBLE?,CAMEL
ZERO? STACK /?CCL8
IN? PROTAGONIST,CAMEL \?CCL13
ICALL PERFORM,V?RIDE-DIR,CAMEL,PRSO
RTRUE
?CCL13: CALL DO-FIRST,STR?124,CAMEL
RSTACK
?CCL8: FSET? PRSO,VEHBIT \?CCL15
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL15: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL17
EQUAL? PRSO,WALDO /?CCL17
IN? PRSO,WALDO /?CCL17
PRINT HOLDING-IT
RTRUE
?CCL17: GET PARSE-RESULT,7
EQUAL? STACK,W?IN \?CCL22
CALL2 CANT-VERB-A-PRSO,STR?125
RSTACK
?CCL22: CALL2 CANT-VERB-A-PRSO,STR?126
RSTACK
.FUNCT V-CLIMB-OVER
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL3
EQUAL? PRSO,WALDO /?CCL3
IN? PRSO,WALDO /?CCL3
PRINT HOLDING-IT
RTRUE
?CCL3: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-CLIMB-UP
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?UP
RSTACK
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
EQUAL? PRSO,WALDO /?CCL5
IN? PRSO,WALDO /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-CLOSE
FSET? PRSO,SURFACEBIT /?CTR2
FSET? PRSO,ACTORBIT /?CTR2
FSET? PRSO,VEHBIT \?CCL3
EQUAL? PRSO,IRON-MAIDEN,LADDER,DB /?CCL3
EQUAL? PRSO,WATER-CHAMBER,SNAKE-PIT /?CCL3
?CTR2: CALL1 YOU-MUST-TELL-ME
RSTACK
?CCL3: FSET? PRSO,DOORBIT /?CTR11
FSET? PRSO,CONTBIT \?CCL12
?CTR11: FSET? PRSO,OPENBIT \?CCL17
FCLEAR PRSO,OPENBIT
PRINTI "Okay,"
ICALL1 TPRINT-PRSO
PRINTI " is now closed."
CRLF
CALL1 NOW-DARK?
RSTACK
?CCL17: PRINT ALREADY-IS
RTRUE
?CCL12: CALL1 YOU-MUST-TELL-ME
RSTACK
.FUNCT V-COUGH
EQUAL? HERE,ICKY-CAVE \?CCL3
IN? SICKLY-WITCH,HERE /?CCL3
ZERO? LIT /?CCL8
MOVE SICKLY-WITCH,HERE
MOVE PRICKLY-WITCH,HERE
PRINTI "Two witches appear, spraying fumigation spells throughout the cave. One of the witches, less healthy than the other, frets, ""Oh, dear, I'm not certain my frail body can stand all these germs!"" The other witch, less friendly than the first, gives you a blistering glare. ""What manners! I certainly wouldn't walk into YOUR home and start spewing phlegm around!"""
IN? JESTER,HERE \?CCL11
ICALL1 REMOVE-J
CRLF
PRINTI " They notice the jester for the first time."
PRINT WITCH-REMOVES-J
RTRUE
?CCL11: CRLF
RTRUE
?CCL8: PRINTR "You hear, briefly, a sound that just might be witches disinfecting a cave. But, in the dark, who can really tell for sure?"
?CCL3: PRINTR "Hmmm. You seem to be catching a cold. [Can't say I'm surprised, considering you spent last night sleeping on the cold stone floor of Flatheadia castle.]"
.FUNCT PRE-COUNT
EQUAL? PRSO,ROOMS \FALSE
PRINTI "There are "
PRINTN P-MULT
PRINT PERIOD-CR
RTRUE
.FUNCT V-COUNT
CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-CRAWL-UNDER
FSET? PRSO,TAKEBIT /?CCL3
CALL1 TELL-HIT-HEAD
RSTACK
?CCL3: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-CROSS
CALL1 V-WALK-AROUND
RSTACK
.FUNCT V-CUT
ZERO? PRSI \?CCL3
CALL1 IMPOSSIBLES
RSTACK
?CCL3: PRINTI "Strange concept, cutting"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-DATE
PRINTR """It was on a fateful day in the year 883 GUE..."" is how poets of the future will begin their tales of your quest. Not being a poet of the future, you think of it as the 14th day of Mumberbur."
.FUNCT V-DECODE
PRINT YOULL-HAVE-TO
PRINTR "figure it out yourself."
.FUNCT V-DIG
EQUAL? PRSI,SHOVEL \?CCL3
EQUAL? PRSO,GROUND /?CCL6
CALL1 IMPOSSIBLES
RSTACK
?CCL6: FSET? HERE,OUTSIDEBIT /?CCL8
FSET? HERE,DESERTBIT /?CCL8
PRINTR "The floor is a bit harder than the shovel."
?CCL8: EQUAL? JUMP-X,STUMP-X \?CCL12
EQUAL? JUMP-Y,STUMP-Y \?CCL12
IN? TREASURE-CHEST,LOCAL-GLOBALS \?CCL12
MOVE TREASURE-CHEST,HERE
PRINTR "You dig and dig and dig. And dig. Then, summoning hidden reserves of strength, you dig some more. Suddenly... ""Clank."" It's a treasure chest! With a burst of energy you uncover it and drag it out of the hole. As you do so, the walls of the hole collapse, filling it in, and you barely make it out alive."
?CCL12: PRINTR "You dig a sizable hole but, finding nothing of interest, you fill it in again out of consideration to future passersby and current gamewriters."
?CCL3: PRINTI "Digging with"
ZERO? PRSI \?CCL18
PRINTI " your hands"
JUMP ?CND16
?CCL18: ICALL1 TPRINT-PRSI
?CND16: PRINTR " is slow and tedious."
.FUNCT V-DIG-WITH
ICALL PERFORM,V?DIG,GROUND,PRSO
RTRUE
.FUNCT V-DRINK
FSET? PRSO,WATERBIT \?CCL3
CALL2 PERFORM-PRSA,WATER
RSTACK
?CCL3: CALL2 CANT-VERB-A-PRSO,STR?127
RSTACK
.FUNCT V-DRINK-FROM
FSET? PRSO,WATERBIT \?CCL3
ICALL PERFORM,V?DRINK,WATER
RTRUE
?CCL3: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-DRINK-WITH
EQUAL? PRSI,STRAW \?CCL3
EQUAL? PRSO,ELIXIR \?CCL6
CALL2 JIGS-UP,STR?128
RSTACK
?CCL6: ICALL PERFORM,V?DRINK,PRSO
RTRUE
?CCL3: PRINT YOU-CANT
PRINTI "drink something with"
CALL2 ARPRINT,PRSI
RSTACK
.FUNCT V-DROP,CHESSPIECE
IN? PRSO,WALDO \?CCL3
EQUAL? HERE,HOLD \?CCL6
MOVE PRSO,HOLD
JUMP ?CND4
?CCL6: MOVE PRSO,LAKE-BOTTOM
?CND4: PRINTI "You release"
CALL2 TRPRINT,PRSO
RSTACK
?CCL3: CALL2 SPECIAL-DROP,PRSO
ZERO? STACK \FALSE
LOC PROTAGONIST
FSET? STACK,DROPBIT \?CCL11
LOC PROTAGONIST
MOVE PRSO,STACK
JUMP ?CND9
?CCL11: MOVE PRSO,HERE
?CND9: EQUAL? PRSO,EVEN-LARGER-FLY,LARGER-FLY,LARGE-FLY /?CTR13
EQUAL? PRSO,LARGEST-FLY \?CCL14
?CTR13: PRINTI "You release"
ICALL1 TPRINT-PRSO
JUMP ?CND12
?CCL14: PRINTI "Dropped"
?CND12: CALL FIND-IN,HERE,BLACKBIT >CHESSPIECE
ZERO? CHESSPIECE \?PRD21
CALL FIND-IN,HERE,WHITEBIT >CHESSPIECE
ZERO? CHESSPIECE /?CCL19
?PRD21: FSET? PRSO,TRYTAKEBIT /?CCL19
CALL FIND-IN,PRSO,TRYTAKEBIT
ZERO? STACK \?CCL19
ZERO? TIME-STOPPED \?CCL19
MOVE PRSO,CHESSPIECE
PRINTI ". The "
ICALL2 DPRINT,CHESSPIECE
PRINTI " says, ""Well what do you know? It's been a long time since I had"
ICALL2 APRINT,PRSO
PRINTI "."" "
FSET? CHESSPIECE,FEMALEBIT \?CCL28
PRINTI "Sh"
JUMP ?CND26
?CCL28: PRINTC 72
?CND26: PRINTI "e picks it up."
EQUAL? PRSO,PIGEON \?CCL31
CALL2 META-LOC,PERCH
EQUAL? HERE,STACK /?CCL31
CALL2 PIECE-TAKES-PIGEON,CHESSPIECE
RSTACK
?CCL31: CRLF
RTRUE
?CCL19: EQUAL? PRSO,BAR-OF-FOOD \?CCL35
IN? FLAMINGO,HERE \?CCL35
PRINTR ". The flamingo eyes the food, but appears to be too well-mannered to eat something that hasn't been offered."
?CCL35: PRINT PERIOD-CR
RTRUE
.FUNCT SPECIAL-DROP,OBJ,CALLED-BY-ROB
EQUAL? HERE,OUBLIETTE \?CCL3
GETP OBJ,P?SIZE
GRTR? STACK,4 \?CCL3
REMOVE OBJ
EQUAL? OBJ,PERCH /?CCL7
CALL ULTIMATELY-IN?,PERCH,PRSO
ZERO? STACK /?CND6
?CCL7: SET 'REMOVED-PERCH-LOC,OUBLIETTE
?CND6: ZERO? CALLED-BY-ROB \TRUE
PRINTI "With a gentle slurping noise,"
ICALL1 TPRINT-PRSO
PRINTI " vanishes slowly into the mud."
CRLF
ICALL1 NOW-DARK?
RTRUE
?CCL3: EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS \FALSE
REMOVE OBJ
EQUAL? OBJ,PERCH /?CCL15
CALL ULTIMATELY-IN?,PERCH,PRSO
ZERO? STACK /?CND14
?CCL15: SET 'REMOVED-PERCH-LOC,BROGMOID
?CND14: ZERO? CALLED-BY-ROB \TRUE
PRINTI "As you release"
ICALL1 TPRINT-PRSO
PRINTR ", it dwindles into the mist and is gone from this world forever."
.FUNCT PRE-INGEST
ZERO? TURNED-INTO /FALSE
FSET? TURNED-INTO,ANIMATEDBIT /FALSE
PRINTI "You've turned into"
ICALL2 APRINT,TURNED-INTO
PRINTR ", and as a consequence don't have much in the way of a mouth."
.FUNCT V-EAT
PRINTI "It's not likely that"
ICALL1 TPRINT-PRSO
PRINTR " would agree with you."
.FUNCT V-EMPTY,OBJ,NXT
ZERO? PRSI \?CND1
SET 'PRSI,GROUND
?CND1: FSET? PRSO,CONTBIT /?CCL5
PRINT HUH
RTRUE
?CCL5: FSET? PRSO,OPENBIT /?CCL7
PRINTI "But"
ICALL1 TPRINT-PRSO
PRINTR " isn't open."
?CCL7: FIRST? PRSO /?CCL9
PRINTI "But"
ICALL1 TPRINT-PRSO
PRINTR " is already empty!"
?CCL9: FIRST? PRSO /?BOGUS14
?BOGUS14: EQUAL? PRSI,STACK \?CCL11
NEXT? PRSI /?CCL11
PRINT THERES-NOTHING
PRINTI "in"
ICALL1 TPRINT-PRSO
PRINTI " but"
CALL2 TRPRINT,PRSI
RSTACK
?CCL11: FIRST? PRSO >OBJ /?PRG16
?PRG16: NEXT? OBJ >NXT /?BOGUS18
?BOGUS18: EQUAL? OBJ,PROTAGONIST /?CND19
ICALL2 DPRINT,OBJ
PRINTI ": "
FSET? OBJ,TAKEBIT \?CCL23
MOVE OBJ,PROTAGONIST
EQUAL? PRSI,HANDS \?CCL26
PRINTI "You take"
ICALL2 TRPRINT,OBJ
JUMP ?CND19
?CCL26: EQUAL? PRSI,GROUND \?CCL28
ICALL PERFORM,V?DROP,OBJ
JUMP ?CND19
?CCL28: FSET? PRSI,SURFACEBIT \?CCL30
ICALL PERFORM,V?PUT-ON,OBJ,PRSI
JUMP ?CND19
?CCL30: ICALL PERFORM,V?PUT,OBJ,PRSI
JUMP ?CND19
?CCL23: ICALL1 YUKS
?CND19: ZERO? NXT /TRUE
SET 'OBJ,NXT
JUMP ?PRG16
.FUNCT V-EMPTY-FROM
IN? PRSO,PRSI \?CCL3
FSET? PRSO,TAKEBIT \?CCL6
MOVE PRSO,PROTAGONIST
ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL6: CALL1 YUKS
RSTACK
?CCL3: CALL1 NOT-IN
RSTACK
.FUNCT PRE-ENTER
IN? PROTAGONIST,PRSO \?CCL3
PRINT LOOK-AROUND
RTRUE
?CCL3: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL5
EQUAL? PRSO,WALDO /?CCL5
IN? PRSO,WALDO /?CCL5
PRINT HOLDING-IT
RTRUE
?CCL5: CALL2 UNTOUCHABLE?,PRSO
ZERO? STACK /?CCL10
CALL2 CANT-REACH,PRSO
RSTACK
?CCL10: FSET? PRSO,VEHBIT \FALSE
IN? PRSO,HERE /FALSE
PRINTI "You'll have to remove"
ICALL1 TPRINT-PRSO
PRINTI " from"
LOC PRSO
ICALL2 TPRINT,STACK
PRINTR " first."
.FUNCT V-ENTER,DIR
EQUAL? PRSO,INTDIR \?CCL3
CALL1 DIRECTION-CONVERSION
CALL2 DO-WALK,STACK
RSTACK
?CCL3: FSET? PRSO,WATERBIT \?CCL5
CALL2 PERFORM-PRSA,WATER
RSTACK
?CCL5: FSET? PRSO,DOORBIT \?CCL7
CALL2 OTHER-SIDE,PRSO
ICALL2 DO-WALK,STACK
RTRUE
?CCL7: FSET? PRSO,VEHBIT \?CCL9
LOC PRSO
EQUAL? STACK,HERE,LOCAL-GLOBALS /?CCL12
PRINT YOU-CANT
PRINTI "board"
ICALL1 TPRINT-PRSO
PRINTI " when it's "
LOC PRSO
FSET? STACK,SURFACEBIT \?CCL15
PRINTI "on"
JUMP ?CND13
?CCL15: PRINTI "in"
?CND13: LOC PRSO
CALL2 TRPRINT,STACK
RSTACK
?CCL12: MOVE PROTAGONIST,PRSO
SET 'OLD-HERE,FALSE-VALUE
PRINTI "You are now "
EQUAL? PRSO,CARD-TABLE \?CCL18
PRINTI "sitting at"
JUMP ?CND16
?CCL18: FSET? PRSO,INBIT \?CCL20
PRINTI "in"
JUMP ?CND16
?CCL20: PRINTI "on"
?CND16: ICALL1 TPRINT-PRSO
PRINTC 46
GETP PRSO,P?ACTION
CALL STACK,M-ENTER
ZERO? STACK \?CND21
CRLF
?CND21: FSET PRSO,TOUCHBIT
RTRUE
?CCL9: IN? PRSO,ROOMS \?CCL24
CALL1 FIND-NEXT-ROOM >DIR
ZERO? DIR /?CCL27
CALL2 DO-WALK,DIR
RSTACK
?CCL27: CALL1 V-WALK-AROUND
RSTACK
?CCL24: FSET? PRSO,TAKEBIT /?CCL29
CALL1 TELL-HIT-HEAD
RSTACK
?CCL29: GET PARSE-RESULT,7
EQUAL? STACK,W?IN \?CCL31
CALL2 CANT-VERB-A-PRSO,STR?129
RSTACK
?CCL31: GET PARSE-RESULT,7
EQUAL? STACK,W?ON \?CCL33
CALL2 CANT-VERB-A-PRSO,STR?130
RSTACK
?CCL33: SET 'AWAITING-REPLY,1
ICALL QUEUE,I-REPLY,2
PRINTI "You have a theory on how to board"
ICALL2 APRINT,PRSO
PRINTR ", perhaps?"
.FUNCT FIND-NEXT-ROOM,PT,PTS,DIR
?PRG1: NEXTP HERE,DIR >DIR
ZERO? DIR /FALSE
LESS? DIR,LOW-DIRECTION /FALSE
GETPT HERE,DIR >PT
ZERO? PT /?PRG1
PTSIZE PT >PTS
EQUAL? PTS,UEXIT,CEXIT \?CCL11
GETB PT,REXIT
EQUAL? STACK,PRSO \?PRG1
RETURN DIR
?CCL11: EQUAL? PTS,DEXIT \?PRG1
GETB PT,DEXITRM
EQUAL? STACK,PRSO \?PRG1
RETURN DIR
.FUNCT V-EXAMINE
ZERO? PRSI /?CCL3
FSET? PRSI,TRANSBIT /?CCL3
CALL1 IMPOSSIBLES
RSTACK
?CCL3: FSET? PRSO,ACTORBIT \?CCL7
FIRST? PRSO \?CCL10
ICALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
?CCL10: ICALL1 NOTHING-INTERESTING
PRINTI "about"
CALL2 TRPRINT,PRSO
RSTACK
?CCL7: FSET? PRSO,SURFACEBIT \?CCL12
CALL1 V-LOOK-INSIDE
RSTACK
?CCL12: FSET? PRSO,DOORBIT \?CCL14
PRINT IT-SEEMS-THAT
ICALL1 TPRINT-PRSO
PRINTI " is "
ICALL2 OPEN-CLOSED,PRSO
PRINT PERIOD-CR
RTRUE
?CCL14: FSET? PRSO,CONTBIT \?CCL16
FSET? PRSO,OPENBIT /?CTR18
FSET? GOGGLES,WORNBIT \?CCL19
?CTR18: CALL1 V-LOOK-INSIDE
RSTACK
?CCL19: PRINTI "It's closed."
FSET? PRSO,TRANSBIT \?CCL24
FIRST? PRSO \?CCL24
PRINTC 32
CALL1 V-LOOK-INSIDE
RSTACK
?CCL24: CRLF
RTRUE
?CCL16: FSET? PRSO,LIGHTBIT \?CCL28
PRINTI "It's o"
FSET? PRSO,ONBIT \?CCL31
PRINTC 110
JUMP ?CND29
?CCL31: PRINTI "ff"
?CND29: PRINT PERIOD-CR
RTRUE
?CCL28: FSET? PRSO,READBIT \?CCL33
ICALL PERFORM,V?READ,PRSO
RTRUE
?CCL33: IN? PRSO,ROOMS \?CCL35
PRINTR "You can't see much from here."
?CCL35: FSET? PRSO,NARTICLEBIT \?CCL37
CALL2 SENSE-OBJECT,STR?131
RSTACK
?CCL37: RANDOM 100
LESS? 25,STACK /?CCL39
PRINTI "Totally ordinary looking "
ICALL2 DPRINT,PRSO
PRINT PERIOD-CR
RTRUE
?CCL39: RANDOM 100
LESS? 60,STACK \?CTR40
FSET? PRSO,PLURALBIT /?CTR40
EQUAL? PRSO,GROUND \?CCL41
?CTR40: ICALL1 NOTHING-INTERESTING
PRINTI "about"
CALL2 TRPRINT,PRSO
RSTACK
?CCL41: ICALL1 PRONOUN
PRINTI " look"
FSET? PRSO,PLURALBIT /?CND45
EQUAL? PRSO,ME /?CND45
PRINTC 115
?CND45: PRINTI " like every other "
ICALL2 DPRINT,PRSO
PRINTR " you've ever seen."
.FUNCT NOTHING-INTERESTING
PRINT THERES-NOTHING
RANDOM 100
LESS? 25,STACK /?CCL3
PRINTI "unusual"
JUMP ?CND1
?CCL3: RANDOM 100
LESS? 33,STACK /?CCL5
PRINTI "noteworthy"
JUMP ?CND1
?CCL5: RANDOM 100
LESS? 50,STACK /?CCL7
PRINTI "eye-catching"
JUMP ?CND1
?CCL7: PRINTI "special"
?CND1: PRINTC 32
RTRUE
.FUNCT V-EXIT
ZERO? PRSO /?CTR2
EQUAL? PRSO,ROOMS \?CCL3
?CTR2: IN? PROTAGONIST,HERE /?CCL8
LOC PROTAGONIST
ICALL PERFORM,V?EXIT,STACK
RTRUE
?CCL8: ZERO? UNDER-TABLE /?CCL10
CALL1 V-STAND
RSTACK
?CCL10: GET PARSE-RESULT,7
EQUAL? STACK,W?DOWN \?CCL12
PRINTR "You're not on anything."
?CCL12: CALL2 DO-WALK,P?OUT
RSTACK
?CCL3: EQUAL? P-PRSA-WORD,W?TAKE \?CCL14
ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL14: ZERO? UNDER-TABLE /?CCL16
ZERO? PRSO /?CTR15
EQUAL? PRSO,TABLES \?CCL16
?CTR15: CALL1 V-STAND
RSTACK
?CCL16: IN? PROTAGONIST,PRSO /?CCL22
SET 'P-CONT,-1
PRINT LOOK-AROUND
RTRUE
?CCL22: ZERO? TURNED-INTO /?CCL24
FSET? TURNED-INTO,ANIMATEDBIT /?CCL24
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL24
CALL1 V-SKIP
RSTACK
?CCL24: MOVE PROTAGONIST,HERE
SET 'OLD-HERE,FALSE-VALUE
PRINTI "You get "
EQUAL? PRSO,CARD-TABLE \?CCL30
PRINTI "up from"
JUMP ?CND28
?CCL30: FSET? PRSO,INBIT \?CCL32
PRINTI "out of"
JUMP ?CND28
?CCL32: PRINTI "off"
?CND28: ICALL1 TPRINT-PRSO
PRINTR "."
.FUNCT V-FEED
PRINTI "You have no food for"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT PRE-FILL
ZERO? PRSI \FALSE
CALL1 FIND-WATER
ZERO? STACK /?CCL5
SET 'PRSI,WATER
RFALSE
?CCL5: CALL2 VISIBLE?,LARGE-VIAL-WATER
ZERO? STACK /?CCL7
CALL2 VISIBLE?,SMALL-VIAL-WATER
ZERO? STACK /?CCL7
EQUAL? PRSO,SMALL-VIAL \?CCL12
ICALL PERFORM,V?EMPTY,LARGE-VIAL,SMALL-VIAL
RTRUE
?CCL12: EQUAL? PRSO,LARGE-VIAL \?CCL14
ICALL PERFORM,V?EMPTY,SMALL-VIAL,LARGE-VIAL
RTRUE
?CCL14: PRINTR "[You'll have to specify which water you mean, the large vial or the small vial.]"
?CCL7: CALL2 VISIBLE?,LARGE-VIAL-WATER
ZERO? STACK /?CCL16
ICALL PERFORM,V?EMPTY,LARGE-VIAL,PRSO
RTRUE
?CCL16: CALL2 VISIBLE?,SMALL-VIAL-WATER
ZERO? STACK /?CCL18
ICALL PERFORM,V?EMPTY,SMALL-VIAL,PRSO
RTRUE
?CCL18: ICALL PERFORM,V?FILL,PRSO,WATER
RTRUE
.FUNCT V-FILL
FSET? PRSI,WATERBIT \?CCL3
CALL PERFORM-PRSA,PRSO,WATER
RSTACK
?CCL3: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-FIND,L
LOC PRSO >L
ZERO? L \?CCL3
ICALL1 PRONOUN
PRINTR " could be anywhere!"
?CCL3: IN? PRSO,PROTAGONIST \?CCL5
PRINTR "You have it!"
?CCL5: IN? PRSO,HERE \?CCL7
PRINTR "Right in front of you."
?CCL7: IN? PRSO,GLOBAL-OBJECTS /?CTR8
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL9
?CTR8: CALL1 V-DECODE
RSTACK
?CCL9: FSET? L,ACTORBIT \?CCL13
CALL2 VISIBLE?,L
ZERO? STACK /?CCL13
PRINTI "Looks as if"
ICALL2 TPRINT,L
PRINTR " has it."
?CCL13: FSET? L,CONTBIT \?CCL17
CALL2 VISIBLE?,PRSO
ZERO? STACK /?CCL17
IN? L,GLOBAL-OBJECTS /?CCL17
FSET? L,SURFACEBIT \?CCL23
PRINTC 79
JUMP ?CND21
?CCL23: FSET? L,VEHBIT \?CCL25
FSET? L,INBIT /?CCL25
PRINTC 79
JUMP ?CND21
?CCL25: PRINTC 73
?CND21: PRINTC 110
CALL2 TRPRINT,L
RSTACK
?CCL17: CALL1 V-DECODE
RSTACK
.FUNCT V-FLY
ZERO? PRSO /?CTR2
EQUAL? PRSO,INTDIR \?CCL3
?CTR2: ZERO? TURNED-INTO /?CCL8
EQUAL? TURNED-INTO,PIGEON,ROOSTER,FLAMINGO /?CTR10
EQUAL? TURNED-INTO,EVEN-LARGER-FLY,LARGE-FLY,LARGEST-FLY /?CTR10
EQUAL? TURNED-INTO,LARGER-FLY \?CCL11
?CTR10: MOVE PROTAGONIST,HERE
PRINTR "You make a few awkward circuits of the room, bouncing into several walls. (Ouch.)"
?CCL11: PRINTI "Despite what you may have learned in school,"
ICALL2 APRINT,TURNED-INTO
PRINTR " is no more capable of flight than a human."
?CCL8: PRINTR "Humans are not usually equipped for flying."
?CCL3: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-FOLLOW
CALL2 VISIBLE?,PRSO
ZERO? STACK /?CCL3
PRINTI "But"
ICALL2 IS-ARE-PRINT,PRSO
PRINTR "right here!"
?CCL3: FSET? PRSO,ACTORBIT /?CCL5
CALL1 IMPOSSIBLES
RSTACK
?CCL5: PRINTI "You have no idea where"
ICALL1 TPRINT-PRSO
FSET? PRSO,PLURALBIT \?CCL8
PRINTI " are"
JUMP ?CND6
?CCL8: PRINTI " is"
?CND6: PRINT PERIOD-CR
RTRUE
.FUNCT PRE-GIVE
EQUAL? PRSA,V?GIVE \?CCL3
EQUAL? PRSO,HANDS \?CCL3
ICALL PERFORM,V?SHAKE-WITH,PRSI
RTRUE
?CCL3: EQUAL? PRSO,EYES \?CCL7
ICALL1 PRE-SWITCH
ICALL PERFORM,V?EXAMINE,PRSI,EYES
RTRUE
?CCL7: CALL1 IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-GET-NEAR
CALL1 WASTES
RSTACK
.FUNCT V-GIVE
FSET? PRSI,ACTORBIT \?CCL3
PRINTI "Briskly,"
ICALL1 TPRINT-PRSI
PRINTI " refuse"
FSET? PRSI,PLURALBIT /?CND4
PRINTC 115
?CND4: PRINTR " your offer."
?CCL3: PRINT YOU-CANT
PRINTI "give"
ICALL2 APRINT,PRSO
PRINTI " to"
ICALL2 APRINT,PRSI
PRINTR "!"
.FUNCT V-GIVE-UP
EQUAL? PRSO,ROOMS \?CCL3
CALL1 V-QUIT
RSTACK
?CCL3: CALL1 RECOGNIZE
RSTACK
.FUNCT V-HANG
CALL2 V-BEHEAD,TRUE-VALUE
RSTACK
.FUNCT V-HELLO
ZERO? PRSO /?CCL3
PRINTI "[The proper way to talk to characters in the story is PERSON, HELLO."
EQUAL? PRSO,SAILOR \?CND4
PRINTI " Besides, nothing happens here."
?CND4: PRINTR "]"
?CCL3: ICALL PERFORM,V?TELL,ME
RTRUE
.FUNCT V-HIDE
PRINT YOU-CANT
PRINTI "hide "
ZERO? PRSO /?CND1
PRINTC 116
?CND1: PRINTR "here."
.ENDSEG
.SEGMENT "HINTS"
.FUNCT V-HINT
EQUAL? HINTS-OFF,-1 \?CCL3
SET 'HINTS-OFF,0
PRINTI "Warning: We strongly recommend that you not use hints unless you're definitely stuck. Peeking at hints prematurely will invariably make you enjoy the story less. If you want to avoid reading any hints for the rest of this session, you may at any time during the story type HINTS OFF. Do you still want a hint? (Y or N) >"
CALL1 Y?
ZERO? STACK \?CND1
RETURN 2
?CCL3: ZERO? HINTS-OFF /?CND1
ICALL PERFORM,V?HINTS-NO,ROOMS
RETURN 2
?CND1: IGRTR? 'HINT-COUNTER,0 \?CND11
MOD HINT-COUNTER,5
ZERO? STACK \?CND11
PRINTI "You're looking at the hints "
HLIGHT H-BOLD
PRINTI "again"
HLIGHT H-NORMAL
PRINTI "?!! Even Lord Dimwit Flathead would consider that excessive! Do you really want to be such a wimp? (Y or N) >"
CALL1 Y?
ZERO? STACK \?CND11
RETURN 2
?CND11: CALL1 DO-HINTS
RSTACK
.ENDSEG
.SEGMENT "0"
.FUNCT V-HINTS-NO
EQUAL? PRSO,ROOMS /?CCL3
ICALL1 RECOGNIZE
RTRUE
?CCL3: ZERO? HINTS-OFF /?CCL5
PRINTI "[You've already deactivated"
JUMP ?CND1
?CCL5: SET 'HINTS-OFF,TRUE-VALUE
PRINTI "[Okay, you will no longer have access to"
?CND1: PRINTR " help in this session.]"
.FUNCT V-IN
CALL2 DO-WALK,P?IN
RSTACK
.FUNCT V-INFLATE
CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-KICK
CALL2 HACK-HACK,STR?132
RSTACK
.FUNCT V-KILL
FSET? PRSO,ACTORBIT \?CCL3
PRINTI "Trying to kill"
ICALL2 APRINT,PRSO
PRINTI " with"
ZERO? PRSI /?CCL6
ICALL2 APRINT,PRSI
JUMP ?CND4
?CCL6: PRINTI " your bare hands"
?CND4: PRINTR " is suicidal."
?CCL3: PRINTI "How strange, fighting"
ICALL2 APRINT,PRSO
PRINTR "!"
.FUNCT V-KISS
PRINTR "I'd sooner kiss a pig."
.FUNCT V-KNOCK
FSET? PRSO,DOORBIT \?CCL3
PRINTR "Nobody's home."
?CCL3: CALL2 HACK-HACK,STR?133
RSTACK
.FUNCT V-LEAD-TO
EQUAL? PRSO,CAMEL \?CCL3
EQUAL? PRSI,WATER \?CCL3
FSET? CAMEL,ANIMATEDBIT \?CCL3
ZERO? CAMEL-THIRSTY \?CCL9
ICALL PERFORM,V?EXAMINE,CAMEL
RTRUE
?CCL9: PRINTR "The camel takes the tiniest sip of lake water, snorts with disgust, and spits it right out."
?CCL3: PRINTI "It doesn't look like you'll be leading"
ICALL1 TPRINT-PRSO
PRINTI " anywhere, let alone to"
CALL2 TRPRINT,PRSI
RSTACK
.FUNCT V-LEAP
ZERO? TURNED-INTO /?CCL3
FSET? TURNED-INTO,ANIMATEDBIT /?CCL3
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL3
CALL1 V-SKIP
RSTACK
?CCL3: EQUAL? PRSO,ROOMS /?CTR7
ZERO? PRSO \?CCL8
?CTR7: EQUAL? HERE,GONDOLA \?CCL13
GRTR? DIRIGIBLE-COUNTER,0 \?CCL13
CALL2 DO-WALK,P?OUT
RSTACK
?CCL13: EQUAL? HERE,HANGING-FROM-ROOTS,UNDER-THE-WORLD,SHOULDER \?CCL17
CALL2 JIGS-UP,STR?134
RSTACK
?CCL17: CALL1 JUMPLOSS
ZERO? STACK \TRUE
EQUAL? HERE,MEGABOZ-HUT \?CCL21
IN? PROTAGONIST,LADDER \?CCL24
PRINTR "You don't need to. Thanks to the ladder, you can easily make it through the trap door."
?CCL24: PRINTR "Your best jump leaves you far short of the trap door."
?CCL21: CALL1 V-SKIP
RSTACK
?CCL8: EQUAL? PRSO,INTDIR \?CCL26
EQUAL? HERE,OUTER-BAILEY \?CCL29
EQUAL? JUMP-X,99 /?CCL29
CALL NOUN-USED?,INTDIR,W?SOUTH,W?NORTH
ZERO? STACK \?CTR28
CALL NOUN-USED?,INTDIR,W?EAST,W?WEST
ZERO? STACK /?CCL29
?CTR28: CALL NOUN-USED?,INTDIR,W?NORTH
ZERO? STACK /?CCL37
INC 'JUMP-Y
JUMP ?CND27
?CCL37: CALL NOUN-USED?,INTDIR,W?SOUTH
ZERO? STACK /?CCL39
DEC 'JUMP-Y
JUMP ?CND27
?CCL39: CALL NOUN-USED?,INTDIR,W?EAST
ZERO? STACK /?CCL41
INC 'JUMP-X
JUMP ?CND27
?CCL41: DEC 'JUMP-X
JUMP ?CND27
?CCL29: SET 'JUMP-X,99
SET 'JUMP-Y,99
?CND27: IN? PROTAGONIST,TREE-STUMP \?CND42
SET 'OLD-HERE,FALSE-VALUE
MOVE PROTAGONIST,HERE
?CND42: PRINTR "You jump once in that direction."
?CCL26: IN? PRSO,HERE /?CCL45
CALL1 IMPOSSIBLES
RSTACK
?CCL45: CALL1 JUMPLOSS
ZERO? STACK \TRUE
CALL1 V-SKIP
RSTACK
.FUNCT JUMPLOSS
EQUAL? HERE,PARAPET,UPPER-LEDGE,LOWER-LEDGE /?CTR2
EQUAL? HERE,G-U-MOUNTAIN,BALCONY,ROOF /?CTR2
EQUAL? HERE,QUARRYS-EDGE \FALSE
?CTR2: RANDOM 100
LESS? 33,STACK /?CCL9
PRINTI "Geronimo"
JUMP ?CND7
?CCL9: RANDOM 100
LESS? 50,STACK /?CCL11
PRINTI "You should have looked before you leapt"
JUMP ?CND7
?CCL11: PRINTI "This was not a very good place to try jumping"
?CND7: CALL2 JIGS-UP,STR?135
RSTACK
.FUNCT V-LEAP-OFF
FSET? PRSO,VEHBIT \?CCL3
ICALL PERFORM,V?EXIT,PRSO
RTRUE
?CCL3: ICALL PERFORM,V?LEAP,PRSO
RTRUE
.FUNCT V-LEAVE
EQUAL? PRSO,ROOMS \?CCL3
CALL2 DO-WALK,P?OUT
RSTACK
?CCL3: IN? PROTAGONIST,PRSO \?CCL5
ICALL PERFORM,V?EXIT,PRSO
RTRUE
?CCL5: ICALL PERFORM,V?DROP,PRSO
RTRUE
.FUNCT V-LET-OUT
PRINTI "But"
ICALL1 TPRINT-PRSO
PRINTR " isn't all that confined."
.FUNCT V-LIE-DOWN
IN? BEDBUG,HERE \?CCL3
PRINTI "You curl up for a moment. "
CALL2 REMOVE-BEDBUG,STR?136
RSTACK
?CCL3: FSET? PRSO,VEHBIT \?CCL5
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL5: EQUAL? PRSO,ROOMS \?CCL7
EQUAL? HERE,DIMWITS-ROOM \?CCL7
ICALL PERFORM,V?ENTER,DIMWITS-BED
RTRUE
?CCL7: CALL1 WASTES
RSTACK
.FUNCT PRE-LISTEN
ZERO? TIME-STOPPED /?CCL3
PRINTR "Unremitting silence."
?CCL3: ZERO? TURNED-INTO /FALSE
FSET? TURNED-INTO,ANIMATEDBIT /FALSE
SET 'P-CONT,-1
CALL2 TO-SPEAK-OF,STR?137
RSTACK
.FUNCT V-LISTEN,PLANT
ZERO? PRSO /?CCL3
CALL2 SENSE-OBJECT,STR?138
RSTACK
?CCL3: EQUAL? HERE,TORTURE-CHAMBER \?CCL5
FSET? METRONOME,TRYTAKEBIT \?CCL5
GRTR? METRONOME-COUNTER,0 \?CCL5
CALL1 METRONOME-TORTURE
RSTACK
?CCL5: CALL2 VISIBLE?,METRONOME
ZERO? STACK /?CCL10
ZERO? METRONOME-ON /?CCL10
ICALL QUEUE,I-METRONOME,2
CALL2 I-METRONOME,TRUE-VALUE
RSTACK
?CCL10: CALL FIND-IN,HERE,PLANTBIT >PLANT
ZERO? PLANT /?CCL14
ZERO? PLANT-TALKER /?CCL14
PRINTI "[to"
ICALL2 TPRINT,PLANT
PRINTC 93
CRLF
CALL2 PERFORM-PRSA,PLANT
RSTACK
?CCL14: PRINTR "You hear nothing of interest."
.FUNCT PRE-LOCK,KEY
ZERO? PRSI \FALSE
CALL FIND-IN,PROTAGONIST,KEYBIT >KEY
ZERO? KEY /?CCL6
SET 'PRSI,KEY
PRINTI "[with"
ICALL2 TPRINT,KEY
PRINTC 93
CRLF
RFALSE
?CCL6: SET 'AWAITING-REPLY,1
ICALL QUEUE,I-REPLY,2
PRINTR "What? With your nose?"
.FUNCT V-LOCK,KEY
FSET? PRSO,LOCKEDBIT \?CCL3
PRINT ALREADY-IS
RTRUE
?CCL3: FSET? PRSO,DOORBIT /?CTR4
EQUAL? PRSO,TRUNK \?CCL5
?CTR4: PRINTI "Unfortunately,"
ICALL1 TPRINT-PRSI
PRINTI " doesn't lock"
CALL2 TRPRINT,PRSO
RSTACK
?CCL5: PRINT YOU-CANT
PRINTI "lock"
CALL2 ARPRINT,PRSO
RSTACK
.FUNCT PRE-LOOK
ZERO? LIT \?CCL3
PRINT TOO-DARK
CRLF
RTRUE
?CCL3: EQUAL? PRSA,V?READ \?CCL5
ZERO? TURNED-INTO /?CCL5
FSET? TURNED-INTO,ANIMATEDBIT /?CCL5
SET 'P-CONT,-1
CALL2 TO-SPEAK-OF,STR?139
RSTACK
?CCL5: EQUAL? PRSA,V?READ \FALSE
CALL2 UNTOUCHABLE?,PRSO
ZERO? STACK /FALSE
FSET? PRSO,TAKEBIT \FALSE
PRINT YNH
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-LOOK
CALL2 D-ROOM,TRUE-VALUE
ZERO? STACK /TRUE
ICALL1 D-OBJECTS
RTRUE
.FUNCT V-LOOK-BEHIND
FSET? PRSO,DOORBIT \?CND1
ICALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
?CND1: PRINTI "There is nothing behind"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-LOOK-DOWN
EQUAL? PRSO,ROOMS \?CCL3
EQUAL? HERE,HANGING-FROM-ROOTS,UNDER-THE-WORLD \?CCL6
CALL1 V-LOOK
RSTACK
?CCL6: ICALL PERFORM,V?EXAMINE,GROUND
RTRUE
?CCL3: ICALL PERFORM,V?LOOK-INSIDE,PRSO
RTRUE
.FUNCT V-LOOK-INSIDE,X-RAYED
FSET? PRSO,ACTORBIT \?CCL3
PRINT IT-SEEMS-THAT
ICALL1 TPRINT-PRSO
PRINTI " has"
CALL1 D-NOTHING
ZERO? STACK \TRUE
PRINT PERIOD-CR
RTRUE
?CCL3: IN? PROTAGONIST,PRSO \?CCL7
CALL1 D-VEHICLE
RSTACK
?CCL7: FSET? PRSO,DOORBIT \?CCL9
PRINTI "All you can tell is that"
ICALL1 TPRINT-PRSO
PRINTI " is "
ICALL2 OPEN-CLOSED,PRSO
PRINT PERIOD-CR
RTRUE
?CCL9: GET PARSE-RESULT,7
EQUAL? STACK,W?OUT \?CCL11
PRINTR "You see nothing special."
?CCL11: FSET? PRSO,SURFACEBIT \?CCL13
PRINTI "On the surface of"
ICALL1 TPRINT-PRSO
PRINTI " you see"
CALL1 D-NOTHING
ZERO? STACK \TRUE
PRINT PERIOD-CR
RTRUE
?CCL13: FSET? PRSO,VEHBIT \?CCL17
FIRST? PRSO /?CCL17
FSET? PRSO,OPENBIT /?CCL22
ICALL DO-FIRST,STR?140,PRSO
RTRUE
?CCL22: FSET? PRSO,OPENBIT /?CND20
FSET? PRSO,TRANSBIT /?CND20
FSET? GOGGLES,WORNBIT \?CND20
SET 'X-RAYED,TRUE-VALUE
ICALL1 DISCOVER-X-RAY
?CND20: PRINTI "There is no one "
FSET? PRSO,INBIT \?CCL29
PRINTC 105
JUMP ?CND27
?CCL29: PRINTC 111
?CND27: PRINTC 110
CALL2 TRPRINT,PRSO
RSTACK
?CCL17: FSET? PRSO,CONTBIT \?CCL31
FSET? PRSO,OPENBIT /?CND32
FSET? PRSO,TRANSBIT /?CND32
FSET? GOGGLES,WORNBIT \?CND32
SET 'X-RAYED,TRUE-VALUE
ICALL1 DISCOVER-X-RAY
?CND32: CALL2 SEE-INSIDE?,PRSO
ZERO? STACK /?CCL39
PRINTI "Within"
ICALL1 TPRINT-PRSO
PRINTI " you see"
CALL1 D-NOTHING
ZERO? STACK \?CND40
PRINT PERIOD-CR
?CND40: ZERO? X-RAYED /TRUE
PRINTI " After a moment, the power of the goggles wanes, and"
ICALL1 TPRINT-PRSO
PRINTR " no longer seems transparent."
?CCL39: FSET? PRSO,OPENBIT /?CCL45
FIRST? PRSO \?CCL45
GET PARSE-RESULT,7
EQUAL? STACK,W?IN \?CCL45
CALL2 UNTOUCHABLE?,PRSO
ZERO? STACK /?CND49
ICALL2 CANT-REACH,PRSO
RTRUE
?CND49: ICALL PERFORM,V?OPEN,PRSO
RTRUE
?CCL45: CALL DO-FIRST,STR?140,PRSO
RSTACK
?CCL31: GET PARSE-RESULT,7
EQUAL? STACK,W?IN \?CCL52
CALL2 CANT-VERB-A-PRSO,STR?141
RSTACK
?CCL52: CALL2 CANT-VERB-A-PRSO,STR?142
RSTACK
.FUNCT V-LOOK-OVER
CALL1 V-EXAMINE
RSTACK
.FUNCT V-LOOK-UNDER
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL3
EQUAL? PRSO,WALDO /?CCL3
IN? PRSO,WALDO /?CCL3
FSET? PRSO,WORNBIT \?CCL9
PRINT WEARING-IT
RTRUE
?CCL9: PRINT HOLDING-IT
RTRUE
?CCL3: FSET? PRSO,WATERBIT \?CCL11
CALL2 PERFORM-PRSA,WATER
RSTACK
?CCL11: PRINTI "There is nothing but "
IN? PRSO,MIRROR-LAKE \?CCL14
PRINTI "ice"
JUMP ?CND12
?CCL14: LOC PRSO
FSET? STACK,DELTABIT \?CCL16
PRINTI "swamp"
JUMP ?CND12
?CCL16: EQUAL? PRSO,EAST-DOCK,SOUTH-DOCK,NORTH-DOCK /?CTR17
EQUAL? PRSO,WHARF,YACHT,WEST-DOCK /?CTR17
EQUAL? PRSO,BRIDGE /?CTR17
EQUAL? PRSO,DRAWBRIDGE /?PRD25
EQUAL? PRSO,GLOBAL-HERE \?PRD23
EQUAL? HERE,DRAWBRIDGE \?PRD23
?PRD25: FSET? DRAWBRIDGE,OPENBIT /?CTR17
?PRD23: EQUAL? HERE,LAKE-BOTTOM \?PRD30
IN? PRSO,HERE /?CTR17
?PRD30: EQUAL? PRSO,DB,WALDO \?PRD33
EQUAL? HERE,HOLD \?CTR17
?PRD33: IN? PRSO,WALDO \?PRD36
EQUAL? HERE,HOLD \?CTR17
?PRD36: IN? PRSO,FISH-TANK \?CCL18
?CTR17: PRINTI "water"
JUMP ?CND12
?CCL18: PRINTI "dust"
?CND12: PRINTR " there."
.FUNCT V-LOWER
CALL1 V-RAISE
RSTACK
.FUNCT V-MAP,TBL,RM,RM-ICON,CX,CY,CHAR
ZERO? DEMO-VERSION? /?CCL3
ICALL1 NOT-IN-DEMO
RETURN 2
?CCL3: CALL1 DO-MAP
EQUAL? STACK,M-FATAL \?CND1
RETURN 2
?CND1: GETP HERE,P?MAP-LOC >TBL
GET TBL,1
CALL2 MAP-Y,STACK >CY
GET TBL,2
CALL2 MAP-X,STACK >CX
?PRG9: ISAVE
EQUAL? 2,STACK \?CND11
ICALL1 V-$REFRESH
?CND11: GETP HERE,P?ICON >RM-ICON
ZERO? RM-ICON /?CCL15
PUSH RM-ICON
JUMP ?CND13
?CCL15: PUSH ICONLESS-ROOM-BOX
?CND13: CALL BLINK,STACK,YOU-ARE-HERE-SYMBOL,CY,CX,S-FULL >CHAR
EQUAL? CHAR,CLICK1,CLICK2 \?REP10
CALL1 MAP-CLICK
ZERO? STACK /?CND19
SET 'ROSE-NEEDS-UPDATING,TRUE-VALUE
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?REP10
FSET? HERE,DELTABIT \?CCL25
ICALL1 RETURN-FROM-MAP
JUMP ?REP10
?CCL25: ZERO? CHANGE-MAP /?CND21
ICALL1 DO-MAP
?CND21: GETP HERE,P?MAP-LOC >TBL
GET TBL,1
CALL2 MAP-Y,STACK >CY
GET TBL,2
CALL2 MAP-X,STACK >CX
?CND19: EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC /?PRG9
?REP10: CALL1 RETURN-FROM-MAP
RSTACK
.FUNCT DO-MAP,TBL,MAP-NUM,RM,RM-ICON,?TMP1
SET 'CHANGE-MAP,FALSE-VALUE
EQUAL? HERE,GONDOLA \?CCL3
GETP HERE,P?MAP-LOC
GET STACK,0
EQUAL? STACK,FALSE-VALUE \?CCL3
PRINTI "[Mapping is temporarily unavailable.]"
CRLF
RETURN 2
?CCL3: GETP HERE,P?MAP-LOC
ZERO? STACK \?CCL9
PRINTI "[No on-screen map is available for this location."
EQUAL? HERE,CONSTRUCTION \?CND10
PRINTI " Use the blueprint from your package."
?CND10: PRINTC 93
CRLF
RETURN 2
?CCL9: FSET? HERE,DELTABIT /?PRD17
EQUAL? HERE,RIVERS-END,OCEANS-EDGE \?CCL15
?PRD17: ZERO? CHANGED-MAP-WARNING \?CCL15
SET 'CHANGED-MAP-WARNING,TRUE-VALUE
PRINTI "The jester "
IN? JESTER,HERE /?CND20
PRINTI "appears for a moment and "
?CND20: PRINTI "says, ""It may seem odd and it may seem queer, but on-screen mapping works differently here."""
CRLF
CRLF
ICALL1 HIT-ANY-KEY
JUMP ?CND1
?CCL15: ZERO? MAP-NOTE \?CND1
SET 'MAP-NOTE,TRUE-VALUE
PRINTI "Please read the section in the manual on on-screen mapping, if you have not already done so. Are you ready to see the map (y or n)? >"
CALL1 Y?
ZERO? STACK \?CND1
RETURN 2
?CND1: PICINF MAP-BOX-SIZE,PICINF-TBL /?BOGUS27
?BOGUS27: GET PICINF-TBL,1 >MAP-BOX-WIDTH
GET PICINF-TBL,0 >MAP-BOX-HEIGHT
PICINF MAP-SPACE-SIZE,PICINF-TBL /?BOGUS28
?BOGUS28: GET PICINF-TBL,1 >MAP-SPACE-WIDTH
GET PICINF-TBL,0 >MAP-SPACE-HEIGHT
ICALL2 PICINF-PLUS-ONE,MAP-TOP-LEFT-LOC
GET PICINF-TBL,1 >MAP-TOP-LEFT-X
GET PICINF-TBL,0 >MAP-TOP-LEFT-Y
PICINF MAP-BASIC-ELT-SIZE,PICINF-TBL /?BOGUS29
?BOGUS29: GET PICINF-TBL,1 >MAP-ELEMENT-WIDTH
GET PICINF-TBL,0 >MAP-ELEMENT-HEIGHT
CLEAR -1
SCREEN S-FULL
SET 'CURRENT-SPLIT,MAP-TOP-LEFT-LOC
DISPLAY MAP-BORDER,1,1
GETP HERE,P?MAP-LOC >TBL
GET TBL,0 >MAP-NUM
FIRST? ROOMS >RM /?BOGUS30
?BOGUS30: ICALL2 MODIFY-PICSET-TBL,MAP-NUM
PICSET MAP-PICSET-TBL
ICALL2 DRAW-TITLES,MAP-NUM
?PRG31: ZERO? RM /?REP32
GETP RM,P?MAP-LOC >TBL
ZERO? TBL /?CND35
GET TBL,0
EQUAL? STACK,MAP-NUM \?CND35
FSET? RM,TOUCHBIT /?CCL38
EQUAL? HERE,RM /?CCL38
EQUAL? RM,FR-OFFICES,OFFICES-NORTH,OFFICES-SOUTH /?PRD45
EQUAL? RM,OFFICES-EAST,OFFICES-WEST \?CND35
?PRD45: ZERO? BEEN-IN-FR-UPPER-FLOORS /?CND35
?CCL38: FSET? RM,DELTABIT \?CCL50
FIRST? RM \?CND35
?CCL50: GETP RM,P?ICON >RM-ICON
ZERO? RM-ICON /?CCL54
GET TBL,1 >?TMP1
GET TBL,2
ICALL DISPLAY-ROOM,RM-ICON,?TMP1,STACK
ICALL DRAW-CONS,RM,TBL
JUMP ?CND35
?CCL54: GET TBL,1 >?TMP1
GET TBL,2
ICALL DISPLAY-ROOM,ICONLESS-ROOM-BOX,?TMP1,STACK
ICALL DRAW-CONS,RM,TBL
?CND35: NEXT? RM >RM /?PRG31
JUMP ?PRG31
?REP32: ICALL2 PICINF-PLUS-ONE,MAP-ROSE-LOC
GET PICINF-TBL,0 >?TMP1
GET PICINF-TBL,1
DISPLAY MAP-ROSE-BG,?TMP1,STACK
CALL1 UPDATE-MAP-ROSE
RSTACK
.FUNCT UPDATE-MAP-ROSE
SET 'ROSE-NEEDS-UPDATING,FALSE-VALUE
ICALL2 PICINF-PLUS-ONE,MAP-COMPASS-PIC-LOC
ICALL DRAW-COMPASS-ROSE,P?NORTH,MAP-N-HL,MAP-N-UNHL
ICALL DRAW-COMPASS-ROSE,P?NE,MAP-NE-HL,MAP-NE-UNHL
ICALL DRAW-COMPASS-ROSE,P?EAST,MAP-E-HL,MAP-E-UNHL
ICALL DRAW-COMPASS-ROSE,P?SE,MAP-SE-HL,MAP-SE-UNHL
ICALL DRAW-COMPASS-ROSE,P?SOUTH,MAP-S-HL,MAP-S-UNHL
ICALL DRAW-COMPASS-ROSE,P?SW,MAP-SW-HL,MAP-SW-UNHL
ICALL DRAW-COMPASS-ROSE,P?WEST,MAP-W-HL,MAP-W-UNHL
CALL DRAW-COMPASS-ROSE,P?NW,MAP-NW-HL,MAP-NW-UNHL
RSTACK
.FUNCT MODIFY-PICSET-TBL,MAP-NUM,TBL,?TMP1
EQUAL? MAP-NUM,MAIN-MAP-NUM \?CCL3
SET 'TBL,MAIN-ICON-TBL
JUMP ?CND1
?CCL3: EQUAL? MAP-NUM,SECRET-WING-MAP-NUM \?CCL5
SET 'TBL,SECRET-WING-ICON-TBL
JUMP ?CND1
?CCL5: EQUAL? MAP-NUM,VILLAGE-MAP-NUM \?CCL7
SET 'TBL,VILLAGE-ICON-TBL
JUMP ?CND1
?CCL7: EQUAL? MAP-NUM,LOWER-LEVEL-MAP-NUM \?CCL9
SET 'TBL,LOWER-LEVEL-ICON-TBL
JUMP ?CND1
?CCL9: EQUAL? MAP-NUM,LAKE-MAP-NUM \?CCL11
SET 'TBL,LAKE-ICON-TBL
JUMP ?CND1
?CCL11: EQUAL? MAP-NUM,DESERT-MAP-NUM \?CCL13
SET 'TBL,DESERT-ICON-TBL
JUMP ?CND1
?CCL13: EQUAL? MAP-NUM,FOOZLE-MAP-NUM \?CCL15
SET 'TBL,FOOZLE-ICON-TBL
JUMP ?CND1
?CCL15: EQUAL? MAP-NUM,FENSHIRE-MAP-NUM \?CCL17
SET 'TBL,FENSHIRE-ICON-TBL
JUMP ?CND1
?CCL17: EQUAL? MAP-NUM,FJORD-MAP-NUM \?CCL19
SET 'TBL,CRAG-ICON-TBL
JUMP ?CND1
?CCL19: EQUAL? MAP-NUM,GRAY-MOUNTAINS-MAP-NUM \?CCL21
SET 'TBL,GLACIER-ICON-TBL
JUMP ?CND1
?CCL21: EQUAL? MAP-NUM,DELTA-MAP-NUM \?CCL23
SET 'TBL,DELTA-ICON-TBL
JUMP ?CND1
?CCL23: EQUAL? MAP-NUM,FUBLIO-MAP-NUM \?CCL25
SET 'TBL,FUBLIO-ICON-TBL
JUMP ?CND1
?CCL25: SET 'TBL,ANTHARIA-ICON-TBL
?CND1: ADD TBL,2 >?TMP1
GET TBL,0
MUL 2,STACK
COPYT ?TMP1,MAP-PICSET-TBL+42,STACK
RTRUE
.FUNCT MAP-CLICK,TL-X,TL-Y,BR-X,BR-Y,TOP,CNT-X,CNT-Y,DONE,DIR,OHERE,TBL,MAP-NUM
SET 'CNT-X,1
SET 'CNT-Y,1
CALL1 MAP-NEIGHBORS >DIR
ZERO? DIR /?CCL3
ICALL2 DO-WALK,DIR
GETP HERE,P?ACTION
ICALL D-APPLY,STR?143,STACK,M-END
ICALL1 CLOCKER
RTRUE
?CCL3: CALL COMPASS-CLICK,MAP-COMPASS-PIC-LOC,MAP-N-HL >DIR
ZERO? DIR /?CCL5
SET 'OHERE,HERE
GETP HERE,P?MAP-LOC >TBL
GET TBL,0 >MAP-NUM
ICALL2 DO-WALK,DIR
EQUAL? HERE,OHERE \?CCL8
SOUND 1
RFALSE
?CCL8: GETP HERE,P?MAP-LOC >TBL
ZERO? TBL /?CCL10
GET TBL,0
EQUAL? MAP-NUM,STACK /?CND6
SET 'CHANGE-MAP,TRUE-VALUE
JUMP ?CND6
?CCL10: ICALL1 RETURN-FROM-MAP
?CND6: GETP HERE,P?ACTION
ICALL D-APPLY,STR?143,STACK,M-END
ICALL1 CLOCKER
RTRUE
?CCL5: SOUND 1
RFALSE
.FUNCT MAP-NEIGHBORS,DIR,PT,PTS,TMP,?PR-DIR,?PR-PT
SET '?PR-DIR,65
?PRG1: DLESS? '?PR-DIR,LOW-DIRECTION /FALSE
GETPT HERE,?PR-DIR >?PR-PT
ZERO? ?PR-PT /?PRG1
PTSIZE ?PR-PT >PTS
EQUAL? PTS,NEXIT /?PRG1
EQUAL? PTS,UEXIT,CEXIT \?CCL10
GETB ?PR-PT,REXIT >TMP
CALL2 CLICKED-ON-NEIGHBOR,TMP
ZERO? STACK /?PRG1
RETURN ?PR-DIR
?CCL10: EQUAL? PTS,DEXIT \?CCL14
GETB ?PR-PT,DEXITRM >TMP
CALL2 CLICKED-ON-NEIGHBOR,TMP
ZERO? STACK /?PRG1
RETURN ?PR-DIR
?CCL14: EQUAL? PTS,FEXIT \?PRG1
SET 'PRSO,?PR-DIR
GET ?PR-PT,FEXITFCN
CALL STACK,M-ENTER >TMP
ZERO? TMP /?PRG1
CALL2 CLICKED-ON-NEIGHBOR,TMP
ZERO? STACK /?PRG1
RETURN ?PR-DIR
.FUNCT CLICKED-ON-NEIGHBOR,RM,TL-X,TL-Y,BR-X,BR-Y,TBL,MAP-NUM
GETP HERE,P?MAP-LOC >TBL
GET TBL,0 >MAP-NUM
GETP RM,P?MAP-LOC >TBL
ZERO? TBL /FALSE
GET TBL,0
EQUAL? STACK,MAP-NUM \FALSE
GET TBL,1
CALL2 MAP-Y,STACK >TL-Y
GET TBL,2
CALL2 MAP-X,STACK >TL-X
PICINF MAP-BOX-SIZE,PICINF-TBL /?BOGUS6
?BOGUS6: GET PICINF-TBL,0
ADD TL-Y,STACK >BR-Y
GET PICINF-TBL,1
ADD TL-X,STACK >BR-X
CALL WITHIN?,TL-X,TL-Y,BR-X,BR-Y
ZERO? STACK /FALSE
RTRUE
.FUNCT RETURN-FROM-MAP
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \FALSE
SET 'CHANGE-MAP,FALSE-VALUE
SET 'CURRENT-SPLIT,TEXT-WINDOW-PIC-LOC
ICALL1 V-$REFRESH
EQUAL? VERBOSITY,2 \?PRG6
ICALL1 V-LOOK
?PRG6: RETURN 2
.FUNCT MAP-X,X-POS
GRTR? X-POS,0 \?CCL3
ICALL2 PICINF-PLUS-ONE,X-POS
GET PICINF-TBL,1
RSTACK
?CCL3: SUB 0,X-POS
MUL STACK,MAP-ELEMENT-WIDTH
ADD MAP-TOP-LEFT-X,STACK
RSTACK
.FUNCT MAP-Y,Y-POS
GRTR? Y-POS,0 \?CCL3
ICALL2 PICINF-PLUS-ONE,Y-POS
GET PICINF-TBL,0
RSTACK
?CCL3: SUB 0,Y-POS
MUL STACK,MAP-ELEMENT-HEIGHT
ADD MAP-TOP-LEFT-Y,STACK
RSTACK
.FUNCT DISPLAY-ROOM,PICTURE-ID,Y-POS,X-POS,Y-FUDGE,X-FUDGE,?TMP1
CALL2 MAP-Y,Y-POS
ADD Y-FUDGE,STACK >?TMP1
CALL2 MAP-X,X-POS
ADD X-FUDGE,STACK
DISPLAY PICTURE-ID,?TMP1,STACK
RTRUE
.FUNCT DRAW-TITLES,MAP-NUM,TMP,TMP1,?TMP1
EQUAL? MAP-NUM,MAIN-MAP-NUM \?CCL3
ICALL DISPLAY-ROOM,MAIN-TITLE,MAIN-TITLE-LOC,MAIN-TITLE-LOC
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-1
FSET? CHAPEL,TOUCHBIT \?CND4
ICALL DISPLAY-ROOM,DOWN-EAST-SYMBOL,MAP-GEN-Y-6,MAP-GEN-X-8,0,MAP-BOX-WIDTH
?CND4: FSET? GREAT-HALL,TOUCHBIT \FALSE
SUB MAP-BOX-HEIGHT,2 >?TMP1
ADD MAP-SPACE-WIDTH,2
SUB 0,STACK
ICALL DISPLAY-ROOM,DOWN-NE-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-5,?TMP1,STACK
SUB MAP-BOX-HEIGHT,2 >?TMP1
SUB MAP-BOX-WIDTH,2
CALL DISPLAY-ROOM,DOWN-SE-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-5,?TMP1,STACK
RSTACK
?CCL3: EQUAL? MAP-NUM,SECRET-WING-MAP-NUM \?CCL10
ICALL DISPLAY-ROOM,SECRET-WING-TITLE,SECRET-WING-TITLE-LOC,MAP-GEN-X-1
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-8
FSET? CRYPT,TOUCHBIT \FALSE
CALL DISPLAY-ROOM,DOWN-EAST-SYMBOL,MAP-GEN-Y-3,MAP-GEN-X-8,0,MAP-BOX-WIDTH
RSTACK
?CCL10: EQUAL? MAP-NUM,VILLAGE-MAP-NUM \?CCL15
ICALL DISPLAY-ROOM,VILLAGE-TITLE,MAP-GEN-Y-5,MAP-GEN-X-1
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-10
FSET? SHADY-PARK,TOUCHBIT \?CND16
FSET? VILLAGE-CENTER,TOUCHBIT \?CND16
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6
CALL2 MAP-X,5-FUDGE >TMP
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6,0,TMP
MUL TMP,2
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6,0,STACK
MUL TMP,3
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-6,0,STACK
?CND16: FSET? FR-HQ,TOUCHBIT \?CND20
SUB MAP-BOX-HEIGHT,2 >?TMP1
SUB MAP-BOX-WIDTH,2
ICALL DISPLAY-ROOM,LOBBY-OFFICE-CON,MAP-GEN-Y-3,MAP-GEN-X-8,?TMP1,STACK
?CND20: ZERO? BEEN-IN-FR-UPPER-FLOORS /FALSE
SUB MAP-BOX-HEIGHT,2 >?TMP1
SUB MAP-BOX-WIDTH,2
CALL DISPLAY-ROOM,OFFICE-PENTHOUSE-CON,MAP-GEN-Y-5,MAP-GEN-X-8,?TMP1,STACK
RSTACK
?CCL15: EQUAL? MAP-NUM,LOWER-LEVEL-MAP-NUM \?CCL26
ICALL DISPLAY-ROOM,LOWER-LEVEL-TITLE,MAP-GEN-Y-5,MAP-GEN-X-9
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-2,MAP-GEN-X-8
FSET? LOWEST-HALL,TOUCHBIT \?CND27
SUB MAP-BOX-HEIGHT,2 >?TMP1
SUB MAP-BOX-WIDTH,2
ICALL DISPLAY-ROOM,DOWN-SW-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-4,?TMP1,STACK
ICALL DISPLAY-ROOM,LOW-HALL-CON,MAP-GEN-Y-5,MAP-GEN-X-4,0,MAP-BOX-WIDTH
?CND27: FSET? LOWER-HALL,TOUCHBIT \FALSE
CALL DISPLAY-ROOM,DOWN-WEST-SYMBOL,MAP-GEN-Y-5,MAP-GEN-X-6,0,MAP-BOX-WIDTH
RSTACK
?CCL26: EQUAL? MAP-NUM,LAKE-MAP-NUM \?CCL33
ICALL DISPLAY-ROOM,LAKE-TITLE,LAKE-TITLE-LOC,LAKE-TITLE-LOC
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-6,MAP-GEN-X-8
FSET? HOLD,TOUCHBIT \?CND34
ICALL DISPLAY-ROOM,DOWN-SOUTH-SYMBOL,MAP-GEN-Y-4,MAP-GEN-X-1,MAP-BOX-HEIGHT
ICALL DISPLAY-ROOM,DOWN-SOUTH-SYMBOL,MAP-GEN-Y-5,MAP-GEN-X-1,MAP-BOX-HEIGHT
?CND34: FSET? UNDERWATER,TOUCHBIT \?CND36
ICALL DISPLAY-ROOM,DOWN-SOUTH-SYMBOL,MAP-GEN-Y-6,MAP-GEN-X-1,MAP-BOX-HEIGHT
?CND36: FSET? GROTTO,TOUCHBIT \?CND38
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7
CALL2 MAP-Y,5-FUDGE >TMP
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,TMP
MUL TMP,2
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,STACK
MUL TMP,3
ICALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,STACK
?CND38: FSET? CONDUCTOR-PIT,TOUCHBIT \FALSE
CALL DISPLAY-ROOM,DOWN-WEST-SYMBOL,MAP-GEN-Y-3,MAP-GEN-X-3,0,MAP-BOX-WIDTH
RSTACK
?CCL33: EQUAL? MAP-NUM,DESERT-MAP-NUM \?CCL44
ICALL DISPLAY-ROOM,DESERT-TITLE,MAP-GEN-Y-2,MAP-GEN-X-2
CALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-3,MAP-GEN-X-8
RSTACK
?CCL44: EQUAL? MAP-NUM,FOOZLE-MAP-NUM \?CCL46
ICALL DISPLAY-ROOM,FOOZLE-TITLE,MAP-GEN-Y-1,MAP-GEN-X-2
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-10
ICALL DISPLAY-ROOM,FOOZLE-MAP-ILL,MAP-GEN-Y-6,MAP-GEN-X-8
FSET? WISHYFOO-TERRITORY,TOUCHBIT \?CND47
ICALL DISPLAY-ROOM,WISHYFOO-FORK-CON,MAP-GEN-Y-4,MAP-GEN-X-4,MAP-BOX-HEIGHT
?CND47: FSET? CAVE-IN,TOUCHBIT \?CND49
ICALL DISPLAY-ROOM,E-W-CON,MAP-GEN-Y-3,MAP-GEN-X-8,0,MAP-BOX-WIDTH
?CND49: FSET? FISSURE-EDGE,TOUCHBIT \FALSE
CALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-4,MAP-GEN-X-7,MAP-BOX-HEIGHT
RSTACK
?CCL46: EQUAL? MAP-NUM,FENSHIRE-MAP-NUM \?CCL55
ICALL DISPLAY-ROOM,FENSHIRE-TITLE,MAP-GEN-Y-3,MAP-GEN-X-5
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-6,MAP-GEN-X-1
CALL DISPLAY-ROOM,FENSHIRE-MAP-ILL,MAP-GEN-Y-5,MAP-GEN-X-6
RSTACK
?CCL55: EQUAL? MAP-NUM,FJORD-MAP-NUM \?CCL57
ICALL DISPLAY-ROOM,FJORD-TITLE,MAP-GEN-Y-2,MAP-GEN-X-8
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-1
ICALL DISPLAY-ROOM,FJORD-MAP-ILL,MAP-GEN-Y-6,MAP-GEN-X-5
ICALL DISPLAY-ROOM,RV-TELEPORT-ARROW,MAP-GEN-Y-4,MAP-GEN-X-4,MAP-BOX-HEIGHT
FSET? CRAG,TOUCHBIT \FALSE
FSET? NATURAL-ARCH,TOUCHBIT \FALSE
CALL2 MAP-Y,ARCH-N-CON-SIZE
SUB 0,STACK
ADD STACK,1
ICALL DISPLAY-ROOM,ARCH-N-CON,MAP-GEN-Y-4,MAP-GEN-X-4,STACK,MAP-BOX-WIDTH
CALL DISPLAY-ROOM,ARCH-S-CON,MAP-GEN-Y-4,MAP-GEN-X-4,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
RSTACK
?CCL57: EQUAL? MAP-NUM,GRAY-MOUNTAINS-MAP-NUM \?CCL64
ICALL DISPLAY-ROOM,GRAY-MTS-TITLE,MAP-GEN-Y-5,MAP-GEN-X-7
ICALL DISPLAY-ROOM,VERTICAL-LEGEND,MAP-GEN-Y-1,MAP-GEN-X-2
ICALL DISPLAY-ROOM,GRAY-MTS-MAP-ILL,MAP-GEN-Y-5,MAP-GEN-X-1
ICALL DISPLAY-ROOM,RV-TELEPORT-ARROW,MAP-GEN-Y-1,MAP-GEN-X-10,MAP-BOX-HEIGHT
FSET? GLACIER,TOUCHBIT \FALSE
SUB MAP-BOX-HEIGHT,2 >?TMP1
SUB MAP-BOX-WIDTH,2
CALL DISPLAY-ROOM,GLACIER-MIRROR-CON,MAP-GEN-Y-1,MAP-GEN-X-8,?TMP1,STACK
RSTACK
?CCL64: EQUAL? MAP-NUM,DELTA-MAP-NUM \?CCL69
ICALL DISPLAY-ROOM,DELTA-TITLE,MAP-GEN-Y-6,MAP-GEN-X-1
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-3,MAP-GEN-X-1
ICALL DISPLAY-ROOM,DELTA-MAP-ILL,MAP-GEN-Y-1,MAP-GEN-X-1
ICALL DISPLAY-ROOM,RV-TELEPORT-ARROW,MAP-GEN-Y-5,MAP-GEN-X-10,MAP-BOX-HEIGHT
FIRST? DELTA-1 \?CND70
FIRST? DELTA-2 \?CND70
ICALL DISPLAY-ROOM,ARCH-S-CON,MAP-GEN-Y-5,MAP-GEN-X-8,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
CALL2 MAP-Y,ARCH-N-CON-SIZE
SUB 0,STACK
ADD STACK,1
ICALL DISPLAY-ROOM,ARCH-N-CON,MAP-GEN-Y-5,MAP-GEN-X-8,STACK,MAP-BOX-WIDTH
?CND70: FIRST? DELTA-1 \?CND74
FIRST? DELTA-3 \?CND74
DIV MAP-BOX-HEIGHT,2
SUB STACK,1
ICALL DISPLAY-ROOM,DELTA-1-3-CON,MAP-GEN-Y-3,MAP-GEN-X-8,STACK,MAP-BOX-WIDTH
?CND74: FIRST? DELTA-1 \?CND78
FIRST? DELTA-4 \?CND78
ICALL DISPLAY-ROOM,DELTA-1-4-CON,MAP-GEN-Y-2,MAP-GEN-X-9,0,MAP-BOX-WIDTH
?CND78: FIRST? DELTA-2 \?CND82
FIRST? DELTA-7 \?CND82
ICALL DISPLAY-ROOM,RUBBLE-SE-CON,MAP-GEN-Y-5,MAP-GEN-X-7,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
?CND82: FIRST? DELTA-2 \?CND86
FIRST? DELTA-3 \?CND86
CALL2 MAP-X,2-3-CON-SIZE
SUB 0,STACK
ADD STACK,1
ICALL DISPLAY-ROOM,DELTA-2-3-CON,MAP-GEN-Y-3,MAP-GEN-X-8,MAP-BOX-HEIGHT,STACK
?CND86: FIRST? DELTA-3 \?CND90
FIRST? DELTA-4 \?CND90
CALL2 MAP-Y,RUBBLE-CON-SIZE
SUB 0,STACK
SUB STACK,1 >?TMP1
CALL2 MAP-X,RUBBLE-CON-SIZE
SUB 0,STACK
SUB STACK,1
ICALL DISPLAY-ROOM,RUBBLE-NW-CON,MAP-GEN-Y-3,MAP-GEN-X-9,?TMP1,STACK
?CND90: FIRST? DELTA-3 \?CND94
FIRST? DELTA-5 \?CND94
CALL2 MAP-X,3-5-CON-SIZE
SUB 0,STACK
ADD STACK,1
ICALL DISPLAY-ROOM,DELTA-3-5-CON,MAP-GEN-Y-2,MAP-GEN-X-8,MAP-BOX-HEIGHT,STACK
?CND94: FIRST? DELTA-4 \?CND98
FIRST? DELTA-5 \?CND98
CALL2 MAP-Y,ARCH-N-CON-SIZE
SUB 0,STACK
ADD STACK,1
ICALL DISPLAY-ROOM,ARCH-N-CON,MAP-GEN-Y-2,MAP-GEN-X-7,STACK,MAP-BOX-WIDTH
?CND98: FIRST? DELTA-5 \?CND102
FIRST? DELTA-6 \?CND102
FSET? DELTA-6,TOUCHBIT \?CND102
CALL2 MAP-X,5-6-CON-SIZE
SUB 0,STACK
ADD STACK,1
ICALL DISPLAY-ROOM,DELTA-5-6-CON,MAP-GEN-Y-2,MAP-GEN-X-7,MAP-BOX-HEIGHT,STACK
?CND102: FIRST? DELTA-6 \FALSE
FSET? DELTA-6,TOUCHBIT \FALSE
FIRST? DELTA-7 \FALSE
CALL2 MAP-X,6-7-CON-SIZE
SUB 0,STACK
CALL DISPLAY-ROOM,DELTA-6-7-CON,MAP-GEN-Y-5,MAP-GEN-X-7,0,STACK
RSTACK
?CCL69: EQUAL? MAP-NUM,FUBLIO-MAP-NUM \?CCL114
ICALL DISPLAY-ROOM,FUBLIO-TITLE,MAP-GEN-Y-2,MAP-GEN-X-9
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-4,MAP-GEN-X-1
CALL2 MAP-Y,TELEPORT-ARROW-SIZE
SUB 0,STACK
CALL DISPLAY-ROOM,TELEPORT-ARROW,MAP-GEN-Y-4,MAP-GEN-X-8,STACK
RSTACK
?CCL114: EQUAL? MAP-NUM,ANTHARIA-MAP-NUM \FALSE
ICALL DISPLAY-ROOM,ANTHARIA-TITLE,MAP-GEN-Y-5,MAP-GEN-X-1
ICALL DISPLAY-ROOM,HORIZONTAL-LEGEND,MAP-GEN-Y-6,MAP-GEN-X-1
ICALL DISPLAY-ROOM,ANTHARIA-MAP-ILL,MAP-GEN-Y-1,MAP-GEN-X-1
CALL2 MAP-Y,TELEPORT-ARROW-SIZE
SUB 0,STACK
ICALL DISPLAY-ROOM,TELEPORT-ARROW,MAP-GEN-Y-4,MAP-GEN-X-8,STACK
FSET? RUBBLE-ROOM,TOUCHBIT \?CND117
FSET? HEART-OF-MINE,TOUCHBIT \?CND117
ICALL DISPLAY-ROOM,RUBBLE-SE-CON,MAP-GEN-Y-3,MAP-GEN-X-9,MAP-BOX-HEIGHT,MAP-BOX-WIDTH
CALL2 MAP-Y,RUBBLE-CON-SIZE
SUB 0,STACK
SUB STACK,1 >?TMP1
CALL2 MAP-X,RUBBLE-CON-SIZE
SUB 0,STACK
SUB STACK,1
ICALL DISPLAY-ROOM,RUBBLE-NW-CON,MAP-GEN-Y-4,MAP-GEN-X-10,?TMP1,STACK
?CND117: FSET? NORTH-OF-ANTHAR,TOUCHBIT \FALSE
CALL DISPLAY-ROOM,N-S-CON,MAP-GEN-Y-6,MAP-GEN-X-6,MAP-BOX-HEIGHT
RSTACK
.FUNCT DRAW-CONS,RM,TBL,Y,X,PTS,NEXT-RM,NEXT-TBL,NEXT-Y,NEXT-X,?TMP1
GET TBL,1
CALL2 MAP-Y,STACK >Y
GET TBL,2
CALL2 MAP-X,STACK >X
CALL SHOW-DIRECTION?,RM,P?NORTH
ZERO? STACK /?CND1
SUB Y,MAP-SPACE-HEIGHT
DISPLAY N-S-CON,STACK,X
?CND1: CALL SHOW-DIRECTION?,RM,P?NE
ZERO? STACK /?CND3
SUB Y,MAP-SPACE-HEIGHT >?TMP1
ADD X,MAP-BOX-WIDTH
DISPLAY NE-SW-CON,?TMP1,STACK
?CND3: CALL SHOW-DIRECTION?,RM,P?EAST
ZERO? STACK /?CND5
ADD X,MAP-BOX-WIDTH
DISPLAY E-W-CON,Y,STACK
?CND5: CALL SHOW-DIRECTION?,RM,P?SE
ZERO? STACK /?CND7
ADD Y,MAP-BOX-HEIGHT >?TMP1
ADD X,MAP-BOX-WIDTH
DISPLAY NW-SE-CON,?TMP1,STACK
?CND7: CALL SHOW-DIRECTION?,RM,P?SOUTH
ZERO? STACK /?CND9
ADD Y,MAP-BOX-HEIGHT
DISPLAY N-S-CON,STACK,X
?CND9: CALL SHOW-DIRECTION?,RM,P?SW
ZERO? STACK /?CND11
ADD Y,MAP-BOX-HEIGHT >?TMP1
SUB X,MAP-SPACE-WIDTH
DISPLAY NE-SW-CON,?TMP1,STACK
?CND11: CALL SHOW-DIRECTION?,RM,P?WEST
ZERO? STACK /?CND13
SUB X,MAP-SPACE-WIDTH
DISPLAY E-W-CON,Y,STACK
?CND13: CALL SHOW-DIRECTION?,RM,P?NW
ZERO? STACK /?CND15
SUB Y,MAP-SPACE-HEIGHT >?TMP1
SUB X,MAP-SPACE-WIDTH
DISPLAY NW-SE-CON,?TMP1,STACK
?CND15: GETPT RM,P?DOWN >PTS
ZERO? PTS /?CND17
PTSIZE PTS
EQUAL? STACK,UEXIT,CEXIT \?CCL21
GETB PTS,REXIT >NEXT-RM
JUMP ?CND19
?CCL21: PTSIZE PTS
EQUAL? STACK,DEXIT \?CND19
GETB PTS,DEXITRM >NEXT-RM
?CND19: EQUAL? RM,LOWER-HALL \?CCL25
FSET? LOWEST-HALL,TOUCHBIT /?CND17
?CCL25: EQUAL? RM,WISHYFOO-TERRITORY /?CND17
ZERO? NEXT-RM /?CND17
GETP NEXT-RM,P?MAP-LOC >NEXT-TBL
ZERO? NEXT-TBL /?CND17
GET NEXT-TBL,0 >?TMP1
GET TBL,0
EQUAL? ?TMP1,STACK \?CND17
GET NEXT-TBL,1
CALL2 MAP-Y,STACK >NEXT-Y
GET NEXT-TBL,2
CALL2 MAP-X,STACK >NEXT-X
EQUAL? X,NEXT-X \?CCL36
GRTR? Y,NEXT-Y \?CCL39
SUB Y,MAP-SPACE-HEIGHT
DISPLAY DOWN-NORTH-SYMBOL,STACK,X
JUMP ?CND17
?CCL39: ADD Y,MAP-BOX-HEIGHT
DISPLAY DOWN-SOUTH-SYMBOL,STACK,X
JUMP ?CND17
?CCL36: EQUAL? Y,NEXT-Y \?CND17
GRTR? X,NEXT-X \?CCL43
SUB X,MAP-SPACE-WIDTH
DISPLAY DOWN-WEST-SYMBOL,Y,STACK
JUMP ?CND17
?CCL43: ADD X,MAP-BOX-WIDTH
DISPLAY DOWN-EAST-SYMBOL,Y,STACK
?CND17: SET 'NEXT-RM,FALSE-VALUE
GETPT RM,P?UP >PTS
ZERO? PTS /FALSE
PTSIZE PTS
EQUAL? STACK,UEXIT,CEXIT \?CCL49
GETB PTS,REXIT >NEXT-RM
JUMP ?CND47
?CCL49: PTSIZE PTS
EQUAL? STACK,DEXIT \?CND47
GETB PTS,DEXITRM >NEXT-RM
?CND47: ZERO? NEXT-RM /FALSE
GETP NEXT-RM,P?MAP-LOC >NEXT-TBL
ZERO? NEXT-TBL /FALSE
GET NEXT-TBL,0 >?TMP1
GET TBL,0
EQUAL? ?TMP1,STACK \FALSE
GET NEXT-TBL,1
CALL2 MAP-Y,STACK >NEXT-Y
GET NEXT-TBL,2
CALL2 MAP-X,STACK >NEXT-X
EQUAL? X,NEXT-X \?CCL59
GRTR? Y,NEXT-Y \?CCL62
SUB Y,MAP-SPACE-HEIGHT
DISPLAY DOWN-SOUTH-SYMBOL,STACK,X
RTRUE
?CCL62: ADD Y,MAP-BOX-HEIGHT
DISPLAY DOWN-NORTH-SYMBOL,STACK,X
RTRUE
?CCL59: EQUAL? Y,NEXT-Y \FALSE
GRTR? X,NEXT-X \?CCL67
SUB X,MAP-SPACE-WIDTH
DISPLAY DOWN-EAST-SYMBOL,Y,STACK
RTRUE
?CCL67: ADD X,MAP-BOX-WIDTH
DISPLAY DOWN-WEST-SYMBOL,Y,STACK
RTRUE
.FUNCT V-MAYBE
CALL2 YOU-SOUND,STR?144
RSTACK
.FUNCT V-MEET
ICALL PERFORM,V?TELL,PRSO
RTRUE
.FUNCT V-MEASURE
FSET? PRSO,PARTBIT /?CTR2
EQUAL? PRSO,ME \?CCL3
?CTR2: PRINTR "Usual size."
?CCL3: PRINTI "The same size as any other "
ICALL2 DPRINT,PRSO
PRINT PERIOD-CR
RTRUE
.FUNCT V-MIRROR-LOOK
IN? PRSO,PRSI \?CCL3
ICALL PERFORM,V?EXAMINE,PRSO
RTRUE
?CCL3: PRINTI "But"
ICALL1 TPRINT-PRSO
PRINTI " isn't in"
CALL2 TRPRINT,PRSI
RSTACK
.FUNCT V-MOVE
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL3
CALL1 WASTES
RSTACK
?CCL3: FSET? PRSO,INTEGRALBIT \?CCL5
CALL1 PART-OF
RSTACK
?CCL5: CALL2 LOC-CLOSED,PRSO
ZERO? STACK \TRUE
FSET? PRSO,TAKEBIT \?CCL9
PRINTI "Moving"
ICALL1 TPRINT-PRSO
PRINTR " reveals nothing."
?CCL9: EQUAL? P-PRSA-WORD,W?PULL \?CCL11
CALL2 HACK-HACK,STR?145
RSTACK
?CCL11: EQUAL? P-PRSA-WORD,W?MOVE \?CCL13
EQUAL? PRSO,INTDIR \?CCL13
CALL1 DIRECTION-CONVERSION
CALL2 DO-WALK,STACK
RSTACK
?CCL13: CALL2 CANT-VERB-A-PRSO,STR?146
RSTACK
.FUNCT V-MOVE-DIR
PRINTI "Pick up"
ICALL1 TPRINT-PRSO
PRINTR " and go that way!"
.FUNCT V-MOVE-TO
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK \?CCL3
PRINT YNH
CALL2 TRPRINT,PRSO
RSTACK
?CCL3: ICALL PERFORM,V?PUT,PRSO,PRSI
RTRUE
.FUNCT V-MUNG
CALL2 HACK-HACK,STR?147
RSTACK
.FUNCT V-NO
EQUAL? AWAITING-REPLY,1 \?CCL3
CALL1 V-YES
RSTACK
?CCL3: EQUAL? AWAITING-REPLY,2 \?CCL5
PRINTR """You're right, you don't. I do."""
?CCL5: CALL2 YOU-SOUND,STR?148
RSTACK
.FUNCT NO-WORD,WRD
EQUAL? WRD,W?NO,W?NOPE /TRUE
EQUAL? WRD,W?NAH,W?UH-UH /TRUE
RFALSE
.FUNCT V-OFF
FSET? PRSO,LIGHTBIT \?CCL3
FSET? PRSO,ONBIT \?CCL6
FCLEAR PRSO,ONBIT
FCLEAR PRSO,FLAMEBIT
PRINTI "Okay,"
ICALL1 TPRINT-PRSO
PRINTI " is now o"
EQUAL? PRSO,CANDLE \?CCL9
PRINTI "ut"
JUMP ?CND7
?CCL9: PRINTI "ff"
?CND7: PRINT PERIOD-CR
CALL1 NOW-DARK?
RSTACK
?CCL6: PRINTR "It isn't on!"
?CCL3: CALL2 CANT-TURN,STR?149
RSTACK
.FUNCT V-ON
FSET? PRSO,LIGHTBIT \?CCL3
FSET? PRSO,ONBIT \?CCL6
PRINT ALREADY-IS
RTRUE
?CCL6: FSET PRSO,ONBIT
PRINTI "Okay,"
ICALL1 TPRINT-PRSO
PRINTI " is now on."
CRLF
CALL1 NOW-LIT?
RSTACK
?CCL3: CALL2 CANT-TURN,STR?150
RSTACK
.FUNCT V-OPEN
ZERO? PRSI /?CCL3
FSET? PRSI,KEYBIT \?CCL3
ICALL PERFORM,V?UNLOCK,PRSO,PRSI
RTRUE
?CCL3: FSET? PRSO,SURFACEBIT /?CTR6
FSET? PRSO,ACTORBIT /?CTR6
FSET? PRSO,VEHBIT \?CCL7
EQUAL? PRSO,IRON-MAIDEN,LADDER,DB /?CCL7
EQUAL? PRSO,WATER-CHAMBER,SNAKE-PIT /?CCL7
?CTR6: CALL1 IMPOSSIBLES
RSTACK
?CCL7: FSET? PRSO,OPENBIT \?CCL16
PRINT ALREADY-IS
RTRUE
?CCL16: FSET? PRSO,LOCKEDBIT \?CCL18
PRINTI "The "
ICALL2 DPRINT,PRSO
PRINTR " is locked."
?CCL18: FSET? PRSO,DOORBIT \?CCL20
FSET PRSO,OPENBIT
PRINTI "The "
ICALL2 DPRINT,PRSO
PRINTR " swings open."
?CCL20: FSET? PRSO,CONTBIT \?CCL22
FSET PRSO,OPENBIT
FSET PRSO,TOUCHBIT
FIRST? PRSO \?CTR24
FSET? PRSO,TRANSBIT /?CTR24
EQUAL? PRSO,DB \?CCL25
?CTR24: PRINTR "Opened."
?CCL25: PRINTI "Opening"
ICALL1 TPRINT-PRSO
PRINTI " reveals"
CALL1 D-NOTHING
ZERO? STACK \?CND29
PRINT PERIOD-CR
?CND29: ICALL1 NOW-LIT?
RTRUE
?CCL22: CALL1 YOU-MUST-TELL-ME
RSTACK
.FUNCT V-PAY,MONEY
CALL2 ULTIMATELY-IN?,ZORKMID-BILL
ZERO? STACK /?CCL3
SET 'MONEY,ZORKMID-BILL
JUMP ?CND1
?CCL3: CALL2 ULTIMATELY-IN?,ZORKMID-COIN
ZERO? STACK /?CND1
SET 'MONEY,ZORKMID-COIN
?CND1: ZERO? MONEY /?CCL7
ICALL PERFORM,V?GIVE,MONEY,PRSO
RTRUE
?CCL7: PRINTR "You have no money!"
.FUNCT V-PICK
CALL2 CANT-VERB-A-PRSO,STR?151
RSTACK
.FUNCT V-PLAY
CALL2 CANT-VERB-A-PRSO,STR?152
RSTACK
.FUNCT V-POINT
PRINTR "That would be pointless."
.FUNCT V-POUR
CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-PRAY
ZERO? PRSO \?CCL3
EQUAL? HERE,ORACLE \?CCL3
ICALL PERFORM,V?PRAY,ORACLE-OBJECT
RTRUE
?CCL3: PRINTR "If you pray long enough, your prayers may be answered."
.FUNCT V-PUSH
CALL2 HACK-HACK,STR?153
RSTACK
.FUNCT V-PUSH-DIR
CALL1 V-PUSH
RSTACK
.FUNCT PRE-PUT
EQUAL? PRSI,CEILING,GROUND \?CCL3
EQUAL? PRSO,NW-SE-PASSAGE,N-S-PASSAGE \?CCL6
EQUAL? PRSA,V?PUT \?CCL6
PRINTR "You can only install the passage in a wall!"
?CCL6: ICALL PERFORM,V?DROP,PRSO
RTRUE
?CCL3: EQUAL? PRSO,HANDS \?CCL10
EQUAL? PRSA,V?PUT,V?PUT-ON \?CCL13
FSET? PRSI,PARTBIT /FALSE
?CCL13: EQUAL? PRSA,V?PUT \?CCL17
ICALL PERFORM,V?REACH-IN,PRSI
RTRUE
?CCL17: EQUAL? PRSA,V?PUT-ON \?CCL19
EQUAL? PRSI,STRAW \?CCL19
SET 'FINGER-ON-STRAW,TRUE-VALUE
IN? STRAW,BOWL \?CND22
SET 'ELIXIR-TRAPPED,TRUE-VALUE
?CND22: ICALL QUEUE,I-FINGER-OFF-STRAW,2
PRINTR "You put your finger over the end of the straw."
?CCL19: CALL1 IMPOSSIBLES
RSTACK
?CCL10: EQUAL? PRSO,GLOVE \?CCL25
EQUAL? PRSI,HANDS \?CCL25
ICALL PERFORM,V?WEAR,GLOVE
RTRUE
?CCL25: IN? PRSO,WALDO \?CCL29
PRINTR "The waldo seems incapable of more than just picking something up and dropping it."
?CCL29: FSET? PRSI,PARTBIT /?CCL31
CALL1 PRE-LOOK
ZERO? STACK \TRUE
?CCL31: CALL ULTIMATELY-IN?,PRSI,PRSO
ZERO? STACK /?CCL35
PRINT YOU-CANT
PRINTI "put"
ICALL1 TPRINT-PRSO
GET PARSE-RESULT,7
EQUAL? STACK,W?ON \?CCL38
PRINTI " on"
JUMP ?CND36
?CCL38: PRINTI " in"
?CND36: ICALL1 TPRINT-PRSI
PRINTI " when"
ICALL1 TPRINT-PRSI
PRINTI " is already "
FSET? PRSO,SURFACEBIT \?CCL41
PRINTI "on"
JUMP ?CND39
?CCL41: PRINTI "in"
?CND39: ICALL1 TPRINT-PRSO
PRINTR "!"
?CCL35: CALL2 UNTOUCHABLE?,PRSI
ZERO? STACK /?CCL43
CALL2 CANT-REACH,PRSI
RSTACK
?CCL43: CALL1 IDROP
ZERO? STACK \TRUE
RFALSE
.FUNCT V-PUT,?TMP1,?TMP2,?TMP3
FSET? PRSI,WATERBIT \?CCL3
EQUAL? PRSO,LARGE-VIAL,SMALL-VIAL \?CCL6
ICALL PERFORM,V?FILL,PRSO,WATER
RTRUE
?CCL6: CALL PERFORM-PRSA,PRSO,WATER
RSTACK
?CCL3: FSET? PRSI,OPENBIT /?CCL8
FSET? PRSI,CONTBIT /?CCL8
FSET? PRSI,SURFACEBIT /?CCL8
FSET? PRSI,VEHBIT /?CCL8
PRINT YOU-CANT
PRINTI "put"
ICALL1 TPRINT-PRSO
PRINTI " in"
ICALL2 APRINT,PRSI
PRINTR "!"
?CCL8: EQUAL? PRSI,PRSO /?CTR13
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL14
FSET? PRSO,TAKEBIT /?CCL14
?CTR13: PRINTR "How can you do that?"
?CCL14: FSET? PRSI,DOORBIT \?CCL20
PRINT CANT-FROM-HERE
RTRUE
?CCL20: FSET? PRSI,OPENBIT /?CCL22
FSET? PRSI,SURFACEBIT /?CCL22
ICALL2 THIS-IS-IT,PRSI
CALL DO-FIRST,STR?140,PRSI
RSTACK
?CCL22: IN? PRSO,PRSI \?CCL26
PRINTI "But"
ICALL1 TPRINT-PRSO
PRINTI " is already in"
CALL2 TRPRINT,PRSI
RSTACK
?CCL26: FSET? PRSI,ACTORBIT \?CCL28
PRINT HUH
RTRUE
?CCL28: CALL2 WEIGHT,PRSI >?TMP3
CALL2 WEIGHT,PRSO
ADD ?TMP3,STACK >?TMP2
GETP PRSI,P?SIZE
SUB ?TMP2,STACK >?TMP1
GETP PRSI,P?CAPACITY
GRTR? ?TMP1,STACK \?CCL30
CALL ULTIMATELY-IN?,PRSO,PRSI
ZERO? STACK \?CCL30
PRINTI "There's no room "
FSET? PRSI,SURFACEBIT \?CCL35
PRINTI "on"
JUMP ?CND33
?CCL35: PRINTI "in"
?CND33: ICALL1 TPRINT-PRSI
PRINTI " for"
CALL2 TRPRINT,PRSO
RSTACK
?CCL30: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK \?CCL37
CALL1 ITAKE
EQUAL? STACK,M-FATAL,FALSE-VALUE /TRUE
?CCL37: EQUAL? PRSO,WORM,ROOSTER,FOX \?CCL41
FSET? PRSO,ANIMATEDBIT \?CCL41
PRINTI "You try, but"
ICALL1 TPRINT-PRSO
PRINTI " seems agitated and "
EQUAL? PRSO,FOX \?CCL46
PRINTI "slyly jumps"
JUMP ?CND44
?CCL46: EQUAL? PRSO,ROOSTER \?CCL48
PRINTI "hops"
JUMP ?CND44
?CCL48: PRINTI "wriggles"
?CND44: PRINTR " out."
?CCL41: MOVE PRSO,PRSI
FSET PRSO,TOUCHBIT
PRINTI "Done."
CRLF
CALL2 SCORE-OBJ,PRSO
RSTACK
.FUNCT V-PUT-BEHIND
CALL1 WASTES
RSTACK
.FUNCT V-PUT-ON
EQUAL? PRSI,ME \?CCL3
ICALL PERFORM,V?WEAR,PRSO
RTRUE
?CCL3: FSET? PRSI,SURFACEBIT \?CCL5
CALL1 V-PUT
RSTACK
?CCL5: FSET? PRSI,ACTORBIT \?CCL7
FSET? PRSO,WEARBIT \?CCL7
PRINTI "But it's not"
ICALL1 TPRINT-PRSI
PRINTR "'s size."
?CCL7: PRINTI "There's no good surface on"
CALL2 TRPRINT,PRSI
RSTACK
.FUNCT V-PUT-THROUGH
FSET? PRSI,DOORBIT \?CCL3
FSET? PRSI,OPENBIT \?CCL6
CALL1 V-THROW
RSTACK
?CCL6: CALL DO-FIRST,STR?140,PRSI
RSTACK
?CCL3: LOC PROTAGONIST
EQUAL? PRSI,STACK \?CCL8
EQUAL? P-PRSA-WORD,W?THROW,W?TOSS,W?HURL \?CCL8
SET 'PRSI,FALSE-VALUE
CALL1 V-THROW
RSTACK
?CCL8: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-PUT-TO
CALL1 WASTES
RSTACK
.FUNCT V-PUT-UNDER
CALL1 WASTES
RSTACK
.FUNCT V-RAISE
CALL2 HACK-HACK,STR?154
RSTACK
.FUNCT PRE-RESEARCH
ZERO? PRSI \?CND1
EQUAL? HERE,LIBRARY \?CND1
SET 'PRSI,ENCYCLOPEDIA
?CND1: EQUAL? PRSO,ROOMS \?CCL7
ZERO? LIT \?CCL10
PRINT TOO-DARK
CRLF
RTRUE
?CCL10: EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL12
ICALL PERFORM,V?EXAMINE,BROGMOID
RTRUE
?CCL12: FSET? HERE,OUTSIDEBIT \?CCL14
PRINTR "Sunlight filters through heavy cloud cover."
?CCL14: EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL16
PRINTR "You see a gray misty void, stretching upward as far as you can see."
?CCL16: ICALL PERFORM,V?EXAMINE,CEILING
RTRUE
?CCL7: ZERO? LIT \?CCL18
ICALL PERFORM,V?READ,ENCYCLOPEDIA
RTRUE
?CCL18: ZERO? PRSI \?CCL20
PRINTR "There's no encyclopedia here to look it up in."
?CCL20: EQUAL? PRSI,ENCYCLOPEDIA /?CCL22
PRINT YOU-CANT
PRINTI "read about things in"
CALL2 ARPRINT,PRSI
RSTACK
?CCL22: SET 'VOLUME-USED,TRUE-VALUE
RFALSE
.FUNCT V-RESEARCH,ENTRY,PIC-NUM
GETP PRSO,P?RESEARCH >ENTRY
ZERO? ENTRY /?CCL3
PRINT ENTRY
CRLF
RTRUE
?CCL3: EQUAL? PRSO,INTQUOTE \?CCL5
CALL2 GET-NP,PRSO >ENTRY
GET ENTRY,7
GET STACK,0
EQUAL? STACK,W?QUOTE \?CND6
GET ENTRY,7
ICALL CHANGE-LEXV,STACK,W?NO.WORD
?CND6: GET ENTRY,8
GET STACK,0
EQUAL? STACK,W?QUOTE \?CND8
GET ENTRY,8
ICALL CHANGE-LEXV,STACK,W?NO.WORD
?CND8: GET OOPS-TABLE,O-START >P-CONT
SET 'P-LEN,P-WORDS-AGAIN
PRINTR "[Uh, the quotation marks confused me...]"
?CCL5: PRINTI "You look up """
CALL2 GET-NP,PRSO
ICALL2 NP-PRINT,STACK
PRINTR """ in the encyclopedia, but find no entry."
.FUNCT V-SRESEARCH
ICALL PERFORM,V?RESEARCH,PRSI,PRSO
RTRUE
.FUNCT V-SRIDE-DIR
ICALL PERFORM,V?RIDE-DIR,PRSI,PRSO
RTRUE
.FUNCT V-RIDE-DIR
IN? PROTAGONIST,PRSO /?CCL3
PRINTI "But you're not even "
FSET? PRSO,INBIT \?CCL6
PRINTC 105
JUMP ?CND4
?CCL6: PRINTC 111
?CND4: PRINTC 110
CALL2 TRPRINT,PRSO
RSTACK
?CCL3: EQUAL? PRSI,INTDIR \?CCL8
CALL2 GET-NP,PRSI
GET STACK,2
GETB STACK,6
CALL2 DO-WALK,STACK
RSTACK
?CCL8: EQUAL? PRSO,CAMEL \?CCL10
PRINTR "Please use directions, as in RIDE CAMEL WEST."
?CCL10: PRINTR "How can you do that?"
.FUNCT V-REACH-IN,OBJ
FIRST? PRSO >OBJ /?BOGUS1
?BOGUS1: FSET? PRSO,WATERBIT \?CCL4
CALL2 PERFORM-PRSA,WATER
RSTACK
?CCL4: FSET? PRSO,ACTORBIT /?CTR5
FSET? PRSO,SURFACEBIT /?CTR5
FSET? PRSO,CONTBIT /?CCL6
?CTR5: CALL1 YUKS
RSTACK
?CCL6: FSET? PRSO,OPENBIT /?CCL11
CALL DO-FIRST,STR?140,PRSO
RSTACK
?CCL11: ZERO? OBJ /?CTR12
FSET? OBJ,INVISIBLE /?CTR12
FSET? OBJ,TRYTAKEBIT /?CCL13
?CTR12: PRINT THERES-NOTHING
PRINTI "in"
CALL2 TRPRINT,PRSO
RSTACK
?CCL13: PRINTI "You feel something inside"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-READ
FSET? PRSO,READBIT \?CCL3
GETP PRSO,P?TEXT
PRINT STACK
CRLF
RTRUE
?CCL3: CALL2 CANT-VERB-A-PRSO,STR?155
RSTACK
.FUNCT V-REMOVE
FSET? PRSO,WEARBIT \?CCL3
ICALL PERFORM,V?TAKE-OFF,PRSO
RTRUE
?CCL3: ICALL PERFORM,V?TAKE,PRSO
RTRUE
.FUNCT V-ROLL
PRINTI "A rolling "
ICALL2 DPRINT,PRSO
PRINTR " gathers no moss."
.FUNCT V-ROLL-DIR,OHERE
EQUAL? PRSO,CANNONBALL,DUMBBELL \?CCL3
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CND4
IN? PRSO,WALDO /?CND4
PRINT HOLDING-IT
RTRUE
?CND4: SET 'OHERE,HERE
CALL1 DIRECTION-CONVERSION
ICALL2 DO-WALK,STACK
EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS \?CCL10
REMOVE PRSO
PRINTI " The "
ICALL2 DPRINT,PRSO
PRINTR " disappointingly fails to roll along the ground ABOVE you, and plunges into the void."
?CCL10: EQUAL? HERE,OHERE /TRUE
MOVE PRSO,HERE
PRINTI " The "
ICALL2 DPRINT,PRSO
PRINTR " rolls to a stop."
?CCL3: CALL1 V-ROLL
RSTACK
.FUNCT V-ROLL-DOWN,OHERE
EQUAL? PRSO,CANNONBALL,DUMBBELL \?CCL3
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CND4
IN? PRSO,WALDO /?CND4
PRINT HOLDING-IT
RTRUE
?CND4: SET 'OHERE,HERE
ICALL2 DO-WALK,P?DOWN
EQUAL? HERE,OHERE /TRUE
PRINTI " The "
ICALL2 DPRINT,PRSO
EQUAL? HERE,OUBLIETTE \?CCL12
REMOVE PRSO
PRINTI " sinks into the mud"
JUMP ?CND10
?CCL12: MOVE PRSO,HERE
PRINTI " rolls to a stop"
?CND10: PRINT PERIOD-CR
RTRUE
?CCL3: CALL1 V-ROLL
RSTACK
.FUNCT V-ROLL-UP,OHERE
EQUAL? PRSO,CANNONBALL,DUMBBELL \?CCL3
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CND4
IN? PRSO,WALDO /?CND4
PRINT HOLDING-IT
RTRUE
?CND4: SET 'OHERE,HERE
ICALL2 DO-WALK,P?UP
EQUAL? HERE,OHERE /TRUE
MOVE PRSO,HERE
PRINTI " The "
ICALL2 DPRINT,PRSO
PRINTR " rolls to a stop."
?CCL3: CALL1 V-ROLL
RSTACK
.FUNCT V-SACRED-WORD
EQUAL? SACRED-WORD-NUMBER,10 /?CCL3
GET SACRED-WORD-WORDS,SACRED-WORD-NUMBER
EQUAL? P-PRSA-WORD,STACK \?CCL3
ZERO? TIME-STOPPED /?CCL3
SET 'TIME-STOPPED,FALSE-VALUE
FSET OUTER-GATE,OPENBIT
FSET PERIMETER-WALL,REDESCBIT
ICALL QUEUE,I-END-GAME,-1
PRINTI "As you utter the sacred word, time resumes its normal motion! "
EQUAL? HERE,PERIMETER-WALL \?CCL9
PRINTI "The huge outer gates burst open, and t"
JUMP ?CND7
?CCL9: PRINTI "You hear a distant grinding sound like the opening of a huge door. T"
?CND7: PRINTR "he entire structure around you begins to shake and tremble; the last moments of the castle are at hand!"
?CCL3: PRINTR "As you utter it, the power of the sacred word sends you staggering."
.FUNCT V-NOT-SO-SACRED-WORD
PRINTR "The word hangs in the air like a damp fog before dissipating."
.FUNCT V-SADDLE
ZERO? PRSI \?CCL3
CALL2 ULTIMATELY-IN?,SADDLE
ZERO? STACK /?CCL6
ICALL PERFORM,V?PUT-ON,SADDLE,PRSO
RTRUE
?CCL6: PRINTR "You don't have a saddle!"
?CCL3: EQUAL? PRSI,SADDLE \?CCL8
ICALL PERFORM,V?PUT-ON,SADDLE,PRSO
RTRUE
?CCL8: PRINTR "You can only saddle something with a saddle! In fact, that's probably where the word comes from!"
.FUNCT V-SAVE-SOMETHING
EQUAL? PRSO,ME \?CCL3
CALL1 V-HINT
RSTACK
?CCL3: PRINTI "Sorry, but"
ICALL1 TPRINT-PRSO
PRINTR " is beyond help."
.FUNCT V-SAY,V,V2,TMP
CALL1 GET-NP
GET STACK,7 >TMP
EQUAL? PRSO,INTQUOTE \?CND1
ADD TMP,8 >TMP
?CND1: GET TMP,0 >V
GET TMP,P-LEXELEN >V2
ZERO? AWAITING-REPLY /?CCL5
CALL2 YES-WORD,V
ZERO? STACK /?CCL5
ICALL1 V-YES
JUMP ?CND3
?CCL5: ZERO? AWAITING-REPLY /?CCL9
CALL2 NO-WORD,V
ZERO? STACK /?CCL9
ICALL1 V-NO
JUMP ?CND3
?CCL9: INTBL? V,SACRED-WORD-WORDS,SACRED-WORD-WORDS-LENGTH \?CCL13
SET 'P-PRSA-WORD,V
ICALL1 V-SACRED-WORD
JUMP ?CND3
?CCL13: ZERO? PRSO /?CCL15
EQUAL? PRSO,SACRED-WORD-OBJ \?CCL15
CALL2 GET-NP,PRSO
GET STACK,2 >P-PRSA-WORD
ICALL1 V-SACRED-WORD
JUMP ?CND3
?CCL15: EQUAL? V,W?FLODOOR,W?ZIPSO,W?FURGALNETI \?CCL19
ICALL1 V-NOT-SO-SACRED-WORD
JUMP ?CND3
?CCL19: EQUAL? HERE,ENTRANCE-HALL \?CCL21
IN? JESTER,HERE \?CCL21
FSET? PORTCULLIS,OPENBIT /?CCL21
EQUAL? PRSO,TIME-OBJECT /?CTR26
EQUAL? V,W?TIME \?CCL27
?CTR26: FSET PORTCULLIS,OPENBIT
PRINTI "The portcullis creaks open. ""Friend or foe, you're free to go!"""
ICALL1 J-EXITS
ICALL2 INC-SCORE,20
JUMP ?CND3
?CCL27: ICALL1 DONT-CRY
JUMP ?CND3
?CCL21: EQUAL? HERE,OUBLIETTE \?CCL31
IN? JESTER,HERE \?CCL31
EQUAL? PRSO,TRIPLET /?CTR35
EQUAL? V,W?TRIPLET,W?TRIPLETS,W?QUADRUPLET /?CTR35
EQUAL? V,W?QUINTUPLET /?CTR35
EQUAL? V2,W?TRIPLET,W?TRIPLETS,W?QUADRUPLET /?CTR35
EQUAL? V2,W?QUINTUPLET \?CCL36
?CTR35: PRINTI "The jester solemnly shakes your hand, and you feel yourself rising out of the oubliette."
CRLF
CRLF
ICALL2 GOTO,DUNGEON
ICALL2 INC-SCORE,OUBLIETTE-SCORE
SET 'OUBLIETTE-SCORE,0
RTRUE
?CCL36: ICALL1 DONT-CRY
JUMP ?CND3
?CCL31: IN? EAST-KEY,JESTER \?CCL43
IN? JESTER,HERE \?CCL43
EQUAL? PRSO,LETTER-Y /?CTR47
EQUAL? V,W?Y /?CTR47
EQUAL? V,W?A,W?LETTER \?PRD52
EQUAL? V,W?Y /?CTR47
?PRD52: EQUAL? V,W?A,W?THE \?CCL48
EQUAL? V2,W?LETTER \?CCL48
GET TMP,4
EQUAL? STACK,W?Y \?CCL48
?CTR47: MOVE EAST-KEY,PROTAGONIST
FSET EAST-KEY,TOUCHBIT
FCLEAR EAST-KEY,TRYTAKEBIT
PRINTI "The jester grins and tosses you the key. ""Way to be -- Here's the key!"""
ICALL1 J-EXITS
ICALL2 INC-SCORE,20
JUMP ?CND3
?CCL48: ICALL1 DONT-CRY
JUMP ?CND3
?CCL43: IN? DIPLOMA,JESTER \?CCL59
IN? JESTER,HERE \?CCL59
EQUAL? PRSO,MUSIC /?CTR63
EQUAL? V,W?MUSIC /?CTR63
EQUAL? V,W?MUSICAL \?CCL64
EQUAL? V2,W?INSTRUMENTS \?CCL64
?CTR63: MOVE DIPLOMA,PROTAGONIST
FCLEAR DIPLOMA,TRYTAKEBIT
FCLEAR DIPLOMA,NDESCBIT
FSET DIPLOMA,TOUCHBIT
SET 'COMPASS-CHANGED,TRUE-VALUE
PRINTI """Go to the head of the class!"" The jester hands you the framed document. ""With flying colors, you pass!"""
ICALL1 J-EXITS
ICALL2 INC-SCORE,12
JUMP ?CND3
?CCL64: ICALL1 DONT-CRY
JUMP ?CND3
?CCL59: EQUAL? HERE,TAX-OFFICE \?CCL71
IN? ZORKMID-COIN,LOCAL-GLOBALS \?CCL71
IN? JESTER,HERE \?CCL71
EQUAL? PRSO,BOOKKEEPER /?CTR76
EQUAL? V,W?BOOKKEEPER,W?BOOKKEEPING \?CCL77
?CTR76: MOVE ZORKMID-COIN,HERE
PRINTI "You hear a ""clink"" by your feet. ""You're fast as a bunny and right on the money!"""
ICALL1 J-EXITS
ICALL2 INC-SCORE,6
JUMP ?CND3
?CCL77: ICALL1 DONT-CRY
JUMP ?CND3
?CCL71: EQUAL? HERE,CAVE-IN \?CCL81
IN? PIT-BOMB,LOCAL-GLOBALS \?CCL81
IN? JESTER,HERE \?CCL81
EQUAL? PRSO,MID-NAME \?PRD89
GET MID-NAME-WORDS,MID-NAME-NUM
CALL NOUN-USED?,MID-NAME,STACK
ZERO? STACK \?CTR86
?PRD89: GET MID-NAME-WORDS,MID-NAME-NUM
EQUAL? V,STACK \?CCL87
?CTR86: MOVE PIT-BOMB,HERE
PRINTI """That's my proper appellation; the finest in the nation!"""
ICALL1 J-EXITS
ICALL2 INC-SCORE,6
CRLF
EQUAL? HERE,CAVE-IN \TRUE
ICALL1 V-LOOK
RTRUE
?CCL87: EQUAL? PRSO,OTHER-J-NAMES /?CTR94
EQUAL? V,W?BARBAZZO,W?FERNAP \?CCL95
?CTR94: PRINTI """That's my name, but not my middle; try again to win this riddle!"""
CRLF
JUMP ?CND3
?CCL95: PRINTI """That's not my middle moniker; and I should know! I just looked it up this morning! Try again."""
CRLF
JUMP ?CND3
?CCL81: EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL99
IN? LITTLE-FUNGUS,GLOBAL-OBJECTS \?CCL99
ZERO? PLANT-TALKER /?CCL99
EQUAL? FUNGUS-NUMBER,12 /?CCL99
GET FUNGUS-WORDS,FUNGUS-NUMBER
EQUAL? V,STACK \?CCL99
ICALL1 GET-LITTLE-FUNGUS
JUMP ?CND3
?CCL99: CALL FIND-IN,HERE,ACTORBIT >V
ZERO? V /?CCL106
SET 'CLOCK-WAIT,TRUE-VALUE
PRINTI "[If you want"
ICALL2 TPRINT,V
PRINTI " to do something, the proper way is
>"
ICALL2 DPRINT,V
PRINTI ", do something]"
CRLF
JUMP ?CND3
?CCL106: PRINTI "You say that out loud, but with no effect."
CRLF
?CND3: CALL1 STOP
RSTACK
.FUNCT V-SCORE
PRINTI "You have scored "
PRINTN SCORE
PRINTI " point"
EQUAL? SCORE,1 /?CND1
PRINTC 115
?CND1: PRINTI " (out of 1000) in "
PRINTN MOVES
PRINTI " turn"
EQUAL? MOVES,1 /?CND3
PRINTC 115
?CND3: PRINTI ". This gives you the rank of "
EQUAL? SCORE,1000 \?CCL7
PRINTI "Dungeon Master"
JUMP ?CND5
?CCL7: GRTR? SCORE,875 \?CCL9
PRINTI "Cursebuster"
JUMP ?CND5
?CCL9: GRTR? SCORE,750 \?CCL11
PRINTI "Master Explorer"
JUMP ?CND5
?CCL11: GRTR? SCORE,625 \?CCL13
PRINTI "Expert Adventurer"
JUMP ?CND5
?CCL13: GRTR? SCORE,500 \?CCL15
PRINTI "Respected Adventurer"
JUMP ?CND5
?CCL15: GRTR? SCORE,375 \?CCL17
PRINTI "Nobleman"
JUMP ?CND5
?CCL17: GRTR? SCORE,250 \?CCL19
PRINTI "Knight"
JUMP ?CND5
?CCL19: GRTR? SCORE,125 \?CCL21
PRINTI "Tradesman"
JUMP ?CND5
?CCL21: LESS? SCORE,0 \?CND22
PRINTI "Incompetent "
?CND22: PRINTI "Peasant"
?CND5: PRINT PERIOD-CR
RTRUE
.FUNCT SCORE-OBJ,OBJ,VAL
GETP OBJ,P?VALUE >VAL
ZERO? VAL /FALSE
ICALL2 INC-SCORE,VAL
PUTP OBJ,P?VALUE,0
RTRUE
.FUNCT V-NOTIFY
PRINTI "Okay, you will no"
ZERO? NOTIFICATION-ON /?CCL3
SET 'NOTIFICATION-ON,FALSE-VALUE
PRINTI " longer"
JUMP ?CND1
?CCL3: SET 'NOTIFICATION-ON,TRUE-VALUE
PRINTC 119
?CND1: PRINTR " be notified when your score changes."
.FUNCT INC-SCORE,PTS
ZERO? PTS /TRUE
ZERO? NOTIFICATION-ON /?CND3
SOUND 1
HLIGHT H-BOLD
PRINTI " [Your score has just gone "
GRTR? PTS,0 \?CCL7
PRINTI "up"
JUMP ?CND5
?CCL7: PRINTI "down"
?CND5: PRINTI " by "
GRTR? PTS,0 \?CCL10
PRINTN PTS
JUMP ?CND8
?CCL10: MUL PTS,-1
PRINTN STACK
?CND8: PRINTC 46
ZERO? NOTIFICATION-WARNING \?CND11
SET 'NOTIFICATION-WARNING,TRUE-VALUE
PRINTI " Note: you can turn this feature on and off using the NOTIFY command."
?CND11: PRINTC 93
CRLF
HLIGHT H-NORMAL
?CND3: ADD SCORE,PTS >SCORE
RTRUE
.FUNCT V-SEARCH
FSET? PRSO,ACTORBIT \?CCL3
CALL1 V-SHAKE
RSTACK
?CCL3: IN? PROTAGONIST,PRSO \?CCL5
CALL1 D-VEHICLE
RSTACK
?CCL5: FSET? PRSO,CONTBIT \?CCL7
FSET? PRSO,OPENBIT /?CCL7
CALL DO-FIRST,STR?140,PRSO
RSTACK
?CCL7: FSET? PRSO,CONTBIT \?CCL11
PRINTI "You find"
CALL1 D-NOTHING
ZERO? STACK \TRUE
PRINT PERIOD-CR
RTRUE
?CCL11: CALL2 CANT-VERB-A-PRSO,STR?156
RSTACK
.FUNCT V-SSEARCH-OBJECT-FOR
ICALL PERFORM,V?SEARCH-OBJECT-FOR,PRSI,PRSO
RTRUE
.FUNCT V-SEARCH-OBJECT-FOR
FSET? PRSO,ACTORBIT \?CCL3
ICALL PERFORM,V?SEARCH,PRSO
RTRUE
?CCL3: FSET? PRSO,CONTBIT \?CCL5
FSET? PRSO,OPENBIT /?CCL5
CALL DO-FIRST,STR?140,PRSO
RSTACK
?CCL5: IN? PRSI,PRSO /?CTR8
IN? PRSI,HERE \?CCL9
?CTR8: PRINTI "Very observant. There "
FSET? PRSI,FEMALEBIT \?CCL14
PUSH STR?157
JUMP ?CND12
?CCL14: FSET? PRSI,ACTORBIT \?CCL16
PUSH STR?158
JUMP ?CND12
?CCL16: PUSH STR?159
?CND12: PRINT STACK
PRINTR " is."
?CCL9: PRINTI "You don't find"
ICALL1 TPRINT-PRSI
PRINTR " there."
.FUNCT V-SEND
PRINTR "You haven't any stamps, and there isn't a mailbox in sight!"
.FUNCT V-SET
ZERO? PRSI \?CCL3
EQUAL? PRSO,ROOMS \?CCL6
PRINTR "You do a 360 degree spin, but no agents appear to sign you up for the Borphee Metropolitan Ballet Company."
?CCL6: FSET? PRSO,TAKEBIT /?CTR7
FSET? PRSO,INTEGRALBIT \?CCL8
?CTR7: CALL2 HACK-HACK,STR?160
RSTACK
?CCL8: PRINT YNH
CALL2 TRPRINT,PRSO
RSTACK
?CCL3: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-SET-DIR
CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-SGIVE
ICALL PERFORM,V?GIVE,PRSI,PRSO
RTRUE
.FUNCT V-SHAKE,PERSON
FSET? PRSO,ACTORBIT \?CCL3
PRINTR "That wouldn't be polite."
?CCL3: CALL2 HACK-HACK,STR?161
RSTACK
.FUNCT V-SHAKE-WITH
ZERO? PRSI \?CCL3
ICALL PERFORM,V?SHAKE-WITH,HANDS,PRSO
RTRUE
?CCL3: EQUAL? PRSO,HANDS /?CCL5
CALL1 RECOGNIZE
RSTACK
?CCL5: FSET? PRSI,ACTORBIT /?CCL7
PRINTI "I don't think"
ICALL1 TPRINT-PRSI
PRINTR " even has hands."
?CCL7: ICALL PERFORM,V?THANK,PRSI
RTRUE
.FUNCT V-SHOW,ACTOR
ZERO? PRSI \?CCL3
CALL FIND-IN,HERE,ACTORBIT >ACTOR
ZERO? ACTOR /?CCL3
ICALL PERFORM,V?SHOW,PRSO,ACTOR
RTRUE
?CCL3: ZERO? PRSI \?CCL7
PRINTR "There's no one here to show it to."
?CCL7: PRINTI "It doesn't look like"
ICALL2 IS-ARE-PRINT,PRSI
PRINTR "interested."
.FUNCT V-SHUT-UP
EQUAL? PRSO,ROOMS \?CCL3
PRINTR "[I hope you're not addressing me...]"
?CCL3: ICALL PERFORM,V?CLOSE,PRSO
RTRUE
.FUNCT V-SING
PRINT HUH
RTRUE
.FUNCT V-SING-TO
EQUAL? PRSO,BEDBUG \?CCL3
ICALL PERFORM,V?PUT-TO,BEDBUG,GLOBAL-SLEEP
RTRUE
?CCL3: CALL1 WASTES
RSTACK
.FUNCT V-SINK
CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-SIT,VEHICLE
ZERO? PRSO /?CCL3
EQUAL? PRSO,ROOMS /?CCL3
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL3: IN? PROTAGONIST,HERE /?CCL7
PRINT LOOK-AROUND
RTRUE
?CCL7: EQUAL? HERE,CASINO \?CCL9
PRINTI "[at the card table]"
CRLF
ICALL PERFORM,V?ENTER,CARD-TABLE
RTRUE
?CCL9: CALL FIND-IN,HERE,VEHBIT,STR?162 >VEHICLE
ZERO? VEHICLE /?CCL11
ICALL PERFORM,V?ENTER,VEHICLE
RTRUE
?CCL11: CALL1 WASTES
RSTACK
.FUNCT V-SKIP
ZERO? TURNED-INTO /?CCL3
FSET? TURNED-INTO,ANIMATEDBIT /?CCL3
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL3
SET 'P-CONT,-1
PRINTI "Ahem..."
ICALL2 APRINT,TURNED-INTO
FSET? TURNED-INTO,PLURALBIT \?CCL9
PRINTI " are"
JUMP ?CND7
?CCL9: PRINTI " is"
?CND7: PRINTR " usually incapable of locomotion."
?CCL3: PRINTR "Wasn't that fun?"
.FUNCT V-SLEEP
PRINTI "You're not tired"
IN? BEDBUG,HERE \?CCL3
PRINTI ", but you curl up for a moment and fake sleep. "
CALL2 REMOVE-BEDBUG,STR?136
RSTACK
?CCL3: PRINT PERIOD-CR
RTRUE
.FUNCT PRE-SMELL
FSET? CLOWN-NOSE,WORNBIT \FALSE
PRINT YOU-CANT
PRINTR "smell a thing with this clown nose on!"
.FUNCT V-SMELL
ZERO? PRSO \?CCL3
EQUAL? HERE,WEST-WING \?CCL6
PRINT FUDGE
CRLF
RTRUE
?CCL6: EQUAL? HERE,FISHY-ODOR \?CCL8
PRINTR "Phew! Rotten fish!"
?CCL8: PRINTR "You smell nothing unusual at the moment."
?CCL3: CALL2 SENSE-OBJECT,STR?163
RSTACK
.FUNCT SENSE-OBJECT,STRING
ICALL1 PRONOUN
PRINTC 32
PRINT STRING
FSET? PRSO,PLURALBIT /?CND1
EQUAL? PRSO,ME /?CND1
PRINTC 115
?CND1: PRINTI " just like"
CALL2 ARPRINT,PRSO
RSTACK
.FUNCT V-SNAP
PRINTR "Perhaps it's your mind that has snapped."
.FUNCT V-SPUT-ON
ICALL PERFORM,V?PUT-ON,PRSI,PRSO
RTRUE
.FUNCT V-SSHOW
ICALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
.FUNCT V-STAND
EQUAL? P-PRSA-WORD,W?HOLD \?CCL3
CALL1 WASTES
RSTACK
?CCL3: ZERO? PRSO /?CCL5
FSET? PRSO,TAKEBIT \?CCL5
EQUAL? P-PRSA-WORD,W?STAND \?CCL5
CALL1 WASTES
RSTACK
?CCL5: EQUAL? P-PRSA-WORD,W?GET \?CCL10
ZERO? PRSO /?CCL10
EQUAL? PRSO,ROOMS /?CCL10
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL10: IN? PROTAGONIST,HERE /?CCL15
LOC PROTAGONIST
ICALL PERFORM,V?EXIT,STACK
RTRUE
?CCL15: EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL17
EQUAL? P-PRSA-WORD,W?STAND /?CCL17
ICALL PERFORM,V?TAKE,PRSO
RTRUE
?CCL17: ZERO? UNDER-TABLE /?CCL21
SET 'UNDER-TABLE,FALSE-VALUE
SET 'OLD-HERE,FALSE-VALUE
PRINTR "You get out from under the table."
?CCL21: PRINTR "You're already standing."
.FUNCT V-STAND-ON
EQUAL? PRSO,NORTH-DOCK,WEST-DOCK,EAST-DOCK /?CTR2
EQUAL? PRSO,YACHT,TREE-STUMP,SOUTH-DOCK /?CTR2
EQUAL? PRSO,CONDUCTOR-STAND,TOBOGGAN \?CCL3
?CTR2: ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL3: CALL1 WASTES
RSTACK
.FUNCT V-STELL
ICALL PERFORM,V?TELL,PRSI
RTRUE
.FUNCT V-STHROW
EQUAL? PRSI,INTDIR \?CCL3
ICALL PERFORM,V?THROW,PRSO,PRSI
RTRUE
?CCL3: ICALL PERFORM,V?THROW-TO,PRSI,PRSO
RTRUE
.FUNCT V-SUCK-ON
ICALL PERFORM,V?TASTE,PRSO
RTRUE
.FUNCT V-SUCK-WITH
ICALL PERFORM,V?DRINK,PRSO,PRSI
RTRUE
.FUNCT V-SWAT
ZERO? PRSI /?CCL3
PRINTI "Sorry, but"
ICALL2 APRINT,PRSI
PRINTI " makes a poor "
JUMP ?CND1
?CCL3: PRINTI "You don't have a "
?CND1: EQUAL? PRSO,EVEN-LARGER-FLY,LARGER-FLY,LARGE-FLY /?CTR5
EQUAL? PRSO,LARGEST-FLY \?CCL6
?CTR5: PRINTI "fly"
JUMP ?CND4
?CCL6: ICALL2 DPRINT,PRSO
?CND4: PRINTR "swatter."
.FUNCT V-SWIM,X
ZERO? PRSO /?CCL3
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL3: CALL1 FIND-WATER >X
ZERO? X /?CCL5
ICALL PERFORM,V?ENTER,X
RTRUE
?CCL5: PRINTR "Your head must be swimming."
.FUNCT V-SWING
PRINTR """Whoosh."""
.FUNCT PRE-SWITCH
SET 'OBJ-SWAP,TRUE-VALUE
RFALSE
.FUNCT V-SWRAP
ICALL PERFORM,V?WRAP,PRSI,PRSO
RTRUE
.FUNCT PRE-TAKE
FSET? PRSO,PARTBIT /?CCL3
CALL1 PRE-LOOK
ZERO? STACK \TRUE
?CCL3: EQUAL? PRSO,HANDS \?CCL7
ZERO? PRSI /?CCL7
EQUAL? PRSI,WALDO,HAND-HOLE \?PRD12
ZERO? HAND-IN-WALDO \?CTR6
?PRD12: EQUAL? PRSI,STRAW \?CCL7
ZERO? FINGER-ON-STRAW /?CCL7
?CTR6: ICALL PERFORM,V?REMOVE,HANDS
RTRUE
?CCL7: IN? PROTAGONIST,PRSO \?CCL18
PRINTI "You're "
FSET? PRSO,INBIT \?CCL21
PRINTC 105
JUMP ?CND19
?CCL21: PRINTC 111
?CND19: PRINTR "n it!"
?CCL18: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL23
ZERO? PRSI /?CCL23
IN? PRSI,ROOMS \?CCL23
CALL1 V-WALK-AROUND
RSTACK
?CCL23: IN? PRSO,PROTAGONIST /?CTR27
CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK /?CCL28
FSET? PRSO,TAKEBIT /?CCL28
EQUAL? PRSO,LARGE-VIAL-WATER,SMALL-VIAL-WATER,WALDO /?CCL28
?CTR27: FSET? PRSO,WORNBIT \?CCL36
EQUAL? PRSO,CLOWN-NOSE \?CND37
ICALL PERFORM,V?TAKE-OFF,CLOWN-NOSE
RTRUE
?CND37: PRINTI "You're already wearing"
JUMP ?CND34
?CCL36: PRINTI "You already have"
?CND34: ICALL1 TPRINT-PRSO
PRINT PERIOD-CR
RTRUE
?CCL28: CALL2 UNTOUCHABLE?,PRSO
ZERO? STACK /?CCL40
ZERO? HAND-IN-WALDO /?CCL43
ICALL1 WALDO-TAKE
RTRUE
?CCL43: CALL2 CANT-REACH,PRSO
RSTACK
?CCL40: ZERO? PRSI /FALSE
EQUAL? PRSI,ME \?CCL47
ICALL PERFORM,V?DROP,PRSI
RTRUE
?CCL47: EQUAL? PRSO,WATER \?CCL49
EQUAL? P-PRSA-WORD,W?REMOVE \?CCL49
EQUAL? PRSI,LARGE-VIAL \?PRD54
GRTR? LARGE-VIAL-WATER,0 /?CTR48
?PRD54: EQUAL? PRSI,SMALL-VIAL \?CCL49
GRTR? SMALL-VIAL-WATER,0 \?CCL49
?CTR48: ICALL PERFORM,V?EMPTY-FROM,PRSO,PRSI
RTRUE
?CCL49: IN? PRSO,PRSI /?CCL60
GETP PRSO,P?OWNER
EQUAL? PRSI,STACK /?CCL60
CALL1 NOT-IN
RSTACK
?CCL60: ZERO? PRSI /FALSE
SET 'PRSI,FALSE-VALUE
RFALSE
.FUNCT V-TAKE,L
LOC PRSO >L
CALL2 ITAKE,TRUE-VALUE
EQUAL? STACK,M-FATAL /FALSE
EQUAL? L,HERE /?CTR5
LOC PROTAGONIST
EQUAL? L,STACK \?CCL6
?CTR5: PRINTI "You pick up"
ICALL2 TRPRINT,PRSO
JUMP ?CND4
?CCL6: PRINTI "You take"
ICALL1 TPRINT-PRSO
PRINTI " from"
ICALL2 TRPRINT,L
?CND4: CALL2 SCORE-OBJ,PRSO
RSTACK
.FUNCT V-TAKE-OFF,VEHICLE
LOC PROTAGONIST >VEHICLE
EQUAL? PRSO,ROOMS \?CCL3
FSET? VEHICLE,VEHBIT \?CCL6
ICALL PERFORM,V?EXIT,VEHICLE
RTRUE
?CCL6: EQUAL? HERE,GONDOLA \?CCL8
CALL2 DO-WALK,P?OUT
RSTACK
?CCL8: PRINTI "You're not "
GET PARSE-RESULT,7
EQUAL? STACK,W?OUT \?CCL11
PRINTC 105
JUMP ?CND9
?CCL11: PRINTC 111
?CND9: PRINTR "n anything."
?CCL3: FSET? PRSO,WORNBIT \?CCL13
FCLEAR PRSO,WORNBIT
ICALL2 THIS-IS-IT,PRSO
PRINTI "You remove"
CALL2 TRPRINT,PRSO
RSTACK
?CCL13: FSET? PRSO,VEHBIT \?CCL15
ICALL PERFORM,V?EXIT,PRSO
RTRUE
?CCL15: PRINTI "You aren't wearing"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-TAKE-WITH
CALL2 ULTIMATELY-IN?,PRSI
ZERO? STACK \?CCL3
PRINT YNH
CALL2 TRPRINT,PRSI
RSTACK
?CCL3: PRINTI "Sorry,"
ICALL2 IS-ARE-PRINT,PRSI
PRINTI "no help in getting"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-TASTE
CALL2 SENSE-OBJECT,STR?164
RSTACK
.FUNCT PRE-TELL
ZERO? TURNED-INTO /?CCL3
FSET? TURNED-INTO,ANIMATEDBIT /?CCL3
SET 'P-CONT,-1
CALL2 TO-SPEAK-OF,STR?165
RSTACK
?CCL3: EQUAL? PRSA,V?SAY,V?SING-TO,V?SING /FALSE
ZERO? PRSO /FALSE
FSET? PRSO,PLANTBIT \?CCL11
ZERO? PLANT-TALKER \FALSE
?CCL11: EQUAL? PRSO,OTHER-J-NAMES /?PRD17
EQUAL? PRSO,MID-NAME \?CCL15
GET MID-NAME-WORDS,MID-NAME-NUM
CALL NOUN-USED?,MID-NAME,STACK
ZERO? STACK /?CCL15
?PRD17: CALL2 VISIBLE?,JESTER
ZERO? STACK /?CCL15
ICALL2 PERFORM-PRSA,JESTER
RTRUE
?CCL15: EQUAL? PRSO,MID-NAME,OTHER-J-NAMES \?CCL23
PRINT BY-THAT-NAME
CALL1 STOP
RSTACK
?CCL23: EQUAL? PRSO,LITTLE-FUNGUS \?CCL25
IN? LITTLE-FUNGUS,GLOBAL-OBJECTS \?CCL25
EQUAL? HERE,ON-TOP-OF-THE-WORLD \?CCL30
ICALL PERFORM,V?CALL,PRSO
JUMP ?CND28
?CCL30: PRINT BY-THAT-NAME
?CND28: CALL1 STOP
RSTACK
?CCL25: FSET? PRSO,ACTORBIT /FALSE
EQUAL? PRSO,SAILOR,ORACLE-OBJECT,ME /FALSE
EQUAL? PRSO,INTQUOTE /FALSE
ICALL1 V-TELL
CALL1 STOP
RSTACK
.FUNCT V-TELL
FSET? PRSO,ACTORBIT /?CTR2
EQUAL? PRSO,SAILOR /?CTR2
FSET? PRSO,PLANTBIT \?CCL3
ZERO? PLANT-TALKER /?CCL3
?CTR2: ZERO? P-CONT \?CTR10
EQUAL? PRSO,SAILOR \?CCL11
?CTR10: SET 'WINNER,PRSO
SET 'CLOCK-WAIT,TRUE-VALUE
RTRUE
?CCL11: PRINTI "Hmmm..."
ICALL1 TPRINT-PRSO
PRINTR " looks at you expectantly, as if you seemed to be about to talk."
?CCL3: EQUAL? PRSO,BROGMOID \?CCL15
PRINT TALK-TO-BROGMOID
RTRUE
?CCL15: PRINTI "It's a well-known fact that only schizophrenics talk to"
ICALL2 ARPRINT,PRSO
CALL1 STOP
RSTACK
.FUNCT V-TELL-ABOUT
EQUAL? PRSO,ME \?CCL3
PRINTR "[Maybe you could find an encyclopedia to look that up in.]"
?CCL3: ICALL PERFORM,V?SHOW,PRSI,PRSO
RTRUE
.FUNCT V-THANK
ZERO? PRSO \?CCL3
PRINTR "[Just doing my job.]"
?CCL3: FSET? PRSO,ACTORBIT \?CCL5
PRINTI "It seems"
ICALL1 TPRINT-PRSO
PRINTR " is unmoved by your politeness."
?CCL5: CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-THROW
CALL2 SPECIAL-DROP,PRSO
ZERO? STACK \FALSE
LOC PROTAGONIST
EQUAL? STACK,YACHT,DB \?CCL6
LOC PROTAGONIST
MOVE PRSO,STACK
JUMP ?CND4
?CCL6: MOVE PRSO,HERE
?CND4: ZERO? PRSI /?CCL9
EQUAL? PRSI,INTDIR,GROUND /?CCL9
PRINTR "You missed."
?CCL9: ICALL2 THIS-IS-IT,PRSO
PRINTR "Thrown."
.FUNCT V-THROW-OVER
CALL1 WASTES
RSTACK
.FUNCT V-THROW-FROM
CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-THROW-OVERBOARD
IN? PROTAGONIST,YACHT \?CCL3
ICALL PERFORM,V?PUT,PRSO,WATER
RTRUE
?CCL3: EQUAL? HERE,HOLD \?CCL5
PRINT YOULL-HAVE-TO
PRINTR "go up on deck to do that."
?CCL5: PRINTR "You generally have to be on a boat to do that."
.FUNCT V-THROW-TO
FSET? PRSI,ACTORBIT \?CCL3
ICALL PERFORM,V?GIVE,PRSO,PRSI
RTRUE
?CCL3: ICALL PERFORM,V?THROW,PRSO,PRSI
RTRUE
.FUNCT V-TIE
PRINT YOU-CANT
PRINTI "tie"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-TIME
PRINTI "It is daytime. You have taken "
PRINTN MOVES
PRINTI " turn"
EQUAL? MOVES,1 /?CND1
PRINTC 115
?CND1: GRTR? MOVES,1000 \?CCL5
PRINTR ". (The day really seems to be dragging, doesn't it?)"
?CCL5: PRINT PERIOD-CR
RTRUE
.FUNCT V-TIP
PRINTI "You tell"
ICALL1 TPRINT-PRSO
PRINTI " about Lucky Brogmoid in the seventh race at Bozbar Downs, but "
FSET? PRSO,PLURALBIT \?CCL3
PRINTI "they don't"
JUMP ?CND1
?CCL3: FSET? PRSO,ACTORBIT /?CCL6
PRINTI "it"
JUMP ?CND4
?CCL6: FSET? PRSO,FEMALEBIT \?CCL8
PRINTI "she"
JUMP ?CND4
?CCL8: PRINTI "he"
?CND4: PRINTI " doesn't"
?CND1: PRINTR " seem too interested."
.FUNCT V-TIP-OVER
CALL1 WASTES
RSTACK
.FUNCT PRE-TOUCH
CALL2 UNTOUCHABLE?,PRSO
ZERO? STACK /?CCL3
ICALL2 CANT-REACH,PRSO
RTRUE
?CCL3: ZERO? TURNED-INTO /FALSE
EQUAL? PRSA,V?OFF \?CCL8
EQUAL? P-PRSA-WORD,W?BLOW \?CCL8
FSET? TURNED-INTO,ANIMATEDBIT /FALSE
CALL1 PRE-TELL
RSTACK
?CCL8: SET 'P-CONT,-1
CALL2 TO-SPEAK-OF,STR?166
RSTACK
.FUNCT V-STOUCH
ICALL PERFORM,V?TOUCH,PRSI,PRSO
RTRUE
.FUNCT V-TOUCH
CALL2 LOC-CLOSED,PRSO
ZERO? STACK \TRUE
CALL2 HACK-HACK,STR?167
RSTACK
.FUNCT V-UNLOCK
FSET? PRSO,LOCKEDBIT \?CCL3
PRINTI "Unfortunately,"
ICALL1 TPRINT-PRSI
PRINTI " do"
FSET? PRSI,PLURALBIT /?CND4
PRINTI "es"
?CND4: PRINTI "n't unlock"
CALL2 TRPRINT,PRSO
RSTACK
?CCL3: PRINTI "But"
ICALL1 TPRINT-PRSO
PRINTR " isn't locked."
.FUNCT V-UNTIE
CALL1 IMPOSSIBLES
RSTACK
.FUNCT V-USE
PRINT YOULL-HAVE-TO
PRINTI "be more specific about how you want to use"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-WALK,AV,VEHICLE,PT,PTS,STR,OBJ,RM
LOC PROTAGONIST >AV
ZERO? P-WALK-DIR \?CCL3
CALL USE-PREPOSITIONS,STR?168,STR?169,STR?170,STR?171
RSTACK
?CCL3: EQUAL? HERE,BANQUET-HALL \?CCL5
CALL2 RUNNING?,I-PROLOGUE
ZERO? STACK /?CCL5
GRTR? PROLOGUE-COUNTER,2 \?CCL5
SET 'P-CONT,-1
ICALL1 RETURN-FROM-MAP
PRINTR "Thick black smoke blocks every exit."
?CCL5: ZERO? TURNED-INTO /?CCL10
FSET? TURNED-INTO,ANIMATEDBIT /?CCL10
EQUAL? TURNED-INTO,LITTLE-FUNGUS /?CCL10
ICALL1 RETURN-FROM-MAP
CALL1 V-SKIP
RSTACK
?CCL10: EQUAL? PRSO,P?OUT \?CCL15
FSET? AV,DROPBIT \?CCL15
ICALL1 RETURN-FROM-MAP
ICALL PERFORM,V?EXIT,AV
RTRUE
?CCL15: EQUAL? PRSO,P?IN \?CCL19
GETPT HERE,P?IN
ZERO? STACK \?CCL19
CALL FIND-IN,HERE,VEHBIT >VEHICLE
ZERO? VEHICLE /?CCL19
CALL2 ULTIMATELY-IN?,VEHICLE
ZERO? STACK \?CCL19
ICALL1 RETURN-FROM-MAP
EQUAL? P-PRSA-WORD,W?ENTER \?CND24
PRINTC 91
FSET? VEHICLE,NARTICLEBIT /?CND26
PRINTI "the "
?CND26: ICALL2 DPRINT,VEHICLE
PRINTC 93
CRLF
?CND24: ICALL PERFORM,V?ENTER,VEHICLE
RTRUE
?CCL19: IN? BEDBUG,HERE \?CCL29
ZERO? TIME-STOPPED \?CCL29
SET 'P-CONT,-1
ICALL1 RETURN-FROM-MAP
PRINTR "With a flurry of its powerful, hairy legs, the bedbug scuttles over to block your way."
?CCL29: EQUAL? PRSO,P?DOWN \?CCL33
IN? PROTAGONIST,YACHT \?CCL33
CALL2 GOTO,HOLD
RSTACK
?CCL33: ZERO? UNDER-TABLE /?CCL37
ICALL1 RETURN-FROM-MAP
CALL2 DO-FIRST,STR?172
RSTACK
?CCL37: FSET? AV,VEHBIT \?CCL39
EQUAL? AV,LADDER \?PRD42
EQUAL? PRSO,P?UP /?CCL39
?PRD42: EQUAL? AV,CAMEL \?CTR38
FSET? CAMEL,ANIMATEDBIT /?CCL39
?CTR38: EQUAL? AV,DB \?CCL49
EQUAL? PRSO,P?UP \?CCL49
EQUAL? HERE,HOLD /?CCL49
ICALL PERFORM,V?RAISE,LEVER
RTRUE
?CCL49: EQUAL? AV,DB \?CND47
EQUAL? PRSO,P?DOWN \?CND47
EQUAL? HERE,LAKE-BOTTOM /?CND47
ICALL PERFORM,V?LOWER,LEVER
RTRUE
?CND47: ICALL1 RETURN-FROM-MAP
PRINTI "You're not going anywhere until you get "
EQUAL? AV,CARD-TABLE \?CCL59
PRINTI "up from"
JUMP ?CND57
?CCL59: FSET? AV,INBIT \?CCL61
PRINTI "out of"
JUMP ?CND57
?CCL61: PRINTI "off"
?CND57: SET 'P-CONT,-1
CALL2 TRPRINT,AV
RSTACK
?CCL39: FSET? RING,WORNBIT \?CCL63
RANDOM 100
LESS? 40,STACK \?CTR62
EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS,LEDGE-IN-PIT /?CTR62
EQUAL? HERE,MOUTH-OF-CAVE \?CCL63
?CTR62: ICALL1 RETURN-FROM-MAP
PRINTI "Oops! You awkwardly "
EQUAL? HERE,UNDER-THE-WORLD,HANGING-FROM-ROOTS,LEDGE-IN-PIT /?CTR70
EQUAL? HERE,MOUTH-OF-CAVE \?CCL71
?CTR70: PRINTI "lost your grip! "
ICALL PERFORM,V?LEAP,ROOMS
RTRUE
?CCL71: PRINTR "tripped over your own feet and fell down trying to walk. Fortunately, you're not seriously hurt."
?CCL63: GETPT HERE,PRSO >PT
ZERO? PT /?CCL75
PTSIZE PT >PTS
EQUAL? PTS,UEXIT \?CCL78
GETB PT,REXIT
CALL2 GOTO,STACK
RSTACK
?CCL78: EQUAL? PTS,NEXIT \?CCL80
ICALL1 RETURN-FROM-MAP
SET 'P-CONT,-1
GET PT,NEXITSTR
PRINT STACK
CRLF
RTRUE
?CCL80: EQUAL? PTS,FEXIT \?CCL82
GET PT,FEXITFCN
CALL STACK >RM
ZERO? RM /?CCL85
CALL2 GOTO,RM
RSTACK
?CCL85: SET 'P-CONT,-1
RETURN P-CONT
?CCL82: EQUAL? PTS,CEXIT \?CCL87
GETB PT,CEXITFLAG
VALUE STACK
ZERO? STACK /?CCL90
GETB PT,REXIT
CALL2 GOTO,STACK
RSTACK
?CCL90: GET PT,CEXITSTR >STR
ZERO? STR /?CCL92
SET 'P-CONT,-1
ICALL1 RETURN-FROM-MAP
PRINT STR
CRLF
RTRUE
?CCL92: SET 'P-CONT,-1
CALL1 CANT-GO
RSTACK
?CCL87: EQUAL? PTS,DEXIT \FALSE
GET PT,DEXITOBJ >OBJ
FSET? OBJ,OPENBIT \?CCL97
GETB PT,DEXITRM
CALL2 GOTO,STACK
RSTACK
?CCL97: GET PT,DEXITSTR >STR
ZERO? STR /?CCL99
ICALL1 RETURN-FROM-MAP
ICALL2 THIS-IS-IT,OBJ
SET 'P-CONT,-1
PRINT STR
CRLF
RTRUE
?CCL99: ICALL1 RETURN-FROM-MAP
ICALL2 THIS-IS-IT,OBJ
SET 'P-CONT,-1
CALL DO-FIRST,STR?140,OBJ
RSTACK
?CCL75: EQUAL? PRSO,P?IN,P?OUT \?CCL102
ICALL1 V-WALK-AROUND
JUMP ?CND100
?CCL102: ICALL1 CANT-GO
?CND100: SET 'P-CONT,-1
RETURN P-CONT
.FUNCT CANT-GO
ZERO? LIT \?CCL3
LOC PROTAGONIST
EQUAL? STACK,DB,HOLD /?CCL3
EQUAL? HERE,PIT-BOMB-LOC /?CCL3
ZERO? TIME-STOPPED \?CCL3
RANDOM 100
LESS? 75,STACK /?CCL3
ICALL1 RETURN-FROM-MAP
CALL1 DARK-DEATH
RSTACK
?CCL3: IN? N-S-PASSAGE,HERE \?PRD12
EQUAL? PRSO,N-S-PASSAGE-DIR /?CTR9
?PRD12: IN? NW-SE-PASSAGE,HERE \?CCL10
EQUAL? PRSO,NW-SE-PASSAGE-DIR \?CCL10
?CTR9: EQUAL? HERE,CONSTRUCTION \?CCL19
EQUAL? CONSTRUCTION-LOC,N-S-PASSAGE-LOC /?CCL19
EQUAL? PRSO,N-S-PASSAGE-DIR \?CCL19
CALL1 BEEP-OR-CANT-GO
RSTACK
?CCL19: EQUAL? HERE,CONSTRUCTION \?CCL24
EQUAL? CONSTRUCTION-LOC,NW-SE-PASSAGE-LOC /?CCL24
EQUAL? PRSO,NW-SE-PASSAGE-DIR \?CCL24
CALL1 BEEP-OR-CANT-GO
RSTACK
?CCL24: ICALL1 RETURN-FROM-MAP
PRINTI "You walk down the Frobozz Magic Passage Company passage, but it ends in a dead end and you are forced to return to"
CALL2 TRPRINT,HERE
RSTACK
?CCL10: CALL1 BEEP-OR-CANT-GO
RSTACK
.FUNCT BEEP-OR-CANT-GO
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CCL3
SOUND 1
RTRUE
?CCL3: PRINTR "You can't go that way."
.FUNCT V-WALK-AROUND
PRINTR "Please use compass directions to move around."
.FUNCT V-WALK-TO
IN? PRSO,HERE /?CTR2
CALL GLOBAL-IN?,PRSO,HERE
ZERO? STACK /?CCL3
?CTR2: FSET? PRSO,ACTORBIT \?CCL8
EQUAL? PRSO,PRICKLY-WITCH,SICKLY-WITCH \?CCL11
PRINTI "She's"
JUMP ?CND6
?CCL11: PRINTI "He's"
JUMP ?CND6
?CCL8: FSET? PRSO,PLURALBIT \?CCL13
PRINTI "They're"
JUMP ?CND6
?CCL13: PRINTI "It's"
?CND6: PRINTR " here!"
?CCL3: CALL1 V-WALK-AROUND
RSTACK
.FUNCT V-WAIT,NUM
ASSIGNED? 'NUM /?CND1
SET 'NUM,3
?CND1: PRINTI "Time "
ZERO? TIME-STOPPED /?CCL5
PRINTI "doesn't pass"
JUMP ?CND3
?CCL5: PRINTI "passes"
?CND3: PRINTI "..."
CRLF
?PRG6: DLESS? 'NUM,0 /?REP7
CALL1 CLOCKER
ZERO? STACK /?PRG6
?REP7: LOC WINNER >NUM
ZERO? NUM /?CND12
IN? NUM,ROOMS /?CND12
GETP NUM,P?ACTION
CALL D-APPLY,STR?16,STACK,M-END >NUM
?CND12: GETP HERE,P?ACTION
CALL D-APPLY,STR?16,STACK,M-END >NUM
EQUAL? M-FATAL,NUM \?CND16
SET 'P-CONT,-1
?CND16: SET 'CLOCK-WAIT,TRUE-VALUE
RETURN CLOCK-WAIT
.FUNCT V-WAIT-FOR
CALL2 VISIBLE?,PRSO
ZERO? STACK /?CCL3
CALL1 V-FOLLOW
RSTACK
?CCL3: PRINTR "You may be waiting quite a while."
.FUNCT V-WEAR
FSET? PRSO,WEARBIT /?CCL3
CALL2 CANT-VERB-A-PRSO,STR?173
RSTACK
?CCL3: IN? PRSO,WALDO \?CCL5
PRINT YNH
CALL2 TRPRINT,PRSO
RSTACK
?CCL5: PRINTI "You're "
FSET? PRSO,WORNBIT \?CCL8
PRINTI "already"
JUMP ?CND6
?CCL8: MOVE PRSO,PROTAGONIST
FSET PRSO,WORNBIT
PRINTI "now"
?CND6: PRINTI " wearing"
CALL2 TRPRINT,PRSO
RSTACK
.FUNCT V-WRAP
CALL1 WASTES
RSTACK
.FUNCT V-YAWN
IN? BEDBUG,HERE \?CCL3
CALL2 REMOVE-BEDBUG,STR?136
RSTACK
?CCL3: SET 'AWAITING-REPLY,1
ICALL QUEUE,I-REPLY,2
PRINTR "[Is the game boring you?]"
.FUNCT REMOVE-BEDBUG,STRING
REMOVE BEDBUG
PRINTI "That was all the bedbug needed to "
PRINT STRING
PRINTR ". It curls up into a well-armed piece of sleeping bedbug armor. You hear a chuckle from an invisible source, and the sleeping bedbug disappears!"
.FUNCT V-YELL
EQUAL? PRSO,INTQUOTE \?CCL3
CALL1 V-SAY
RSTACK
?CCL3: PRINTI "Aaaarrrggghhhh!"
CRLF
CALL1 STOP
RSTACK
.FUNCT I-REPLY
SET 'AWAITING-REPLY,FALSE-VALUE
RFALSE
.FUNCT V-YES
EQUAL? AWAITING-REPLY,1 \?CCL3
PRINTR "That was just a rhetorical question."
?CCL3: EQUAL? AWAITING-REPLY,2 \?CCL5
PRINTR """Well, you don't. This swamp is owned by a cartel of lily pad farmers in Borphee, who are indebted up to their ears to a conglomerate of Gurthian banks, of which I am the primary stockholder. Ergo, you could safely say that I own this swamp."""
?CCL5: CALL2 YOU-SOUND,STR?174
RSTACK
.FUNCT YOU-SOUND,STRING
PRINTI "You sound rather "
PRINT STRING
PRINTR "ive."
.FUNCT YES-WORD,WRD
EQUAL? WRD,W?YES,W?Y,W?YUP /TRUE
EQUAL? WRD,W?OK,W?OKAY,W?SURE /TRUE
RFALSE
.FUNCT V-ZAP
ZERO? PRSI /?CCL3
ICALL PERFORM,V?POINT,PRSI,PRSO
RTRUE
?CCL3: EQUAL? PRSO,WAND \?CCL5
PRINTR "Try waving the wand at something in particular."
?CCL5: CALL2 ULTIMATELY-IN?,WAND
ZERO? STACK /?CCL7
CALL2 VISIBLE?,WAND
ZERO? STACK /?CCL7
ICALL PERFORM,V?POINT,WAND,PRSO
RTRUE
?CCL7: PRINTR "You have neither a magical wand nor a ray gun."
.FUNCT ITAKE,VB,OBJ,?TMP1
ASSIGNED? 'VB /?CND1
SET 'VB,TRUE-VALUE
?CND1: ZERO? OBJ \?CND3
SET 'OBJ,PRSO
?CND3: FSET? OBJ,INTEGRALBIT \?CCL7
ZERO? VB /?PRG10
ICALL1 PART-OF
?PRG10: RETURN 2
?CCL7: FSET? OBJ,TAKEBIT /?CCL13
ZERO? VB /?PRG16
ICALL1 YUKS
?PRG16: RETURN 2
?CCL13: ZERO? ALLIGATOR /?CCL19
SET 'P-CONT,-1
ZERO? VB /?PRG22
PRINT YOU-CANT
PRINTI "pick anything up right now. The logic goes something like this:
1. You need hands to pick something up.
2. You've been turned into an alligator.
3. Alligators don't have hands."
CRLF
?PRG22: RETURN 2
?CCL19: ZERO? TURNED-INTO /?CCL25
ZERO? VB /?PRG28
PRINTI "Surely you realize that"
ICALL2 APRINT,TURNED-INTO
PRINTI " is hardly equipped to carry items around!"
CRLF
?PRG28: RETURN 2
?CCL25: CALL LOC-CLOSED,OBJ,VB
ZERO? STACK /?CCL31
RETURN 2
?CCL31: CALL2 UNTOUCHABLE?,OBJ
ZERO? STACK /?CCL35
ZERO? VB /?PRG38
ICALL2 CANT-REACH,OBJ
?PRG38: RETURN 2
?CCL35: FSET? RING,WORNBIT \?CCL41
CALL2 CCOUNT,PROTAGONIST
GRTR? STACK,4 \?CCL41
ZERO? VB /?PRG49
PRINTI "Oops! While trying to pick up"
ICALL2 TPRINT,OBJ
PRINTI ", you accidentally dropped everything you were holding! How clumsy!"
LOC PROTAGONIST
FSET? STACK,DROPBIT \?CCL48
LOC PROTAGONIST
JUMP ?CND46
?CCL48: PUSH HERE
?CND46: ICALL ROB,PROTAGONIST,STACK,TRUE-VALUE
CRLF
?PRG49: RETURN 2
?CCL41: CALL2 CCOUNT,PROTAGONIST
GRTR? STACK,10 \?CCL52
ZERO? VB /?PRG55
PRINTI "You're already juggling as many items as you could possibly carry."
CRLF
?PRG55: RETURN 2
?CCL52: CALL2 ULTIMATELY-IN?,OBJ
ZERO? STACK \?CND5
CALL2 WEIGHT,OBJ >?TMP1
CALL2 WEIGHT,PROTAGONIST
ADD ?TMP1,STACK
GRTR? STACK,100 \?CND5
ZERO? VB /?PRG67
FSET? OBJ,PLURALBIT \?CCL64
PRINTI "They're"
JUMP ?CND62
?CCL64: PRINTI "It's"
?CND62: PRINTI " too heavy"
FIRST? PROTAGONIST \?CND65
PRINTI ", considering your current load"
?CND65: PRINT PERIOD-CR
?PRG67: RETURN 2
?CND5: FSET OBJ,TOUCHBIT
FCLEAR OBJ,NDESCBIT
IN? PROTAGONIST,OBJ /FALSE
ZERO? VB \?CND71
PRINTI "[taking"
ICALL2 TPRINT,OBJ
PRINTI " first]"
CRLF
ICALL2 SCORE-OBJ,OBJ
?CND71: MOVE OBJ,PROTAGONIST
RTRUE
.FUNCT IDROP
EQUAL? HERE,HANGING-FROM-ROOTS \?CCL3
EQUAL? PRSO,ROOTS,ROOMS \?CCL3
ICALL2 PERFORM,V?LEAP
RTRUE
?CCL3: EQUAL? PRSO,ROOMS \?CCL7
PRINTR "You're not hanging onto anything."
?CCL7: EQUAL? PRSO,HANDS \?CCL9
EQUAL? PRSA,V?GIVE,V?THROW,V?DROP \FALSE
CALL1 IMPOSSIBLES
RSTACK
?CCL9: EQUAL? PRSA,V?THROW \?CCL14
EQUAL? PRSO,EYES \?CCL14
ZERO? PRSI \?CND17
ICALL1 V-LOOK
RTRUE
?CND17: ICALL1 PRE-SWITCH
ICALL PERFORM,V?EXAMINE,PRSI,EYES
RTRUE
?CCL14: EQUAL? PRSO,ME \?CCL20
EQUAL? PRSA,V?PUT \?CCL20
FSET? PRSI,ACTORBIT \?CCL20
ICALL PERFORM,V?ENTER,PRSI
RTRUE
?CCL20: EQUAL? PRSI,ME \?CCL25
EQUAL? PRSA,V?PUT \?CCL25
FSET? PRSO,ACTORBIT \?CCL25
ICALL PERFORM,V?ENTER,PRSO
RTRUE
?CCL25: EQUAL? PRSA,V?DROP \?CCL30
IN? PRSO,WALDO /FALSE
?CCL30: CALL2 ULTIMATELY-IN?,PRSO
ZERO? STACK \?CCL34
EQUAL? PRSO,ME /?CTR36
FSET? PRSO,PARTBIT \?CCL37
?CTR36: ICALL1 IMPOSSIBLES
RETURN 2
?CCL37: PRINTI "That's easy for you to say since you don't even have"
ICALL2 TRPRINT,PRSO
RETURN 2
?CCL34: FSET? PRSO,INTEGRALBIT \?CCL43
CALL1 PART-OF
RSTACK
?CCL43: IN? PRSO,PROTAGONIST /?CCL45
LOC PRSO
FSET? STACK,CONTBIT \?CCL45
LOC PRSO
FSET? STACK,OPENBIT /?CCL45
LOC PRSO
CALL DO-FIRST,STR?140,STACK
RSTACK
?CCL45: FSET? PRSO,WORNBIT \FALSE
CALL DO-FIRST,STR?175,PRSO
RSTACK
.FUNCT CCOUNT,OBJ,DESCRIBED-ITEMS-ONLY,CNT,X
FIRST? OBJ >X /?PRG3
RETURN CNT
?PRG3: ZERO? DESCRIBED-ITEMS-ONLY /?CCL7
FSET? X,NDESCBIT /?CND5
?CCL7: FSET? X,WORNBIT /?CND5
INC 'CNT
?CND5: NEXT? X >X /?PRG3
RETURN CNT
.FUNCT WEIGHT,OBJ,CONT,WT
FIRST? OBJ >CONT \?CND1
?PRG3: FSET? CONT,WORNBIT /?CND5
CALL2 WEIGHT,CONT
ADD WT,STACK >WT
?CND5: NEXT? CONT >CONT /?PRG3
?CND1: GETP OBJ,P?SIZE
ADD WT,STACK
RSTACK
.FUNCT D-ROOM,VERB-IS-LOOK,FIRST-VISIT,PIC
ZERO? LIT \?CCL3
PRINT TOO-DARK
ICALL1 GRUE-PIT-WARNING
RFALSE
?CCL3: FSET? HERE,TOUCHBIT \?CCL4
FSET? HERE,REDESCBIT \?CND1
?CCL4: SET 'FIRST-VISIT,TRUE-VALUE
?CND1: HLIGHT H-BOLD
ICALL1 SAY-HERE
HLIGHT H-NORMAL
CRLF
ZERO? VERB-IS-LOOK \?CCL8
EQUAL? VERBOSITY,2 /?CCL8
ZERO? FIRST-VISIT /?CND7
EQUAL? VERBOSITY,1 \?CND7
?CCL8: GETP HERE,P?ICON >PIC
ZERO? PIC /?CCL16
ICALL2 MARGINAL-PIC,PIC
JUMP ?CND14
?CCL16: PRINTI " "
?CND14: GETP HERE,P?ACTION
CALL STACK,M-LOOK
ZERO? STACK \?CND17
GETP HERE,P?LDESC
PRINT STACK
?CND17: CRLF
?CND7: FCLEAR HERE,REDESCBIT
FSET HERE,TOUCHBIT
EQUAL? HERE,CONSTRUCTION,PLAIN,FR-OFFICES /?CCL20
EQUAL? HERE,OFFICES-NORTH,OFFICES-SOUTH,OFFICES-EAST /?CCL20
EQUAL? HERE,OFFICES-WEST \TRUE
?CCL20: FSET HERE,REDESCBIT
RTRUE
.FUNCT D-OBJECTS,O,STR,1ST?,AV
SET '1ST?,TRUE-VALUE
LOC PROTAGONIST >AV
FIRST? HERE >O /?BOGUS1
?BOGUS1: ZERO? O /FALSE
?PRG4: ZERO? O /?REP5
CALL2 DESCRIBABLE?,O
ZERO? STACK /?CND6
FSET? O,TOUCHBIT /?CND6
GETP O,P?FDESC >STR
ZERO? STR /?CND6
PRINTI " "
PRINT STR
FSET? O,CONTBIT \?CND13
ADD D-ALL?,D-PARA?
ICALL D-CONTENTS,O,TRUE-VALUE,STACK
?CND13: CRLF
?CND6: NEXT? O >O /?PRG4
JUMP ?PRG4
?REP5: FIRST? HERE >O /?BOGUS16
?BOGUS16: SET '1ST?,TRUE-VALUE
?PRG17: ZERO? O /?REP18
CALL2 DESCRIBABLE?,O
ZERO? STACK /?CND19
GETP O,P?FDESC
ZERO? STACK /?CCL23
FSET? O,TOUCHBIT \?CND19
?CCL23: GETP O,P?DESCFCN >STR
ZERO? STR /?CCL29
CALL STR,M-OBJDESC >STR
ZERO? STR /?CCL29
FSET? O,CONTBIT \?CND32
EQUAL? STR,M-FATAL /?CND32
ADD D-ALL?,D-PARA?
ICALL D-CONTENTS,O,TRUE-VALUE,STACK
?CND32: CRLF
JUMP ?CND19
?CCL29: GETP O,P?LDESC >STR
ZERO? STR /?CND19
PRINTI " "
PRINT STR
FSET? O,CONTBIT \?CND37
ADD D-ALL?,D-PARA?
ICALL D-CONTENTS,O,TRUE-VALUE,STACK
?CND37: CRLF
?CND19: NEXT? O >O /?PRG17
JUMP ?PRG17
?REP18: ICALL D-CONTENTS,HERE,FALSE-VALUE,0
ZERO? AV /FALSE
EQUAL? HERE,AV /FALSE
CALL D-CONTENTS,AV,FALSE-VALUE,D-ALL?
RSTACK
.FUNCT ORDER-GRAVEL,OBJ
IN? EVEN-MORE-GRAVEL,OBJ \?CND1
MOVE EVEN-MORE-GRAVEL,OBJ
?CND1: IN? MORE-GRAVEL,OBJ \?CND3
MOVE MORE-GRAVEL,OBJ
?CND3: IN? GRAVEL,OBJ \FALSE
MOVE GRAVEL,OBJ
RTRUE
.FUNCT ORDER-FLIES,OBJ
IN? LARGEST-FLY,OBJ \?CND1
MOVE LARGEST-FLY,OBJ
?CND1: IN? EVEN-LARGER-FLY,OBJ \?CND3
MOVE EVEN-LARGER-FLY,OBJ
?CND3: IN? LARGER-FLY,OBJ \?CND5
MOVE LARGER-FLY,OBJ
?CND5: IN? LARGE-FLY,OBJ \FALSE
MOVE LARGE-FLY,OBJ
RTRUE
.FUNCT D-CONTENTS,OBJ,LEVEL,ALL?,F,N,1ST?,IT?,DB,START?,TWO?,PARA?
ASSIGNED? 'LEVEL /?CND1
SET 'LEVEL,-1
?CND1: ASSIGNED? 'ALL? /?CND3
SET 'ALL?,D-ALL?
?CND3: SET '1ST?,TRUE-VALUE
ICALL2 ORDER-FLIES,OBJ
ICALL2 ORDER-GRAVEL,OBJ
EQUAL? LEVEL,2 \?CCL7
SET 'LEVEL,TRUE-VALUE
SET 'PARA?,TRUE-VALUE
SET 'START?,TRUE-VALUE
JUMP ?CND5
?CCL7: BTST ALL?,D-PARA? \?CND5
SET 'PARA?,TRUE-VALUE
?CND5: FIRST? OBJ >N /?BOGUS9
?BOGUS9: ZERO? START? \?PRG24
IN? OBJ,ROOMS /?PRG24
FSET? OBJ,ACTORBIT /?PRG24
EQUAL? OBJ,PROTAGONIST /?PRG24
FSET? OBJ,CONTBIT \FALSE
FSET? OBJ,OPENBIT /?PRD20
FSET? OBJ,TRANSBIT \FALSE
?PRD20: FSET? OBJ,SEARCHBIT \FALSE
ZERO? N /FALSE
?PRG24: ZERO? N /?CCL27
CALL2 DESCRIBABLE?,N
ZERO? STACK /?CND26
BTST ALL?,D-ALL? /?CCL27
CALL2 SIMPLE-DESC?,N
ZERO? STACK /?CND26
?CCL27: ZERO? F /?CND34
ZERO? 1ST? /?CCL38
SET '1ST?,FALSE-VALUE
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CCL41
ZERO? START? \?CND36
ZERO? PARA? \?CCL46
EQUAL? OBJ,PROTAGONIST /?CND47
PRINTI " "
?CND47: SET 'PARA?,TRUE-VALUE
JUMP ?CND44
?CCL46: EQUAL? LEVEL,TRUE-VALUE \?CND44
PRINTC 32
?CND44: EQUAL? OBJ,HERE \?CCL52
PRINT YOU-SEE
JUMP ?CND36
?CCL52: EQUAL? OBJ,PROTAGONIST \?CCL54
EQUAL? D-BIT,WORNBIT \?CCL57
PRINTI " You are wearing"
JUMP ?CND36
?CCL57: PRINTI "You are carrying"
JUMP ?CND36
?CCL54: EQUAL? OBJ,YACHT \?CCL59
PRINTI "Sitting on the deck of the royal yacht"
CALL CCOUNT,OBJ,TRUE-VALUE
EQUAL? STACK,1 \?CCL62
FIRST? OBJ /?BOGUS65
?BOGUS65: FSET? STACK,PLURALBIT /?CCL62
PRINTI " is"
JUMP ?CND36
?CCL62: PRINTI " are"
JUMP ?CND36
?CCL59: FSET? OBJ,SURFACEBIT \?CCL67
PRINTI "Sitting on"
ICALL2 TPRINT,OBJ
CALL CCOUNT,OBJ,TRUE-VALUE
EQUAL? STACK,1 \?CCL70
FIRST? OBJ /?BOGUS73
?BOGUS73: FSET? STACK,PLURALBIT /?CCL70
PRINTI " is"
JUMP ?CND36
?CCL70: PRINTI " are"
JUMP ?CND36
?CCL67: PRINT IT-SEEMS-THAT
ICALL2 TPRINT,OBJ
FSET? OBJ,ACTORBIT \?CCL76
PRINTI " has"
JUMP ?CND36
?CCL76: PRINTI " contains"
JUMP ?CND36
?CCL41: EQUAL? LEVEL,-1 /?CND36
PRINT LEVEL
JUMP ?CND36
?CCL38: ZERO? N /?CCL79
PRINTC 44
JUMP ?CND36
?CCL79: PRINTI " and"
?CND36: ICALL2 APRINT,F
FSET? F,ONBIT \?CCL82
PRINTI " (providing light)"
JUMP ?CND80
?CCL82: EQUAL? F,LARGE-VIAL \?CCL84
GRTR? LARGE-VIAL-GLOOPS,0 \?CCL84
ICALL HOLDING-GLOOPS,LARGE-VIAL-GLOOPS,LARGE-VIAL-IMPRECISE
JUMP ?CND80
?CCL84: EQUAL? F,SMALL-VIAL \?CND80
GRTR? SMALL-VIAL-GLOOPS,0 \?CND80
ICALL HOLDING-GLOOPS,SMALL-VIAL-GLOOPS,SMALL-VIAL-IMPRECISE
?CND80: ZERO? IT? \?CCL92
ZERO? TWO? \?CCL92
SET 'IT?,F
JUMP ?CND34
?CCL92: SET 'TWO?,TRUE-VALUE
SET 'IT?,FALSE-VALUE
?CND34: SET 'F,N
?CND26: ZERO? N /?CND95
NEXT? N >N /?CND95
?CND95: ZERO? F \?PRG24
ZERO? N \?PRG24
ZERO? IT? /?CND102
ZERO? TWO? \?CND102
ICALL2 THIS-IS-IT,IT?
?CND102: ZERO? 1ST? /?CND106
ZERO? START? /?CND106
PRINTI " nothing"
RFALSE
?CND106: ZERO? 1ST? \?REP25
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?REP25
EQUAL? OBJ,HERE \?CND114
PRINTI " here"
?CND114: PRINTC 46
?REP25: EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND116
FIRST? OBJ >F /?PRG119
?PRG119: ZERO? F /?CND116
FSET? F,CONTBIT \?CND121
CALL DESCRIBABLE?,F,TRUE-VALUE
ZERO? STACK /?CND121
BTST ALL?,D-ALL? /?CCL124
CALL2 SIMPLE-DESC?,F
ZERO? STACK /?CND121
?CCL124: SET 'DB,D-BIT
SET 'D-BIT,FALSE-VALUE
ZERO? PARA? /?CCL134
PUSH 3
JUMP ?CND132
?CCL134: PUSH D-ALL?
?CND132: CALL D-CONTENTS,F,TRUE-VALUE,STACK
ZERO? STACK /?CND130
SET '1ST?,FALSE-VALUE
SET 'PARA?,TRUE-VALUE
?CND130: SET 'D-BIT,DB
?CND121: NEXT? F >F /?PRG119
JUMP ?PRG119
?CND116: ZERO? 1ST? \?CND136
EQUAL? LEVEL,FALSE-VALUE,TRUE-VALUE \?CND136
LOC WINNER
EQUAL? OBJ,HERE,STACK \?CND136
CRLF
?CND136: ZERO? 1ST? /TRUE
RFALSE
.FUNCT DESCRIBABLE?,OBJ,CONT?
FSET? OBJ,INVISIBLE /FALSE
EQUAL? OBJ,WINNER /FALSE
LOC WINNER
EQUAL? OBJ,STACK \?CCL7
LOC WINNER
EQUAL? HERE,STACK \FALSE
?CCL7: ZERO? CONT? \?CCL11
FSET? OBJ,NDESCBIT /FALSE
?CCL11: ZERO? D-BIT /TRUE
GRTR? D-BIT,0 \?CCL18
FSET? OBJ,D-BIT /TRUE
RFALSE
?CCL18: SUB 0,D-BIT
FSET? OBJ,STACK /FALSE
RTRUE
.FUNCT SIMPLE-DESC?,OBJ,STR
GETP OBJ,P?FDESC
ZERO? STACK /?CCL3
FSET? OBJ,TOUCHBIT \FALSE
?CCL3: GETP OBJ,P?DESCFCN >STR
ZERO? STR /?CCL7
CALL STR,M-OBJDESC?
ZERO? STACK \FALSE
?CCL7: GETP OBJ,P?LDESC
ZERO? STACK /TRUE
RFALSE
.FUNCT D-VEHICLE
PRINTI "Other than yourself, you can see"
CALL1 D-NOTHING
ZERO? STACK \TRUE
FSET? PRSO,INBIT \?CCL5
PRINTI " in"
JUMP ?CND3
?CCL5: PRINTI " on"
?CND3: ICALL2 TRPRINT,PRSO
RTRUE
.FUNCT D-NOTHING
CALL D-CONTENTS,PRSO,2
ZERO? STACK /FALSE
IN? PROTAGONIST,PRSO /TRUE
CRLF
RTRUE
.FUNCT HOLDING-GLOOPS,NUM,IMPRECISE
PRINTI " (holding "
ZERO? IMPRECISE /?CND1
PRINTI "around "
?CND1: PRINTN NUM
PRINTI " gloop"
EQUAL? NUM,1 /?CND3
PRINTC 115
?CND3: PRINTI " of water)"
RTRUE
.FUNCT GOTO,NEW-LOC,OHERE,OLIT,BORDER,X
SET 'JUMP-X,99
SET 'JUMP-Y,99
SET 'FINGER-ON-STRAW,FALSE-VALUE
SET 'ELIXIR-TRAPPED,FALSE-VALUE
IN? JESTER,HERE \?CND1
ICALL1 REMOVE-J
?CND1: CALL2 LIT?,HERE >OLIT
SET 'OHERE,HERE
IN? PROTAGONIST,CAMEL \?CCL5
FSET? CAMEL,ANIMATEDBIT \?CCL5
FCLEAR CAMEL,TOUCHBIT
MOVE CAMEL,NEW-LOC
JUMP ?CND3
?CCL5: MOVE PROTAGONIST,NEW-LOC
?CND3: IN? NEW-LOC,ROOMS \?CCL10
SET 'HERE,NEW-LOC
JUMP ?CND8
?CCL10: LOC NEW-LOC >HERE
?CND8: SET 'COMPASS-CHANGED,TRUE-VALUE
CALL2 LIT?,HERE >LIT
CALL1 SET-BORDER >BORDER
EQUAL? BORDER,CURRENT-BORDER /?CND11
SET 'CURRENT-BORDER,BORDER
ZERO? BORDER-ON /?CND11
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC /?CND11
ICALL1 CLEAR-BORDER
ICALL INIT-SL-WITH-SPLIT,TEXT-WINDOW-PIC-LOC,TRUE-VALUE
?CND11: ZERO? LIT \?CCL19
ICALL1 RETURN-FROM-MAP
ZERO? OLIT /?CCL22
PRINTI "You have moved into a dark place."
ICALL1 GRUE-PIT-WARNING
JUMP ?CND17
?CCL22: LOC PROTAGONIST
EQUAL? STACK,DB,HOLD,PIT-BOMB-LOC /?CCL24
ZERO? TIME-STOPPED \?CCL24
RANDOM 100
LESS? 75,STACK /?CCL24
ICALL1 DARK-DEATH
JUMP ?CND17
?CCL24: PRINT TOO-DARK
ICALL1 GRUE-PIT-WARNING
JUMP ?CND17
?CCL19: GETP HERE,P?ACTION
ICALL STACK,M-ENTER
EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC \?CND28
FSET? HERE,TOUCHBIT /?CND28
ICALL1 RETURN-FROM-MAP
?CND28: EQUAL? CURRENT-SPLIT,MAP-TOP-LEFT-LOC /?CND17
CALL1 D-ROOM
ZERO? STACK /?CND17
ZERO? VERBOSITY /?CND17
ICALL1 D-OBJECTS
?CND17: CALL GLOBAL-IN?,WATER,HERE
ZERO? STACK /?CND37
CALL1 FIND-WATER >X
ZERO? X /?CND37
PUTP WATER,P?OWNER,X
?CND37: ICALL2 SCORE-OBJ,HERE
RTRUE
.FUNCT JIGS-UP,DESC
PRINT DESC
CRLF
CRLF
PRINTI " **** You have died ****"
CRLF
CALL1 FINISH
RSTACK
.FUNCT ACCESSIBLE?,OBJ,L
ZERO? OBJ /FALSE
LOC OBJ >L
FSET? OBJ,INVISIBLE /FALSE
ZERO? L /FALSE
EQUAL? OBJ,PSEUDO-OBJECT \?CCL9
EQUAL? LAST-PSEUDO-LOC,HERE /TRUE
RFALSE
?CCL9: EQUAL? L,GLOBAL-OBJECTS /TRUE
EQUAL? L,LOCAL-GLOBALS \?CCL16
CALL GLOBAL-IN?,OBJ,HERE
ZERO? STACK \TRUE
?CCL16: CALL2 META-LOC,OBJ
EQUAL? STACK,HERE \FALSE
EQUAL? L,WINNER,HERE,PROTAGONIST /TRUE
FSET? L,OPENBIT /?PRD26
IN? PROTAGONIST,L \FALSE
?PRD26: CALL2 ACCESSIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT VISIBLE?,OBJ,L
ZERO? OBJ /FALSE
LOC OBJ >L
CALL2 ACCESSIBLE?,OBJ
ZERO? STACK \TRUE
CALL2 SEE-INSIDE?,L
ZERO? STACK /FALSE
CALL2 VISIBLE?,L
ZERO? STACK /FALSE
RTRUE
.FUNCT UNTOUCHABLE?,OBJ
ZERO? OBJ /FALSE
EQUAL? OBJ,PARCHMENT \?CCL5
ZERO? UNDER-TABLE \TRUE
?CCL5: EQUAL? OBJ,LANTERN \?CCL9
FSET? LANTERN,TRYTAKEBIT /TRUE
?CCL9: CALL ULTIMATELY-IN?,OBJ,SNAKE-PIT
ZERO? STACK \TRUE
CALL ULTIMATELY-IN?,OBJ,YACHT
ZERO? STACK /?CCL15
IN? PROTAGONIST,HERE /TRUE
?CCL15: IN? PROTAGONIST,HERE /FALSE
EQUAL? OBJ,YACHT,LAKE-FLATHEAD,WEST-DOCK /?PRD23
EQUAL? OBJ,EAST-DOCK,NORTH-DOCK,SOUTH-DOCK \?CCL21
?PRD23: LOC PROTAGONIST
EQUAL? STACK,YACHT,WEST-DOCK,EAST-DOCK /FALSE
LOC PROTAGONIST
EQUAL? STACK,NORTH-DOCK,SOUTH-DOCK /FALSE
?CCL21: EQUAL? OBJ,WALDO \?CCL29
ZERO? HAND-IN-WALDO /?CCL29
EQUAL? PRSA,V?CLOSE,V?OPEN /FALSE
?CCL29: EQUAL? OBJ,MEGABOZ-TRAP-DOOR \?CCL34
IN? PROTAGONIST,LADDER /FALSE
?CCL34: LOC PROTAGONIST
CALL ULTIMATELY-IN?,OBJ,STACK
ZERO? STACK \FALSE
LOC PROTAGONIST
EQUAL? OBJ,STACK /FALSE
IN? OBJ,GLOBAL-OBJECTS /FALSE
RTRUE
.FUNCT OTHER-SIDE,DOBJ,P,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?,X,Y
CALL ULTIMATELY-IN?,X,Y
RSTACK
.FUNCT ULTIMATELY-IN?,OBJ,CONT
ZERO? CONT \?CND1
SET 'CONT,PROTAGONIST
?CND1: ZERO? OBJ /FALSE
EQUAL? PRSA,V?EMPTY \?CCL7
EQUAL? OBJ,WATER \?CCL7
CALL NOUN-USED?,WATER,W?GLOOP,W?GLOOPS
ZERO? STACK /?CCL7
CALL2 ULTIMATELY-IN?,LARGE-VIAL
ZERO? STACK /?PRD13
GRTR? LARGE-VIAL-GLOOPS,0 /TRUE
?PRD13: CALL2 ULTIMATELY-IN?,SMALL-VIAL
ZERO? STACK /?CCL7
GRTR? SMALL-VIAL-GLOOPS,0 /TRUE
?CCL7: IN? OBJ,WALDO \?CCL19
ZERO? HAND-IN-WALDO /?CCL19
EQUAL? PRSA,V?DROP /TRUE
?CCL19: ZERO? HAND-IN-WALDO /?CCL24
EQUAL? OBJ,WALDO \?CCL24
EQUAL? CONT,PROTAGONIST /TRUE
?CCL24: EQUAL? OBJ,WATER \?CCL29
EQUAL? PRSA,V?POUR \?CCL29
CALL2 ULTIMATELY-IN?,LARGE-VIAL-WATER
ZERO? STACK \TRUE
CALL2 ULTIMATELY-IN?,SMALL-VIAL-WATER
ZERO? STACK \TRUE
?CCL29: IN? OBJ,CONT /TRUE
IN? OBJ,ROOMS /FALSE
LOC OBJ
CALL ULTIMATELY-IN?,STACK,CONT
RSTACK
.FUNCT SEE-INSIDE?,OBJ
ZERO? OBJ /FALSE
FSET? OBJ,INVISIBLE /FALSE
FSET? OBJ,TRANSBIT /TRUE
FSET? OBJ,OPENBIT /TRUE
FSET? GOGGLES,WORNBIT \FALSE
EQUAL? WINNER,PROTAGONIST /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 /?CND1
?CND1: RSTACK
.FUNCT FIND-IN,WHERE,FLAG-IN-QUESTION,STRING,OBJ,RECURSIVE-OBJ
FIRST? WHERE >OBJ /?BOGUS1
?BOGUS1: ZERO? OBJ /FALSE
?PRG4: FSET? OBJ,FLAG-IN-QUESTION \?CCL8
FSET? OBJ,INVISIBLE /?CCL8
ZERO? STRING \?CCL12
RETURN OBJ
?CCL12: PRINTC 91
PRINT STRING
ICALL2 TPRINT,OBJ
PRINTC 93
CRLF
RETURN OBJ
?CCL8: CALL FIND-IN,OBJ,FLAG-IN-QUESTION,STRING >RECURSIVE-OBJ
ZERO? RECURSIVE-OBJ /?CCL14
RETURN RECURSIVE-OBJ
?CCL14: NEXT? OBJ >OBJ /?PRG4
RFALSE
.FUNCT WITHIN?,TL-X,TL-Y,BR-X,BR-Y
LESS? MOUSE-LOC-X,TL-X /FALSE
GRTR? MOUSE-LOC-X,BR-X /FALSE
LESS? MOUSE-LOC-Y,TL-Y /FALSE
GRTR? MOUSE-LOC-Y,BR-Y /FALSE
RTRUE
.FUNCT NOW-DARK?
ZERO? LIT /TRUE
CALL2 LIT?,HERE
ZERO? STACK \TRUE
SET 'LIT,FALSE-VALUE
SET 'COMPASS-CHANGED,TRUE-VALUE
PRINTI " It is now too dark to see."
IN? JESTER,HERE \?CND5
ICALL1 REMOVE-J
PRINTR " A sound of jingling bells becomes increasingly distant before fading entirely."
?CND5: CRLF
RTRUE
.FUNCT NOW-LIT?
ZERO? LIT \FALSE
CALL2 LIT?,HERE
ZERO? STACK /FALSE
SET 'LIT,TRUE-VALUE
SET 'COMPASS-CHANGED,TRUE-VALUE
CRLF
CALL1 V-LOOK
RSTACK
.FUNCT LOC-CLOSED,OBJ,VB,L
ASSIGNED? 'VB /?CND1
SET 'VB,TRUE-VALUE
?CND1: LOC OBJ >L
FSET? L,CONTBIT \FALSE
FSET? L,OPENBIT /FALSE
FSET? OBJ,TAKEBIT \FALSE
IN? PROTAGONIST,L /FALSE
ZERO? VB /TRUE
ICALL DO-FIRST,STR?140,L
RTRUE
.FUNCT DO-WALK,DIR
SET 'P-WALK-DIR,DIR
ICALL PERFORM,V?WALK,DIR
RTRUE
.FUNCT STOP
SET 'P-CONT,-1
RETURN 2
.FUNCT ROB,WHO,WHERE,EXCLUDE-WORN-ITEM,TAKER,TOOK-PIGEON,N,X
FIRST? WHO >X /?PRG2
?PRG2: ZERO? X /?REP3
NEXT? X >N /?BOGUS6
?BOGUS6: ZERO? EXCLUDE-WORN-ITEM /?CCL9
FSET? X,WORNBIT /?CND7
?CCL9: ZERO? WHERE /?CCL13
FCLEAR X,WORNBIT
ZERO? TAKER \?CTR15
IN? WHERE,ROOMS \?CCL16
CALL FIND-IN,WHERE,BLACKBIT >TAKER
ZERO? TAKER \?CTR15
CALL FIND-IN,WHERE,WHITEBIT >TAKER
ZERO? TAKER /?CCL16
?CTR15: EQUAL? X,PIGEON \?CND23
SET 'TOOK-PIGEON,TRUE-VALUE
?CND23: MOVE X,TAKER
JUMP ?CND7
?CCL16: CALL SPECIAL-DROP,X,TRUE-VALUE
ZERO? STACK \?CND7
MOVE X,WHERE
JUMP ?CND7
?CCL13: FCLEAR X,WORNBIT
REMOVE X
?CND7: SET 'X,N
JUMP ?PRG2
?REP3: ZERO? TAKER /TRUE
CALL2 VISIBLE?,TAKER
ZERO? STACK /?CCL30
PRINTI " The "
ICALL2 DPRINT,TAKER
PRINTI " is only too happy to pick it all up"
ZERO? TOOK-PIGEON /?CCL33
CALL2 META-LOC,PERCH
EQUAL? HERE,STACK /?CCL33
PRINTI ", including the pigeon."
ICALL PIECE-TAKES-PIGEON,TAKER,FALSE-VALUE
RTRUE
?CCL33: PRINTC 46
RTRUE
?CCL30: ZERO? TOOK-PIGEON /TRUE
ICALL2 MOVE-TO-PERCH,TAKER
RTRUE
.FUNCT HACK-HACK,STR
PRINT STR
ICALL1 TPRINT-PRSO
CALL1 HO-HUM
RSTACK
.FUNCT HO-HUM
CALL2 PICK-ONE,HO-HUM-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT YUKS
CALL2 PICK-ONE,YUK-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT IMPOSSIBLES
CALL2 PICK-ONE,IMPOSSIBLE-LIST
PRINT STACK
CRLF
RTRUE
.FUNCT WASTES
CALL2 PICK-ONE,WASTE-LIST
PRINT STACK
CRLF
RTRUE
.ENDSEG
.ENDI