.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