.FUNCT V-VERBOSE SET 'VERBOSITY,2 PRINTR "Maximum verbosity." .FUNCT V-BRIEF SET 'VERBOSITY,1 PRINTR "Brief descriptions." .FUNCT V-SUPER-BRIEF SET 'VERBOSITY,0 PRINTR "Superbrief descriptions." .FUNCT V-DIAGNOSE PRINTI "You are " ZERO? DEAD /?CCL5 PRINTI "dead" JUMP ?CND3 ?CCL5: EQUAL? SPELL?,S-FERMENT \?CCL9 PRINTI "drunk" JUMP ?CND3 ?CCL9: EQUAL? SPELL?,S-FEEBLE \?CCL13 PRINTI "unusually" JUMP ?CND3 ?CCL13: EQUAL? SPELL?,S-FLOAT \?CCL17 PRINTI "floating" JUMP ?CND3 ?CCL17: EQUAL? SPELL?,S-FREEZE \?PRG24 PRINTI "frozen stiff" JUMP ?CND3 ?PRG24: PRINTI "in perfect health" ?CND3: ZERO? DEATHS /?PRG41 PRINTI ". You have been killed " EQUAL? DEATHS,1 \?CCL32 PRINTI "once" JUMP ?PRG41 ?CCL32: EQUAL? DEATHS,2 \?PRG39 PRINTI "twice" JUMP ?PRG41 ?PRG39: PRINTI "an awful lot" ?PRG41: PRINT PERIOD-CR RTRUE .FUNCT V-INVENTORY FIRST? WINNER \?PRG4 CALL PRINT-CONT,WINNER RSTACK ?PRG4: PRINTR "You are empty-handed." .FUNCT FINISH,WRD CALL V-SCORE ?PRG1: CRLF PRINTI "Would you like to start over, restore a saved position, or stop playing? (Type RESTART, RESTORE, or QUIT): >" READ P-INBUF,P-LEXV GET P-LEXV,1 >WRD EQUAL? WRD,W?RESTART \?CCL7 RESTART PRINTI "Failed." CRLF JUMP ?PRG1 ?CCL7: EQUAL? WRD,W?RESTORE \?CCL11 RESTORE PRINTI "Failed." CRLF JUMP ?PRG1 ?CCL11: EQUAL? WRD,W?QUIT,W?Q \?PRG1 QUIT JUMP ?PRG1 .FUNCT V-QUIT,SCOR CALL DO-YOU-WISH,STR?1 ZERO? STACK /?PRG4 QUIT RTRUE ?PRG4: PRINTR "Ok." .FUNCT V-RESTART CALL DO-YOU-WISH,STR?2 ZERO? STACK /FALSE PRINTI "Restarting." CRLF RESTART PRINTR "Failed." .FUNCT DO-YOU-WISH,STRING CALL V-SCORE PRINTI "Do you wish to " PRINT STRING PRINTI "? (Y is affirmative): " CALL YES? ZERO? STACK /FALSE RTRUE .FUNCT YES? PRINTC 62 READ P-INBUF,P-LEXV GET P-LEXV,1 EQUAL? STACK,W?YES,W?Y /TRUE RFALSE .FUNCT V-RESTORE RESTORE PRINTR "Failed." .FUNCT V-SAVE SAVE \?PRG6 PRINTR "Ok." ?PRG6: PRINTR "Failed." .FUNCT V-SCORE PRINTI "Your score is " PRINTN SCORE PRINTI " (out of 400 points), in " PRINTN MOVES PRINTI " move" EQUAL? MOVES,1 /?PRG7 PRINTC 115 ?PRG7: PRINTI ". This score gives you the rank of " EQUAL? SCORE,400 \?CCL11 PRINTI "Wizard" JUMP ?PRG32 ?CCL11: GRTR? SCORE,320 \?CCL15 PRINTI "Master Adventurer" JUMP ?PRG32 ?CCL15: GRTR? SCORE,240 \?CCL19 PRINTI "Senior Adventurer" JUMP ?PRG32 ?CCL19: GRTR? SCORE,160 \?CCL23 PRINTI "Junior Adventurer" JUMP ?PRG32 ?CCL23: GRTR? SCORE,80 \?PRG30 PRINTI "Amateur Adventurer" JUMP ?PRG32 ?PRG30: PRINTI "Beginner" ?PRG32: PRINT PERIOD-CR RTRUE .FUNCT SCORE-OBJ,OBJ,TEMP GETP OBJ,P?VALUE >TEMP GRTR? TEMP,0 \FALSE ADD SCORE,TEMP >SCORE PUTP OBJ,P?VALUE,0 RTRUE .FUNCT V-SCRIPT GET 0,8 BOR STACK,1 PUT 0,8,STACK CALL INTERACTION,STR?3 RSTACK .FUNCT INTERACTION,STRING PRINTI "Here " PRINT STRING PRINTI "s a transcript of interaction with" CRLF CALL V-VERSION RSTACK .FUNCT V-UNSCRIPT CALL INTERACTION,STR?4 GET 0,8 BAND STACK,-2 PUT 0,8,STACK RTRUE .FUNCT V-VERSION,CNT=17 PRINTI "Mini-Zork II: The Wizard of Frobozz Copyright (c) 1988, Infocom, Inc. All rights reserved. ZORK is a registered trademark of Infocom, Inc. Release " GET 0,1 BAND STACK,2047 PRINTN STACK PRINTI " / Serial number " ?PRG5: IGRTR? 'CNT,23 /?REP6 GETB 0,CNT PRINTC STACK JUMP ?PRG5 ?REP6: CRLF RTRUE .FUNCT V-VERIFY PRINTI "Verifying..." CRLF VERIFY \?PRG8 PRINTR "Correct." ?PRG8: CRLF PRINTR "** Failed! **" .FUNCT V-COMMAND-FILE DIRIN 1 RTRUE .FUNCT V-RANDOM EQUAL? PRSO,INTNUM /?CCL3 PRINTR "Illegal call to #RND." ?CCL3: SUB 0,P-NUMBER RANDOM STACK RTRUE .FUNCT V-RECORD DIROUT 4 RTRUE .FUNCT V-UNRECORD DIROUT -4 RTRUE .FUNCT V-ALARM PRINTI "The " PRINTD PRSO PRINTR " isn't sleeping." .FUNCT V-ATTACK FSET? PRSO,ACTORBIT /?CND1 PRINTI "Fight a " PRINTD PRSO PRINTR "!?!" ?CND1: ZERO? PRSI \?PRG10 IN? ADVENTURER,SWORD \?CCL9 SET 'PRSI,SWORD JUMP ?PRG10 ?CCL9: SET 'PRSI,HANDS ?PRG10: PRINTI "Trying to attack a " PRINTD PRSO PRINTI " with " EQUAL? PRSI,HANDS \?PRG17 PRINTI "your bare hands" JUMP ?PRG19 ?PRG17: PRINTI "a " PRINTD PRSI ?PRG19: PRINTR " is suicidal." .FUNCT V-BLAST PRINTR "You can't blast anything by using words." .FUNCT PRE-BURN ZERO? PRSI \?CCL3 PRINTR "You didn't say with what!" ?CCL3: FSET? PRSI,FLAMEBIT \?PRG10 FSET? PRSI,ONBIT /FALSE ?PRG10: PRINTI "With a " PRINTD PRSI PRINTR "??!?" .FUNCT V-BURN LOC PRSO EQUAL? STACK,RECEPTACLE \?CCL3 CALL BALLOON-BURN RTRUE ?CCL3: FSET? PRSO,BURNBIT \?PRG24 PRINTI "The " PRINTD PRSO PRINTI " catches fire" CALL REMOVE-CAREFULLY,PRSO IN? PRSO,WINNER /?PRG13 IN? WINNER,PRSO \?PRG22 ?PRG13: PRINTI ". Unfortunately, you were " IN? WINNER,PRSO \?PRG20 PRINTI "in" JUMP ?CND15 ?PRG20: PRINTI "holding" ?CND15: CALL JIGS-UP,STR?5 RSTACK ?PRG22: PRINTR " and is consumed." ?PRG24: PRINTI "You can't burn a " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-CLIMB-DOWN CALL DO-WALK,P?DOWN RSTACK .FUNCT V-CLIMB CALL DO-WALK,P?UP RSTACK .FUNCT V-CLIMB-ON FSET? PRSO,VEHBIT \?PRG4 CALL PERFORM,V?ENTER,PRSO RTRUE ?PRG4: PRINTI "You can't climb onto the " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-CLOSE FSET? PRSO,DOORBIT \?CCL3 FSET? PRSO,OPENBIT \?PRG9 FCLEAR PRSO,OPENBIT PRINTR "Closed." ?PRG9: PRINT ALREADY RTRUE ?CCL3: FSET? PRSO,SURFACEBIT /?PRG15 FSET? PRSO,CONTBIT /?CCL12 ?PRG15: PRINTI "You can't close a " PRINTD PRSO PRINT PERIOD-CR RTRUE ?CCL12: FSET? PRSO,OPENBIT \?PRG21 FCLEAR PRSO,OPENBIT PRINTI "Closed." CRLF CALL NOW-DARK? RSTACK ?PRG21: PRINT ALREADY RTRUE .FUNCT V-COMMAND FSET? PRSO,ACTORBIT \?PRG6 PRINTI "The " PRINTD PRSO PRINTR " pays no attention." ?PRG6: PRINTR "You cannot talk to that!" .FUNCT V-COUNT PRINTR "You have lost your mind." .FUNCT V-CURSES PRINTR "Such language in a high-class establishment like this!" .FUNCT V-CUT FSET? PRSO,ACTORBIT \?CCL3 CALL PERFORM,V?ATTACK,PRSO,PRSI RSTACK ?CCL3: FSET? PRSI,WEAPONBIT /?CCL5 PRINTI "The ""cutting edge"" of a " PRINTD PRSI PRINTR " is inadequate." ?CCL5: FSET? PRSO,BURNBIT \?PRG17 IN? WINNER,PRSO \?CCL12 PRINTR "You're in it!" ?CCL12: CALL REMOVE-CAREFULLY,PRSO PRINTI "You skillfully slice the " PRINTD PRSO PRINTR " into slivers, which blow away." ?PRG17: PRINTI "Strange concept, cutting the " PRINTD PRSO PRINTR "...." .FUNCT V-DEFLATE PRINTR "Come on, now!" .FUNCT V-DISEMBARK EQUAL? PRSO,ROOMS \?CCL3 LOC WINNER FSET? STACK,VEHBIT \?CCL3 LOC WINNER CALL PERFORM,V?DISEMBARK,STACK RTRUE ?CCL3: LOC WINNER EQUAL? STACK,PRSO /?CCL7 PRINT LOOK-AROUND RETURN 2 ?CCL7: FSET? HERE,RLANDBIT \?PRG16 MOVE WINNER,HERE PRINTR "You are on your own feet again." ?PRG16: PRINTI "Getting out here would be fatal." CRLF RETURN 2 .FUNCT V-DISENCHANT IN? PRSO,HERE \TRUE EQUAL? SPELL-USED,W?FEEBLE,W?FUMBLE /?CTR4 EQUAL? SPELL-USED,W?FREEZE,W?FALL,W?FERMENT /?CTR4 EQUAL? SPELL-USED,W?FENCE,W?FANTASIZE \?CCL5 ?CTR4: FSET? PRSO,ACTORBIT \FALSE EQUAL? SPELL-USED,W?FEEBLE \?CCL14 PRINTI "The " PRINTD PRSO PRINTR " seems stronger now." ?CCL14: EQUAL? SPELL-USED,W?FUMBLE \?CCL18 PRINTI "The " PRINTD PRSO PRINTR " no longer appears clumsy." ?CCL18: EQUAL? SPELL-USED,W?FREEZE \?CCL22 PRINTI "The " PRINTD PRSO PRINTR " moves again." ?CCL22: EQUAL? SPELL-USED,W?FERMENT \FALSE PRINTI "The " PRINTD PRSO PRINTR " stops swaying." ?CCL5: EQUAL? SPELL-USED,W?FLOAT \?CCL30 PRINTI "The " PRINTD PRSO PRINTR " sinks to the ground." ?CCL30: EQUAL? SPELL-USED,W?FUDGE \FALSE PRINTR "The sweet smell has dispersed." .FUNCT V-DRINK CALL V-EAT RSTACK .FUNCT V-DRINK-FROM PRINTR "How peculiar!" .FUNCT PRE-DROP LOC WINNER EQUAL? PRSO,STACK \FALSE CALL PERFORM,V?DISEMBARK,PRSO RTRUE .FUNCT V-DROP CALL IDROP ZERO? STACK /FALSE PRINTR "Dropped." .FUNCT V-EAT FSET? PRSO,FOODBIT \?CCL3 CALL HIT-SPOT RSTACK ?CCL3: EQUAL? PRSO,GLOBAL-WATER \?CCL5 CALL HIT-SPOT RSTACK ?CCL5: EQUAL? PRSO,WATER \?PRG13 LOC PRSO CALL HELD?,STACK ZERO? STACK \?CCL10 PRINTI "You're not holding the " LOC PRSO PRINTD STACK PRINT PERIOD-CR RTRUE ?CCL10: CALL HIT-SPOT RSTACK ?PRG13: PRINTI "It's doubtful the " PRINTD PRSO PRINTR " would agree with you." .FUNCT HIT-SPOT EQUAL? PRSO,GLOBAL-WATER /?PRG3 CALL REMOVE-CAREFULLY,PRSO ?PRG3: PRINTR "That really hit the spot." .FUNCT V-ENCHANT ZERO? WAND-ON /?CND1 SET 'SPELL-VICTIM,WAND-ON ?CND1: ZERO? SPELL-VICTIM /?CCL5 ZERO? SPELL-USED \?CND6 PRINTR "You must be more specific." ?CND6: EQUAL? SPELL-USED,W?FEEBLE,W?FUMBLE /?CTR11 EQUAL? SPELL-USED,W?FREEZE,W?FALL,W?FERMENT /?CTR11 EQUAL? SPELL-USED,W?FENCE,W?FANTASIZE \?CCL12 ?CTR11: FSET? PRSO,ACTORBIT \?PRG21 PRINT WAND-STOPS-GLOWING RTRUE ?PRG21: PRINTI "That might have done something, but it's hard to tell with a " PRINTD PRSO PRINT PERIOD-CR RTRUE ?CCL12: EQUAL? SPELL-USED,W?FUDGE \?CCL24 PRINTR "An odor of chocolate permeates the room." ?CCL24: EQUAL? SPELL-USED,W?FLUORESCE \?CCL28 FSET PRSO,LIGHTBIT FSET PRSO,ONBIT SET 'LIT,TRUE-VALUE PRINTI "The " PRINTD PRSO PRINTR " begins to glow." ?CCL28: EQUAL? SPELL-USED,W?FLOAT \?CCL32 FSET? PRSO,TAKEBIT \?CCL32 EQUAL? SPELL-VICTIM,COLLAR \?PRG39 IN? COLLAR,CERBERUS \?PRG39 SET 'SPELL-VICTIM,CERBERUS ?PRG39: PRINTI "The " PRINTD PRSO PRINTR " floats serenely in midair." ?CCL32: EQUAL? SPELL-USED,W?FRY \?CCL42 FSET? PRSO,TAKEBIT \?CCL42 SET 'SPELL-HANDLED?,TRUE-VALUE CALL REMOVE-CAREFULLY,PRSO PRINTI "The " PRINTD PRSO PRINTR " goes up in a puff of smoke." ?CCL42: SET 'SPELL-VICTIM,FALSE-VALUE PRINT WAND-STOPS-GLOWING RTRUE ?CCL5: SET 'SPELL-VICTIM,FALSE-VALUE PRINTR "Nothing happens." .FUNCT REMOVE-CAREFULLY,OBJ,OLIT EQUAL? OBJ,P-IT-OBJECT \?CND1 SET 'P-IT-OBJECT,FALSE-VALUE ?CND1: SET 'OLIT,LIT REMOVE OBJ CALL NOW-DARK? RSTACK .FUNCT PRE-ENTER,M ZERO? PRSO \?CCL3 CALL DO-WALK,P?IN RETURN 2 ?CCL3: FSET? PRSO,DOORBIT \?CCL5 CALL OTHER-SIDE,PRSO >M ZERO? M /?CCL5 CALL DO-WALK,M RETURN 2 ?CCL5: FSET? PRSO,VEHBIT \?CCL9 LOC ADVENTURER FSET? STACK,VEHBIT \FALSE PRINT LOOK-AROUND RETURN 2 ?CCL9: EQUAL? PRSO,GLOBAL-WATER,WATER /FALSE PRINTI "You hit your head against the " PRINTD PRSO PRINTI " as you attempt this feat." CRLF RETURN 2 .FUNCT V-ENTER PRINTI "You are now in the " PRINTD PRSO PRINT PERIOD-CR MOVE WINNER,PRSO GETP PRSO,P?ACTION CALL STACK,M-ENTER RTRUE .FUNCT V-EXAMINE GETP PRSO,P?TEXT ZERO? STACK /?CCL3 GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE ?CCL3: FSET? PRSO,CONTBIT /?CTR6 FSET? PRSO,DOORBIT \?PRG10 ?CTR6: CALL V-LOOK-INSIDE RSTACK ?PRG10: PRINTI "There's nothing special about the " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-EXIT EQUAL? PRSO,FALSE-VALUE,ROOMS \?PRD5 LOC WINNER FSET? STACK,VEHBIT /?CTR2 ?PRD5: ZERO? PRSO /?CCL3 IN? WINNER,PRSO \?CCL3 ?CTR2: LOC WINNER CALL PERFORM,V?DISEMBARK,STACK RTRUE ?CCL3: CALL DO-WALK,P?OUT RSTACK .FUNCT PRE-FILL,TX ZERO? PRSI \?CCL3 CALL GLOBAL-IN?,GLOBAL-WATER,HERE ZERO? STACK /?CCL6 CALL PERFORM,V?FILL,PRSO,GLOBAL-WATER RTRUE ?CCL6: LOC WINNER IN? WATER,STACK \?PRG9 CALL PERFORM,V?FILL,PRSO,WATER RTRUE ?PRG9: PRINTR "There is nothing to fill it with." ?CCL3: EQUAL? PRSI,WATER,GLOBAL-WATER /FALSE CALL PERFORM,V?PUT,PRSI,PRSO RTRUE .FUNCT V-FILL PRINTR "Huh?" .FUNCT V-FIND,L LOC PRSO >L EQUAL? PRSO,HANDS \?CCL3 PRINTR "Within six feet of your head, hopefully." ?CCL3: EQUAL? L,GLOBAL-OBJECTS \?CCL7 PRINTR "You find it." ?CCL7: IN? PRSO,WINNER \?CCL11 PRINTR "You have it." ?CCL11: IN? PRSO,HERE /?PRG19 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK \?PRG19 EQUAL? PRSO,PSEUDO-OBJECT \?CCL15 ?PRG19: PRINTR "It's right here." ?CCL15: FSET? L,ACTORBIT \?CCL22 PRINTI "The " PRINTD L PRINTR " has it." ?CCL22: FSET? L,SURFACEBIT \?CCL26 PRINTI "It's on the " PRINTD L PRINT PERIOD-CR RTRUE ?CCL26: FSET? L,CONTBIT \?PRG33 PRINTI "It's in the " PRINTD L PRINT PERIOD-CR RTRUE ?PRG33: PRINTR "Beats me." .FUNCT V-FOLLOW CALL V-COUNT RSTACK .FUNCT PRE-GIVE CALL HELD?,PRSO ZERO? STACK \FALSE PRINTI "That's easy for you to say since you don't even have the " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-GIVE FSET? PRSI,ACTORBIT /?PRG6 PRINTI "You can't give a " PRINTD PRSO PRINTI " to a " PRINTD PRSI PRINTR "!" ?PRG6: PRINTI "The " PRINTD PRSI PRINTR " refuses it politely." .FUNCT V-HELLO ZERO? PRSO /?PRG11 FSET? PRSO,ACTORBIT \?PRG9 PRINTI "The " PRINTD PRSO PRINTR " bows his head to you in greeting." ?PRG9: PRINTI "Only schizophrenics say ""Hello"" to a " PRINTD PRSO PRINT PERIOD-CR RTRUE ?PRG11: PRINTR "Goodbye." .FUNCT V-INCANT ZERO? SPELL-USED /?CCL3 PRINTI "Nothing happens." CRLF JUMP ?CND1 ?CCL3: ZERO? WAND-ON /?PRG10 SET 'SPELL-VICTIM,WAND-ON GET P-LEXV,P-CONT >SPELL-USED PRINTI "The wand glows very brightly for a moment." CRLF RANDOM 10 ADD 10,STACK CALL QUEUE,I-SPELL,STACK PUT STACK,0,1 SET 'WAND-ON,FALSE-VALUE CALL PERFORM,V?ENCHANT,SPELL-VICTIM JUMP ?CND1 ?PRG10: PRINTI "The incantation echoes back faintly, but nothing else happens." CRLF ?CND1: SET 'QUOTE-FLAG,FALSE-VALUE SET 'P-CONT,FALSE-VALUE RTRUE .FUNCT I-SPELL ZERO? SPELL-HANDLED? \?CND1 ZERO? SPELL-VICTIM /?CND1 CALL PERFORM,V?DISENCHANT,SPELL-VICTIM ?CND1: SET 'SPELL-HANDLED?,FALSE-VALUE SET 'WAND-ON,FALSE-VALUE SET 'SPELL-USED,FALSE-VALUE SET 'SPELL-VICTIM,FALSE-VALUE RETURN SPELL-VICTIM .FUNCT V-INFLATE PRINTR "How can you inflate that?" .FUNCT V-KICK CALL HACK-HACK,STR?6 RSTACK .FUNCT V-KISS PRINTR "I'd sooner kiss a pig." .FUNCT V-KNOCK FSET? PRSO,DOORBIT \?PRG6 PRINTR "Nobody's home." ?PRG6: PRINTI "Why knock on a " PRINTD PRSO PRINTR "?" .FUNCT V-LAMP-OFF FSET? PRSO,LIGHTBIT \?PRG11 FSET? PRSO,ONBIT /?CCL6 PRINT ALREADY RTRUE ?CCL6: FCLEAR PRSO,ONBIT PRINTI "The " PRINTD PRSO PRINTI " is now off." CRLF CALL NOW-DARK? RSTACK ?PRG11: PRINTR "You can't turn that off." .FUNCT V-LAMP-ON FSET? PRSO,LIGHTBIT \?CCL3 FSET? PRSO,ONBIT \?CCL6 PRINT ALREADY RTRUE ?CCL6: FSET PRSO,ONBIT PRINTI "The " PRINTD PRSO PRINTI " is now on." CRLF ZERO? LIT \FALSE CALL LIT?,HERE >LIT CRLF CALL V-LOOK RSTACK ?CCL3: FSET? PRSO,BURNBIT \?PRG18 PRINTI "If you wish to burn the " PRINTD PRSO PRINTR ", you should say so." ?PRG18: PRINTR "You can't turn that on." .FUNCT V-LAUNCH PRINTR "You can't launch that by saying ""launch""!" .FUNCT V-LEAP,TX,S ZERO? PRSO /?CCL3 PRINTR "That would be a good trick." ?CCL3: GETPT HERE,P?DOWN >TX ZERO? TX /?CCL7 PTSIZE TX >S EQUAL? S,2 /?CTR9 EQUAL? S,4 \?CCL10 GETB TX,1 VALUE STACK ZERO? STACK \?CCL10 ?CTR9: CALL JIGS-UP,STR?7 RSTACK ?CCL10: CALL V-SKIP RSTACK ?CCL7: CALL V-SKIP RSTACK .FUNCT V-LEAVE CALL DO-WALK,P?OUT RSTACK .FUNCT V-LISTEN PRINTI "The " PRINTD PRSO PRINTR " makes no sound." .FUNCT V-LOCK PRINTR "It doesn't seem to work." .FUNCT V-LOOK CALL DESCRIBE-ROOM,TRUE-VALUE ZERO? LIT /FALSE CALL DESCRIBE-OBJECTS,TRUE-VALUE RSTACK .FUNCT V-LOOK-BEHIND PRINTI "There is nothing behind the " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-LOOK-INSIDE FSET? PRSO,DOORBIT \?CCL3 PRINTI "The " PRINTD PRSO FSET? PRSO,OPENBIT \?PRG11 PRINTR " is open, but you can't see beyond it." ?PRG11: PRINTR " is closed." ?CCL3: FSET? PRSO,CONTBIT \?PRG31 FSET? PRSO,ACTORBIT \?CCL17 PRINTR "There is nothing special to be seen." ?CCL17: CALL SEE-INSIDE?,PRSO ZERO? STACK /?PRG29 FIRST? PRSO \?PRG27 CALL PRINT-CONT,PRSO ZERO? STACK \TRUE ?PRG27: PRINTI "The " PRINTD PRSO PRINTR " is empty." ?PRG29: PRINTI "The " PRINTD PRSO PRINTR " is closed." ?PRG31: PRINTI "You can't look inside a " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-LOOK-UNDER PRINTR "There is nothing but dust there." .FUNCT V-LOWER CALL HACK-HACK,STR?8 RSTACK .FUNCT V-MELT PRINTI "You can't melt a " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-MOVE CALL HELD?,PRSO ZERO? STACK /?CCL3 PRINTR "Why juggle objects?" ?CCL3: FSET? PRSO,TAKEBIT \?PRG10 PRINTI "Moving the " PRINTD PRSO PRINTR " reveals nothing." ?PRG10: PRINTI "You can't move the " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT PRE-MUNG ZERO? PRSI /?PRG6 FSET? PRSI,WEAPONBIT /FALSE ?PRG6: PRINTI "Trying to destroy the " PRINTD PRSO PRINTI " with " ZERO? PRSI \?PRG13 PRINTI "your bare hands" JUMP ?PRG15 ?PRG13: PRINTI "a " PRINTD PRSI ?PRG15: PRINTR " is futile." .FUNCT V-MUNG FSET? PRSO,ACTORBIT \?PRG4 CALL PERFORM,V?ATTACK,PRSO RTRUE ?PRG4: PRINTR "Nice try." .FUNCT V-OPEN,F,STR FSET? PRSO,CONTBIT \?CCL3 FSET? PRSO,OPENBIT \?CCL6 PRINT ALREADY RTRUE ?CCL6: FSET PRSO,OPENBIT FSET PRSO,TOUCHBIT FIRST? PRSO \?PRG14 FSET? PRSO,TRANSBIT \?CCL11 ?PRG14: PRINTR "Opened." ?CCL11: FIRST? PRSO >F \?PRG26 NEXT? F /?PRG26 FSET? F,TOUCHBIT /?PRG26 GETP F,P?FDESC >STR ZERO? STR /?PRG26 PRINTI "The " PRINTD PRSO PRINTI " opens." CRLF PRINT STR CRLF RTRUE ?PRG26: PRINTI "Opening the " PRINTD PRSO PRINTI " reveals " CALL PRINT-CONTENTS,PRSO PRINT PERIOD-CR RTRUE ?CCL3: FSET? PRSO,DOORBIT \?PRG39 FSET? PRSO,OPENBIT \?CCL34 PRINT ALREADY RTRUE ?CCL34: FSET PRSO,OPENBIT PRINTI "The " PRINTD PRSO PRINTR " opens." ?PRG39: PRINTI "You can't open a " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-PICK PRINTR "You can't pick that." .FUNCT V-PLAY PRINTR "That's silly!" .FUNCT V-POUR-ON EQUAL? PRSO,WATER \?PRG15 CALL REMOVE-CAREFULLY,PRSO FSET? PRSI,FLAMEBIT \?PRG13 FSET? PRSI,ONBIT \?PRG13 PRINTI "The " PRINTD PRSI PRINTI " is extinguished." CRLF EQUAL? PRSI,BALLOON-INFLATED \?CND11 SET 'BALLOON-INFLATED,FALSE-VALUE ?CND11: FCLEAR PRSI,ONBIT FCLEAR PRSI,FLAMEBIT RTRUE ?PRG13: PRINTI "The water spills over the " PRINTD PRSI PRINTR " and evaporates." ?PRG15: PRINTR "You can't pour that." .FUNCT V-PUSH CALL HACK-HACK,STR?9 RSTACK .FUNCT PRE-PUT CALL PRE-GIVE RSTACK .FUNCT V-PUT,?TMP1,?TMP2,?TMP3 FSET? PRSI,OPENBIT /?CCL3 FSET? PRSI,DOORBIT /?CCL3 FSET? PRSI,CONTBIT /?CCL3 FSET? PRSI,VEHBIT /?CCL3 PRINTR "You can't do that." ?CCL3: FSET? PRSI,OPENBIT /?CCL12 SET 'P-IT-OBJECT,PRSI PRINTI "The " PRINTD PRSI PRINTR " isn't open." ?CCL12: EQUAL? PRSI,PRSO \?CCL16 PRINTR "How can you do that?" ?CCL16: IN? PRSO,PRSI \?CCL20 PRINTI "The " PRINTD PRSO PRINTI " is already in the " PRINTD PRSI PRINT PERIOD-CR RTRUE ?CCL20: CALL WEIGHT,PRSI >?TMP3 CALL WEIGHT,PRSO ADD ?TMP3,STACK >?TMP2 GETP PRSI,P?SIZE SUB ?TMP2,STACK >?TMP1 GETP PRSI,P?CAPACITY GRTR? ?TMP1,STACK \?CCL24 PRINTR "There's no room." ?CCL24: CALL HELD?,PRSO ZERO? STACK \?CCL28 CALL ITAKE ZERO? STACK /TRUE ?CCL28: MOVE PRSO,PRSI FSET PRSO,TOUCHBIT CALL SCORE-OBJ,PRSO PRINTR "Done." .FUNCT V-PUT-ON EQUAL? PRSI,GROUND \?CCL3 CALL PERFORM,V?DROP,PRSO RTRUE ?CCL3: FSET? PRSI,SURFACEBIT \?PRG6 CALL V-PUT RSTACK ?PRG6: PRINTI "There's no good surface on the " PRINTD PRSI PRINT PERIOD-CR RTRUE .FUNCT V-PUT-UNDER PRINTR "You can't do that." .FUNCT V-RAISE CALL V-LOWER RSTACK .FUNCT V-RAPE PRINTR "What a (ahem!) strange idea." .FUNCT PRE-READ ZERO? LIT \FALSE PRINT TOO-DARK CRLF RTRUE .FUNCT V-READ FSET? PRSO,READBIT /?PRG6 PRINTI "How does one read a " PRINTD PRSO PRINTR "?" ?PRG6: GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE .FUNCT V-RUB CALL HACK-HACK,STR?10 RSTACK .FUNCT V-SAY,V ZERO? SPELL-USED \?CTR2 ZERO? WAND-ON /?CCL3 ?CTR2: CALL PERFORM,V?INCANT RTRUE ?CCL3: ZERO? P-CONT \?CCL7 PRINTR "Say what?" ?CCL7: SET 'QUOTE-FLAG,FALSE-VALUE SET 'P-CONT,FALSE-VALUE CALL FIND-IN,HERE,ACTORBIT >V ZERO? V /?PRG15 PRINTI "You must address the " PRINTD V PRINTR " directly." ?PRG15: PRINTR "Talking to yourself is a sign of impending mental collapse." .FUNCT V-SEARCH PRINTR "You find nothing unusual." .FUNCT V-SGIVE CALL PERFORM,V?GIVE,PRSI,PRSO RTRUE .FUNCT V-SHAKE PRINTR "Shaken." .FUNCT V-SKIP PRINTR "Wheeeeeeee!!!" .FUNCT V-SMELL PRINTI "It smells like a " PRINTD PRSO PRINT PERIOD-CR RTRUE .FUNCT V-STAND LOC WINNER FSET? STACK,VEHBIT \?PRG4 LOC WINNER CALL PERFORM,V?DISEMBARK,STACK RTRUE ?PRG4: PRINT LOOK-AROUND RTRUE .FUNCT V-STRIKE FSET? PRSO,ACTORBIT \?CCL3 CALL PERFORM,V?ATTACK,PRSO,HANDS RTRUE ?CCL3: CALL PERFORM,V?LAMP-ON,PRSO RTRUE .FUNCT V-SWIM PRINTI "Swimming isn't usually allowed in the " EQUAL? PRSO,WATER,GLOBAL-WATER /?PRG8 PRINTD PRSO PRINTR "." ?PRG8: PRINTR "dungeon." .FUNCT V-SWING ZERO? PRSI \?CCL3 PRINTR "Whoosh!" ?CCL3: CALL PERFORM,V?ATTACK,PRSI,PRSO RSTACK .FUNCT PRE-TAKE IN? PRSO,WINNER \?CCL3 PRINTR "You already have that!" ?CCL3: LOC PRSO FSET? STACK,CONTBIT \?CCL7 LOC PRSO FSET? STACK,OPENBIT /?CCL7 PRINTR "You can't reach into a closed container." ?CCL7: ZERO? PRSI /?CCL13 EQUAL? PRSI,DOOR-KEEPER,GROUND \?CCL16 SET 'PRSI,FALSE-VALUE RFALSE ?CCL16: LOC PRSO EQUAL? PRSI,STACK /?CCL18 PRINTI "The " PRINTD PRSO PRINTI " isn't in the " PRINTD PRSI PRINT PERIOD-CR RTRUE ?CCL18: SET 'PRSI,FALSE-VALUE RFALSE ?CCL13: LOC WINNER EQUAL? PRSO,STACK \FALSE PRINTR "You're in it!" .FUNCT V-TAKE CALL ITAKE EQUAL? STACK,TRUE-VALUE \FALSE PRINTR "Taken." .FUNCT V-TELL FSET? PRSO,ACTORBIT \?PRG9 ZERO? P-CONT /?PRG7 SET 'WINNER,PRSO LOC WINNER >HERE RETURN HERE ?PRG7: PRINTI "The " PRINTD PRSO PRINTR " pauses, thinking that you should reread the manual." ?PRG9: PRINTI "You can't talk to the " PRINTD PRSO PRINTC 33 CRLF SET 'QUOTE-FLAG,FALSE-VALUE SET 'P-CONT,FALSE-VALUE RETURN 2 .FUNCT V-THROW CALL IDROP ZERO? STACK /?PRG19 EQUAL? PRSI,ME \?CCL6 SET 'WINNER,ADVENTURER PRINTI "A terrific throw! The " PRINTD PRSO PRINTI " hits your head. By incredible mischance, you fall trying to duck and break your neck, justice being swift and merciful in" PRINT GUE-NAME CALL JIGS-UP,STR?11 RSTACK ?CCL6: ZERO? PRSI /?PRG17 FSET? PRSI,ACTORBIT \?PRG17 PRINTI "The " PRINTD PRSI PRINTR " ducks." ?PRG17: PRINTR "Thrown." ?PRG19: PRINTR "Huh?" .FUNCT V-THROW-OFF PRINTR "You can't throw anything off of that!" .FUNCT V-TIE PRINTI "You can't tie the " PRINTD PRSO PRINTR " to that." .FUNCT V-TIE-UP PRINTR "You could certainly never tie it with that!" .FUNCT V-TURN PRINTR "You can't turn that!" .FUNCT V-UNLOCK CALL V-LOCK RSTACK .FUNCT V-UNTIE PRINTR "This cannot be tied, so it cannot be untied!" .FUNCT V-WAIT,NUM=3 PRINTI "Time passes..." CRLF ?PRG3: DLESS? 'NUM,0 /?REP4 CALL CLOCKER ZERO? STACK /?PRG3 ?REP4: SET 'CLOCK-WAIT,TRUE-VALUE RETURN CLOCK-WAIT .FUNCT V-WALK,PT,PTS,STR,OBJ,RM ZERO? P-WALK-DIR \?CCL3 CALL PERFORM,V?WALK-TO,PRSO RTRUE ?CCL3: GETPT HERE,PRSO >PT ZERO? PT /?CCL5 PTSIZE PT >PTS EQUAL? PTS,UEXIT \?CCL8 GETB PT,REXIT CALL GOTO,STACK RSTACK ?CCL8: EQUAL? PTS,NEXIT \?CCL10 GET PT,NEXITSTR PRINT STACK CRLF RETURN 2 ?CCL10: EQUAL? PTS,FEXIT \?CCL16 GET PT,FEXITFCN CALL STACK >RM ZERO? RM /?PRG20 CALL GOTO,RM RSTACK ?PRG20: RETURN 2 ?CCL16: EQUAL? PTS,CEXIT \?CCL23 GETB PT,CEXITFLAG VALUE STACK ZERO? STACK /?CCL26 GETB PT,REXIT CALL GOTO,STACK RSTACK ?CCL26: GET PT,CEXITSTR >STR ZERO? STR /?PRG33 PRINT STR CRLF RETURN 2 ?PRG33: PRINT CANT-GO RETURN 2 ?CCL23: EQUAL? PTS,DEXIT \FALSE GETB PT,DEXITOBJ >OBJ FSET? OBJ,OPENBIT \?CCL41 GETB PT,REXIT CALL GOTO,STACK RSTACK ?CCL41: GET PT,DEXITSTR >STR ZERO? STR /?PRG48 PRINT STR CRLF RETURN 2 ?PRG48: PRINTI "The " PRINTD OBJ PRINTI " is closed." CRLF SET 'P-IT-OBJECT,OBJ RETURN 2 ?CCL5: ZERO? LIT \?PRG58 RANDOM 100 GRTR? 80,STACK \?PRG58 EQUAL? WINNER,ADVENTURER \?PRG58 FSET? HERE,NONLANDBIT /?PRG58 CALL JIGS-UP,STR?12 RSTACK ?PRG58: PRINT CANT-GO RETURN 2 .FUNCT V-WALK-AROUND PRINTR "Use compass directions for movement." .FUNCT V-WALK-TO ZERO? PRSO /?CCL3 IN? PRSO,HERE /?PRG8 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?CCL3 ?PRG8: PRINTR "It's here!" ?CCL3: CALL V-WALK-AROUND RSTACK .FUNCT V-WAVE CALL HACK-HACK,STR?13 RSTACK .FUNCT V-YELL PRINTR "Aaaarrrrgggghhhh!" .FUNCT V-ZORK PRINTR "At your service!" .FUNCT DESCRIBE-ROOM,LOOK?=0,V?,STR,AV LOC WINNER >AV ZERO? LOOK? /?PRD3 SET 'V?,LOOK? JUMP ?PEN1 ?PRD3: EQUAL? VERBOSITY,2 /?PRD4 PUSH 0 JUMP ?PRD5 ?PRD4: PUSH 1 ?PRD5: SET 'V?,STACK ?PEN1: ZERO? LIT \?CND6 PRINTI "It is pitch black. You are likely to be eaten by a grue." CRLF RFALSE ?CND6: FSET? HERE,TOUCHBIT /?CND10 FSET HERE,TOUCHBIT SET 'V?,TRUE-VALUE ?CND10: IN? HERE,ROOMS \?CND12 PRINTD HERE FSET? AV,VEHBIT \?CND16 PRINTI ", in the " PRINTD AV ?CND16: CRLF ?CND12: ZERO? LOOK? \?CCL22 GRTR? VERBOSITY,0 /?CCL22 EQUAL? HERE,ZORK3 \FALSE ?CCL22: ZERO? V? /?CCL28 GETP HERE,P?ACTION CALL STACK,M-LOOK ZERO? STACK \TRUE ?CCL28: ZERO? V? /?CCL32 GETP HERE,P?LDESC >STR ZERO? STR /?CCL32 PRINT STR CRLF JUMP ?CND26 ?CCL32: GETP HERE,P?ACTION CALL STACK,M-FLASH ?CND26: EQUAL? HERE,AV /FALSE FSET? AV,VEHBIT \FALSE GETP AV,P?ACTION CALL STACK,M-LOOK RSTACK .FUNCT DESCRIBE-OBJECTS,V?=0 FIRST? HERE \FALSE ZERO? V? /?PRD6 SET 'V?,V? JUMP ?PEN4 ?PRD6: EQUAL? VERBOSITY,2 /?PRD7 PUSH 0 JUMP ?PRD8 ?PRD7: PUSH 1 ?PRD8: SET 'V?,STACK ?PEN4: CALL PRINT-CONT,HERE,V?,-1 RSTACK .FUNCT DESCRIBE-OBJECT,OBJ,V?,LEVEL,STR=0,AV SET 'DESC-OBJECT,OBJ ZERO? LEVEL \?CCL3 GETP OBJ,P?DESCFCN CALL STACK,M-OBJDESC ZERO? STACK \TRUE ?CCL3: ZERO? LEVEL \?CCL7 FSET? OBJ,TOUCHBIT /?PRD11 GETP OBJ,P?FDESC >STR ZERO? STR \?PRG14 ?PRD11: GETP OBJ,P?LDESC >STR ZERO? STR /?CCL7 ?PRG14: PRINT STR JUMP ?CND1 ?CCL7: ZERO? LEVEL \?PRG26 PRINTI "There is a " PRINTD OBJ PRINTI " here" FSET? OBJ,ONBIT \?PRG24 PRINTI " (providing light)" ?PRG24: PRINTC 46 JUMP ?CND1 ?PRG26: GET INDENTS,LEVEL PRINT STACK PRINTI "A " PRINTD OBJ FSET? OBJ,ONBIT \?CND1 PRINTI " (providing light)" ?CND1: EQUAL? OBJ,SPELL-VICTIM \?CND34 EQUAL? SPELL-USED,W?FLOAT \?CND34 PRINTI " (floating in midair)" ?CND34: CRLF CALL SEE-INSIDE?,OBJ ZERO? STACK /FALSE FIRST? OBJ \FALSE CALL PRINT-CONT,OBJ,V?,LEVEL RSTACK .FUNCT PRINT-CONTENTS,OBJ,F,N,1ST?=1,IT?=0,TWO?=0 FIRST? OBJ >F \FALSE ?PRG4: NEXT? F >N /?BOGUS6 ?BOGUS6: ZERO? 1ST? /?PRG10 SET '1ST?,FALSE-VALUE JUMP ?PRG16 ?PRG10: PRINTI ", " ZERO? N \?PRG16 PRINTI "and " ?PRG16: PRINTI "a " PRINTD F ZERO? IT? \?CCL20 ZERO? TWO? \?CCL20 SET 'IT?,F JUMP ?CND18 ?CCL20: SET 'TWO?,TRUE-VALUE SET 'IT?,FALSE-VALUE ?CND18: SET 'F,N ZERO? F \?PRG4 ZERO? IT? /TRUE ZERO? TWO? \TRUE SET 'P-IT-OBJECT,IT? RTRUE .FUNCT PRINT-CONT,OBJ,V?=0,LEVEL=0,Y,1ST?,SHIT,AV,STR,PV?=0,INV?=0 FIRST? OBJ >Y \TRUE LOC WINNER >AV ZERO? AV /?CCL5 FSET? AV,VEHBIT /?CND3 ?CCL5: SET 'AV,FALSE-VALUE ?CND3: SET '1ST?,TRUE-VALUE SET 'SHIT,TRUE-VALUE LOC OBJ EQUAL? WINNER,OBJ,STACK \?PRG11 SET 'INV?,TRUE-VALUE FIRST? OBJ >Y /?PRG46 ?PRG46: ZERO? Y \?CCL50 ZERO? PV? /?REP47 ZERO? AV /?REP47 FIRST? AV \?REP47 INC 'LEVEL CALL PRINT-CONT,AV,V?,LEVEL ?REP47: ZERO? 1ST? /TRUE ZERO? SHIT \FALSE RTRUE ?PRG11: ZERO? Y \?CCL15 ZERO? LEVEL \?CND16 EQUAL? SPELL?,S-FANTASIZE \?CND16 RANDOM 100 GRTR? 20,STACK \?CND16 PRINTI "There is a " CALL PICK-ONE,FANTASIES PRINT STACK PRINTI " here." CRLF SET '1ST?,FALSE-VALUE ?CND16: ZERO? 1ST? /TRUE RFALSE ?CCL15: EQUAL? Y,AV \?CCL27 SET 'PV?,TRUE-VALUE JUMP ?CND13 ?CCL27: EQUAL? Y,WINNER /?CND13 FSET? Y,INVISIBLE /?CND13 FSET? Y,TOUCHBIT /?CND13 GETP Y,P?FDESC >STR ZERO? STR /?CND13 FSET? Y,NDESCBIT /?CND33 PRINT STR CRLF SET 'SHIT,FALSE-VALUE ?CND33: CALL SEE-INSIDE?,Y ZERO? STACK /?CND13 LOC Y GETP STACK,P?DESCFCN ZERO? STACK \?CND13 FIRST? Y \?CND13 CALL PRINT-CONT,Y,V?,0 ZERO? STACK /?CND13 SET '1ST?,FALSE-VALUE ?CND13: NEXT? Y >Y /?PRG11 JUMP ?PRG11 ?CCL50: EQUAL? Y,AV,ADVENTURER /?CND48 FSET? Y,INVISIBLE /?CND48 ZERO? INV? \?CCL57 FSET? Y,TOUCHBIT /?CCL57 GETP Y,P?FDESC ZERO? STACK \?CND48 ?CCL57: FSET? Y,NDESCBIT /?CCL65 ZERO? 1ST? /?CND66 CALL FIRSTER,OBJ,LEVEL ZERO? STACK /?CND68 LESS? LEVEL,0 \?CND68 SET 'LEVEL,0 ?CND68: INC 'LEVEL SET '1ST?,FALSE-VALUE ?CND66: LESS? LEVEL,0 \?CND72 SET 'LEVEL,0 ?CND72: CALL DESCRIBE-OBJECT,Y,V?,LEVEL JUMP ?CND48 ?CCL65: FIRST? Y \?CND48 CALL SEE-INSIDE?,Y ZERO? STACK /?CND48 INC 'LEVEL CALL PRINT-CONT,Y,V?,LEVEL DEC 'LEVEL ?CND48: NEXT? Y >Y /?PRG46 JUMP ?PRG46 .FUNCT FIRSTER,OBJ,LEVEL EQUAL? OBJ,WINNER \?CCL3 PRINTR "You have:" ?CCL3: IN? OBJ,ROOMS /FALSE GRTR? LEVEL,0 \?CND8 GET INDENTS,LEVEL PRINT STACK ?CND8: FSET? OBJ,SURFACEBIT \?CCL14 PRINTI "Sitting on the " PRINTD OBJ PRINTR " is: " ?CCL14: FSET? OBJ,ACTORBIT \?PRG21 PRINTI "The " PRINTD OBJ PRINTR " is holding: " ?PRG21: PRINTI "The " PRINTD OBJ PRINTR " contains:" .FUNCT SEE-INSIDE?,OBJ FSET? OBJ,INVISIBLE /FALSE FSET? OBJ,TRANSBIT /TRUE FSET? OBJ,OPENBIT /TRUE RFALSE .FUNCT JIGS-UP,DESC,F,N PRINT DESC CRLF EQUAL? ADVENTURER,WINNER /?CND3 PRINTI " **** The " PRINTD WINNER PRINTI " has died ****" CRLF CRLF REMOVE WINNER SET 'WINNER,ADVENTURER LOC WINNER >HERE RETURN 2 ?CND3: SUB SCORE,10 >SCORE PRINTI " **** You have died ****" CRLF CRLF SET 'DEAD,TRUE-VALUE SET 'SPELL?,FALSE-VALUE PUTP ADVENTURER,P?ACTION,0 INC 'DEATHS MOVE WINNER,HERE FCLEAR DEAD-PALANTIR-1,TOUCHBIT FCLEAR DEAD-PALANTIR-2,TOUCHBIT FCLEAR DEAD-PALANTIR-3,TOUCHBIT IN? LAMP,WINNER \?CND11 MOVE LAMP,INSIDE-THE-BARROW ?CND11: FIRST? WINNER >N /?PRG14 ?PRG14: SET 'F,N ZERO? F /?REP15 NEXT? F >N /?BOGUS18 ?BOGUS18: GETP F,P?VALUE ZERO? STACK /?CCL21 MOVE F,CAROUSEL-ROOM JUMP ?PRG14 ?CCL21: MOVE F,GAZEBO JUMP ?PRG14 ?REP15: CALL GOTO,DEAD-PALANTIR-1 SET 'P-CONT,FALSE-VALUE CALL DRAGON-LEAVES CALL INT,I-MATCH PUT STACK,0,0 RETURN 2 .FUNCT NO-GO-TELL,AV,WLOC PRINTI "You can't go there " ZERO? AV /?PRG8 PRINTI "in a " PRINTD WLOC JUMP ?PRG10 ?PRG8: PRINTI "without a vehicle" ?PRG10: PRINT PERIOD-CR RTRUE .FUNCT GOTO,RM,V?=1,LB,WLOC,AV=0,OLIT,OHERE FSET? RM,RLANDBIT /?PRD1 PUSH 0 JUMP ?PRD2 ?PRD1: PUSH 1 ?PRD2: SET 'LB,STACK LOC WINNER >WLOC SET 'OLIT,LIT SET 'OHERE,HERE FSET? WLOC,VEHBIT \?CND3 GETP WLOC,P?VTYPE >AV ?CND3: ZERO? LB \?CCL7 ZERO? AV \?CCL7 CALL NO-GO-TELL,AV,WLOC RFALSE ?CCL7: ZERO? LB \?CCL11 FSET? RM,AV /?CCL11 CALL NO-GO-TELL,AV,WLOC RFALSE ?CCL11: FSET? HERE,RLANDBIT \?CCL15 ZERO? LB /?CCL15 ZERO? AV /?CCL15 EQUAL? AV,RLANDBIT /?CCL15 FSET? RM,AV /?CCL15 CALL NO-GO-TELL,AV,WLOC RFALSE ?CCL15: ZERO? LB /?CND21 FSET? HERE,RLANDBIT /?CND21 ZERO? DEAD \?CND21 FSET? WLOC,VEHBIT \?CND21 EQUAL? WLOC,BALLOON \?CCL29 PRINTI "The balloon lands." CRLF JUMP ?CND21 ?CCL29: FSET? WLOC,VEHBIT \?CND21 PRINTI "The " PRINTD WLOC PRINT STOPS ?CND21: ZERO? AV /?CCL37 MOVE WLOC,RM JUMP ?CND35 ?CCL37: MOVE WINNER,RM ?CND35: SET 'HERE,RM CALL LIT?,HERE >LIT ZERO? OLIT \?CND38 ZERO? LIT \?CND38 RANDOM 100 GRTR? 80,STACK \?CND38 PRINTI "Oh, no! A lurking grue slithered into the " LOC WINNER FSET? STACK,VEHBIT \?PRG50 LOC WINNER PRINTD STACK JUMP ?CND45 ?PRG50: PRINTI "room" ?CND45: CALL JIGS-UP,STR?20 RTRUE ?CND38: ZERO? LIT \?CND52 EQUAL? WINNER,ADVENTURER \?CND52 PRINTI "You have moved into a dark place." CRLF SET 'P-CONT,FALSE-VALUE ?CND52: GETP HERE,P?ACTION CALL STACK,M-ENTER CALL SCORE-OBJ,RM EQUAL? HERE,RM \TRUE EQUAL? ADVENTURER,WINNER /?CCL62 IN? ADVENTURER,OHERE \?CCL62 PRINTI "The " PRINTD WINNER PRINTR " leaves the room." ?CCL62: ZERO? V? /TRUE EQUAL? WINNER,ADVENTURER \TRUE CALL DESCRIBE-ROOM ZERO? LIT /TRUE GRTR? VERBOSITY,0 \TRUE CALL DESCRIBE-OBJECTS RTRUE .FUNCT ITAKE,VB=1,CNT,OBJ,?TMP1 FSET? PRSO,TAKEBIT /?CCL3 ZERO? VB /FALSE CALL PICK-ONE,YUKS PRINT STACK CRLF RFALSE ?CCL3: EQUAL? PRSO,SPELL-VICTIM \?CCL9 EQUAL? SPELL-USED,W?FLOAT,W?FREEZE \?CCL9 EQUAL? SPELL-USED,W?FLOAT \?PRG17 PRINTI "You can't reach that. It's floating above your head." CRLF RFALSE ?PRG17: PRINTI "It seems rooted to the spot." CRLF RFALSE ?CCL9: LOC PRSO FSET? STACK,CONTBIT \?CCL20 LOC PRSO FSET? STACK,OPENBIT \FALSE ?CCL20: LOC PRSO IN? STACK,WINNER /?CCL24 CALL WEIGHT,PRSO >?TMP1 CALL WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,LOAD-ALLOWED \?CCL24 ZERO? VB /?PRG38 PRINTI "Your load is too heavy" LESS? LOAD-ALLOWED,100 \?PRG36 PRINTI ", especially in light of your condition." JUMP ?CND31 ?PRG36: PRINTC 46 ?CND31: CRLF ?PRG38: RETURN 2 ?CCL24: EQUAL? PRSA,V?TAKE \?CCL41 CALL CCOUNT,WINNER >CNT GRTR? CNT,FUMBLE-NUMBER \?CCL41 MUL CNT,FUMBLE-PROB >?TMP1 RANDOM 100 GRTR? ?TMP1,STACK \?CCL41 PRINTI "You're holding too many things already!" CRLF RFALSE ?CCL41: MOVE PRSO,WINNER FCLEAR PRSO,NDESCBIT FSET PRSO,TOUCHBIT CALL SCORE-OBJ,PRSO RTRUE .FUNCT IDROP IN? PRSO,WINNER /?CCL3 LOC PRSO IN? STACK,WINNER /?CCL3 PRINTI "You're not carrying the " PRINTD PRSO PRINT PERIOD-CR RFALSE ?CCL3: IN? PRSO,WINNER /?CCL9 LOC PRSO FSET? STACK,OPENBIT /?CCL9 PRINTI "The " PRINTD PRSO PRINTI " is closed." CRLF RFALSE ?CCL9: LOC WINNER MOVE PRSO,STACK RTRUE .FUNCT CCOUNT,OBJ,CNT=0,X FIRST? OBJ >X /?PRG3 RETURN CNT ?PRG3: INC 'CNT NEXT? X >X /?PRG3 RETURN CNT .FUNCT WEIGHT,OBJ,CONT,WT=0 FIRST? OBJ >CONT \?CND1 ?PRG3: CALL WEIGHT,CONT ADD WT,STACK >WT NEXT? CONT >CONT /?PRG3 ?CND1: GETP OBJ,P?SIZE ADD WT,STACK RSTACK .ENDI