.FUNCT START-SENTENCE,OBJ,INV?=0 CALL2 THIS-IS-IT,OBJ EQUAL? OBJ,PLAYER \?ELS3 PRINTI "You" RTRUE ?ELS3: EQUAL? OBJ,POCKET \?ELS7 PRINTI "Your pocket" RTRUE ?ELS7: EQUAL? OBJ,TICKET \?ELS11 PRINTI "Your ticket" RTRUE ?ELS11: EQUAL? OBJ,PASSPORT \?ELS15 PRINTI "Your passport" RTRUE ?ELS15: EQUAL? OBJ,HEAD \?ELS19 PRINTI "Your head" RTRUE ?ELS19: EQUAL? OBJ,HANDS \?CND1 PRINTI "Your hands" RTRUE ?CND1: FSET? OBJ,NARTICLEBIT /?CND26 FSET? OBJ,PERSONBIT \?THN32 FSET? OBJ,SEENBIT \?ELS31 ?THN32: PRINTI "The " JUMP ?CND26 ?ELS31: FSET? OBJ,VOWELBIT \?ELS37 PRINTI "An " JUMP ?CND26 ?ELS37: PRINTI "A " ?CND26: FSET? OBJ,PERSONBIT \?CND44 FSET OBJ,SEENBIT ?CND44: PRINTD OBJ ZERO? INV? /FALSE IN? BRIEFCASE,OBJ \FALSE FSET? BRIEFCASE,SEENBIT /FALSE FSET BRIEFCASE,SEENBIT PRINTI ", carrying" CALL2 HIM-HER-IT,BRIEFCASE PRINTI "," RTRUE .FUNCT PRINTT,OBJ EQUAL? OBJ,TURN \?ELS5 LESS? 1,P-NUMBER \?ELS5 PRINTI " " PRINTN P-NUMBER PRINTI " minutes" RTRUE ?ELS5: EQUAL? OBJ,INTNUM \?ELS11 ZERO? P-DOLLAR-FLAG /?ELS11 PRINTI " that amount" RTRUE ?ELS11: FSET? OBJ,WINDOWBIT \?ELS17 PRINTI " the window" RTRUE ?ELS17: CALL2 THE?,OBJ PRINTI " " PRINTD OBJ RTRUE .FUNCT THE?,OBJ FSET? OBJ,NARTICLEBIT /?CND1 FSET? OBJ,PERSONBIT \?THN7 FSET? OBJ,SEENBIT \?ELS6 ?THN7: PRINTI " the" JUMP ?CND1 ?ELS6: FSET? OBJ,VOWELBIT \?ELS12 PRINTI " an" JUMP ?CND1 ?ELS12: PRINTI " a" ?CND1: FSET? OBJ,PERSONBIT \FALSE FSET OBJ,SEENBIT RTRUE .FUNCT PRINTA,O EQUAL? O,INTNUM \?ELS3 ZERO? P-DOLLAR-FLAG /?ELS3 PRINTI "money" RTRUE ?ELS3: FSET? O,NARTICLEBIT \?ELS9 JUMP ?CND1 ?ELS9: FSET? O,VOWELBIT \?ELS13 PRINTI "an " JUMP ?CND1 ?ELS13: PRINTI "a " ?CND1: PRINTD O RTRUE .FUNCT NO-PRONOUN?,OBJ,CAP=0 EQUAL? OBJ,PLAYER /FALSE FSET? OBJ,PERSONBIT /?ELS5 EQUAL? OBJ,P-IT-OBJECT \?CND1 FSET? IT,TOUCHBIT \?CND1 RFALSE ?ELS5: FSET? OBJ,FEMALE \?ELS12 EQUAL? OBJ,P-HER-OBJECT \?CND1 FSET? HER,TOUCHBIT \?CND1 RFALSE ?ELS12: FSET? OBJ,PLURALBIT \?ELS19 EQUAL? OBJ,P-THEM-OBJECT \?CND1 FSET? THEM,TOUCHBIT \?CND1 RFALSE ?ELS19: EQUAL? OBJ,P-HIM-OBJECT \?CND1 FSET? HIM,TOUCHBIT /FALSE ?CND1: ZERO? CAP \?ELS34 CALL2 PRINTT,OBJ RTRUE ?ELS34: CALL2 ONE?,CAP ZERO? STACK /TRUE CALL2 START-SENTENCE,OBJ RTRUE .FUNCT HE-SHE-IT,OBJ,CAP=0,VERB=0 CALL NO-PRONOUN?,OBJ,CAP ZERO? STACK /?ELS3 JUMP ?CND1 ?ELS3: FSET? OBJ,PERSONBIT /?ELS5 ZERO? CAP \?ELS8 PRINTI " it" JUMP ?CND1 ?ELS8: CALL2 ONE?,CAP ZERO? STACK /?CND1 PRINTI "It" JUMP ?CND1 ?ELS5: EQUAL? OBJ,PLAYER \?ELS16 ZERO? CAP \?ELS19 PRINTI " you" JUMP ?CND1 ?ELS19: CALL2 ONE?,CAP ZERO? STACK /?CND1 PRINTI "You" JUMP ?CND1 ?ELS16: FSET? OBJ,FEMALE \?ELS27 ZERO? CAP \?ELS30 PRINTI " she" JUMP ?CND1 ?ELS30: CALL2 ONE?,CAP ZERO? STACK /?CND1 PRINTI "She" JUMP ?CND1 ?ELS27: FSET? OBJ,PLURALBIT \?ELS38 ZERO? CAP \?ELS41 PRINTI " they" JUMP ?CND1 ?ELS41: CALL2 ONE?,CAP ZERO? STACK /?CND1 PRINTI "They" JUMP ?CND1 ?ELS38: ZERO? CAP \?ELS52 PRINTI " he" JUMP ?CND1 ?ELS52: CALL2 ONE?,CAP ZERO? STACK /?CND1 PRINTI "He" ?CND1: ZERO? VERB /FALSE PRINTC 32 EQUAL? OBJ,PLAYER /?THN70 FSET? OBJ,PLURALBIT \?ELS69 ?THN70: EQUAL? VERB,STR?1 \?ELS76 PRINTI "are" RTRUE ?ELS76: EQUAL? VERB,STR?2 \?ELS80 PRINTI "have" RTRUE ?ELS80: PRINT VERB RTRUE ?ELS69: PRINT VERB EQUAL? VERB,STR?3,STR?4,STR?5 \?CND91 PRINTI "e" ?CND91: EQUAL? VERB,STR?1,STR?2 /FALSE PRINTI "s" RTRUE .FUNCT ONE?,NUM EQUAL? NUM,1,TRUE-VALUE /TRUE RFALSE .FUNCT HIM-HER-IT,OBJ,CAP=0,POSSESS?=0 CALL NO-PRONOUN?,OBJ,CAP ZERO? STACK /?ELS3 ZERO? POSSESS? /TRUE PRINTI "'s" RTRUE ?ELS3: FSET? OBJ,PERSONBIT /?ELS11 ZERO? CAP \?ELS14 PRINTI " it" JUMP ?CND12 ?ELS14: PRINTI "It" ?CND12: ZERO? POSSESS? /TRUE PRINTI "s" RTRUE ?ELS11: EQUAL? OBJ,PLAYER \?ELS28 ZERO? CAP /?ELS31 PRINTI "You" JUMP ?CND29 ?ELS31: PRINTI " you" ?CND29: ZERO? POSSESS? /TRUE PRINTI "r" RTRUE ?ELS28: FSET? OBJ,PLURALBIT \?ELS46 ZERO? POSSESS? /?ELS49 ZERO? CAP \?ELS53 PRINTI " their" RTRUE ?ELS53: PRINTI "Their" RTRUE ?ELS49: ZERO? CAP \?ELS64 PRINTI " them" RTRUE ?ELS64: PRINTI "Them" RTRUE ?ELS46: FSET? OBJ,FEMALE \?ELS72 ZERO? CAP \?ELS75 PRINTI " her" RTRUE ?ELS75: PRINTI "Her" RTRUE ?ELS72: ZERO? POSSESS? /?ELS86 ZERO? CAP \?ELS90 PRINTI " his" RTRUE ?ELS90: PRINTI "His" RTRUE ?ELS86: ZERO? CAP \?ELS101 PRINTI " him" RTRUE ?ELS101: PRINTI "Him" RTRUE .FUNCT PICK-ONE-NEW,FROB,THIS=0,L,CNT,RND,MSG,RFROB GET FROB,0 >L GET FROB,1 >CNT DEC 'L ADD FROB,2 >FROB MUL CNT,2 ADD FROB,STACK >RFROB ZERO? THIS /?ELS3 ZERO? CNT \?ELS3 SET 'RND,THIS JUMP ?CND1 ?ELS3: SUB L,CNT RANDOM STACK >RND ?CND1: GET RFROB,RND >MSG GET RFROB,1 PUT RFROB,RND,STACK PUT RFROB,1,MSG INC 'CNT EQUAL? CNT,L \?CND8 SET 'CNT,0 ?CND8: PUT FROB,0,CNT RETURN MSG .FUNCT PICK-ONE,FROB GET FROB,0 RANDOM STACK GET FROB,STACK RSTACK .ENDI