.SEGMENT "0" .FUNCT YOULL-HAVE-TO:ANY:1:1,STR PRINT YOU-HAVE-TO PRINT STR PRINTR " first!" .FUNCT TO-A-PRSO?:ANY:0:0 ICALL1 HOW-DO-YOU CALL1 A-PRSO? RSTACK .FUNCT CANT-GO:ANY:0:0 PRINT YOU-CANT PRINTR "go that way." .FUNCT NOT-HOLDING:ANY:1:1,OBJ ICALL2 THIS-IS-IT,OBJ PRINT STR?61 PRINTI "holding " ICALL2 THE-PRINT,OBJ PRINT PERIOD RTRUE .FUNCT ITS-EMPTY:ANY:0:0 ICALL1 CTHE-PRINT-PRSO PRINTI " is empty" PRINT PERIOD RTRUE .FUNCT ITS-ALREADY-X:ANY:1:1,X ICALL1 CTHE-PRINT-PRSO PRINTI " is already " PRINT X PRINT PERIOD RTRUE .FUNCT ALREADY-OPEN:ANY:0:0 CALL2 ITS-ALREADY-X,STR?62 RSTACK .FUNCT ALREADY-CLOSED:ANY:0:0 CALL2 ITS-ALREADY-X,STR?63 RSTACK .FUNCT WITH-PRSI?:ANY:0:0 PRINTI "With " CALL1 A-PRSI? RSTACK .FUNCT TELL-OPEN-CLOSED:ANY:0:1,OBJ ZERO? OBJ /?CCL3 ICALL2 CTHE-PRINT,OBJ JUMP ?CND1 ?CCL3: SET 'OBJ,PRSO ICALL1 THE-PRINT-PRSO ?CND1: ICALL2 PRINT-IS/ARE,OBJ PRINTC 32 CALL2 OPEN-CLOSED,OBJ RSTACK .FUNCT OPEN-CLOSED:ANY:1:1,OBJ FSET? OBJ,OPENBIT \?CCL3 PRINTI "open" JUMP ?CND1 ?CCL3: PRINTI "closed" ?CND1: PRINT PERIOD RTRUE .FUNCT THE-PRSO:ANY:0:0 ICALL1 THE-PRINT-PRSO PRINT PERIOD RTRUE .FUNCT A-PRSO:ANY:0:0 ICALL1 PRINTA-PRSO PRINT PERIOD RTRUE .FUNCT A-PRSO?:ANY:0:0 ICALL1 PRINTA-PRSO PRINTR "?" .FUNCT THE-PRSI:ANY:0:0 ICALL1 THE-PRINT-PRSI PRINT PERIOD RTRUE .FUNCT A-PRSI?:ANY:0:0 ICALL1 PRINTA-PRSI PRINTR "?" .FUNCT YOU-CANT-X-THAT:ANY:0:1,STR PRINT YOU-CANT ZERO? STR /?CCL3 PUSH STR JUMP ?CND1 ?CCL3: PUSH STR?64 ?CND1: PRINT STACK PRINTC 32 ZERO? STR /?CTR5 ZERO? PRSO /?CTR5 FSET? PRSO,PERSON /?CCL6 ?CTR5: PRINTR "that!" ?CCL6: ICALL2 PRINT-HIM/HER,PRSO PRINTR "!" .FUNCT YOU-CANT-X-PRSO:ANY:1:1,STR PRINT YOU-CANT PRINT STR PRINTC 32 ZERO? PRSO /?CCL3 ICALL1 THE-PRINT-PRSO JUMP ?CND1 ?CCL3: PRINTI "that" ?CND1: PRINT PERIOD RTRUE .FUNCT UNINTERESTED:ANY:1:1,OBJ FSET? OBJ,DEAD \?CCL3 PRINT YOU-CANT PRINT STR?65 CRLF RTRUE ?CCL3: EQUAL? OBJ,ME \?CCL5 CALL1 TELL-YUKS RSTACK ?CCL5: ICALL2 CTHE-PRINT,OBJ ICALL2 PRINT-IS/ARE,OBJ PRINTR " uninterested." .FUNCT PLURAL?:ANY:1:1,OBJ FSET? OBJ,PLURAL /TRUE RFALSE .FUNCT CANT-REACH-THAT:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?66 RSTACK .FUNCT V-VERBOSE:ANY:0:0 SET 'VERBOSITY,2 PRINTI "Verbose" PRINT DESCRIPTIONS PRINT PERIOD CRLF CALL1 V-LOOK RSTACK .FUNCT V-BRIEF:ANY:0:0 SET 'VERBOSITY,1 PRINTI "Brief" PRINT DESCRIPTIONS PRINT PERIOD RTRUE .FUNCT V-SUPER-BRIEF:ANY:0:0 SET 'VERBOSITY,FALSE-VALUE PRINTI "Super-brief" PRINT DESCRIPTIONS PRINT PERIOD RTRUE .FUNCT V-DIAGNOSE:ANY:0:0 FSET? MARIKO,RMUNGBIT \?CCL3 PRINTR "You are still in shock, your ears ringing, eyes hardly seeing, your face a mass of bruises and powder burns." ?CCL3: PRINTI "You are " GETP BLACKTHORNE,P?HEALTH GET HEALTH-TELL,STACK PRINT STACK PRINT PERIOD RTRUE .FUNCT V-INVENTORY:ANY:0:0 SUB 0,WEARBIT >D-BIT CALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,3 ZERO? STACK \?CND1 PRINTI "You are empty-handed." ?CND1: SET 'D-BIT,WEARBIT ICALL DESCRIBE-CONTENTS,WINNER,FALSE-VALUE,3 SET 'D-BIT,FALSE-VALUE CRLF RTRUE .FUNCT V-QUIT:ANY:0:2,ASK?,SCORE?,SCOR ASSIGNED? 'ASK? /?CND1 SET 'ASK?,TRUE-VALUE ?CND1: ASSIGNED? 'SCORE? /?CND3 SET 'SCORE?,TRUE-VALUE ?CND3: ZERO? SCORE? /?CND5 ICALL1 V-SCORE ?CND5: ZERO? ASK? /?PRD11 PRINT STR?74 PRINTI "leave the game" CALL1 YES? ZERO? STACK \?CTR8 ?PRD11: ZERO? ASK? \?CCL9 ?CTR8: QUIT RTRUE ?CCL9: PRINT OKAY RTRUE .FUNCT V-CHOOSE:ANY:0:0 CALL2 ACCESSIBLE?,STRAW ZERO? STACK /?CCL3 ICALL PERFORM,V?PICK,STRAW RTRUE ?CCL3: PRINTR "There's nothing to draw here." .FUNCT V-RESTART:ANY:0:0 ICALL2 V-SCORE,TRUE-VALUE PRINT STR?74 PRINTI "restart" CALL1 YES? ZERO? STACK /FALSE PRINTI "Restarting." CRLF RESTART PRINT FAILED RTRUE .FUNCT FINISH:ANY:0:1,EOG? ICALL1 UPDATE-STATUS-LINE ICALL1 V-SCORE ZERO? EOG? \?CND1 ICALL1 SETUP-TEXT-AND-STATUS ?CND1: CRLF SET 'GAME-OVER?,TRUE-VALUE ZERO? EOG? \?CTR4 GET 0,8 BTST STACK,16 /?CCL5 ?CTR4: PUSH 4 JUMP ?CND3 ?CCL5: PUSH 5 ?CND3: PUT FINISH-MENU,0,STACK CALL GET-FROM-MENU,STR?78,FINISH-MENU,FINISH-MENU-F RSTACK .FUNCT FINISH-MENU-F:ANY:2:2,WHICH,MENU EQUAL? WHICH,1 \?CCL3 RESTORE ZERO? STACK /?CCL6 PRINT OKAY JUMP ?CND1 ?CCL6: ICALL1 RESET-MARGIN CLEAR S-TEXT PRINT FAILED JUMP ?CND1 ?CCL3: EQUAL? WHICH,2 \?CCL8 RESTART ICALL1 RESET-MARGIN CLEAR S-TEXT PRINT FAILED JUMP ?CND1 ?CCL8: EQUAL? WHICH,3 \?CCL10 ZERO? GAME-OVER? /?CCL13 QUIT JUMP ?CND11 ?CCL13: ICALL1 V-QUIT ?CND11: ICALL1 RESET-MARGIN CLEAR S-TEXT JUMP ?CND1 ?CCL10: EQUAL? WHICH,4 \?CCL15 ICALL1 V-HINT JUMP ?CND1 ?CCL15: EQUAL? WHICH,5 \?CND1 ICALL1 V-UNDO ICALL1 RESET-MARGIN CLEAR S-TEXT ?CND1: ICALL1 TYPE-ANY-KEY RFALSE .FUNCT V-RESTORE:ANY:0:0 RESTORE ZERO? STACK \TRUE PRINT FAILED RTRUE .FUNCT V-SAVE:ANY:0:0,X,LCNT,CRC PUTB G-INBUF,2,0 EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1 WINGET S-TEXT,WCRCNT >CRC ZERO? CRC /?CND1 WINGET S-TEXT,WLCNT >LCNT ?CND1: SAVE >X SET 'RESTORED?,FALSE-VALUE CALL2 QUEUED?,I-SETUP-ANSWER ZERO? STACK /?CND5 ICALL1 I-SETUP-ANSWER ?CND5: EQUAL? X,0,1 \?CCL9 ZERO? CRC /?CND10 WINGET S-TEXT,WLCNT SUB STACK,LCNT >LCNT LESS? LCNT,0 /?CTR13 GRTR? LCNT,CRC \?CCL14 ?CTR13: WINGET S-TEXT,WCRFUNC EQUAL? STACK,RESET-MARGIN \?CCL19 ICALL1 RESET-MARGIN JUMP ?CND10 ?CCL19: ICALL1 RESET-MARGIN-1 JUMP ?CND10 ?CCL14: SUB CRC,LCNT WINPUT S-TEXT,WCRCNT,STACK ?CND10: ZERO? X \?CCL22 PRINT FAILED RTRUE ?CCL22: EQUAL? X,1 \FALSE PRINT OKAY RTRUE ?CCL9: EQUAL? X,2,3 \FALSE WINGET S-FULL,WHIGH ZERO? STACK \?CND27 SET 'X,3 ?CND27: SET 'RESTORED?,X EQUAL? X,2 /?CCL31 PUSH 0 JUMP ?CND29 ?CCL31: PUSH TRUE-VALUE ?CND29: ICALL2 REPAINT-DISPLAY,STACK ICALL1 RESET-MARGIN CRLF CALL1 V-FIRST-LOOK RSTACK .FUNCT V-UNDO:ANY:0:0,VAL GET 0,8 BTST STACK,16 /?CCL3 PRINTR "[UNDO not available.]" ?CCL3: IRESTORE >VAL ZERO? VAL /?CCL5 CALL1 INIT-STATUS-LINE RSTACK ?CCL5: RETURN FAILED .FUNCT V-SCORE:ANY:0:1,ASK?,S ASSIGNED? 'ASK? /?CND1 SET 'ASK?,TRUE-VALUE ?CND1: GET SCENE-LOCS,SCENE GETPT STACK,P?SCORE >S PRINTI "Your score is " GETB S,0 MUL SCORE-FACTOR,STACK PRINTN STACK PRINTI " of a possible " GETB S,1 MUL SCORE-FACTOR,STACK PRINTN STACK PRINTI " in this scene, and " MUL SCORE-FACTOR,SCORE PRINTN STACK PRINTI " out of " PRINTN 420 PRINTI " overall, in " PRINTN MOVES PRINTI " move" EQUAL? MOVES,1 /?CND3 PRINTC 115 ?CND3: MUL SCORE,SCORE-FACTOR DIV STACK,42 >S PRINTI ". You have now achieved a rank of " ADD 1,S GET RANKINGS,STACK PRINT STACK PRINT PERIOD RTRUE .FUNCT V-SCRIPT:ANY:0:0 DIROUT D-PRINTER-ON GET 0,8 BTST STACK,1 \FALSE DIROUT D-SCREEN-OFF CRLF PRINTI "Start of a transcript of " PRINT SHOGUN-NAME PRINT PERIOD ICALL1 V-VERSION DIROUT D-SCREEN-ON RTRUE .FUNCT V-UNSCRIPT:ANY:0:0 GET 0,8 BTST STACK,1 \?CND1 DIROUT D-SCREEN-OFF PRINTI "End of transcript" PRINT PERIOD DIROUT D-SCREEN-ON ?CND1: DIROUT D-PRINTER-OFF RTRUE .FUNCT V-VERSION:ANY:0:1,C?,IDX SET 'IDX,18 ZERO? C? /?CND1 MUL 3,FONT-Y ADD 1,STACK CURSET STACK,1 ?CND1: HLIGHT H-BOLD ZERO? C? /?CND3 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND3: PRINT SHOGUN-NAME ZERO? C? /?CND5 ICALL1 PRINT-CENTER-TABLE ?CND5: HLIGHT H-NORMAL CRLF ZERO? C? /?CND7 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND7: PRINTI "A Story of Japan" ZERO? C? /?CND9 ICALL1 PRINT-CENTER-TABLE ?CND9: CRLF ZERO? C? /?CND11 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND11: PRINTI "Copyright (c) 1988 by Infocom" ZERO? C? /?CND13 ICALL1 PRINT-CENTER-TABLE ?CND13: CRLF ZERO? C? /?CND15 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND15: PRINTI "All rights reserved." ZERO? C? /?CND17 ICALL1 PRINT-CENTER-TABLE ?CND17: CRLF ZERO? C? /?CND19 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND19: PRINT SHOGUN-NAME PRINTI " is a trademark of James Clavell" ZERO? C? /?CND21 ICALL1 PRINT-CENTER-TABLE ?CND21: CRLF ZERO? C? /?CND23 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND23: PRINTI "Original Literary Work Copyright 1975 by James Clavell" ZERO? C? /?CND25 ICALL1 PRINT-CENTER-TABLE ?CND25: CRLF ZERO? C? /?CND27 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND27: PRINTI "Licensed by Noble House Trading Limited, London." ZERO? C? /?CND29 ICALL1 PRINT-CENTER-TABLE ?CND29: CRLF ZERO? C? /?CND31 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND31: PRINTI "Release " GET 0,1 PRINTN STACK PICINF 0,YX-TBL \?CND33 GET YX-TBL,1 ZERO? STACK /?CND33 PRINTI " / Pix " GET YX-TBL,1 PRINTN STACK ?CND33: PRINTI " / Serial number " ?PRG37: GETB 0,IDX PRINTC STACK IGRTR? 'IDX,23 \?PRG37 ZERO? C? /?CND41 ICALL1 PRINT-CENTER-TABLE ?CND41: CRLF ZERO? C? /?CND43 DIROUT D-TABLE-ON,DIROUT-TABLE ?CND43: GET MACHINES,MACHINE PRINT STACK PRINTI " Interpreter version " GETB 0,0 PRINTN STACK PRINTC 46 GETB 0,31 PRINTN STACK ZERO? C? /?CND45 ICALL1 PRINT-CENTER-TABLE ?CND45: CRLF RTRUE .FUNCT PCENTER:ANY:1:3,STR,STR1,STR2 DIROUT D-TABLE-ON,DIROUT-TABLE PRINT STR ZERO? STR1 /?CND1 PRINT STR1 ?CND1: ZERO? STR2 /?CND3 PRINT STR2 ?CND3: ICALL1 PRINT-CENTER-TABLE CRLF RTRUE .FUNCT V-CREDITS:ANY:0:0 HLIGHT H-BOLD ICALL2 PCENTER,SHOGUN-NAME HLIGHT H-NORMAL ICALL2 PCENTER,STR?99 CRLF ICALL2 PCENTER,STR?100 CRLF ICALL2 PCENTER,STR?101 EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL3 ICALL2 PCENTER,STR?102 JUMP ?CND1 ?CCL3: EQUAL? MACHINE,IBM \?CND1 ICALL2 PCENTER,STR?103 ?CND1: CRLF ICALL2 PCENTER,STR?104 ICALL2 PCENTER,STR?105 CRLF ICALL2 PCENTER,STR?106 CRLF ICALL2 PCENTER,STR?107 ICALL2 PCENTER,STR?108 ICALL2 PCENTER,STR?109 CRLF RTRUE .FUNCT V-$VERIFY:ANY:0:0 EQUAL? PRSO,INTNUM \?CCL3 EQUAL? P-NUMBER,1564 \?CCL3 PRINTN SERIAL CRLF RTRUE ?CCL3: ZERO? PRSO /?CCL7 CALL1 DONT-UNDERSTAND RSTACK ?CCL7: PRINTI "Verifying..." CRLF VERIFY \?CCL10 PRINTR "The disk is correct." ?CCL10: CRLF PRINTR "** Disk Failure **" .FUNCT V-WAKE:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 ICALL2 NEW-PRSO,ME RTRUE ?CCL3: PRINT I-DONT-THINK-THAT ICALL1 THE-PRINT-PRSO ICALL2 PRINT-IS/ARE,PRSO PRINTR " sleeping." .FUNCT V-ANSWER:ANY:0:0 ZERO? OMI-QUESTION \?CTR2 ZERO? YABU-QUESTION \?CTR2 ZERO? QCONTEXT /?CCL3 CALL2 ACCESSIBLE?,QCONTEXT ZERO? STACK /?CCL3 ?CTR2: ZERO? OMI-QUESTION /?CCL11 ICALL2 CTHE-PRINT,OMI JUMP ?CND9 ?CCL11: ZERO? YABU-QUESTION /?CCL13 ICALL2 CTHE-PRINT,YABU JUMP ?CND9 ?CCL13: ICALL2 CTHE-PRINT,QCONTEXT ?CND9: PRINTR " seems to be expecting a more responsive answer." ?CCL3: PRINTI "Nobody is awaiting your answer." CRLF CALL1 END-QUOTE RSTACK .FUNCT PRE-ASK-ABOUT:ANY:0:0,P ZERO? QCONTEXT /?CCL3 IN? QCONTEXT,HERE \?CCL3 EQUAL? PRSO,QCONTEXT /?CCL3 ZERO? PRSI \?CCL3 ICALL PERFORM,PRSA,QCONTEXT,PRSO RTRUE ?CCL3: ZERO? PRSI \FALSE CALL FIND-IN,HERE,PERSON >P ZERO? P /FALSE EQUAL? P,WINNER /FALSE ICALL PERFORM-PRSA,P,PRSO RTRUE .FUNCT V-ASK-ABOUT:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? PRSO,ME \?CCL5 ICALL2 NEW-VERB,V?TELL RTRUE ?CCL5: FSET? PRSO,PERSON \?CCL7 ICALL NEW-WINNER-PRSO,V?TELL-ME-ABOUT,PRSI RTRUE ?CCL7: ICALL2 NEW-VERB,V?TELL RTRUE .FUNCT FIND-IN:ANY:2:3,WHERE,WHAT,WHAT-NOT,W,?PR-W FIRST? WHERE >?PR-W \FALSE ?PRG6: FSET? ?PR-W,WHAT \?CND8 CALL2 VISIBLE?,?PR-W ZERO? STACK /?CND8 EQUAL? WHAT,PERSON \?CCL13 EQUAL? ?PR-W,WINNER /?CND8 ?CCL13: ZERO? WHAT-NOT \?PRD18 RETURN ?PR-W ?PRD18: FSET? ?PR-W,WHAT-NOT /?CND8 RETURN ?PR-W ?CND8: NEXT? ?PR-W >?PR-W /?PRG6 RFALSE .FUNCT PRE-ASK-FOR:ANY:0:0 CALL1 PRE-ASK-ABOUT RSTACK .FUNCT V-ASK-FOR:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? PRSO,ME,PLAYER \?CCL5 ICALL PERFORM,V?TAKE,PRSI RTRUE ?CCL5: FSET? PRSO,PERSON \?CCL7 ICALL NEW-WINNER-PRSO,V?GIVE,PRSI,ME RTRUE ?CCL7: PRINTI "It's unlikely that " ICALL1 THE-PRINT-PRSO PRINTR " will oblige." .FUNCT PRE-ATTACK:ANY:0:0,W ZERO? PRSI \FALSE CALL FIND-IN,WINNER,WEAPONBIT,WEARBIT >W ZERO? W /FALSE ICALL PERFORM,PRSA,PRSO,W RTRUE .FUNCT V-ATTACK:ANY:0:0 CALL2 IKILL,STR?110 RSTACK .FUNCT V-HIT:ANY:0:0 CALL2 IKILL,STR?111 RSTACK .FUNCT V-BITE:ANY:0:0 CALL2 HACK-HACK,STR?112 RSTACK .FUNCT PRE-BOARD:ANY:0:0,AV,DIR LOC WINNER >AV EQUAL? PRSO,ROOMS /FALSE FSET? PRSO,VEHBIT \?CCL5 CALL2 HELD?,PRSO ZERO? STACK /?CCL8 PRINT YOU-HAVE-TO PRINTI "put " ICALL1 THE-PRINT-PRSO PRINTI " down first." CRLF RETURN M-FATAL ?CCL8: EQUAL? AV,PRSO \?CCL10 ICALL2 YOU-ARE-IN,AV RETURN M-FATAL ?CCL10: FSET? AV,VEHBIT \FALSE CALL HELD?,PRSO,AV ZERO? STACK /FALSE PRINT YOU-HAVE-TO PRINTI "leave " ICALL2 THE-PRINT,AV PRINTI " first" PRINT PERIOD RETURN M-FATAL ?CCL5: IN? PRSO,ROOMS \?CCL16 CALL2 NEXT-ROOM?,PRSO >DIR ZERO? DIR /?CCL16 ICALL2 DO-WALK,DIR RTRUE ?CCL16: PRINT YOU-CANT PRINTI "get " FSET? PRSO,PERSON \?CCL21 PRINTI "onto " JUMP ?CND19 ?CCL21: PRINTI "into " ?CND19: ICALL1 THE-PRINT-PRSO PRINTC 33 CRLF RETURN M-FATAL .FUNCT YOU-ARE-IN:ANY:1:1,AV PRINT YOU-ARE FSET? AV,SURFACEBIT \?CCL3 PUSH STR?113 JUMP ?CND1 ?CCL3: PUSH STR?114 ?CND1: PRINT STACK ICALL2 THE-PRINT,AV PRINTR "!" .FUNCT V-BOARD:ANY:0:0,AV PRINT YOU-ARE-NOW FSET? PRSO,SURFACEBIT \?CCL3 PRINTI "on " JUMP ?CND1 ?CCL3: PRINTI "in " ?CND1: ICALL1 THE-PRSO MOVE WINNER,PRSO GETP PRSO,P?ACTION ICALL STACK,M-ENTER RTRUE .FUNCT V-BURN:ANY:0:0 ZERO? PRSI \?CCL3 PRINTR "Your gaze is insufficient." ?CCL3: CALL1 WITH-PRSI? RSTACK .FUNCT V-CHASTISE:ANY:0:0 PRINTR "Use prepositions instead: LOOK AT the object, LOOK INSIDE it, LOOK UNDER it, etc." .FUNCT V-CLIMB-DOWN:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 CALL2 DO-WALK,P?DOWN RSTACK ?CCL3: PRINT WASTE-OF-TIME RTRUE .FUNCT V-CLIMB-FOO:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 CALL2 DO-WALK,P?UP RSTACK ?CCL3: PRINT WASTE-OF-TIME RTRUE .FUNCT V-CLIMB-ON:ANY:0:0 FSET? PRSO,VEHBIT \?CCL3 FSET? PRSO,SURFACEBIT \?CCL3 ICALL2 NEW-VERB,V?BOARD RTRUE ?CCL3: PRINT YOU-CANT PRINTI "climb onto " CALL1 A-PRSO RSTACK .FUNCT V-CLIMB-OVER:ANY:0:0 CALL1 YOU-CANT-X-THAT RSTACK .FUNCT V-CLIMB-UP:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 CALL2 DO-WALK,P?UP RSTACK ?CCL3: PRINT WASTE-OF-TIME RTRUE .FUNCT V-CLOSE:ANY:0:0 FSET? PRSO,OPENBIT /?CCL3 FSET? PRSO,OPENABLE \?CCL3 CALL1 ALREADY-CLOSED RSTACK ?CCL3: FSET? PRSO,SURFACEBIT /?CTR6 FSET? PRSO,CONTBIT /?CCL7 FSET? PRSO,DOORBIT /?CCL7 ?CTR6: PRINTI "There's no way to close " CALL1 THE-PRSO RSTACK ?CCL7: FSET? PRSO,PERSON \?CCL13 PRINTR "Huh?" ?CCL13: GETP PRSO,P?CAPACITY ZERO? STACK /?CCL15 FSET? PRSO,OPENBIT \?CCL18 FCLEAR PRSO,OPENBIT PRINTI "Closed" CALL1 IN-DARK? RSTACK ?CCL18: CALL1 ALREADY-CLOSED RSTACK ?CCL15: FSET? PRSO,DOORBIT \?CCL20 CALL1 CLOSE-A-DOOR RSTACK ?CCL20: CALL2 YOU-CANT-X-THAT,STR?115 RSTACK .FUNCT CLOSE-A-DOOR:ANY:0:0 FSET? PRSO,OPENBIT \?CCL3 ICALL2 OKAY-THE-PRSO-IS-NOW,STR?63 FCLEAR PRSO,OPENBIT RTRUE ?CCL3: CALL1 ALREADY-CLOSED RSTACK .FUNCT IN-DARK?:ANY:0:1,DIE?,OLIT SET 'OLIT,LIT CALL2 LIT?,HERE >LIT PRINT PERIOD RTRUE .FUNCT OKAY-THE-PRSO-IS-NOW:ANY:1:1,STR ICALL1 CTHE-PRINT-PRSO PRINTI " is now " PRINT STR PRINT PERIOD RTRUE .FUNCT V-COMPARE-MANY:ANY:0:0,?TMP1 GET P-PRSO,0 EQUAL? STACK,2 \?CCL3 SET 'P-MULT,FALSE-VALUE GET P-PRSO,1 >?TMP1 GET P-PRSO,2 ICALL PERFORM,V?COMPARE,?TMP1,STACK RETURN M-FATAL ?CCL3: PRINTR "You can only compare two things." .FUNCT V-WASTE-OF-TIME:ANY:0:0 PRINT WASTE-OF-TIME RTRUE .FUNCT V-COMPARE:ANY:0:0 PRINT WASTE-OF-TIME RTRUE .FUNCT V-CROSS:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?116 RSTACK .FUNCT V-CURSE:ANY:0:0 EQUAL? PRSO,FALSE-VALUE,ROOMS,YOU \?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: FSET? PRSO,DUTCHBIT \?CCL7 PRINTD PRSO PRINTR " makes an anatomically impossible suggestion." ?CCL7: PRINTR "Fortunately, your swearing is incomprehensible. Your manners are very bad, even for a barbarian." .FUNCT V-CUT:ANY:0:0 FSET? PRSO,PERSON \?CCL3 ICALL2 NEW-VERB,V?KILL RTRUE ?CCL3: ZERO? PRSI /?CTR4 FSET? PRSI,WEAPONBIT /?CCL5 ?CTR4: ZERO? PRSI /?CTR9 CALL2 INTRINSIC?,PRSI ZERO? STACK /?CCL10 ?CTR9: PRINTI "Your body" JUMP ?CND8 ?CCL10: ICALL1 CTHE-PRINT-PRSI ?CND8: PRINTR " has an inadequate ""cutting edge.""" ?CCL5: CALL1 TO-A-PRSO? RSTACK .FUNCT V-DIG:ANY:0:0 ZERO? PRSI /?CCL3 FSET? PRSI,TOOLBIT \?CCL3 PRINTI "Digging with " ICALL1 THE-PRINT-PRSI PRINTR " would be slow, tiring, and tedious." ?CCL3: EQUAL? PRSO,GROUND \?CCL7 PRINTR "You don't have anything to dig with." ?CCL7: PRINT WASTE-OF-TIME RTRUE .FUNCT V-DISEMBARK:ANY:0:0,AV LOC WINNER >AV ZERO? PRSO /?CTR2 EQUAL? PRSO,ROOMS \?CCL3 ?CTR2: ZERO? AV /?CCL8 FSET? AV,VEHBIT \?CCL8 ICALL2 NEW-PRSO,AV RTRUE ?CCL8: PRINT STR?61 PRINTR "in anything." ?CCL3: IN? WINNER,PRSO /?CCL12 PRINTI "You aren't in " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL12: ZERO? AV /?CCL14 FSET? AV,VEHBIT \?CCL14 EQUAL? AV,PRSO /?CCL19 CALL HELD?,AV,PRSO ZERO? STACK \?CCL19 ICALL2 YOU-ARE-IN,AV RETURN M-FATAL ?CCL19: LOC PRSO MOVE WINNER,STACK ICALL1 B-STAND PRINT YOU-ARE-NOW PRINTR "on your feet." ?CCL14: IN? PRSO,ROOMS \?CCL23 ICALL2 DO-WALK,P?OUT RTRUE ?CCL23: LOC PRSO ZERO? STACK /?CCL25 ICALL2 NEW-VERB,V?TAKE RTRUE ?CCL25: PRINT STR?117 CRLF RTRUE .FUNCT V-DRINK:ANY:0:0,S CALL2 YOU-CANT-X-THAT,STR?118 RSTACK .FUNCT V-DRINK-FROM:ANY:0:0,X CALL1 TO-A-PRSO? RSTACK .FUNCT PRE-DROP:ANY:0:0 LOC WINNER EQUAL? PRSO,STACK \FALSE ICALL2 NEW-VERB,V?DISEMBARK RTRUE .FUNCT V-DROP:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 PRINT STR?61 PRINT STR?119 CRLF RTRUE ?CCL3: CALL1 IDROP ZERO? STACK /TRUE PRINTR "Dropped." .FUNCT V-EAT:ANY:0:0,H FSET? PRSO,PERSON \?CCL3 PRINTR "Cannibalism is not the solution." ?CCL3: PRINTI "Much as you may miss meat, bread, and grog, there is little likelihood that " ICALL1 PRINTA-PRSO PRINTR " will satisfy you." .FUNCT V-ENTER:ANY:0:0 GETPT HERE,P?IN ZERO? STACK /?CCL3 CALL2 DO-WALK,P?IN RSTACK ?CCL3: CALL1 V-WALK-AROUND RSTACK .FUNCT PRE-EXAMINE:ANY:0:0,P ZERO? LIT \?CCL3 PRINT TOO-DARK RTRUE ?CCL3: EQUAL? HERE,MAZE /FALSE EQUAL? HERE,SECRET-REDOUBT \?PRD8 EQUAL? PRSO,MARIKO /FALSE ?PRD8: EQUAL? HERE,CLIFF-PATH \?CCL5 EQUAL? PRSO,YABU,RODRIGUES \?CCL5 IN? PRSO,HERE \FALSE ?CCL5: GETP PRSO,P?PICTURE >P ZERO? P /FALSE ICALL2 MARGINAL-PIC,P RFALSE .FUNCT V-EXAMINE:ANY:0:0,H EQUAL? PRSO,HERE \?CCL3 ICALL2 PERFORM,V?LOOK RTRUE ?CCL3: FSET? PRSO,READBIT \?CCL5 GETP PRSO,P?TEXT ZERO? STACK /?CCL5 ICALL2 NEW-VERB,V?READ RTRUE ?CCL5: FSET? PRSO,DOORBIT \?CCL9 CALL1 V-LOOK-INSIDE RSTACK ?CCL9: FSET? PRSO,CONTBIT \?CCL11 FSET? PRSO,OPENBIT \?CCL14 CALL1 V-LOOK-INSIDE RSTACK ?CCL14: ICALL2 THIS-IS-IT,PRSO PRINT STR?120 RTRUE ?CCL11: FSET? PRSO,DEAD \?CCL16 ICALL1 CTHE-PRINT-PRSO PRINTR " is dead." ?CCL16: FSET? PRSO,ABSTRACTBIT \?CCL18 PRINTR "You can't see that from here!" ?CCL18: CALL1 PRSO-NOTHING-SPECIAL RSTACK .FUNCT PRSO-NOTHING-SPECIAL:ANY:0:0 PRINT STR?121 CALL1 THE-PRSO RSTACK .FUNCT V-EXIT:ANY:0:0 ZERO? PRSO /?CCL3 FSET? PRSO,VEHBIT \?CCL6 ICALL2 NEW-VERB,V?DISEMBARK RTRUE ?CCL6: PRINT YOU-CANT PRINTI "exit " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL3: LOC WINNER FSET? STACK,VEHBIT \?CCL8 LOC WINNER ICALL PERFORM,V?DISEMBARK,STACK RTRUE ?CCL8: GETPT HERE,P?OUT ZERO? STACK /?CCL10 CALL2 DO-WALK,P?OUT RSTACK ?CCL10: CALL1 V-WALK-AROUND RSTACK .FUNCT V-FILL:ANY:0:0 ZERO? PRSI \?CCL3 PRINT THERES-NOTHING-TO PRINTI "fill it with" PRINT PERIOD RTRUE ?CCL3: CALL1 TELL-YUKS RSTACK .FUNCT V-FIND:ANY:0:1,WHERE,L ZERO? PRSO \?CCL3 ICALL PERFORM,V?WHERE,ME RTRUE ?CCL3: EQUAL? PRSO,PLAYER \?CCL5 PRINTI "As close as the hairs of your beard" JUMP ?CND1 ?CCL5: CALL2 INTRINSIC?,PRSO ZERO? STACK /?CCL7 PRINTI "Nearby, I'm sure" JUMP ?CND1 ?CCL7: IN? PRSO,PLAYER \?CCL9 PRINTI "You have it" JUMP ?CND1 ?CCL9: IN? PRSO,HERE /?CTR10 EQUAL? PRSO,PSEUDO-OBJECT \?CCL11 ?CTR10: PRINTI "Right in front of you" JUMP ?CND1 ?CCL11: IN? PRSO,LOCAL-GLOBALS /?CTR14 IN? PRSO,GLOBAL-OBJECTS \?CCL15 ?CTR14: ICALL2 CPRINT-HE/SHE,PRSO PRINTI " could be nearby" JUMP ?CND1 ?CCL15: LOC PRSO >L ZERO? L /?CCL19 FSET? L,PERSON \?CCL22 CALL2 VISIBLE?,L ZERO? STACK /?CCL22 PRINTI "I think " ICALL2 THE-PRINT,L PRINTI " has it" JUMP ?CND1 ?CCL22: CALL2 ACCESSIBLE?,PRSO ZERO? STACK /?CCL26 PRINTI "It's in " ICALL2 THE-PRINT,L JUMP ?CND1 ?CCL26: ZERO? WHERE /?CCL28 PRINTI "Beats me" JUMP ?CND1 ?CCL28: PRINT YOU-HAVE-TO PRINTI "find " ICALL2 PRINT-HIM/HER,PRSO PRINTI " yourself" JUMP ?CND1 ?CCL19: PRINTI "You have no idea where to find " ICALL1 THE-PRINT-PRSO ?CND1: PRINT PERIOD RTRUE .FUNCT V-FOLLOW:ANY:0:0,TMP,LP,DIR ZERO? PRSO \?CCL3 PRINT YOU-HAVE-TO PRINTR " be more specific about whom you want to follow." ?CCL3: LOC PRSO >LP ZERO? LP /?CCL5 IN? LP,ROOMS \?CCL5 CALL2 NEXT-ROOM?,LP >DIR ZERO? DIR /?CCL5 CALL2 DO-WALK,DIR RSTACK ?CCL5: IN? WINNER,LP \?CCL10 PRINT YOU-CANT PRINTI "follow " ICALL1 THE-PRINT-PRSO PRINTI ", because " ICALL2 PRINT-HE/SHE,PRSO ICALL2 PRINT-IS/ARE,PRSO PRINTR " right here!" ?CCL10: IN? WINNER,HERE \?CCL13 IN? LP,HERE \?CCL13 FSET? LP,VEHBIT \?CCL13 ICALL PERFORM,V?BOARD,LP RTRUE ?CCL13: PRINT WASTE-OF-TIME RTRUE .FUNCT PRE-GIVE:ANY:0:0 EQUAL? WINNER,PLAYER \FALSE CALL2 HELD?,PRSO ZERO? STACK \FALSE FSET? PRSO,PERSON /FALSE CALL2 YOULL-HAVE-TO,STR?122 RSTACK .FUNCT V-GIVE:ANY:0:0 FSET? PRSI,PERSON \?CTR2 FSET? PRSO,PERSON \?CCL3 ?CTR2: PRINT YOU-CANT PRINTI "give " ICALL1 PRINTA-PRSO PRINTI " to " ICALL1 PRINTA-PRSI PRINTR "!" ?CCL3: CALL2 UNINTERESTED,PRSI RSTACK .FUNCT V-GOODBYE:ANY:0:0,OWINNER ZERO? PRSO /?CCL3 FSET? PRSO,DEAD \?CCL6 PRINT YOU-CANT PRINT STR?65 CRLF RTRUE ?CCL6: FSET? PRSO,PERSON \?CCL8 ICALL2 NEW-WINNER-PRSO,PRSA RTRUE ?CCL8: PRINT STR?123 PRINTI """Goodbye"" to " ICALL1 PRINTA-PRSO PRINTR " are considered barbarians." ?CCL3: PRINTR "Leaving so soon?" .FUNCT V-HELLO:ANY:0:0,OWINNER ZERO? PRSO /?CCL3 FSET? PRSO,DEAD \?CCL6 PRINT YOU-CANT PRINT STR?65 CRLF RTRUE ?CCL6: FSET? PRSO,PERSON \?CCL8 ICALL2 NEW-WINNER-PRSO,PRSA RTRUE ?CCL8: PRINT STR?123 PRINTI """Hello"" to " ICALL1 PRINTA-PRSO PRINTR " are considered crazed." ?CCL3: CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "In good spirits, aren't you?" .FUNCT V-HELP:ANY:0:0 ZERO? PRSO /?CCL3 FSET? PRSO,PERSON \?CCL6 ICALL1 CTHE-PRINT-PRSO PRINT STR?124 PRINTR "need help." ?CCL6: PRINTI "There doesn't seem to be any way to help " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL3: EQUAL? P-PRSA-WORD,W?HINT /?CCL8 PRINT YOU-HAVE-TO PRINT STR?125 PRINTR "whom you want to help." ?CCL8: CALL1 V-HINT RSTACK .FUNCT V-HIDE:ANY:0:0 ZERO? PRSO \?CCL3 PRINTI "There's no place to hide here." CRLF RETURN M-FATAL ?CCL3: FSET? PRSO,PERSON \?CCL5 PRINTI "There doesn't seem any way to hide " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL5: ZERO? PRSI /?CCL7 FSET? PRSI,PERSON \?CCL7 CALL2 UNINTERESTED,PRSI RSTACK ?CCL7: ZERO? PRSI \FALSE PRINT WASTE-OF-TIME RTRUE .FUNCT V-HIDE-BEHIND:ANY:0:1,STR PRINTI "There doesn't seem to be enough room " ZERO? STR /?CCL3 PRINT STR JUMP ?CND1 ?CCL3: PRINTI "behind" ?CND1: PRINTC 32 ICALL1 THE-PRINT-PRSO PRINTR "." .FUNCT V-HIDE-UNDER:ANY:0:0 CALL2 V-HIDE-BEHIND,STR?126 RSTACK .FUNCT V-HIDE-FROM:ANY:0:0 PRINT YOU-HAVE-TO PRINTR "decide where." .FUNCT V-KICK:ANY:0:0 FSET? PRSO,PERSON \?CTR2 FSET? PRSO,DEAD \?CCL3 ?CTR2: PRINTI "Kicking " ICALL1 PRINTA-PRSO PRINTR " seems a waste of time." ?CCL3: FSET? PRSO,FEMALE \?CCL7 PRINT STR?127 CRLF RTRUE ?CCL7: PRINTR "A potentially dangerous course of action!" .FUNCT V-KILL:ANY:0:0 CALL1 PAST-TENSE? ZERO? STACK /?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: CALL2 IKILL,STR?128 RSTACK .FUNCT IKILL:ANY:1:1,STR EQUAL? PRSO,ROOMS \?CCL3 ZERO? OPPONENT /?CCL3 ICALL PERFORM,PRSA,OPPONENT RTRUE ?CCL3: EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL7 PRINT THERES-NOTHING-TO PRINT STR PRINTR " here." ?CCL7: FSET? PRSO,DOORBIT \?CCL9 PRINTR "Pounding on a door is of little use." ?CCL9: FSET? PRSO,PERSON \?CTR10 FSET? PRSO,DEAD \?CCL11 ?CTR10: PRINTI "Attacking " ICALL1 PRINTA-PRSO PRINTR " seems a waste of time." ?CCL11: FSET? PRSO,FEMALE \?CCL15 PRINT STR?127 CRLF RTRUE ?CCL15: EQUAL? PRSI,FALSE-VALUE,HANDS /?CTR16 FSET? PRSI,WEAPONBIT /?CCL17 ?CTR16: CALL2 HELD?,SWORDS ZERO? STACK /?CCL22 ICALL PERFORM,V?ATTACK,PRSO,SWORDS RTRUE ?CCL22: PRINTI "Trying to " PRINT STR PRINTC 32 ICALL1 THE-PRINT-PRSO PRINTI " with " EQUAL? PRSI,FALSE-VALUE,HANDS /?CCL25 ICALL1 PRINTA-PRSI JUMP ?CND23 ?CCL25: PRINTI "your bare hands" ?CND23: PRINTR " is suicidal." ?CCL17: IN? PRSI,WINNER /?CCL27 CALL2 NOT-HOLDING,PRSI RSTACK ?CCL27: EQUAL? PRSI,PISTOL \?CCL29 ICALL PERFORM,V?SHOOT,PRSI,PRSO RTRUE ?CCL29: EQUAL? PRSI,SWORDS \?CCL31 PRINTI "You swing your sword at " ICALL1 THE-PRINT-PRSO EQUAL? PRSO,GRAY-LEADER,GRAY-CAPTAIN,SECOND-GRAY /?CTR33 EQUAL? PRSO,GRAYS,BROWNS \?CCL34 ?CTR33: PRINTR ", but he parries your attack with little difficulty." ?CCL34: PRINTI ", but " ICALL2 PRINT-HE/SHE,PRSI PRINTI " dodge" ICALL2 PRINT-PLURAL,PRSI PRINTR "." ?CCL31: CALL1 NOT-TRAINED RSTACK .FUNCT NOT-TRAINED:ANY:0:1,WHO ASSIGNED? 'WHO /?CND1 SET 'WHO,PRSO ?CND1: PRINTI "Your lack of training prevents you from successfully hitting " ICALL2 THE-PRINT,WHO PRINTR "." .FUNCT V-KNOCK:ANY:0:0 FSET? PRSO,DOORBIT \?CCL3 FSET? BLACKTHORNE,SITTING \?CCL6 CALL2 YOULL-HAVE-TO,STR?129 RSTACK ?CCL6: PRINTR "Nobody's home." ?CCL3: PRINTI "Why knock on " CALL1 A-PRSO? RSTACK .FUNCT V-KISS:ANY:0:0 CALL2 CREWMAN?,PRSO ZERO? STACK /?CCL3 PRINTR "You've heard that sort of tale about some of the crew, but you've never been tempted to find out the truth." ?CCL3: FSET? PRSO,PERSON \?CCL5 PRINTR "In Japan, kissing is not commonly practiced. It is considered somewhat unclean and barbaric." ?CCL5: CALL1 TELL-YUKS RSTACK .FUNCT V-LAMP-OFF:ANY:0:0 CALL1 TO-A-PRSO? RSTACK .FUNCT V-LAMP-ON:ANY:0:0 CALL1 TO-A-PRSO? RSTACK .FUNCT V-LEAN-ON:ANY:0:0 PRINTR "Tired?" .FUNCT V-LEAP:ANY:0:0 FSET? BLACKTHORNE,SITTING \?CCL3 CALL2 YOULL-HAVE-TO,STR?129 RSTACK ?CCL3: ZERO? PRSO /?CCL5 IN? PRSO,HERE \?CCL5 EQUAL? PRSO,OPPONENT \?CCL10 ICALL PERFORM,V?KICK,PRSO RTRUE ?CCL10: CALL1 V-SKIP RSTACK ?CCL5: ZERO? PRSO \?CCL12 ZERO? OPPONENT /?CCL12 ICALL2 PERFORM,V?DODGE RTRUE ?CCL12: PRINTR "You jump a little ways, but then fall back to the ground." .FUNCT V-LEAVE:ANY:0:0 EQUAL? P-PRSA-WORD,W?WALK \?CCL3 PRINTR "Please specify which way you want to walk. Use compass directions." ?CCL3: CALL2 DO-WALK,P?OUT RSTACK .FUNCT V-LISTEN:ANY:0:0 ZERO? PRSO /?CCL3 FSET? PRSO,PERSON \?CCL3 PRINTI "Right now, " ICALL1 THE-PRINT-PRSO ICALL2 PRINT-IS/ARE,PRSO PRINTR "n't saying anything." ?CCL3: ZERO? PRSO /?CCL7 EQUAL? PRSO,NOISE /?CCL7 PRINTI "At the moment, " ICALL1 THE-PRINT-PRSO ICALL2 PRINT-IS/ARE,PRSO PRINTR " quiet and peaceful." ?CCL7: PRINTR "You hear nothing unusual." .FUNCT CANT-X-WITH-PRSI:ANY:1:1,STR PRINTI "You can't " PRINT STR PRINTI " anything with " ICALL1 PRINTA-PRSI PRINTR "." .FUNCT V-LOCK:ANY:0:0 EQUAL? PRSI,FALSE-VALUE,KEY /?CCL3 CALL2 CANT-X-WITH-PRSI,STR?130 RSTACK ?CCL3: FSET? PRSO,LOCKED \?CCL5 PRINT STR?131 CRLF RTRUE ?CCL5: FSET? PRSO,LOCKABLE \?CCL7 IN? KEY,WINNER \?CCL10 FSET PRSO,LOCKED PRINTR "Done." ?CCL10: PRINT STR?132 CRLF RTRUE ?CCL7: CALL1 NO-LOCK RSTACK .FUNCT NO-LOCK:ANY:0:0 ICALL1 CTHE-PRINT-PRSO PRINTR " doesn't have a lock." .FUNCT V-INTRODUCE:ANY:0:0,TMP FSET? HERE,TOUCHBIT /FALSE FSET? HERE,RMUNGBIT /?CCL3 GETPT HERE,P?SCENE >TMP ZERO? TMP /FALSE GETB TMP,0 EQUAL? SCENE,STACK \FALSE ?CCL3: GETP HERE,P?PICTURE >TMP ZERO? TMP /?CND10 ICALL2 MARGINAL-PIC,TMP ?CND10: GETP HERE,P?FDESC >TMP ZERO? TMP /TRUE PRINT TMP CRLF CRLF RTRUE .FUNCT V-AFTER:ANY:0:0,TMP,RM ZERO? SCENE /FALSE GET SCENE-LOCS,SCENE GETP STACK,P?AFTER >TMP ZERO? TMP /FALSE CRLF ICALL1 TYPE-ANY-KEY CRLF ICALL1 INTERLUDE-STATUS-LINE ICALL1 TIME-PASSES ICALL TMP CALL1 TIME-PASSES RSTACK .FUNCT TIME-PASSES:ANY:0:0 CRLF ICALL2 CENTER-PIC-X,P-TIME CRLF RTRUE .FUNCT NEXT-SCENE:ANY:0:0 ADD SCENE,1 CALL2 NEW-SCENE,STACK RSTACK .FUNCT FAILED-SCENE:ANY:0:0 CALL2 NEW-SCENE,FALSE-VALUE RSTACK .FUNCT NEW-SCENE:ANY:0:1,SC,S,SA,SP ICALL1 UPDATE-STATUS-LINE CRLF PRINTC 91 GET SCENE-LOCS,SCENE GETPT STACK,P?SCORE >S GETB S,0 >SA GETB S,1 >SP ZERO? SC /?CCL3 PRINTI "Congratulations, you have finished this scene with a score of " MUL SCORE-FACTOR,SA PRINTN STACK PRINTI " out of a possible " MUL SCORE-FACTOR,SP PRINTN STACK JUMP ?CND1 ?CCL3: PRINTI "Sorry, this scene is no longer winnable" ?CND1: PRINTI ".]" CRLF CRLF ZERO? SC /?CCL6 ICALL1 V-AFTER ICALL1 DEQUEUE-ALL SET 'NEW-SCENE-NUMBER,SC RETURN NEW-SCENE-NUMBER ?CCL6: CALL1 FINISH RSTACK .FUNCT I-NEW-SCENE:ANY:0:0,SC,?TMP1 ZERO? NEW-SCENE-NUMBER /FALSE SET 'SC,NEW-SCENE-NUMBER SET 'NEW-SCENE-NUMBER,0 CALL1 SCORE-HAVE >?TMP1 CALL1 SCORE-MAX EQUAL? ?TMP1,STACK \?CCL6 PUSH CONTINUE-MENU JUMP ?CND4 ?CCL6: PUSH CONTINUE-AND-HINT-MENU ?CND4: ICALL GET-FROM-MENU,STR?78,STACK,CONTINUE-MENU-F ICALL1 RESET-MARGIN ICALL2 GOTO-SCENE,SC RTRUE .FUNCT SCORE-HAVE:ANY:0:0 GET SCENE-LOCS,SCENE GETPT STACK,P?SCORE GETB STACK,0 RSTACK .FUNCT SCORE-MAX:ANY:0:0 GET SCENE-LOCS,SCENE GETPT STACK,P?SCORE GETB STACK,1 RSTACK .FUNCT CONTINUE-MENU-F:ANY:2:2,WHICH,MENU EQUAL? WHICH,1 /TRUE EQUAL? WHICH,2 \?CCL5 ICALL1 V-SAVE JUMP ?CND1 ?CCL5: EQUAL? WHICH,3 \?CCL7 ICALL1 V-QUIT JUMP ?CND1 ?CCL7: EQUAL? WHICH,4 \?CND1 ICALL1 V-HINT ?CND1: ICALL1 TYPE-ANY-KEY RFALSE .FUNCT V-FIRST-LOOK:ANY:0:0 GRTR? VERBOSITY,1 /?PRD4 PUSH 0 JUMP ?PRD5 ?PRD4: PUSH 1 ?PRD5: CALL2 DESCRIBE-ROOM,STACK ZERO? STACK /FALSE ZERO? VERBOSITY /FALSE CALL1 DESCRIBE-OBJECTS RSTACK .FUNCT V-LOOK:ANY:0:0 CALL2 DESCRIBE-ROOM,TRUE-VALUE ZERO? STACK /FALSE CALL1 DESCRIBE-OBJECTS RSTACK .FUNCT V-LOOK-BEHIND:ANY:0:0 EQUAL? PRSO,ME \?CCL3 PRINTI "You look back over your shoulder. " PRINT STR?133 PRINTR "there." ?CCL3: FSET? PRSO,OPENBIT /?CCL5 FSET? PRSO,SURFACEBIT /?CCL5 FSET? PRSO,CONTBIT /?CTR4 FSET? PRSO,DOORBIT \?CCL5 ?CTR4: CALL2 INSPECTION-REVEALS,PRSO RSTACK ?CCL5: PRINT THERE-IS-NOTHING PRINTI "behind " CALL1 THE-PRSO RSTACK .FUNCT V-LOOK-DOWN:ANY:0:0 ZERO? LIT \?CCL3 PRINT TOO-DARK RTRUE ?CCL3: EQUAL? PRSO,FALSE-VALUE,ROOMS,LG-HOLE \?CCL5 CALL GLOBAL-IN?,LG-HOLE,HERE ZERO? STACK /?CCL8 ICALL PERFORM,V?LOOK-INSIDE,LG-HOLE RTRUE ?CCL8: ICALL PERFORM,V?EXAMINE,GROUND RTRUE ?CCL5: CALL1 PRSO-NOTHING-SPECIAL RSTACK .FUNCT WHAT-CONTENTS:ANY:0:0 CALL2 DESCRIBE-CONTENTS,PRSO ZERO? STACK \?CND1 PRINTI "nothing" IN? PLAYER,PRSO \?CND1 PRINTI " (other than you)" ?CND1: PRINT PERIOD RTRUE .FUNCT V-LOOK-INSIDE:ANY:0:0 FSET? PRSO,PERSON \?CCL3 CALL1 PRSO-NOTHING-SPECIAL RSTACK ?CCL3: FSET? PRSO,DOORBIT \?CCL5 ICALL2 THIS-IS-IT,PRSO PRINTI "All you can tell is that " CALL1 TELL-OPEN-CLOSED RSTACK ?CCL5: FSET? PRSO,CONTBIT \?CCL7 LOC WINNER EQUAL? PRSO,STACK \?CCL10 MOVE PLAYER,ROOMS PRINTI "Aside from you, there's " ICALL1 WHAT-CONTENTS MOVE PLAYER,PRSO RTRUE ?CCL10: CALL2 SEE-INSIDE?,PRSO ZERO? STACK /?CCL12 ICALL1 CTHE-PRINT-PRSO PRINTI " contains " CALL1 WHAT-CONTENTS RSTACK ?CCL12: FSET? PRSO,OPENBIT /?CCL14 FIRST? PRSO \?CCL14 ICALL2 NEW-VERB,V?OPEN RTRUE ?CCL14: ICALL2 THIS-IS-IT,PRSO PRINTI "It seems " CALL1 TELL-OPEN-CLOSED RSTACK ?CCL7: CALL2 YOU-CANT-X-PRSO,STR?134 RSTACK .FUNCT V-LOOK-ON:ANY:0:0 FSET? PRSO,PERSON \?CCL3 CALL1 PRSO-NOTHING-SPECIAL RSTACK ?CCL3: FSET? PRSO,SURFACEBIT /?CTR4 FSET? PRSO,FURNITURE \?CCL5 ?CTR4: PRINTI "On " ICALL1 THE-PRINT-PRSO PRINTI " is " CALL1 WHAT-CONTENTS RSTACK ?CCL5: PRINTI "You don't see anything on " ICALL1 THE-PRINT-PRSO PRINTR "." .FUNCT V-LOOK-UNDER:ANY:0:0 CALL2 HELD?,PRSO ZERO? STACK /?CCL3 PRINTR "You see your hand." ?CCL3: PRINT THERE-IS-NOTHING PRINTR "there." .FUNCT V-LOWER:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 ICALL2 PERFORM,V?SIT RTRUE ?CCL3: FSET? PRSO,TAKEBIT /?CCL5 CALL2 YOU-CANT-X-THAT,STR?135 RSTACK ?CCL5: CALL2 HACK-HACK,STR?136 RSTACK .FUNCT V-MELT:ANY:0:0 CALL1 WITH-PRSI? RSTACK .FUNCT V-MOVE:ANY:0:0 EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3 PRINTR "What moves!" ?CCL3: CALL2 HELD?,PRSO ZERO? STACK /?CCL5 FSET? PRSO,BODY-PART /?CCL5 PRINTI "You're holding " ICALL2 PRINT-HIM/HER,PRSO PRINTI ". Are you planning to juggle " ICALL2 PRINT-HIM/HER,PRSO PRINTR "?" ?CCL5: FSET? PRSO,TAKEBIT \?CCL9 CALL2 DEAD?,PRSO ZERO? STACK /?CCL9 CALL1 V-TURN-OVER RSTACK ?CCL9: FSET? PRSO,DOORBIT \?CCL13 ICALL PERFORM,V?OPEN,PRSO RTRUE ?CCL13: CALL2 YOU-CANT-X-PRSO,STR?137 RSTACK .FUNCT MOTION-VERB?:ANY:0:0 EQUAL? PRSA,V?WALK,V?WALK-TO,V?WALK-AROUND /TRUE EQUAL? PRSA,V?ENTER,V?EXIT,V?DODGE /TRUE EQUAL? PRSA,V?AVOID,V?LEAP,V?DIVE /TRUE EQUAL? PRSA,V?DANCE,V?TURN-AROUND,V?HIDE /TRUE EQUAL? PRSA,V?HIDE-BEHIND,V?HIDE-UNDER,V?MOVE /TRUE EQUAL? PRSA,V?BOARD,V?CLIMB-DOWN,V?CLIMB-FOO /TRUE EQUAL? PRSA,V?CLIMB-UP /TRUE RFALSE .FUNCT HOSTILE-VERB?:ANY:0:0 EQUAL? PRSA,V?ATTACK,V?BITE,V?CUT /TRUE EQUAL? PRSA,V?HIT,V?KICK,V?KILL /TRUE EQUAL? PRSA,V?MOVE,V?MUNG,V?PISS /TRUE EQUAL? PRSA,V?PUSH,V?PUSH-OUT,V?RUB /TRUE EQUAL? PRSA,V?SHAKE,V?SHOOT,V?SPIT /TRUE EQUAL? PRSA,V?SWING,V?THROW,V?TRIP /TRUE EQUAL? PRSA,V?TAKE \?CCL11 EQUAL? P-PRSA-WORD,W?GRAB,W?TACKLE,W?LUNGE \?CCL11 FSET? PRSO,PERSON /TRUE ?CCL11: EQUAL? PRSA,V?FUCK \FALSE FSET? PRSO,PERSON \FALSE FSET? PERSON,FEMALE \TRUE RFALSE .FUNCT JAPANESE-VERB?:ANY:0:0 EQUAL? PRSA,V?DOMO,V?DOZO,V?GENKI-DESU /TRUE EQUAL? PRSA,V?GOMEN-NASAI,V?HAI,V?ISOGI /TRUE EQUAL? PRSA,V?IYE,V?KINJIRU,V?KONNICHI-WA /TRUE EQUAL? PRSA,V?KONBANWA,V?MIZU,V?NIHON-GO-GA /TRUE EQUAL? PRSA,V?TEKI,V?WAKARIMASU /TRUE RFALSE .FUNCT ACT-CRAZY?:ANY:0:0 EQUAL? PRSA,V?YELL,V?YELL-AT,V?DANCE /TRUE EQUAL? PRSA,V?SING,V?LAUGH,V?BABBLE /TRUE EQUAL? PRSA,V?ACT \FALSE EQUAL? PRSO,CRAZY /TRUE RFALSE .FUNCT ABSTRACT-VERB?:ANY:0:0,?TMP1 CALL1 EVERYWHERE-VERB? >?TMP1 ZERO? ?TMP1 /?PRD3 RETURN ?TMP1 ?PRD3: CALL1 PAST-TENSE? RSTACK .FUNCT PASSIVE-VERB?:ANY:0:0,?TMP1 CALL1 ABSTRACT-VERB? >?TMP1 ZERO? ?TMP1 /?PRD3 RETURN ?TMP1 ?PRD3: EQUAL? PRSA,V?ASK-ABOUT,V?BOW,V?COMPARE /TRUE EQUAL? PRSA,V?COUNT,V?CURSE,V?DIE /TRUE EQUAL? PRSA,V?DISEMBARK,V?EXAMINE,V?HELLO /TRUE EQUAL? PRSA,V?LAUGH,V?LISTEN,V?LOOK /TRUE EQUAL? PRSA,V?LOOK-BEHIND,V?LOOK-DOWN,V?LOOK-INSIDE /TRUE EQUAL? PRSA,V?LOOK-UNDER,V?POINT,V?READ /TRUE EQUAL? PRSA,V?REPLY,V?SAY,V?SCARE /TRUE EQUAL? PRSA,V?SHOW,V?SPEAK,V?TELL /TRUE EQUAL? PRSA,V?TELL-ABOUT,V?THANK,V?THOU /TRUE EQUAL? PRSA,V?WAIT,V?WAIT-FOR,V?WALK /TRUE EQUAL? PRSA,V?WAVE-AT,V?YAWN,V?YELL /TRUE EQUAL? PRSA,V?YELL-AT /TRUE RFALSE .FUNCT V-MUNG:ANY:0:0 CALL2 HACK-HACK,STR?138 RSTACK .FUNCT PRE-OPEN:ANY:0:0 CALL1 PAST-TENSE? ZERO? STACK /?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: ZERO? PRSI /FALSE CALL2 HELD?,PRSI ZERO? STACK \FALSE CALL2 NOT-HOLDING,PRSI RSTACK .FUNCT V-OPEN:ANY:0:0,F,STR FSET? PRSO,DOORBIT \?CND1 SET 'P-LAST-OPEN,PRSO ?CND1: FSET? PRSO,PERSON \?CCL5 PRINT YOU-CANT PRINTR "open a person, at least not without making a mess." ?CCL5: FSET? PRSO,OPENBIT \?CCL7 FSET? PRSO,OPENABLE \?CCL10 CALL1 ALREADY-OPEN RSTACK ?CCL10: PRINTR "It looks open from here." ?CCL7: FSET? PRSO,CONTBIT /?PRD14 FSET? PRSO,DOORBIT \?CTR11 ?PRD14: FSET? PRSO,SURFACEBIT \?CCL12 ?CTR11: IN? PRSO,ROOMS \?CCL19 PRINT YOU-HAVE-TO PRINTR "specify a door to open." ?CCL19: CALL1 TO-A-PRSO? RSTACK ?CCL12: GETP PRSO,P?CAPACITY ZERO? STACK /?CCL21 FSET? PRSO,OPENBIT /FALSE FSET PRSO,OPENBIT FSET PRSO,TOUCHBIT FIRST? PRSO \?CTR26 FSET? PRSO,TRANSBIT \?CCL27 ?CTR26: PRINTR "Opened." ?CCL27: FIRST? PRSO >F \?CCL31 NEXT? F /?CCL31 GETP F,P?FDESC >STR ZERO? STR /?CCL31 ICALL2 OKAY-THE-PRSO-IS-NOW,STR?62 PRINT STR CRLF RTRUE ?CCL31: PRINTI "Opening " ICALL1 THE-PRINT-PRSO PRINTI " reveals " CALL1 WHAT-CONTENTS RSTACK ?CCL21: FSET? PRSO,OPENBIT \?CCL37 CALL1 ALREADY-OPEN RSTACK ?CCL37: FSET? PRSO,LOCKED \?CCL39 PRINTR "It's locked." ?CCL39: FSET PRSO,OPENBIT CALL2 OKAY-THE-PRSO-IS-NOW,STR?62 RSTACK .FUNCT V-PICK:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?139 RSTACK .FUNCT V-PLUG:ANY:0:0 CALL1 NO-EFFECT RSTACK .FUNCT V-POINT:ANY:0:0 EQUAL? SCENE,S-ANJIRO \?CCL3 IN? ONNA,HERE \?CCL3 EQUAL? PRSO,ONNA /?CCL3 ICALL PERFORM,V?SHOW,PRSO,ONNA RTRUE ?CCL3: FSET? PRSO,PERSON \?CCL8 PRINTR "It is considered impolite to point." ?CCL8: PRINTI "You are now pointing at " ICALL1 PRINTA-PRSO PRINTR "." .FUNCT V-POUR-FROM:ANY:0:0 IN? PRSO,PRSI \?CCL3 ICALL PERFORM,V?POUR,PRSO RTRUE ?CCL3: PRINTR "It's not in that!" .FUNCT PRE-POUR:ANY:0:0 EQUAL? PRSO,PRSI \FALSE CALL1 TELL-YUKS RSTACK .FUNCT V-POUR:ANY:0:0 FSET? PRSO,CONTBIT \?CCL3 CALL2 HELD?,PRSO ZERO? STACK /?CCL3 CALL EMPTY-ALL,PRSO,PRSI RSTACK ?CCL3: CALL2 YOU-CANT-X-THAT,STR?140 RSTACK .FUNCT EMPTY-ALL:ANY:2:2,FROM,TO,F,N,R,1ST?,?PR-F,?PR-N FIRST? FROM >?PR-F /?PRG4 ?PRG4: ZERO? ?PR-F /?REP2 NEXT? ?PR-F >?PR-N /?BOGUS8 ?BOGUS8: FSET? ?PR-F,TAKEBIT \?CND9 SET '1ST?,TRUE-VALUE ICALL2 DPRINT,?PR-F PRINTI ": " ZERO? TO /?CCL13 CALL PERFORM,V?PUT,?PR-F,TO >R JUMP ?CND11 ?CCL13: CALL PERFORM,V?DROP,?PR-F >R ?CND11: EQUAL? R,M-FATAL /TRUE ?CND9: SET '?PR-F,?PR-N JUMP ?PRG4 ?REP2: ZERO? 1ST? \TRUE ICALL2 CTHE-PRINT,FROM PRINTR " is empty." .FUNCT V-PUSH:ANY:0:0 CALL2 HACK-HACK,STR?141 RSTACK .FUNCT V-PUSH-TO:ANY:0:0 EQUAL? PRSI,INTDIR \?CCL3 ICALL PERFORM,V?MOVE,PRSO RTRUE ?CCL3: PRINT YOU-CANT PRINTI "push " ICALL1 THE-PRINT-PRSO PRINTI " into " ICALL1 THE-PRINT-PRSI PRINTR "!" .FUNCT PRE-PUT:ANY:0:0,L LOC PRSO >L IN? PRSO,GLOBAL-OBJECTS /?CTR2 FSET? PRSO,TAKEBIT /?CCL3 ?CTR2: PRINTR "Nice try." ?CCL3: EQUAL? PRSA,V?PUT \?CCL7 FSET? PRSO,WEAPONBIT \?CCL7 FSET? PRSI,PERSON \?CCL7 ICALL2 SWAP-VERB,V?ATTACK RTRUE ?CCL7: IN? PRSO,PRSI \?CCL12 CALL TAKE-OUT-FIRST,PRSO,PRSI RSTACK ?CCL12: IN? PRSI,PRSO \?CCL14 CALL TAKE-OUT-FIRST,PRSI,PRSO RSTACK ?CCL14: FSET? L,PERSON /FALSE FSET? L,CONTBIT \FALSE FSET? L,OPENBIT /FALSE CALL TAKE-OUT-FIRST,PRSO,L RSTACK .FUNCT TAKE-OUT-FIRST:ANY:2:2,OBJ,CONT PRINTI "You should take " ICALL2 THE-PRINT,OBJ PRINTI " out of " ICALL2 THE-PRINT,CONT PRINTR " first." .FUNCT V-PUT:ANY:0:0,W FSET? PRSI,OPENBIT /?CCL3 FSET? PRSI,DOORBIT /?CCL3 FSET? PRSI,CONTBIT /?CCL3 FSET? PRSI,SURFACEBIT /?CCL3 FSET? PRSI,VEHBIT /?CCL3 ICALL1 YOU-CANT-X-THAT RTRUE ?CCL3: FSET? PRSI,OPENBIT /?CCL10 FSET? PRSI,SURFACEBIT /?CCL10 CALL2 INSPECTION-REVEALS,PRSI RSTACK ?CCL10: EQUAL? PRSI,PRSO \?CCL14 CALL1 TO-A-PRSO? RSTACK ?CCL14: IN? PRSO,PRSI \?CCL16 PRINTI "I think " ICALL1 THE-PRINT-PRSO PRINTI " is already in " CALL1 THE-PRSI RSTACK ?CCL16: FSET? PRSI,PERSON /?CTR17 LOC PRSI >W FSET? W,PERSON \?CCL18 EQUAL? W,WINNER /?CCL18 ?CTR17: ZERO? W \?CND23 SET 'W,PRSI ?CND23: PRINTI "Don't you think you should ask " ICALL2 THE-PRINT,W PRINTR " first?" ?CCL18: CALL1 PRSO-TOO-BIG? ZERO? STACK /?CCL26 PRINT NO-ROOM CRLF RTRUE ?CCL26: CALL2 HELD?,PRSO ZERO? STACK \?CCL28 CALL1 ITAKE EQUAL? STACK,TRUE-VALUE \TRUE ?CCL28: FSET? PRSO,WEARBIT \?CCL32 CALL1 HAVE-TO-TAKE-OFF RSTACK ?CCL32: FCLEAR PRSO,WEARBIT MOVE PRSO,PRSI FSET PRSO,TOUCHBIT PRINTR "Done." .FUNCT PRSO-TOO-BIG?:ANY:0:0,?TMP1,?TMP2,?TMP3 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 /TRUE RFALSE .FUNCT INSPECTION-REVEALS:ANY:1:1,OBJ ICALL2 THIS-IS-IT,OBJ PRINTI "Inspection reveals that " ICALL2 THE-PRINT,OBJ PRINTR " isn't open." .FUNCT V-PUT-BEHIND:ANY:0:0 PRINT YOU-CANT PRINTR "be sure what's behind there already." .FUNCT V-PUT-ON:ANY:0:0 EQUAL? PRSI,ME \?CCL3 FSET? PRSO,WEARBIT \?CCL6 PRINTI "You already have " ICALL1 THE-PRINT-PRSO PRINTR " on." ?CCL6: ICALL PERFORM,V?WEAR,PRSO RTRUE ?CCL3: EQUAL? PRSI,GROUND \?CCL8 ICALL PERFORM,V?DROP,PRSO RTRUE ?CCL8: FSET? PRSI,SURFACEBIT \?CCL10 CALL1 V-PUT RSTACK ?CCL10: FSET? PRSI,PERSON \?CCL12 FSET? PRSO,DEAD /?CCL12 FSET? PRSO,WEARABLE \?CCL17 PRINTI "Presumably, " ICALL1 THE-PRINT-PRSI PRINTI " would prefer to dress " ICALL2 PRINT-HIM/HER,PRSO PRINTR "self." ?CCL17: ICALL1 CTHE-PRINT-PRSI PRINTR " doesn't look like a table to me." ?CCL12: CALL1 NO-GOOD-SURFACE RSTACK .FUNCT NO-GOOD-SURFACE:ANY:0:0 PRINTI "There's no good surface on " CALL1 THE-PRSI RSTACK .FUNCT V-PUT-UNDER:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?142 RSTACK .FUNCT V-RAISE:ANY:0:0,?TMP1 FSET? PRSO,PERSON \?CCL3 EQUAL? PRSO,WINNER,ME /?CCL3 ICALL PERFORM,V?TAKE,PRSO RTRUE ?CCL3: FSET? PRSO,TAKEBIT /?CCL7 PRINT YOU-CANT PRINTR "raise that." ?CCL7: LOC PRSO IN? STACK,WINNER /?CCL9 CALL2 WEIGHT,PRSO >?TMP1 CALL2 WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,LOAD-ALLOWED \?CCL9 ICALL1 CTHE-PRINT-PRSO PRINTR " is too heavy." ?CCL9: CALL2 HACK-HACK,STR?143 RSTACK .FUNCT V-REACH-IN:ANY:0:0,OBJ FSET? PRSO,CONTBIT \?CTR2 FSET? PRSO,PERSON \?CCL3 ?CTR2: CALL1 TO-A-PRSO? RSTACK ?CCL3: FSET? PRSO,OPENBIT /?CCL7 PRINTR "It's not open." ?CCL7: FIRST? PRSO >OBJ \?CTR8 FSET? OBJ,INVISIBLE /?CTR8 FSET? OBJ,TAKEBIT /?CCL9 ?CTR8: CALL1 ITS-EMPTY RSTACK ?CCL9: PRINT STR?144 PRINTI "in " ICALL1 THE-PRINT-PRSO PRINTR "!" .FUNCT PRE-READ:ANY:0:0 ZERO? LIT \?CCL3 PRINT YOU-CANT PRINTR "read in the dark." ?CCL3: ZERO? PRSI /FALSE FSET? PRSI,TRANSBIT /FALSE ICALL1 HOW-DO-YOU CALL1 A-PRSI? RSTACK .FUNCT HOW-DO-YOU:ANY:0:0 PRINTI "How do you do that with " RTRUE .FUNCT V-READ:ANY:0:0 FSET? PRSO,READBIT \?CCL3 GETP PRSO,P?TEXT ZERO? STACK /?CCL3 GETP PRSO,P?TEXT PRINT STACK CRLF RTRUE ?CCL3: CALL1 TO-A-PRSO? RSTACK .FUNCT V-REPLY:ANY:0:0 ICALL1 END-QUOTE EQUAL? PRSO,INTQUOTE \?CCL3 PRINTR "[Please answer without using quotes.]" ?CCL3: EQUAL? PRSO,QCONTEXT \?CCL5 ZERO? PRSI \?CCL8 ICALL2 PERFORM,V?ANSWER RTRUE ?CCL8: ICALL PERFORM,V?REPLY,PRSI RTRUE ?CCL5: ZERO? PRSI \?CCL10 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL10: PRINTR "You are ignored." .FUNCT PRE-SRUB:ANY:0:0 ICALL2 SWAP-VERB,V?RUB RTRUE .FUNCT V-SRUB:ANY:0:0 RTRUE .FUNCT V-RUB:ANY:0:0,H EQUAL? PRSO,AIR \?CCL3 PRINTI "It's " FSET? HERE,OUTSIDE \?CCL6 PRINTR "cold." ?CCL6: PRINTR "warm." ?CCL3: CALL2 HACK-HACK,STR?145 RSTACK .FUNCT V-SAY:ANY:0:0,V EQUAL? PRSO,INTQUOTE \?CCL3 ZERO? OMI-QUESTION \?CTR2 ZERO? YABU-QUESTION \?CTR2 ZERO? RODRIGUES-QUESTION \?CTR2 ZERO? AFTERMATH-QUESTION /?CCL3 ?CTR2: CALL2 HOW-TO-USE-TELL,PRSI RSTACK ?CCL3: CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? PRSO,ENGLISH,PORTUGUESE,SPANISH /?CTR12 EQUAL? PRSO,DUTCH,LATIN,JAPANESE \?CCL13 ?CTR12: ICALL PERFORM,V?SPEAK,PRSO,PRSI RTRUE ?CCL13: ZERO? PRSI \FALSE PRINTI "If you wish to speak to someone, you should say (for example) """ CALL FIND-IN,HERE,PERSON >V ZERO? V /?CCL20 ICALL2 DPRINT,V JUMP ?CND18 ?CCL20: ICALL2 PRINTUNDER,STR?146 ?CND18: PRINTI ", " ICALL2 PRINTUNDER,STR?147 PRINTC 34 CRLF CALL1 END-QUOTE RSTACK .FUNCT HOW-TO-USE-TELL:ANY:1:1,WHO PRINTI "[The correct way to speak to others is to use their name followed by a comma, and then what you want to say to them. For example: >" ZERO? WHO /?CCL3 ICALL2 DPRINT,WHO JUMP ?CND1 ?CCL3: ZERO? QCONTEXT /?CCL5 IN? QCONTEXT,HERE \?CCL5 ICALL2 DPRINT,QCONTEXT JUMP ?CND1 ?CCL5: ICALL2 PRINTUNDER,STR?146 ?CND1: PRINTI ", " ICALL1 PRINT-INTQUOTE PRINTI " ]" CRLF CALL1 END-QUOTE RSTACK .FUNCT V-SEARCH:ANY:0:0 ZERO? PRSI /?CCL3 FSET? PRSI,PERSON \?CCL3 ICALL PERFORM,V?FIND,PRSI RTRUE ?CCL3: FSET? PRSO,DEAD \?CCL7 ICALL1 CTHE-PRINT-PRSO PRINTR " can't object, being dead, but you find nothing interesting." ?CCL7: FSET? PRSO,PERSON \?CCL9 ICALL1 CTHE-PRINT-PRSO PRINTI " refuse" ICALL2 PRINT-PLURAL,PRSO PRINTR "." ?CCL9: CALL DESCRIBE-CONTENTS,PRSO,FALSE-VALUE,3 ZERO? STACK \FALSE PRINT THERE-IS-NOTHING PRINTI "there" PRINT PERIOD RTRUE .FUNCT V-SEND:ANY:0:0 CALL1 PAST-TENSE? ZERO? STACK /?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: FSET? PRSO,PERSON \?CCL7 ZERO? PRSI /?CCL7 FSET? PRSI,PERSON \?CCL7 ICALL1 DPRINT-PRSO PRINTI " isn't interested in seeing " ICALL1 DPRINT-PRSI PRINTR "." ?CCL7: FSET? PRSO,PERSON \?CCL12 EQUAL? PRSI,FALSE-VALUE,INTDIR \?CCL12 ICALL1 DPRINT-PRSO PRINT STR?148 CRLF RTRUE ?CCL12: ZERO? PRSI /?CCL16 FSET? PRSI,PERSON \?CCL16 EQUAL? PRSO,INTDIR \?CCL16 ICALL1 DPRINT-PRSI PRINT STR?148 CRLF RTRUE ?CCL16: CALL1 TELL-YUKS RSTACK .FUNCT V-SEND-UNDER:ANY:0:0 FSET? PRSO,PERSON \?CCL3 ICALL1 CTHE-PRINT-PRSO PRINTR " refuses." ?CCL3: PRINTI "Look again, you're giving orders to " ICALL1 PRINTA-PRSO PRINTR "!" .FUNCT PRE-SGIVE:ANY:0:0 ICALL2 SWAP-VERB,V?GIVE RTRUE .FUNCT V-SGIVE:ANY:0:0 RTRUE .FUNCT V-SHAKE:ANY:0:0,X EQUAL? PRSO,HEAD \?CCL3 ICALL2 PERFORM,V?NO RTRUE ?CCL3: FSET? PRSO,PERSON \?CCL5 PRINTR "Be real." ?CCL5: PRINTI "There's no point in shaking " ICALL2 THAT/THEM,PRSO PRINTR "." .FUNCT THAT/THEM:ANY:1:1,OBJ FSET? OBJ,PLURAL \?CCL3 PRINTI "them" RTRUE ?CCL3: PRINTI "that" RTRUE .FUNCT V-SHARPEN:ANY:0:0 PRINTI "You'll never sharpen anything with " ICALL2 THAT/THEM,PRSI PRINTR "!" .FUNCT V-SHOOT-WITH:ANY:0:0 ICALL PERFORM,V?SHOOT,PRSI,PRSO RTRUE .FUNCT PRE-SHOOT:ANY:0:0 EQUAL? PRSO,PISTOL \?CCL3 FSET? PISTOL,RMUNGBIT \?CCL3 PRINTR "You fire, but the pistol just goes ""click!"" It isn't loaded!" ?CCL3: ZERO? PRSI \FALSE EQUAL? PRSO,PISTOL \?CCL10 FSET PISTOL,RMUNGBIT PRINTI "You fire " ICALL1 THE-PRINT-PRSO PRINTR " into the air, to little effect." ?CCL10: CALL2 HELD?,PISTOL ZERO? STACK /?CCL12 ICALL PERFORM,V?SHOOT,PISTOL,PRSO RTRUE ?CCL12: CALL2 HELD?,PRSO ZERO? STACK /?CCL14 PRINTI "Few would consider " ICALL1 PRINTA-PRSO PRINTR " to be an adequate firearm." ?CCL14: PRINTI "You don't have a weapon to shoot " ICALL1 THE-PRINT-PRSO PRINTR " with." .FUNCT V-SHOOT:ANY:0:0 EQUAL? PRSO,PISTOL \?CCL3 EQUAL? PRSI,PISTOL \?CND4 PRINTR "A difficult maneuver, in fact an impossible one." ?CND4: EQUAL? PRSI,MARIKO,ETSU,CHIMMOKO /?PRD10 EQUAL? PRSI,ACHIKO,YABU,KIRITSUBO \?CTR7 ?PRD10: FSET? PRSI,DEAD /?CTR7 CALL JIGS-UP?,J-SHOOT-FRIEND,STR?149 ZERO? STACK /TRUE ?CTR7: FSET PISTOL,RMUNGBIT PRINTI "You fire the pistol at " ICALL1 THE-PRINT-PRSI FSET? PRSI,DEAD \?CCL16 PRINTI ", who was already dead." CRLF JUMP ?CND14 ?CCL16: FSET? PRSI,PERSON \?CCL18 GETPT PRSI,P?OWNER ZERO? STACK /?CND19 PUTP PRSI,P?OWNER,BLACKTHORNE ?CND19: PRINTI ", killing " FSET? PRSI,PLURAL /?CCL23 FSET PRSI,DEAD ICALL2 PRINT-HIM/HER,PRSI JUMP ?CND21 ?CCL23: PRINTI "one of them" ?CND21: PRINTI " instantly." CRLF JUMP ?CND14 ?CCL18: EQUAL? PRSI,GROUND,WALL \?CCL25 PRINTI ", to no useful effect." CRLF JUMP ?CND14 ?CCL25: PRINTI ", missing by a mile." CRLF ?CND14: EQUAL? PRSI,MARIKO,ETSU,CHIMMOKO /?CTR27 EQUAL? PRSI,ACHIKO,YABU \TRUE ?CTR27: CRLF CALL2 JIGS-UP,STR?150 RSTACK ?CCL3: PRINTR "If you had a weapon, you might be able to shoot it. Alas, you don't." .FUNCT V-SHOW:ANY:0:0 FSET? PRSI,PERSON \?CCL3 CALL2 UNINTERESTED,PRSI RSTACK ?CCL3: CALL1 TELL-YUKS RSTACK .FUNCT V-SKIP:ANY:0:0 PRINTR "Anyone who saw you would be unfavorably impressed." .FUNCT V-SLEEP:ANY:0:0 ZERO? OPPONENT /?CCL3 PRINTR "If you can sleep at a time like this, you have nerves of steel!" ?CCL3: PRINTR "You try to sleep, but you can't let yourself relax now." .FUNCT LIKE-A-PRSO:ANY:1:1,V ICALL2 CPRINT-HE/SHE,PRSO PRINTC 32 PRINT V PRINTI " just like " ICALL1 PRINTA-PRSO PRINTR "." .FUNCT V-SMELL:ANY:0:0 ZERO? PRSO /?CCL3 CALL2 LIKE-A-PRSO,STR?151 RSTACK ?CCL3: LOC WINNER FSET? STACK,VEHBIT \?CCL5 LOC WINNER ICALL2 PERFORM-PRSA,STACK RTRUE ?CCL5: PRINTR "There's no noticeable smell here." .FUNCT PRE-SSHOW:ANY:0:0 ICALL2 SWAP-VERB,V?SHOW RTRUE .FUNCT V-SSHOW:ANY:0:0 RTRUE .FUNCT V-SWING:ANY:0:0 ZERO? PRSI \?CCL3 PRINTR "Whoosh!" ?CCL3: ICALL PERFORM,V?HIT,PRSI,PRSO RTRUE .FUNCT V-SWIM:ANY:0:0 CALL1 TELL-YUKS RSTACK .FUNCT V-SWIM-TO:ANY:0:0 ICALL PERFORM,V?WALK-TO,PRSO RTRUE .FUNCT PRE-TAKE:ANY:0:0 IN? PRSO,WINNER \?CCL3 FSET? PRSO,WEARBIT /FALSE ?CCL3: IN? PRSO,WINNER \?CCL7 CALL NOUN-USED?,PRSO,W?WATER ZERO? STACK \?CCL7 PRINT YOU-HAVE ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL7: LOC WINNER FSET? STACK,VEHBIT /?CCL11 LOC PRSO ZERO? STACK /?CCL11 LOC PRSO FSET? STACK,CONTBIT \?CCL11 LOC PRSO FSET? STACK,OPENBIT /?CCL11 ICALL1 CANT-REACH-THAT RTRUE ?CCL11: ZERO? PRSI /?CCL17 EQUAL? PRSO,ME \?CCL20 ICALL PERFORM,V?DROP,PRSI RTRUE ?CCL20: CALL HELD?,PRSO,PRSI ZERO? STACK \?CTR21 GETP PRSO,P?OWNER EQUAL? PRSI,STACK \?CCL22 ?CTR21: SET 'PRSI,FALSE-VALUE RFALSE ?CCL22: FSET? PRSI,PERSON \?CCL26 ICALL1 CTHE-PRINT-PRSI PRINTI " doesn't seem to have " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL26: ICALL1 CTHE-PRINT-PRSO PRINTR " isn't there." ?CCL17: LOC WINNER EQUAL? PRSO,STACK \FALSE PRINTI "You are " FSET? PRSO,PERSON \?CCL31 PRINTI "being carried by" JUMP ?CND29 ?CCL31: FSET? PRSO,SURFACEBIT \?CCL33 PRINTI "on" JUMP ?CND29 ?CCL33: PRINTI "in" ?CND29: PRINTR " it!" .FUNCT V-TAKE:ANY:0:0,SIZ CALL1 ITAKE EQUAL? STACK,TRUE-VALUE \FALSE GETP PRSO,P?SIZE >SIZ PRINTI "Taken" LESS? SIZ,20 /?CND4 PRINTI ", but it's " LESS? SIZ,100 /?CCL8 PRINTI "extremely" JUMP ?CND6 ?CCL8: LESS? SIZ,50 /?CND6 PRINTI "very" ?CND6: PRINTI " heavy" ?CND4: PRINTR "." .FUNCT PUT-ON:ANY:1:2,OBJ,WHO ASSIGNED? 'WHO /?CND1 SET 'WHO,WINNER ?CND1: MOVE OBJ,WHO FSET OBJ,WEARBIT RTRUE .FUNCT TAKE-OFF:ANY:1:1,OBJ MOVE OBJ,HERE FCLEAR OBJ,WEARBIT RTRUE .FUNCT V-TAKE-OFF:ANY:0:0 FSET? PRSO,VEHBIT \?CCL3 ICALL2 NEW-VERB,V?DISEMBARK RTRUE ?CCL3: FSET? PRSO,WEARABLE \?CCL5 FSET? PRSO,WEARBIT \?CCL8 IN? PRSO,WINNER \?CCL8 FCLEAR PRSO,WEARBIT PRINTI "You're no longer wearing " ICALL1 THE-PRINT-PRSO PRINT PERIOD RTRUE ?CCL8: PRINT STR?61 PRINTR "wearing it." ?CCL5: ICALL2 NEW-VERB,V?TAKE RTRUE .FUNCT V-HOLD:ANY:0:0,O FSET? PRSO,BODY-PART \?CCL3 CALL2 GET-OWNER,PRSO >O EQUAL? O,ME,BLACKTHORNE,FALSE-VALUE /?CCL6 PRINTR "It seems unavailable at the moment." ?CCL6: EQUAL? PRSO,HEAD \?CCL8 PRINTR "Do you have a headache?" ?CCL8: PRINTI "You hold your " ICALL1 DPRINT-PRSO PRINTR " as best you can." ?CCL3: CALL2 HELD?,PRSO ZERO? STACK /?CCL10 IN? PRSO,WINNER \?CCL13 FSET? PRSO,WEARBIT \?CCL16 FSET? PRSO,WEAPONBIT \?CCL16 FCLEAR PRSO,WEARBIT PRINTI "You take " ICALL1 THE-PRINT-PRSO PRINTI " and prepare to use " ICALL2 PRINT-HIM/HER,PRSO PRINTR "." ?CCL16: PRINTI "You hold " ICALL2 PRINT-HIM/HER,PRSO PRINTR " tightly." ?CCL13: PRINTI "You take " ICALL1 THE-PRINT-PRSO PRINTI " out of " LOC PRSO ICALL2 THE-PRINT,STACK PRINTI " and hold " ICALL2 PRINT-HIM/HER,PRSO PRINTC 46 CRLF MOVE PRSO,WINNER RTRUE ?CCL10: PRINTI "You don't have " ICALL1 THE-PRINT-PRSO PRINTR "." .FUNCT V-TELL:ANY:0:0 FSET? PRSO,PERSON \?CCL3 FSET? PRSO,DEAD \?CCL6 EQUAL? PRSO,MARIKO /?CCL6 PRINT YOU-CANT PRINT STR?65 CRLF ICALL1 END-QUOTE RETURN M-FATAL ?CCL6: ZERO? P-CONT /?CCL10 SET 'WINNER,PRSO RTRUE ?CCL10: ICALL1 CTHE-PRINT-PRSO PRINTI " wait" FSET? PRSO,PLURAL /?CND11 PRINTC 115 ?CND11: PRINTI " for you to say something." CRLF ICALL1 END-QUOTE RETURN M-FATAL ?CCL3: ICALL2 YOU-CANT-X-PRSO,STR?152 ICALL1 END-QUOTE RETURN M-FATAL .FUNCT V-THANK:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ZERO? PRSO /?CTR4 EQUAL? PRSO,YOU,ME \?CCL5 ?CTR4: FSET? JAPANESE,SCOREBIT \?CCL10 PRINTR "You're welcome." ?CCL10: PRINTR "Domo." ?CCL5: FSET? PRSO,PERSON \?CCL12 FSET? PRSO,DEAD \?CCL15 ICALL1 CTHE-PRINT-PRSO PRINTR " is beyond all politeness now." ?CCL15: EQUAL? PRSO,RODRIGUES \?CCL17 PRINTR """You're welcome, Ingeles.""" ?CCL17: EQUAL? PRSO,SEBASTIO,OPPONENT \?CCL19 PRINTR "He ignores your politeness." ?CCL19: FSET? PRSO,JAPANESEBIT /?CCL21 ICALL1 CTHE-PRINT-PRSO PRINTR " is surprised by your politeness." ?CCL21: FSET? PRSO,PLURAL \?CCL24 ICALL1 CPRINTA-PRSO JUMP ?CND22 ?CCL24: ICALL1 CTHE-PRINT-PRSO ?CND22: PRINTI " bows and responds """ ICALL2 PRINTUNDER,STR?153 PRINTR """" ?CCL12: CALL1 TO-A-PRSO? RSTACK .FUNCT V-DOMO:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "How very kind!" .FUNCT V-DOZO:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "There is no response." .FUNCT PRE-THROUGH:ANY:0:0 EQUAL? PRSO,ROOMS /FALSE IN? PRSO,ROOMS /FALSE CALL2 ACCESSIBLE?,PRSO ZERO? STACK \FALSE PRINTI "You can't see any " ICALL1 DPRINT-PRSO PRINTR " here." .FUNCT V-THROUGH:ANY:0:0,M IN? PRSO,ROOMS \?CCL3 ICALL PERFORM,V?WALK-TO,PRSO RTRUE ?CCL3: EQUAL? PRSO,ROOMS \?CCL5 CALL2 DO-WALK,P?IN RSTACK ?CCL5: FSET? PRSO,VEHBIT \?CCL7 ICALL2 NEW-VERB,V?BOARD RTRUE ?CCL7: FSET? PRSO,DOORBIT \?CCL9 CALL2 FIND-DOOR,PRSO >M ZERO? M /?CCL12 CALL2 DO-WALK,M RSTACK ?CCL12: PRINT YOU-HAVE-TO PRINT STR?125 PRINTR "the direction you are going." ?CCL9: FSET? PRSO,PERSON \?CCL14 PRINT GOOD-TRICK RTRUE ?CCL14: FSET? PRSO,TAKEBIT /?CCL16 PRINTI "You hit your head against " ICALL1 THE-PRINT-PRSO PRINTR " as you attempt this feat." ?CCL16: IN? PRSO,WINNER \?CCL18 PRINTR "That would involve quite a contortion!" ?CCL18: CALL1 TELL-YUKS RSTACK .FUNCT FIND-DOOR:ANY:1:1,DOOR,DIR,PT,PTS,?PR-DIR,?PR-PT SET '?PR-DIR,65 ?PRG1: DLESS? '?PR-DIR,LOW-DIRECTION /TRUE GETPT HERE,?PR-DIR >?PR-PT ZERO? ?PR-PT /?PRG1 PTSIZE ?PR-PT EQUAL? STACK,DEXIT \?PRG1 GET ?PR-PT,DEXITOBJ EQUAL? STACK,DOOR \?PRG1 RETURN ?PR-DIR .FUNCT PRE-THROW:ANY:0:0 EQUAL? PRSO,ANCHOR,ERASMUS-ANCHOR,MARIKO /FALSE EQUAL? PRSO,SAFETY-LINE,OAR,LIFE-RING /FALSE CALL2 HELD?,PRSO ZERO? STACK \?CCL7 PRINTI "You're not carrying " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL7: EQUAL? PRSO,LARGE-KNIFE,SMALL-KNIFE /FALSE FSET? PRSO,WEARBIT \FALSE CALL2 YOULL-HAVE-TO,STR?154 RSTACK .FUNCT V-THROW:ANY:0:0 ZERO? PRSI /?CCL3 FSET? PRSI,PERSON \?CCL3 IN? PRSO,WINNER \?CCL8 CALL1 IDROP ZERO? STACK /FALSE CALL2 NOT-TRAINED,PRSI RSTACK ?CCL8: ICALL2 SWAP-VERB,V?HIT RTRUE ?CCL3: ZERO? PRSI /?CCL13 EQUAL? PRSI,PSEUDO-OBJECT /?CCL13 FSET? PRSO,WEAPONBIT \?CCL13 ICALL2 SWAP-VERB,V?HIT RTRUE ?CCL13: ZERO? PRSI /?CCL18 FSET? PRSI,DOORBIT /?CCL18 FSET? PRSI,CONTBIT \?CCL18 GETP PRSI,P?CAPACITY ZERO? STACK /?CCL18 ICALL2 NEW-VERB,V?PUT RTRUE ?CCL18: CALL1 IDROP ZERO? STACK /FALSE PRINTR "Thrown." .FUNCT V-THROW-OFF:ANY:0:0 CALL GLOBAL-IN?,LG-SEA,HERE ZERO? STACK /?CCL3 REMOVE PRSO PRINTI "Splash! " ICALL1 CTHE-PRINT-PRSO PRINTR " is gone for good now!" ?CCL3: CALL2 YOU-CANT-X-THAT,STR?155 RSTACK .FUNCT V-TIE:ANY:0:0 ZERO? PRSI \?CCL3 EQUAL? PRSO,YABU-KIMONO /?CCL3 CALL2 HELD?,YABU-KIMONO ZERO? STACK /?CCL3 ICALL PERFORM,V?TIE,PRSO,YABU-KIMONO RTRUE ?CCL3: EQUAL? PRSO,MURA-ROPE \?CCL8 PRINTR "You can't get it away from Mura." ?CCL8: CALL1 TO-A-PRSO? RSTACK .FUNCT V-TIE-UP:ANY:0:0 CALL1 TO-A-PRSO? RSTACK .FUNCT V-TIME:ANY:0:0,X PRINTR "You have no easy way to tell time." .FUNCT V-TORTURE:ANY:0:0 PRINTR "An appalling idea!" .FUNCT NO-EFFECT:ANY:0:0 PRINTR "This has no effect." .FUNCT V-TURN:ANY:0:0 EQUAL? PRSO,INTDIR \?CCL3 EQUAL? SCENE,S-ERASMUS,S-VOYAGE \?CCL3 PRINTR "You must be on the bridge to steer!" ?CCL3: ZERO? PRSI \?CCL7 EQUAL? PRSO,FORESAILS \?CCL7 ICALL PERFORM,V?RAISE,PRSO RTRUE ?CCL7: CALL1 NO-EFFECT RSTACK .FUNCT V-TURN-OVER:ANY:0:0 PRINTI "Moving " ICALL1 THE-PRINT-PRSO PRINTR " reveals nothing." .FUNCT V-TURN-AROUND:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 ICALL PERFORM,V?LOOK-BEHIND,ME RTRUE ?CCL3: FSET? PRSO,PERSON \?CCL5 PRINTI "I wouldn't do that, " ICALL1 THE-PRINT-PRSO PRINTR " might get dizzy." ?CCL5: FSET? PRSO,TAKEBIT /?CCL7 PRINT YOU-CANT PRINTI "turn " ICALL1 THE-PRINT-PRSO PRINTR " around." ?CCL7: PRINTI "Turning " ICALL1 THE-PRINT-PRSO PRINTR " around gives you a new perspective on it, but reveals no new information." .FUNCT V-UNLOCK:ANY:0:0 CALL1 PAST-TENSE? ZERO? STACK /?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: EQUAL? PRSI,FALSE-VALUE,KEY /?CCL7 CALL2 CANT-X-WITH-PRSI,STR?156 RSTACK ?CCL7: FSET? PRSO,LOCKABLE \?CCL9 FSET? PRSO,LOCKED /?CCL12 PRINT STR?131 CRLF RTRUE ?CCL12: IN? KEY,WINNER \?CCL14 FCLEAR PRSO,LOCKED PRINTR "Done." ?CCL14: PRINT STR?132 CRLF RTRUE ?CCL9: CALL1 NO-LOCK RSTACK .FUNCT V-UNTIE:ANY:0:0 CALL1 TO-A-PRSO? RSTACK .FUNCT V-WALK:ANY:0:0,PT,PTS,STR,OBJ,RM ZERO? QCONTEXT /?CCL3 CALL1 PAST-TENSE? ZERO? STACK /?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: CALL1 PAST-TENSE? ZERO? STACK /?CCL8 PRINTR "An interesting fact, indeed." ?CCL8: ZERO? P-WALK-DIR \?CCL10 ICALL2 NEW-VERB,V?WALK-TO RTRUE ?CCL10: FSET? BLACKTHORNE,SITTING \?CCL12 CALL2 YOULL-HAVE-TO,STR?129 RSTACK ?CCL12: GETPT HERE,PRSO >PT ZERO? PT /?CCL14 PTSIZE PT >PTS EQUAL? PTS,NEXIT \?CCL17 GET PT,NEXITSTR PRINT STACK CRLF RETURN M-FATAL ?CCL17: EQUAL? PTS,UEXIT \?CCL19 GETB PT,REXIT >RM JUMP ?CND15 ?CCL19: EQUAL? PTS,FEXIT \?CCL21 GET PT,FEXITFCN CALL STACK >RM ZERO? RM \?CND15 RETURN M-FATAL ?CCL21: EQUAL? PTS,CEXIT \?CCL25 GETB PT,CEXITFLAG VALUE STACK ZERO? STACK /?CCL28 GETB PT,REXIT >RM JUMP ?CND15 ?CCL28: GET PT,CEXITSTR >STR ZERO? STR /?CCL30 PRINT STR CRLF RETURN M-FATAL ?CCL30: ICALL1 CANT-GO RETURN M-FATAL ?CCL25: EQUAL? PTS,DEXIT \?CND15 GET PT,DEXITOBJ >OBJ FSET? OBJ,INVISIBLE \?CCL34 ICALL1 CANT-GO RETURN M-FATAL ?CCL34: FSET? OBJ,OPENBIT /?CTR35 FSET? OBJ,LOCKED /?CCL36 FSET? OBJ,TRYTAKEBIT /?CCL36 ?CTR35: GETB PT,DEXITRM >RM FSET? OBJ,OPENBIT /?CND15 FSET OBJ,OPENBIT PRINTI "You open " ICALL2 THE-PRINT,OBJ PRINTI " and go through." CRLF CRLF ?CND15: EQUAL? SCENE,S-NINJA \?CND45 ZERO? AVOID-CALTROPS? \?CCL49 IN? CALTROPS,HERE \?CCL49 RANDOM 100 LESS? 35,STACK /?CCL54 ICALL2 JIGS-UP,STR?157 RETURN M-FATAL ?CCL36: GET PT,DEXITSTR >STR ZERO? STR /?CCL44 PRINT STR CRLF ICALL2 THIS-IS-IT,OBJ RETURN M-FATAL ?CCL44: ICALL2 TELL-OPEN-CLOSED,OBJ ICALL2 THIS-IS-IT,OBJ RETURN M-FATAL ?CCL54: PRINTI "As you hurry along, you narrowly miss stepping on a caltrop!" CRLF CRLF ?CND45: CALL2 GOTO,RM RSTACK ?CCL49: IN? SMOKE-BOMB,HERE \?CCL56 PRINTI "You try to advance, but the acrid, choking smoke prevents you." CRLF RETURN M-FATAL ?CCL56: IN? FIRE-BOMB,HERE \?CND45 PRINTI "The floor is covering with burning pitch which sticks to your feet and drives you back." CRLF RETURN M-FATAL ?CCL14: EQUAL? PRSO,P?IN,P?OUT \?CCL59 ZERO? P-LAST-OPEN /?CCL59 CALL GLOBAL-IN?,P-LAST-OPEN,HERE ZERO? STACK /?CCL59 ICALL PERFORM,V?THROUGH,P-LAST-OPEN RTRUE ?CCL59: ICALL1 CANT-GO RETURN M-FATAL .FUNCT V-WALK-AROUND:ANY:0:0 PRINTR "Please use compass directions instead." .FUNCT V-WALK-TO:ANY:0:0,DIR,TMP ZERO? PRSO /?CCL3 ZERO? QCONTEXT /?CCL6 CALL1 PAST-TENSE? ZERO? STACK /?CCL6 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL6: EQUAL? PRSO,INTDIR \?CCL11 ICALL2 DO-WALK,P-DIRECTION RTRUE ?CCL11: IN? PRSO,ROOMS \?CCL13 CALL2 NEXT-ROOM?,PRSO >DIR ZERO? DIR /?CCL16 CALL2 DO-WALK,DIR RSTACK ?CCL16: PRINT YOU-HAVE-TO PRINT STR?158 CRLF RTRUE ?CCL13: IN? PRSO,HERE /?CTR17 CALL GLOBAL-IN?,PRSO,HERE ZERO? STACK /?CCL18 ?CTR17: FSET? PRSO,PERSON \?CCL23 FSET? PRSO,PLURAL \?CCL26 PRINTI "They're" JUMP ?CND21 ?CCL26: FSET? PRSO,FEMALE \?CCL28 PRINTI "She's" JUMP ?CND21 ?CCL28: PRINTI "He's" JUMP ?CND21 ?CCL23: PRINTI "It's" ?CND21: PRINTR " here!" ?CCL18: CALL2 META-LOC,PRSO >TMP ZERO? TMP /?CCL30 IN? TMP,ROOMS \?CCL30 ICALL PERFORM,PRSA,TMP RTRUE ?CCL30: PRINTI "I'm not sure how to get to " FSET? PRSO,PERSON \?CCL35 FSET? PRSO,PLURAL \?CCL38 PRINTI "them" JUMP ?CND33 ?CCL38: FSET? PRSO,FEMALE \?CCL40 PRINTI "her" JUMP ?CND33 ?CCL40: PRINTI "him" JUMP ?CND33 ?CCL35: PRINTI "that" ?CND33: PRINTR "." ?CCL3: CALL1 V-WALK-AROUND RSTACK .FUNCT NEXT-ROOM?:ANY:1:2,RM,STRICT?,DIR,PT,PTS,OBJ,?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 \?CCL10 GETB ?PR-PT,REXIT EQUAL? STACK,RM \?CCL10 RETURN ?PR-DIR ?CCL10: EQUAL? PTS,CEXIT \?CCL14 GETB ?PR-PT,REXIT EQUAL? STACK,RM \?CCL14 ZERO? STRICT? \?PRD20 RETURN ?PR-DIR ?PRD20: GETB ?PR-PT,CEXITFLAG VALUE STACK ZERO? STACK /?PRG1 RETURN ?PR-DIR ?CCL14: EQUAL? PTS,DEXIT \?CCL22 GETB ?PR-PT,DEXITRM EQUAL? STACK,RM \?CCL22 GET ?PR-PT,DEXITOBJ >OBJ ZERO? STRICT? \?PRD28 RETURN ?PR-DIR ?PRD28: FSET? OBJ,INVISIBLE /?PRG1 FSET? OBJ,OPENBIT \?PRG1 RETURN ?PR-DIR ?CCL22: EQUAL? PTS,FEXIT \?PRG1 GET ?PR-PT,FEXITFCN CALL STACK,M-ENTER,STRICT? EQUAL? STACK,RM \?PRG1 RETURN ?PR-DIR .FUNCT V-WAIT:ANY:0:0,NUM SET 'NUM,3 EQUAL? PRSO,INTNUM \?CND1 GRTR? P-NUMBER,100 \?CCL5 PRINTI "Too long!" CRLF JUMP ?CND1 ?CCL5: SET 'NUM,P-NUMBER ?CND1: PRINTI "Time passes..." CRLF ?PRG6: DLESS? 'NUM,0 /?REP7 CALL1 CLOCKER ZERO? STACK /?PRG6 ?REP7: SET 'CLOCK-WAIT,TRUE-VALUE RTRUE .FUNCT V-WAIT-FOR:ANY:0:0 EQUAL? PRSO,INTNUM \?CCL3 ICALL2 NEW-VERB,V?WAIT RTRUE ?CCL3: LOC PRSO EQUAL? STACK,HERE,WINNER \?CCL5 ICALL2 CPRINT-HE/SHE,PRSO PRINTR "'s already here!" ?CCL5: PRINTR "You may well wait quite a while." .FUNCT V-WAVE:ANY:0:0 CALL2 HELD?,PRSO ZERO? STACK \?CCL3 FSET? PRSO,BODY-PART \?CCL3 CALL1 YOU-ARENT-HOLDING RSTACK ?CCL3: CALL2 HACK-HACK,STR?159 RSTACK .FUNCT YOU-ARENT-HOLDING:ANY:0:0 PRINTI "You aren't holding " ICALL1 THE-PRINT-PRSO PRINTR "." .FUNCT V-WAVE-AT:ANY:0:0 CALL2 HELD?,PRSO ZERO? STACK \?CCL3 FSET? PRSO,BODY-PART \?CCL3 CALL1 YOU-ARENT-HOLDING RSTACK ?CCL3: EQUAL? PRSO,HEAD \?CCL7 ZERO? PRSI \?CCL10 ICALL2 PERFORM,V?NO RTRUE ?CCL10: FSET? PRSI,PERSON \?CCL12 SET 'WINNER,PRSI ICALL2 PERFORM,V?NO SET 'WINNER,PLAYER RTRUE ?CCL12: PRINTI "Shaking one's head at " ICALL1 PRINTA-PRSI PRINTR " accomplishes little." ?CCL7: ZERO? PRSI /?CCL14 FSET? PRSI,PERSON \?CCL14 ICALL PERFORM,V?WAVE-AT,PRSI RTRUE ?CCL14: EQUAL? PRSO,ME \?CCL18 PRINTR "What a peculiar idea!" ?CCL18: ICALL1 CTHE-PRINT-PRSO ICALL2 PRINT-IS/ARE,PRSO PRINTR "n't likely to respond." .FUNCT V-DRESS:ANY:0:0,OBJ,LAST ?PRG1: SET 'LAST,OBJ SET 'OBJ,FALSE-VALUE CALL2 HELD?,CLOTHES ZERO? STACK /?CCL5 FSET? CLOTHES,WEARBIT /?CCL5 SET 'OBJ,CLOTHES JUMP ?CND3 ?CCL5: CALL2 HELD?,BOOTS ZERO? STACK /?CCL9 FSET? BOOTS,WEARBIT /?CCL9 SET 'OBJ,BOOTS JUMP ?CND3 ?CCL9: CALL2 HELD?,KIMONO ZERO? STACK /?CCL13 FSET? KIMONO,WEARBIT /?CCL13 SET 'OBJ,KIMONO JUMP ?CND3 ?CCL13: CALL2 HELD?,SOCKS ZERO? STACK /?CCL17 FSET? SOCKS,WEARBIT /?CCL17 SET 'OBJ,SOCKS JUMP ?CND3 ?CCL17: CALL2 ACCESSIBLE?,SANDALS ZERO? STACK /?CND3 FSET? SANDALS,WEARBIT /?CND3 SET 'OBJ,SANDALS ?CND3: ZERO? OBJ /?CCL25 FSET OBJ,RMUNGBIT ICALL PERFORM,V?WEAR,OBJ FCLEAR OBJ,RMUNGBIT FSET? OBJ,WEARBIT /?PRG1 RTRUE ?CCL25: ZERO? LAST \TRUE PRINTR "You don't have anything to wear!" .FUNCT V-WEAR:ANY:0:0 FSET? PRSO,WEARBIT \?CCL3 PRINT YOU-ARE PRINT PERIOD RTRUE ?CCL3: FSET? PRSO,WEARABLE \?CCL5 GETP PRSO,P?OWNER EQUAL? PLAYER,STACK \?CCL8 CALL2 HELD?,PRSO ZERO? STACK \?CCL11 CALL2 ITAKE,TRUE-VALUE ZERO? STACK /TRUE ?CCL11: FSET PRSO,WEARBIT PRINTI "You put on " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL8: PRINTR "They don't fit you." ?CCL5: CALL2 YOU-CANT-X-PRSO,STR?160 RSTACK .FUNCT V-YAWN:ANY:0:0 CALL1 V-LEAN-ON RSTACK .FUNCT V-YELL-AT:ANY:0:0 FSET? PRSO,PERSON \FALSE FSET? PRSO,DEAD /FALSE PRINTI "You yell at " ICALL1 DPRINT-PRSO PRINTI " for a while, which improves your disposition, but not " ICALL2 PRINT-HIS/HER,PRSO PRINTR "." .FUNCT V-YELL:ANY:0:0 EQUAL? PRSO,INTQUOTE \?CND1 PRINTI "You yell at out, loud and strong. " ?CND1: PRINTR "Raising one's voice is very bad manners and very unsettling to the harmony of those around you." .FUNCT V-LAUGH:ANY:0:0 ZERO? PRSO \?CCL3 PRINTR "Very funny." ?CCL3: FSET? PRSO,PERSON \?CCL5 FSET? PRSO,DEAD /?CCL5 ICALL1 CTHE-PRINT-PRSO PRINTR " doesn't seem to get the joke." ?CCL5: PRINTR "Your brand of humor is unusual." .FUNCT ITAKE:ANY:0:2,VB,OBJ,CNT,?TMP1 ASSIGNED? 'VB /?CND1 SET 'VB,TRUE-VALUE ?CND1: ZERO? OBJ \?CND3 SET 'OBJ,PRSO ?CND3: FSET? BLACKTHORNE,SITTING \?CCL7 FSET? PRSO,TAKEBIT \?CCL7 EQUAL? PRSO,CLOTHES,QUILT,TRAY /?CCL7 EQUAL? PRSO,FOOD,CHOPSTICKS,CUP /?CCL7 EQUAL? PRSO,GRUEL,GROUND,SWORDS /?CCL7 ZERO? VB /FALSE PRINTI "You are " FSET? WINNER,SURFACEBIT \?CCL18 PRINTI "lying" JUMP ?CND16 ?CCL18: PRINTI "sitting" ?CND16: PRINTI " down, and " ICALL1 THE-PRINT-PRSO ICALL2 PRINT-IS/ARE,PRSO PRINTI " out of reach." CRLF RFALSE ?CCL7: FSET? OBJ,TAKEBIT /?CCL20 ZERO? VB /FALSE FSET? OBJ,PERSON \?CCL25 FSET? OBJ,DEAD /?CCL25 ICALL2 CPRINT-HE/SHE,OBJ PRINTI " twist" ICALL2 PRINT-PLURAL,OBJ PRINTI " away from you." CRLF RFALSE ?CCL25: ICALL1 TELL-YUKS RFALSE ?CCL20: IN? OBJ,WINNER \?CCL29 PRINT YOU-HAVE ICALL2 THE-PRINT,OBJ PRINT PERIOD RFALSE ?CCL29: IN? WINNER,OBJ \?CCL31 PRINTI "You are " FSET? OBJ,SURFACEBIT \?CCL34 PRINTI "on" JUMP ?CND32 ?CCL34: PRINTI "in" ?CND32: PRINTR " it." ?CCL31: LOC OBJ IN? STACK,WINNER /?CCL36 CALL2 WEIGHT,OBJ >?TMP1 CALL2 WEIGHT,WINNER ADD ?TMP1,STACK GRTR? STACK,LOAD-ALLOWED \?CCL36 ZERO? VB \?CCL40 RETURN M-FATAL ?CCL40: CALL2 CCOUNT,WINNER ZERO? STACK \?CCL43 PRINTI "It's too heavy to carry" JUMP ?CND41 ?CCL43: PRINTI "Your load is too heavy" ?CND41: GETP WINNER,P?HEALTH LESS? STACK,4 \?CCL46 PRINTI ", especially in light of your exhaustion." JUMP ?CND44 ?CCL46: PRINTC 46 ?CND44: CRLF RETURN M-FATAL ?CCL36: CALL2 CCOUNT,WINNER >CNT GRTR? CNT,FUMBLE-NUMBER \?CCL48 ZERO? VB \?CCL50 RETURN M-FATAL ?CCL50: PRINTI "You're holding too many things and can't quite get them all arranged to take it as well." CRLF RETURN M-FATAL ?CCL48: MOVE OBJ,WINNER FSET OBJ,TOUCHBIT FCLEAR OBJ,WEARBIT FCLEAR OBJ,NDESCBIT RTRUE .FUNCT V-NOTIFY:ANY:0:0 ZERO? NOTIFY-FLAG /?PRT1 SET 'NOTIFY-FLAG,0 JUMP ?PRE3 ?PRT1: SET 'NOTIFY-FLAG,1 ?PRE3: ZERO? NOTIFY-FLAG /?CCL6 PRINTR "Notifying when points are scored." ?CCL6: PRINTR "Keeping quiet when points are scored." .FUNCT SCORE-OBJECT:ANY:0:2,OBJ1,OBJ2 CALL2 SCORE-OBJECT?,OBJ1 >OBJ1 ZERO? OBJ2 /?CND1 CALL2 SCORE-OBJECT?,OBJ2 >OBJ2 ?CND1: ZERO? OBJ1 \?CCL4 ZERO? OBJ2 /TRUE ?CCL4: ZERO? NOTIFY-FLAG /TRUE CRLF PRINTR "[Your score just went up.]" .FUNCT SCORE-OBJECT?:ANY:1:1,OBJ FSET? OBJ,SCOREBIT \FALSE INC 'SCORE FCLEAR OBJ,SCOREBIT GET SCENE-LOCS,SCENE >OBJ ZERO? OBJ /TRUE GETPT OBJ,P?SCORE >OBJ ZERO? OBJ /TRUE GETB OBJ,0 ADD 1,STACK PUTB OBJ,0,STACK RTRUE .FUNCT IDROP:ANY:0:0 FSET? PRSO,BODY-PART /?CTR2 CALL2 HELD?,PRSO ZERO? STACK \?CCL3 ?CTR2: PRINT STR?61 PRINTI "carrying " ICALL1 THE-PRSO RFALSE ?CCL3: IN? PRSO,WINNER /?CCL7 LOC PRSO FSET? STACK,OPENBIT /?CCL7 ICALL2 THIS-IS-IT,PRSO LOC PRSO ICALL2 TELL-OPEN-CLOSED,STACK RFALSE ?CCL7: FSET? PRSO,WEARBIT \?CCL11 ICALL1 HAVE-TO-TAKE-OFF RFALSE ?CCL11: FCLEAR PRSO,WEARBIT LOC WINNER MOVE PRSO,STACK RTRUE .FUNCT HAVE-TO-TAKE-OFF:ANY:0:1,OBJ ASSIGNED? 'OBJ /?CND1 SET 'OBJ,PRSO ?CND1: PRINT YOU-HAVE-TO PRINT STR?161 ICALL2 THE-PRINT,OBJ PRINTR " first." .FUNCT CCOUNT:ANY:1:1,OBJ,CNT,X,?PR-X FIRST? OBJ >?PR-X \FALSE ?PRG6: FSET? ?PR-X,WEARBIT /?CND8 INC 'CNT ?CND8: NEXT? ?PR-X >?PR-X /?PRG6 RETURN CNT .FUNCT WEIGHT:ANY:1:1,OBJ,CONT,WT,?PR-CONT FSET? OBJ,WEARBIT /FALSE FIRST? OBJ >?PR-CONT \?REP5 ?PRG8: CALL2 WEIGHT,?PR-CONT ADD WT,STACK >WT NEXT? ?PR-CONT >?PR-CONT /?PRG8 ?REP5: GETP OBJ,P?SIZE ADD WT,STACK RSTACK .FUNCT GOTO:ANY:1:2,RM,V?,OLIT ASSIGNED? 'V? /?CND1 SET 'V?,TRUE-VALUE ?CND1: SET 'OHERE,RM ZERO? HERE /?CND3 GETP HERE,P?ACTION ICALL STACK,M-LEAVE ?CND3: SET 'OHERE,HERE SET 'OLIT,LIT EQUAL? OHERE,RM /?CND5 ICALL1 B-STAND ?CND5: LOC WINNER IN? STACK,ROOMS /?CCL9 LOC WINNER MOVE STACK,RM JUMP ?CND7 ?CCL9: MOVE WINNER,RM ?CND7: SET 'HERE,RM CALL2 LIT?,HERE >LIT ICALL1 V-INTRODUCE GETP HERE,P?ACTION CALL STACK,M-ENTER EQUAL? STACK,M-FATAL /TRUE EQUAL? HERE,RM \TRUE ZERO? V? /TRUE ICALL1 V-FIRST-LOOK RTRUE .FUNCT I-STUPID-MOVE:ANY:0:0 SET 'STUPID-MOVE,FALSE-VALUE RETURN STUPID-MOVE .FUNCT JIGS-UP?:ANY:1:2,N,DESC EQUAL? STUPID-MOVE,N /TRUE ICALL QUEUE,I-STUPID-MOVE,2 SET 'STUPID-MOVE,N ZERO? DESC /?CCL6 PRINT DESC CRLF RFALSE ?CCL6: PRINTI "At the last second, you stop and try to think of something to do that's less likely to be fatal." CRLF RFALSE .FUNCT JIGS-UP:ANY:0:1,DESC INC 'MOVES SET 'WINNER,PLAYER ZERO? DESC /?CND1 PRINT DESC ?CND1: PRINTI " **** You have died **** " EQUAL? SCENE,S-ERASMUS \?CCL5 PRINTI "Are the Japans ahead? Now you will never know. All pilots fear death by drowning more than any other death, and most die by drowning. A terrible fate." CRLF JUMP ?CND3 ?CCL5: PRINTI "Perhaps in a future existence you will be reborn samurai. Perhaps, as Father Sebastio would predict, you will burn in hell. Perhaps you will ascend to heaven. Perhaps none of these things will happen. " ICALL2 PRINTUNDER,STR?162 CRLF ?CND3: CRLF CALL1 FINISH RSTACK .FUNCT MOVE-ALL:ANY:1:2,FROM,TO,F,N,1ST? FIRST? FROM >F /?PRG2 ?PRG2: ZERO? F /?REP3 NEXT? F >N /?BOGUS7 ?BOGUS7: SET '1ST?,F ZERO? TO /?CCL10 MOVE F,TO JUMP ?CND8 ?CCL10: REMOVE F ?CND8: FCLEAR F,WEARBIT SET 'F,N JUMP ?PRG2 ?REP3: RETURN 1ST? .FUNCT THIS-IS-IT:ANY:1:1,OBJ FSET? OBJ,DONT-IT /FALSE EQUAL? OBJ,IT,HIM,HER /TRUE EQUAL? OBJ,WHAT,ROOMS /TRUE FSET? OBJ,PERSON /?CTR8 EQUAL? OBJ,LG-ERASMUS \?CCL9 ?CTR8: EQUAL? OBJ,LG-RODRIGUES \?PRD15 IN? RODRIGUES,IN-THE-SEA /?CCL13 ?PRD15: FSET? OBJ,DEAD \?CND12 ?CCL13: EQUAL? P-IT-OBJECT,OBJ /?CND18 FCLEAR IT,TOUCHBIT ?CND18: SET 'P-IT-OBJECT,OBJ ?CND12: FSET? OBJ,PLURAL /?CTR21 EQUAL? OBJ,GRAYS,BROWNS \?CCL22 ?CTR21: EQUAL? P-THEM-OBJECT,OBJ /?CND25 FCLEAR THEM,TOUCHBIT ?CND25: SET 'P-THEM-OBJECT,OBJ RTRUE ?CCL22: FSET? OBJ,FEMALE \?CCL28 EQUAL? P-HER-OBJECT,OBJ /?CND29 FCLEAR HER,TOUCHBIT ?CND29: SET 'P-HER-OBJECT,OBJ RTRUE ?CCL28: EQUAL? P-HIM-OBJECT,OBJ /?CND31 FCLEAR HIM,TOUCHBIT ?CND31: SET 'P-HIM-OBJECT,OBJ RTRUE ?CCL9: FSET? OBJ,PLURAL \?CCL34 EQUAL? P-THEM-OBJECT,OBJ /?CND35 FCLEAR THEM,TOUCHBIT ?CND35: SET 'P-THEM-OBJECT,OBJ RTRUE ?CCL34: EQUAL? P-IT-OBJECT,OBJ /?CND37 FCLEAR IT,TOUCHBIT ?CND37: SET 'P-IT-OBJECT,OBJ RTRUE .FUNCT INTRINSIC?:ANY:1:1,OBJ EQUAL? OBJ,ME,HANDS,HEAD /TRUE EQUAL? OBJ,EYES,FEET /TRUE RFALSE .FUNCT ACCESSIBLE?:ANY:1:1,OBJ,L,?TMP1 LOC OBJ >L FSET? OBJ,INVISIBLE /FALSE EQUAL? OBJ,PSEUDO-OBJECT \?CCL5 EQUAL? LAST-PSEUDO-LOC,HERE /TRUE RFALSE ?CCL5: ZERO? L /FALSE EQUAL? L,GLOBAL-OBJECTS,WINNER,HERE /TRUE LOC WINNER EQUAL? L,STACK /TRUE CALL GLOBAL-IN?,OBJ,HERE ZERO? STACK \TRUE CALL2 META-LOC,OBJ >?TMP1 LOC WINNER EQUAL? ?TMP1,HERE,STACK \FALSE FSET? L,OPENBIT \FALSE CALL2 ACCESSIBLE?,L ZERO? STACK /FALSE RTRUE .FUNCT VISIBLE?:ANY:1:1,OBJ,L LOC OBJ >L CALL2 ACCESSIBLE?,OBJ ZERO? STACK \TRUE CALL2 SEE-INSIDE?,L ZERO? STACK /FALSE CALL2 VISIBLE?,L ZERO? STACK /FALSE RTRUE .FUNCT HELD?:ANY:1:2,OBJ,WHO ZERO? WHO \?CND1 SET 'WHO,PLAYER ?CND1: ZERO? OBJ /FALSE EQUAL? PRSA,V?GIVE \?CCL7 FSET? OBJ,CANT-HOLD /TRUE ?CCL7: EQUAL? OBJ,WHO,ME /TRUE FSET? OBJ,BODY-PART /TRUE IN? OBJ,WHO /TRUE IN? OBJ,ROOMS /FALSE IN? OBJ,GLOBAL-OBJECTS /FALSE LOC OBJ CALL HELD?,STACK,WHO RSTACK .FUNCT SEE-INSIDE?:ANY:1:1,OBJ ZERO? OBJ /FALSE FSET? OBJ,INVISIBLE /FALSE FSET? OBJ,TRANSBIT /TRUE FSET? OBJ,OPENBIT /TRUE RFALSE .FUNCT GLOBAL-IN?:ANY:2:2,OBJ1,OBJ2,TEE ZERO? OBJ2 /FALSE GETPT OBJ2,P?GLOBAL >TEE ZERO? TEE /FALSE PTSIZE TEE DIV STACK,2 INTBL? OBJ1,TEE,STACK /?CND1 ?CND1: RSTACK .FUNCT DO-WALK:ANY:1:1,DIR SET 'P-WALK-DIR,DIR CALL PERFORM,V?WALK,DIR RSTACK .FUNCT HACK-HACK:ANY:1:1,STR PRINT STR PRINTC 32 ICALL1 THE-PRINT-PRSO PRINTR " has no effect." .FUNCT TELL-YUKS:ANY:0:0 CALL2 PICK-ONE,YUKS PRINT STACK CRLF RTRUE .FUNCT PRE-PRY:ANY:0:0 ZERO? PRSI /FALSE CALL2 INTRINSIC?,PRSI ZERO? STACK \FALSE CALL2 HELD?,PRSI ZERO? STACK \FALSE IN? WINNER,PRSI /FALSE FSET? PRSI,VEHBIT /FALSE CALL2 NOT-HOLDING,PRSI RSTACK .FUNCT V-PRY:ANY:0:0 CALL1 NO-EFFECT RSTACK .FUNCT V-BURY:ANY:0:0 FSET? PRSO,PERSON \?CCL3 FSET? PRSO,DEAD \?CCL6 PRINTR "Cremation is more normal here." ?CCL6: PRINTI "Bury " ICALL2 PRINT-HIM/HER,PRSO PRINTR " alive? How barbaric." ?CCL3: PRINTR "You might not be able to find it again." .FUNCT V-YES:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ZERO? PRSO /?CCL5 EQUAL? PRSO,HEAD /?CCL5 PRINTR "You aren't making much sense." ?CCL5: PRINTR "No question was asked that required an answer." .FUNCT V-NO:ANY:0:0 CALL1 V-YES RSTACK .FUNCT V-BUY:ANY:0:0 CALL2 UNINTERESTED,PRSI RSTACK .FUNCT PRE-SSELL:ANY:0:0 ICALL2 SWAP-VERB,V?SELL RTRUE .FUNCT V-SSELL:ANY:0:0 RTRUE .FUNCT V-SELL:ANY:0:0 CALL2 UNINTERESTED,PRSI RSTACK .FUNCT PRE-TELL-ABOUT:ANY:0:0 EQUAL? PRSO,ME \FALSE ICALL PERFORM,V?TELL-ME-ABOUT,PRSI RTRUE .FUNCT V-TELL-ABOUT:ANY:0:0 CALL2 HELD?,PRSI ZERO? STACK /?CCL3 ICALL2 SWAP-VERB,V?SHOW RTRUE ?CCL3: FSET? PRSO,JAPANESEBIT \?CCL5 EQUAL? PRSO,MARIKO /?CCL5 CALL2 DIFFICULTY,PRSO RSTACK ?CCL5: CALL2 UNINTERESTED,PRSO RSTACK .FUNCT DIFFICULTY:ANY:1:1,WHO PRINTI "You have a great deal of difficulty making yourself understood. " ICALL2 CTHE-PRINT,WHO PRINTR " doesn't seem to understand you very well." .FUNCT V-TELL-ME-ABOUT:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? WINNER,PLAYER \?CCL5 ICALL PERFORM,V?WHAT,PRSO RTRUE ?CCL5: FSET? WINNER,JAPANESEBIT \?CCL7 EQUAL? WINNER,MARIKO /?CCL7 CALL2 DIFFICULTY,WINNER RSTACK ?CCL7: ICALL2 CTHE-PRINT,WINNER PRINTR " doesn't seem to have anything to say about that." .FUNCT V-TRADE:ANY:0:0 ZERO? PRSI /?CCL3 FSET? PRSI,PERSON \?CCL3 CALL2 UNINTERESTED,PRSI RSTACK ?CCL3: EQUAL? WINNER,PLAYER \?CCL7 ZERO? PRSI /?CCL7 FSET? PRSO,PERSON /?CCL7 PRINTR "No one here is interested in trading." ?CCL7: CALL1 V-BARGAIN RSTACK .FUNCT V-ERASE:ANY:0:0 CALL1 TELL-YUKS RSTACK .FUNCT V-ADMIRE:ANY:0:0 PRINTR "Your taste is unusual." .FUNCT V-BARGAIN:ANY:0:0 PRINTR "A preoccupation with money and trading is inappropriate in this society, very uncultured." .FUNCT V-REPAIR:ANY:0:0 FSET? PRSO,RMUNGBIT \?CCL3 PRINTR "You don't know how." ?CCL3: FSET? PRSO,PERSON \?CCL5 PRINTR "You're a pilot, not a doctor." ?CCL5: ICALL1 CTHE-PRINT-PRSO PRINTR " isn't broken." .FUNCT V-LOOK-UP:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 PRINTR "Don't get a sore neck." ?CCL3: EQUAL? PRSO,INTQUOTE \?CCL5 CALL2 ACCESSIBLE?,DICTIONARY ZERO? STACK /?CCL5 ICALL PERFORM,PRSA,PRSO,DICTIONARY RTRUE ?CCL5: ICALL2 NEW-VERB,V?WHAT RTRUE .FUNCT V-PLUG-IN:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?166 RSTACK .FUNCT V-UNPLUG:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?167 RSTACK .FUNCT V-WALK-UNDER:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 CALL2 DO-WALK,P?DOWN RSTACK ?CCL3: PRINTI "Only a snake could get under " ICALL1 PRINTA-PRSO PRINTR "!" .FUNCT V-SCARE:ANY:0:0 PRINTI "I don't think you scared " ICALL1 THE-PRINT-PRSO PRINTR " very much." .FUNCT V-WEDGE:ANY:0:0 PRINT YOU-CANT PRINTI "wedge open " ICALL1 PRINTA-PRSO PRINTI " with " ICALL1 PRINTA-PRSI PRINT PERIOD RTRUE .FUNCT PRE-SWEDGE:ANY:0:0 ICALL2 SWAP-VERB,V?WEDGE RTRUE .FUNCT V-SWEDGE:ANY:0:0 RTRUE .FUNCT V-PUT-BETWEEN:ANY:0:0 PRINT YOU-CANT PRINTI "put " ICALL1 PRINTA-PRSO PRINTI " between " ICALL1 PRINTA-PRSI PRINT PERIOD RTRUE .FUNCT V-TASTE:ANY:0:0 FSET? PRSO,PERSON \?CCL3 PRINTR "You have got to be kidding." ?CCL3: PRINTI "It tastes exactly as you'd expect " ICALL1 PRINTA-PRSO PRINTR " to taste, only worse." .FUNCT V-DIE:ANY:0:0 ICALL PERFORM,V?KILL,ME RTRUE .FUNCT V-COOK:ANY:0:0 PRINTR "Most people cook things in ovens." .FUNCT V-DRIVE-ON:ANY:0:0 FSET? PRSI,PERSON \?CCL3 ICALL1 CTHE-PRINT-PRSI PRINTR " moves out of the way." ?CCL3: PRINT GOOD-TRICK RTRUE .FUNCT V-DRIVE-TO:ANY:0:0 IN? WINNER,PRSO \?CCL3 EQUAL? PRSI,INTDIR \?CCL3 CALL2 DO-WALK,P-DIRECTION RSTACK ?CCL3: PRINT GOOD-TRICK RTRUE .FUNCT V-STEP-ON:ANY:0:0 FSET? PRSO,VEHBIT \?CCL3 ICALL2 NEW-VERB,V?BOARD RTRUE ?CCL3: PRINT WASTE-OF-TIME RTRUE .FUNCT V-STOP:ANY:0:0 PRINT NOTHING-HAPPENS RTRUE .FUNCT V-RELEASE:ANY:0:0 ICALL2 NEW-VERB,V?DROP RTRUE .FUNCT V-PUSH-DOWN:ANY:0:0 CALL2 PUSH-FOO,STR?168 RSTACK .FUNCT V-PUSH-UP:ANY:0:0 CALL2 PUSH-FOO,STR?169 RSTACK .FUNCT V-PUSH-OUT:ANY:0:0 CALL2 PUSH-FOO,STR?170 RSTACK .FUNCT PUSH-FOO:ANY:1:1,DIR EQUAL? PRSI,ROOMS \?CCL3 PRINTI "You push " ICALL1 THE-PRINT-PRSO PRINTR ", but nothing happens." ?CCL3: PRINT YOU-CANT PRINTI "push " ICALL1 THE-PRINT-PRSO PRINTC 32 PRINT DIR PRINTC 32 ICALL1 THE-PRINT-PRSI PRINTR "." .FUNCT V-PRAY:ANY:0:0 PRINTR "You know that in any Catholic court in the world you would have been damned long since for heresy. And in most, if not all, Protestant courts. But you pray anyway." .FUNCT PRE-SPUT-ON:ANY:0:0 ICALL2 SWAP-VERB,V?PUT-ON RTRUE .FUNCT V-SPUT-ON:ANY:0:0 RTRUE .FUNCT V-LOVE:ANY:0:0 PRINTR "Your feelings aren't reciprocated." .FUNCT V-THOU:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "How formal." .FUNCT V-WRITE:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?171 RSTACK .FUNCT V-RING:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?172 RSTACK .FUNCT V-BOW:ANY:0:0,W CALL1 B-LYING? ZERO? STACK /?CCL3 PRINTR "You can't bow while lying down!" ?CCL3: EQUAL? PRSO,FALSE-VALUE,ROOMS,HEAD \?CCL5 ZERO? OPPONENT /?CCL8 IN? OPPONENT,HERE \?CCL8 SET 'W,OPPONENT JUMP ?CND6 ?CCL8: ZERO? QCONTEXT /?CCL12 IN? QCONTEXT,HERE \?CCL12 SET 'W,QCONTEXT JUMP ?CND6 ?CCL12: CALL FIND-IN,HERE,JAPANESEBIT >W ?CND6: ZERO? W /?CCL17 ICALL PERFORM,V?BOW,W RTRUE ?CCL17: PRINTR "Good practice!" ?CCL5: EQUAL? PRSO,ME \?CCL19 PRINTR "An action not unlike clapping with one hand." ?CCL19: FSET? PRSO,PERSON \?CCL21 FSET? PRSO,DEAD \?CCL24 PRINTI "You show your respect for the dead " ICALL1 DPRINT-PRSO PRINTR "." ?CCL24: FSET? PRSO,DUTCHBIT \?CCL26 PRINTI """What are you, Pilot? Some kind of God-cursed courtier?"" grumbles " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL26: ICALL1 CTHE-PRINT-PRSO PRINTR " returns your bow, instinctively knowing exactly the correct degree of deference to show." ?CCL21: PRINTI "You show " ICALL1 THE-PRINT-PRSO PRINTR " all due respect." .FUNCT V-SORRY:ANY:0:0 ZERO? PRSO /?CCL3 FSET? PRSO,PERSON \?CCL3 ICALL2 NEW-WINNER-PRSO,PRSA RTRUE ?CCL3: PRINTR "I'd be sorry, too." .FUNCT V-PISS:ANY:0:0 ZERO? PRSO /?CCL3 FSET? PRSO,PERSON /?CTR2 FSET? PRSO,BODY-PART \?CCL3 ?CTR2: PRINTI "You decide not to do that to " ICALL1 THE-PRINT-PRSO PRINTR ". It's very bad manners." ?CCL3: FSET? PRSO,FOODBIT /?CTR8 EQUAL? PRSO,FLAGON,CUP \?CCL9 ?CTR8: PRINTR "What a disgusting idea." ?CCL9: EQUAL? SCENE,S-ERASMUS \?CCL13 PRINTR "You feel much better, now." ?CCL13: FSET? HERE,OUTSIDE \?CCL15 PRINTR "As you have seen the Japanese do, you turn politely away from any possible watchers and then do your business." ?CCL15: PRINTR "What a barbaric idea! You decide to hold on a little longer." .FUNCT V-LOAD:ANY:0:0 ZERO? PRSO \?CCL3 CALL2 HELD?,PISTOL ZERO? STACK /?CCL3 ICALL PERFORM,V?LOAD,PISTOL RTRUE ?CCL3: PRINTR "You can't load that." .FUNCT V-STRAIGHTEN:ANY:0:0 PRINTR "You can't straighten that!" .FUNCT V-LAUNCH:ANY:0:0 PRINTR "You can't launch anything here." .FUNCT V-BLESS:ANY:0:0 FSET? PRSO,DEAD \?CCL3 PRINTR "You can't be sure it does any good, but you pray that it's at least the right thing to do." ?CCL3: PRINTR "What an odd thing to do." .FUNCT V-MAKE:ANY:0:0 EQUAL? PRSO,SIGN-OF-CROSS \?CCL3 ZERO? PRSI \?CCL6 PRINTR "An unusual gesture for someone of your religious beliefs." ?CCL6: FSET? PRSI,PERSON \?CCL8 ICALL PERFORM,V?BLESS,PRSI RTRUE ?CCL8: PRINTI "It's generally considered blasphemous to make the sign of the cross over " ICALL1 PRINTA-PRSI PRINTR "." ?CCL3: PRINTI "You can't make " ICALL1 PRINTA-PRSO PRINTR "!" .FUNCT V-ACT:ANY:0:0 FSET? PRSO,PERSON \?CCL3 PRINTR "Your imitation is unconvincing." ?CCL3: PRINTI "You will never make it in " ICALL2 PRINTUNDER,STR?173 PRINTR " plays, that's certain." .FUNCT V-DANCE:ANY:0:0 ZERO? PRSO /?CCL3 ICALL1 CTHE-PRINT-PRSO PRINTR " doesn't seem to want to dance." ?CCL3: PRINTR "You dance foolishly for a while, then stop, embarrassed." .FUNCT V-TEAR:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?174 RSTACK .FUNCT V-SHIP:ANY:0:0 CALL2 YOU-CANT-X-THAT,STR?175 RSTACK .FUNCT V-SORT:ANY:0:0 ICALL1 CTHE-PRINT-PRSO PRINTR " seems pretty well sorted already." .FUNCT V-ROW:ANY:0:0 EQUAL? HERE,MAIN-DECK,GALLEY \?CCL3 PRINTI "You could as easily sail the " ICALL2 PRINTUNDER,STR?7 PRINTR " by blowing on the sails." ?CCL3: LOC WINNER FSET? STACK,VEHBIT /?CCL5 PRINTR "You aren't in a boat!" ?CCL5: EQUAL? PRSI,INTDIR \?CCL7 IN? WINNER,PRSO \?CCL10 ICALL2 DO-WALK,P-DIRECTION RTRUE ?CCL10: PRINTI "You aren't in " ICALL1 THE-PRINT-PRSO PRINTR "!" ?CCL7: EQUAL? PRSO,INTDIR \?CCL12 ICALL2 DO-WALK,P-DIRECTION RTRUE ?CCL12: ZERO? PRSI /?CCL14 IN? WINNER,PRSO \?CCL17 ICALL PERFORM,V?WALK-TO,PRSI RTRUE ?CCL17: PRINTI "You aren't in " ICALL1 THE-PRINT-PRSO PRINTR "!" ?CCL14: ZERO? PRSO \?CCL19 PRINTR "Gently down the stream..." ?CCL19: FSET? PRSO,VEHBIT \?CCL21 IN? WINNER,PRSO /?CCL24 PRINTI "You aren't in " ICALL1 THE-PRINT-PRSO PRINTR "!" ?CCL24: PRINT YOU-HAVE-TO PRINT STR?158 CRLF RTRUE ?CCL21: ZERO? PRSO /FALSE PRINTR "You can't row that!" .FUNCT V-TAKE-OVER:ANY:0:0 PRINTR "There's nothing to take over here!" .FUNCT V-SHUT-UP:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 PRINTR "You stifle yourself." ?CCL3: ICALL1 CTHE-PRINT-PRSO PRINTR " doesn't respond." .FUNCT V-USE:ANY:0:0 PRINT YOU-HAVE-TO PRINT STR?125 PRINTI "how you want to use " ICALL1 THE-PRINT-PRSO PRINTR "." .FUNCT V-STEER-BY:ANY:0:0 PRINTR "You'll get nowhere that way!" .FUNCT FORMAL-SCENE?:ANY:0:0 EQUAL? SCENE,S-TORANAGA,S-MARIKO,S-ESCAPE /TRUE EQUAL? SCENE,S-OCHIBA,S-DEPARTURE,S-SEPPUKU /TRUE EQUAL? SCENE,S-AFTERMATH /TRUE RFALSE .FUNCT V-STRIP:ANY:0:0,F,N,1ST?,LAST FIRST? WINNER >F /?BOGUS1 ?BOGUS1: SET '1ST?,TRUE-VALUE CALL1 FORMAL-SCENE? ZERO? STACK /?PRG5 PRINTR "You would expose yourself to ridicule." ?PRG5: ZERO? F /?CCL9 NEXT? F >N /?BOGUS10 ?BOGUS10: FSET? F,WEARBIT \?CND11 ZERO? LAST /?CND13 ZERO? 1ST? /?CCL17 SET '1ST?,FALSE-VALUE PRINT STR?176 JUMP ?CND15 ?CCL17: PRINTC 44 ?CND15: PRINTC 32 ICALL2 THE-PRINT,LAST ?CND13: SET 'LAST,F FCLEAR F,WEARBIT ?CND11: SET 'F,N JUMP ?PRG5 ?CCL9: ZERO? LAST /?CCL20 ZERO? 1ST? /?CCL23 SET '1ST?,FALSE-VALUE PRINT STR?176 JUMP ?CND21 ?CCL23: PRINTI ", and" ?CND21: PRINTC 32 ICALL2 THE-PRINT,LAST PRINTR "." ?CCL20: PRINTR "You aren't wearing anything." .FUNCT V-TRANSLATE:ANY:0:0 CALL2 HELD?,DICTIONARY ZERO? STACK /?CCL3 ICALL PERFORM,V?LOOK-UP,PRSO,DICTIONARY RTRUE ?CCL3: LOC DICTIONARY ZERO? STACK /?CCL5 PRINTR "You should use the dictionary." ?CCL5: PRINTR "It's still unintelligible." .FUNCT SETUP-ANSWER:ANY:1:1,STR EQUAL? STR,ORPHAN-ANSWER /?CND1 SET 'ORPHAN-ANSWER,STR ZERO? STR /?CND1 ICALL2 SETUP-ORPHAN,ORPHAN-ANSWER ?CND1: ZERO? STR /?CCL7 CALL QUEUE,I-SETUP-ANSWER,-1,TRUE-VALUE RSTACK ?CCL7: CALL2 DEQUEUE,I-SETUP-ANSWER RSTACK .FUNCT I-SETUP-ANSWER:ANY:0:0 ZERO? ORPHAN-ANSWER /?CCL3 ICALL2 SETUP-ORPHAN,ORPHAN-ANSWER RFALSE ?CCL3: ICALL2 DEQUEUE,I-SETUP-ANSWER RFALSE .FUNCT V-SMILE:ANY:0:0 PRINTI "You smile" ZERO? PRSO /?CND1 PRINTI " at " ICALL1 THE-PRINT-PRSO ?CND1: PRINTR ", showing your bad teeth and rotten gums." .FUNCT V-WINK:ANY:0:0 PRINTI "You wink" ZERO? PRSO /?CND1 PRINTI " at " ICALL1 THE-PRINT-PRSO ?CND1: PRINTR ", but get no reaction." .FUNCT V-CLEAR:ANY:0:0 FSET? PRSO,FURNITURE \?CCL3 FSET? PRSO,SURFACEBIT \?CCL3 LOC WINNER CALL EMPTY-ALL,PRSO,STACK RSTACK ?CCL3: PRINTR "I don't see how you propose to do that." .FUNCT V-TURN-TOWARD:ANY:0:0 CALL1 V-TURN-AWAY RSTACK .FUNCT V-TURN-AWAY:ANY:0:0 PRINT YOU-HAVE-TO PRINT STR?177 CRLF RTRUE .FUNCT V-REACH-FOR:ANY:0:0 PRINT STR?178 ICALL1 THE-PRINT-PRSO PRINTI " with " ICALL1 THE-PRINT-PRSI PRINTR "." .FUNCT V-HUG:ANY:0:0 FSET? PRSO,PERSON \?CCL3 FSET? PRSO,DEAD /?CCL3 FSET? PRSO,DUTCHBIT \?CCL8 PRINTI """I'm no god-cursed sodomite!"" growls " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL8: PRINTR "Such public displays of affection are considered barbaric in Japan." ?CCL3: PRINTI "Only a barbarian would try to hug " ICALL1 PRINTA-PRSO PRINTR "!" .FUNCT V-SOOTHE:ANY:0:0 FSET? PRSO,PERSON \?CCL3 PRINTR "Your efforts don't seem to have much effect." ?CCL3: PRINTI "You can't soothe " ICALL1 PRINTA-PRSO PRINTR "." .FUNCT V-HAI:ANY:0:0 CALL1 V-IYE RSTACK .FUNCT V-IYE:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "Your accent is atrocious." .FUNCT V-HOLD-ON:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 PRINTR "There's nothing to hold onto here!" ?CCL3: ICALL PERFORM,V?TAKE,PRSO RTRUE .FUNCT V-RINSE:ANY:0:0 CALL1 V-BATHE RSTACK .FUNCT V-BATHE:ANY:0:0 PRINTR "A fine idea, but there are no facilities here." .FUNCT V-REPLACE:ANY:0:0 CALL2 HELD?,PRSO ZERO? STACK /?CCL3 ICALL PERFORM,V?DROP,PRSO RTRUE ?CCL3: ICALL1 CTHE-PRINT-PRSO PRINTR " is irreplaceable." .FUNCT V-ESCAPE:ANY:0:0 PRINTR "A fine idea, but the details of your plan seem rather sketchy." .FUNCT V-PLEAD:ANY:0:0 ZERO? PRSO /?CCL3 ICALL1 CTHE-PRINT-PRSO PRINTR " ignores your pleas." ?CCL3: PRINTR "Your pleas seem to fall on deaf ears." .FUNCT V-COMMIT:ANY:0:0 EQUAL? PRSO,SUICIDE \?CCL3 ICALL PERFORM,V?KILL,ME RTRUE ?CCL3: PRINTR "It's you that should be committed." .FUNCT V-ACCUSE:ANY:0:0 FSET? PRSO,PERSON \?CCL3 PRINTR """Never!""" ?CCL3: PRINTR "You are obviously going a bit paranoid." .FUNCT V-SPIT:ANY:0:0 PRINTR "What an uncouth idea." .FUNCT V-TEKI:ANY:0:0 FSET? TEKI,RMUNGBIT \?CCL3 PRINTI "In Japanese, " ICALL2 PRINTUNDER,STR?179 PRINTR " means 'enemy.'" ?CCL3: PRINTR "That's not a word you know." .FUNCT GET-INTQUOTE:ANY:1:1,N,NP,LEN,?TMP1 CALL2 GET-NP,INTQUOTE >NP GET NP,8 >?TMP1 GET NP,7 SUB ?TMP1,STACK DIV STACK,4 SUB STACK,1 >LEN MUL N,2 >N GRTR? N,LEN /FALSE GET NP,7 ADD STACK,4 GET STACK,N RSTACK .FUNCT PRE-SSPEAK:ANY:0:0 ICALL2 SWAP-VERB,V?SPEAK RTRUE .FUNCT V-SSPEAK:ANY:0:0 RTRUE .FUNCT V-SPEAK:ANY:0:0 EQUAL? PRSO,ENGLISH \?CCL3 PRINTR "English is your native tongue. You speak the English of London, and have fond memories of the plays of Jonson and Shakespeare." ?CCL3: EQUAL? PRSO,DUTCH \?CCL5 PRINTR "Your mother was Dutch, and your men are mostly Dutch, so you speak it fluently. Holland is England's only ally against the treacherous Spanish." ?CCL5: EQUAL? PRSO,PORTUGUESE \?CCL7 PRINTR "Your Portuguese is excellent." ?CCL7: EQUAL? PRSO,SPANISH \?CCL9 PRINTR "You can speak the language of the hated Spaniards like a native." ?CCL9: EQUAL? PRSO,LATIN \?CCL11 PRINTR "Like all educated men, you speak Latin." ?CCL11: EQUAL? PRSO,JAPANESE \?CCL13 EQUAL? SCENE,S-ERASMUS,S-ANJIRO \?CCL16 PRINTR "You don't know any Japanese." ?CCL16: PRINTR "Your accent is atrocious, and your vocabulary small, but you are learning fast." ?CCL13: PRINTR "That's not a language you know." .FUNCT V-AIM:ANY:0:0,W ZERO? PRSI \?CCL3 FSET? PRSO,PERSON \?CCL6 CALL FIND-IN,WINNER,WEAPONBIT >W ZERO? W /?CCL9 ICALL PERFORM,PRSA,W,PRSO RTRUE ?CCL9: PRINTR "You sight carefully along your finger..." ?CCL6: PRINTR "How strange." ?CCL3: PRINTI "You aim " ICALL1 THE-PRINT-PRSO PRINTI " at " ICALL1 THE-PRINT-PRSI PRINTR "." .FUNCT V-EXPLODE:ANY:0:0 ZERO? PRSI /?CCL3 PRINTI "A " PRINT PRSI PRINTR " doesn't make a very good explosive!" ?CCL3: PRINT YOU-HAVE-TO PRINTR "use an explosive." .ENDSEG .SEGMENT "0" .FUNCT V-HINT:ANY:0:0 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" CALL1 YES? ZERO? STACK \?CND1 RETURN M-FATAL ?CCL3: ZERO? HINTS-OFF /?CND1 ICALL PERFORM,V?HINTS-OFF,ROOMS RETURN M-FATAL ?CND1: GRTR? SCENE,S-ESCAPE \?CCL9 ADD SCENE,1 >H-CHAPT-NUM JUMP ?CND7 ?CCL9: SET 'H-CHAPT-NUM,SCENE ?CND7: ICALL2 TOUCH-SEG,P-HINT-BORDER ICALL1 DO-HINTS ICALL1 REPAINT-DISPLAY PRINTR "Back to the story..." .FUNCT V-HINTS-OFF:ANY:0:0 EQUAL? PRSO,ROOMS /?CCL3 PRINTR "[Sorry, I don't understand.]" ?CCL3: GRTR? HINTS-OFF,0 \?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-PICK-UP:ANY:0:0 ICALL1 CTHE-PRINT-PRSI PRINTI " doesn't seem to be much help in getting " ICALL1 THE-PRINT-PRSO PRINTR "." .FUNCT V-COME-FROM:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTI "So, you c" CALL1 PAST-TENSE? ZERO? STACK /?CCL6 PRINTC 97 JUMP ?CND4 ?CCL6: PRINTC 111 ?CND4: PRINTI "me from " ICALL1 DPRINT-PRSO PRINTR "." .FUNCT PAST-TENSE?:ANY:0:0,X,?TMP1 ADD WORD-FLAG-TABLE,2 >?TMP1 GET WORD-FLAG-TABLE,0 INTBL? P-PRSA-WORD,?TMP1,STACK,132 >X \?CCL3 GET X,1 JUMP ?CND1 ?CCL3: PUSH FALSE-VALUE ?CND1: BAND PAST-TENSE,STACK RSTACK .FUNCT PRE-COME-TO-FROM:ANY:0:0 EQUAL? PRSO,GLOBAL-HERE,JAPAN \FALSE ICALL PERFORM,V?COME-FROM,PRSI RTRUE .FUNCT V-COME-TO-FROM:ANY:0:0 PRINTR "That's very interesting." .FUNCT V-PARRY:ANY:0:0 PRINTR "There doesn't seem to be anything to parry." .FUNCT V-TEACH:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE FSET? PRSO,PERSON \?CCL5 PRINTI "You do your best to teach " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL5: PRINTI "You can't teach " ICALL1 PRINTA-PRSO PRINTR "!" .FUNCT V-LEARN:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "Perhaps you should ask someone to teach you." .FUNCT V-LOOK-OUT:ANY:0:0 EQUAL? PRSO,ROOMS \?CCL3 FSET? HERE,OUTSIDE \?CCL6 PRINTR "You are outside already!" ?CCL6: PRINT YOU-HAVE-TO PRINTR "go outside to look outside." ?CCL3: ICALL PERFORM,V?EXAMINE,PRSO RTRUE .FUNCT B-STAND:ANY:0:0 FCLEAR BLACKTHORNE,SITTING FCLEAR BLACKTHORNE,TRANSBIT FCLEAR BLACKTHORNE,SURFACEBIT RTRUE .FUNCT B-SITTING?:ANY:0:0 FSET? BLACKTHORNE,SITTING \FALSE FSET? BLACKTHORNE,TRANSBIT /FALSE FSET? BLACKTHORNE,SURFACEBIT /FALSE RTRUE .FUNCT B-SIT:ANY:0:0 FSET BLACKTHORNE,SITTING FCLEAR BLACKTHORNE,TRANSBIT FCLEAR BLACKTHORNE,SURFACEBIT RTRUE .FUNCT B-KNEELING?:ANY:0:0 FSET? BLACKTHORNE,SITTING \FALSE FSET? BLACKTHORNE,TRANSBIT /TRUE RFALSE .FUNCT B-KNEEL:ANY:0:0 FSET BLACKTHORNE,SITTING FSET BLACKTHORNE,TRANSBIT FCLEAR BLACKTHORNE,SURFACEBIT RTRUE .FUNCT B-LYING?:ANY:0:0 FSET? BLACKTHORNE,SITTING \FALSE FSET? BLACKTHORNE,SURFACEBIT /TRUE RFALSE .FUNCT B-LIE-DOWN:ANY:0:0 FSET BLACKTHORNE,SITTING FCLEAR BLACKTHORNE,TRANSBIT FSET BLACKTHORNE,SURFACEBIT RTRUE .FUNCT V-STAND:ANY:0:0,AV EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3 LOC WINNER >AV FSET? AV,VEHBIT \?CCL6 EQUAL? AV,QUILT /?CCL6 PRINTI "You shouldn't stand up inside " ICALL2 PRINTA,AV PRINTR "." ?CCL6: FSET? BLACKTHORNE,SITTING \?CCL10 ICALL1 B-STAND PRINTR "You stand up." ?CCL10: PRINT YOU-ARE PRINTR " standing." ?CCL3: CALL2 HACK-HACK,STR?180 RSTACK .FUNCT V-SIT:ANY:0:0 EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL3 PRINT WASTE-OF-TIME RTRUE ?CCL3: FSET? BLACKTHORNE,SITTING \?CCL5 CALL1 B-SITTING? ZERO? STACK /?CCL8 PRINT STR?181 CRLF RTRUE ?CCL8: ICALL1 B-SIT PRINTR "You sit up." ?CCL5: ICALL1 B-SIT PRINTR "You sit down." .FUNCT V-KNEEL:ANY:0:0 CALL1 B-KNEELING? ZERO? STACK /?CCL3 PRINT STR?181 CRLF RTRUE ?CCL3: ICALL1 B-KNEEL PRINT STR?182 CRLF RTRUE .FUNCT V-KNEEL-ON:ANY:0:0 EQUAL? PRSO,GROUND /?CTR2 FSET? PRSO,FURNITURE \?CCL3 ?CTR2: ICALL2 PERFORM,V?KNEEL RTRUE ?CCL3: PRINTR "You can't kneel on that!" .FUNCT V-LIE-DOWN:ANY:0:0 EQUAL? PRSO,ROOMS,GROUND \?CCL3 CALL1 B-LYING? ZERO? STACK /?CCL6 PRINT STR?181 CRLF RTRUE ?CCL6: ICALL1 B-LIE-DOWN PRINTR "You lie down." ?CCL3: FSET? PRSO,VEHBIT \FALSE ICALL PERFORM,V?BOARD,PRSO RTRUE .FUNCT V-LIE:ANY:0:0 PRINTR "A duplicitous idea, but you'll have to be more specific." .FUNCT V-AVOID:ANY:0:0 EQUAL? PRSO,OPPONENT \?CCL3 ICALL2 PERFORM,V?DODGE RTRUE ?CCL3: PRINTR "You're doing the best you can." .FUNCT V-FUCK:ANY:0:0 EQUAL? PRSO,YOU \?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: FSET? PRSO,PERSON \?CCL7 FSET? PRSO,FEMALE \?CCL10 PRINTR "What an indelicate, even coarse, suggestion!" ?CCL10: PRINTR "Your predelictions are unusual, even given the local attitudes on these matters." ?CCL7: PRINTR "An unusual idea." .FUNCT V-KNOW:ANY:0:0 PRINTR "I don't know." .FUNCT V-TRAIN:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "It'll take a lot of training." .FUNCT V-BETRAY:ANY:0:0 CALL1 PAST-TENSE? ZERO? STACK /?CCL3 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE ?CCL3: PRINTI "There's no one to betray " ICALL1 THE-PRINT-PRSO PRINTR " to." .FUNCT V-LET-IN:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINT YOU-HAVE-TO PRINT STR?125 PRINTR "how you are doing that." .FUNCT V-PUT-AWAY:ANY:0:0 EQUAL? PRSI,ROOMS \?CCL3 PRINT YOU-HAVE-TO PRINT STR?125 PRINTI "where you want to put " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL3: ICALL PERFORM,V?PUT,PRSO,PRSI RTRUE .FUNCT V-DODGE:ANY:0:0 EQUAL? PRSO,ROOMS,FALSE-VALUE,OPPONENT \?CCL3 ZERO? OPPONENT /?CCL3 PRINTI "You try to get out of the way of " ICALL2 THE-PRINT,OPPONENT PRINTR "'s attack." ?CCL3: EQUAL? PRSO,ROOMS,FALSE-VALUE \?CCL7 PRINTR "There's nothing to duck." ?CCL7: PRINTI "You don't need to dodge " ICALL1 THE-PRINT-PRSO PRINTR "." .FUNCT V-WAKARIMASU:ANY:0:0 PRINTR "That's nice." .FUNCT V-MIZU:ANY:0:0 LESS? SCENE,S-PRISON /?CCL3 PRINTR "That's Japanese for 'water.'" ?CCL3: PRINTR "What's that mean?" .FUNCT V-QUIET:ANY:0:0 PRINTR "There doesn't seem to be anyone paying attention." .FUNCT V-COLOR:ANY:0:0,DEFAULT,FG,BG EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL3 PRINTR "[Sorry, the Apple II doesn't support color selection.]" ?CCL3: ZERO? COLOR-NOTE \?CND1 EQUAL? MACHINE,MACINTOSH \?CND1 CALL1 MAC-II? ZERO? STACK /?CND1 SET 'COLOR-NOTE,TRUE-VALUE PRINTI "If your Mac II displays fewer than 256 colors, you probably won't get the color you ask for. Do you still want to go ahead" CALL1 YES? ZERO? STACK /TRUE ?CND1: CRLF SET 'FG,FG-COLOR SET 'BG,BG-COLOR ?PRG10: ICALL1 DO-COLOR PRINTI "You will 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" CALL1 YES? ZERO? STACK /?CCL14 ICALL1 NORMAL-COLOR SCREEN S-FULL ICALL1 NORMAL-COLOR SCREEN S-TEXT ICALL1 V-$REFRESH RTRUE ?CCL14: SET 'FG-COLOR,FG SET 'BG-COLOR,BG CRLF PRINTI "Do you want to pick again" CALL1 YES? ZERO? STACK /TRUE CRLF JUMP ?PRG10 .FUNCT MAC-II?:ANY:0:0 EQUAL? MACHINE,MACINTOSH \FALSE WINGET S-FULL,WWIDE EQUAL? STACK,640 /TRUE RFALSE .FUNCT DO-COLOR:ANY:0:0 EQUAL? MACHINE,AMIGA \?CCL3 PUSH 11 JUMP ?CND1 ?CCL3: EQUAL? MACHINE,IBM \?CCL5 GET 0,17 EQUAL? STACK,320 \?CCL5 PUSH 9 JUMP ?CND1 ?CCL5: PUSH 8 ?CND1: PUT COLOR-MENU,0,STACK GET 0,8 BTST STACK,F-COLOR \?CTR9 EQUAL? MACHINE,MACINTOSH \?CCL10 CALL1 MAC-II? ZERO? STACK \?CCL10 ?CTR9: EQUAL? BG-COLOR,C-BLACK \?CCL17 SET 'BG-COLOR,C-WHITE SET 'FG-COLOR,C-BLACK RTRUE ?CCL17: SET 'BG-COLOR,C-BLACK SET 'FG-COLOR,C-WHITE RTRUE ?CCL10: CALL PICK-COLOR,FG-COLOR,STR?183,TRUE-VALUE >FG-COLOR CALL PICK-COLOR,BG-COLOR,STR?184 >BG-COLOR RTRUE .FUNCT PICK-COLOR:ANY:2:3,WHICH,STRING,SETTING-FG,CHAR PRINTI "The current " PRINT STRING PRINTI " color is " GET COLOR-TABLE,WHICH PRINT STACK PRINTC 46 CRLF EQUAL? WHICH,1 \?PRG6 ZERO? SETTING-FG /?CCL5 SET 'WHICH,C-BLACK JUMP ?PRG6 ?CCL5: SET 'WHICH,C-WHITE ?PRG6: CALL2 COLOR-OFFSET,WHICH CALL GET-FROM-MENU,STR?185,COLOR-MENU,COLOR-MENU-F,STACK >CHAR ZERO? SETTING-FG \?REP7 EQUAL? CHAR,FG-COLOR \?REP7 CRLF PRINTI "You can't make the background the same color as the text! Pick another color." CRLF JUMP ?PRG6 ?REP7: CRLF CRLF RETURN CHAR .FUNCT COLOR-OFFSET:ANY:1:1,TMP EQUAL? TMP,C-WHITE \?CCL3 SET 'TMP,1 RETURN TMP ?CCL3: GRTR? TMP,C-WHITE /?CCL4 RETURN TMP ?CCL4: DEC 'TMP RETURN TMP .FUNCT COLOR-MENU-F:ANY:2:2,TMP,M EQUAL? TMP,1 \?CCL3 SET 'TMP,C-WHITE RETURN TMP ?CCL3: GRTR? TMP,8 /?CCL4 RETURN TMP ?CCL4: INC 'TMP RETURN TMP .FUNCT V-SHRUG:ANY:0:0 PRINTR "An eloquent gesture." .FUNCT V-SING:ANY:0:0 EQUAL? PRSO,FALSE-VALUE,ME \?CCL3 PRINTI "You sing an old sea chanty." GRTR? SCENE,1 \?CND4 PRINTR " It's a good thing no Japanese understand English." ?CND4: CRLF RTRUE ?CCL3: FSET? PRSO,PERSON \?CCL7 ICALL1 CTHE-PRINT-PRSO PRINTR " doesn't seem impressed." ?CCL7: PRINTR "You can't sing that." .FUNCT V-DISTRACT:ANY:0:0 PRINTR "You are unsuccessful." .FUNCT V-JOIN:ANY:0:0 FSET? PRSO,PERSON \?CCL3 ICALL PERFORM,V?WALK-TO,PRSO RTRUE ?CCL3: ICALL PERFORM,V?BOARD,PRSO RTRUE .FUNCT OUTSIDE-TUB?:ANY:1:1,TUB CALL1 GAME-VERB? ZERO? STACK \FALSE CALL1 PASSIVE-VERB? ZERO? STACK \FALSE ZERO? PRSO /FALSE CALL2 HELD?,PRSO ZERO? STACK \FALSE EQUAL? PRSO,TUB,ME,ROOMS /FALSE IN? PRSO,TUB /FALSE FSET? PRSO,BODY-PART /FALSE EQUAL? PRSO,LATIN,SPANISH,PORTUGUESE /FALSE EQUAL? PRSO,DUTCH /FALSE RTRUE .FUNCT V-DRAW:ANY:0:0 FSET? PRSO,WEAPONBIT \?CCL3 CALL2 HELD?,PRSO ZERO? STACK /?CCL3 ICALL PERFORM,V?USE,PRSO RTRUE ?CCL3: PRINTR "The result reveals that it's a good thing you became a Pilot instead of an artist." .FUNCT V-DIVE:ANY:0:0 ZERO? PRSO /?CCL3 FSET? PRSO,VEHBIT \?CCL6 ICALL PERFORM,V?BOARD,PRSO RTRUE ?CCL6: FSET? PRSO,DOORBIT \?CCL8 ICALL PERFORM,V?THROUGH,PRSO RTRUE ?CCL8: IN? PRSO,ROOMS \?CCL10 ICALL PERFORM,V?WALK-TO,PRSO RTRUE ?CCL10: PRINTI "You can't dive into " ICALL1 THE-PRINT-PRSO PRINTR "." ?CCL3: PRINTR "Taking a dive, eh?" .FUNCT V-BABBLE:ANY:0:0 PRINTR "You babble nonsense for a while." .FUNCT V-TRIP:ANY:0:0 PRINTR "You are unsuccessful." .FUNCT V-NIHON-GO-GA:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? PRSO,HANASE-MASEN \?CCL5 PRINTR "True enough, but you're getting better." ?CCL5: PRINT STR?199 CRLF RTRUE .FUNCT V-GENKI-DESU:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? PRSO,ROOMS \?CCL5 PRINTR "It's good to know you're feeling well." ?CCL5: PRINT STR?199 CRLF RTRUE .FUNCT V-GOMEN-NASAI:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? PRSO,ROOMS \?CCL5 PRINTR "No one seems to be expecting an apology." ?CCL5: PRINT STR?199 CRLF RTRUE .FUNCT V-ISOGI:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINTR "No one seems to be listening." .FUNCT V-KONBANWA:ANY:0:0 ICALL PERFORM,V?KONNICHI-WA,ROOMS RTRUE .FUNCT V-KONNICHI-WA:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE EQUAL? PRSO,ROOMS \?CCL5 PRINTR "Good practice! Your accent is getting better." ?CCL5: PRINT STR?199 CRLF RTRUE .FUNCT V-KINJIRU:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINT STR?200 CRLF RTRUE .FUNCT V-DRY:ANY:0:0 ICALL1 CTHE-PRINT-PRSO PRINTR " doesn't seem to want to be dried." .FUNCT V-WARN:ANY:0:0 FSET? PRSO,PERSON /?CCL3 CALL2 YOU-CANT-X-PRSO,STR?201 RSTACK ?CCL3: FSET? PRSO,DEAD \?CCL5 PRINT YOU-CANT PRINT STR?65 CRLF RTRUE ?CCL5: ZERO? PRSI /?CCL7 ICALL1 CTHE-PRINT-PRSO PRINTI " doesn't seem worried about " ICALL1 THE-PRINT-PRSI PRINTR "." ?CCL7: ZERO? OPPONENT /?CCL9 ICALL PERFORM,V?WARN,PRSO,OPPONENT RTRUE ?CCL9: ICALL1 CTHE-PRINT-PRSO PRINTR " doesn't seem worried." .FUNCT V-PULL-BEHIND:ANY:0:0 CALL2 YOU-CANT-X-PRSO,STR?202 RSTACK .FUNCT V-TOMO:ANY:0:0 CALL1 TRY-QCONTEXT? ZERO? STACK \TRUE PRINT STR?200 CRLF RTRUE .FUNCT V-NEH:ANY:0:0 PRINTR """Neh.""" .ENDSEG .ENDI