From c8784aa058f078454ff5668c310267e211effffd Mon Sep 17 00:00:00 2001 From: historicalsource Date: Sun, 14 Apr 2019 16:52:12 -0400 Subject: [PATCH] Final Revision --- README | 20 + breds.zabstr | 58 + breds.zap | 573 +++ defs.zil | 44 + find.zabstr | 65 + find.zap | 597 +++ global.zabstr | 79 + global.zap | 247 + global.zil | 457 ++ gram.mac | 1 + h2.chart | 295 ++ h2.errors | 46 + h2.lowcore | 2 + h2.record | 357 ++ h2.seg | Bin 0 -> 171 bytes h2.seginfo | 2915 +++++++++++ h2.serial | 1 + h2.syms | Bin 0 -> 174668 bytes h2.zap | 58 + h2.zil | 43 + h2.zip | Bin 0 -> 79152 bytes h2dat.zap | 12215 +++++++++++++++++++++++++++++++++++++++++++++ h2freq.xzap | 200 + h2pur.zap | 285 ++ h2str.zap | 258 + macros.zap | 24 + macros.zil | 75 + magrathea.zabstr | 103 + magrathea.zap | 50 + magrathea.zil | 251 + misc.zabstr | 51 + misc.zap | 403 ++ misc.zil | 371 ++ parser.zabstr | 231 + parser.zap | 1563 ++++++ pass101 | Bin 0 -> 130881 bytes pass33 | Bin 0 -> 42546 bytes people.zabstr | 68 + people.zap | 549 ++ people.zil | 662 +++ places.zabstr | 29 + places.zap | 156 + places.zil | 391 ++ pmem.zabstr | 92 + pmem.zap | 45 + prare.zabstr | 73 + prare.zap | 1036 ++++ pstack.zabstr | 45 + pstack.zap | 18 + qverbs.zabstr | 83 + qverbs.zap | 671 +++ reds.zabstr | 91 + reds.zap | 1678 +++++++ state.1 | 901 ++++ state.2 | 901 ++++ state.3 | 901 ++++ state.4 | 901 ++++ states.mac | 1 + states.txt | 901 ++++ syntax.zil | 705 +++ things.zabstr | 73 + things.zap | 254 + things.zil | 542 ++ top.zabstr | 85 + top.zap | 448 ++ verbs.zabstr | 302 ++ verbs.zap | 3756 ++++++++++++++ verbs.zil | 3397 +++++++++++++ 68 files changed, 41693 insertions(+) create mode 100644 README create mode 100644 breds.zabstr create mode 100644 breds.zap create mode 100644 defs.zil create mode 100644 find.zabstr create mode 100644 find.zap create mode 100644 global.zabstr create mode 100644 global.zap create mode 100644 global.zil create mode 100644 gram.mac create mode 100644 h2.chart create mode 100644 h2.errors create mode 100644 h2.lowcore create mode 100644 h2.record create mode 100644 h2.seg create mode 100644 h2.seginfo create mode 100644 h2.serial create mode 100644 h2.syms create mode 100644 h2.zap create mode 100644 h2.zil create mode 100644 h2.zip create mode 100644 h2dat.zap create mode 100644 h2freq.xzap create mode 100644 h2pur.zap create mode 100644 h2str.zap create mode 100644 macros.zap create mode 100644 macros.zil create mode 100644 magrathea.zabstr create mode 100644 magrathea.zap create mode 100644 magrathea.zil create mode 100644 misc.zabstr create mode 100644 misc.zap create mode 100644 misc.zil create mode 100644 parser.zabstr create mode 100644 parser.zap create mode 100644 pass101 create mode 100644 pass33 create mode 100644 people.zabstr create mode 100644 people.zap create mode 100644 people.zil create mode 100644 places.zabstr create mode 100644 places.zap create mode 100644 places.zil create mode 100644 pmem.zabstr create mode 100644 pmem.zap create mode 100644 prare.zabstr create mode 100644 prare.zap create mode 100644 pstack.zabstr create mode 100644 pstack.zap create mode 100644 qverbs.zabstr create mode 100644 qverbs.zap create mode 100644 reds.zabstr create mode 100644 reds.zap create mode 100644 state.1 create mode 100644 state.2 create mode 100644 state.3 create mode 100644 state.4 create mode 100644 states.mac create mode 100644 states.txt create mode 100644 syntax.zil create mode 100644 things.zabstr create mode 100644 things.zap create mode 100644 things.zil create mode 100644 top.zabstr create mode 100644 top.zap create mode 100644 verbs.zabstr create mode 100644 verbs.zap create mode 100644 verbs.zil diff --git a/README b/README new file mode 100644 index 0000000..770a237 --- /dev/null +++ b/README @@ -0,0 +1,20 @@ +Summary of files in

directory: + +*.BS -- linear versions of BrainStorm files left over from the first +Hitchhiker's game, including some unused but usable ideas + +*.TXT -- transcripts of electronic mail with more of the same + +*.H1 -- selected ZIL files from the first game, with parts re-arranged +(I made new ZIL files by merging these with Moonmist files.) + +DESIGN.* -- the design notes I made at Bywater's suggestion + +REPLY.* -- feedback from other imps on the design notes + +H2.ZIL -- "load" file for RMODE ^EG command, omitting parser and other +stable files + +H2C.ZIL -- "load" file for compiling, including all files + +ZCOMP.TAILOR -- automagically does the right thing for compiling diff --git a/breds.zabstr b/breds.zabstr new file mode 100644 index 0000000..bcc2607 --- /dev/null +++ b/breds.zabstr @@ -0,0 +1,58 @@ +)("IN-ZILCH" T)( +"WORD-FLAGS-IN-TABLE" T)) ()> + + + + + + + + > + > + > + > + > + ,FUTURE-TENSE> + ,FUTURE-TENSE> + + + + + + + + + + + + + + + + + + + + + + + +> +> +> + > + ,PAST-TENSE> +> +> +> + ,FUTURE-TENSE> +> +> +> + + + + \ No newline at end of file diff --git a/breds.zap b/breds.zap new file mode 100644 index 0000000..5316db2 --- /dev/null +++ b/breds.zap @@ -0,0 +1,573 @@ + + .SEGMENT "0" + + + .FUNCT RED-BE-FORM:ANY:0:2,N,TYP + PUT PARSE-RESULT,2,TLEXV + POP DATA-STACK + PUT PARSE-RESULT,1,STACK + RTRUE + + + .FUNCT EXCH-4-5-Q:ANY:3:3,RED,N,TYP,X1,X2,X3,X4,X5 + POP DATA-STACK >X1 + POP DATA-STACK >X2 + POP DATA-STACK >X3 + POP DATA-STACK >X4 + POP DATA-STACK >X5 + EQUAL? N,6 \?CCL3 + DEC 'N + POP DATA-STACK + PUT PARSE-RESULT,10,STACK + JUMP ?CND1 +?CCL3: PUT PARSE-RESULT,10,0 +?CND1: CALL2 PMEM?,X3 + ZERO? STACK /?CCL6 + XPUSH X3,DATA-STACK /?CND4 + JUMP ?CND4 +?CCL6: XPUSH X4,DATA-STACK /?CND4 +?CND4: XPUSH X5,DATA-STACK /?BOGUS9 +?BOGUS9: CALL2 PMEM?,X3 + ZERO? STACK /?CCL12 + XPUSH X4,DATA-STACK /?CND10 + JUMP ?CND10 +?CCL12: XPUSH X3,DATA-STACK /?CND10 +?CND10: XPUSH X2,DATA-STACK /?BOGUS15 +?BOGUS15: XPUSH X1,DATA-STACK /?BOGUS16 +?BOGUS16: GET PARSE-RESULT,16 + BOR PARSE-QUESTION,STACK + PUT PARSE-RESULT,16,STACK + CALL RED,N,TYP + RSTACK + + + .FUNCT RED-SBNN:ANY:0:2,N,TYP + CALL EXCH-4-5-Q,RED-SNBN,N,TYP + RSTACK + + + .FUNCT RED-SNBN:ANY:0:2,N,TYP,OK,NPP,OBJ,VERB,X,?TMP1 + GET PARSE-RESULT,1 >VERB + POP DATA-STACK >NPP + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? VERB,?TMP1,STACK,132 >X \?CCL6 + GET X,1 + JUMP ?CND4 +?CCL6: PUSH FALSE-VALUE +?CND4: BTST STACK,1024 \?CCL3 + POP DATA-STACK + EQUAL? TRUE-VALUE,STACK /?CND1 + SET 'OK,TRUE-VALUE + JUMP ?CND1 +?CCL3: POP DATA-STACK + EQUAL? TRUE-VALUE,STACK \?CND1 + SET 'OK,TRUE-VALUE +?CND1: ZERO? OK /FALSE + CALL2 DETERMINE-SUBJ,VERB + ZERO? STACK /FALSE + CALL DETERMINE-OBJ,NPP,2 >OBJ + ZERO? OBJ \?CCL19 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,NPP + RSTACK +?CCL19: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD26 + PUSH ?TMP1 + JUMP ?PEN24 +?PRD26: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN24: BTST STACK,32768 /?CCL21 + GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD29 + PUSH ?TMP1 + JUMP ?PEN27 +?PRD29: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN27: BAND STACK,256 + BAND STACK,32767 + ZERO? STACK \FALSE +?CCL21: PUT PARSE-RESULT,6,OBJ + RETURN PARSE-RESULT + + + .FUNCT DETERMINE-SUBJ:ANY:1:3,VERB,SHORT,N1,DATA,TMP,OBJ1,?TMP1 + ZERO? SHORT \?CND1 + POP DATA-STACK + EQUAL? TRUE-VALUE,STACK /?CND1 + GET PARSE-RESULT,16 + BOR PARSE-NOT,STACK + PUT PARSE-RESULT,16,STACK +?CND1: POP DATA-STACK + ZERO? SHORT /?CCL7 + POP DATA-STACK >TMP + PUT PARSE-RESULT,10,TMP + JUMP ?CND5 +?CCL7: GET PARSE-RESULT,10 >TMP +?CND5: EQUAL? TMP,0,1 /?CCL9 + GET TMP,4 >?TMP1 + ZERO? ?TMP1 /?PRD16 + PUSH ?TMP1 + JUMP ?PEN14 +?PRD16: GET TMP,3 + GET STACK,4 +?PEN14: BTST STACK,32768 /?CCL9 + GET TMP,4 >?TMP1 + ZERO? ?TMP1 /?PRD19 + PUSH ?TMP1 + JUMP ?PEN17 +?PRD19: GET TMP,3 + GET STACK,4 +?PEN17: BAND STACK,256 + BAND STACK,32767 + ZERO? STACK \?CND8 +?CCL9: GET PARSE-RESULT,16 + BTST STACK,2 \?CCL22 + SET 'TMP,W?BE? + JUMP ?CND8 +?CCL22: SET 'TMP,W?BE +?CND8: GET TMP,3 >DATA + ZERO? SHORT /?CCL28 + GET DATA,2 >TMP + JUMP ?CND26 +?CCL28: GET DATA,3 >TMP +?CND26: ZERO? TMP \?CCL25 + CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN + RSTACK +?CCL25: CALL GET-SYNTAX,TMP,1,1 >TMP + ZERO? TMP \?CCL30 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL30: ZERO? N1 /?PRD35 + PUSH N1 + JUMP ?PEN33 +?PRD35: POP DATA-STACK >N1 + PUSH N1 +?PEN33: CALL DETERMINE-OBJ,STACK,1 >OBJ1 + ZERO? OBJ1 \?CCL32 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,N1 + RSTACK +?CCL32: PUT PARSE-RESULT,5,OBJ1 + GET TMP,0 + PUT PARSE-RESULT,4,STACK + RTRUE + + + .FUNCT RED-SBNA:ANY:0:2,N,TYP + CALL EXCH-4-5-Q,RED-SNBA,N,TYP + RSTACK + + + .FUNCT RED-SNBA:ANY:0:2,N,TYP,OK,ADJ,VERB,X,?TMP1 + GET PARSE-RESULT,1 >VERB + POP DATA-STACK >ADJ + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? VERB,?TMP1,STACK,132 >X \?CCL6 + GET X,1 + JUMP ?CND4 +?CCL6: PUSH FALSE-VALUE +?CND4: BTST STACK,1024 \?CCL3 + POP DATA-STACK + EQUAL? TRUE-VALUE,STACK /?CND1 + SET 'OK,TRUE-VALUE + JUMP ?CND1 +?CCL3: POP DATA-STACK + EQUAL? TRUE-VALUE,STACK \?CND1 + SET 'OK,TRUE-VALUE +?CND1: ZERO? OK /FALSE + CALL2 DETERMINE-SUBJ,VERB + ZERO? STACK /FALSE + GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD24 + PUSH ?TMP1 + JUMP ?PEN22 +?PRD24: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN22: BTST STACK,32768 /?CCL19 + GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD27 + PUSH ?TMP1 + JUMP ?PEN25 +?PRD27: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN25: BAND STACK,256 + BAND STACK,32767 + ZERO? STACK \FALSE +?CCL19: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >X + PUT X,1,1 + PUT X,3,INTADJ + PUT PARSE-RESULT,6,X + PUT PARSE-RESULT,11,ADJ + RETURN PARSE-RESULT + + + .FUNCT RED-SBNP:ANY:0:2,N,TYP + CALL EXCH-4-5-Q,RED-SNBP,N,TYP + RSTACK + + + .FUNCT RED-SNBP:ANY:0:2,N,TYP,OK,PP,VERB,X,?TMP1 + GET PARSE-RESULT,1 >VERB + POP DATA-STACK >PP + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? VERB,?TMP1,STACK,132 >X \?CCL6 + GET X,1 + JUMP ?CND4 +?CCL6: PUSH FALSE-VALUE +?CND4: BTST STACK,1024 \?CCL3 + POP DATA-STACK + EQUAL? TRUE-VALUE,STACK /?CND1 + SET 'OK,TRUE-VALUE + JUMP ?CND1 +?CCL3: POP DATA-STACK + EQUAL? TRUE-VALUE,STACK \?CND1 + SET 'OK,TRUE-VALUE +?CND1: ZERO? OK /FALSE + CALL2 DETERMINE-SUBJ,VERB + ZERO? STACK /FALSE + GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD25 + PUSH ?TMP1 + JUMP ?PEN23 +?PRD25: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN23: BTST STACK,32768 /?CCL20 + GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD28 + PUSH ?TMP1 + JUMP ?PEN26 +?PRD28: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN26: BAND STACK,256 + BAND STACK,32767 + ZERO? STACK \FALSE +?CCL20: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >X + PUT X,1,1 + PUT X,3,INTPP + PUT PARSE-RESULT,6,X + GET PARSE-RESULT,3 + CALL REDUCE-LOCATION,PP,STACK,2 >OK + ZERO? OK /?CCL31 + PUT PARSE-RESULT,9,OK + RETURN PARSE-RESULT +?CCL31: PUT PARSE-RESULT,9,PP + RETURN PARSE-RESULT + + + .FUNCT RED-SNBAP:ANY:0:2,N,TYP,OK,ADJ,PP,VERB,X,?TMP1 + GET PARSE-RESULT,1 >VERB + POP DATA-STACK >PP + POP DATA-STACK >ADJ + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? VERB,?TMP1,STACK,132 >X \?CCL6 + GET X,1 + JUMP ?CND4 +?CCL6: PUSH FALSE-VALUE +?CND4: BTST STACK,1024 \?CCL3 + POP DATA-STACK + EQUAL? TRUE-VALUE,STACK /?CND1 + SET 'OK,TRUE-VALUE + JUMP ?CND1 +?CCL3: POP DATA-STACK + EQUAL? TRUE-VALUE,STACK \?CND1 + SET 'OK,TRUE-VALUE +?CND1: ZERO? OK /FALSE + CALL2 DETERMINE-SUBJ,VERB + ZERO? STACK /FALSE + GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD25 + PUSH ?TMP1 + JUMP ?PEN23 +?PRD25: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN23: BTST STACK,32768 /?CCL20 + GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD28 + PUSH ?TMP1 + JUMP ?PEN26 +?PRD28: GET PARSE-RESULT,5 + GET STACK,4 + GET STACK,2 + GET STACK,3 + GET STACK,4 +?PEN26: BAND STACK,256 + BAND STACK,32767 + ZERO? STACK \FALSE +?CCL20: CALL DO-PMEM-ALLOC,4,4 >X + PUT X,1,1 + PUT X,3,INTPP + SET 'OK,X + PUT PARSE-RESULT,6,OK + GET PARSE-RESULT,3 + CALL REDUCE-LOCATION,PP,STACK,2 >OK + ZERO? OK /?CCL31 + PUT PARSE-RESULT,9,OK + JUMP ?CND29 +?CCL31: GET PP,2 + CALL2 DETERMINE-OBJ,STACK >OK + ZERO? OK /?CND32 + PUT PP,2,OK + PUTB PP,1,PMEM-TYPE-LOCATION +?CND32: PUT PARSE-RESULT,9,PP +?CND29: PUT PARSE-RESULT,11,ADJ + RETURN PARSE-RESULT + + + .FUNCT P-PP-OBJ:ANY:0:0,TMP + GET PARSE-RESULT,9 >TMP + ZERO? TMP /FALSE + GETB TMP,1 + EQUAL? STACK,6 \FALSE + GET TMP,2 >TMP + ZERO? TMP /FALSE + GET TMP,3 + RSTACK + + + .FUNCT P-PP-PREP:ANY:0:0,TMP + GET PARSE-RESULT,9 >TMP + ZERO? TMP /FALSE + GET TMP,1 + RSTACK + + + .FUNCT RED-SQBN:ANY:0:2,N,TYP,?TMP1 + GET PARSE-RESULT,1 >?TMP1 + POP DATA-STACK + CALL DETERMINE-SUBJ,?TMP1,TRUE-VALUE,STACK + ZERO? STACK /FALSE + RETURN PARSE-RESULT + + + .FUNCT RED-BE:ANY:0:2,N,TYP,E + EQUAL? N,1 \TRUE + POP DATA-STACK >E + EQUAL? W?BE,E \FALSE + RETURN E + + + .FUNCT RED-NOT:ANY:0:2,N,TYP,E + EQUAL? N,1 \TRUE + POP DATA-STACK >E + EQUAL? W?NOT,E \FALSE + RETURN E + + + .FUNCT RED-CANDO:ANY:0:2,N,TYP,TMP,OBJ,SUBJ,WD,END,?TMP1 + ZERO? N /TRUE + EQUAL? N,1 \?CCL5 + POP DATA-STACK >SUBJ + GET SUBJ,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD13 + PUSH ?TMP1 + JUMP ?PEN11 +?PRD13: GET SUBJ,2 + GET STACK,3 + GET STACK,4 +?PEN11: BTST STACK,32768 /?CCL8 + GET SUBJ,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD16 + PUSH ?TMP1 + JUMP ?PEN14 +?PRD16: GET SUBJ,2 + GET STACK,3 + GET STACK,4 +?PEN14: BAND STACK,256 + BAND STACK,32767 + ZERO? STACK \FALSE +?CCL8: CALL2 DETERMINE-OBJ,SUBJ >OBJ + ZERO? OBJ \?CCL19 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,SUBJ + RSTACK +?CCL19: GET OBJ,1 + EQUAL? STACK,1 \FALSE + GET OBJ,3 + FSET? STACK,PERSONBIT \FALSE + PUT PARSE-RESULT,13,OBJ + RTRUE +?CCL5: POP DATA-STACK >SUBJ + CALL2 PMEM?,SUBJ + ZERO? STACK /?CCL26 + POP DATA-STACK + GET PARSE-RESULT,16 + BOR PARSE-NOT,STACK + PUT PARSE-RESULT,16,STACK + JUMP ?CND24 +?CCL26: EQUAL? TRUE-VALUE,SUBJ /?CND27 + GET PARSE-RESULT,16 + BOR PARSE-NOT,STACK + PUT PARSE-RESULT,16,STACK +?CND27: POP DATA-STACK >SUBJ + EQUAL? N,3 \?CND24 + PUT PARSE-RESULT,14,SUBJ +?CND24: POP DATA-STACK >TMP + EQUAL? N,3 \?CCL33 + SET 'SUBJ,TMP + GET PARSE-RESULT,14 >TMP + JUMP ?CND31 +?CCL33: GET PARSE-RESULT,16 + BOR PARSE-QUESTION,STACK + PUT PARSE-RESULT,16,STACK + PUT PARSE-RESULT,14,TMP +?CND31: GET TMP,4 >?TMP1 + ZERO? ?TMP1 /?PRD42 + PUSH ?TMP1 + JUMP ?PEN40 +?PRD42: GET TMP,3 + GET STACK,4 +?PEN40: BTST STACK,32768 /?PRD37 + GET TMP,4 >?TMP1 + ZERO? ?TMP1 /?PRD45 + PUSH ?TMP1 + JUMP ?PEN43 +?PRD45: GET TMP,3 + GET STACK,4 +?PEN43: BAND STACK,1 + BAND STACK,32767 + ZERO? STACK \?CND34 +?PRD37: GET TMP,3 >OBJ + ZERO? OBJ /?CND34 + SET 'TMP,OBJ +?CND34: GET TMP,3 + GET STACK,2 >TMP + ZERO? TMP \?CCL48 + CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN + RSTACK +?CCL48: CALL GET-SYNTAX,TMP,1,1 >TMP + ZERO? TMP \?CCL50 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL50: CALL DETERMINE-OBJ,SUBJ,1 >OBJ + ZERO? OBJ \?CCL52 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,SUBJ + RSTACK +?CCL52: PUT PARSE-RESULT,13,OBJ + PUT PARSE-RESULT,15,TMP + EQUAL? N,3 /TRUE + POP DATA-STACK >TMP + EQUAL? TRUE-VALUE,TMP \?CCL57 + PUSH 0 + JUMP ?CND55 +?CCL57: PUSH TMP +?CND55: PUT PARSE-RESULT,10,STACK + EQUAL? TMP,W?WHAT,W?WHO \TRUE + INTBL? W?PERIOD,TLEXV,P-LEN,132 >SUBJ /?BOGUS60 +?BOGUS60: ZERO? SUBJ \?CND61 + INTBL? W?THEN,TLEXV,P-LEN,132 >SUBJ /?CND61 +?CND61: ZERO? SUBJ \?CND64 + INTBL? W??,TLEXV,P-LEN,132 >SUBJ /?CND64 +?CND64: ZERO? SUBJ \?CND67 + SUB P-LEN,1 + MUL STACK,4 + ADD TLEXV,STACK >SUBJ +?CND67: SET 'END,4 +?PRG69: GET SUBJ,0 >WD + EQUAL? TMP,WD /TRUE + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD80 + PUSH ?TMP1 + JUMP ?PEN78 +?PRD80: GET WD,3 + GET STACK,4 +?PEN78: BTST STACK,32768 /?CCL75 + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD83 + PUSH ?TMP1 + JUMP ?PEN81 +?PRD83: GET WD,3 + GET STACK,4 +?PEN81: BAND STACK,1 + BAND STACK,32767 + ZERO? STACK /?CCL75 + ADD SUBJ,4 + ICALL INSERT-WHAT,TMP,STACK + RTRUE +?CCL75: GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD90 + PUSH ?TMP1 + JUMP ?PEN88 +?PRD90: GET WD,3 + GET STACK,4 +?PEN88: BTST STACK,32768 /?CCL85 + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD93 + PUSH ?TMP1 + JUMP ?PEN91 +?PRD93: GET WD,3 + GET STACK,4 +?PEN91: BAND STACK,2048 + BAND STACK,32767 + ZERO? STACK /?CCL85 + ADD SUBJ,END + ICALL INSERT-WHAT,TMP,STACK + RTRUE +?CCL85: SUB SUBJ,4 >SUBJ + GRTR? TLEXV,SUBJ \?PRG69 + SET 'END,0 + RTRUE + + + .FUNCT INSERT-WHAT:ANY:2:2,TMP,SUBJ + SUB SUBJ,4 + GET STACK,0 + EQUAL? TMP,STACK /FALSE + SUB SUBJ,P-LEXV + DIV STACK,2 + ICALL INSERT-ADJS-WD,STACK,TMP + INC 'P-OLEN + ICALL2 COPY-INPUT,1 + SET 'P-OFLAG,0 + RTRUE + + .ENDSEG + + .ENDI diff --git a/defs.zil b/defs.zil new file mode 100644 index 0000000..1263f46 --- /dev/null +++ b/defs.zil @@ -0,0 +1,44 @@ +"DEFS for MILLIWAYS +Copyright (c) 1988 Infocom, Inc. All rights reserved." + +> + + + +>> +>> +>> +> + + + + + + + + + + + + + + + + + + + + +>>> diff --git a/find.zabstr b/find.zabstr new file mode 100644 index 0000000..7596fbb --- /dev/null +++ b/find.zabstr @@ -0,0 +1,65 @@ +)("WORD-FLAGS-IN-TABLE" T)( +"IN-ZILCH" T)) ()> + + + + +)> +THINGS + + + + +> + >>
) (T >)>) (< +TYPE? .VAL FIX LVAL GVAL> ) (T >)>) (T ) (T >)>>)>) (T < +FORM NOT >>)>> + + , +FIND-FLAGS-GWIM>>>> +> + + + +> + + + + + + + + + + + + + + >> >>>>> +> +> + + < +DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0)) > > ATOM> ) ( LIST +> >>) (T )> ) ( ATOM> ) ( LIST> >>) (T )> 0) (<==? .ACT 1 +> > ADJ>) (T ADJ>> <1 .X>!>) FORM>>)> 0) (< +==? .NCT 1> > NOUN>) (T NOUN>> <2 .X>!>) FORM>>)>>) (<1? .N> ) (T <1 .X>)>> .LIST>> (<> >)> > < +OBJECT PSEUDO-OBJECT (LOC LOCAL-GLOBALS) (DESC "pseudoxxx") (ACTION 0)>> + + \ No newline at end of file diff --git a/find.zap b/find.zap new file mode 100644 index 0000000..9f6f195 --- /dev/null +++ b/find.zap @@ -0,0 +1,597 @@ + + .SEGMENT "0" + + + .FUNCT FIND-DESCENDANTS:ANY:2:2,PARENT,FLAGS,F,FOBJ + SET 'F,FINDER + EQUAL? PARENT,GLOBAL-HERE \?CND1 + SET 'PARENT,HERE +?CND1: FIRST? PARENT >FOBJ \TRUE +?PRG6: CALL2 VISIBLE?,FOBJ + ZERO? STACK /?CND8 + BTST FLAGS,8 /?CND10 + BTST FLAGS,1 \?PRF16 + PUSH 1 + JUMP ?PEN14 +?PRF16: PUSH 0 +?PEN14: CALL MATCH-OBJECT,FOBJ,F,STACK + ZERO? STACK /FALSE +?CND10: BTST FLAGS,4 \?CND8 + FIRST? FOBJ \?CND8 + EQUAL? FOBJ,WINNER /?CND8 + FSET? FOBJ,SEARCHBIT \?PRD24 + FSET? FOBJ,OPENBIT /?CCL18 + FSET? FOBJ,TRANSBIT /?CCL18 +?PRD24: FSET? FOBJ,SURFACEBIT \?CND8 +?CCL18: BTST FLAGS,1 \?CCL33 + PUSH 5 + JUMP ?CND31 +?CCL33: PUSH 4 +?CND31: CALL FIND-DESCENDANTS,FOBJ,STACK + ZERO? STACK /FALSE +?CND8: NEXT? FOBJ >FOBJ /?PRG6 + RTRUE + + + .FUNCT EXCLUDED?:ANY:2:2,FOBJ,F,EXC,PHRASE,CT,VEC,VV + GET F,8 >EXC + ZERO? EXC /FALSE + GET EXC,3 >PHRASE + GET PHRASE,1 >CT + ADD PHRASE,6 >VEC +?PRG6: DLESS? 'CT,0 \?CND8 + SET 'VV,FALSE-VALUE + JUMP ?REP7 +?CND8: GET VEC,0 + EQUAL? FOBJ,STACK \?CND10 + SET 'VV,TRUE-VALUE +?REP7: ZERO? VV \TRUE + GET EXC,1 >EXC + ZERO? EXC /FALSE + GET EXC,3 >PHRASE + GET PHRASE,1 >CT + ADD PHRASE,6 >VEC + JUMP ?PRG6 +?CND10: ADD VEC,4 >VEC + JUMP ?PRG6 + + + .FUNCT INVALID-OBJECT?:ANY:1:1,OBJ + RFALSE + + + .FUNCT MATCH-OBJECT:ANY:3:3,FOBJ,F,INCLUDE?,NOUN,ADJS,APP,TB,RES,?TMP1 + GET F,9 >RES + FSET? FOBJ,INVISIBLE /TRUE + GET F,6 >NOUN + EQUAL? NOUN,FALSE-VALUE,W?ONE /?PRD6 + GETPT FOBJ,P?SYNONYM >TB + ZERO? TB /TRUE + PTSIZE TB + DIV STACK,2 + INTBL? NOUN,TB,STACK \TRUE +?PRD6: GET F,7 >ADJS + ZERO? ADJS /?PRD11 + CALL CHECK-ADJS,FOBJ,F,ADJS + ZERO? STACK /TRUE +?PRD11: GET F,5 >ADJS + ZERO? ADJS /?PRD14 + CALL CHECK-ADJS,FOBJ,F,ADJS + ZERO? STACK /TRUE +?PRD14: CALL EXCLUDED?,FOBJ,F + ZERO? STACK \TRUE + GET F,1 + BTST STACK,1 /?CTR2 + CALL2 INVALID-OBJECT?,FOBJ + ZERO? STACK \TRUE +?CTR2: ZERO? INCLUDE? /TRUE + GET F,5 >ADJS + ZERO? ADJS /?CCL24 + GET ADJS,4 >?TMP1 + GETPT FOBJ,P?ADJECTIVE + PTSIZE STACK + DIV STACK,2 + EQUAL? ?TMP1,STACK \?CCL24 + PUT RES,1,1 + PUT RES,2,FALSE-VALUE + PUT RES,4,FOBJ + EQUAL? FOBJ,HERE \FALSE + PUT RES,4,GLOBAL-HERE + RFALSE +?CCL24: GET F,0 >APP + ZERO? APP /?CCL31 + GET F,1 + BTST STACK,1 /?CCL31 + GET RES,1 + ZERO? STACK /?CTR35 + GET F,2 + ZERO? STACK /?CCL36 +?CTR35: CALL ADD-OBJECT,FOBJ,F + RSTACK +?CCL36: CALL TEST-OBJECT,FOBJ,APP,F + ZERO? STACK /FALSE + GET RES,1 + EQUAL? STACK,1 \?CCL43 + GET RES,4 + CALL TEST-OBJECT,STACK,APP,F + ZERO? STACK \?CCL46 + PUT RES,4,FOBJ + EQUAL? FOBJ,HERE \TRUE + PUT RES,4,GLOBAL-HERE + RTRUE +?CCL46: CALL ADD-OBJECT,FOBJ,F + RSTACK +?CCL43: CALL ADD-OBJECT,FOBJ,F + RSTACK +?CCL31: ZERO? APP \?CCL50 + GET F,1 + BTST STACK,1 \?CTR52 + GET F,2 + ZERO? STACK /TRUE +?CTR52: CALL ADD-OBJECT,FOBJ,F + RSTACK +?CCL50: CALL TEST-OBJECT,FOBJ,APP,F + ZERO? STACK /TRUE + CALL ADD-OBJECT,FOBJ,F + RSTACK + + + .FUNCT TEST-OBJECT:ANY:3:3,FOBJ,APP,F,N,NN,?TMP1 + BAND APP,65280 + ZERO? STACK \?CCL3 + BTST APP,128 \?CCL6 + BAND APP,63 + FSET? FOBJ,STACK /FALSE + RTRUE +?CCL6: FSET? FOBJ,APP /TRUE + RFALSE +?CCL3: GET APP,1 + BTST STACK,256 \?CND12 + GET APP,1 + BAND STACK,63 + GETP FOBJ,STACK >?TMP1 + GET APP,2 + EQUAL? ?TMP1,STACK /TRUE + RFALSE +?CND12: GET APP,0 >N +?PRG17: GET APP,N >NN + BTST NN,128 \?CCL21 + BAND NN,63 + FSET? FOBJ,STACK /?CND19 + RTRUE +?CCL21: FSET? FOBJ,NN /TRUE +?CND19: DLESS? 'N,1 \?PRG17 + RFALSE + + + .FUNCT ADD-OBJECT:ANY:2:2,OBJ,F,VEC,NC,DOIT?,SYN,WHICH,?TMP1 + GET F,9 >VEC + SET 'DOIT?,TRUE-VALUE + GET F,3 >SYN + GET F,4 >WHICH + EQUAL? OBJ,HERE \?CND1 + SET 'OBJ,GLOBAL-HERE +?CND1: GET F,2 + ZERO? STACK \?CND3 + ZERO? SYN /?CND3 + GET VEC,1 + EQUAL? 1,STACK \?CND3 + CALL MULTIPLE-EXCEPTION?,OBJ,SYN,WHICH,F + ZERO? STACK /?CCL10 + SET 'DOIT?,FALSE-VALUE + JUMP ?CND3 +?CCL10: GET VEC,4 + CALL MULTIPLE-EXCEPTION?,STACK,SYN,WHICH,F + ZERO? STACK /?CND3 + PUT VEC,4,OBJ + SET 'DOIT?,FALSE-VALUE +?CND3: ZERO? DOIT? /TRUE + GET F,2 + ZERO? STACK /?PRD17 + GET F,3 + ZERO? STACK /?PRD17 + GET F,3 >?TMP1 + GET F,4 + CALL MULTIPLE-EXCEPTION?,OBJ,?TMP1,STACK,F + ZERO? STACK \TRUE +?PRD17: CALL NOT-IN-FIND-RES?,OBJ,VEC >WHICH + ZERO? WHICH /TRUE + GET VEC,1 + ADD 1,STACK + PUT VEC,1,STACK + PUT WHICH,0,OBJ + GET F,2 + EQUAL? STACK,NP-QUANT-A /FALSE + RTRUE + + + .FUNCT NOT-IN-FIND-RES?:ANY:2:3,OBJ,VEC,NO-CHANGE?,CT,SZ,ANS,NVEC,NEW-OBJECT + GET VEC,1 >CT + GET VEC,0 >SZ +?PRG1: ADD VEC,8 >ANS + LESS? CT,1 \?CCL5 + RETURN ANS +?CCL5: GRTR? CT,SZ \?CCL7 + SUB CT,SZ >CT + JUMP ?CND3 +?CCL7: SET 'SZ,CT +?CND3: INTBL? OBJ,ANS,SZ /FALSE + GET VEC,2 >NVEC + ZERO? NVEC /?CCL12 + SET 'VEC,NVEC + SET 'SZ,FIND-RES-MAXOBJ + JUMP ?PRG1 +?CCL12: LESS? SZ,FIND-RES-MAXOBJ \?CCL14 + MUL 2,SZ + ADD ANS,STACK + RSTACK +?CCL14: ZERO? NO-CHANGE? \TRUE + SET 'SZ,FIND-RES-MAXOBJ + CALL DO-PMEM-ALLOC,7,9 >NEW-OBJECT + SET 'NVEC,NEW-OBJECT + PUT VEC,2,NVEC + ADD NVEC,8 + RSTACK + + + .FUNCT EVERYWHERE-VERB?:ANY:0:2,WHICH,SYNTAX,SYN + ASSIGNED? 'WHICH /?CND1 + GET FINDER,4 >WHICH +?CND1: ASSIGNED? 'SYNTAX /?CND3 + GET PARSE-RESULT,3 >SYNTAX +?CND3: EQUAL? WHICH,1 \?CCL7 + GETB SYNTAX,5 >SYN + JUMP ?CND5 +?CCL7: GETB SYNTAX,9 >SYN +?CND5: BTST SYN,128 \FALSE + BTST SYN,64 \TRUE + RFALSE + + + .FUNCT MULTIPLE-EXCEPTION?:ANY:4:4,OBJ,SYNTAX,WHICH,F,L,VB + LOC OBJ >L + GET SYNTAX,0 >VB + EQUAL? OBJ,FALSE-VALUE,ROOMS \?CCL3 + INC 'P-NOT-HERE + RTRUE +?CCL3: CALL EVERYWHERE-VERB?,WHICH,SYNTAX + ZERO? STACK \?CCL5 + CALL2 ACCESSIBLE?,OBJ + ZERO? STACK /TRUE +?CCL5: EQUAL? VB,V?TAKE \?CCL9 + GET F,6 + ZERO? STACK \?CCL9 + EQUAL? WHICH,1 \?CCL9 + FSET? OBJ,TAKEBIT /?CCL15 + FSET? OBJ,TRYTAKEBIT \TRUE +?CCL15: EQUAL? L,WINNER /TRUE + RFALSE +?CCL9: EQUAL? VB,V?DROP \FALSE + IN? OBJ,WINNER \TRUE + RFALSE + + + .FUNCT CHECK-ADJS-THERE?:ANY:1:1,OWNER,TMP + GET OWNER-SR-THERE,1 >TMP + ZERO? TMP /FALSE + INTBL? OWNER,OWNER-SR-THERE+8,TMP /TRUE + RFALSE + + + .FUNCT CHECK-ADJS:ANY:3:3,OBJ,F,ADJS,CNT,TMP,OWNER,ID,VEC,CT,ADJ,FL,OADJS,NUM,?TMP1 + GETP OBJ,P?OWNER >OWNER + GETB ADJS,1 + EQUAL? STACK,2 /?CCL2 + GET ADJS,2 >TMP + ZERO? TMP /?CND1 +?CCL2: SET 'ID,OWNER + LESS? 0,ID \?CCL7 + SET 'ID,OWNER + GRTR? ID,LAST-OBJECT /?CCL7 + EQUAL? OWNER,TMP /?CND1 + EQUAL? OWNER,ROOMS \?CCL14 + GET OWNER-SR-HERE,1 + ZERO? STACK /?CCL17 + GET OWNER-SR-HERE,4 >ID + JUMP ?CND1 +?CCL17: GET OWNER-SR-THERE,1 + ZERO? STACK /FALSE + GET OWNER-SR-THERE,4 >ID + JUMP ?CND1 +?CCL14: GET OWNER-SR-HERE,1 >TMP + ZERO? TMP \?CCL21 + CALL2 CHECK-ADJS-THERE?,OWNER + ZERO? STACK \?CND1 + RFALSE +?CCL21: INTBL? OWNER,OWNER-SR-HERE+8,TMP /?CND1 + CALL2 CHECK-ADJS-THERE?,OWNER + ZERO? STACK \?CND1 + RFALSE +?CCL7: ZERO? OWNER /?CCL28 + GET OWNER-SR-HERE,1 >CNT + ZERO? CNT \?CCL31 + SET 'ID,PLAYER + JUMP ?CND1 +?CCL31: ADD OWNER,2 >TMP + SET 'VEC,OWNER-SR-HERE+8 +?PRG33: DLESS? 'CNT,0 /FALSE + GET VEC,0 >?TMP1 + GET OWNER,0 + INTBL? ?TMP1,TMP,STACK >ID \?CCL39 + GET ID,0 >ID + JUMP ?CND1 +?CCL39: ADD VEC,2 >VEC + JUMP ?PRG33 +?CCL28: LESS? 0,TMP \?CCL41 + GRTR? TMP,LAST-OBJECT /?CCL41 + CALL HELD?,OBJ,TMP + ZERO? STACK \?CND1 + RFALSE +?CCL41: GET OWNER-SR-HERE,1 >TMP + ZERO? TMP /FALSE + LOC OBJ + INTBL? STACK,OWNER-SR-HERE+8,TMP >ID \FALSE +?CND1: EQUAL? ID,0,OBJ /?CND50 + GET F,9 + PUT STACK,3,ID +?CND50: GETB ADJS,1 + EQUAL? STACK,2 /TRUE + ADD ADJS,10 >VEC + GET ADJS,4 >CT + GETPT OBJ,P?ADJECTIVE >OADJS + PTSIZE OADJS + DIV STACK,2 >NUM +?PRG54: DLESS? 'CT,0 /TRUE + GET VEC,CT >ADJ + SET 'ID,ADJ + EQUAL? ADJ,W?NO.WORD /?PRG54 + INTBL? ID,OADJS,NUM /?PRG54 + EQUAL? ID,W?CLOSED,W?SHUT \?CCL63 + FSET? OBJ,OPENBIT \?PRG54 +?CCL63: EQUAL? ID,W?OPEN \FALSE + FSET? OBJ,OPENBIT /?PRG54 + RFALSE + + + .FUNCT SEARCH-IN-LG?:ANY:1:1,OBJ + RFALSE + + + .FUNCT EXCLUDE-HERE-OBJECT?:ANY:0:0 + RFALSE + + + .FUNCT FIND-OBJECTS:ANY:0:3,SEARCH,PARENT,NO-ADJACENT,GLBS,CONT?,N,RES,NEW-OBJECT,FLAG,?PR-FLAG,?TMP1,?TMP2 + ASSIGNED? 'SEARCH /?CND1 + GET FINDER,4 + EQUAL? 1,STACK \?CCL5 + GET PARSE-RESULT,3 + GETB STACK,5 >SEARCH + JUMP ?CND1 +?CCL5: GET PARSE-RESULT,3 + GETB STACK,9 >SEARCH +?CND1: SET 'CONT?,TRUE-VALUE + GET FINDER,9 >RES + PUT RES,1,0 + PUT RES,2,FALSE-VALUE + ZERO? PARENT /?CCL8 + CALL FIND-DESCENDANTS,PARENT,7 + ZERO? STACK /?CND6 + GET RES,1 + ZERO? STACK \?CND6 +?CCL8: ZERO? PARENT /?CND13 + ZERO? NO-ADJACENT \?CND13 + GET FINDER,5 >GLBS + ZERO? GLBS \?CND13 + CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT + PUT NEW-OBJECT,2,PARENT + SET 'GLBS,NEW-OBJECT + PUT FINDER,5,GLBS +?CND13: BTST SEARCH,128 \?CND19 + BTST SEARCH,64 /?CND19 + FIRST? GENERIC-OBJECTS \?CND19 + FIRST? GENERIC-OBJECTS >NEW-OBJECT /?PRG25 +?PRG25: CALL MATCH-OBJECT,NEW-OBJECT,FINDER,TRUE-VALUE + ZERO? STACK /?REP26 + NEXT? NEW-OBJECT >NEW-OBJECT /?PRG25 +?REP26: GET RES,1 >CONT? + ZERO? CONT? /?CND19 + EQUAL? CONT?,1 /TRUE + RFALSE +?CND19: SET 'NEW-OBJECT,FALSE-VALUE +?PRG35: ZERO? NEW-OBJECT \?PRD40 + BAND SEARCH,12 + ZERO? STACK \?CCL38 +?PRD40: ZERO? NEW-OBJECT /?CND37 +?CCL38: ZERO? NEW-OBJECT \?CTR44 + BTST SEARCH,8 \?CCL45 +?CTR44: SET '?PR-FLAG,6 + JUMP ?CND43 +?CCL45: SET '?PR-FLAG,2 +?CND43: ZERO? NEW-OBJECT \?CTR49 + BAND SEARCH,12 + ZERO? STACK /?CCL50 +?CTR49: BOR 1,?PR-FLAG >FLAG + JUMP ?CND48 +?CCL50: BAND ?PR-FLAG,-2 >FLAG +?CND48: ZERO? NEW-OBJECT \?CCL55 + BTST SEARCH,4 /?CCL55 + BOR 8,FLAG + JUMP ?CND53 +?CCL55: BAND FLAG,-9 +?CND53: CALL FIND-DESCENDANTS,WINNER,STACK >CONT? +?CND37: ZERO? NEW-OBJECT \?CCL59 + BAND SEARCH,3 + ZERO? STACK /?CND58 +?CCL59: ZERO? NEW-OBJECT \?CTR63 + BAND SEARCH,3 + ZERO? STACK /?CCL64 +?CTR63: SET '?PR-FLAG,3 + JUMP ?CND62 +?CCL64: SET '?PR-FLAG,2 +?CND62: ZERO? NEW-OBJECT \?CTR69 + BTST SEARCH,2 \?CCL70 +?CTR69: BOR 4,?PR-FLAG >FLAG + JUMP ?CND68 +?CCL70: BAND ?PR-FLAG,-5 >FLAG +?CND68: ZERO? NEW-OBJECT \?CCL75 + BTST SEARCH,1 /?CCL75 + BOR 8,FLAG + JUMP ?CND73 +?CCL75: BAND FLAG,-9 +?CND73: CALL FIND-DESCENDANTS,HERE,STACK >CONT? +?CND58: GET RES,1 + ZERO? STACK \?CND6 + BTST SEARCH,15 /?CND78 + ZERO? NEW-OBJECT \?CND78 + GET TLEXV,0 >GLBS + ZERO? GLBS /?CCL86 + GET GLBS,4 + ZERO? STACK \?CTR85 + GET GLBS,3 + ZERO? STACK /?CCL86 +?CTR85: SET 'NEW-OBJECT,TRUE-VALUE + JUMP ?PRG35 +?CCL86: BTST SEARCH,64 \?CND78 + BTST SEARCH,128 \FALSE +?CND78: GETPT HERE,P?GLOBAL >GLBS + ZERO? GLBS /?CND94 + PTSIZE GLBS + DIV STACK,2 >N +?PRG97: DLESS? 'N,0 /?CND94 + GET GLBS,N >?PR-FLAG + CALL MATCH-OBJECT,?PR-FLAG,FINDER,TRUE-VALUE >CONT? + ZERO? CONT? /?CND94 + FIRST? ?PR-FLAG \?PRG97 + BTST SEARCH,2 \?PRG97 + CALL2 SEARCH-IN-LG?,?PR-FLAG + ZERO? STACK /?PRG97 + CALL FIND-DESCENDANTS,?PR-FLAG,FD-INCLUDE? >CONT? + ZERO? CONT? \?PRG97 +?CND94: ZERO? CONT? /?CND111 + CALL1 EXCLUDE-HERE-OBJECT? + ZERO? STACK \?CND111 + CALL MATCH-OBJECT,HERE,FINDER,TRUE-VALUE >CONT? +?CND111: ZERO? CONT? /?CND115 + LOC PLAYER + EQUAL? HERE,STACK /?CND115 + LOC PLAYER + GETP STACK,P?THINGS + ZERO? STACK /?CND115 + LOC PLAYER + CALL TEST-THINGS,STACK,FINDER >CONT? +?CND115: ZERO? CONT? /?CND120 + GETP HERE,P?THINGS + ZERO? STACK /?CND120 + CALL TEST-THINGS,HERE,FINDER >CONT? +?CND120: GET RES,1 + ZERO? STACK /?CND124 + SET 'CONT?,FALSE-VALUE +?CND124: ZERO? CONT? /?CND126 + BTST SEARCH,2 \?CCL130 + PUSH 5 + JUMP ?CND128 +?CCL130: PUSH 1 +?CND128: CALL FIND-DESCENDANTS,GLOBAL-OBJECTS,STACK >CONT? +?CND126: ZERO? CONT? /?CND131 + GET RES,1 + ZERO? STACK \?CND131 + ZERO? NO-ADJACENT \?CND131 + GETP HERE,P?ADJACENT >GLBS + ZERO? GLBS /?CND131 + GETB GLBS,0 >N +?PRG137: GETB GLBS,N + ZERO? STACK /?CCL141 + DEC 'N + GETB GLBS,N + ICALL FIND-OBJECTS,1,STACK,TRUE-VALUE + JUMP ?CND139 +?CCL141: DEC 'N +?CND139: DLESS? 'N,1 \?PRG137 + GET RES,1 + ZERO? STACK /?CND131 + SET 'CONT?,FALSE-VALUE +?CND131: ZERO? CONT? /?CND6 + GET RES,1 + ZERO? STACK \?CND6 + BTST SEARCH,128 \?PRD152 + BTST SEARCH,64 \?CCL147 +?PRD152: GET PARSE-RESULT,1 >?TMP2 + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? ?TMP2,?TMP1,STACK,132 >FLAG \?CCL157 + GET FLAG,1 + JUMP ?CND155 +?CCL157: PUSH FALSE-VALUE +?CND155: BTST STACK,512 \?CND6 +?CCL147: SET '?PR-FLAG,1 +?PRG158: CALL MATCH-OBJECT,?PR-FLAG,FINDER,TRUE-VALUE + ZERO? STACK /?CND6 + IGRTR? '?PR-FLAG,LAST-OBJECT \?PRG158 +?CND6: GET RES,1 + EQUAL? STACK,1 /TRUE + RFALSE + + + .FUNCT TEST-THINGS:ANY:2:2,RM,F,CT,RMG,RMGL,TTBL,NOUN,XCT,V,X,?TMP1 + GETP RM,P?THINGS >RMG + GET RMG,0 >RMGL + ADD RMG,2 >RMG + GET F,5 >CT + ZERO? CT /?CND1 + GET CT,4 >CT +?CND1: GET F,6 >NOUN + GET F,5 + ADD STACK,10 >V +?PRG3: GET RMG,0 >TTBL + EQUAL? NOUN,W?ONE /?PRD8 + GETB TTBL,1 >XCT + EQUAL? XCT,1 \?PRD11 + GET TTBL,2 + EQUAL? NOUN,STACK /?PRD8 +?PRD11: GET TTBL,2 + INTBL? NOUN,STACK,XCT \?CND5 +?PRD8: ZERO? CT /?PRD14 + GETB TTBL,0 >XCT + EQUAL? XCT,1 \?PRD17 + GET V,0 >?TMP1 + GET TTBL,1 + EQUAL? ?TMP1,STACK /?PRD14 +?PRD17: GET V,0 >?TMP1 + GET TTBL,1 + INTBL? ?TMP1,STACK,XCT \?CND5 +?PRD14: GET F,7 + ZERO? STACK /?CCL6 + GET OWNER-SR-HERE,1 + EQUAL? 1,STACK \?CND5 + GET OWNER-SR-HERE,4 + EQUAL? PSEUDO-OBJECT,STACK \?CND5 + EQUAL? LAST-PSEUDO-LOC,RM \?CND5 + GETP PSEUDO-OBJECT,P?ACTION >?TMP1 + GET RMG,1 + EQUAL? ?TMP1,STACK \?CND5 +?CCL6: SET 'LAST-PSEUDO-LOC,RM + GET RMG,1 + PUTP PSEUDO-OBJECT,P?ACTION,STACK + GETPT PSEUDO-OBJECT,P?ACTION + SUB STACK,7 >V + COPYT NOUN,V,6 + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? NOUN,?TMP1,STACK,132 >X \?CCL31 + GET X,1 + JUMP ?CND29 +?CCL31: PUSH FALSE-VALUE +?CND29: BTST STACK,PLURAL-FLAG \?CCL28 + FSET PSEUDO-OBJECT,PLURAL + JUMP ?CND26 +?CCL28: FCLEAR PSEUDO-OBJECT,PLURAL +?CND26: ICALL ADD-OBJECT,PSEUDO-OBJECT,F + RFALSE +?CND5: ADD RMG,4 >RMG + DLESS? 'RMGL,1 \?PRG3 + RTRUE + + .ENDSEG + + .ENDI diff --git a/global.zabstr b/global.zabstr new file mode 100644 index 0000000..346ae7b --- /dev/null +++ b/global.zabstr @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + +> +> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/global.zap b/global.zap new file mode 100644 index 0000000..38b1ca9 --- /dev/null +++ b/global.zap @@ -0,0 +1,247 @@ + + + .FUNCT LOCAL-GLOBALS-F:ANY:0:0 + CALL1 REMOTE-VERB? + ZERO? STACK \FALSE + CALL2 NOT-HERE,LOCAL-GLOBALS + RSTACK + + + .FUNCT FRUSTRATION-F:ANY:0:0 + EQUAL? PRSA,V?ENJOY \FALSE + PRINT ZEN + CRLF + RTRUE + + + .FUNCT DO-INSTEAD-OF:ANY:2:2,OBJ1,OBJ2 + EQUAL? PRSI,OBJ2 \?CCL3 + ICALL PERFORM,PRSA,PRSO,OBJ1 + RTRUE +?CCL3: EQUAL? PRSO,OBJ2 \?CCL5 + ICALL PERFORM,PRSA,OBJ1,PRSI + RTRUE +?CCL5: CALL1 V-FOO + RSTACK + + + .FUNCT TURN-F:ANY:0:0 + EQUAL? PRSA,V?USE \FALSE + ICALL PERFORM,V?WAIT-FOR,PRSO + RTRUE + + + .FUNCT IT-F:ANY:0:0 + EQUAL? PRSI,IT \?PRD5 + EQUAL? PRSA,V?TELL-ABOUT /?CCL3 + EQUAL? PRSA,V?SEARCH-FOR,V?ASK-FOR,V?ASK-ABOUT /?CCL3 +?PRD5: EQUAL? PRSO,IT \FALSE + EQUAL? PRSA,V?FIND,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE +?CCL3: PRINTR """I'm not sure what you're talking about.""" + + + .FUNCT FLOOR-F:ANY:0:0,OBJ,N + EQUAL? PRSA,V?CLIMB-ON \?CCL3 + CALL ALREADY,WINNER,STR?218 + RSTACK +?CCL3: EQUAL? PRSA,V?THROW-AT,V?PUT \?CCL5 + EQUAL? PRSI,FLOOR \?CCL5 + MOVE PRSO,HERE + PRINTR "Okay." +?CCL5: EQUAL? PRSA,V?SEARCH-FOR /?CCL9 + EQUAL? PRSA,V?SEARCH,V?LOOK-ON,V?EXAMINE \FALSE +?CCL9: ICALL2 START-SEARCH,OBJ + RTRUE + + + .FUNCT START-SEARCH:ANY:0:1,OBJ + PRINTI "Nothing suspicious meets your eye after a moment's scrutiny. Do you want to continue?" + CALL1 YES? + ZERO? STACK \?CCL3 + ICALL1 OKAY + RTRUE +?CCL3: SET 'FOUND-IT,OBJ + SET 'FOUND-LOC,HERE + RANDOM 7 + ICALL QUEUE,I-FOUND-IT,STACK + ICALL V-WAIT,8,FALSE-VALUE,TRUE-VALUE + RTRUE + + + .FUNCT I-FOUND-IT:ANY:0:1,GARG,OBJ + ZERO? IDEBUG \?CCL2 + EQUAL? GARG,G-DEBUG \?CND1 +?CCL2: PRINTI "[I-FOUND-IT:" + EQUAL? GARG,G-DEBUG /FALSE +?CND1: EQUAL? FOUND-LOC,HERE \FALSE + PRINT NOTHING-NEW + RETURN 2 + + + .FUNCT YOU-F:ANY:0:0,X + EQUAL? WINNER,PLAYER /?CCL3 + ICALL DO-INSTEAD-OF,WINNER,YOU + RTRUE +?CCL3: EQUAL? PRSA,V?ASK-ABOUT \?CCL5 + EQUAL? PRSI,YOU \?CCL5 + ICALL PERFORM,V?ASK-ABOUT,PRSO,PRSO + RTRUE +?CCL5: EQUAL? PRSA,V?THANK \FALSE + CALL1 QCONTEXT-GOOD? >X + ZERO? X /FALSE + ICALL PERFORM,V?THANK,X + RTRUE + + + .FUNCT WALL-F:ANY:0:0,OBJ + EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL3 + CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT >OBJ + ZERO? OBJ /?CCL3 + ICALL DO-INSTEAD-OF,OBJ,WALL + RTRUE +?CCL3: EQUAL? PRSA,V?KNOCK \FALSE + FSET? HERE,WEARBIT \?CTR9 + CALL FIND-FLAG-LG,HERE,DOORBIT,SECRETBIT + ZERO? STACK /?CCL10 +?CTR9: PRINTR "You hear a hollow sound." +?CCL10: PRINTR "Knocking on the walls reveals nothing unusual." + + + .FUNCT GLOBAL-HERE-F:ANY:0:0,OBJ,X + EQUAL? PRSA,V?WALK-TO,V?SMELL /?CTR2 + EQUAL? PRSA,V?SIT,V?LIE,V?EXAMINE \?CCL3 +?CTR2: ICALL DO-INSTEAD-OF,HERE,GLOBAL-HERE + RTRUE +?CCL3: EQUAL? PRSA,V?PUT-IN,V?PUT \?CCL7 + CALL1 MORE-SPECIFIC + RSTACK +?CCL7: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH \FALSE + ZERO? PRSI /?CCL12 + CALL2 META-LOC,PRSI + EQUAL? STACK,HERE \?CCL12 + SET 'X,PRSI + JUMP ?CND10 +?CCL12: FIRST? HERE >OBJ /?PRG16 +?PRG16: ZERO? OBJ /?CND10 + FSET? OBJ,SECRETBIT \?CCL22 + SET 'X,OBJ + JUMP ?CND10 +?CCL22: FSET? OBJ,PERSONBIT /?CCL24 + FSET? OBJ,CONTBIT /?PRD27 + FSET? OBJ,SURFACEBIT \?CCL24 +?PRD27: CALL FIND-IN,OBJ,SECRETBIT >X + ZERO? X \?CTR23 + CALL FIND-IN,OBJ,RMUNGBIT >X + ZERO? X /?CCL24 +?CTR23: FSET OBJ,OPENBIT +?CND10: ICALL2 START-SEARCH,X + RTRUE +?CCL24: NEXT? OBJ >OBJ /?PRG16 + JUMP ?PRG16 + + + .FUNCT CHAIR-F:ANY:0:0 + EQUAL? PRSA,V?BOARD,V?CLIMB-ON,V?SIT \?CCL3 + CALL1 WONT-HELP + RSTACK +?CCL3: CALL1 RANDOM-PSEUDO + RSTACK + + + .FUNCT SLEEP-GLOBAL-F:ANY:0:0 + EQUAL? PRSA,V?WALK-TO \FALSE + ICALL2 PERFORM,V?FAINT + RTRUE + + + .FUNCT ROB:ANY:2:3,WHAT,THIEF,TELL?,N,X,TOLD? + FIRST? WHAT >X /?PRG2 +?PRG2: ZERO? X /TRUE + NEXT? X >N /?BOGUS6 +?BOGUS6: ZERO? N \?CND7 + ZERO? TOLD? /?CND7 + ZERO? TELL? /?CND7 + PRINTI " and" +?CND7: SET 'TOLD?,TRUE-VALUE + ZERO? TELL? /?CND12 + ICALL2 PRINT-THE,X + ZERO? N /?CCL16 + PRINTC 44 + JUMP ?CND12 +?CCL16: PRINTI ". " +?CND12: MOVE X,THIEF + SET 'X,N + JUMP ?PRG2 + + + .FUNCT LIGHT-GLOBAL-F:ANY:0:0,P + CALL1 REMOTE-VERB? + ZERO? STACK \FALSE + EQUAL? PRSA,V?LAMP-OFF,V?LAMP-ON \FALSE + CALL2 OUTSIDE?,HERE + ZERO? STACK /?CCL8 + PRINTR "You can't reach it from here." +?CCL8: EQUAL? PRSA,V?LAMP-ON \?CCL11 + FSET? HERE,ONBIT \?CCL14 + CALL ALREADY,LIGHT-GLOBAL,STR?101 + RSTACK +?CCL14: FSET HERE,ONBIT + CALL OKAY,LIGHT-GLOBAL,STR?101 + RSTACK +?CCL11: EQUAL? PRSA,V?LAMP-OFF \FALSE + FSET? HERE,ONBIT /?CCL19 + CALL ALREADY,LIGHT-GLOBAL,STR?102 + RSTACK +?CCL19: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,PLAYER >P + ZERO? P /?CCL21 + PRINTD P + PRINTR " says, ""Please don't leave us in the dark.""" +?CCL21: FCLEAR HERE,ONBIT + CALL OKAY,LIGHT-GLOBAL,STR?102 + RSTACK + + + .FUNCT HANDS-F:ANY:1:1,ACTOR + EQUAL? PRSA,V?SHAKE \FALSE + CALL FIND-IN,HERE,PERSONBIT >ACTOR + ZERO? ACTOR /?CCL6 + ICALL PERFORM,V?THANK,ACTOR + RTRUE +?CCL6: PRINTR "Pleased to meet you." + + + .FUNCT HEAD-F:ANY:0:0 + EQUAL? PRSA,V?NOD \?CCL3 + ICALL2 PERFORM,V?YES + RTRUE +?CCL3: EQUAL? PRSA,V?SHAKE \FALSE + ICALL2 PERFORM,V?NO + RTRUE + + + .FUNCT EYES-F:ANY:0:0 + EQUAL? PRSA,V?OPEN \?CCL3 + PRINTR "They are." +?CCL3: EQUAL? PRSA,V?CLOSE \FALSE + PRINTR "That won't help." + + + .FUNCT THIRD-PLANET-F:ANY:0:0 + EQUAL? PRSA,V?DISEMBARK,V?LEAVE \?CCL3 + PRINTR "You did!" +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "It is an utterly insignificant little blue-green planet, of the sort where they probably still wear digital watches." + + + .FUNCT OBJECT-OF-GAME-F:ANY:0:0 + EQUAL? PRSA,V?TELL-ABOUT,V?TALK-ABOUT,V?ASK-ABOUT \FALSE + PRINTR "That's for me to know and you to find out." + + + .FUNCT SKY-F:ANY:0:0 + CALL2 OUTSIDE?,HERE + ZERO? STACK \FALSE + CALL2 NOT-HERE,SKY + RSTACK + + .ENDI diff --git a/global.zil b/global.zil new file mode 100644 index 0000000..148bd2e --- /dev/null +++ b/global.zil @@ -0,0 +1,457 @@ +"GLOBALS for MILLIWAYS +Copyright (C) 1988 Infocom, Inc. All rights reserved." + + + + + + + ) + (T )>> + + + + + )>> + + + + ) + ( ) + ;(T ) + (T )>> + + + + + + )>> + + + + + ; + > + + >> + )>> + + + +) N) + ) + ( + ) + ( + ;> + > + + + ) + ( + + )>> + +)) + + > + + ) + (T + + + > + T> + )>> + +> +> + + + +) "AUX" OBJ) + %> + + )>)>> + > + ) + (T ; + + )>> + + + + + + + +> + + ) + ( > + + ) + ( + >> + + )>> + +; + +; + ) + ( + )>> + + + + + >>> + + ) + ( + ;"WING-ROOMS"> + > + ) + (T )>)>> + +; + + + +)) + + + ) + ( + ) + ( + + <==? ,HERE>> + ) + (T + > + + ) + ( + + ) + (> + + > + > + >>> + + ) + (T >)>>)> + + )>> + + + + + ) + (T )>> + + + + + + + + )>> + +) "AUX" N X (TOLD? <>)) + > + )> + > + ;> + + )> + .TOLD? .TELL?> + )> + + + ) + (T )>)> + + ; + >> + + + + ) + ( + ;>> + ) + ( + + ) + (T + + )>) + ( + > + ) + (> + ) + (T + + )>)>)>> + + + + + + + + ) + ( + > + + ) + (T + )>)>> + +;>> + ) + ( + )> + + + )>) + ( + + + >> + ) + (T + )> + ) + ( > + ; + )> + ; + + > + + + )>) + ;( + > + + + )>) + (T + > + + + )>)>)> + + )>> + + + + + + ) + ( + + )>> + + + + + ) + ( + )>> + + + + + + + + + ) + ( + )>> + + + + + )>> + + + +> + ) + ;( + > + )>> diff --git a/gram.mac b/gram.mac new file mode 100644 index 0000000..3b12db4 --- /dev/null +++ b/gram.mac @@ -0,0 +1 @@ +"GRAM file: imitates old parser and worth an ounce of cure. Copyright (C) 1988 Infocom, Inc. All rights reserved." ) (T )> "TERMINALS are defined in DEFS, so they'll be around for compiling stuff. This resets everything else, so we can regenerate the grammar." ; > > ;> > > > > > > > > ) (T )> ) (T )> ) (T ) (T )>)> ) (T )> > ) (T )> > > ) (T )> ) (T )> ) (T )> ) (T )> ) (T )> "I AM MAD AT YOU" ; ; ; > ) (T )> > \ No newline at end of file diff --git a/h2.chart b/h2.chart new file mode 100644 index 0000000..64377cb --- /dev/null +++ b/h2.chart @@ -0,0 +1,295 @@ +-date- -rel- -size- -pre- -obj- -glo- -voc- +11/05 -1 56352 11398 42 128 612 +11/06 -1 56586 12212 54 121 668 +11/07 -1 53332 12562 58 133 684 +11/07 3 53320 12562 58 133 684 +11/13 4 59278 12664 59 139 686 +11/13 5 55486 12664 59 139 686 +11/13 6 54650 12483 59 137 682 +11/13 7 53546 12473 59 132 682 +11/17 8 53206 12467 58 132 682 + 1/22 1 54838 15089 58 134 690 + 1/22 2 54838 15089 58 134 690 + 1/23 3 55258 15255 58 137 690 + 1/23 3 55142 15255 58 137 690 + 1/23 3 55154 15255 58 137 690 + 1/23 3 55154 15255 58 137 690 + 1/23 3 55190 15255 58 137 690 + 1/23 3 55198 15255 58 137 690 + 1/23 3 55202 15255 58 137 690 + 1/23 4 55230 15203 58 137 687 + 1/23 4 55234 15203 58 137 687 + 1/23 4 55234 15203 58 137 687 + 1/23 4 55258 15203 58 137 687 + 1/23 5 55050 15057 58 135 689 + 3/09 6 55210 15085 58 137 690 + 3/09 6 55210 15085 58 137 690 + 3/09 -1 55210 15085 58 137 690 + 3/09 -1 55210 15085 58 137 690 + 3/09 6 55234 15085 58 137 690 + 3/09 6 55234 15085 58 137 690 + 3/09 7 55270 15083 58 136 690 + 3/09 8 55338 15081 58 135 690 + 3/09 8 55342 15081 58 135 690 + 3/09 8 55354 15081 58 135 690 + 3/09 8 55418 15081 58 135 690 + 3/09 8 55418 15081 58 135 690 + 3/09 9 55474 15107 58 136 691 + 3/10 -1 55482 15107 58 136 691 + 3/10 9 55482 15107 58 136 691 + 3/10 9 55506 15107 58 136 691 + 3/10 10 55606 15212 58 137 692 + 3/11 11 55806 15371 58 137 692 + 3/11 11 55810 15371 58 137 692 + 3/11 11 55810 15371 58 137 692 + 3/16 12 55882 15383 58 139 692 + 3/16 12 55934 15419 58 139 692 + 3/16 12 55934 15419 58 139 692 + 3/16 12 55942 15419 58 139 692 + 3/16 12 55946 15419 58 139 692 + 3/18 13 55978 15419 58 139 692 + 3/18 14 55998 15419 58 139 692 + 3/18 14 55994 15419 58 139 692 + 3/20 15 57662 16969 58 140 693 + 3/20 15 57666 16969 58 140 693 + 3/20 15 57682 16969 58 140 693 + 3/20 15 57678 16969 58 140 693 + 3/20 15 57682 16969 58 140 693 + 3/20 15 57694 16969 58 140 693 + 3/20 15 57690 16969 58 140 693 + 3/20 15 57694 16969 58 140 693 + 3/20 15 57698 16969 58 140 693 + 3/20 15 57702 16969 58 140 693 + 3/23 16 57902 16993 58 140 694 + 3/23 16 57966 17053 58 140 694 + 3/23 16 57970 17053 58 140 694 + 3/25 17 58122 17077 58 140 695 + 3/25 17 58162 17077 58 140 695 + 3/25 18 58258 17125 58 140 697 + 3/27 19 58286 17129 58 141 697 + 3/27 19 58286 17129 58 141 697 + 3/30 19 58374 17129 58 141 697 + 3/30 19 58362 17129 58 141 697 + 3/31 19 58350 17129 58 141 697 + 3/31 19 58354 17129 58 141 697 + 3/31 19 58354 17129 58 141 697 + 3/31 19 58346 17129 58 141 697 + 3/31 19 58342 17129 58 141 697 + 3/31 20 58418 17129 58 141 697 + 3/31 20 58414 17129 58 141 697 + 4/06 21 58422 17129 58 141 697 + 4/06 21 58422 17129 58 141 697 + 4/06 21 58442 17129 58 141 697 + 4/06 21 58442 17129 58 141 697 + 4/06 21 58446 17129 58 141 697 + 4/06 21 58454 17129 58 141 697 + 4/06 21 58458 17129 58 141 697 + 4/08 21 58502 17129 58 141 697 + 4/08 21 58506 17129 58 141 697 + 4/16 22 58486 17129 58 141 697 + 4/16 23 58550 17129 58 141 697 + 4/16 23 58538 17129 58 141 697 + 4/16 23 58546 17129 58 141 697 + 4/17 23 58582 17131 58 142 697 + 4/17 23 58566 17131 58 142 697 + 4/17 23 58582 17131 58 142 697 + 4/17 23 58574 17131 58 142 697 + 5/12 24 58578 17131 58 142 697 + 7/06 25 59840 20661 60 113 590 + 7/07 26 60044 20823 60 113 592 + 7/07 27 60864 20846 60 107 592 + 7/07 27 60864 20846 60 107 592 + 7/07 27 60852 20846 60 107 592 + 7/08 27 60836 20846 60 107 592 + 7/08 28 60864 20846 60 107 592 + 7/30 29 60880 20844 60 107 593 + 8/10 30 60904 20878 60 107 594 + 8/11 31 60972 20878 60 107 594 + 8/12 32 60644 20876 60 106 594 + 8/12 33 61136 20876 60 106 594 + 8/12 33 61132 20876 60 106 594 + 8/12 34 60984 20879 60 106 594 + 8/13 35 61136 20879 60 106 594 + 8/13 36 57708 18795 60 84 587 + 8/13 37 0 0 0 0 0 + 8/14 37 57700 18795 60 84 587 + 8/14 38 57608 18795 60 84 587 + 8/19 39 57444 18410 59 83 563 + 8/19 40 59144 18651 59 83 563 + 8/21 41 59420 18818 61 84 567 + 8/26 42 59084 18808 61 85 567 + 8/26 43 59072 18814 61 85 567 + 8/26 44 59072 18814 61 85 567 + 9/03 45 59016 18554 61 85 566 + 9/03 46 58684 18491 61 85 566 + 9/03 46 58684 18491 61 85 566 + 9/03 46 58688 18491 61 85 566 + 9/03 46 58700 18491 61 85 566 + 9/03 46 58716 18491 61 85 566 + 9/11 47 58716 18491 61 85 566 + 9/11 48 58828 18503 61 85 567 + 9/11 48 58816 18503 61 85 567 + 9/11 48 58816 18503 61 85 567 + 9/11 48 58852 18503 61 85 567 + 9/14 49 58888 18540 62 85 567 + 9/15 50 58916 18540 62 85 567 + 9/15 51 59336 18790 62 85 568 + 9/15 52 59340 18790 62 85 568 + 9/15 52 59340 18790 62 85 568 + 9/17 53 59440 18894 64 85 571 + 9/18 54 59452 18706 64 86 571 + 9/21 54 59452 18706 64 86 571 + 9/21 55 59844 19065 64 86 571 + 9/21 55 59848 19065 64 86 571 + 9/21 55 59852 19065 64 86 571 + 9/21 55 59852 19065 64 86 571 + 9/21 56 59852 19064 64 86 571 + 9/21 57 59880 19065 64 86 571 + 9/21 58 59900 19065 64 86 571 + 9/21 59 60068 19161 66 86 572 + 9/21 59 60068 19161 66 86 572 + 9/21 59 60064 19161 66 86 572 + 9/21 60 60084 19161 66 86 572 + 9/23 61 60100 19161 66 86 572 + 9/23 62 60128 19161 66 86 572 + 9/23 63 60160 19161 66 86 572 + 9/23 64 60132 19161 66 86 572 + 9/23 65 60132 19161 66 86 572 + 9/23 66 60008 19161 66 86 572 + 9/23 67 60080 19175 66 86 572 + 9/23 67 60080 19175 66 86 572 + 9/24 68 60160 19175 66 86 572 + 9/24 69 60188 19175 66 86 572 + 9/24 69 60192 19175 66 86 572 + 9/24 70 60196 19175 66 86 572 + 9/24 70 60196 19175 66 86 572 + 9/24 70 60200 19175 66 86 572 + 9/24 71 60200 19175 66 86 572 + 9/25 72 60224 19177 66 87 572 + 9/25 73 60284 19177 66 87 572 + 9/25 73 60284 19177 66 87 572 + 9/25 73 60296 19177 66 87 572 + 9/25 73 60312 19177 66 87 572 + 9/29 74 60312 19177 66 87 572 +10/07 75 16074 4304 5 46 44 +10/07 76 60076 19139 66 87 572 +10/07 77 60432 19139 66 87 572 +10/08 78 60428 19143 66 87 572 +10/08 79 60428 19143 66 87 572 +10/08 79 60428 19143 66 87 572 +10/08 80 60428 19143 66 87 572 +10/08 81 60436 19143 66 87 572 +10/08 82 60444 19143 66 87 572 +10/09 83 60444 19143 66 87 572 +10/09 84 60444 19142 66 87 572 +10/09 85 61008 19357 66 87 576 +10/09 86 60956 19333 66 87 574 +10/09 87 60928 19307 66 87 574 +10/14 88 61104 19333 66 88 575 +10/14 88 61100 19333 66 88 575 +10/14 89 61292 19371 67 88 576 +10/14 90 61324 19371 67 88 576 +10/21 91 61764 19369 67 87 576 +10/21 92 61184 19369 67 87 576 +10/21 93 61136 19369 67 87 576 +10/22 94 61136 19369 67 87 576 +10/22 95 61192 19369 67 87 576 +12/18 96 61984 19669 65 85 573 +12/18 97 63156 19830 68 84 577 + 1/12 98 63264 19960 69 84 586 + 1/12 99 64780 21146 69 87 682 + 1/12 100 64768 21146 69 87 682 + 1/12 100 64768 21146 69 87 682 + 1/18 -1 64980 21148 69 88 682 + 1/18 98 64980 21148 69 88 682 + 1/26 99 65204 21071 69 87 685 + 1/26 100 64024 21071 69 87 685 + 1/26 101 64832 21071 69 87 685 + 1/26 102 64804 21071 69 87 685 + 1/26 103 0 0 0 0 0 + 1/27 103 64912 21071 69 87 685 + 1/27 104 64924 21083 69 87 685 + 1/27 105 64964 21083 69 87 685 + 1/28 106 65036 21154 70 87 687 + 1/28 106 65036 21154 70 87 687 + 1/28 106 65048 21154 70 87 687 + 1/28 107 65220 21186 70 87 687 + 1/28 108 65280 21225 70 87 687 + 1/28 109 65268 21225 70 87 687 + 1/28 110 65284 21225 70 87 687 + 1/28 111 65276 21225 70 87 687 + 1/28 112 65296 21225 70 87 687 + 1/28 112 65292 21225 70 87 687 + 1/28 113 65374 21274 70 87 687 + 1/28 114 65422 21274 70 87 687 + 1/28 114 65422 21274 70 87 687 + 1/28 115 65422 21274 70 87 687 + 1/28 115 65422 21274 70 87 687 + 1/28 116 65416 21274 70 87 687 + 1/29 117 65420 21274 70 87 687 + 2/01 118 65418 21268 70 87 687 + 2/01 119 65438 21268 70 87 687 + 2/01 120 65426 21268 70 87 687 + 2/01 121 65402 21268 70 87 687 + 2/05 122 65464 21270 70 87 687 + 2/05 123 65504 21270 70 87 687 + 2/05 124 65476 21243 70 87 687 + 2/05 125 65940 21705 70 87 687 + 2/05 126 65940 21707 70 87 687 + 2/08 127 65560 21707 70 87 687 + 2/08 131 66530 21711 70 88 687 + 2/09 132 66410 21706 70 88 687 + 2/09 133 66348 21722 70 88 687 + 2/09 134 66348 21724 70 88 687 + 2/09 135 66256 21722 70 88 687 + 2/09 136 66256 21724 70 88 687 + 2/09 137 66296 21726 70 89 687 + 2/10 138 66312 21744 70 89 687 + 2/10 139 66312 21744 70 89 687 + 2/10 140 66304 21744 70 89 687 + 2/10 141 66288 21726 70 89 687 + 2/10 142 66300 21727 70 88 687 + 2/10 143 66248 21727 70 88 687 + 2/10 144 66324 21727 70 88 687 + 2/10 145 66316 21727 70 88 687 + 2/12 146 66124 21744 71 87 687 + 2/12 147 66148 21744 71 87 687 + 2/12 148 66144 21744 71 87 687 + 2/12 148 66144 21744 71 87 687 + 2/12 148 66144 21744 71 87 687 + 2/17 149 66228 21744 71 87 687 + 2/22 150 66216 21760 71 82 687 + 2/23 151 66020 21760 71 82 687 +10/24 152 76330 21114 74 84 686 +10/24 153 76314 21114 74 84 686 + 3/09 154 78888 20814 70 84 678 + 3/10 155 78120 20814 70 84 678 + 3/10 156 78856 20814 70 84 678 + 3/10 157 79064 21058 75 84 687 + 3/10 158 79064 21064 75 84 687 + 3/10 159 79064 21064 75 84 687 + 3/10 160 79064 21064 75 84 687 + 3/10 161 79176 21166 75 84 687 + 3/14 162 79176 21166 75 84 687 + 3/14 163 79240 21063 75 84 687 + 3/16 164 79168 21065 75 84 687 + 3/16 165 79176 21067 75 85 687 + 3/16 166 79176 21067 75 85 687 + 3/16 167 79176 21067 75 85 687 + 3/16 168 79176 21067 75 85 687 + 3/17 169 79176 21067 75 85 687 + 3/17 170 79176 21067 75 85 687 + 3/17 171 79232 21067 75 85 687 + 3/17 172 79392 21067 75 85 687 + 3/17 173 79488 21067 75 85 687 + 3/18 174 79616 21067 75 85 687 + 3/18 175 79512 21067 75 85 687 + 3/18 176 79496 21067 75 85 687 + 3/18 177 79496 21067 75 85 687 + 3/18 178 79496 21067 75 85 687 + 3/20 179 79496 21067 75 85 687 + 3/20 180 79496 21067 75 85 687 + 3/23 181 79136 20821 75 85 687 + 3/27 182 79144 20772 75 85 687 + 3/29 183 79184 20777 75 85 688 + 4/12 184 79152 20770 75 84 687 diff --git a/h2.errors b/h2.errors new file mode 100644 index 0000000..0a576ac --- /dev/null +++ b/h2.errors @@ -0,0 +1,46 @@ +Release: 184 + 0 Inserting h2.zap. + 64 Inserting h2dat.zap. +"h2dat.zap", line 427: PLURAL=PLURALBIT + -- warning - non-absolute value in equate + 20770 Inserting h2pur.zap. + 21196 Inserting pstack.zap. + 21234 Inserting pmem.zap. + 21377 Inserting parser.zap. + 27788 Inserting find.zap. + 30041 Inserting reds.zap. + 36732 Inserting breds.zap. + 39028 Inserting top.zap. + 40645 Inserting prare.zap. + 45004 Inserting qverbs.zap. + 47485 Inserting macros.zap. + 47583 Inserting misc.zap. + 49011 Inserting verbs.zap. + 64352 Inserting things.zap. + 67828 Inserting places.zap. + 69546 Inserting magrathea.zap. + 70308 Inserting people.zap. + 73289 Inserting global.zap. + 74381 Inserting h2str.zap. +"h2str.zap", line 58: " + -- Undefined symbol PLURALBIT in fixup + -- Undefined symbol PLURALBIT in fixup + -- Undefined symbol PLURALBIT in fixup + -- Undefined symbol READ-DEMO in fixup + -- Undefined symbol PEOPLE in fixup + -- "READ-DEMO" undefined. + -- "PEOPLE" undefined. + -- "PLURALBIT" undefined. +Unreferenced string: STR?169 +Unreferenced function: SETUP-ORPHAN-NP +Unreferenced table: RT?36110 +Unreferenced global: P-DIRECTION + +Lexical buffer space allocated: 480120 +Max lexical space allocated at any one time: 48012 +Object buffer space allocated: 80000 +Source bytes read: 388365 +Object bytes written: 79152 +Preload: 20770; 75 objects; 84 globals; 687 words. +Used 1:32 +Elapsed time 1:54 diff --git a/h2.lowcore b/h2.lowcore new file mode 100644 index 0000000..f2cc37e --- /dev/null +++ b/h2.lowcore @@ -0,0 +1,2 @@ + +0 \ No newline at end of file diff --git a/h2.record b/h2.record new file mode 100644 index 0000000..afc439b --- /dev/null +++ b/h2.record @@ -0,0 +1,357 @@ +ZILCH of 3/22/89 12:16 + +Combined ZIL Compiler Ver 2.0 (MIM) +----------------------------------- +Input file: /USR/DEVELOPMENT/OLD/H2/H2.ZIL +[Zaps always go to current directory] + +[YZIP instructions] + +Loading /USR/DEVELOPMENT/OLD/H2/DEFS.ZIL and compiling it. +XFLOAD /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PARSER.H2. +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/CONSTANTS.ZIL and compiling it. +Loading abstract /USR/DEVELOPMENT/OLD/H2/PSTACK.ZABSTR. +Start segment 0 +End segment 0 +Loading abstract /USR/DEVELOPMENT/OLD/H2/PMEM.ZABSTR. +Start segment 0 +End segment 0 +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PDEFS.ZIL and compiling it. +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PARSER.ZIL and compiling it. + +Start segment 0 +Compiling routine: INIT-STATUS-LINE +Compiling routine: UPDATE-STATUS-LINE +Compiling routine: DIGITS +Compiling routine: READ-INPUT +Compiling routine: SCRIPT-INBUF +Compiling routine: SPECIAL-CONTRACTION? +Compiling routine: EXPAND-BE-CONTRACTIONS +Compiling routine: TELL-THE +Compiling routine: TELL-CTHE +Compiling routine: NAKED-DIR? +Compiling routine: PARSER +Compiling routine: GAME-VERB? +Compiling routine: RED-SD +Compiling routine: P-P +Compiling routine: PARSE-IT +Compiling routine: PARSE-SENTENCE +Compiling routine: GET-TERMINAL-ACTION +Compiling routine: GET-NONTERMINAL-ACTION +Compiling routine: BE-PATIENT +Compiling routine: MAIN-LOOP +Compiling routine: MAIN-LOOP-1 +Compiling routine: PERF-MANY +Compiling routine: QCONTEXT-CHECK +Compiling routine: LIT? +Compiling routine: IGNORE-FIRST-WORD +Compiling routine: FIX-QUOTATIONS +Compiling routine: MAIN-LOOP-IT +Compiling routine: P-NO-MEM-ROUTINE +Compiling routine: BEG-PARDON +Compiling routine: UNKNOWN-WORD +Compiling routine: WORD-PRINT +Compiling routine: DO-OOPS +Compiling routine: DO-AGAIN +Compiling routine: NP-SAVE +Compiling routine: PARSER-ERROR +Compiling routine: BUZZER-WORD? +Compiling routine: NUMBER? +Compiling routine: CHANGE-LEXV +Compiling routine: TELL-GWIM-MSG +Compiling routine: DO-IT-AGAIN +End segment 0 +Abstracting PARSER to /USR/DEVELOPMENT/OLD/H2/PARSER. +Loading abstract /USR/DEVELOPMENT/OLD/H2/FIND.ZABSTR. +Start segment 0 +End segment 0 +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/REDS.ZIL and compiling it. + +Start segment 0 +Compiling routine: DIR-VERB-PRSI? +Compiling routine: RED-FCN +Compiling routine: RED-PART +Compiling routine: GET-SYNTAX +Compiling routine: RED-SV +Compiling routine: ROOT-VERB +Compiling routine: RED-SVN +Compiling routine: SVN +Compiling routine: RED-SVPNPN +Compiling routine: RED-SVD +Compiling routine: RED-SP +Compiling routine: IREDUCE-EXCEPTION +Compiling routine: REDUCE-EXCEPT-IT +Compiling routine: REDUCE-EXCEPTION +Compiling routine: REDUCE-LOCATION +Compiling routine: DETERMINE-OBJ +Compiling routine: CHECK-DIR-ADJS +Compiling routine: NUMERIC-ADJ? +Compiling routine: DETERMINE-NP +Compiling routine: DET-NP-NOT-HERE? +Compiling routine: DET-NP-OWNEE? +Compiling routine: FIND-OWNERS +Compiling routine: READY-TO-DISAMBIGUATE? +Compiling routine: DETERMINE-NP-XFER +Compiling routine: DO-ORPHAN-TEST +Compiling routine: RED-O-ADJ +Compiling routine: RED-O-PP +Compiling routine: INSERT-NP +Compiling routine: TEST-SR +Compiling routine: TEST-O-SR +Compiling routine: RED-O-NP +Compiling routine: RED-PERS +Compiling routine: HACK-TELL +Compiling routine: HACK-TELL-1 +Compiling routine: RED-VP +Compiling routine: RED-NP +Compiling routine: RED-OF +Compiling routine: RED-QT +Compiling routine: GET-QUANTITY-WORD +Compiling routine: GET-QUANTITY +Compiling routine: RED-QN +Compiling routine: RED-NPP +Compiling routine: RED-PP +Compiling routine: RED-POSS +Compiling routine: RED-ADJS +Compiling routine: RED-ADJ +Compiling routine: RED-QUOTE +End segment 0 +Abstracting REDS to /USR/DEVELOPMENT/OLD/H2/REDS. +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/BREDS.ZIL and compiling it. + +Start segment 0 +Compiling routine: RED-BE-FORM +Compiling routine: EXCH-4-5-Q +Compiling routine: RED-SBNN +Compiling routine: RED-SNBN +Compiling routine: DETERMINE-SUBJ +Compiling routine: RED-SBNA +Compiling routine: RED-SNBA +Compiling routine: RED-SBNP +Compiling routine: RED-SNBP +Compiling routine: RED-SNBAP +Compiling routine: P-PP-OBJ +Compiling routine: P-PP-PREP +Compiling routine: RED-SQBN +Compiling routine: RED-BE +Compiling routine: RED-NOT +Compiling routine: RED-CANDO +Compiling routine: INSERT-WHAT +End segment 0 +Abstracting BREDS to /USR/DEVELOPMENT/OLD/H2/BREDS. +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/GRAM.ZIL and compiling it. +Loading abstract /USR/DEVELOPMENT/OLD/H2/TOP.ZABSTR. +Start segment 0 +End segment 0 +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/PRARE.ZIL and compiling it. + +Start segment 0 +Compiling routine: TOO-MANY-NEW +Compiling routine: NAKED-OOPS +Compiling routine: CANT-OOPS +Compiling routine: CANT-AGAIN +Compiling routine: CANT-USE-MULTIPLE +Compiling routine: MAKE-ROOM-FOR-TOKENS +Compiling routine: REPLACE-ONE-TOKEN +Compiling routine: V-$REFRESH +Compiling routine: PRINT-LEXV +Compiling routine: COPY-INPUT +End segment 0 +Start segment 0 +Compiling routine: BUFFER-PRINT +Compiling routine: CAPITALIZE +Compiling routine: PRINT-PARSER-FAILURE +Compiling routine: NAKED-ADJECTIVE? +Compiling routine: CHANGE-AND-TO-THEN? +Compiling routine: DONT-UNDERSTAND +Compiling routine: MISSING +Compiling routine: CANT-FIND-OBJECT +Compiling routine: NP-CANT-SEE +Compiling routine: WINNER-SAYS-WHICH? +Compiling routine: WHICH-LIST? +Compiling routine: WHICH-PRINT +Compiling routine: NP-PRINT +Compiling routine: ADJS-PRINT +Compiling routine: TOO-MANY-NOUNS +Compiling routine: INBUF-ADD +Compiling routine: INBUF-PRINT +Compiling routine: YES? +Compiling routine: SETUP-ORPHAN-NP +Compiling routine: INSERT-ADJS +Compiling routine: INSERT-ADJS-WD +End segment 0 +Abstracting PRARE to /USR/DEVELOPMENT/OLD/H2/PRARE. +Loading /USR/DEVELOPMENT/INTERLOGIC/ZILLIB/PARSER/QVERBS.ZIL and compiling it. + +Start segment 0 +Compiling routine: WHAT-F +Compiling routine: TELL-Q-WORD +Compiling routine: TRY-QCONTEXT? +Compiling routine: PRE-BE +Compiling routine: V-BE +Compiling routine: RIGHT-PREP? +Compiling routine: V-BE? +Compiling routine: V-WHO +Compiling routine: V-WHAT +Compiling routine: PRE-WHERE +Compiling routine: V-WHERE +Compiling routine: V-WHEN +Compiling routine: V-WHY +Compiling routine: V-HOW +Compiling routine: QUIET? +Compiling routine: OUTSIDE? +Compiling routine: OPEN? +Compiling routine: Q-CLOSED? +Compiling routine: LOCKED? +Compiling routine: UNLOCKED? +Compiling routine: DEAD? +Compiling routine: ALIVE? +Compiling routine: PRSO-IS +Compiling routine: PRINT-IS/ARE +Compiling routine: IS-PRSO-ADJ? +Compiling routine: V-STATEMENT +Compiling routine: WHO-KNOWS +Compiling routine: ECHO-NOUNS +Compiling routine: V-CAN? +Compiling routine: V-MAY? +Compiling routine: V-DO? +Compiling routine: V-COULD? +Compiling routine: V-WOULD? +Compiling routine: V-SHOULD? +Compiling routine: V-MIGHT? +Compiling routine: V-WILL? +Compiling routine: V-MUST? +Compiling routine: PRE-DROP? +Compiling routine: V-DROP? +Compiling routine: V-DISEMBARK? +Compiling routine: PRE-TAKE? +Compiling routine: V-TAKE? +End segment 0 +Abstracting QVERBS to /USR/DEVELOPMENT/OLD/H2/QVERBS. +Loading /USR/DEVELOPMENT/OLD/H2/MACROS.ZIL and compiling it + because not abstracted. +Compiling routine: SEE-VERB? +Compiling routine: SPEAKING-VERB? +Loading /USR/DEVELOPMENT/OLD/H2/MISC.ZIL and compiling it. +Compiling routine: GO +Compiling routine: INTRO +Compiling routine: PRINT-THE +Compiling routine: THE? +Compiling routine: START-SENTENCE +Compiling routine: PRINTA +Compiling routine: THIS-IS-IT +Compiling routine: NO-PRONOUN? +Compiling routine: HE-SHE-IT +Compiling routine: HIM-HER-IT +Compiling routine: I-PROMPT +Compiling routine: DONT-F +Compiling routine: NOT-FOUND +Compiling routine: VERB-PRINT +Compiling routine: NOT-IT +Compiling routine: CAPITAL-NOUN? +Compiling routine: TITLE-NOUN? +Compiling routine: QUEUE +Compiling routine: INT +Compiling routine: CLOCKER +Abstracting MISC to /USR/DEVELOPMENT/OLD/H2/MISC. +Loading /USR/DEVELOPMENT/OLD/H2/SYNTAX.ZIL and compiling it. +Loading abstract /USR/DEVELOPMENT/OLD/H2/VERBS.ZABSTR. +Loading abstract /USR/DEVELOPMENT/OLD/H2/THINGS.ZABSTR. +Loading /USR/DEVELOPMENT/OLD/H2/PLACES.ZIL and compiling it. + +Compiling routine: DOOR-ROOM +Compiling routine: FIND-IN +Compiling routine: FIND-FLAG-NOT +Compiling routine: FIND-FLAG-LG +Compiling routine: FIND-FLAG-HERE +Compiling routine: FIND-FLAG-HERE-NOT +Compiling routine: UNIMPORTANT-THING-F +Compiling routine: WINDOW-F +Compiling routine: PUB-F +Compiling routine: BEER-F +Compiling routine: SANDWICH-F +Abstracting PLACES to /USR/DEVELOPMENT/OLD/H2/PLACES. +Loading abstract /USR/DEVELOPMENT/OLD/H2/MAGRATHEA.ZABSTR. +Loading abstract /USR/DEVELOPMENT/OLD/H2/PEOPLE.ZABSTR. +Loading abstract /USR/DEVELOPMENT/OLD/H2/GLOBAL.ZABSTR. + ** Warning: Undefined Routine: READ-DEMO + ** Warning: Never defined - PLURALBIT + +Warnings: 2 + ** Note: OBJECT has no properties: INTQUOTE + ** Note: OBJECT has no properties: ROOMS + ** Note: OBJECT has no properties: WHALE-CRATER-BOX +Vocabulary: 687 + +Verbs: 139 + +Real globals: 82 + +AWAITING-REPLY OPRSO PMEM-STORE-POINTER +C-INTS OTLEXV PMEM-STORE-WARN +C-TABLE P-CAN-UNDO PMEM-STORE-WORDS +CLOCK-WAIT P-CONT PMEM-WORDS-USED +CLOCKER-RUNNING P-DBUG PRSA +CURRENT-REDUCTION P-DIRECTION PRSI +DEMO-VERSION? P-HER-OBJECT PRSI-NP +DRUNK-LEVEL P-HIM-OBJECT PRSO +ERROR-PRIORITY P-IT-OBJECT PRSO-NP +ERROR-STRING P-LEN PRSQ +FOLLOWER P-MULT PRSS +FOUND-IT P-NOT-HERE QCONTEXT +FOUND-LOC P-NUMBER SANDWICH-BOUGHT +FUMBLE-NUMBER P-OFLAG SCORE +FUMBLE-PROB P-OLEN SCREENWIDTH +HERE P-PROMPT SEARCH-FLAGS +HO-HUM P-PRSA-WORD SPLITS +IDEBUG P-PRSI TLEXV +IMPOSSIBLES P-PRSO TRAILS-ALONG +ITEM-ON-SATCHEL P-RESPONDED VERBOSITY +KEEP-WAITING P-RUNNING WASTES +LAST-PSEUDO-LOC P-THEM-OBJECT WHO-CARES-TBL +LIT P-WALK-DIR WHO-CARES-VERB +MOVES P-WON WINNER +NOW-PRSI P-WORD-NUMBER YAWNS +OBJ-SWAP P-WORDS-AGAIN YUKS +OHERE PARSE-SENTENCE-ACTIVATION +OLD-HERE PARSER-RESULT + +Objects: 75 + +BABEL-FISH GUIDE LIP4 SMALL-BLUE-FROB +BEER HANDS LOCAL-GLOBALS STAIRS +BIG-BLUE-FROB HATCH MARVIN TABLE-RANDOM +BLIGHTED-GROUND HATCHWAY NOT-HERE-OBJECT TEETH +CHAIR HEAD OBJECT-OF-GAME THEM +DANGER HEART-OF-GOLD PLAYER THING +DINNER HER PSEUDO-OBJECT THIRD-PLANET +EARS HIM PUB TOOTHBRUSH +EYES INTADJ PUB-FURNISHINGS TOWEL +FLOOR INTDIR RAMP TRILLIAN +FORD INTNUM RED-FROB TURN +FRUSTATION INTPP ROOMS WALL +GAME INTQUOTE SANDWICH WHALE-CRATER +GARGLE-BLASTER IT SATCHEL WHALE-CRATER-BOX +GENERIC-OBJECTS LEDGE SCC WHAT +GLOBAL-HERE LIGHT-GLOBAL SCREWDRIVER WINDOW +GLOBAL-OBJECTS LIP1 SKY YOU +GOWN LIP2 SLEEP-GLOBAL ZAPHOD +GREEN-FROB LIP3 SLEEVES + +Properties: 29 + +P?ACTION P?CONTFCN P?GENERIC P?NE P?SE P?TEXT +P?ADJACENT P?DESCFCN P?GLOBAL P?NORTH P?SIZE P?THINGS +P?ADJECTIVE P?DOWN P?IN P?NW P?SOUTH P?UP +P?CAPACITY P?EAST P?LDESC P?OUT P?SW P?WEST +P?CHARACTER P?FDESC P?LINE P?OWNER P?SYNONYM + +Flags: 39 + +CONTBIT INVISIBLE ONBIT READBIT SURFACEBIT VOWELBIT +DEAD LIGHTBIT ONLANDBIT RLANDBIT TAKEBIT WEAPONBIT +DOORBIT LOCKED OPENABLE RMUNGBIT TOOLBIT WEARBIT +DRINKBIT MUNGBIT OPENBIT ROOMSBIT TOUCHBIT WORNBIT +EATBIT NARTICLEBIT OUTSIDE SEARCHBIT TRANSBIT +FEMALE NDESCBIT PERSONBIT SECRETBIT TRYTAKEBIT +FEMALEBIT NOTHEBIT PLURAL SEENBIT VEHBIT diff --git a/h2.seg b/h2.seg new file mode 100644 index 0000000000000000000000000000000000000000..1aaf6ce010d41ec85f77f77be5345ddc58f4a7b4 GIT binary patch literal 171 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%0Dj!;&l{Y0H-;wi+c6_Ek-H-NL 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 +> + + +; +; + + + + +) + (T )> + + + +ON!-INITIAL "for ZIL debugging" +OFF!-INITIAL +ENABLE!-INITIAL +DISABLE!-INITIAL + + + + + + + + + + + + + + + + + + diff --git a/h2.zip b/h2.zip new file mode 100644 index 0000000000000000000000000000000000000000..8e325a3db24a4ee1d574d78ddc59fefb10451c74 GIT binary patch literal 79152 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

Tp~rxghQ=3i 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 z�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 F{{vmuGu;3H literal 0 HcmV?d00001 diff --git a/h2dat.zap b/h2dat.zap new file mode 100644 index 0000000..6213dda --- /dev/null +++ b/h2dat.zap @@ -0,0 +1,12215 @@ + + +; TOP LEVEL DEFINITIONS + + TRUE-VALUE=1 + FALSE-VALUE=0 + FATAL-VALUE=2 + + O?ANY=1 + + +; OBJECT FLAGS ARE DEFINED HERE + + + VOWELBIT=9,FLAG + FX?VOWELBIT=64,FLAG + + SECRETBIT=10,FLAG + FX?SECRETBIT=32,FLAG + + RMUNGBIT=11,FLAG + FX?RMUNGBIT=16,FLAG + + PLURAL=12,FLAG + FX?PLURAL=8,FLAG + + OPENABLE=13,FLAG + FX?OPENABLE=4,FLAG + + MUNGBIT=14,FLAG + FX?MUNGBIT=2,FLAG + + LOCKED=15,FLAG + FX?LOCKED=1,FLAG + + INVISIBLE=16,FLAG + FX?INVISIBLE=32768,FLAG + + FEMALEBIT=17,FLAG + FX?FEMALEBIT=16384,FLAG + + DEAD=18,FLAG + FX?DEAD=8192,FLAG + + FEMALE=19,FLAG + FX?FEMALE=4096,FLAG + + TOUCHBIT=20,FLAG + FX?TOUCHBIT=2048,FLAG + + TRANSBIT=21,FLAG + FX?TRANSBIT=1024,FLAG + + ONLANDBIT=22,FLAG + FX?ONLANDBIT=512,FLAG + + DRINKBIT=23,FLAG + FX?DRINKBIT=256,FLAG + + OUTSIDE=24,FLAG + FX?OUTSIDE=128,FLAG + + ONBIT=25,FLAG + FX?ONBIT=64,FLAG + + NDESCBIT=26,FLAG + FX?NDESCBIT=32,FLAG + + SEENBIT=27,FLAG + FX?SEENBIT=16,FLAG + + OPENBIT=28,FLAG + FX?OPENBIT=8,FLAG + + SEARCHBIT=29,FLAG + FX?SEARCHBIT=4,FLAG + + WEARBIT=30,FLAG + FX?WEARBIT=2,FLAG + + TRYTAKEBIT=31,FLAG + FX?TRYTAKEBIT=1,FLAG + + TOOLBIT=32,FLAG + FX?TOOLBIT=32768,FLAG + + WORNBIT=33,FLAG + FX?WORNBIT=16384,FLAG + + READBIT=34,FLAG + FX?READBIT=8192,FLAG + + SURFACEBIT=35,FLAG + FX?SURFACEBIT=4096,FLAG + + WEAPONBIT=36,FLAG + FX?WEAPONBIT=2048,FLAG + + TAKEBIT=37,FLAG + FX?TAKEBIT=1024,FLAG + + CONTBIT=38,FLAG + FX?CONTBIT=512,FLAG + + EATBIT=39,FLAG + FX?EATBIT=256,FLAG + + LIGHTBIT=40,FLAG + FX?LIGHTBIT=128,FLAG + + DOORBIT=41,FLAG + FX?DOORBIT=64,FLAG + + VEHBIT=42,FLAG + FX?VEHBIT=32,FLAG + + ROOMSBIT=43,FLAG + FX?ROOMSBIT=16,FLAG + + PERSONBIT=44,FLAG + FX?PERSONBIT=8,FLAG + + NARTICLEBIT=45,FLAG + FX?NARTICLEBIT=4,FLAG + + RLANDBIT=46,FLAG + FX?RLANDBIT=2,FLAG + + NOTHEBIT=47,FLAG + FX?NOTHEBIT=1,FLAG + +; ACTION IDENTIFIERS ARE ASSIGNED HERE + + V?PDEBUG=0,VERB + V?BE=1,VERB + V?BE?=2,VERB + V?HOW=3,VERB + V?WHAT=4,VERB + V?WHEN=5,VERB + V?WHERE=6,VERB + V?WHO=7,VERB + V?WHY=8,VERB + V?WILL?=9,VERB + V?WOULD?=10,VERB + V?CAN?=11,VERB + V?COULD?=12,VERB + V?DO?=13,VERB + V?MAY?=14,VERB + V?MIGHT?=15,VERB + V?MUST?=16,VERB + V?SHOULD?=17,VERB + V?$ID=18,VERB + V?$REFRESH=19,VERB + V?$VERIFY=20,VERB + V?$CHEAT=21,VERB + V?$QUEUE=22,VERB + V?$RANDOM=23,VERB + V?$COMMAND=24,VERB + V?$RECORD=25,VERB + V?$UNRECORD=26,VERB + V?TELL=27,VERB + V?AIM=28,VERB + V?SHOW=29,VERB + V?SAIM=30,VERB + V?ANALYZE=31,VERB + V?LOOK-UNDER=32,VERB + V?LOOK-UP=33,VERB + V?SANALYZE=34,VERB + V?ANSWER=35,VERB + V?REPLY=36,VERB + V?ASK=37,VERB + V?ASK-CONTEXT-ABOUT=38,VERB + V?ASK-CONTEXT-FOR=39,VERB + V?ASK-ABOUT=40,VERB + V?ASK-FOR=41,VERB + V?ATTACK=42,VERB + V?BRIEF=43,VERB + V?BRUSH=44,VERB + V?BOARD=45,VERB + V?BUY=46,VERB + V?$CALL=47,VERB + V?CLIMB-DOWN=48,VERB + V?DISEMBARK=49,VERB + V?CLIMB-ON=50,VERB + V?THROUGH=51,VERB + V?CLIMB-UP=52,VERB + V?CLOSE=53,VERB + V?LAMP-OFF=54,VERB + V?COUNT=55,VERB + V?SPUT-ON=56,VERB + V?MUNG=57,VERB + V?DIAGNOSE=58,VERB + V?EAT=59,VERB + V?PUT=60,VERB + V?DRINK=61,VERB + V?DROP=62,VERB + V?PUT-IN=63,VERB + V?THROW-THROUGH=64,VERB + V?ENJOY=65,VERB + V?EXAMINE=66,VERB + V?READ=67,VERB + V?TALK-ABOUT=68,VERB + V?STELL-ABOUT=69,VERB + V?TELL-ABOUT=70,VERB + V?FAINT=71,VERB + V?RUB=72,VERB + V?FILL=73,VERB + V?FIND=74,VERB + V?SSEARCH-FOR=75,VERB + V?FIX=76,VERB + V?FOLLOW=77,VERB + V?FOOTNOTE=78,VERB + V?TAKE=79,VERB + V?TAKE-TO=80,VERB + V?STAND=81,VERB + V?GIVE=82,VERB + V?SGIVE=83,VERB + V?QUIT=84,VERB + V?LISTEN=85,VERB + V?HELLO=86,VERB + V?HELP=87,VERB + V?HIDE=88,VERB + V?PUT-UNDER=89,VERB + V?HOLD-UP=90,VERB + V?INVENTORY=91,VERB + V?LEAP=92,VERB + V?KILL=93,VERB + V?KISS=94,VERB + V?KNOCK=95,VERB + V?PUSH=96,VERB + V?SLAP=97,VERB + V?LEAVE=98,VERB + V?LIE=99,VERB + V?LAMP-ON=100,VERB + V?LOCK=101,VERB + V?LOOK=102,VERB + V?CHASTISE=103,VERB + V?LOOK-BEHIND=104,VERB + V?LOOK-DOWN=105,VERB + V?LOOK-INSIDE=106,VERB + V?SEARCH-FOR=107,VERB + V?LOOK-ON=108,VERB + V?LOOK-OUTSIDE=109,VERB + V?LOOK-THROUGH=110,VERB + V?NO=111,VERB + V?NOD=112,VERB + V?OPEN=113,VERB + V?PANIC=114,VERB + V?POUR=115,VERB + V?MOVE=116,VERB + V?MOVE-DIR=117,VERB + V?PULL-TOGETHER=118,VERB + V?PLAY=119,VERB + V?SREAD=120,VERB + V?REFUSE=121,VERB + V?RELAX=122,VERB + V?REMOVE=123,VERB + V?RESTART=124,VERB + V?RESTORE=125,VERB + V?RING=126,VERB + V?SSHOOT=127,VERB + V?SAVE=128,VERB + V?SAY=129,VERB + V?SCORE=130,VERB + V?SCRIPT=131,VERB + V?SEARCH=132,VERB + V?SHAKE=133,VERB + V?SHOOT=134,VERB + V?SSHOW=135,VERB + V?SIT=136,VERB + V?SIT-AT=137,VERB + V?SMELL=138,VERB + V?SMILE=139,VERB + V?SORRY=140,VERB + V?STOP=141,VERB + V?SUPER-BRIEF=142,VERB + V?SWIM=143,VERB + V?TAKE-OFF=144,VERB + V?THANK=145,VERB + V?THROW-AT=146,VERB + V?THROW-IN-TOWEL=147,VERB + V?TURN=148,VERB + V?UNDO=149,VERB + V?UNLOCK=150,VERB + V?UNSCRIPT=151,VERB + V?USE=152,VERB + V?VERBOSE=153,VERB + V?VERSION=154,VERB + V?WAIT-FOR=155,VERB + V?WAIT-UNTIL=156,VERB + V?ALARM=157,VERB + V?WALK-AROUND=158,VERB + V?WALK=159,VERB + V?WALK-TO=160,VERB + V?RUN-OVER=161,VERB + V?YELL=162,VERB + V?YES=163,VERB + +; PROPERTIES ARE DEFINED HERE + + P?NORTH=63,PROPERTY + P?NE=62,PROPERTY + P?EAST=61,PROPERTY + P?SE=60,PROPERTY + P?SOUTH=59,PROPERTY + P?SW=58,PROPERTY + P?WEST=57,PROPERTY + P?NW=56,PROPERTY + P?UP=55,PROPERTY + P?DOWN=54,PROPERTY + P?IN=53,PROPERTY + P?OUT=52,PROPERTY + P?SYNONYM=51,PROPERTY + P?ADJACENT=50,PROPERTY + P?ACTION=49,PROPERTY + P?CONTFCN=48,PROPERTY + P?THINGS=47,PROPERTY + P?ADJECTIVE=46,PROPERTY + P?SIZE=45,PROPERTY + P?OWNER=44,PROPERTY + P?CAPACITY=43,PROPERTY + P?DESCFCN=42,PROPERTY + P?TEXT=41,PROPERTY + P?GLOBAL=40,PROPERTY + P?FDESC=39,PROPERTY + P?LDESC=38,PROPERTY + P?CHARACTER=37,PROPERTY + P?LINE=36,PROPERTY + P?GENERIC=35,PROPERTY + +; ADJECTIVES ARE DEFINED HERE + + +; DIRECTIONS ARE DEFINED HERE + + +; ACTIONS ARE DEFINED HERE + + +; USER DEFINED CONSTANTS ARE INITIALIZED HERE + + C-YELLOW=5 + F9=141 + P-LEXSTART=1 + H-ITALIC=4 + M-SOUND=32 + F2=134 + C-RTN=2 + LEXV-LENGTH=59 + PARSER-ERROR-NOOBJ=248 + WYPOS=4 + FIRST-PERSON=8 + NEXIT=3 + PARSER-RESULT-WON=2 + M-OBJDESC?=9 + D-PRINTER=2 + M-SUBJ=12 + NP-QUANT-NOTHING=5 + C-MAGENTA=7 + PARSER-ERROR-TMNOUN=247 + O-START=0 + M-WINNER=11 + O-OBJECT=5 + SCORE-MAX=400 + DEXIT=6 + D-TABLE-ON=3 + M-BEG=1 + H-INVERSE=1 + C-SAME=0 + O-PART=4 + TRILLIAN-C=4 + THIRD-PERSON=64 + NOUN-PHRASE-ENTLEN=2 + O-PTR=3 + PMEM-TYPE-NPP=3 + NP-QUANT-ALL=3 + APPLE-2GS=10 + C-DEFAULT=1 + F5=137 + REXIT=0 + XGRTR?=5 + WLMARGIN=6 + NP-QUANT-TBL-LEN=6 + A-BUFFER=8 + D-TABLE=3 + C-GREEN=4 + FIND-FLAGS-GWIM=1 + S-BEEP=1 + ATARI-ST=5 + P-LEXWORDS=1 + F-DEFAULT=1 + LEXV-LENGTH-BYTES=238 + PARSE-QUESTION=2 + A-WRAP=1 + NOUN-PHRASE-MIN-LENGTH=4 + F-SCRIPT=1 + PMEM-TYPE-OBJLIST=7 + M-CONTAINER=8 + PMEM-TYPE-NOUN-PHRASE=4 + FIND-RES-MAXOBJ=6 + F-NEWFONT=3 + D-KEYBOARD=0 + O-SET=1 + XMUL=2 + M-ENTER=3 + O-END=2 + IBM=6 + WRMARGIN=7 + D-RECORD-OFF=-4 + F8=140 + O-WHICH=3 + WHIGH=2 + WATTRS=14 + C-BLUE=6 + F-REFRESH=4 + F1=133 + C64=8 + AMIGA=4 + UP-ARROW=129 + M-OTHER=42 + WXPOS=5 + WCOLOR=11 + F-DISPLAY=8 + PARSER-ERROR-NOMULT=252 + S-WINDOW=1 + H-MONO=8 + PLURAL=PLURALBIT + D-PRINTER-OFF=-2 + C-CYAN=8 + D-RECORD-ON=4 + F-MOUSE=32 + P-LEXELEN=2 + F-MENU=256 + S-BOOP=2 + WFONT=12 + FUTURE-TENSE=1024 + F11=143 + D-RECORD=4 + O-SYNTAX=2 + CEXITSTR=1 + O-LEXPTR=1 + H-UNDER=4 + M-COLOR=1 + CEXITFLAG=4 + PARSE-NOT=1 + XADD=0 + PAST-TENSE=512 + PARSER-ERROR-ORPH-S=251 + F-FIXED=2 + M-BOLD=4 + F4=136 + M-FLASH=6 + ZAPHOD-C=3 + NEXITSTR=0 + P-WORDLEN=4 + C-TICK=1 + PRESENT-TENSE=256 + C-WHITE=9 + RIGHT-ARROW=132 + F-UNDO=16 + FEXIT=4 + H-NORMAL=0 + FD-SEARCH?=2 + PARSER-ERROR-NOUND=253 + H-BOLD=2 + DEXITSTR=2 + S-CLEANUP=4 + PLURAL-FLAG=16 + CHARACTER-MAX=4 + XSUB=1 + PARSER-RESULT-AGAIN=3 + XEQUAL?=4 + M-OBJDESC=7 + A-SCRIPT=4 + F-SOUND=128 + NOUN-PHRASE-ENTLENB=4 + APPLE-2C=9 + FIND-RES-LENGTH=10 + APPLE-2E=2 + FD-NEST?=4 + POSSESSIVE=16384 + F7=139 + S-INIT=1 + O-SUBJECT=6 + F-PICTURES=2 + WTOP=0 + D-COMMAND-FILE=1 + S-TEXT=0 + LEFT-ARROW=131 + F-STATUS=4 + INBUF-LENGTH=60 + NP-QUANT-NONE=0 + PARSE-RESULT-LEN=34 + FD-INCLUDE?=1 + F-COLOR=64 + O-LENGTH=1 + CLICK2=253 + PM-HEADER-LEN=1 + PMEM-TYPE-ADJS=1 + C-INTLEN=6 + C128=7 + DEC-20=1 + C-BLACK=2 + UEXIT=2 + S-STOP=3 + WHLIGHT=10 + MARVIN-C=1 + C-ENABLED?=0 + D-SCREEN-OFF=-1 + WFSIZE=13 + WHO-CARES-LENGTH=4 + WLEFT=1 + F3=135 + WLCNT=15 + SYN-FIND-PROP=256 + NP-QUANT-BOTH=4 + M-FATAL=2 + M-UNDERLINE=8 + MACINTOSH=3 + NP-LENGTH=9 + O-CLEAR=2 + WCRCNT=9 + D-SCREEN-ON=1 + O-MOVE=0 + P-PROMPT-START=4 + WCRFUNC=8 + C-HERE=-1 + D-TABLE-OFF=-3 + PARSER-RESULT-FAILED=1 + M-MONOSPACE=16 + NP-QUANT-PLURAL=6 + PMEM-STORE-LENGTH=180 + PLAYER-C=0 + DEBUGGING-ZIP=1 + O-COMP=3 + NP-QUANT-A=1 + D-SCREEN=1 + C-TABLELEN=138 + FEXITFCN=0 + PMEM-TYPE-LOCATION=6 + NOUN-PHRASE-HEADER-LEN=3 + PMEM-TYPE-NP=2 + FD-NOTOP?=8 + FORD-C=2 + M-DISPLAY=2 + M-SCENE-SETUP=10 + F6=138 + S-START=2 + F12=144 + PARSER-ERROR-ORPH-NP=250 + ADJS-MAX-COUNT=4 + M-LEAVE=4 + LOW-DIRECTION=52,PROPERTY + M-END=2 + O-AGAIN=4 + F10=142 + PAD9=154 + PAD8=153 + PAD7=152 + C-RED=3 + PAD6=151 + D-PRINTER-ON=2 + PAD5=150 + PAD4=149 + PMEM-TYPE-PP=5 + A-SCROLL=2 + PAD3=148 + DOWN-ARROW=130 + PAD2=147 + PAD1=146 + PAD0=145 + M-LOOK=5 + WWIDE=3 + DEXITOBJ=1 + NP-FLAG-MULTI=1 + F-OLD=0 + SECOND-PERSON=32 + XLESS?=6 + CLICKM=252 + PARSER-RESULT-DEAD=0 + G-DEBUG=69 + CLICK1=254 + XDIV=3 + O-VERB=0 + CEXIT=5 + SERIAL=0 + +; THE GLOBAL VARIABLES ARE ALL LOCATED HERE + +GLOBAL::.TABLE + .GVAR TLEXV=0 + .GVAR DEMO-VERSION?=0 + .GVAR CURRENT-REDUCTION=0 + .GVAR HERE=RAMP,OBJECT + .GVAR PMEM-STORE-POINTER=PMEM-STORE + .GVAR C-INTS=132,NUMBER + .GVAR FUMBLE-PROB=8,NUMBER + .GVAR P-HER-OBJECT=TRILLIAN,OBJECT + .GVAR SPLITS=0,NUMBER + .GVAR NOW-PRSI=0,FLAG + .GVAR P-PRSI=0 + .GVAR TRAILS-ALONG=T?TRAILS-ALONG,TABLE + .GVAR P-THEM-OBJECT=0,OBJECT + .GVAR P-RUNNING=0,TABLE + .GVAR VERBOSITY=1,NUMBER + .GVAR P-CAN-UNDO=0,NUMBER + .GVAR P-NUMBER=0,NUMBER + .GVAR PRSS=0,OBJECT + .GVAR PRSQ=0 + .GVAR PRSO=0,OBJECT + .GVAR IDEBUG=0,FLAG + .GVAR PRSI=0,OBJECT + .GVAR P-WON=0 + .GVAR PRSA=0,VERB + .GVAR SANDWICH-BOUGHT=0,FLAG + .GVAR ITEM-ON-SATCHEL=0,OBJECT + .GVAR P-WORD-NUMBER=0,NUMBER + .GVAR KEEP-WAITING=0 + .GVAR P-CONT=0,NUMBER + .GVAR SCORE=0,NUMBER + .GVAR P-WORDS-AGAIN=0,NUMBER + .GVAR P-OLEN=0,NUMBER + .GVAR OBJ-SWAP=0,FLAG + .GVAR LAST-PSEUDO-LOC=0,OBJECT + .GVAR HO-HUM=T?HO-HUM,TABLE + .GVAR CLOCK-WAIT=0,FLAG + .GVAR P-DIRECTION=0,NUMBER + .GVAR PMEM-STORE-WARN=50,NUMBER + .GVAR PMEM-WORDS-USED=0 + .GVAR P-HIM-OBJECT=FORD,OBJECT + .GVAR AWAITING-REPLY=0 + .GVAR OTLEXV=0 + .GVAR PARSE-SENTENCE-ACTIVATION=0 + .GVAR P-NOT-HERE=0,NUMBER + .GVAR IMPOSSIBLES=T?IMPOSSIBLES,TABLE + .GVAR FUMBLE-NUMBER=7,NUMBER + .GVAR ERROR-PRIORITY=0,NUMBER + .GVAR P-PROMPT=4,NUMBER + .GVAR DRUNK-LEVEL=0 + .GVAR YAWNS=T?YAWNS,TABLE + .GVAR FOLLOWER=0,OBJECT + .GVAR FOUND-IT=0,OBJECT + .GVAR PARSER-RESULT=0 + .GVAR P-RESPONDED=0,NUMBER + .GVAR WHO-CARES-VERB=T?WHO-CARES-VERB,TABLE + .GVAR P-PRSA-WORD=0 + .GVAR CLOCKER-RUNNING=0,NUMBER + .GVAR YUKS=T?YUKS,TABLE + .GVAR SEARCH-FLAGS=0,NUMBER + .GVAR P-PRSO=0 + .GVAR C-TABLE=T?C-TABLE,TABLE + .GVAR OHERE=0,OBJECT + .GVAR P-WALK-DIR=0 + .GVAR LIT=RAMP,OBJECT + .GVAR WINNER=PLAYER,OBJECT + .GVAR ERROR-STRING=0,STRING + .GVAR OLD-HERE=0,OBJECT + .GVAR SCREENWIDTH=0,NUMBER + .GVAR WASTES=T?WASTES,TABLE + .GVAR P-IT-OBJECT=GOWN,OBJECT + .GVAR P-OFLAG=0,NUMBER + .GVAR OPRSO=0 + .GVAR PMEM-STORE-WORDS=PMEM-STORE-LENGTH,NUMBER + .GVAR PRSO-NP=0 + .GVAR FOUND-LOC=0,OBJECT + .GVAR PRSI-NP=0 + .GVAR P-LEN=0,NUMBER + .GVAR WHO-CARES-TBL=T?WHO-CARES-TBL,TABLE + .GVAR P-MULT=0 + .GVAR P-DBUG=0,FLAG + .GVAR QCONTEXT=FORD,OBJECT + .GVAR MOVES=0,NUMBER + .GVAR ACTIONS=ATBL,TABLE + .GVAR PREACTIONS=PATBL,TABLE + .ENDT + +GLOEND:: + + +; PROPERTY DEFAULTS AND OBJECTS ARE DEFINED HERE + +.ALIGN 2 + +OBJECT::.TABLE + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;() + 0 ;(P?GENERIC) + 0 ;(P?LINE) + 0 ;(P?CHARACTER) + 0 ;(P?LDESC) + 0 ;(P?FDESC) + 0 ;(P?GLOBAL) + 0 ;(P?TEXT) + 0 ;(P?DESCFCN) + 0 ;(P?CAPACITY) + 0 ;(P?OWNER) + 5 ;(P?SIZE) + 0 ;(P?ADJECTIVE) + 0 ;(P?THINGS) + 0 ;(P?CONTFCN) + 0 ;(P?ACTION) + 0 ;(P?ADJACENT) + 0 ;(P?SYNONYM) + 0 ;(P?OUT) + 0 ;(P?IN) + 0 ;(P?DOWN) + 0 ;(P?UP) + 0 ;(P?NW) + 0 ;(P?WEST) + 0 ;(P?SW) + 0 ;(P?SOUTH) + 0 ;(P?SE) + 0 ;(P?EAST) + 0 ;(P?NE) + 0 ;(P?NORTH) + .OBJECT DINNER,0,FX?TRYTAKEBIT,FX?NARTICLEBIT,PUB,0,0,T?DINNER + .OBJECT BABEL-FISH,0,FX?TRYTAKEBIT,FX?WORNBIT,PLAYER,GOWN,0,T?BABEL-FISH + .OBJECT TOOTHBRUSH,0,FX?TRYTAKEBIT,FX?TOOLBIT+FX?TAKEBIT,PLAYER,SCREWDRIVER,0,T?TOOTHBRUSH + .OBJECT HANDS,0,FX?TOUCHBIT+FX?NDESCBIT,FX?NARTICLEBIT,GLOBAL-OBJECTS,LIGHT-GLOBAL,0,T?HANDS + .OBJECT SCC,0,0,0,GLOBAL-OBJECTS,GARGLE-BLASTER,0,T?SCC + .OBJECT GAME,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,SCC,0,T?GAME + .OBJECT WHALE-CRATER,0,FX?ONBIT+FX?ONLANDBIT,0,ROOMS,LEDGE,0,T?WHALE-CRATER + .OBJECT INTQUOTE,0,0,0,GLOBAL-OBJECTS,INTDIR,0,T?INTQUOTE + .OBJECT LIGHT-GLOBAL,0,FX?TRYTAKEBIT+FX?SEENBIT,0,GLOBAL-OBJECTS,SLEEP-GLOBAL,0,T?LIGHT-GLOBAL + .OBJECT EARS,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,TEETH,0,T?EARS + .OBJECT WINDOW,0,FX?NDESCBIT+FX?SEENBIT,0,LOCAL-GLOBALS,HEART-OF-GOLD,0,T?WINDOW + .OBJECT THEM,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,HIM,0,T?THEM + .OBJECT TEETH,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,EYES,0,T?TEETH + .OBJECT GARGLE-BLASTER,0,0,0,GLOBAL-OBJECTS,SLEEVES,0,T?GARGLE-BLASTER + .OBJECT HER,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,WHAT,0,T?HER + .OBJECT WHAT,0,0,FX?NOTHEBIT,GLOBAL-OBJECTS,INTPP,0,T?WHAT + .OBJECT SATCHEL,0,FX?TRYTAKEBIT+FX?SEARCHBIT,FX?TAKEBIT+FX?CONTBIT,FORD,TOWEL,GUIDE,T?SATCHEL + .OBJECT PUB,0,FX?OUTSIDE+FX?ONBIT,FX?RLANDBIT,ROOMS,0,SANDWICH,T?PUB + .OBJECT HATCH,0,FX?OPENBIT,FX?DOORBIT,LOCAL-GLOBALS,PUB-FURNISHINGS,0,T?HATCH + .OBJECT ZAPHOD,0,0,FX?PERSONBIT+FX?NARTICLEBIT,RAMP,FORD,0,T?ZAPHOD + .OBJECT IT,FX?VOWELBIT,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,TURN,0,T?IT + .OBJECT HEART-OF-GOLD,0,0,FX?NARTICLEBIT,LOCAL-GLOBALS,PSEUDO-OBJECT,0,T?HEART-OF-GOLD + .OBJECT GREEN-FROB,0,0,FX?TAKEBIT,RAMP,RED-FROB,0,T?GREEN-FROB + .OBJECT TOWEL,0,FX?TRYTAKEBIT,FX?TAKEBIT,FORD,0,0,T?TOWEL + .OBJECT PUB-FURNISHINGS,0,FX?NDESCBIT,FX?NARTICLEBIT,LOCAL-GLOBALS,WINDOW,0,T?PUB-FURNISHINGS + .OBJECT SLEEP-GLOBAL,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,GLOBAL-HERE,0,T?SLEEP-GLOBAL + .OBJECT DANGER,0,0,0,GLOBAL-OBJECTS,FLOOR,0,T?DANGER + .OBJECT PSEUDO-OBJECT,0,0,0,LOCAL-GLOBALS,0,0,T?PSEUDO-OBJECT + .OBJECT NOT-HERE-OBJECT,0,0,0,0,0,0,T?NOT-HERE-OBJECT + .OBJECT RED-FROB,0,0,FX?TAKEBIT,RAMP,0,0,T?RED-FROB + .OBJECT ROOMS,0,0,FX?NARTICLEBIT,0,0,WHALE-CRATER,T?ROOMS + .OBJECT GUIDE,0,0,FX?READBIT+FX?TAKEBIT+FX?NARTICLEBIT,SATCHEL,0,0,T?GUIDE + .OBJECT STAIRS,0,FX?SEENBIT,0,LOCAL-GLOBALS,WHALE-CRATER-BOX,0,T?STAIRS + .OBJECT FLOOR,0,FX?OPENBIT+FX?SEENBIT,FX?SURFACEBIT,GLOBAL-OBJECTS,IT,0,T?FLOOR + .OBJECT LEDGE,0,FX?ONLANDBIT+FX?ONBIT,0,ROOMS,LIP4,0,T?LEDGE + .OBJECT BEER,0,FX?NDESCBIT+FX?DRINKBIT,FX?NARTICLEBIT,0,0,0,T?BEER + .OBJECT MARVIN,0,0,FX?PERSONBIT+FX?NARTICLEBIT,RAMP,PLAYER,0,T?MARVIN + .OBJECT SLEEVES,0,0,0,GLOBAL-OBJECTS,THEM,0,T?SLEEVES + .OBJECT SKY,0,0,0,GLOBAL-OBJECTS,OBJECT-OF-GAME,0,T?SKY + .OBJECT GENERIC-OBJECTS,0,0,0,0,0,0,T?GENERIC-OBJECTS + .OBJECT YOU,0,0,0,GLOBAL-OBJECTS,INTNUM,0,T?YOU + .OBJECT HIM,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,HER,0,T?HIM + .OBJECT PLAYER,0,FX?OPENBIT+FX?TOUCHBIT+FX?SEENBIT+FX?SEARCHBIT+FX?NDESCBIT,FX?PERSONBIT+FX?NARTICLEBIT,RAMP,GREEN-FROB,BABEL-FISH,T?PLAYER + .OBJECT INTNUM,0,0,0,GLOBAL-OBJECTS,DANGER,0,T?INTNUM + .OBJECT WALL,0,FX?OPENBIT+FX?SEENBIT,FX?SURFACEBIT,GLOBAL-OBJECTS,YOU,0,T?WALL + .OBJECT CHAIR,0,FX?SEENBIT,FX?SURFACEBIT,LOCAL-GLOBALS,STAIRS,0,T?CHAIR + .OBJECT RAMP,0,FX?ONBIT,FX?RLANDBIT,ROOMS,HATCHWAY,TRILLIAN,T?RAMP + .OBJECT HEAD,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,HANDS,0,T?HEAD + .OBJECT TURN,0,0,0,GLOBAL-OBJECTS,FRUSTATION,0,T?TURN + .OBJECT LIP4,0,FX?ONLANDBIT+FX?ONBIT,0,ROOMS,LIP3,0,T?LIP4 + .OBJECT LIP3,0,FX?ONBIT+FX?ONLANDBIT,0,ROOMS,LIP2,0,T?LIP3 + .OBJECT LIP2,0,FX?ONBIT+FX?ONLANDBIT,0,ROOMS,LIP1,0,T?LIP2 + .OBJECT LIP1,0,FX?ONBIT+FX?ONLANDBIT,0,ROOMS,BLIGHTED-GROUND,0,T?LIP1 + .OBJECT TRILLIAN,0,FX?FEMALE+FX?OPENBIT,FX?CONTBIT+FX?PERSONBIT+FX?NARTICLEBIT,RAMP,ZAPHOD,0,T?TRILLIAN + .OBJECT THIRD-PLANET,0,FX?NDESCBIT,0,GLOBAL-OBJECTS,EARS,0,T?THIRD-PLANET + .OBJECT EYES,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,HEAD,0,T?EYES + .OBJECT FORD,0,FX?OPENBIT+FX?SEARCHBIT,FX?NARTICLEBIT+FX?CONTBIT+FX?PERSONBIT,RAMP,MARVIN,SATCHEL,T?FORD + .OBJECT SMALL-BLUE-FROB,0,0,FX?TAKEBIT,THING,BIG-BLUE-FROB,0,T?SMALL-BLUE-FROB + .OBJECT BLIGHTED-GROUND,0,FX?ONBIT+FX?ONLANDBIT,0,ROOMS,RAMP,0,T?BLIGHTED-GROUND + .OBJECT INTPP,0,0,0,GLOBAL-OBJECTS,INTADJ,0,T?INTPP + .OBJECT SANDWICH,0,FX?TRYTAKEBIT+FX?NDESCBIT,FX?EATBIT,PUB,DINNER,0,T?SANDWICH + .OBJECT GLOBAL-HERE,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,WALL,0,T?GLOBAL-HERE + .OBJECT TABLE-RANDOM,0,FX?SEENBIT,0,LOCAL-GLOBALS,CHAIR,0,T?TABLE-RANDOM + .OBJECT GLOBAL-OBJECTS,FX?VOWELBIT+FX?SECRETBIT+FX?RMUNGBIT+FX?PLURAL+FX?OPENABLE+FX?MUNGBIT+FX?LOCKED,FX?WEARBIT+FX?TRYTAKEBIT+FX?TRANSBIT+FX?TOUCHBIT+FX?SEENBIT+FX?SEARCHBIT+FX?OPENBIT+FX?ONBIT+FX?NDESCBIT+FX?INVISIBLE+FX?FEMALEBIT+FX?DEAD,FX?WORNBIT+FX?WEAPONBIT+FX?VEHBIT+FX?TOOLBIT+FX?TAKEBIT+FX?SURFACEBIT+FX?READBIT+FX?NARTICLEBIT+FX?LIGHTBIT+FX?DOORBIT+FX?CONTBIT,0,0,SKY,T?GLOBAL-OBJECTS + .OBJECT OBJECT-OF-GAME,FX?VOWELBIT,0,0,GLOBAL-OBJECTS,THIRD-PLANET,0,T?OBJECT-OF-GAME + .OBJECT HATCHWAY,0,FX?ONBIT,FX?RLANDBIT,ROOMS,PUB,0,T?HATCHWAY + .OBJECT LOCAL-GLOBALS,0,0,FX?NARTICLEBIT,GLOBAL-OBJECTS,GAME,TABLE-RANDOM,T?LOCAL-GLOBALS + .OBJECT GOWN,0,FX?SEARCHBIT+FX?WEARBIT,FX?NARTICLEBIT+FX?CONTBIT+FX?TAKEBIT+FX?WORNBIT,PLAYER,TOOTHBRUSH,THING,T?GOWN + .OBJECT BIG-BLUE-FROB,0,0,FX?TAKEBIT,THING,0,0,T?BIG-BLUE-FROB + .OBJECT WHALE-CRATER-BOX,0,FX?NDESCBIT+FX?TRANSBIT,FX?CONTBIT,LOCAL-GLOBALS,HATCH,0,T?WHALE-CRATER-BOX + .OBJECT FRUSTATION,0,0,0,GLOBAL-OBJECTS,LOCAL-GLOBALS,0,T?FRUSTATION + .OBJECT THING,0,FX?OPENBIT+FX?SEARCHBIT,FX?CONTBIT+FX?TAKEBIT,GOWN,0,SMALL-BLUE-FROB,T?THING + .OBJECT INTADJ,0,0,0,GLOBAL-OBJECTS,INTQUOTE,0,T?INTADJ + .OBJECT SCREWDRIVER,0,0,FX?TOOLBIT+FX?TAKEBIT,PLAYER,0,0,T?SCREWDRIVER + .OBJECT INTDIR,0,0,0,GLOBAL-OBJECTS,0,0,T?INTDIR + .ENDT + + LAST-OBJECT=75 + + ME=PLAYER +; OBJECT PROPERTY TABLES ARE DEFINED HERE + +OBJPRP:: + +T?DINNER:: .TABLE ; TABLE FOR OBJECT DINNER + .STRL "your dinner" + .PROP 8,P?SYNONYM + W?DINNER + W?FOOD + W?DISHES + W?PLATE + .PROP 2,P?ACTION + DINNER-F + .PROP 4,P?ADJECTIVE + W?COVERED + W?MY + .PROP 2,P?SIZE + 10 + .PROP 2,P?OWNER + PLAYER + .PROP 2,P?DESCFCN + DINNER-D + .BYTE 0 + .ENDT + +T?BABEL-FISH:: .TABLE ; TABLE FOR OBJECT BABEL-FISH + .STRL "babel fish" + .PROP 2,P?SYNONYM + W?FISH + .PROP 2,P?ACTION + BABEL-FISH-F + .PROP 2,P?ADJECTIVE + W?BABEL + .BYTE 0 + .ENDT + +T?TOOTHBRUSH:: .TABLE ; TABLE FOR OBJECT TOOTHBRUSH + .STRL "toothbrush" + .PROP 8,P?SYNONYM + W?TOOTHBRUSH + W?BRUSH + W?TOOL + W?TOOLS + .PROP 2,P?ACTION + TOOTHBRUSH-F + .PROP 6,P?ADJECTIVE + W?TOOTH + W?MY + W?PROPER + .PROP 2,P?SIZE + 3 + .PROP 2,P?OWNER + PLAYER + .BYTE 0 + .ENDT + +T?HANDS:: .TABLE ; TABLE FOR OBJECT HANDS + .STRL "hand" + .PROP 4,P?SYNONYM + W?HANDS + W?HAND + .PROP 2,P?ACTION + HANDS-F + .PROP 2,P?ADJECTIVE + W?BARE + .PROP 2,P?OWNER + BODY-PARTS-OWNERS + .BYTE 0 + .ENDT + +T?SCC:: .TABLE ; TABLE FOR OBJECT SCC + .STRL "Sirius Cybernetics Corporation" + .PROP 4,P?SYNONYM + W?CORPORATION + W?SCC + .PROP 4,P?ADJECTIVE + W?SIRIUS + W?CYBERNETICS + .BYTE 0 + .ENDT + +T?GAME:: .TABLE ; TABLE FOR OBJECT GAME + .STRL "MILLIWAYS" + .PROP 4,P?SYNONYM + W?GAME + W?MILLIWAYS + .PROP 2,P?ACTION + GAME-F + .BYTE 0 + .ENDT + +T?WHALE-CRATER:: .TABLE ; TABLE FOR OBJECT WHALE-CRATER + .STRL "Crater" + .PROP 2,P?FDESC + STR?183 + .PROP 2,P?LDESC + STR?184 + .BYTE 0 + .ENDT + +T?INTQUOTE:: .TABLE ; TABLE FOR OBJECT INTQUOTE + .STRL "quotation" + .BYTE 0 + .ENDT + +T?LIGHT-GLOBAL:: .TABLE ; TABLE FOR OBJECT LIGHT-GLOBAL + .STRL "light" + .PROP 8,P?SYNONYM + W?LIGHT + W?LIGHTS + W?LAMP + W?MOONLIGHT + .PROP 2,P?ACTION + LIGHT-GLOBAL-F + .PROP 4,P?ADJECTIVE + W?FLOOD + W?MOON + .BYTE 0 + .ENDT + +T?EARS:: .TABLE ; TABLE FOR OBJECT EARS + .STRL "ears" + .PROP 4,P?SYNONYM + W?EAR + W?EARS + .BYTE 0 + .ENDT + +T?WINDOW:: .TABLE ; TABLE FOR OBJECT WINDOW + .STRL "window" + .PROP 8,P?SYNONYM + W?WINDOW + W?WINDSHIELD + W?WINDSCREEN + W?DOOR + .PROP 2,P?ACTION + WINDOW-F + .BYTE 0 + .ENDT + +T?THEM:: .TABLE ; TABLE FOR OBJECT THEM + .STRL "them" + .PROP 2,P?SYNONYM + W?THEM + .BYTE 0 + .ENDT + +T?TEETH:: .TABLE ; TABLE FOR OBJECT TEETH + .STRL "teeth" + .PROP 2,P?SYNONYM + W?TEETH + .BYTE 0 + .ENDT + +T?GARGLE-BLASTER:: .TABLE ; TABLE FOR OBJECT GARGLE-BLASTER + .STRL "Pan-Galactic Gargle Blaster" + .PROP 2,P?SYNONYM + W?BLASTER + .PROP 4,P?ADJECTIVE + W?PAN-GALACTIC + W?GARGLE + .BYTE 0 + .ENDT + +T?HER:: .TABLE ; TABLE FOR OBJECT HER + .STRL "her" + .PROP 4,P?SYNONYM + W?HER + W?MADAM + .BYTE 0 + .ENDT + +T?WHAT:: .TABLE ; TABLE FOR OBJECT WHAT + .STRL "what" + .PROP 4,P?SYNONYM + W?WHAT + W?WHO + .PROP 2,P?ACTION + WHAT-F + .BYTE 0 + .ENDT + +T?SATCHEL:: .TABLE ; TABLE FOR OBJECT SATCHEL + .STRL "satchel" + .PROP 2,P?SYNONYM + W?SATCHEL + .PROP 2,P?ACTION + SATCHEL-F + .PROP 6,P?ADJECTIVE + W?BATTERED + W?LEATHER + W?BULKY + .PROP 2,P?SIZE + 20 + .PROP 2,P?OWNER + FORD + .PROP 2,P?CAPACITY + 30 + .PROP 2,P?DESCFCN + SATCHEL-DESCFCN + .BYTE 0 + .ENDT + +T?PUB:: .TABLE ; TABLE FOR OBJECT PUB + .STRL "restaurant" + .PROP 2,P?SYNONYM + W?ALCOHOL + .PROP 2,P?ACTION + PUB-F + .PROP 6,P?THINGS + 0 + PEOPLE + UNIMPORTANT-THING-F + .PROP 4,P?GLOBAL + WINDOW + PUB-FURNISHINGS + .BYTE 0 + .ENDT + +T?HATCH:: .TABLE ; TABLE FOR OBJECT HATCH + .STRL "hatch" + .PROP 4,P?SYNONYM + W?HATCH + W?DOOR + .PROP 2,P?ACTION + HATCH-F + .PROP 2,P?ADJECTIVE + W?DOOR + .BYTE 0 + .ENDT + +T?ZAPHOD:: .TABLE ; TABLE FOR OBJECT ZAPHOD + .STRL "Zaphod Beeblebrox" + .PROP 3,P?WEST ; IMPOSSIBLE EXIT + STR?194 ; FAILURE MESSAGE + .BYTE 0 + .PROP 6,P?SYNONYM + W?BEEBLEBROX + W?ZAPHOD + W?PRESIDENT + .PROP 2,P?ACTION + ZAPHOD-F + .PROP 6,P?ADJECTIVE + W?ZAPHOD + W?PRESIDENT + W?MR + .PROP 2,P?DESCFCN + ZAPHOD-D + .PROP 2,P?TEXT + STR?193 + .PROP 2,P?LDESC + 0 + .PROP 2,P?CHARACTER + 3 + .PROP 2,P?LINE + 0 + .BYTE 0 + .ENDT + +T?IT:: .TABLE ; TABLE FOR OBJECT IT + .STRL "it" + .PROP 8,P?SYNONYM + W?IT + W?THIS + W?FUCKER + W?SUCKER + .PROP 2,P?ACTION + IT-F + .BYTE 0 + .ENDT + +T?HEART-OF-GOLD:: .TABLE ; TABLE FOR OBJECT HEART-OF-GOLD + .STRL "the Heart of Gold" + .PROP 8,P?SYNONYM + W?HEART + W?GOLD + W?SHIP + W?SPACESHIP + .PROP 6,P?ADJECTIVE + W?SPACE + W?INCREDIBLE + W?NEW + .BYTE 0 + .ENDT + +T?GREEN-FROB:: .TABLE ; TABLE FOR OBJECT GREEN-FROB + .STRL "green frob" + .PROP 4,P?SYNONYM + W?FROB + W?FROBS + .PROP 2,P?ADJECTIVE + W?GREEN + .PROP 2,P?SIZE + 1 + .BYTE 0 + .ENDT + +T?TOWEL:: .TABLE ; TABLE FOR OBJECT TOWEL + .STRL "towel" + .PROP 4,P?SYNONYM + W?TOWEL + W?TOWELS + .PROP 2,P?ACTION + TOWEL-F + .PROP 2,P?SIZE + 7 + .PROP 2,P?CAPACITY + 40 + .BYTE 0 + .ENDT + +T?PUB-FURNISHINGS:: .TABLE ; TABLE FOR OBJECT PUB-FURNISHINGS + .STRL "it" + .PROP 8,P?SYNONYM + W?BEERMAT + W?GLASSES + W?BOTTLE + W?GLASS + .PROP 2,P?ACTION + UNIMPORTANT-THING-F + .PROP 4,P?ADJECTIVE + W?USUAL + W?SOGGY + .BYTE 0 + .ENDT + +T?SLEEP-GLOBAL:: .TABLE ; TABLE FOR OBJECT SLEEP-GLOBAL + .STRL "sleep" + .PROP 2,P?SYNONYM + W?SLEEP + .PROP 2,P?ACTION + SLEEP-GLOBAL-F + .BYTE 0 + .ENDT + +T?DANGER:: .TABLE ; TABLE FOR OBJECT DANGER + .STRL "danger" + .PROP 6,P?SYNONYM + W?DANGER + W?THREAT + W?ATTACK + .BYTE 0 + .ENDT + +T?PSEUDO-OBJECT:: .TABLE ; TABLE FOR OBJECT PSEUDO-OBJECT + .STRL "pseudoxxx" + .PROP 2,P?ACTION + 0 + .BYTE 0 + .ENDT + +T?NOT-HERE-OBJECT:: .TABLE ; TABLE FOR OBJECT NOT-HERE-OBJECT + .STRL "" + .PROP 2,P?CONTFCN + 0 + .PROP 2,P?THINGS + 0 + .BYTE 0 + .ENDT + +T?RED-FROB:: .TABLE ; TABLE FOR OBJECT RED-FROB + .STRL "red frob" + .PROP 4,P?SYNONYM + W?FROB + W?FROBS + .PROP 2,P?ADJECTIVE + W?RED + .PROP 2,P?SIZE + 1 + .BYTE 0 + .ENDT + +T?ROOMS:: .TABLE ; TABLE FOR OBJECT ROOMS + .STRL "that" + .BYTE 0 + .ENDT + +T?GUIDE:: .TABLE ; TABLE FOR OBJECT GUIDE + .STRL "The Hitchhiker's Guide" + .PROP 4,P?SYNONYM + W?COPY + W?GUIDE + .PROP 2,P?ACTION + GUIDE-F + .PROP 4,P?ADJECTIVE + W?HITCHHIKER'S + W?SUB-ETHA + .PROP 2,P?SIZE + 10 + .PROP 2,P?DESCFCN + GUIDE-DESCFCN + .PROP 2,P?TEXT + STR?162 + .BYTE 0 + .ENDT + +T?STAIRS:: .TABLE ; TABLE FOR OBJECT STAIRS + .STRL "stairs" + .PROP 6,P?SYNONYM + W?STAIRS + W?STAIRWAY + W?STAIR + .BYTE 0 + .ENDT + +T?FLOOR:: .TABLE ; TABLE FOR OBJECT FLOOR + .STRL "floor" + .PROP 8,P?SYNONYM + W?FLOOR + W?GROUND + W?CARPET + W?RUG + .PROP 2,P?ACTION + FLOOR-F + .BYTE 0 + .ENDT + +T?LEDGE:: .TABLE ; TABLE FOR OBJECT LEDGE + .STRL "Ledge" + .PROP 4,P?NORTH ; CONDITIONAL EXIT + DEATH-BY-BLUBBER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?NE ; CONDITIONAL EXIT + DEATH-BY-BLUBBER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?EAST ; CONDITIONAL EXIT + DOWN-TO-CRATER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SE ; CONDITIONAL EXIT + DEATH-BY-BLUBBER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SOUTH ; CONDITIONAL EXIT + DEATH-BY-BLUBBER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 3,P?SW ; IMPOSSIBLE EXIT + STR?182 ; FAILURE MESSAGE + .BYTE 0 + .PROP 3,P?NW ; IMPOSSIBLE EXIT + STR?182 ; FAILURE MESSAGE + .BYTE 0 + .PROP 2,P?GLOBAL + WHALE-CRATER + .PROP 2,P?FDESC + STR?180 + .PROP 2,P?LDESC + STR?181 + .BYTE 0 + .ENDT + +T?BEER:: .TABLE ; TABLE FOR OBJECT BEER + .STRL "lots of beer" + .PROP 8,P?SYNONYM + W?LOTS + W?BITTER + W?PINT + W?BEER + .PROP 2,P?ACTION + BEER-F + .BYTE 0 + .ENDT + +T?MARVIN:: .TABLE ; TABLE FOR OBJECT MARVIN + .STRL "Marvin" + .PROP 3,P?WEST ; IMPOSSIBLE EXIT + STR?189 ; FAILURE MESSAGE + .BYTE 0 + .PROP 8,P?SYNONYM + W?MARVIN + W?MARV + W?ROBOT + W?ANDROID + .PROP 2,P?ACTION + MARVIN-F + .PROP 4,P?ADJECTIVE + W?DEPRESSED + W?PARANOID + .PROP 2,P?DESCFCN + MARVIN-D + .PROP 2,P?TEXT + STR?188 + .PROP 2,P?LDESC + 0 + .PROP 2,P?CHARACTER + 1 + .PROP 2,P?LINE + 0 + .BYTE 0 + .ENDT + +T?SLEEVES:: .TABLE ; TABLE FOR OBJECT SLEEVES + .STRL "sleeve" + .PROP 2,P?SYNONYM + W?SLEEVE + .PROP 2,P?ACTION + SLEEVES-F + .BYTE 0 + .ENDT + +T?SKY:: .TABLE ; TABLE FOR OBJECT SKY + .STRL "sky" + .PROP 2,P?SYNONYM + W?SKY + .PROP 2,P?ACTION + SKY-F + .BYTE 0 + .ENDT + +T?GENERIC-OBJECTS:: .TABLE ; TABLE FOR OBJECT GENERIC-OBJECTS + .STRL "" + .PROP 2,P?ADJACENT + 0 + .BYTE 0 + .ENDT + +T?YOU:: .TABLE ; TABLE FOR OBJECT YOU + .STRL "self" + .PROP 8,P?SYNONYM + W?YOU + W?YOURSELF + W?HIMSELF + W?HERSELF + .PROP 2,P?ACTION + YOU-F + .BYTE 0 + .ENDT + +T?HIM:: .TABLE ; TABLE FOR OBJECT HIM + .STRL "him" + .PROP 4,P?SYNONYM + W?HIM + W?SIR + .BYTE 0 + .ENDT + +T?PLAYER:: .TABLE ; TABLE FOR OBJECT PLAYER + .STRL "yourself" + .PROP 6,P?SYNONYM + W?ME + W?MYSELF + W?SELF + .PROP 2,P?ACTION + PLAYER-F + .PROP 2,P?CHARACTER + 0 + .BYTE 0 + .ENDT + +T?INTNUM:: .TABLE ; TABLE FOR OBJECT INTNUM + .STRL "number" + .PROP 2,P?SYNONYM + W?INT.NUM + .BYTE 0 + .ENDT + +T?WALL:: .TABLE ; TABLE FOR OBJECT WALL + .STRL "wall" + .PROP 8,P?SYNONYM + W?WALL + W?WALLS + W?BRICK + W?BRICKS + .PROP 2,P?ACTION + WALL-F + .PROP 6,P?ADJECTIVE + W?BRICK + W?NORTH + W?SOUTH + .BYTE 0 + .ENDT + +T?CHAIR:: .TABLE ; TABLE FOR OBJECT CHAIR + .STRL "chair" + .PROP 8,P?SYNONYM + W?CHAIR + W?SEAT + W?CHAIRS + W?BENCH + .PROP 2,P?ACTION + CHAIR-F + .BYTE 0 + .ENDT + +T?RAMP:: .TABLE ; TABLE FOR OBJECT RAMP + .STRL "On the Ramp" + .PROP 6,P?NORTH ; CONDITIONAL EXIT + HATCHWAY ; TO ROOM + HATCH ; IF DOOR IS OPEN + 0 ; FAILURE MESSAGE + .PROP 3,P?NE ; IMPOSSIBLE EXIT + STR?172 ; FAILURE MESSAGE + .BYTE 0 + .PROP 4,P?EAST ; CONDITIONAL EXIT + FALL-OFF-RAMP ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SE ; CONDITIONAL EXIT + FALL-OFF-RAMP ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?SOUTH ; UNCONDITIONAL EXIT + BLIGHTED-GROUND ; TO ROOM + .PROP 4,P?SW ; CONDITIONAL EXIT + FALL-OFF-RAMP ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 3,P?WEST ; IMPOSSIBLE EXIT + STR?172 ; FAILURE MESSAGE + .BYTE 0 + .PROP 3,P?NW ; IMPOSSIBLE EXIT + STR?172 ; FAILURE MESSAGE + .BYTE 0 + .PROP 6,P?UP ; CONDITIONAL EXIT + HATCHWAY ; TO ROOM + HATCH ; IF DOOR IS OPEN + 0 ; FAILURE MESSAGE + .PROP 2,P?DOWN ; UNCONDITIONAL EXIT + BLIGHTED-GROUND ; TO ROOM + .PROP 2,P?GLOBAL + HATCH + .PROP 2,P?FDESC + STR?171 + .BYTE 0 + .ENDT + +T?HEAD:: .TABLE ; TABLE FOR OBJECT HEAD + .STRL "head" + .PROP 4,P?SYNONYM + W?HEAD + W?FACE + .PROP 2,P?ACTION + HEAD-F + .PROP 2,P?OWNER + BODY-PARTS-OWNERS + .BYTE 0 + .ENDT + +T?TURN:: .TABLE ; TABLE FOR OBJECT TURN + .STRL "turn" + .PROP 8,P?SYNONYM + W?TURN + W?TURNS + W?MINUTE + W?MINUTES + .PROP 2,P?ACTION + TURN-F + .PROP 4,P?ADJECTIVE + W?INT.NUM + W?FULL + .BYTE 0 + .ENDT + +T?LIP4:: .TABLE ; TABLE FOR OBJECT LIP4 + .STRL "Crater Lip" + .PROP 4,P?NORTH ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?NE ; UNCONDITIONAL EXIT + LIP1 ; TO ROOM + .PROP 2,P?EAST ; UNCONDITIONAL EXIT + LEDGE ; TO ROOM + .PROP 2,P?SE ; UNCONDITIONAL EXIT + LIP3 ; TO ROOM + .PROP 4,P?SOUTH ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SW ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?WEST ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?NW ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?DOWN ; UNCONDITIONAL EXIT + LEDGE ; TO ROOM + .PROP 2,P?GLOBAL + WHALE-CRATER + .PROP 2,P?FDESC + STR?178 + .PROP 2,P?LDESC + STR?179 + .BYTE 0 + .ENDT + +T?LIP3:: .TABLE ; TABLE FOR OBJECT LIP3 + .STRL "Crater Lip" + .PROP 4,P?NORTH ; CONDITIONAL EXIT + DEATH-BY-BLUBBER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?NE ; UNCONDITIONAL EXIT + LIP2 ; TO ROOM + .PROP 4,P?EAST ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SE ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SOUTH ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SW ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?WEST ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?NW ; UNCONDITIONAL EXIT + LIP4 ; TO ROOM + .PROP 2,P?GLOBAL + WHALE-CRATER + .PROP 2,P?LDESC + STR?177 + .BYTE 0 + .ENDT + +T?LIP2:: .TABLE ; TABLE FOR OBJECT LIP2 + .STRL "Crater Lip" + .PROP 4,P?NORTH ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?NE ; CONDITIONAL EXIT + WANDER-AROUND ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?EAST ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SE ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SOUTH ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?SW ; UNCONDITIONAL EXIT + LIP3 ; TO ROOM + .PROP 4,P?WEST ; CONDITIONAL EXIT + DEATH-BY-BLUBBER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?NW ; UNCONDITIONAL EXIT + LIP1 ; TO ROOM + .PROP 2,P?GLOBAL + WHALE-CRATER + .PROP 2,P?LDESC + STR?176 + .BYTE 0 + .ENDT + +T?LIP1:: .TABLE ; TABLE FOR OBJECT LIP1 + .STRL "Crater Lip" + .PROP 4,P?NORTH ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?NE ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?EAST ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?SE ; UNCONDITIONAL EXIT + LIP2 ; TO ROOM + .PROP 4,P?SOUTH ; CONDITIONAL EXIT + DEATH-BY-BLUBBER ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?SW ; UNCONDITIONAL EXIT + LIP4 ; TO ROOM + .PROP 4,P?WEST ; CONDITIONAL EXIT + SLOPE-SCRAMBLE ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?NW ; UNCONDITIONAL EXIT + BLIGHTED-GROUND ; TO ROOM + .PROP 2,P?GLOBAL + WHALE-CRATER + .PROP 2,P?FDESC + STR?174 + .PROP 2,P?LDESC + STR?175 + .BYTE 0 + .ENDT + +T?TRILLIAN:: .TABLE ; TABLE FOR OBJECT TRILLIAN + .STRL "Trillian" + .PROP 3,P?WEST ; IMPOSSIBLE EXIT + STR?196 ; FAILURE MESSAGE + .BYTE 0 + .PROP 8,P?SYNONYM + W?TRILLIAN + W?MCMILLAN + W?WOMAN + W?TRICIA + .PROP 2,P?ACTION + TRILLIAN-F + .PROP 10,P?ADJECTIVE + W?TRICIA + W?DARK-HAIR + W?DARK + W?HAIRED + W?MS + .PROP 2,P?DESCFCN + TRILLIAN-D + .PROP 2,P?TEXT + STR?195 + .PROP 2,P?LDESC + 0 + .PROP 2,P?CHARACTER + 4 + .PROP 2,P?LINE + 0 + .BYTE 0 + .ENDT + +T?THIRD-PLANET:: .TABLE ; TABLE FOR OBJECT THIRD-PLANET + .STRL "third planet" + .PROP 4,P?SYNONYM + W?PLANET + W?EARTH + .PROP 2,P?ACTION + THIRD-PLANET-F + .PROP 10,P?ADJECTIVE + W?THIRD + W?BLUE + W?BLUE-GREEN + W?GREEN + W?SMALL + .BYTE 0 + .ENDT + +T?EYES:: .TABLE ; TABLE FOR OBJECT EYES + .STRL "eyes" + .PROP 4,P?SYNONYM + W?EYE + W?EYES + .PROP 2,P?ACTION + EYES-F + .PROP 2,P?OWNER + BODY-PARTS-OWNERS + .BYTE 0 + .ENDT + +T?FORD:: .TABLE ; TABLE FOR OBJECT FORD + .STRL "Ford Prefect" + .PROP 3,P?WEST ; IMPOSSIBLE EXIT + STR?191 ; FAILURE MESSAGE + .BYTE 0 + .PROP 4,P?SYNONYM + W?FORD + W?PREFECT + .PROP 2,P?ACTION + FORD-F + .PROP 4,P?ADJECTIVE + W?FORD + W?MR + .PROP 2,P?DESCFCN + FORD-D + .PROP 2,P?TEXT + STR?190 + .PROP 2,P?LDESC + 0 + .PROP 2,P?CHARACTER + 2 + .PROP 2,P?LINE + 0 + .BYTE 0 + .ENDT + +T?SMALL-BLUE-FROB:: .TABLE ; TABLE FOR OBJECT SMALL-BLUE-FROB + .STRL "small blue frob" + .PROP 4,P?SYNONYM + W?FROB + W?FROBS + .PROP 4,P?ADJECTIVE + W?SMALL + W?BLUE + .PROP 2,P?SIZE + 1 + .BYTE 0 + .ENDT + +T?BLIGHTED-GROUND:: .TABLE ; TABLE FOR OBJECT BLIGHTED-GROUND + .STRL "Blighted Ground" + .PROP 2,P?NORTH ; UNCONDITIONAL EXIT + RAMP ; TO ROOM + .PROP 4,P?NE ; CONDITIONAL EXIT + WANDER-AROUND ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?EAST ; CONDITIONAL EXIT + WANDER-AROUND ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SOUTH ; CONDITIONAL EXIT + WANDER-AROUND ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?SW ; CONDITIONAL EXIT + WANDER-AROUND ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?WEST ; CONDITIONAL EXIT + WANDER-AROUND ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 4,P?NW ; CONDITIONAL EXIT + WANDER-AROUND ; PER FUNCTION + .BYTE 0 + .BYTE 0 + .PROP 2,P?LDESC + STR?173 + .BYTE 0 + .ENDT + +T?INTPP:: .TABLE ; TABLE FOR OBJECT INTPP + .STRL "prep phrase" + .PROP 2,P?SYNONYM + W?L.G + .BYTE 0 + .ENDT + +T?SANDWICH:: .TABLE ; TABLE FOR OBJECT SANDWICH + .STRL "cheese sandwich" + .PROP 4,P?SYNONYM + W?PLATE + W?SANDWICH + .PROP 2,P?ACTION + SANDWICH-F + .PROP 4,P?ADJECTIVE + W?CHEESE + W?UNINVITING + .PROP 2,P?SIZE + 10 + .BYTE 0 + .ENDT + +T?GLOBAL-HERE:: .TABLE ; TABLE FOR OBJECT GLOBAL-HERE + .STRL "here" + .PROP 8,P?SYNONYM + W?HERE + W?AREA + W?ROOM + W?PLACE + .PROP 2,P?ACTION + GLOBAL-HERE-F + .PROP 2,P?ADJECTIVE + W?THIS + .BYTE 0 + .ENDT + +T?TABLE-RANDOM:: .TABLE ; TABLE FOR OBJECT TABLE-RANDOM + .STRL "table" + .PROP 4,P?SYNONYM + W?TABLE + W?DESK + .PROP 2,P?ACTION + RANDOM-PSEUDO + .BYTE 0 + .ENDT + +T?GLOBAL-OBJECTS:: .TABLE ; TABLE FOR OBJECT GLOBAL-OBJECTS + .STRL "GO" + .PROP 2,P?OWNER + 0 + .PROP 2,P?TEXT + 0 + .PROP 2,P?GLOBAL + STAIRS + .PROP 2,P?GENERIC + 0 + .BYTE 0 + .ENDT + +T?OBJECT-OF-GAME:: .TABLE ; TABLE FOR OBJECT OBJECT-OF-GAME + .STRL "object of the game" + .PROP 6,P?SYNONYM + W?OBJECT + W?GAME + W?GOAL + .PROP 2,P?ACTION + OBJECT-OF-GAME-F + .BYTE 0 + .ENDT + +T?HATCHWAY:: .TABLE ; TABLE FOR OBJECT HATCHWAY + .STRL "Hatchway" + .PROP 6,P?SOUTH ; CONDITIONAL EXIT + RAMP ; TO ROOM + HATCH ; IF DOOR IS OPEN + 0 ; FAILURE MESSAGE + .PROP 6,P?DOWN ; CONDITIONAL EXIT + RAMP ; TO ROOM + HATCH ; IF DOOR IS OPEN + 0 ; FAILURE MESSAGE + .PROP 6,P?OUT ; CONDITIONAL EXIT + RAMP ; TO ROOM + HATCH ; IF DOOR IS OPEN + 0 ; FAILURE MESSAGE + .PROP 6,P?GLOBAL + STAIRS + HEART-OF-GOLD + HATCH + .BYTE 0 + .ENDT + +T?LOCAL-GLOBALS:: .TABLE ; TABLE FOR OBJECT LOCAL-GLOBALS + .STRL "LG" + .PROP 2,P?SYNONYM + W?L.G + .PROP 2,P?ACTION + LOCAL-GLOBALS-F + .BYTE 0 + .ENDT + +T?GOWN:: .TABLE ; TABLE FOR OBJECT GOWN + .STRL "your gown" + .PROP 8,P?SYNONYM + W?GOWN + W?POCKET + W?ROBE + W?LOOP + .PROP 2,P?ACTION + GOWN-F + .PROP 10,P?ADJECTIVE + W?MY + W?DRESSING + W?TATTY + W?FADED + W?BATTERED + .PROP 2,P?SIZE + 15 + .PROP 2,P?OWNER + PLAYER + .PROP 2,P?CAPACITY + 14 + .BYTE 0 + .ENDT + +T?BIG-BLUE-FROB:: .TABLE ; TABLE FOR OBJECT BIG-BLUE-FROB + .STRL "big blue frob" + .PROP 4,P?SYNONYM + W?FROB + W?FROBS + .PROP 4,P?ADJECTIVE + W?BIG + W?BLUE + .PROP 2,P?SIZE + 1 + .BYTE 0 + .ENDT + +T?WHALE-CRATER-BOX:: .TABLE ; TABLE FOR OBJECT WHALE-CRATER-BOX + .STRL "" + .BYTE 0 + .ENDT + +T?FRUSTATION:: .TABLE ; TABLE FOR OBJECT FRUSTATION + .STRL "puzzle" + .PROP 6,P?SYNONYM + W?FRUSTRATION + W?PROBLEM + W?PUZZLE + .PROP 2,P?ACTION + FRUSTRATION-F + .BYTE 0 + .ENDT + +T?THING:: .TABLE ; TABLE FOR OBJECT THING + .STRL "thing your aunt gave you which you don't know what it is" + .PROP 4,P?SYNONYM + W?THING + W?GIFT + .PROP 2,P?ACTION + THING-F + .PROP 2,P?ADJECTIVE + W?AUNT'S + .PROP 2,P?SIZE + 6 + .PROP 2,P?CAPACITY + 90 + .BYTE 0 + .ENDT + +T?INTADJ:: .TABLE ; TABLE FOR OBJECT INTADJ + .STRL "adjective" + .PROP 2,P?SYNONYM + W?L.G + .BYTE 0 + .ENDT + +T?SCREWDRIVER:: .TABLE ; TABLE FOR OBJECT SCREWDRIVER + .STRL "flathead screwdriver" + .PROP 6,P?SYNONYM + W?SCREWDRIV + W?TOOL + W?TOOLS + .PROP 4,P?ADJECTIVE + W?FLATHEAD + W?PROPER + .PROP 2,P?SIZE + 3 + .BYTE 0 + .ENDT + +T?INTDIR:: .TABLE ; TABLE FOR OBJECT INTDIR + .STRL "direction" + .PROP 16,P?SYNONYM + W?NORTH + W?NE + W?EAST + W?SE + W?SOUTH + W?SW + W?WEST + W?NW + .BYTE 0 + .ENDT + + +; IMPURE TABLES ARE DEFINED HERE + +IMPTBL:: + +T?104:: +PMEM-STORE:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?105:: +ORPHAN-ADJS:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?205:: +ORPHAN-NP:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?305:: +ORPHAN-NP2:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?405:: +ORPHAN-S:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?505:: +SEARCH-RES:: .TABLE + 6 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?605:: +ORPHAN-SR:: .TABLE + 6 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?705:: +OWNER-SR-HERE:: .TABLE + 6 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?805:: +OWNER-SR-THERE:: .TABLE + 6 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?106:: +STATE-STACK:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?206:: +SPLIT-STACK:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?306:: +DATA-STACK:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?406:: +P-LEXV:: .TABLE + .BYTE 59 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?506:: +G-LEXV:: .TABLE + .BYTE 59 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?606:: +O-LEXV:: .TABLE + .BYTE 59 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?706:: +P-INBUF:: .TABLE + .BYTE 60 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?806:: +G-INBUF:: .TABLE + .BYTE 60 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?906:: +O-INBUF:: .TABLE + .BYTE 60 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?1006:: +OOPS-TABLE:: .TABLE + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?1106:: +ERROR-ARGS:: .TABLE + 0 + 0 + 0 + 0 + .ENDT + +T?1206:: +GAME-VERB-TABLE:: .TABLE + 13 + V?BRIEF + V?QUIT + V?RESTART + V?RESTORE + V?SAVE + V?SCORE + V?SCRIPT + V?SUPER-BRIEF + V?TELL + V?UNSCRIPT + V?VERBOSE + V?VERSION + V?$VERIFY + .ENDT + +T?1306:: +PARSE-RESULT:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?1406:: +OFFENDED:: .TABLE + 7 + 0 + STR?2 + STR?3 + STR?4 + STR?5 + STR?6 + STR?7 + .ENDT + +T?1506:: +GWIM-MSG:: .TABLE + 0 + 0 + 0 + 0 + .ENDT + +T?107:: +FINDER:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?108:: +PREP-BIT:: .TABLE + 0 + 0 + 0 + .ENDT + +T?112:: +YES-INBUF:: .TABLE + .BYTE 19 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .BYTE 0 + .ENDT + +T?212:: +YES-LEXV:: .TABLE + .BYTE 3 + .BYTE 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?113:: +ADJ-TABLE:: .TABLE + 16 + W?OUTSIDE + OUTSIDE? + W?OPEN + OPEN? + W?CLOSED + Q-CLOSED? + W?LOCKED + LOCKED? + W?UNLOCKED + UNLOCKED? + W?DEAD + DEAD? + W?ALIVE + ALIVE? + W?QUIET + QUIET? + .ENDT + +T?115:: +T?C-TABLE:: .TABLE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + I-REPLY + 1 + 1 + I-PROMPT + .ENDT + +T?117:: +T?YAWNS:: .TABLE + 5 + 0 + STR?75 + STR?76 + STR?77 + STR?78 + .ENDT + +T?217:: +T?YUKS:: .TABLE + 5 + 0 + STR?79 + STR?80 + STR?81 + STR?82 + .ENDT + +T?317:: +T?IMPOSSIBLES:: .TABLE + 7 + 0 + STR?83 + STR?84 + STR?85 + STR?86 + STR?87 + STR?88 + .ENDT + +T?417:: +T?WASTES:: .TABLE + 4 + 0 + STR?89 + STR?90 + STR?91 + .ENDT + +T?121:: +FOLLOW-LOC:: .TABLE + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?221:: +TOUCHED-LDESCS:: .TABLE + 0 + 0 + 0 + 0 + 0 + .ENDT + +T?122:: +WORD-FLAG-TABLE:: .TABLE + 20 + W?SHALL + 1024 + W?DID + 512 + W?DOES + 64 + W?SHALL + 1024 + W?WILL + 1024 + W?WERE + 632 + W?WAS + 584 + W?IS + 320 + W?ARE + 376 + W?AM + 264 + .ENDT + + +; END OF IMPURENESS + +IMPURE:: + + + +; VERB STUFF FOR WORDS IS DEFINED HERE + +NVTBL:: .TABLE +ACT?HELLO:: ; VERB-DATA FOR HELLO + -1 + 0 + RT?122 + 0 +ACT?UNLOCK:: ; VERB-DATA FOR UNLOCK + -1 + 0 + RT?222 + RT?322 +ACT?$REFRESH:: ; VERB-DATA FOR $REFRESH + V?$REFRESH + 0 + 0 + 0 +ACT?ENJOY:: ; VERB-DATA FOR ENJOY + -1 + 0 + RT?422 + 0 +ACT?LEAVE:: ; VERB-DATA FOR LEAVE + V?LEAVE + 0 + RT?522 + 0 +ACT?COVER:: ; VERB-DATA FOR COVER + -1 + 0 + 0 + RT?622 +ACT?LOOK-INSIDE:: ; VERB-DATA FOR LOOK-INSIDE + -1 + 0 + RT?722 + 0 +ACT?CAN:: ; VERB-DATA FOR CAN + -1 + 0 + RT?822 + 0 +ACT?SLIDE:: ; VERB-DATA FOR SLIDE + -1 + 0 + RT?922 + RT?1022 +ACT?REFUSE:: ; VERB-DATA FOR REFUSE + -1 + 0 + RT?1122 + 0 +ACT?YELL:: ; VERB-DATA FOR YELL + V?YELL + 0 + RT?1222 + 0 +ACT?SMELL:: ; VERB-DATA FOR SMELL + -1 + 0 + RT?1322 + 0 +ACT?MIGHT:: ; VERB-DATA FOR MIGHT + -1 + 0 + RT?1422 + 0 +ACT?RING:: ; VERB-DATA FOR RING + -1 + 0 + RT?1522 + RT?1622 +ACT?REQUEST:: ; VERB-DATA FOR REQUEST + -1 + 0 + RT?1722 + 0 +ACT?WOULD:: ; VERB-DATA FOR WOULD + -1 + 0 + RT?1822 + 0 +ACT?ASK:: ; VERB-DATA FOR ASK + -1 + 0 + RT?1922 + RT?2022 +ACT?SAVE:: ; VERB-DATA FOR SAVE + V?SAVE + 0 + RT?2122 + 0 +ACT?#DBG:: ; VERB-DATA FOR #DBG + V?PDEBUG + 0 + 0 + 0 +ACT?LISTEN:: ; VERB-DATA FOR LISTEN + -1 + 0 + RT?2222 + 0 +ACT?CALL:: ; VERB-DATA FOR CALL + -1 + 0 + RT?2322 + 0 +ACT?#RANDOM:: ; VERB-DATA FOR #RANDOM + -1 + 0 + RT?2422 + 0 +ACT?SWITCH:: ; VERB-DATA FOR SWITCH + -1 + 0 + RT?2522 + RT?2622 +ACT?RESTART:: ; VERB-DATA FOR RESTART + V?RESTART + 0 + 0 + 0 +ACT?FOOTNOTE:: ; VERB-DATA FOR FOOTNOTE + V?FOOTNOTE + 0 + RT?2722 + 0 +ACT?USE:: ; VERB-DATA FOR USE + -1 + 0 + RT?2822 + RT?2922 +ACT?SLEEP:: ; VERB-DATA FOR SLEEP + V?FAINT + 0 + RT?3022 + 0 +ACT?BE:: ; VERB-DATA FOR BE + -1 + 0 + RT?3122 + RT?3222 +ACT?PARK:: ; VERB-DATA FOR PARK + -1 + 0 + RT?3322 + 0 +ACT?EXAMINE:: ; VERB-DATA FOR EXAMINE + -1 + 0 + RT?3422 + RT?3522 +ACT?HOW:: ; VERB-DATA FOR HOW + -1 + 0 + RT?3622 + RT?3722 +ACT?CLOSE:: ; VERB-DATA FOR CLOSE + -1 + 0 + RT?3822 + 0 +ACT?CLEAN:: ; VERB-DATA FOR CLEAN + -1 + 0 + RT?3922 + RT?4022 +ACT?HEAD:: ; VERB-DATA FOR HEAD + V?WALK-AROUND + 0 + RT?4122 + RT?4222 +ACT?FIDDLE:: ; VERB-DATA FOR FIDDLE + -1 + 0 + RT?4322 + 0 +ACT?BE?:: ; VERB-DATA FOR BE? + -1 + 0 + RT?4422 + RT?4522 +ACT?#UNRECORD:: ; VERB-DATA FOR #UNRECORD + V?$UNRECORD + 0 + 0 + 0 +ACT?CONSOLE:: ; VERB-DATA FOR CONSOLE + -1 + 0 + RT?4622 + 0 +ACT?HEAR:: ; VERB-DATA FOR HEAR + -1 + 0 + RT?4722 + 0 +ACT?BRIEF:: ; VERB-DATA FOR BRIEF + V?BRIEF + 0 + 0 + 0 +ACT?#QUEUE:: ; VERB-DATA FOR #QUEUE + V?$QUEUE + 0 + 0 + 0 +ACT?DRAPE:: ; VERB-DATA FOR DRAPE + -1 + 0 + 0 + RT?4822 +ACT?READ:: ; VERB-DATA FOR READ + -1 + 0 + RT?4922 + RT?5022 +ACT?MURDER:: ; VERB-DATA FOR MURDER + -1 + 0 + 0 + RT?5122 +ACT?SHOULD:: ; VERB-DATA FOR SHOULD + -1 + 0 + RT?5222 + 0 +ACT?I:: ; VERB-DATA FOR I + V?INVENTORY + 0 + 0 + 0 +ACT?SIT:: ; VERB-DATA FOR SIT + -1 + 0 + RT?5322 + 0 +ACT?RUB:: ; VERB-DATA FOR RUB + -1 + 0 + RT?5422 + RT?5522 +ACT?SUPERBRIEF:: ; VERB-DATA FOR SUPERBRIEF + V?SUPER-BRIEF + 0 + 0 + 0 +ACT?$CHEAT:: ; VERB-DATA FOR $CHEAT + -1 + 0 + RT?5622 + 0 +ACT?SOUND:: ; VERB-DATA FOR SOUND + -1 + 0 + RT?5722 + 0 +ACT?COUNT:: ; VERB-DATA FOR COUNT + -1 + 0 + RT?5822 + 0 +ACT?SMILE:: ; VERB-DATA FOR SMILE + -1 + 0 + RT?5922 + 0 +ACT?DAMAGE:: ; VERB-DATA FOR DAMAGE + -1 + 0 + RT?6022 + RT?6122 +ACT?FIX:: ; VERB-DATA FOR FIX + -1 + 0 + RT?6222 + RT?6322 +ACT?NOD:: ; VERB-DATA FOR NOD + -1 + 0 + RT?6422 + 0 +ACT?ORDER:: ; VERB-DATA FOR ORDER + -1 + 0 + RT?6522 + 0 +ACT?UNDO:: ; VERB-DATA FOR UNDO + V?UNDO + 0 + 0 + 0 +ACT?$VERIFY:: ; VERB-DATA FOR $VERIFY + V?$VERIFY + 0 + RT?6622 + 0 +ACT?LOCK:: ; VERB-DATA FOR LOCK + -1 + 0 + RT?6722 + RT?6822 +ACT?FILL:: ; VERB-DATA FOR FILL + -1 + 0 + RT?6922 + RT?7022 +ACT?FIND:: ; VERB-DATA FOR FIND + -1 + 0 + RT?7122 + RT?7222 +ACT?POINT:: ; VERB-DATA FOR POINT + -1 + 0 + RT?7322 + RT?7422 +ACT?SCRIPT:: ; VERB-DATA FOR SCRIPT + V?SCRIPT + 0 + 0 + 0 +ACT?COULD:: ; VERB-DATA FOR COULD + -1 + 0 + RT?7522 + 0 +ACT?FIRE:: ; VERB-DATA FOR FIRE + -1 + 0 + RT?7622 + RT?7722 +ACT?ATTACK:: ; VERB-DATA FOR ATTACK + -1 + 0 + RT?7822 + RT?7922 +ACT?GET:: ; VERB-DATA FOR GET + -1 + 0 + RT?8022 + RT?8122 +ACT?YES:: ; VERB-DATA FOR YES + V?YES + 0 + 0 + 0 +ACT?$CALL:: ; VERB-DATA FOR $CALL + -1 + 0 + RT?8222 + 0 +ACT?PANIC:: ; VERB-DATA FOR PANIC + V?PANIC + 0 + 0 + 0 +ACT?PUSH:: ; VERB-DATA FOR PUSH + -1 + 0 + RT?8322 + RT?8422 +ACT?SCORE:: ; VERB-DATA FOR SCORE + V?SCORE + 0 + 0 + 0 +ACT?FOLLOW:: ; VERB-DATA FOR FOLLOW + -1 + 0 + RT?8522 + RT?8622 +ACT?LOOK:: ; VERB-DATA FOR LOOK + V?LOOK + 0 + RT?8722 + RT?8822 +ACT?REMOVE:: ; VERB-DATA FOR REMOVE + -1 + 0 + RT?8922 + RT?9022 +ACT?ENTER:: ; VERB-DATA FOR ENTER + -1 + 0 + RT?9122 + 0 +ACT?SAY:: ; VERB-DATA FOR SAY + -1 + 0 + RT?9222 + RT?9322 +ACT?LIE:: ; VERB-DATA FOR LIE + -1 + 0 + RT?9422 + 0 +ACT?TELL:: ; VERB-DATA FOR TELL + -1 + 0 + RT?9522 + RT?9622 +ACT?EXPLAIN:: ; VERB-DATA FOR EXPLAIN + -1 + 0 + RT?9722 + RT?9822 +ACT?CHECK:: ; VERB-DATA FOR CHECK + -1 + 0 + RT?9922 + RT?10022 +ACT?THANK:: ; VERB-DATA FOR THANK + V?THANK + 0 + RT?10122 + 0 +ACT?PAY:: ; VERB-DATA FOR PAY + -1 + 0 + RT?10222 + 0 +ACT?MUST:: ; VERB-DATA FOR MUST + -1 + 0 + RT?10322 + 0 +ACT?WILL:: ; VERB-DATA FOR WILL + -1 + 0 + RT?10422 + 0 +ACT?STAND:: ; VERB-DATA FOR STAND + V?STAND + 0 + RT?10522 + 0 +ACT?CLIMB:: ; VERB-DATA FOR CLIMB + -1 + 0 + RT?10622 + 0 +ACT?JUMP:: ; VERB-DATA FOR JUMP + V?LEAP + 0 + RT?10722 + 0 +ACT?OPEN:: ; VERB-DATA FOR OPEN + -1 + 0 + RT?10822 + RT?10922 +ACT?SHOW:: ; VERB-DATA FOR SHOW + -1 + 0 + RT?11022 + RT?11122 +ACT?WHERE:: ; VERB-DATA FOR WHERE + -1 + 0 + RT?11222 + RT?11322 +ACT?DRINK:: ; VERB-DATA FOR DRINK + -1 + 0 + RT?11422 + 0 +ACT?PLACE:: ; VERB-DATA FOR PLACE + -1 + 0 + RT?11522 + RT?11622 +ACT?THROW:: ; VERB-DATA FOR THROW + -1 + 0 + RT?11722 + RT?11822 +ACT?#RECORD:: ; VERB-DATA FOR #RECORD + V?$RECORD + 0 + 0 + 0 +ACT?MAY:: ; VERB-DATA FOR MAY + -1 + 0 + RT?11922 + 0 +ACT?WHO:: ; VERB-DATA FOR WHO + -1 + 0 + RT?12022 + RT?12122 +ACT?HAND:: ; VERB-DATA FOR HAND + -1 + 0 + RT?12222 + RT?12322 +ACT?EAT:: ; VERB-DATA FOR EAT + -1 + 0 + RT?12422 + 0 +ACT?UNSCRIPT:: ; VERB-DATA FOR UNSCRIPT + V?UNSCRIPT + 0 + 0 + 0 +ACT?HANG:: ; VERB-DATA FOR HANG + -1 + 0 + 0 + RT?12522 +ACT?DO:: ; VERB-DATA FOR DO + -1 + 0 + RT?12622 + 0 +ACT?ANSWER:: ; VERB-DATA FOR ANSWER + V?ANSWER + 0 + RT?12722 + 0 +ACT?START:: ; VERB-DATA FOR START + -1 + 0 + RT?12822 + 0 +ACT?ADDRESS:: ; VERB-DATA FOR ADDRESS + -1 + 0 + RT?12922 + 0 +ACT?WHAT:: ; VERB-DATA FOR WHAT + -1 + 0 + RT?13022 + RT?13122 +ACT?#COMMAND:: ; VERB-DATA FOR #COMMAND + V?$COMMAND + 0 + 0 + 0 +ACT?HOLD:: ; VERB-DATA FOR HOLD + -1 + 0 + RT?13222 + RT?13322 +ACT?QUIT:: ; VERB-DATA FOR QUIT + V?QUIT + 0 + 0 + 0 +ACT?WHEN:: ; VERB-DATA FOR WHEN + -1 + 0 + RT?13422 + RT?13522 +ACT?WAKE:: ; VERB-DATA FOR WAKE + -1 + 0 + RT?13622 + 0 +ACT?PLAY:: ; VERB-DATA FOR PLAY + -1 + 0 + RT?13722 + RT?13822 +ACT?NO:: ; VERB-DATA FOR NO + V?NO + 0 + 0 + 0 +ACT?LIGHT:: ; VERB-DATA FOR LIGHT + -1 + 0 + RT?13922 + 0 +ACT?$ID:: ; VERB-DATA FOR $ID + V?$ID + 0 + 0 + 0 +ACT?WAIT:: ; VERB-DATA FOR WAIT + -1 + 0 + RT?14022 + 0 +ACT?WHY:: ; VERB-DATA FOR WHY + -1 + 0 + RT?14122 + RT?14222 +ACT?DINE:: ; VERB-DATA FOR DINE + -1 + 0 + RT?14322 + 0 +ACT?POUR:: ; VERB-DATA FOR POUR + -1 + 0 + RT?14422 + RT?14522 +ACT?PUNCH:: ; VERB-DATA FOR PUNCH + -1 + 0 + RT?14622 + RT?14722 +ACT?SHAKE:: ; VERB-DATA FOR SHAKE + -1 + 0 + RT?14822 + RT?14922 +ACT?VERBOSE:: ; VERB-DATA FOR VERBOSE + V?VERBOSE + 0 + 0 + 0 +ACT?SHARE:: ; VERB-DATA FOR SHARE + -1 + 0 + RT?15022 + RT?15122 +ACT?SORRY:: ; VERB-DATA FOR SORRY + -1 + 0 + RT?15222 + 0 +ACT?TAKE:: ; VERB-DATA FOR TAKE + -1 + 0 + RT?15322 + RT?15422 +ACT?RELAX:: ; VERB-DATA FOR RELAX + V?RELAX + 0 + 0 + 0 +ACT?HELP:: ; VERB-DATA FOR HELP + V?HELP + 0 + RT?15522 + 0 +ACT?SEARCH:: ; VERB-DATA FOR SEARCH + -1 + 0 + RT?15622 + RT?15722 +ACT?RESTORE:: ; VERB-DATA FOR RESTORE + V?RESTORE + 0 + 0 + 0 +ACT?RELEASE:: ; VERB-DATA FOR RELEASE + V?VERSION + 0 + 0 + 0 +ACT?PICK:: ; VERB-DATA FOR PICK + -1 + 0 + RT?15822 + 0 +ACT?DIAGNOSE:: ; VERB-DATA FOR DIAGNOSE + -1 + 0 + RT?15922 + 0 +ACT?SWIM:: ; VERB-DATA FOR SWIM + -1 + 0 + RT?16022 + 0 +ACT?HIDE:: ; VERB-DATA FOR HIDE + V?HIDE + 0 + RT?16122 + RT?16222 +ACT?KNOCK:: ; VERB-DATA FOR KNOCK + -1 + 0 + RT?16322 + RT?16422 +ACT?DROP:: ; VERB-DATA FOR DROP + -1 + 0 + RT?16522 + RT?16622 +ACT?PULL:: ; VERB-DATA FOR PULL + -1 + 0 + RT?16722 + RT?16822 + .ENDT + + +; THE ACTION CALLING TABLE IS DEFINED HERE + +ATBL:: .TABLE + V-PDEBUG + V-BE + V-BE? + V-HOW + V-WHAT + V-WHEN + V-WHERE + V-WHO + V-WHY + V-WILL? + V-WOULD? + V-CAN? + V-COULD? + V-DO? + V-MAY? + V-MIGHT? + V-MUST? + V-SHOULD? + V-$ID + V-$REFRESH + V-$VERIFY + V-$CHEAT + V-$QUEUE + V-$RANDOM + V-$COMMAND + V-$RECORD + V-$UNRECORD + V-TELL + V-AIM + V-SHOW + V-SAIM + V-ANALYZE + V-LOOK-UNDER + V-LOOK-UP + V-SANALYZE + V-ANSWER + V-REPLY + V-ASK + V-ASK-CONTEXT-ABOUT + V-ASK-CONTEXT-FOR + V-ASK-ABOUT + V-ASK-FOR + V-ATTACK + V-BRIEF + V-BRUSH + V-BOARD + V-BUY + V-$CALL + V-CLIMB-DOWN + V-DISEMBARK + V-CLIMB-ON + V-THROUGH + V-CLIMB-UP + V-CLOSE + V-LAMP-OFF + V-COUNT + V-SPUT-ON + V-MUNG + V-DIAGNOSE + V-EAT + V-PUT + V-DRINK + V-DROP + V-PUT-IN + V-THROW-THROUGH + V-ENJOY + V-EXAMINE + V-READ + V-TALK-ABOUT + V-STELL-ABOUT + V-TELL-ABOUT + V-FAINT + V-RUB + V-FILL + V-FIND + V-SSEARCH-FOR + V-FIX + V-FOLLOW + V-FOOTNOTE + V-TAKE + V-TAKE-TO + V-STAND + V-GIVE + V-SGIVE + V-QUIT + V-LISTEN + V-HELLO + V-HELP + V-HIDE + V-PUT-UNDER + V-HOLD-UP + V-INVENTORY + V-LEAP + V-KILL + V-KISS + V-KNOCK + V-PUSH + V-SLAP + V-LEAVE + V-LIE + V-LAMP-ON + V-LOCK + V-LOOK + V-CHASTISE + V-LOOK-BEHIND + V-LOOK-DOWN + V-LOOK-INSIDE + V-SEARCH-FOR + V-LOOK-ON + V-LOOK-OUTSIDE + V-LOOK-THROUGH + V-NO + V-NOD + V-OPEN + V-PANIC + V-POUR + V-MOVE + V-MOVE-DIR + V-PULL-TOGETHER + V-PLAY + V-SREAD + V-REFUSE + V-RELAX + V-REMOVE + V-RESTART + V-RESTORE + V-RING + V-SSHOOT + V-SAVE + V-SAY + V-SCORE + V-SCRIPT + V-SEARCH + V-SHAKE + V-SHOOT + V-SSHOW + V-SIT + V-SIT-AT + V-SMELL + V-SMILE + V-SORRY + V-STOP + V-SUPER-BRIEF + V-SWIM + V-TAKE-OFF + V-THANK + V-THROW-AT + V-THROW-IN-TOWEL + V-TURN + V-UNDO + V-UNLOCK + V-UNSCRIPT + V-USE + V-VERBOSE + V-VERSION + V-WAIT-FOR + V-WAIT-UNTIL + V-ALARM + V-WALK-AROUND + V-WALK + V-WALK-TO + V-RUN-OVER + V-YELL + V-YES + .ENDT + +; THE PREACTION CALLING TABLE IS DEFINED HERE + +PATBL:: .TABLE + 0 + PRE-BE + 0 + 0 + 0 + 0 + PRE-WHERE + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-ASK + 0 + 0 + PRE-SAIM + PRE-ANALYZE + PRE-LOOK-UNDER + 0 + PRE-SANALYZE + 0 + 0 + PRE-ASK + PRE-ASK-CONTEXT-ABOUT + PRE-ASK-CONTEXT-FOR + PRE-ASK + PRE-ASK + 0 + 0 + PRE-BRUSH + 0 + 0 + PRE-ASK + 0 + 0 + 0 + PRE-THROUGH + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-EAT + PRE-PUT + 0 + PRE-PUT + PRE-PUT-IN + PRE-THROW-THROUGH + 0 + PRE-EXAMINE + PRE-READ + PRE-TALK-ABOUT + PRE-STELL-ABOUT + PRE-TELL-ABOUT + 0 + 0 + 0 + PRE-FIND + PRE-SSEARCH-FOR + 0 + 0 + 0 + PRE-TAKE + 0 + 0 + PRE-GIVE + PRE-SGIVE + 0 + PRE-LISTEN + PRE-HELLO + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-LIE + 0 + 0 + 0 + 0 + 0 + 0 + PRE-LOOK-INSIDE + PRE-SEARCH-FOR + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + PRE-MOVE + PRE-MOVE-DIR + 0 + 0 + PRE-SREAD + 0 + 0 + 0 + 0 + 0 + 0 + PRE-SSHOOT + 0 + 0 + 0 + 0 + PRE-SEARCH + 0 + 0 + PRE-SSHOW + PRE-SIT + 0 + 0 + 0 + PRE-HELLO + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + .ENDT + + +; VOCABULARY TABLE IS HERE + +VOCAB:: .TABLE + .BYTE 6 + .BYTE 46 + .BYTE 44 + .BYTE 34 + .BYTE 39 + .BYTE 33 + .BYTE 63 + .BYTE 10 + 687 + .VOCBEG 10,6 +W?$CALL:: .ZWORD "$call" + ACT?$CALL + 1 +W?$CHEAT:: .ZWORD "$cheat" + ACT?$CHEAT + 1 +W?$ID:: .ZWORD "$id" + ACT?$ID + 1 +W?$REFRESH:: .ZWORD "$refresh" + ACT?$REFRESH + 1 +W?$VERIFY:: .ZWORD "$verify" + ACT?$VERIFY + 1 +W?PERIOD:: .ZWORD "." + 0 + 32776 +W?COMMA:: .ZWORD "," + 0 + 1024 +W?!:: .ZWORD "!" + 0 + 32776 +W??:: .ZWORD "?" + 0 + 32776 +W?#COMMAND:: .ZWORD "#command" + ACT?#COMMAND + 1 +W?#DBG:: .ZWORD "#dbg" + ACT?#DBG + 1 +W?#QUEUE:: .ZWORD "#queue" + ACT?#QUEUE + 1 +W?#RANDOM:: .ZWORD "#random" + ACT?#RANDOM + 1 +W?#RECORD:: .ZWORD "#record" + ACT?#RECORD + 1 +W?#UNRECORD:: .ZWORD "#unrecord" + ACT?#UNRECORD + 1 +W?APOSTROPHE:: .ZWORD "'" + 0 + 16384 +W?QUOTE:: .ZWORD """" + 0 + 32772 +W?A:: .ZWORD "a" + 0 + 16 +W?ABOUT:: .ZWORD "about" + 0 + 2048 +W?ACROSS:: .ZWORD "across" + 0 + 2048 +W?ACTIVATE:: .ZWORD "activate" + ACT?START + 1 +W?ADDRESS:: .ZWORD "address" + ACT?ADDRESS + 1 +W?ADJUST:: .ZWORD "adjust" + ACT?FIX + 1 +W?AFT:: .ZWORD "aft" + W?SOUTH + 0 +W?AFTER:: .ZWORD "after" + 0 + 2048 +W?AGAIN:: .ZWORD "again" + 0 + 32 +W?AGAINST:: .ZWORD "against" + 0 + 2048 +W?AIM:: .ZWORD "aim" + ACT?POINT + 1 +W?ALCOHOL:: .ZWORD "alcohol" + 0 + 2 +W?ALIVE:: .ZWORD "alive" + 0 + 4 +W?ALL:: .ZWORD "all" + 0 + 16 +W?ALONG:: .ZWORD "along" + W?AROUND + 0 +W?AM:: .ZWORD "am" + 0 + 128 +W?AN:: .ZWORD "an" + 0 + 16 +W?ANALYSE:: .ZWORD "analyse" + ACT?CHECK + 1 +W?ANALYZE:: .ZWORD "analyze" + ACT?CHECK + 1 +W?AND:: .ZWORD "and" + 0 + 1024 +W?ANDROID:: .ZWORD "android" + 0 + 2 +W?ANSWER:: .ZWORD "answer" + ACT?ANSWER + 1 +W?ANY:: .ZWORD "any" + 0 + 16 +W?ANYWAY:: .ZWORD "anyway" + 0 + 0 +W?APOLOGIZE:: .ZWORD "apologize" + ACT?SORRY + 1 +W?APPROACH:: .ZWORD "approach" + ACT?HEAD + 1 +W?ARE:: .ZWORD "are" + 0 + 128 +W?AREA:: .ZWORD "area" + 0 + 2 +W?AREN:: .ZWORD "aren" + 0 + 0 +W?AROUND:: .ZWORD "around" + 0 + 2048 +W?ASK:: .ZWORD "ask" + ACT?ASK + 8193 +W?ASS:: .ZWORD "ass" + 0 + 0 +W?ASSAULT:: .ZWORD "assault" + ACT?ATTACK + 1 +W?ASSHOLE:: .ZWORD "asshole" + 0 + 0 +W?AT:: .ZWORD "at" + 0 + 2048 +W?ATTACK:: .ZWORD "attack" + ACT?ATTACK + 3 +W?AUNT'S:: .ZWORD "aunt's" + 0 + 4 +W?AWAKE:: .ZWORD "awake" + ACT?WAKE + 1 +W?AWAY:: .ZWORD "away" + 0 + 2048 +W?AYE:: .ZWORD "aye" + ACT?YES + 1 +W?BABEL:: .ZWORD "babel" + 0 + 4 +W?BACK:: .ZWORD "back" + 0 + 0 +W?BANG:: .ZWORD "bang" + ACT?KNOCK + 1 +W?BARE:: .ZWORD "bare" + 0 + 4 +W?BASTARD:: .ZWORD "bastard" + 0 + 0 +W?BATHE:: .ZWORD "bathe" + ACT?SWIM + 1 +W?BATTERED:: .ZWORD "battered" + 0 + 4 +W?BE:: .ZWORD "be" + ACT?BE + 33 +W?BE?:: .ZWORD "be?" + ACT?BE? + 1 +W?BEEBLEBROX:: .ZWORD "beeblebro" + 0 + 2 +W?BEEP:: .ZWORD "beep" + ACT?RING + 1 +W?BEER:: .ZWORD "beer" + 0 + 2 +W?BEERMAT:: .ZWORD "beermat" + 0 + 2 +W?BEHIND:: .ZWORD "behind" + 0 + 2048 +W?BELOW:: .ZWORD "below" + W?UNDER + 0 +W?BENCH:: .ZWORD "bench" + 0 + 2 +W?BENEATH:: .ZWORD "beneath" + W?UNDER + 0 +W?BESIDE:: .ZWORD "beside" + 0 + 2048 +W?BIG:: .ZWORD "big" + 0 + 4 +W?BILLION:: .ZWORD "billion" + 0 + 0 +W?BITCH:: .ZWORD "bitch" + 0 + 0 +W?BITTER:: .ZWORD "bitter" + 0 + 2 +W?BLAST:: .ZWORD "blast" + ACT?RING + 1 +W?BLASTER:: .ZWORD "blaster" + 0 + 2 +W?BLOW:: .ZWORD "blow" + ACT?RING + 1 +W?BLUE:: .ZWORD "blue" + 0 + 4 +W?BLUE-GREEN:: .ZWORD "blue-gree" + 0 + 4 +W?BOARD:: .ZWORD "board" + ACT?CLIMB + 1 +W?BOTH:: .ZWORD "both" + W?ALL + 0 +W?BOTTLE:: .ZWORD "bottle" + 0 + 2 +W?BREAK:: .ZWORD "break" + ACT?DAMAGE + 1 +W?BRICK:: .ZWORD "brick" + 0 + 6 +W?BRICKS:: .ZWORD "bricks" + 0 + 2 +W?BRIEF:: .ZWORD "brief" + ACT?BRIEF + 1 +W?BRUSH:: .ZWORD "brush" + ACT?CLEAN + 3 +W?BULKY:: .ZWORD "bulky" + 0 + 4 +W?BUT:: .ZWORD "but" + 0 + 4096 +W?BUY:: .ZWORD "buy" + W?ORDER + 0 +W?CALL:: .ZWORD "call" + ACT?CALL + 1 +W?CAN:: .ZWORD "can" + ACT?CAN + 513 +W?CARPET:: .ZWORD "carpet" + 0 + 2 +W?CARRY:: .ZWORD "carry" + ACT?TAKE + 1 +W?CHAIR:: .ZWORD "chair" + 0 + 2 +W?CHAIRS:: .ZWORD "chairs" + 0 + 2 +W?CHASE:: .ZWORD "chase" + ACT?FOLLOW + 1 +W?CHAT:: .ZWORD "chat" + ACT?SAY + 1 +W?CHECK:: .ZWORD "check" + ACT?CHECK + 1 +W?CHEESE:: .ZWORD "cheese" + 0 + 4 +W?CLEAN:: .ZWORD "clean" + ACT?CLEAN + 1 +W?CLIMB:: .ZWORD "climb" + ACT?CLIMB + 1 +W?CLOSE:: .ZWORD "close" + ACT?CLOSE + 1 +W?CLOSED:: .ZWORD "closed" + 0 + 4 +W?COCK:: .ZWORD "cock" + 0 + 0 +W?COCKSUCKER:: .ZWORD "cocksucke" + 0 + 0 +W?COME:: .ZWORD "come" + ACT?HEAD + 1 +W?COMFORT:: .ZWORD "comfort" + ACT?CONSOLE + 1 +W?CONCEAL:: .ZWORD "conceal" + ACT?HIDE + 1 +W?CONSOLE:: .ZWORD "console" + ACT?CONSOLE + 1 +W?CONSULT:: .ZWORD "consult" + ACT?ASK + 1 +W?COPY:: .ZWORD "copy" + 0 + 2 +W?CORPORATION:: .ZWORD "corporati" + 0 + 2 +W?COULD:: .ZWORD "could" + ACT?COULD + 513 +W?COULDN:: .ZWORD "couldn" + 0 + 0 +W?COUNT:: .ZWORD "count" + ACT?COUNT + 1 +W?COVER:: .ZWORD "cover" + ACT?COVER + 1 +W?COVERED:: .ZWORD "covered" + 0 + 4 +W?CRACK:: .ZWORD "crack" + ACT?DAMAGE + 1 +W?CRAP:: .ZWORD "crap" + 0 + 0 +W?CRUSH:: .ZWORD "crush" + ACT?DAMAGE + 1 +W?CUNT:: .ZWORD "cunt" + 0 + 0 +W?CUSS:: .ZWORD "cuss" + 0 + 0 +W?CYBERNETICS:: .ZWORD "cyberneti" + 0 + 4 +W?D:: .ZWORD "d" + W?DOWN + 0 +W?DAMAGE:: .ZWORD "damage" + ACT?DAMAGE + 1 +W?DAMN:: .ZWORD "damn" + 0 + 0 +W?DAMNED:: .ZWORD "damned" + 0 + 0 +W?DANGER:: .ZWORD "danger" + 0 + 2 +W?DARK:: .ZWORD "dark" + 0 + 4 +W?DARK-HAIR:: .ZWORD "dark-hair" + 0 + 4 +W?DEAD:: .ZWORD "dead" + 0 + 4 +W?DEMOLISH:: .ZWORD "demolish" + ACT?DAMAGE + 1 +W?DEPART:: .ZWORD "depart" + ACT?LEAVE + 1 +W?DEPRESSED:: .ZWORD "depressed" + 0 + 4 +W?DESCRIBE:: .ZWORD "describe" + ACT?EXAMINE + 1 +W?DESK:: .ZWORD "desk" + 0 + 2 +W?DESTROY:: .ZWORD "destroy" + ACT?DAMAGE + 1 +W?DETECT:: .ZWORD "detect" + ACT?FIND + 1 +W?DEVOUR:: .ZWORD "devour" + ACT?EAT + 1 +W?DIAGNOSE:: .ZWORD "diagnose" + ACT?DIAGNOSE + 1 +W?DID:: .ZWORD "did" + W?DO + 512 +W?DIDN:: .ZWORD "didn" + 0 + 0 +W?DIG:: .ZWORD "dig" + ACT?SEARCH + 1 +W?DINE:: .ZWORD "dine" + ACT?DINE + 1 +W?DINNER:: .ZWORD "dinner" + 0 + 2 +W?DISCOVER:: .ZWORD "discover" + ACT?FIND + 1 +W?DISHES:: .ZWORD "dishes" + 0 + 2 +W?DISPLAY:: .ZWORD "display" + ACT?SHOW + 1 +W?DIVE:: .ZWORD "dive" + ACT?JUMP + 1 +W?DO:: .ZWORD "do" + ACT?DO + 513 +W?DOES:: .ZWORD "does" + W?DO + 512 +W?DOESN:: .ZWORD "doesn" + 0 + 0 +W?DOFF:: .ZWORD "doff" + ACT?REMOVE + 1 +W?DON:: .ZWORD "don" + 0 + 0 +W?DON'T:: .ZWORD "don't" + 0 + 8 +W?DOOR:: .ZWORD "door" + 0 + 6 +W?DOWN:: .ZWORD "down" + .BYTE 54 + .BYTE 0 + 2112 +W?DOWNSTAIRS:: .ZWORD "downstair" + W?DOWN + 0 +W?DOZE:: .ZWORD "doze" + ACT?SLEEP + 1 +W?DRAPE:: .ZWORD "drape" + ACT?DRAPE + 1 +W?DRESSING:: .ZWORD "dressing" + 0 + 4 +W?DRINK:: .ZWORD "drink" + ACT?DRINK + 1 +W?DRIVE:: .ZWORD "drive" + ACT?HEAD + 1 +W?DROP:: .ZWORD "drop" + ACT?DROP + 1 +W?E:: .ZWORD "e" + W?EAST + 0 +W?EAR:: .ZWORD "ear" + 0 + 2 +W?EARS:: .ZWORD "ears" + 0 + 2 +W?EARTH:: .ZWORD "earth" + 0 + 2 +W?EAST:: .ZWORD "east" + .BYTE 61 + .BYTE 0 + 66 +W?EAT:: .ZWORD "eat" + ACT?EAT + 1 +W?EIGHTEEN:: .ZWORD "eighteen" + 0 + 0 +W?EIGHTY:: .ZWORD "eighty" + 0 + 0 +W?EITHER:: .ZWORD "either" + 0 + 16 +W?ELEVEN:: .ZWORD "eleven" + 0 + 0 +W?END.OF.INPUT:: .ZWORD "end.of.in" + 0 + 32776 +W?ENJOY:: .ZWORD "enjoy" + ACT?ENJOY + 1 +W?ENTER:: .ZWORD "enter" + ACT?ENTER + 1 +W?EXAMINE:: .ZWORD "examine" + ACT?EXAMINE + 1 +W?EXCEPT:: .ZWORD "except" + 0 + 4096 +W?EXIT:: .ZWORD "exit" + ACT?LEAVE + 1 +W?EXPLAIN:: .ZWORD "explain" + ACT?EXPLAIN + 1 +W?EXPLORE:: .ZWORD "explore" + ACT?EXAMINE + 1 +W?EYE:: .ZWORD "eye" + 0 + 2 +W?EYES:: .ZWORD "eyes" + 0 + 2 +W?F:: .ZWORD "f" + W?NORTH + 0 +W?FACE:: .ZWORD "face" + 0 + 2 +W?FADED:: .ZWORD "faded" + 0 + 4 +W?FAINT:: .ZWORD "faint" + ACT?SLEEP + 1 +W?FEED:: .ZWORD "feed" + ACT?HAND + 1 +W?FEEL:: .ZWORD "feel" + ACT?RUB + 1 +W?FIDDLE:: .ZWORD "fiddle" + ACT?FIDDLE + 1 +W?FIFTEEN:: .ZWORD "fifteen" + 0 + 0 +W?FIFTY:: .ZWORD "fifty" + 0 + 0 +W?FIGHT:: .ZWORD "fight" + ACT?ATTACK + 1 +W?FILL:: .ZWORD "fill" + ACT?FILL + 1 +W?FIND:: .ZWORD "find" + ACT?FIND + 1 +W?FIRE:: .ZWORD "fire" + ACT?FIRE + 1 +W?FISH:: .ZWORD "fish" + 0 + 2 +W?FIX:: .ZWORD "fix" + ACT?FIX + 1 +W?FLATHEAD:: .ZWORD "flathead" + 0 + 4 +W?FLICK:: .ZWORD "flick" + ACT?SWITCH + 1 +W?FLIP:: .ZWORD "flip" + ACT?SWITCH + 1 +W?FLIRT:: .ZWORD "flirt" + ACT?CONSOLE + 1 +W?FLOOD:: .ZWORD "flood" + ACT?FILL + 5 +W?FLOOR:: .ZWORD "floor" + 0 + 2 +W?FOLLOW:: .ZWORD "follow" + ACT?FOLLOW + 1 +W?FOOD:: .ZWORD "food" + 0 + 2 +W?FOOTNOTE:: .ZWORD "footnote" + ACT?FOOTNOTE + 1 +W?FOR:: .ZWORD "for" + 0 + 2048 +W?FORD:: .ZWORD "ford" + 0 + 6 +W?FORE:: .ZWORD "fore" + W?NORTH + 0 +W?FOREWA:: .ZWORD "forewa" + W?NORTH + 0 +W?FORTY:: .ZWORD "forty" + 0 + 0 +W?FOURTEEN:: .ZWORD "fourteen" + 0 + 0 +W?FRESHEN:: .ZWORD "freshen" + ACT?CLEAN + 1 +W?FRISK:: .ZWORD "frisk" + ACT?SEARCH + 1 +W?FROB:: .ZWORD "frob" + 0 + 6 +W?FROBS:: .ZWORD "frobs" + 0 + 2 +W?FROM:: .ZWORD "from" + 0 + 6144 +W?FRUSTRATION:: .ZWORD "frustrati" + 0 + 2 +W?FUCK:: .ZWORD "fuck" + 0 + 0 +W?FUCKED:: .ZWORD "fucked" + 0 + 0 +W?FUCKER:: .ZWORD "fucker" + 0 + 2 +W?FUCKING:: .ZWORD "fucking" + 0 + 0 +W?FULL:: .ZWORD "full" + 0 + 4 +W?G:: .ZWORD "g" + 0 + 32 +W?GAB:: .ZWORD "gab" + ACT?SAY + 1 +W?GAME:: .ZWORD "game" + 0 + 2 +W?GARGLE:: .ZWORD "gargle" + 0 + 4 +W?GAZE:: .ZWORD "gaze" + ACT?LOOK + 1 +W?GET:: .ZWORD "get" + ACT?GET + 1 +W?GIFT:: .ZWORD "gift" + 0 + 2 +W?GIVE:: .ZWORD "give" + ACT?HAND + 1 +W?GLASS:: .ZWORD "glass" + 0 + 2 +W?GLASSES:: .ZWORD "glasses" + 0 + 2 +W?GO:: .ZWORD "go" + ACT?HEAD + 1 +W?GOAL:: .ZWORD "goal" + 0 + 2 +W?GOBBLE:: .ZWORD "gobble" + ACT?EAT + 1 +W?GODDAMN:: .ZWORD "goddamn" + 0 + 0 +W?GODDAMNED:: .ZWORD "goddamned" + 0 + 0 +W?GOLD:: .ZWORD "gold" + 0 + 2 +W?GOWN:: .ZWORD "gown" + 0 + 2 +W?GRAB:: .ZWORD "grab" + ACT?TAKE + 1 +W?GREEN:: .ZWORD "green" + 0 + 4 +W?GREET:: .ZWORD "greet" + ACT?HELLO + 1 +W?GREETINGS:: .ZWORD "greetings" + ACT?HELLO + 1 +W?GRIN:: .ZWORD "grin" + ACT?SMILE + 1 +W?GROUND:: .ZWORD "ground" + 0 + 2 +W?GUIDE:: .ZWORD "guide" + 0 + 2 +W?GUZZLE:: .ZWORD "guzzle" + ACT?DRINK + 1 +W?HAIRED:: .ZWORD "haired" + 0 + 4 +W?HAND:: .ZWORD "hand" + ACT?HAND + 7 +W?HANDS:: .ZWORD "hands" + 0 + 2 +W?HANG:: .ZWORD "hang" + ACT?HANG + 1 +W?HATCH:: .ZWORD "hatch" + 0 + 2 +W?HE:: .ZWORD "he" + 0 + 0 +W?HEAD:: .ZWORD "head" + ACT?HEAD + 3 +W?HEAR:: .ZWORD "hear" + ACT?HEAR + 1 +W?HEART:: .ZWORD "heart" + 0 + 2 +W?HELL:: .ZWORD "hell" + 0 + 0 +W?HELLO:: .ZWORD "hello" + ACT?HELLO + 1 +W?HELP:: .ZWORD "help" + ACT?HELP + 1 +W?HER:: .ZWORD "her" + 0 + 2 +W?HERE:: .ZWORD "here" + 0 + 2 +W?HERSELF:: .ZWORD "herself" + 0 + 2 +W?HI:: .ZWORD "hi" + ACT?HELLO + 1 +W?HIDE:: .ZWORD "hide" + ACT?HIDE + 1 +W?HIM:: .ZWORD "him" + 0 + 2 +W?HIMSELF:: .ZWORD "himself" + 0 + 2 +W?HINT:: .ZWORD "hint" + ACT?HELP + 1 +W?HINTS:: .ZWORD "hints" + ACT?HELP + 1 +W?HIS:: .ZWORD "his" + 0 + 4 +W?HIT:: .ZWORD "hit" + ACT?PUNCH + 1 +W?HITCHHIKER'S:: .ZWORD "hitchhike" + 0 + 4 +W?HOLD:: .ZWORD "hold" + ACT?HOLD + 1 +W?HONK:: .ZWORD "honk" + ACT?RING + 1 +W?HOW:: .ZWORD "how" + ACT?HOW + 257 +W?HOWL:: .ZWORD "howl" + ACT?YELL + 1 +W?HUG:: .ZWORD "hug" + ACT?CONSOLE + 1 +W?HUNDRED:: .ZWORD "hundred" + 0 + 0 +W?HURL:: .ZWORD "hurl" + ACT?THROW + 1 +W?HURT:: .ZWORD "hurt" + ACT?DAMAGE + 1 +W?I:: .ZWORD "i" + ACT?I + 1 +W?IN:: .ZWORD "in" + .BYTE 53 + .BYTE 0 + 6208 +W?INCREDIBLE:: .ZWORD "incredibl" + 0 + 4 +W?INDEED:: .ZWORD "indeed" + ACT?YES + 1 +W?INQUIRE:: .ZWORD "inquire" + ACT?ASK + 1 +W?INSERT:: .ZWORD "insert" + ACT?PLACE + 1 +W?INSIDE:: .ZWORD "inside" + W?IN + 0 +W?INSPECT:: .ZWORD "inspect" + ACT?EXAMINE + 1 +W?INT.NUM:: .ZWORD "int.num" + 0 + 6 +W?INT.TIM:: .ZWORD "int.tim" + 0 + 6 +W?INTO:: .ZWORD "into" + W?IN + 0 +W?INVENT:: .ZWORD "invent" + ACT?I + 1 +W?IS:: .ZWORD "is" + 0 + 128 +W?ISN:: .ZWORD "isn" + 0 + 0 +W?IT:: .ZWORD "it" + 0 + 2 +W?ITS:: .ZWORD "its" + 0 + 4 +W?JUMP:: .ZWORD "jump" + ACT?JUMP + 1 +W?KICK:: .ZWORD "kick" + ACT?PUNCH + 1 +W?KILL:: .ZWORD "kill" + ACT?MURDER + 1 +W?KISS:: .ZWORD "kiss" + ACT?CONSOLE + 1 +W?KNOCK:: .ZWORD "knock" + ACT?KNOCK + 1 +W?L:: .ZWORD "l" + ACT?LOOK + 1 +W?L.G:: .ZWORD "l.g" + 0 + 2 +W?LAMP:: .ZWORD "lamp" + 0 + 2 +W?LAY:: .ZWORD "lay" + ACT?PLACE + 1 +W?LEAP:: .ZWORD "leap" + ACT?JUMP + 1 +W?LEATHER:: .ZWORD "leather" + 0 + 4 +W?LEAVE:: .ZWORD "leave" + ACT?LEAVE + 1 +W?LICK:: .ZWORD "lick" + ACT?EAT + 1 +W?LIE:: .ZWORD "lie" + ACT?LIE + 1 +W?LIFT:: .ZWORD "lift" + ACT?TAKE + 1 +W?LIGHT:: .ZWORD "light" + ACT?LIGHT + 3 +W?LIGHTS:: .ZWORD "lights" + 0 + 2 +W?LISTEN:: .ZWORD "listen" + ACT?LISTEN + 1 +W?LOCATE:: .ZWORD "locate" + ACT?FIND + 1 +W?LOCK:: .ZWORD "lock" + ACT?LOCK + 1 +W?LOCKED:: .ZWORD "locked" + 0 + 4 +W?LOGOFF:: .ZWORD "logoff" + ACT?QUIT + 1 +W?LOGOUT:: .ZWORD "logout" + ACT?QUIT + 1 +W?LOOK:: .ZWORD "look" + ACT?LOOK + 1 +W?LOOK-INSIDE:: .ZWORD "look-insi" + ACT?LOOK-INSIDE + 1 +W?LOOP:: .ZWORD "loop" + 0 + 2 +W?LOTS:: .ZWORD "lots" + 0 + 2 +W?M:: .ZWORD "m" + 0 + 0 +W?MADAM:: .ZWORD "madam" + 0 + 2 +W?MARV:: .ZWORD "marv" + 0 + 2 +W?MARVIN:: .ZWORD "marvin" + 0 + 2 +W?MAY:: .ZWORD "may" + ACT?MAY + 513 +W?MCMILLAN:: .ZWORD "mcmillan" + 0 + 2 +W?ME:: .ZWORD "me" + 0 + 2 +W?MEDITATE:: .ZWORD "meditate" + ACT?RELAX + 1 +W?MIGHT:: .ZWORD "might" + ACT?MIGHT + 513 +W?MILLION:: .ZWORD "million" + 0 + 0 +W?MILLIWAYS:: .ZWORD "milliways" + 0 + 2 +W?MINE:: .ZWORD "mine" + W?MY + 0 +W?MINUTE:: .ZWORD "minute" + 0 + 2 +W?MINUTES:: .ZWORD "minutes" + 0 + 2 +W?MISS:: .ZWORD "miss" + W?MS + 0 +W?MISTER:: .ZWORD "mister" + W?MR + 0 +W?MOLEST:: .ZWORD "molest" + ACT?ATTACK + 1 +W?MOON:: .ZWORD "moon" + 0 + 4 +W?MOONLIGHT:: .ZWORD "moonlight" + 0 + 2 +W?MOVE:: .ZWORD "move" + ACT?PULL + 1 +W?MR:: .ZWORD "mr" + 0 + 4 +W?MS:: .ZWORD "ms" + 0 + 4 +W?MURDER:: .ZWORD "murder" + ACT?MURDER + 1 +W?MUST:: .ZWORD "must" + ACT?MUST + 513 +W?MY:: .ZWORD "my" + 0 + 4 +W?MYSELF:: .ZWORD "myself" + 0 + 2 +W?N:: .ZWORD "n" + W?NORTH + 0 +W?NAP:: .ZWORD "nap" + ACT?SLEEP + 1 +W?NE:: .ZWORD "ne" + .BYTE 62 + .BYTE 0 + 66 +W?NEW:: .ZWORD "new" + 0 + 4 +W?NINETEEN:: .ZWORD "nineteen" + 0 + 0 +W?NINETY:: .ZWORD "ninety" + 0 + 0 +W?NO:: .ZWORD "no" + ACT?NO + 1 +W?NO.WORD:: .ZWORD "no.word" + 0 + 4 +W?NOD:: .ZWORD "nod" + ACT?NOD + 1 +W?NOPE:: .ZWORD "nope" + ACT?NO + 1 +W?NORTH:: .ZWORD "north" + .BYTE 63 + .BYTE 0 + 70 +W?NORTHEAST:: .ZWORD "northeast" + W?NE + 0 +W?NORTHWEST:: .ZWORD "northwest" + W?NW + 0 +W?NOT:: .ZWORD "not" + 0 + 32 +W?NOW:: .ZWORD "now" + 0 + 0 +W?NW:: .ZWORD "nw" + .BYTE 56 + .BYTE 0 + 66 +W?O:: .ZWORD "o" + 0 + 32 +W?OBJECT:: .ZWORD "object" + 0 + 2 +W?OBSERVE:: .ZWORD "observe" + ACT?EXAMINE + 1 +W?OF:: .ZWORD "of" + 0 + 32769 +W?OFF:: .ZWORD "off" + 0 + 2048 +W?OFFER:: .ZWORD "offer" + ACT?HAND + 1 +W?OH:: .ZWORD "oh" + 0 + 0 +W?OK:: .ZWORD "ok" + ACT?YES + 1 +W?OKAY:: .ZWORD "okay" + ACT?YES + 1 +W?ON:: .ZWORD "on" + 0 + 6144 +W?ONCE:: .ZWORD "once" + 0 + 8 +W?ONE:: .ZWORD "one" + 0 + 2 +W?ONTO:: .ZWORD "onto" + W?ON + 0 +W?OOPS:: .ZWORD "oops" + 0 + 32 +W?OPEN:: .ZWORD "open" + ACT?OPEN + 5 +W?ORDER:: .ZWORD "order" + ACT?ORDER + 8193 +W?OUT:: .ZWORD "out" + .BYTE 52 + .BYTE 0 + 2112 +W?OUTSIDE:: .ZWORD "outside" + W?OUT + 0 +W?OVER:: .ZWORD "over" + 0 + 2048 +W?P:: .ZWORD "p" + W?WEST + 0 +W?PAN-GALACTIC:: .ZWORD "pan-galac" + 0 + 4 +W?PANIC:: .ZWORD "panic" + ACT?PANIC + 1 +W?PARANOID:: .ZWORD "paranoid" + 0 + 4 +W?PARK:: .ZWORD "park" + ACT?PARK + 1 +W?PASS:: .ZWORD "pass" + ACT?HAND + 1 +W?PAUSE:: .ZWORD "pause" + ACT?WAIT + 1 +W?PAY:: .ZWORD "pay" + ACT?PAY + 1 +W?PEEK:: .ZWORD "peek" + ACT?LOOK + 1 +W?PEEP:: .ZWORD "peep" + ACT?LOOK + 1 +W?PEER:: .ZWORD "peer" + ACT?LOOK + 1 +W?PICK:: .ZWORD "pick" + ACT?PICK + 1 +W?PINT:: .ZWORD "pint" + 0 + 2 +W?PISS:: .ZWORD "piss" + 0 + 0 +W?PLACE:: .ZWORD "place" + ACT?PLACE + 3 +W?PLANET:: .ZWORD "planet" + 0 + 2 +W?PLATE:: .ZWORD "plate" + 0 + 2 +W?PLAY:: .ZWORD "play" + ACT?PLAY + 1 +W?PLEASE:: .ZWORD "please" + 0 + 0 +W?POCKET:: .ZWORD "pocket" + 0 + 2 +W?POINT:: .ZWORD "point" + ACT?POINT + 1 +W?PORT:: .ZWORD "port" + W?WEST + 0 +W?POUR:: .ZWORD "pour" + ACT?POUR + 1 +W?PREFECT:: .ZWORD "prefect" + 0 + 2 +W?PRESIDENT:: .ZWORD "president" + 0 + 6 +W?PRESS:: .ZWORD "press" + ACT?PUSH + 1 +W?PROBLEM:: .ZWORD "problem" + 0 + 2 +W?PROCEED:: .ZWORD "proceed" + ACT?HEAD + 1 +W?PROPER:: .ZWORD "proper" + 0 + 4 +W?PRY:: .ZWORD "pry" + ACT?TAKE + 1 +W?PULL:: .ZWORD "pull" + ACT?PULL + 1 +W?PUNCH:: .ZWORD "punch" + ACT?PUNCH + 1 +W?PURCHASE:: .ZWORD "purchase" + W?ORDER + 0 +W?PURSUE:: .ZWORD "pursue" + ACT?FOLLOW + 1 +W?PUSH:: .ZWORD "push" + ACT?PUSH + 1 +W?PUT:: .ZWORD "put" + ACT?PLACE + 1 +W?PUZZLE:: .ZWORD "puzzle" + 0 + 2 +W?Q:: .ZWORD "q" + ACT?QUIT + 1 +W?QUERY:: .ZWORD "query" + ACT?ASK + 1 +W?QUESTION:: .ZWORD "question" + ACT?ASK + 1 +W?QUIET:: .ZWORD "quiet" + 0 + 4 +W?QUIT:: .ZWORD "quit" + ACT?QUIT + 1 +W?RAISE:: .ZWORD "raise" + ACT?TAKE + 1 +W?RAP:: .ZWORD "rap" + ACT?KNOCK + 1 +W?RAPE:: .ZWORD "rape" + ACT?ATTACK + 1 +W?RATTLE:: .ZWORD "rattle" + ACT?SHAKE + 1 +W?RE:: .ZWORD "re" + 0 + 0 +W?READ:: .ZWORD "read" + ACT?READ + 1 +W?RED:: .ZWORD "red" + 0 + 4 +W?REFUSE:: .ZWORD "refuse" + ACT?REFUSE + 1 +W?RELAX:: .ZWORD "relax" + ACT?RELAX + 1 +W?RELEASE:: .ZWORD "release" + ACT?RELEASE + 1 +W?REMOVE:: .ZWORD "remove" + ACT?REMOVE + 1 +W?REPAIR:: .ZWORD "repair" + ACT?FIX + 1 +W?REPEL:: .ZWORD "repel" + ACT?ATTACK + 1 +W?REPLY:: .ZWORD "reply" + ACT?ANSWER + 1 +W?REQUEST:: .ZWORD "request" + ACT?REQUEST + 1 +W?RESPOND:: .ZWORD "respond" + ACT?ANSWER + 1 +W?REST:: .ZWORD "rest" + ACT?RELAX + 1 +W?RESTART:: .ZWORD "restart" + ACT?RESTART + 1 +W?RESTORE:: .ZWORD "restore" + ACT?RESTORE + 1 +W?RESUME:: .ZWORD "resume" + ACT?RESTORE + 1 +W?RETURN:: .ZWORD "return" + ACT?HEAD + 1 +W?REVISION:: .ZWORD "revision" + ACT?RELEASE + 1 +W?RID:: .ZWORD "rid" + 0 + 2048 +W?RING:: .ZWORD "ring" + ACT?RING + 1 +W?ROBE:: .ZWORD "robe" + 0 + 2 +W?ROBOT:: .ZWORD "robot" + 0 + 2 +W?ROOM:: .ZWORD "room" + 0 + 2 +W?ROUSE:: .ZWORD "rouse" + ACT?WAKE + 1 +W?RUB:: .ZWORD "rub" + ACT?RUB + 1 +W?RUG:: .ZWORD "rug" + 0 + 2 +W?RUMMAGE:: .ZWORD "rummage" + ACT?SEARCH + 1 +W?RUN:: .ZWORD "run" + ACT?HEAD + 1 +W?S:: .ZWORD "s" + W?SOUTH + 0 +W?SANDWICH:: .ZWORD "sandwich" + 0 + 2 +W?SATCHEL:: .ZWORD "satchel" + 0 + 2 +W?SAVE:: .ZWORD "save" + ACT?SAVE + 1 +W?SAY:: .ZWORD "say" + ACT?SAY + 1 +W?SB:: .ZWORD "sb" + W?EAST + 0 +W?SCALE:: .ZWORD "scale" + ACT?CLIMB + 1 +W?SCC:: .ZWORD "scc" + 0 + 2 +W?SCORE:: .ZWORD "score" + ACT?SCORE + 1 +W?SCRAPE:: .ZWORD "scrape" + ACT?CLEAN + 1 +W?SCRATCH:: .ZWORD "scratch" + ACT?CLEAN + 1 +W?SCREAM:: .ZWORD "scream" + ACT?YELL + 1 +W?SCREW:: .ZWORD "screw" + 0 + 0 +W?SCREWDRIV:: .ZWORD "screwdriv" + 0 + 2 +W?SCRIPT:: .ZWORD "script" + ACT?SCRIPT + 1 +W?SE:: .ZWORD "se" + .BYTE 60 + .BYTE 0 + 66 +W?SEARCH:: .ZWORD "search" + ACT?SEARCH + 1 +W?SEAT:: .ZWORD "seat" + 0 + 2 +W?SEE:: .ZWORD "see" + ACT?LOOK + 1 +W?SEEK:: .ZWORD "seek" + ACT?FIND + 1 +W?SEIZE:: .ZWORD "seize" + ACT?TAKE + 1 +W?SELF:: .ZWORD "self" + 0 + 2 +W?SELL:: .ZWORD "sell" + ACT?HAND + 1 +W?SET:: .ZWORD "set" + ACT?PLACE + 1 +W?SEVENTEEN:: .ZWORD "seventeen" + 0 + 0 +W?SEVENTY:: .ZWORD "seventy" + 0 + 0 +W?SHAKE:: .ZWORD "shake" + ACT?SHAKE + 1 +W?SHALL:: .ZWORD "shall" + W?WILL + 640 +W?SHARE:: .ZWORD "share" + ACT?SHARE + 1 +W?SHE:: .ZWORD "she" + 0 + 0 +W?SHIP:: .ZWORD "ship" + 0 + 2 +W?SHIT:: .ZWORD "shit" + 0 + 0 +W?SHITHEAD:: .ZWORD "shithead" + 0 + 0 +W?SHOOT:: .ZWORD "shoot" + ACT?FIRE + 1 +W?SHOULD:: .ZWORD "should" + ACT?SHOULD + 513 +W?SHOULDN:: .ZWORD "shouldn" + 0 + 0 +W?SHOUT:: .ZWORD "shout" + ACT?YELL + 1 +W?SHOVE:: .ZWORD "shove" + ACT?PUSH + 1 +W?SHOW:: .ZWORD "show" + ACT?SHOW + 1 +W?SHUT:: .ZWORD "shut" + ACT?CLOSE + 5 +W?SIP:: .ZWORD "sip" + ACT?DRINK + 1 +W?SIR:: .ZWORD "sir" + 0 + 2 +W?SIRIUS:: .ZWORD "sirius" + 0 + 4 +W?SIT:: .ZWORD "sit" + ACT?SIT + 1 +W?SIXTEEN:: .ZWORD "sixteen" + 0 + 0 +W?SIXTY:: .ZWORD "sixty" + 0 + 0 +W?SKIM:: .ZWORD "skim" + ACT?READ + 1 +W?SKY:: .ZWORD "sky" + 0 + 2 +W?SLAP:: .ZWORD "slap" + ACT?PUNCH + 1 +W?SLEEP:: .ZWORD "sleep" + ACT?SLEEP + 3 +W?SLEEVE:: .ZWORD "sleeve" + 0 + 2 +W?SLIDE:: .ZWORD "slide" + ACT?SLIDE + 1 +W?SMALL:: .ZWORD "small" + 0 + 4 +W?SMASH:: .ZWORD "smash" + ACT?DAMAGE + 1 +W?SMELL:: .ZWORD "smell" + ACT?SMELL + 1 +W?SMILE:: .ZWORD "smile" + ACT?SMILE + 1 +W?SNIFF:: .ZWORD "sniff" + ACT?SMELL + 1 +W?SNOOZE:: .ZWORD "snooze" + ACT?SLEEP + 1 +W?SOGGY:: .ZWORD "soggy" + 0 + 4 +W?SOON:: .ZWORD "soon" + 0 + 0 +W?SORRY:: .ZWORD "sorry" + ACT?SORRY + 1 +W?SOUND:: .ZWORD "sound" + ACT?SOUND + 1 +W?SOUTH:: .ZWORD "south" + .BYTE 59 + .BYTE 0 + 70 +W?SOUTHEAST:: .ZWORD "southeast" + W?SE + 0 +W?SOUTHWEST:: .ZWORD "southwest" + W?SW + 0 +W?SPACE:: .ZWORD "space" + 0 + 4 +W?SPACESHIP:: .ZWORD "spaceship" + 0 + 2 +W?SPEAK:: .ZWORD "speak" + ACT?SAY + 1 +W?SPILL:: .ZWORD "spill" + ACT?POUR + 1 +W?SPRAY:: .ZWORD "spray" + ACT?FIRE + 1 +W?SPRINKLE:: .ZWORD "sprinkle" + ACT?POUR + 1 +W?STAB:: .ZWORD "stab" + ACT?MURDER + 1 +W?STAIR:: .ZWORD "stair" + 0 + 2 +W?STAIRS:: .ZWORD "stairs" + 0 + 2 +W?STAIRWAY:: .ZWORD "stairway" + 0 + 2 +W?STALK:: .ZWORD "stalk" + ACT?FOLLOW + 1 +W?STAND:: .ZWORD "stand" + ACT?STAND + 1 +W?STARBO:: .ZWORD "starbo" + W?EAST + 0 +W?STARE:: .ZWORD "stare" + ACT?LOOK + 1 +W?START:: .ZWORD "start" + ACT?START + 1 +W?STARTLE:: .ZWORD "startle" + ACT?WAKE + 1 +W?STATE:: .ZWORD "state" + ACT?SAY + 1 +W?STAY:: .ZWORD "stay" + ACT?WAIT + 1 +W?STEAL:: .ZWORD "steal" + ACT?TAKE + 1 +W?STEER:: .ZWORD "steer" + ACT?HEAD + 1 +W?STEP:: .ZWORD "step" + ACT?HEAD + 1 +W?STOP:: .ZWORD "stop" + ACT?PARK + 1 +W?STUDY:: .ZWORD "study" + ACT?EXAMINE + 1 +W?STUFF:: .ZWORD "stuff" + ACT?PLACE + 1 +W?SUB-ETHA:: .ZWORD "sub-etha" + 0 + 4 +W?SUCKER:: .ZWORD "sucker" + 0 + 2 +W?SUCKS:: .ZWORD "sucks" + 0 + 0 +W?SUMMON:: .ZWORD "summon" + ACT?CALL + 1 +W?SUPERBRIEF:: .ZWORD "superbrie" + ACT?SUPERBRIEF + 1 +W?SURE:: .ZWORD "sure" + ACT?YES + 1 +W?SURPRISE:: .ZWORD "surprise" + ACT?WAKE + 1 +W?SW:: .ZWORD "sw" + .BYTE 58 + .BYTE 0 + 66 +W?SWALLOW:: .ZWORD "swallow" + ACT?DRINK + 1 +W?SWIM:: .ZWORD "swim" + ACT?SWIM + 1 +W?SWITCH:: .ZWORD "switch" + ACT?SWITCH + 1 +W?T:: .ZWORD "t" + 0 + 0 +W?TABLE:: .ZWORD "table" + 0 + 2 +W?TAKE:: .ZWORD "take" + ACT?TAKE + 1 +W?TALK:: .ZWORD "talk" + ACT?SAY + 1 +W?TASTE:: .ZWORD "taste" + ACT?EAT + 1 +W?TATTY:: .ZWORD "tatty" + 0 + 4 +W?TEETH:: .ZWORD "teeth" + 0 + 2 +W?TELL:: .ZWORD "tell" + ACT?TELL + 8193 +W?TEN:: .ZWORD "ten" + 0 + 0 +W?TEST:: .ZWORD "test" + ACT?CHECK + 1 +W?THANK:: .ZWORD "thank" + ACT?THANK + 1 +W?THANKS:: .ZWORD "thanks" + ACT?THANK + 1 +W?THAT:: .ZWORD "that" + 0 + 0 +W?THE:: .ZWORD "the" + 0 + 32770 +W?THEIR:: .ZWORD "their" + 0 + 4 +W?THEM:: .ZWORD "them" + 0 + 2 +W?THEN:: .ZWORD "then" + 0 + 32776 +W?THERE:: .ZWORD "there" + 0 + 0 +W?THEY:: .ZWORD "they" + 0 + 0 +W?THING:: .ZWORD "thing" + 0 + 2 +W?THIRD:: .ZWORD "third" + 0 + 4 +W?THIRTEEN:: .ZWORD "thirteen" + 0 + 0 +W?THIRTY:: .ZWORD "thirty" + 0 + 0 +W?THIS:: .ZWORD "this" + 0 + 6 +W?THOUSAND:: .ZWORD "thousand" + 0 + 0 +W?THREAT:: .ZWORD "threat" + 0 + 2 +W?THRICE:: .ZWORD "thrice" + 0 + 8 +W?THROUGH:: .ZWORD "through" + 0 + 2048 +W?THROW:: .ZWORD "throw" + ACT?THROW + 1 +W?THRU:: .ZWORD "thru" + W?THROUGH + 0 +W?TIDY:: .ZWORD "tidy" + ACT?CLEAN + 1 +W?TILL:: .ZWORD "till" + W?UNTIL + 0 +W?TO:: .ZWORD "to" + 0 + 2048 +W?TOGETHER:: .ZWORD "together" + 0 + 2048 +W?TOGGLE:: .ZWORD "toggle" + ACT?SWITCH + 1 +W?TOOL:: .ZWORD "tool" + 0 + 2 +W?TOOLS:: .ZWORD "tools" + 0 + 2 +W?TOOT:: .ZWORD "toot" + ACT?RING + 1 +W?TOOTH:: .ZWORD "tooth" + 0 + 4 +W?TOOTHBRUSH:: .ZWORD "toothbrus" + 0 + 2 +W?TOSS:: .ZWORD "toss" + ACT?THROW + 1 +W?TOUCH:: .ZWORD "touch" + ACT?RUB + 1 +W?TOWARD:: .ZWORD "toward" + W?TO + 0 +W?TOWEL:: .ZWORD "towel" + 0 + 2 +W?TOWELS:: .ZWORD "towels" + 0 + 2 +W?TRICIA:: .ZWORD "tricia" + 0 + 6 +W?TRILLIAN:: .ZWORD "trillian" + 0 + 2 +W?TUG:: .ZWORD "tug" + ACT?PULL + 1 +W?TURN:: .ZWORD "turn" + ACT?SWITCH + 3 +W?TURNS:: .ZWORD "turns" + 0 + 2 +W?TWELVE:: .ZWORD "twelve" + 0 + 0 +W?TWENTY:: .ZWORD "twenty" + 0 + 0 +W?TWICE:: .ZWORD "twice" + 0 + 8 +W?U:: .ZWORD "u" + W?UP + 0 +W?UNDER:: .ZWORD "under" + 0 + 2048 +W?UNDERNEATH:: .ZWORD "underneat" + W?UNDER + 0 +W?UNDO:: .ZWORD "undo" + ACT?UNDO + 1 +W?UNINVITING:: .ZWORD "uninvitin" + 0 + 4 +W?UNJAM:: .ZWORD "unjam" + ACT?FIX + 1 +W?UNLOCK:: .ZWORD "unlock" + ACT?UNLOCK + 1 +W?UNLOCKED:: .ZWORD "unlocked" + 0 + 4 +W?UNSCRIPT:: .ZWORD "unscript" + ACT?UNSCRIPT + 1 +W?UNTIL:: .ZWORD "until" + 0 + 2048 +W?UP:: .ZWORD "up" + .BYTE 55 + .BYTE 0 + 2112 +W?UPSTAIRS:: .ZWORD "upstairs" + .BYTE 55 + .BYTE 0 + 64 +W?USE:: .ZWORD "use" + ACT?USE + 1 +W?USING:: .ZWORD "using" + W?WITH + 0 +W?USUAL:: .ZWORD "usual" + 0 + 4 +W?VARIATION:: .ZWORD "variation" + ACT?RELEASE + 1 +W?VERBOSE:: .ZWORD "verbose" + ACT?VERBOSE + 1 +W?VERSION:: .ZWORD "version" + ACT?RELEASE + 1 +W?W:: .ZWORD "w" + W?WEST + 0 +W?WADE:: .ZWORD "wade" + ACT?SWIM + 1 +W?WAIT:: .ZWORD "wait" + ACT?WAIT + 1 +W?WAKE:: .ZWORD "wake" + ACT?WAKE + 1 +W?WALK:: .ZWORD "walk" + ACT?HEAD + 1 +W?WALL:: .ZWORD "wall" + 0 + 2 +W?WALLS:: .ZWORD "walls" + 0 + 2 +W?WAS:: .ZWORD "was" + 0 + 128 +W?WASH:: .ZWORD "wash" + ACT?CLEAN + 1 +W?WASN:: .ZWORD "wasn" + 0 + 0 +W?WASTE:: .ZWORD "waste" + ACT?MURDER + 1 +W?WATCH:: .ZWORD "watch" + ACT?EXAMINE + 1 +W?WE:: .ZWORD "we" + 0 + 0 +W?WERE:: .ZWORD "were" + 0 + 128 +W?WEREN:: .ZWORD "weren" + 0 + 0 +W?WEST:: .ZWORD "west" + .BYTE 57 + .BYTE 0 + 66 +W?WHAT:: .ZWORD "what" + ACT?WHAT + 259 +W?WHEN:: .ZWORD "when" + ACT?WHEN + 257 +W?WHERE:: .ZWORD "where" + ACT?WHERE + 257 +W?WHISPER:: .ZWORD "whisper" + ACT?SAY + 1 +W?WHO:: .ZWORD "who" + ACT?WHO + 259 +W?WHOM:: .ZWORD "whom" + W?WHO + 0 +W?WHY:: .ZWORD "why" + ACT?WHY + 257 +W?WILL:: .ZWORD "will" + ACT?WILL + 641 +W?WINDOW:: .ZWORD "window" + 0 + 2 +W?WINDSCREEN:: .ZWORD "windscree" + 0 + 2 +W?WINDSHIELD:: .ZWORD "windshiel" + 0 + 2 +W?WINK:: .ZWORD "wink" + ACT?SMILE + 1 +W?WIPE:: .ZWORD "wipe" + ACT?CLEAN + 1 +W?WITH:: .ZWORD "with" + 0 + 2048 +W?WITHDRAW:: .ZWORD "withdraw" + ACT?LEAVE + 1 +W?WOMAN:: .ZWORD "woman" + 0 + 2 +W?WON:: .ZWORD "won" + 0 + 0 +W?WOULD:: .ZWORD "would" + ACT?WOULD + 513 +W?WOULDN:: .ZWORD "wouldn" + 0 + 0 +W?WRAP:: .ZWORD "wrap" + W?DRAPE + 0 +W?WRECK:: .ZWORD "wreck" + ACT?DAMAGE + 1 +W?X:: .ZWORD "x" + ACT?EXAMINE + 1 +W?Y:: .ZWORD "y" + ACT?YES + 1 +W?YEAH:: .ZWORD "yeah" + ACT?YES + 1 +W?YELL:: .ZWORD "yell" + ACT?YELL + 1 +W?YEP:: .ZWORD "yep" + ACT?YES + 1 +W?YES:: .ZWORD "yes" + ACT?YES + 1 +W?YOU:: .ZWORD "you" + 0 + 2 +W?YOUR:: .ZWORD "your" + W?MY + 0 +W?YOURSELF:: .ZWORD "yourself" + 0 + 2 +W?YUP:: .ZWORD "yup" + ACT?YES + 1 +W?Z:: .ZWORD "z" + ACT?WAIT + 1 +W?ZAPHOD:: .ZWORD "zaphod" + 0 + 6 +W?ZERO:: .ZWORD "zero" + 0 + 0 + .VOCEND + .ENDT + + +; PARSER TABLES ARE DEFINED HERE + +PRSTBL:: + +RT?110:: .TABLE + 3 + RED-SP + 1 + 0 + 1 + STR?11 + .ENDT + +RT?210:: .TABLE + 2 + RED-SV + 2 + 0 + 3 + STR?12 + .ENDT + +RT?310:: .TABLE + 5 + RED-SVPNPN + 2 + 0 + 3 + STR?13 + .ENDT + +RT?410:: .TABLE + 4 + RED-SVN + 2 + 0 + 3 + STR?14 + .ENDT + +RT?510:: .TABLE + 1 + RED-SD + 2 + 0 + 3 + STR?15 + .ENDT + +RT?610:: .TABLE + 2 + RED-SVD + 2 + 0 + 3 + STR?16 + .ENDT + +RT?710:: .TABLE + 4 + RED-VP + 3 + 0 + 5 + STR?17 + .ENDT + +RT?810:: .TABLE + 0 + RED-CANDO + 3 + 0 + 8 + STR?18 + .ENDT + +RT?910:: .TABLE + 1 + RED-CANDO + 3 + 0 + 8 + STR?18 + .ENDT + +RT?1010:: .TABLE + 3 + RED-CANDO + 3 + 0 + 8 + STR?18 + .ENDT + +RT?1110:: +RT?1210:: .TABLE + 4 + RED-CANDO + 3 + 0 + 8 + STR?18 + .ENDT + +RT?1310:: +RT?1410:: .TABLE + 2 + RED-PART + 1 + 0 + 6 + STR?19 + .ENDT + +RT?1510:: .TABLE + 0 + RED-PART + 1 + 0 + 6 + STR?19 + .ENDT + +RT?1610:: .TABLE + 1 + RED-FCN + 1 + 0 + 4 + STR?20 + .ENDT + +RT?1710:: .TABLE + 0 + RED-FCN + 1 + 0 + 4 + STR?20 + .ENDT + +RT?1810:: .TABLE + 3 + RED-NPP + 4 + 0 + 7 + STR?21 + .ENDT + +RT?1910:: .TABLE + 2 + RED-NPP + 4 + 0 + 7 + STR?21 + .ENDT + +RT?2010:: .TABLE + 1 + RED-NPP + 4 + 0 + 7 + STR?21 + .ENDT + +RT?2110:: .TABLE + 1 + RED-QUOTE + 7 + 0 + 9 + STR?22 + .ENDT + +RT?2210:: .TABLE + 3 + RED-OF + 5 + 0 + 9 + STR?23 + .ENDT + +RT?2310:: .TABLE + 1 + RED-QT + 7 + 0 + 9 + STR?24 + .ENDT + +RT?2410:: .TABLE + 2 + RED-QN + 5 + 0 + 9 + STR?25 + .ENDT + +RT?2510:: .TABLE + 2 + RED-NP + 6 + 0 + 9 + STR?26 + .ENDT + +RT?2610:: +RT?2710:: .TABLE + 2 + RED-PP + 3 + 0 + 13 + STR?27 + .ENDT + +RT?2810:: +RT?2910:: .TABLE + 3 + RED-PP + 3 + 0 + 13 + STR?27 + .ENDT + +RT?3010:: .TABLE + 2 + RED-ADJ + 8 + 0 + 15 + STR?28 + .ENDT + +RT?3110:: .TABLE + 0 + RED-ADJ + 8 + 0 + 15 + STR?28 + .ENDT + +RT?3210:: +RT?3410:: .TABLE + 2 + RED-ADJS + 8 + 0 + 14 + STR?29 + .ENDT + +RT?3310:: .TABLE + 1 + RED-ADJS + 8 + 0 + 14 + STR?29 + .ENDT + +RT?3510:: .TABLE + 3 + RED-POSS + 8 + 0 + 16 + STR?30 + .ENDT + +RT?3610:: .TABLE + 1 + RED-BE-FORM + 3 + 0 + 17 + STR?31 + .ENDT + +RT?3710:: .TABLE + 5 + RED-SNBN + 2 + 0 + 3 + STR?32 + .ENDT + +RT?3810:: .TABLE + 5 + RED-SNBA + 2 + 0 + 3 + STR?33 + .ENDT + +RT?3910:: .TABLE + 5 + RED-SNBP + 2 + 0 + 3 + STR?34 + .ENDT + +RT?4010:: .TABLE + 6 + RED-SNBAP + 2 + 0 + 3 + STR?35 + .ENDT + +RT?4110:: .TABLE + 0 + RED-FCN + 3 + 0 + 11 + STR?20 + .ENDT + +RT?4210:: .TABLE + 1 + RED-FCN + 3 + 0 + 11 + STR?20 + .ENDT + +RT?4310:: .TABLE + 3 + RED-SQBN + 2 + 0 + 3 + STR?36 + .ENDT + +RT?4410:: +RT?4510:: .TABLE + 6 + RED-SBNN + 2 + 0 + 3 + STR?37 + .ENDT + +RT?4610:: +RT?4710:: .TABLE + 6 + RED-SBNA + 2 + 0 + 3 + STR?38 + .ENDT + +RT?4810:: +RT?4910:: .TABLE + 6 + RED-SBNP + 2 + 0 + 3 + STR?39 + .ENDT + +RT?5010:: .TABLE + 0 + RED-BE + 3 + 0 + 18 + STR?40 + .ENDT + +RT?5110:: .TABLE + 1 + RED-BE + 3 + 0 + 18 + STR?40 + .ENDT + +RT?5210:: .TABLE + 0 + RED-NOT + 3 + 0 + 10 + STR?41 + .ENDT + +RT?5310:: .TABLE + 1 + RED-NOT + 3 + 0 + 10 + STR?41 + .ENDT + +RT?5410:: .TABLE + 1 + RED-NOT + 3 + 0 + 12 + STR?41 + .ENDT + +RT?5510:: .TABLE + 0 + RED-PERS + 2 + 0 + 2 + STR?42 + .ENDT + +RT?5610:: .TABLE + 2 + RED-PERS + 2 + 0 + 2 + STR?42 + .ENDT + +RT?5710:: .TABLE + 3 + RED-PERS + 2 + 0 + 2 + STR?42 + .ENDT + +RT?5810:: .TABLE + 0 + DO-ORPHAN-TEST + 2 + 0 + 19 + STR?43 + .ENDT + +RT?5910:: .TABLE + 2 + RED-O-NP + 1 + 0 + 3 + STR?44 + .ENDT + +RT?6010:: .TABLE + 3 + RED-O-NP + 1 + 9 + 3 + STR?44 + .ENDT + +RT?6110:: .TABLE + 2 + RED-O-ADJ + 1 + 9 + 3 + STR?45 + .ENDT + +RT?6210:: .TABLE + 2 + RED-O-PP + 1 + 0 + 3 + STR?46 + .ENDT + +RT?6310:: .TABLE + 3 + RED-O-PP + 1 + 9 + 3 + STR?46 + .ENDT + +RT?6410:: +REDUCTION-TABLE:: .TABLE + RT?110 + RT?210 + RT?310 + RT?410 + RT?510 + RT?610 + RT?710 + RT?810 + RT?910 + RT?1010 + RT?1110 + RT?1210 + RT?1310 + RT?1410 + RT?1510 + RT?1610 + RT?1710 + RT?1810 + RT?1910 + RT?2010 + RT?2110 + RT?2210 + RT?2310 + RT?2410 + RT?2510 + RT?2610 + RT?2710 + RT?2810 + RT?2910 + RT?3010 + RT?3110 + RT?3210 + RT?3310 + RT?3410 + RT?3510 + RT?3610 + RT?3710 + RT?3810 + RT?3910 + RT?4010 + RT?4110 + RT?4210 + RT?4310 + RT?4410 + RT?4510 + RT?4610 + RT?4710 + RT?4810 + RT?4910 + RT?5010 + RT?5110 + RT?5210 + RT?5310 + RT?5410 + RT?5510 + RT?5610 + RT?5710 + RT?5810 + RT?5910 + RT?6010 + RT?6110 + RT?6210 + RT?6310 + .ENDT + +RT?6510:: .TABLE + .BYTE 2 + .BYTE 183 + .BYTE 159 + .ENDT + +RT?6610:: .TABLE + .BYTE 2 + .BYTE 183 + .BYTE 13 + .ENDT + +RT?6710:: .TABLE + .BYTE 2 + .BYTE 183 + .BYTE 12 + .ENDT + +RT?6810:: .TABLE + .BYTE 2 + .BYTE 183 + .BYTE 10 + .ENDT + +RT?6910:: .TABLE + .BYTE 2 + .BYTE 183 + .BYTE 9 + .ENDT + +RT?7010:: .TABLE + 8 + 7113 + 183 + 0 + 4 + RT?6610 + 0 + 2 + RT?6510 + 0 + 16 + RT?6710 + 0 + 8192 + 11 + 2 + 0 + RT?6810 + 4 + 0 + RT?6910 + 0 + 0 + .ENDT + +RT?7110:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 6 + .BYTE 2 + .BYTE 7 + .BYTE 1 + .BYTE 8 + .BYTE 0 + .ENDT + +RT?7210:: .TABLE + RT?7010 + RT?7110 + .ENDT + +RT?7310:: +RT?9810:: +RT?11210:: .TABLE + 8 + 10 + 159 + 0 + 4 + 13 + 0 + 0 + .ENDT + +RT?7410:: .TABLE + .BYTE 15 + .BYTE 98 + .BYTE 0 + .ENDT + +RT?7510:: .TABLE + RT?7310 + RT?7410 + .ENDT + +RT?7610:: .TABLE + 8 + 10 + 161 + 0 + 0 + .ENDT + +RT?7710:: .TABLE + RT?7610 + 0 + .ENDT + +RT?7810:: .TABLE + 0 + 2 + 96 + 0 + 0 + .ENDT + +RT?7910:: .TABLE + RT?7810 + 0 + .ENDT + +RT?8010:: .TABLE + 14 + 7198 + 148 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?8110:: .TABLE + RT?8010 + 0 + .ENDT + +RT?8210:: .TABLE + 0 + 2048 + 29 + 0 + 4096 + 22 + 0 + 1024 + 97 + 0 + 0 + .ENDT + +RT?8310:: +RT?13310:: +RT?15710:: +RT?16610:: +RT?17510:: +RT?18410:: +RT?25810:: +RT?29010:: +RT?33110:: +RT?34510:: .TABLE + .BYTE 13 + .BYTE 21 + .BYTE 0 + .ENDT + +RT?8410:: .TABLE + RT?8210 + RT?8310 + .ENDT + +RT?8510:: .TABLE + .BYTE 2 + .BYTE 159 + .BYTE 186 + .ENDT + +RT?8610:: .TABLE + .BYTE 2 + .BYTE 186 + .BYTE 13 + .ENDT + +RT?8710:: .TABLE + .BYTE 2 + .BYTE 136 + .BYTE 186 + .ENDT + +RT?8810:: .TABLE + .BYTE 2 + .BYTE 186 + .BYTE 12 + .ENDT + +RT?8910:: .TABLE + .BYTE 2 + .BYTE 186 + .BYTE 10 + .ENDT + +RT?9010:: .TABLE + .BYTE 2 + .BYTE 186 + .BYTE 9 + .ENDT + +RT?9110:: .TABLE + 0 + 1 + 136 + 8 + 6144 + 186 + 0 + 4 + RT?8610 + 0 + 2 + RT?8510 + 0 + 640 + 169 + 0 + 8 + RT?8710 + 0 + 16 + RT?8810 + 0 + 64 + 41 + 0 + 256 + 40 + 2 + 0 + RT?8910 + 4 + 0 + RT?9010 + 0 + 0 + .ENDT + +RT?9210:: .TABLE + .BYTE 19 + .BYTE 34 + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 11 + .BYTE 35 + .BYTE 9 + .BYTE 36 + .BYTE 8 + .BYTE 37 + .BYTE 5 + .BYTE 38 + .BYTE 3 + .BYTE 39 + .BYTE 0 + .ENDT + +RT?9310:: .TABLE + RT?9110 + RT?9210 + .ENDT + +RT?9410:: .TABLE + 8 + 0 + 128 + 0 + 0 + .ENDT + +RT?9510:: .TABLE + RT?9410 + 0 + .ENDT + +RT?9610:: .TABLE + 15 + 24255 + 149 + 0 + 0 + .ENDT + +RT?9710:: .TABLE + RT?9610 + 0 + .ENDT + +RT?9910:: .TABLE + .BYTE 15 + .BYTE 33 + .BYTE 0 + .ENDT + +RT?10010:: .TABLE + RT?9810 + RT?9910 + .ENDT + +RT?10110:: +RT?12110:: +RT?14810:: +RT?15910:: +RT?17710:: +RT?21210:: +RT?30310:: +RT?31510:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 0 + 16 + 12 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?10210:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 20 + .BYTE 0 + .ENDT + +RT?10310:: .TABLE + RT?10110 + RT?10210 + .ENDT + +RT?10410:: .TABLE + .BYTE 2 + .BYTE 151 + .BYTE 159 + .ENDT + +RT?10510:: .TABLE + .BYTE 2 + .BYTE 151 + .BYTE 13 + .ENDT + +RT?10610:: .TABLE + .BYTE 2 + .BYTE 151 + .BYTE 12 + .ENDT + +RT?10710:: .TABLE + .BYTE 2 + .BYTE 151 + .BYTE 10 + .ENDT + +RT?10810:: .TABLE + .BYTE 2 + .BYTE 151 + .BYTE 9 + .ENDT + +RT?10910:: .TABLE + 9 + 24233 + 151 + 0 + 4 + RT?10510 + 0 + 2 + RT?10410 + 0 + 16 + RT?10610 + 2 + 0 + RT?10710 + 4 + 0 + RT?10810 + 0 + 0 + .ENDT + +RT?11010:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 15 + .BYTE 0 + .ENDT + +RT?11110:: .TABLE + RT?10910 + RT?11010 + .ENDT + +RT?11310:: +RT?33410:: +RT?34810:: .TABLE + .BYTE 15 + .BYTE 14 + .BYTE 0 + .ENDT + +RT?11410:: .TABLE + RT?11210 + RT?11310 + .ENDT + +RT?11510:: .TABLE + 8 + 10 + 158 + 0 + 0 + .ENDT + +RT?11610:: .TABLE + RT?11510 + 0 + .ENDT + +RT?11710:: .TABLE + .BYTE 2 + .BYTE 152 + .BYTE 17 + .ENDT + +RT?11810:: .TABLE + .BYTE 2 + .BYTE 152 + .BYTE 16 + .ENDT + +RT?11910:: .TABLE + 14 + 7871 + 152 + 0 + 16384 + RT?11710 + 1 + 0 + RT?11810 + 0 + 0 + .ENDT + +RT?12010:: .TABLE + RT?11910 + 0 + .ENDT + +RT?12210:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 19 + .BYTE 0 + .ENDT + +RT?12310:: .TABLE + RT?12110 + RT?12210 + .ENDT + +RT?12410:: .TABLE + 0 + 32 + 18 + 0 + 0 + .ENDT + +RT?12510:: .TABLE + RT?12410 + 0 + .ENDT + +RT?12610:: .TABLE + 8 + 14 + 163 + 0 + 0 + .ENDT + +RT?12710:: .TABLE + RT?12610 + 0 + .ENDT + +RT?12810:: .TABLE + .BYTE 2 + .BYTE 150 + .BYTE 17 + .ENDT + +RT?12910:: .TABLE + .BYTE 2 + .BYTE 150 + .BYTE 16 + .ENDT + +RT?13010:: .TABLE + 14 + 7871 + 150 + 0 + 16384 + RT?12810 + 1 + 0 + RT?12910 + 0 + 0 + .ENDT + +RT?13110:: .TABLE + RT?13010 + 0 + .ENDT + +RT?13210:: .TABLE + 0 + 2048 + 23 + 0 + 4096 + 22 + 0 + 1024 + 24 + 0 + 0 + .ENDT + +RT?13410:: .TABLE + RT?13210 + RT?13310 + .ENDT + +RT?13510:: .TABLE + 14 + 7198 + 147 + 0 + 0 + .ENDT + +RT?13610:: .TABLE + RT?13510 + 0 + .ENDT + +RT?13710:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 0 + 16 + 12 + 1 + 0 + 31 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?13810:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 30 + .BYTE 0 + .ENDT + +RT?13910:: .TABLE + RT?13710 + RT?13810 + .ENDT + +RT?14010:: .TABLE + .BYTE 2 + .BYTE 185 + .BYTE 159 + .ENDT + +RT?14110:: .TABLE + .BYTE 2 + .BYTE 185 + .BYTE 13 + .ENDT + +RT?14210:: .TABLE + .BYTE 2 + .BYTE 185 + .BYTE 12 + .ENDT + +RT?14310:: .TABLE + .BYTE 2 + .BYTE 185 + .BYTE 10 + .ENDT + +RT?14410:: .TABLE + .BYTE 2 + .BYTE 185 + .BYTE 9 + .ENDT + +RT?14510:: .TABLE + 8 + 7113 + 185 + 0 + 4 + RT?14110 + 0 + 2 + RT?14010 + 0 + 16 + RT?14210 + 1 + 0 + 27 + 2 + 0 + RT?14310 + 4 + 0 + RT?14410 + 0 + 0 + .ENDT + +RT?14610:: +RT?16910:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 26 + .BYTE 0 + .ENDT + +RT?14710:: .TABLE + RT?14510 + RT?14610 + .ENDT + +RT?14910:: +RT?37410:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 25 + .BYTE 0 + .ENDT + +RT?15010:: .TABLE + RT?14810 + RT?14910 + .ENDT + +RT?15110:: .TABLE + 14 + 7198 + 146 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?15210:: .TABLE + RT?15110 + 0 + .ENDT + +RT?15310:: .TABLE + .BYTE 2 + .BYTE 155 + .BYTE 24 + .ENDT + +RT?15410:: .TABLE + .BYTE 2 + .BYTE 155 + .BYTE 29 + .ENDT + +RT?15510:: .TABLE + .BYTE 2 + .BYTE 155 + .BYTE 22 + .ENDT + +RT?15610:: .TABLE + 14 + 30 + 155 + 0 + 2048 + RT?15410 + 0 + 4096 + RT?15510 + 0 + 1024 + RT?15310 + 0 + 0 + .ENDT + +RT?15810:: .TABLE + RT?15610 + RT?15710 + .ENDT + +RT?16010:: +RT?25510:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 28 + .BYTE 0 + .ENDT + +RT?16110:: .TABLE + RT?15910 + RT?16010 + .ENDT + +RT?16210:: .TABLE + .BYTE 2 + .BYTE 157 + .BYTE 24 + .ENDT + +RT?16310:: .TABLE + .BYTE 2 + .BYTE 157 + .BYTE 29 + .ENDT + +RT?16410:: .TABLE + .BYTE 2 + .BYTE 157 + .BYTE 22 + .ENDT + +RT?16510:: .TABLE + 14 + 30 + 157 + 0 + 2048 + RT?16310 + 0 + 4096 + RT?16410 + 0 + 1024 + RT?16210 + 0 + 0 + .ENDT + +RT?16710:: .TABLE + RT?16510 + RT?16610 + .ENDT + +RT?16810:: +RT?35710:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 0 + 16 + 12 + 1 + 0 + 27 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?17010:: .TABLE + RT?16810 + RT?16910 + .ENDT + +RT?17110:: .TABLE + .BYTE 2 + .BYTE 154 + .BYTE 24 + .ENDT + +RT?17210:: .TABLE + .BYTE 2 + .BYTE 154 + .BYTE 29 + .ENDT + +RT?17310:: .TABLE + .BYTE 2 + .BYTE 154 + .BYTE 22 + .ENDT + +RT?17410:: .TABLE + 14 + 30 + 154 + 0 + 2048 + RT?17210 + 0 + 4096 + RT?17310 + 0 + 1024 + RT?17110 + 0 + 0 + .ENDT + +RT?17610:: .TABLE + RT?17410 + RT?17510 + .ENDT + +RT?17810:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 32 + .BYTE 0 + .ENDT + +RT?17910:: .TABLE + RT?17710 + RT?17810 + .ENDT + +RT?18010:: .TABLE + .BYTE 2 + .BYTE 156 + .BYTE 24 + .ENDT + +RT?18110:: .TABLE + .BYTE 2 + .BYTE 156 + .BYTE 29 + .ENDT + +RT?18210:: .TABLE + .BYTE 2 + .BYTE 156 + .BYTE 22 + .ENDT + +RT?18310:: .TABLE + 14 + 30 + 156 + 0 + 2048 + RT?18110 + 0 + 4096 + RT?18210 + 0 + 1024 + RT?18010 + 0 + 0 + .ENDT + +RT?18510:: .TABLE + RT?18310 + RT?18410 + .ENDT + +RT?18610:: .TABLE + 8 + 10 + 162 + 0 + 0 + .ENDT + +RT?18710:: .TABLE + RT?18610 + 0 + .ENDT + +RT?18810:: .TABLE + 8 + 10 + 159 + 0 + 4 + 13 + 0 + 2048 + 93 + 0 + 4096 + 22 + 0 + 16 + 12 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?18910:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 90 + .BYTE 13 + .BYTE 91 + .BYTE 9 + .BYTE 92 + .BYTE 0 + .ENDT + +RT?19010:: .TABLE + RT?18810 + RT?18910 + .ENDT + +RT?19110:: .TABLE + 0 + 128 + 43 + 0 + 512 + 72 + 0 + 0 + .ENDT + +RT?19210:: .TABLE + .BYTE 17 + .BYTE 71 + .BYTE 0 + .ENDT + +RT?19310:: .TABLE + RT?19110 + RT?19210 + .ENDT + +RT?19410:: .TABLE + 0 + 9 + 137 + 0 + 128 + 43 + 0 + 512 + 61 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?19510:: .TABLE + .BYTE 17 + .BYTE 60 + .BYTE 0 + .ENDT + +RT?19610:: .TABLE + RT?19410 + RT?19510 + .ENDT + +RT?19710:: .TABLE + 0 + 1 + 145 + 0 + 8 + 46 + 0 + 0 + .ENDT + +RT?19810:: .TABLE + .BYTE 4 + .BYTE 57 + .BYTE 0 + .ENDT + +RT?19910:: .TABLE + RT?19710 + RT?19810 + .ENDT + +RT?20010:: .TABLE + 14 + 30 + 143 + 0 + 2048 + 48 + 0 + 64 + 49 + 0 + 0 + .ENDT + +RT?20110:: .TABLE + .BYTE 6 + .BYTE 47 + .BYTE 0 + .ENDT + +RT?20210:: .TABLE + RT?20010 + RT?20110 + .ENDT + +RT?20310:: .TABLE + 0 + 8 + 46 + 8 + 0 + 145 + 0 + 0 + .ENDT + +RT?20410:: .TABLE + .BYTE 4 + .BYTE 45 + .BYTE 0 + .ENDT + +RT?20510:: .TABLE + RT?20310 + RT?20410 + .ENDT + +RT?20610:: .TABLE + .BYTE 2 + .BYTE 170 + .BYTE 43 + .ENDT + +RT?20710:: .TABLE + 0 + 128 + RT?20610 + 0 + 512 + 170 + 0 + 0 + .ENDT + +RT?20810:: .TABLE + .BYTE 17 + .BYTE 42 + .BYTE 0 + .ENDT + +RT?20910:: .TABLE + RT?20710 + RT?20810 + .ENDT + +RT?21010:: .TABLE + 8 + 8 + 133 + 0 + 0 + .ENDT + +RT?21110:: .TABLE + RT?21010 + 0 + .ENDT + +RT?21310:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 44 + .BYTE 0 + .ENDT + +RT?21410:: .TABLE + RT?21210 + RT?21310 + .ENDT + +RT?21510:: .TABLE + 6 + 6198 + 164 + 0 + 0 + .ENDT + +RT?21610:: .TABLE + RT?21510 + 0 + .ENDT + +RT?21710:: .TABLE + 8 + 8 + 171 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?21810:: .TABLE + RT?21710 + 0 + .ENDT + +RT?21910:: .TABLE + 8 + 0 + 129 + 0 + 0 + .ENDT + +RT?22010:: .TABLE + RT?21910 + 0 + .ENDT + +RT?22110:: .TABLE + 14 + 2143 + 144 + 0 + 0 + .ENDT + +RT?22210:: .TABLE + RT?22110 + 0 + .ENDT + +RT?22310:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 8 + 8 + 130 + 0 + 16 + 12 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?22410:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 52 + .BYTE 0 + .ENDT + +RT?22510:: .TABLE + RT?22310 + RT?22410 + .ENDT + +RT?22610:: .TABLE + 14 + 30 + 143 + 0 + 2048 + 48 + 1 + 0 + 51 + 0 + 0 + .ENDT + +RT?22710:: .TABLE + .BYTE 6 + .BYTE 50 + .BYTE 0 + .ENDT + +RT?22810:: .TABLE + RT?22610 + RT?22710 + .ENDT + +RT?22910:: .TABLE + 8 + 8 + 134 + 0 + 0 + .ENDT + +RT?23010:: .TABLE + RT?22910 + 0 + .ENDT + +RT?23110:: .TABLE + 14 + 30 + 142 + 0 + 0 + .ENDT + +RT?23210:: .TABLE + RT?23110 + 0 + .ENDT + +RT?23310:: .TABLE + 14 + 30 + 141 + 0 + 0 + .ENDT + +RT?23410:: .TABLE + RT?23310 + 0 + .ENDT + +RT?23510:: .TABLE + 14 + 30 + 143 + 0 + 2048 + 54 + 0 + 4096 + 22 + 0 + 1024 + 24 + 0 + 0 + .ENDT + +RT?23610:: .TABLE + .BYTE 13 + .BYTE 21 + .BYTE 6 + .BYTE 53 + .BYTE 0 + .ENDT + +RT?23710:: .TABLE + RT?23510 + RT?23610 + .ENDT + +RT?23810:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 8 + 8 + 132 + 0 + 16 + 12 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?23910:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 56 + .BYTE 0 + .ENDT + +RT?24010:: .TABLE + RT?23810 + RT?23910 + .ENDT + +RT?24110:: .TABLE + .BYTE 2 + .BYTE 143 + .BYTE 159 + .ENDT + +RT?24210:: .TABLE + .BYTE 2 + .BYTE 143 + .BYTE 13 + .ENDT + +RT?24310:: .TABLE + .BYTE 2 + .BYTE 143 + .BYTE 12 + .ENDT + +RT?24410:: .TABLE + .BYTE 2 + .BYTE 143 + .BYTE 10 + .ENDT + +RT?24510:: .TABLE + .BYTE 2 + .BYTE 143 + .BYTE 9 + .ENDT + +RT?24610:: .TABLE + 0 + 4 + RT?24210 + 0 + 2 + RT?24110 + 0 + 2048 + 48 + 8 + 8 + 143 + 0 + 16 + RT?24310 + 1 + 0 + 55 + 2 + 0 + RT?24410 + 4 + 0 + RT?24510 + 0 + 0 + .ENDT + +RT?24710:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 26 + .BYTE 6 + .BYTE 50 + .BYTE 0 + .ENDT + +RT?24810:: .TABLE + RT?24610 + RT?24710 + .ENDT + +RT?24910:: .TABLE + .BYTE 2 + .BYTE 141 + .BYTE 159 + .ENDT + +RT?25010:: .TABLE + .BYTE 2 + .BYTE 141 + .BYTE 13 + .ENDT + +RT?25110:: .TABLE + .BYTE 2 + .BYTE 141 + .BYTE 12 + .ENDT + +RT?25210:: .TABLE + .BYTE 2 + .BYTE 141 + .BYTE 10 + .ENDT + +RT?25310:: .TABLE + .BYTE 2 + .BYTE 141 + .BYTE 9 + .ENDT + +RT?25410:: .TABLE + 0 + 4 + RT?25010 + 0 + 2 + RT?24910 + 8 + 8 + 141 + 0 + 16 + RT?25110 + 2 + 0 + RT?25210 + 4 + 0 + RT?25310 + 0 + 0 + .ENDT + +RT?25610:: .TABLE + RT?25410 + RT?25510 + .ENDT + +RT?25710:: .TABLE + 0 + 2048 + 29 + 8 + 8 + 131 + 0 + 4096 + 22 + 0 + 1024 + 24 + 0 + 0 + .ENDT + +RT?25910:: .TABLE + RT?25710 + RT?25810 + .ENDT + +RT?26010:: .TABLE + 0 + 1 + 58 + 0 + 0 + .ENDT + +RT?26110:: .TABLE + RT?26010 + 0 + .ENDT + +RT?26210:: .TABLE + .BYTE 2 + .BYTE 145 + .BYTE 46 + .ENDT + +RT?26310:: .TABLE + 14 + 2134 + 145 + 0 + 8 + RT?26210 + 0 + 0 + .ENDT + +RT?26410:: .TABLE + .BYTE 4 + .BYTE 59 + .BYTE 0 + .ENDT + +RT?26510:: .TABLE + RT?26310 + RT?26410 + .ENDT + +RT?26610:: .TABLE + 14 + 2142 + 135 + 0 + 0 + .ENDT + +RT?26710:: .TABLE + RT?26610 + 0 + .ENDT + +RT?26810:: +RT?31810:: .TABLE + .BYTE 2 + .BYTE 180 + .BYTE 63 + .ENDT + +RT?26910:: .TABLE + 6 + 6166 + 180 + 0 + 32 + RT?26810 + 0 + 0 + .ENDT + +RT?27010:: .TABLE + .BYTE 10 + .BYTE 64 + .BYTE 0 + .ENDT + +RT?27110:: .TABLE + RT?26910 + RT?27010 + .ENDT + +RT?27210:: .TABLE + 0 + 9 + 180 + 0 + 32 + 63 + 0 + 0 + .ENDT + +RT?27310:: .TABLE + .BYTE 10 + .BYTE 62 + .BYTE 0 + .ENDT + +RT?27410:: .TABLE + RT?27210 + RT?27310 + .ENDT + +RT?27510:: .TABLE + 0 + 9 + 138 + 0 + 0 + .ENDT + +RT?27610:: .TABLE + RT?27510 + 0 + .ENDT + +RT?27710:: .TABLE + 6 + 6207 + 181 + 0 + 0 + .ENDT + +RT?27810:: .TABLE + RT?27710 + 0 + .ENDT + +RT?27910:: +RT?32210:: .TABLE + 6 + 6166 + 178 + 0 + 32 + 66 + 0 + 0 + .ENDT + +RT?28010:: .TABLE + .BYTE 18 + .BYTE 65 + .BYTE 0 + .ENDT + +RT?28110:: .TABLE + RT?27910 + RT?28010 + .ENDT + +RT?28210:: .TABLE + 0 + 4 + 69 + 0 + 2 + 159 + 0 + 2048 + 29 + 0 + 4096 + 22 + 0 + 16 + 12 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?28310:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 13 + .BYTE 67 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 68 + .BYTE 0 + .ENDT + +RT?28410:: .TABLE + RT?28210 + RT?28310 + .ENDT + +RT?28510:: .TABLE + 6 + 6166 + 179 + 0 + 0 + .ENDT + +RT?28610:: .TABLE + RT?28510 + 0 + .ENDT + +RT?28710:: .TABLE + 8 + 8 + 167 + 0 + 0 + .ENDT + +RT?28810:: .TABLE + RT?28710 + 0 + .ENDT + +RT?28910:: .TABLE + 0 + 2048 + 29 + 8 + 8 + 165 + 0 + 4096 + 22 + 0 + 1024 + 24 + 0 + 0 + .ENDT + +RT?29110:: .TABLE + RT?28910 + RT?29010 + .ENDT + +RT?29210:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 0 + 2048 + 29 + 8 + 8 + 166 + 0 + 4096 + 22 + 0 + 0 + .ENDT + +RT?29310:: .TABLE + .BYTE 15 + .BYTE 14 + .BYTE 13 + .BYTE 70 + .BYTE 0 + .ENDT + +RT?29410:: .TABLE + RT?29210 + RT?29310 + .ENDT + +RT?29510:: .TABLE + 8 + 8 + 168 + 0 + 0 + .ENDT + +RT?29610:: .TABLE + RT?29510 + 0 + .ENDT + +RT?29710:: +RT?30010:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 0 + 16 + 12 + 0 + 32 + 75 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?29810:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 12 + .BYTE 78 + .BYTE 9 + .BYTE 79 + .BYTE 0 + .ENDT + +RT?29910:: .TABLE + RT?29710 + RT?29810 + .ENDT + +RT?30110:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 12 + .BYTE 73 + .BYTE 9 + .BYTE 74 + .BYTE 0 + .ENDT + +RT?30210:: .TABLE + RT?30010 + RT?30110 + .ENDT + +RT?30410:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 77 + .BYTE 0 + .ENDT + +RT?30510:: .TABLE + RT?30310 + RT?30410 + .ENDT + +RT?30610:: .TABLE + 0 + 9 + 180 + 0 + 32 + 63 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?30710:: .TABLE + .BYTE 10 + .BYTE 76 + .BYTE 0 + .ENDT + +RT?30810:: .TABLE + RT?30610 + RT?30710 + .ENDT + +RT?30910:: .TABLE + 6 + 22 + 182 + 0 + 0 + .ENDT + +RT?31010:: .TABLE + RT?30910 + 0 + .ENDT + +RT?31110:: .TABLE + 0 + 9 + 139 + 0 + 0 + .ENDT + +RT?31210:: .TABLE + RT?31110 + 0 + .ENDT + +RT?31310:: .TABLE + 0 + 9 + 140 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?31410:: .TABLE + RT?31310 + 0 + .ENDT + +RT?31610:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 85 + .BYTE 0 + .ENDT + +RT?31710:: .TABLE + RT?31510 + RT?31610 + .ENDT + +RT?31910:: .TABLE + 6 + 6166 + 180 + 0 + 32 + RT?31810 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?32010:: .TABLE + .BYTE 10 + .BYTE 80 + .BYTE 0 + .ENDT + +RT?32110:: .TABLE + RT?31910 + RT?32010 + .ENDT + +RT?32310:: .TABLE + .BYTE 18 + .BYTE 81 + .BYTE 0 + .ENDT + +RT?32410:: .TABLE + RT?32210 + RT?32310 + .ENDT + +RT?32510:: .TABLE + 0 + 4 + 84 + 0 + 2 + 159 + 0 + 2048 + 29 + 0 + 4096 + 22 + 0 + 16 + 12 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?32610:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 13 + .BYTE 82 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 83 + .BYTE 0 + .ENDT + +RT?32710:: .TABLE + RT?32510 + RT?32610 + .ENDT + +RT?32810:: .TABLE + 8 + 8 + 176 + 0 + 0 + .ENDT + +RT?32910:: .TABLE + RT?32810 + 0 + .ENDT + +RT?33010:: .TABLE + 0 + 2048 + 29 + 8 + 8 + 172 + 0 + 4096 + 22 + 0 + 1024 + 24 + 0 + 0 + .ENDT + +RT?33210:: .TABLE + RT?33010 + RT?33110 + .ENDT + +RT?33310:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 8 + 8 + 174 + 0 + 0 + .ENDT + +RT?33510:: .TABLE + RT?33310 + RT?33410 + .ENDT + +RT?33610:: .TABLE + 6 + 6166 + 178 + 0 + 32 + 66 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?33710:: .TABLE + .BYTE 18 + .BYTE 86 + .BYTE 0 + .ENDT + +RT?33810:: .TABLE + RT?33610 + RT?33710 + .ENDT + +RT?33910:: .TABLE + 0 + 4 + 89 + 0 + 2 + 159 + 0 + 2048 + 29 + 0 + 4096 + 22 + 0 + 16 + 12 + 2 + 0 + 10 + 4 + 0 + 9 + 0 + 0 + .ENDT + +RT?34010:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 13 + .BYTE 87 + .BYTE 9 + .BYTE 5 + .BYTE 7 + .BYTE 88 + .BYTE 0 + .ENDT + +RT?34110:: .TABLE + RT?33910 + RT?34010 + .ENDT + +RT?34210:: .TABLE + 8 + 8 + 177 + 0 + 0 + .ENDT + +RT?34310:: .TABLE + RT?34210 + 0 + .ENDT + +RT?34410:: .TABLE + 0 + 2048 + 29 + 8 + 8 + 173 + 0 + 4096 + 22 + 0 + 1024 + 24 + 0 + 0 + .ENDT + +RT?34610:: .TABLE + RT?34410 + RT?34510 + .ENDT + +RT?34710:: .TABLE + 0 + 4 + 13 + 0 + 2 + 159 + 8 + 8 + 175 + 0 + 0 + .ENDT + +RT?34910:: .TABLE + RT?34710 + RT?34810 + .ENDT + +RT?35010:: .TABLE + 0 + 2 + 96 + 8 + 8 + 189 + 0 + 0 + .ENDT + +RT?35110:: .TABLE + RT?35010 + 0 + .ENDT + +RT?35210:: .TABLE + 8 + 8 + 190 + 0 + 0 + .ENDT + +RT?35310:: .TABLE + RT?35210 + 0 + .ENDT + +RT?35410:: .TABLE + 0 + 2048 + 29 + 8 + 8 + 187 + 0 + 4096 + 22 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?35510:: .TABLE + .BYTE 13 + .BYTE 95 + .BYTE 0 + .ENDT + +RT?35610:: .TABLE + RT?35410 + RT?35510 + .ENDT + +RT?35810:: .TABLE + .BYTE 16 + .BYTE 2 + .BYTE 15 + .BYTE 3 + .BYTE 14 + .BYTE 4 + .BYTE 9 + .BYTE 94 + .BYTE 7 + .BYTE 26 + .BYTE 0 + .ENDT + +RT?35910:: .TABLE + RT?35710 + RT?35810 + .ENDT + +RT?36010:: +RT?36110:: .TABLE + .BYTE 2 + .BYTE 191 + .BYTE 148 + .ENDT + +RT?36210:: .TABLE + 0 + 7168 + 148 + 8 + 8 + RT?36010 + 0 + 16384 + 17 + 1 + 0 + 16 + 0 + 0 + .ENDT + +RT?36310:: .TABLE + RT?36210 + 0 + .ENDT + +RT?36410:: .TABLE + 8 + 8 + 188 + 0 + 0 + .ENDT + +RT?36510:: .TABLE + RT?36410 + 0 + .ENDT + +RT?36610:: .TABLE + 15 + 24255 + 153 + 0 + 0 + .ENDT + +RT?36710:: .TABLE + RT?36610 + 0 + .ENDT + +RT?36810:: .TABLE + .BYTE 2 + .BYTE 184 + .BYTE 159 + .ENDT + +RT?36910:: .TABLE + .BYTE 2 + .BYTE 184 + .BYTE 13 + .ENDT + +RT?37010:: .TABLE + .BYTE 2 + .BYTE 184 + .BYTE 12 + .ENDT + +RT?37110:: .TABLE + .BYTE 2 + .BYTE 184 + .BYTE 10 + .ENDT + +RT?37210:: .TABLE + .BYTE 2 + .BYTE 184 + .BYTE 9 + .ENDT + +RT?37310:: .TABLE + 8 + 7113 + 184 + 0 + 4 + RT?36910 + 0 + 2 + RT?36810 + 0 + 16 + RT?37010 + 2 + 0 + RT?37110 + 4 + 0 + RT?37210 + 0 + 0 + .ENDT + +RT?37510:: .TABLE + RT?37310 + RT?37410 + .ENDT + +RT?37610:: .TABLE + 8 + 10 + 160 + 0 + 0 + .ENDT + +RT?37710:: .TABLE + RT?37610 + 0 + .ENDT + +RT?37810:: +ACTION-TABLE:: .TABLE + 98 + RT?7210 + RT?7510 + RT?7710 + RT?7910 + RT?8110 + RT?8410 + RT?9310 + RT?9510 + RT?9710 + RT?10010 + RT?10310 + RT?11110 + RT?11410 + RT?11610 + RT?12010 + RT?12310 + RT?12510 + RT?12710 + RT?13110 + RT?13410 + RT?13610 + RT?13910 + RT?14710 + RT?15010 + RT?15210 + RT?15810 + RT?16110 + RT?16710 + RT?17010 + RT?17610 + RT?17910 + RT?18510 + RT?18710 + RT?19010 + RT?19310 + RT?19610 + RT?19910 + RT?20210 + RT?20510 + RT?20910 + RT?21110 + RT?21410 + RT?21610 + RT?21810 + RT?22010 + RT?22210 + RT?22510 + RT?22810 + RT?23010 + RT?23210 + RT?23410 + RT?23710 + RT?24010 + RT?24810 + RT?25610 + RT?25910 + RT?26110 + RT?26510 + RT?26710 + RT?27110 + RT?27410 + RT?27610 + RT?27810 + RT?28110 + RT?28410 + RT?28610 + RT?28810 + RT?29110 + RT?29410 + RT?29610 + RT?29910 + RT?30210 + RT?30510 + RT?30810 + RT?31010 + RT?31210 + RT?31410 + RT?31710 + RT?32110 + RT?32410 + RT?32710 + RT?32910 + RT?33210 + RT?33510 + RT?33810 + RT?34110 + RT?34310 + RT?34610 + RT?34910 + RT?35110 + RT?35310 + RT?35610 + RT?35910 + RT?36310 + RT?36510 + RT?36710 + RT?37510 + RT?37710 + .ENDT + +RT?122:: .TABLE + 1 + V?HELLO + 0 + .BYTE 43 + .BYTE 15 + .ENDT + +RT?222:: .TABLE + 1 + V?UNLOCK + 0 + .BYTE 0 + .BYTE 3 + .ENDT + +RT?322:: .TABLE + 1 + V?UNLOCK + 0 + .BYTE 0 + .BYTE 3 + W?WITH + .BYTE 0 + .BYTE 79 + .ENDT + +RT?422:: .TABLE + 1 + V?ENJOY + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?522:: .TABLE + 2 + V?LEAVE + 0 + .BYTE 0 + .BYTE 128 + V?LEAVE + W?FROM + .BYTE 0 + .BYTE 128 + .ENDT + +RT?622:: .TABLE + 1 + V?SPUT-ON + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 20 + .ENDT + +RT?722:: .TABLE + 1 + V?LOOK-INSIDE + 0 + .BYTE 43 + .BYTE 15 + .ENDT + +RT?822:: .TABLE + 1 + V?CAN? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?922:: .TABLE + 1 + V?PUSH + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?1022:: +RT?16222:: .TABLE + 2 + V?PUT-UNDER + 0 + .BYTE 0 + .BYTE 116 + W?UNDER + .BYTE 0 + .BYTE 15 + V?PUT-IN + 0 + .BYTE 0 + .BYTE 116 + W?IN + .BYTE 0 + .BYTE 15 + .ENDT + +RT?1122:: .TABLE + 1 + V?REFUSE + 0 + .BYTE 0 + .BYTE 3 + .ENDT + +RT?1222:: .TABLE + 3 + V?TELL + W?AT + .BYTE 0 + .BYTE 147 + V?YELL + W?IN + .BYTE 0 + .BYTE 15 + V?TELL + W?TO + .BYTE 0 + .BYTE 147 + .ENDT + +RT?1322:: .TABLE + 1 + V?SMELL + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?1422:: .TABLE + 1 + V?MIGHT? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?1522:: .TABLE + 2 + V?RING + 0 + .BYTE 0 + .BYTE 15 + V?RING + W?ON + .BYTE 0 + .BYTE 15 + .ENDT + +RT?1622:: .TABLE + 2 + V?SSHOOT + 0 + .BYTE 0 + .BYTE 108 + W?AT + .BYTE 0 + .BYTE 15 + V?RING + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?1722:: .TABLE + 1 + V?ASK-CONTEXT-FOR + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?1822:: .TABLE + 1 + V?WOULD? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?1922:: .TABLE + 3 + V?ASK + 0 + .BYTE 44 + .BYTE 15 + V?ASK-CONTEXT-ABOUT + W?ABOUT + .BYTE 0 + .BYTE 128 + V?ASK-CONTEXT-FOR + W?FOR + .BYTE 0 + .BYTE 128 + .ENDT + +RT?2022:: .TABLE + 3 + V?ASK-ABOUT + 0 + .BYTE 0 + .BYTE 15 + W?ABOUT + .BYTE 0 + .BYTE 128 + V?ASK-FOR + 0 + .BYTE 0 + .BYTE 15 + W?FOR + .BYTE 0 + .BYTE 128 + V?ASK-ABOUT + 0 + .BYTE 0 + .BYTE 15 + W?ON + .BYTE 0 + .BYTE 128 + .ENDT + +RT?2122:: .TABLE + 1 + V?HELP + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?2222:: .TABLE + 1 + V?LISTEN + W?TO + .BYTE 0 + .BYTE 15 + .ENDT + +RT?2322:: .TABLE + 2 + V?$CALL + 0 + .BYTE 44 + .BYTE 15 + V?$CALL + W?TO + .BYTE 44 + .BYTE 15 + .ENDT + +RT?2422:: .TABLE + 1 + V?$RANDOM + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?2522:: .TABLE + 4 + V?TURN + 0 + .BYTE 0 + .BYTE 15 + V?TURN + W?AROUND + .BYTE 43 + .BYTE 15 + V?LAMP-OFF + W?OFF + .BYTE 40 + .BYTE 47 + V?LAMP-ON + W?ON + .BYTE 40 + .BYTE 15 + .ENDT + +RT?2622:: .TABLE + 1 + V?AIM + 0 + .BYTE 0 + .BYTE 15 + W?TO + .BYTE 0 + .BYTE 15 + .ENDT + +RT?2722:: .TABLE + 1 + V?FOOTNOTE + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?2822:: .TABLE + 1 + V?USE + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?2922:: .TABLE + 2 + V?USE + 0 + .BYTE 0 + .BYTE 15 + W?AGAINST + .BYTE 0 + .BYTE 15 + V?USE + 0 + .BYTE 0 + .BYTE 15 + W?ON + .BYTE 0 + .BYTE 15 + .ENDT + +RT?3022:: .TABLE + 2 + V?FAINT + W?IN + .BYTE 0 + .BYTE 3 + V?FAINT + W?ON + .BYTE 0 + .BYTE 3 + .ENDT + +RT?3122:: .TABLE + 1 + V?BE + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?3222:: .TABLE + 1 + V?BE + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?3322:: .TABLE + 1 + V?STOP + 0 + .BYTE 43 + .BYTE 15 + .ENDT + +RT?3422:: .TABLE + 2 + V?EXAMINE + 0 + .BYTE 0 + .BYTE 15 + V?LOOK-UNDER + W?UNDER + .BYTE 0 + .BYTE 15 + .ENDT + +RT?3522:: .TABLE + 2 + V?READ + 0 + .BYTE 0 + .BYTE 47 + W?THROUGH + .BYTE 0 + .BYTE 111 + V?READ + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 111 + .ENDT + +RT?3622:: .TABLE + 1 + V?HOW + 0 + .BYTE 46 + .BYTE 128 + .ENDT + +RT?3722:: .TABLE + 1 + V?HOW + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?3822:: .TABLE + 2 + V?CLOSE + 0 + .BYTE 41 + .BYTE 15 + V?LAMP-OFF + W?OFF + .BYTE 40 + .BYTE 47 + .ENDT + +RT?3922:: .TABLE + 4 + V?BRUSH + 0 + .BYTE 43 + .BYTE 19 + V?BOARD + W?IN + .BYTE 0 + .BYTE 3 + V?BRUSH + W?OFF + .BYTE 43 + .BYTE 19 + V?BRUSH + W?UP + .BYTE 43 + .BYTE 19 + .ENDT + +RT?4022:: .TABLE + 2 + V?BRUSH + 0 + .BYTE 0 + .BYTE 15 + W?OFF + .BYTE 0 + .BYTE 3 + V?BRUSH + 0 + .BYTE 0 + .BYTE 19 + W?WITH + .BYTE 0 + .BYTE 108 + .ENDT + +RT?4122:: .TABLE + 15 + V?WALK + 0 + .BYTE 0 + .BYTE 15 + V?FOLLOW + W?AFTER + .BYTE 0 + .BYTE 128 + V?WALK-AROUND + W?AROUND + .BYTE 0 + .BYTE 15 + V?LEAVE + W?AWAY + .BYTE 43 + .BYTE 128 + V?THROUGH + W?BEHIND + .BYTE 0 + .BYTE 15 + V?CLIMB-DOWN + W?DOWN + .BYTE 0 + .BYTE 128 + V?THROUGH + W?IN + .BYTE 0 + .BYTE 128 + V?WALK-TO + W?OFF + .BYTE 0 + .BYTE 128 + V?WALK-AROUND + W?ON + .BYTE 0 + .BYTE 15 + V?LEAVE + W?OUT + .BYTE 0 + .BYTE 128 + V?LEAP + W?OVER + .BYTE 0 + .BYTE 15 + V?THROUGH + W?THROUGH + .BYTE 0 + .BYTE 128 + V?WALK-TO + W?TO + .BYTE 0 + .BYTE 128 + V?CLIMB-UP + W?UP + .BYTE 0 + .BYTE 128 + V?FOLLOW + W?WITH + .BYTE 0 + .BYTE 128 + .ENDT + +RT?4222:: .TABLE + 2 + V?RUN-OVER + 0 + .BYTE 0 + .BYTE 15 + W?OVER + .BYTE 0 + .BYTE 15 + V?THROUGH + 0 + .BYTE 0 + .BYTE 15 + W?THROUGH + .BYTE 0 + .BYTE 128 + .ENDT + +RT?4322:: .TABLE + 1 + V?RUB + W?WITH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?4422:: .TABLE + 1 + V?BE? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?4522:: .TABLE + 1 + V?BE? + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?4622:: .TABLE + 2 + V?KISS + 0 + .BYTE 44 + .BYTE 3 + V?KISS + W?WITH + .BYTE 44 + .BYTE 3 + .ENDT + +RT?4722:: .TABLE + 1 + V?LISTEN + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?4822:: .TABLE + 4 + V?SPUT-ON + 0 + .BYTE 0 + .BYTE 15 + W?IN + .BYTE 0 + .BYTE 20 + V?PUT + 0 + .BYTE 0 + .BYTE 20 + W?ON + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 20 + W?AROUND + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 20 + W?OVER + .BYTE 0 + .BYTE 15 + .ENDT + +RT?4922:: .TABLE + 1 + V?READ + 0 + .BYTE 34 + .BYTE 47 + .ENDT + +RT?5022:: .TABLE + 3 + V?SREAD + 0 + .BYTE 0 + .BYTE 15 + 0 + .BYTE 0 + .BYTE 47 + V?READ + 0 + .BYTE 0 + .BYTE 47 + W?TO + .BYTE 0 + .BYTE 15 + V?LOOK-UP + W?ABOUT + .BYTE 0 + .BYTE 15 + W?IN + .BYTE 34 + .BYTE 111 + .ENDT + +RT?5122:: .TABLE + 1 + V?KILL + 0 + .BYTE 44 + .BYTE 3 + W?WITH + .BYTE 36 + .BYTE 76 + .ENDT + +RT?5222:: .TABLE + 1 + V?SHOULD? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?5322:: .TABLE + 5 + V?SIT + W?ON + .BYTE 42 + .BYTE 3 + V?SIT-AT + W?AT + .BYTE 0 + .BYTE 3 + V?SIT-AT + W?BESIDE + .BYTE 44 + .BYTE 3 + V?SIT + W?DOWN + .BYTE 42 + .BYTE 3 + V?SIT + W?IN + .BYTE 42 + .BYTE 3 + .ENDT + +RT?5422:: .TABLE + 1 + V?RUB + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?5522:: .TABLE + 1 + V?RUB + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 111 + .ENDT + +RT?5622:: .TABLE + 1 + V?$CHEAT + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?5722:: .TABLE + 1 + V?RING + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?5822:: .TABLE + 1 + V?COUNT + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?5922:: .TABLE + 1 + V?SMILE + W?AT + .BYTE 44 + .BYTE 15 + .ENDT + +RT?6022:: .TABLE + 2 + V?MUNG + 0 + .BYTE 0 + .BYTE 15 + V?MUNG + W?UP + .BYTE 0 + .BYTE 15 + .ENDT + +RT?6122:: .TABLE + 3 + V?MUNG + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 108 + V?MUNG + 0 + .BYTE 0 + .BYTE 15 + W?DOWN + .BYTE 0 + .BYTE 108 + V?MUNG + W?DOWN + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 108 + .ENDT + +RT?6222:: .TABLE + 1 + V?FIX + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?6322:: .TABLE + 1 + V?FIX + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?6422:: .TABLE + 3 + V?NOD + 0 + .BYTE 43 + .BYTE 15 + V?HELLO + W?AT + .BYTE 0 + .BYTE 15 + V?HELLO + W?TO + .BYTE 0 + .BYTE 15 + .ENDT + +RT?6522:: .TABLE + 1 + V?BUY + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?6622:: .TABLE + 1 + V?$VERIFY + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?6722:: .TABLE + 1 + V?LOCK + 0 + .BYTE 0 + .BYTE 3 + .ENDT + +RT?6822:: .TABLE + 1 + V?LOCK + 0 + .BYTE 0 + .BYTE 3 + W?WITH + .BYTE 0 + .BYTE 47 + .ENDT + +RT?6922:: .TABLE + 1 + V?FILL + 0 + .BYTE 38 + .BYTE 15 + .ENDT + +RT?7022:: .TABLE + 1 + V?FILL + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?7122:: .TABLE + 2 + V?FIND + 0 + .BYTE 0 + .BYTE 128 + V?ASK-CONTEXT-ABOUT + W?OUT + .BYTE 0 + .BYTE 128 + .ENDT + +RT?7222:: .TABLE + 2 + V?SSEARCH-FOR + 0 + .BYTE 0 + .BYTE 15 + W?IN + .BYTE 0 + .BYTE 15 + V?SSEARCH-FOR + 0 + .BYTE 0 + .BYTE 15 + W?ON + .BYTE 0 + .BYTE 15 + .ENDT + +RT?7322:: .TABLE + 2 + V?SHOW + W?AT + .BYTE 0 + .BYTE 15 + V?SHOW + W?TO + .BYTE 0 + .BYTE 15 + .ENDT + +RT?7422:: .TABLE + 4 + V?AIM + 0 + .BYTE 0 + .BYTE 15 + 0 + .BYTE 0 + .BYTE 15 + V?AIM + 0 + .BYTE 0 + .BYTE 15 + W?AT + .BYTE 0 + .BYTE 15 + V?AIM + 0 + .BYTE 0 + .BYTE 15 + W?TO + .BYTE 0 + .BYTE 15 + V?SAIM + W?AT + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?7522:: .TABLE + 1 + V?COULD? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?7622:: .TABLE + 2 + V?SHOOT + 0 + .BYTE 44 + .BYTE 3 + V?SHOOT + W?AT + .BYTE 44 + .BYTE 3 + .ENDT + +RT?7722:: .TABLE + 3 + V?SHOOT + 0 + .BYTE 44 + .BYTE 3 + W?WITH + .BYTE 0 + .BYTE 76 + V?SSHOOT + 0 + .BYTE 0 + .BYTE 76 + W?AT + .BYTE 44 + .BYTE 3 + V?SSHOOT + 0 + .BYTE 0 + .BYTE 76 + W?ON + .BYTE 44 + .BYTE 3 + .ENDT + +RT?7822:: .TABLE + 2 + V?ATTACK + 0 + .BYTE 44 + .BYTE 3 + V?ATTACK + W?OFF + .BYTE 44 + .BYTE 3 + .ENDT + +RT?7922:: .TABLE + 1 + V?ATTACK + 0 + .BYTE 0 + .BYTE 3 + W?WITH + .BYTE 0 + .BYTE 100 + .ENDT + +RT?8022:: .TABLE + 7 + V?TAKE + 0 + .BYTE 37 + .BYTE 19 + V?BOARD + W?IN + .BYTE 42 + .BYTE 3 + V?DISEMBARK + W?OFF + .BYTE 43 + .BYTE 3 + V?CLIMB-ON + W?ON + .BYTE 42 + .BYTE 3 + V?DISEMBARK + W?OUT + .BYTE 43 + .BYTE 131 + V?DROP + W?RID + .BYTE 0 + .BYTE 15 + V?STAND + W?UP + .BYTE 43 + .BYTE 15 + .ENDT + +RT?8122:: .TABLE + 5 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?FROM + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?IN + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?OFF + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?OUT + .BYTE 0 + .BYTE 15 + V?TAKE-TO + 0 + .BYTE 0 + .BYTE 63 + W?TO + .BYTE 0 + .BYTE 128 + .ENDT + +RT?8222:: .TABLE + 1 + V?$CALL + 0 + .BYTE 44 + .BYTE 15 + .ENDT + +RT?8322:: .TABLE + 2 + V?PUSH + 0 + .BYTE 0 + .BYTE 3 + V?PUSH + W?ON + .BYTE 0 + .BYTE 3 + .ENDT + +RT?8422:: .TABLE + 5 + V?MOVE-DIR + 0 + .BYTE 0 + .BYTE 3 + 0 + .BYTE 0 + .BYTE 15 + V?PUT-IN + 0 + .BYTE 0 + .BYTE 124 + W?IN + .BYTE 0 + .BYTE 15 + V?PUSH + 0 + .BYTE 0 + .BYTE 19 + W?OFF + .BYTE 43 + .BYTE 15 + V?MOVE-DIR + 0 + .BYTE 0 + .BYTE 19 + W?TO + .BYTE 0 + .BYTE 15 + V?PUT-UNDER + 0 + .BYTE 0 + .BYTE 124 + W?UNDER + .BYTE 0 + .BYTE 15 + .ENDT + +RT?8522:: .TABLE + 1 + V?FOLLOW + 0 + .BYTE 44 + .BYTE 128 + .ENDT + +RT?8622:: .TABLE + 2 + V?FOLLOW + 0 + .BYTE 44 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 15 + V?FOLLOW + 0 + .BYTE 44 + .BYTE 128 + W?TO + .BYTE 0 + .BYTE 128 + .ENDT + +RT?8722:: .TABLE + 13 + V?CHASTISE + 0 + .BYTE 0 + .BYTE 15 + V?LOOK + W?AROUND + .BYTE 43 + .BYTE 15 + V?EXAMINE + W?AT + .BYTE 0 + .BYTE 15 + V?LOOK-BEHIND + W?BEHIND + .BYTE 0 + .BYTE 15 + V?LOOK-DOWN + W?DOWN + .BYTE 43 + .BYTE 15 + V?FIND + W?FOR + .BYTE 0 + .BYTE 128 + V?LOOK-INSIDE + W?IN + .BYTE 43 + .BYTE 15 + V?LOOK-ON + W?ON + .BYTE 0 + .BYTE 3 + V?LOOK-OUTSIDE + W?OUT + .BYTE 43 + .BYTE 15 + V?EXAMINE + W?OVER + .BYTE 0 + .BYTE 15 + V?LOOK-THROUGH + W?THROUGH + .BYTE 0 + .BYTE 15 + V?LOOK-UNDER + W?UNDER + .BYTE 0 + .BYTE 15 + V?LOOK-UP + W?UP + .BYTE 43 + .BYTE 15 + .ENDT + +RT?8822:: .TABLE + 2 + V?SEARCH-FOR + W?IN + .BYTE 0 + .BYTE 15 + W?FOR + .BYTE 0 + .BYTE 128 + V?LOOK-UP + W?UP + .BYTE 0 + .BYTE 15 + W?IN + .BYTE 0 + .BYTE 15 + .ENDT + +RT?8922:: .TABLE + 1 + V?REMOVE + 0 + .BYTE 33 + .BYTE 15 + .ENDT + +RT?9022:: .TABLE + 1 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?FROM + .BYTE 0 + .BYTE 15 + .ENDT + +RT?9122:: .TABLE + 1 + V?THROUGH + 0 + .BYTE 43 + .BYTE 128 + .ENDT + +RT?9222:: .TABLE + 4 + V?SAY + 0 + .BYTE 0 + .BYTE 15 + V?TALK-ABOUT + W?ABOUT + .BYTE 0 + .BYTE 128 + V?TELL + W?TO + .BYTE 0 + .BYTE 19 + V?TELL + W?WITH + .BYTE 0 + .BYTE 19 + .ENDT + +RT?9322:: .TABLE + 3 + V?SAY + 0 + .BYTE 0 + .BYTE 15 + W?TO + .BYTE 44 + .BYTE 3 + V?TELL-ABOUT + W?TO + .BYTE 0 + .BYTE 3 + W?ABOUT + .BYTE 0 + .BYTE 128 + V?ASK-ABOUT + W?WITH + .BYTE 0 + .BYTE 3 + W?ABOUT + .BYTE 0 + .BYTE 128 + .ENDT + +RT?9422:: .TABLE + 3 + V?LIE + W?DOWN + .BYTE 42 + .BYTE 3 + V?LIE + W?IN + .BYTE 42 + .BYTE 3 + V?LIE + W?ON + .BYTE 42 + .BYTE 3 + .ENDT + +RT?9522:: .TABLE + 2 + V?TELL + 0 + .BYTE 44 + .BYTE 19 + V?TALK-ABOUT + W?ABOUT + .BYTE 0 + .BYTE 128 + .ENDT + +RT?9622:: .TABLE + 2 + V?TELL-ABOUT + 0 + .BYTE 0 + .BYTE 3 + 0 + .BYTE 0 + .BYTE 128 + V?TELL-ABOUT + 0 + .BYTE 0 + .BYTE 3 + W?ABOUT + .BYTE 0 + .BYTE 128 + .ENDT + +RT?9722:: .TABLE + 2 + V?TALK-ABOUT + 0 + .BYTE 0 + .BYTE 128 + V?TALK-ABOUT + W?ABOUT + .BYTE 0 + .BYTE 128 + .ENDT + +RT?9822:: .TABLE + 2 + V?STELL-ABOUT + 0 + .BYTE 0 + .BYTE 15 + W?TO + .BYTE 0 + .BYTE 15 + V?TELL-ABOUT + W?TO + .BYTE 0 + .BYTE 3 + W?ABOUT + .BYTE 0 + .BYTE 128 + .ENDT + +RT?9922:: .TABLE + 3 + V?ANALYZE + 0 + .BYTE 0 + .BYTE 15 + V?ANALYZE + W?OUT + .BYTE 0 + .BYTE 15 + V?LOOK-UNDER + W?UNDER + .BYTE 0 + .BYTE 15 + .ENDT + +RT?10022:: .TABLE + 3 + V?ANALYZE + 0 + .BYTE 0 + .BYTE 15 + W?FOR + .BYTE 0 + .BYTE 15 + V?LOOK-UP + 0 + .BYTE 0 + .BYTE 15 + W?IN + .BYTE 0 + .BYTE 15 + V?SANALYZE + 0 + .BYTE 0 + .BYTE 15 + W?ON + .BYTE 0 + .BYTE 15 + .ENDT + +RT?10122:: .TABLE + 1 + V?THANK + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?10222:: .TABLE + 1 + V?BUY + W?FOR + .BYTE 0 + .BYTE 15 + .ENDT + +RT?10322:: .TABLE + 1 + V?MUST? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?10422:: .TABLE + 1 + V?WILL? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?10522:: .TABLE + 3 + V?CLIMB-ON + W?IN + .BYTE 42 + .BYTE 3 + V?CLIMB-ON + W?ON + .BYTE 42 + .BYTE 3 + V?STAND + W?UP + .BYTE 43 + .BYTE 15 + .ENDT + +RT?10622:: .TABLE + 9 + V?BOARD + 0 + .BYTE 42 + .BYTE 131 + V?CLIMB-DOWN + W?DOWN + .BYTE 43 + .BYTE 131 + V?BOARD + W?IN + .BYTE 42 + .BYTE 131 + V?DISEMBARK + W?OFF + .BYTE 43 + .BYTE 3 + V?CLIMB-ON + W?ON + .BYTE 42 + .BYTE 3 + V?DISEMBARK + W?OUT + .BYTE 43 + .BYTE 131 + V?CLIMB-ON + W?OVER + .BYTE 42 + .BYTE 3 + V?THROUGH + W?THROUGH + .BYTE 0 + .BYTE 15 + V?CLIMB-UP + W?UP + .BYTE 43 + .BYTE 131 + .ENDT + +RT?10722:: .TABLE + 7 + V?LEAP + W?ACROSS + .BYTE 0 + .BYTE 3 + V?DISEMBARK + W?FROM + .BYTE 43 + .BYTE 3 + V?BOARD + W?IN + .BYTE 42 + .BYTE 3 + V?DISEMBARK + W?OUT + .BYTE 43 + .BYTE 131 + V?DISEMBARK + W?OFF + .BYTE 43 + .BYTE 3 + V?LEAP + W?OVER + .BYTE 0 + .BYTE 3 + V?THROUGH + W?THROUGH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?10822:: .TABLE + 2 + V?OPEN + 0 + .BYTE 41 + .BYTE 15 + V?OPEN + W?UP + .BYTE 41 + .BYTE 15 + .ENDT + +RT?10922:: .TABLE + 1 + V?OPEN + 0 + .BYTE 41 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 111 + .ENDT + +RT?11022:: +RT?15022:: .TABLE + 1 + V?SHOW + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?11122:: .TABLE + 2 + V?SSHOW + 0 + .BYTE 0 + .BYTE 15 + 0 + .BYTE 0 + .BYTE 84 + V?SHOW + 0 + .BYTE 0 + .BYTE 84 + W?TO + .BYTE 0 + .BYTE 15 + .ENDT + +RT?11222:: .TABLE + 1 + V?WHERE + 0 + .BYTE 46 + .BYTE 128 + .ENDT + +RT?11322:: .TABLE + 1 + V?WHERE + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?11422:: .TABLE + 2 + V?DRINK + 0 + .BYTE 0 + .BYTE 15 + V?DRINK + W?FROM + .BYTE 0 + .BYTE 12 + .ENDT + +RT?11522:: .TABLE + 1 + V?DROP + W?DOWN + .BYTE 0 + .BYTE 84 + .ENDT + +RT?11622:: .TABLE + 9 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?ON + .BYTE 35 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?ACROSS + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?AROUND + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?DOWN + .BYTE 0 + .BYTE 15 + V?PUT-IN + 0 + .BYTE 0 + .BYTE 116 + W?IN + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?OVER + .BYTE 0 + .BYTE 15 + V?THROW-THROUGH + 0 + .BYTE 0 + .BYTE 116 + W?THROUGH + .BYTE 0 + .BYTE 3 + V?PUT-UNDER + 0 + .BYTE 0 + .BYTE 116 + W?UNDER + .BYTE 0 + .BYTE 15 + V?PUT-IN + W?AWAY + .BYTE 0 + .BYTE 116 + W?IN + .BYTE 0 + .BYTE 15 + .ENDT + +RT?11722:: .TABLE + 2 + V?DROP + W?AWAY + .BYTE 0 + .BYTE 76 + V?THROW-IN-TOWEL + W?IN + .BYTE 0 + .BYTE 15 + .ENDT + +RT?11822:: .TABLE + 9 + V?THROW-AT + 0 + .BYTE 0 + .BYTE 108 + W?AT + .BYTE 44 + .BYTE 3 + V?THROW-AT + 0 + .BYTE 0 + .BYTE 108 + W?AGAINST + .BYTE 0 + .BYTE 3 + V?PUT-IN + 0 + .BYTE 0 + .BYTE 116 + W?IN + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?ON + .BYTE 0 + .BYTE 15 + V?THROW-THROUGH + 0 + .BYTE 0 + .BYTE 108 + W?OUT + .BYTE 0 + .BYTE 3 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?OVER + .BYTE 0 + .BYTE 3 + V?THROW-THROUGH + 0 + .BYTE 0 + .BYTE 108 + W?THROUGH + .BYTE 0 + .BYTE 3 + V?THROW-AT + 0 + .BYTE 0 + .BYTE 108 + W?TO + .BYTE 44 + .BYTE 3 + V?THROW-AT + 0 + .BYTE 0 + .BYTE 108 + W?UP + .BYTE 43 + .BYTE 15 + .ENDT + +RT?11922:: .TABLE + 1 + V?MAY? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?12022:: .TABLE + 1 + V?WHO + 0 + .BYTE 46 + .BYTE 128 + .ENDT + +RT?12122:: .TABLE + 1 + V?WHO + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?12222:: .TABLE + 2 + V?FAINT + W?OUT + .BYTE 43 + .BYTE 15 + V?QUIT + W?UP + .BYTE 43 + .BYTE 15 + .ENDT + +RT?12322:: .TABLE + 2 + V?SGIVE + 0 + .BYTE 0 + .BYTE 1 + 0 + .BYTE 0 + .BYTE 84 + V?GIVE + 0 + .BYTE 0 + .BYTE 84 + W?TO + .BYTE 44 + .BYTE 1 + .ENDT + +RT?12422:: .TABLE + 1 + V?EAT + 0 + .BYTE 39 + .BYTE 111 + .ENDT + +RT?12522:: .TABLE + 1 + V?PUT-IN + 0 + .BYTE 0 + .BYTE 116 + W?IN + .BYTE 0 + .BYTE 15 + .ENDT + +RT?12622:: .TABLE + 1 + V?DO? + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?12722:: .TABLE + 2 + V?REPLY + 0 + .BYTE 0 + .BYTE 15 + V?REPLY + W?TO + .BYTE 0 + .BYTE 15 + .ENDT + +RT?12822:: .TABLE + 2 + V?LAMP-ON + 0 + .BYTE 0 + .BYTE 15 + V?RESTART + W?OVER + .BYTE 43 + .BYTE 15 + .ENDT + +RT?12922:: .TABLE + 1 + V?TELL + 0 + .BYTE 44 + .BYTE 19 + .ENDT + +RT?13022:: .TABLE + 1 + V?WHAT + 0 + .BYTE 46 + .BYTE 128 + .ENDT + +RT?13122:: .TABLE + 1 + V?WHAT + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?13222:: .TABLE + 2 + V?TAKE + 0 + .BYTE 37 + .BYTE 19 + V?HOLD-UP + W?UP + .BYTE 0 + .BYTE 111 + .ENDT + +RT?13322:: .TABLE + 2 + V?HOLD-UP + 0 + .BYTE 0 + .BYTE 111 + W?TO + .BYTE 0 + .BYTE 15 + V?HOLD-UP + 0 + .BYTE 0 + .BYTE 111 + W?UP + .BYTE 0 + .BYTE 15 + .ENDT + +RT?13422:: .TABLE + 1 + V?WHEN + 0 + .BYTE 46 + .BYTE 128 + .ENDT + +RT?13522:: .TABLE + 1 + V?WHEN + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?13622:: .TABLE + 2 + V?ALARM + 0 + .BYTE 43 + .BYTE 3 + V?ALARM + W?UP + .BYTE 43 + .BYTE 3 + .ENDT + +RT?13722:: .TABLE + 2 + V?PLAY + 0 + .BYTE 0 + .BYTE 15 + V?PLAY + W?WITH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?13822:: .TABLE + 1 + V?PLAY + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 44 + .BYTE 15 + .ENDT + +RT?13922:: .TABLE + 1 + V?LAMP-ON + 0 + .BYTE 40 + .BYTE 15 + .ENDT + +RT?14022:: .TABLE + 3 + V?WAIT-FOR + 0 + .BYTE 43 + .BYTE 15 + V?WAIT-FOR + W?FOR + .BYTE 43 + .BYTE 128 + V?WAIT-UNTIL + W?UNTIL + .BYTE 0 + .BYTE 15 + .ENDT + +RT?14122:: .TABLE + 1 + V?WHY + 0 + .BYTE 46 + .BYTE 128 + .ENDT + +RT?14222:: .TABLE + 1 + V?WHY + 0 + .BYTE 0 + .BYTE 128 + 0 + .BYTE 0 + .BYTE 128 + .ENDT + +RT?14322:: .TABLE + 1 + V?EAT + W?ON + .BYTE 43 + .BYTE 111 + .ENDT + +RT?14422:: .TABLE + 1 + V?POUR + 0 + .BYTE 0 + .BYTE 108 + .ENDT + +RT?14522:: .TABLE + 4 + V?POUR + 0 + .BYTE 0 + .BYTE 108 + W?FROM + .BYTE 0 + .BYTE 15 + V?PUT-IN + 0 + .BYTE 0 + .BYTE 108 + W?IN + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 108 + W?ON + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 108 + W?OVER + .BYTE 0 + .BYTE 15 + .ENDT + +RT?14622:: .TABLE + 1 + V?SLAP + 0 + .BYTE 44 + .BYTE 3 + .ENDT + +RT?14722:: .TABLE + 2 + V?SLAP + 0 + .BYTE 0 + .BYTE 3 + W?AROUND + .BYTE 43 + .BYTE 15 + V?SLAP + 0 + .BYTE 0 + .BYTE 3 + W?WITH + .BYTE 0 + .BYTE 111 + .ENDT + +RT?14822:: .TABLE + 1 + V?SHAKE + 0 + .BYTE 0 + .BYTE 15 + .ENDT + +RT?14922:: .TABLE + 1 + V?SHAKE + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 44 + .BYTE 15 + .ENDT + +RT?15122:: .TABLE + 1 + V?SHOW + 0 + .BYTE 0 + .BYTE 15 + W?WITH + .BYTE 0 + .BYTE 15 + .ENDT + +RT?15222:: .TABLE + 2 + V?SORRY + 0 + .BYTE 43 + .BYTE 15 + V?SORRY + W?TO + .BYTE 43 + .BYTE 15 + .ENDT + +RT?15322:: .TABLE + 4 + V?TAKE + 0 + .BYTE 37 + .BYTE 19 + V?TAKE-OFF + W?OFF + .BYTE 33 + .BYTE 15 + V?TAKE + W?OUT + .BYTE 0 + .BYTE 31 + V?TAKE + W?UP + .BYTE 37 + .BYTE 19 + .ENDT + +RT?15422:: .TABLE + 6 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?FROM + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?IN + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?OFF + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?ON + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?OUT + .BYTE 0 + .BYTE 15 + V?HOLD-UP + 0 + .BYTE 0 + .BYTE 111 + W?UP + .BYTE 0 + .BYTE 15 + .ENDT + +RT?15522:: .TABLE + 1 + V?HELP + 0 + .BYTE 44 + .BYTE 15 + .ENDT + +RT?15622:: .TABLE + 5 + V?SEARCH + 0 + .BYTE 0 + .BYTE 15 + V?FIND + W?FOR + .BYTE 0 + .BYTE 128 + V?SEARCH + W?IN + .BYTE 0 + .BYTE 15 + V?LOOK-UNDER + W?UNDER + .BYTE 0 + .BYTE 15 + V?SEARCH + W?UP + .BYTE 0 + .BYTE 15 + .ENDT + +RT?15722:: .TABLE + 1 + V?SEARCH-FOR + 0 + .BYTE 0 + .BYTE 15 + W?FOR + .BYTE 0 + .BYTE 128 + .ENDT + +RT?15822:: .TABLE + 2 + V?TAKE + 0 + .BYTE 37 + .BYTE 17 + V?TAKE + W?UP + .BYTE 37 + .BYTE 17 + .ENDT + +RT?15922:: .TABLE + 1 + V?DIAGNOSE + 0 + .BYTE 43 + .BYTE 15 + .ENDT + +RT?16022:: .TABLE + 1 + V?SWIM + W?IN + .BYTE 0 + .BYTE 15 + .ENDT + +RT?16122:: .TABLE + 4 + V?HIDE + W?BEHIND + .BYTE 0 + .BYTE 15 + V?THROUGH + W?IN + .BYTE 0 + .BYTE 128 + V?THROUGH + W?ON + .BYTE 0 + .BYTE 15 + V?HIDE + W?UNDER + .BYTE 0 + .BYTE 15 + .ENDT + +RT?16322:: .TABLE + 5 + V?KNOCK + W?ON + .BYTE 0 + .BYTE 15 + V?KNOCK + W?AT + .BYTE 0 + .BYTE 15 + V?ATTACK + W?DOWN + .BYTE 44 + .BYTE 3 + V?PUSH + W?OFF + .BYTE 44 + .BYTE 3 + V?SLAP + W?OUT + .BYTE 44 + .BYTE 3 + .ENDT + +RT?16422:: .TABLE + 2 + V?PUSH + 0 + .BYTE 0 + .BYTE 19 + W?OFF + .BYTE 43 + .BYTE 15 + V?SLAP + 0 + .BYTE 0 + .BYTE 3 + W?ON + .BYTE 0 + .BYTE 15 + .ENDT + +RT?16522:: .TABLE + 1 + V?DROP + 0 + .BYTE 0 + .BYTE 116 + .ENDT + +RT?16622:: .TABLE + 4 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?DOWN + .BYTE 0 + .BYTE 15 + V?PUT-IN + 0 + .BYTE 0 + .BYTE 116 + W?IN + .BYTE 0 + .BYTE 15 + V?PUT + 0 + .BYTE 0 + .BYTE 116 + W?ON + .BYTE 0 + .BYTE 15 + V?THROW-THROUGH + 0 + .BYTE 0 + .BYTE 116 + W?THROUGH + .BYTE 0 + .BYTE 3 + .ENDT + +RT?16722:: .TABLE + 3 + V?MOVE + 0 + .BYTE 0 + .BYTE 3 + V?MOVE + W?ON + .BYTE 0 + .BYTE 3 + V?PULL-TOGETHER + W?TOGETHER + .BYTE 0 + .BYTE 15 + .ENDT + +RT?16822:: .TABLE + 2 + V?MOVE-DIR + 0 + .BYTE 0 + .BYTE 3 + 0 + .BYTE 0 + .BYTE 15 + V?TAKE + 0 + .BYTE 0 + .BYTE 31 + W?OFF + .BYTE 0 + .BYTE 15 + .ENDT + + +; END LOAD + +ENDLOD:: + + + .ENDI diff --git a/h2freq.xzap b/h2freq.xzap new file mode 100644 index 0000000..ff8e5db --- /dev/null +++ b/h2freq.xzap @@ -0,0 +1,200 @@ + .FSTR FSTR?1,"the " ;292 147 + .FSTR FSTR?2,"You " ;210 71 + .FSTR FSTR?3,"you " ;196 99 + .FSTR FSTR?4,", " ;166 167 + .FSTR FSTR?5,"and " ;142 72 + .FSTR FSTR?6,"your " ;129 44 + .FSTR FSTR?7,"The " ;114 39 + .FSTR FSTR?8,"to " ;105 106 + .FSTR FSTR?9,"There's " ;88 12 + .FSTR FSTR?10,"that " ;84 29 + .FSTR FSTR?11,". " ;83 84 + .FSTR FSTR?12,"don't " ;75 16 + .FSTR FSTR?13,"is " ;74 75 + .FSTR FSTR?14,"of " ;70 71 + .FSTR FSTR?15,"crater " ;65 14 + .FSTR FSTR?16,"It's " ;65 14 + .FSTR FSTR?17,"You're " ;63 10 + .FSTR FSTR?18,"can't " ;60 13 + .FSTR FSTR?19,"already " ;60 11 + .FSTR FSTR?20,"for " ;58 30 + .FSTR FSTR?21,"with " ;57 20 + .FSTR FSTR?22,"doesn't " ;56 9 + .FSTR FSTR?23,"nothing " ;54 10 + .FSTR FSTR?24,"not " ;48 25 + .FSTR FSTR?25,"have " ;48 17 + .FSTR FSTR?26,"from " ;48 17 + .FSTR FSTR?27,"which " ;44 12 + .FSTR FSTR?28,"something " ;40 6 + .FSTR FSTR?29,"continues " ;40 6 + .FSTR FSTR?30,"want " ;39 14 + .FSTR FSTR?31,"like " ;39 14 + .FSTR FSTR?32,"in " ;37 38 + .FSTR FSTR?33,"you're " ;36 7 + .FSTR FSTR?34,"surface " ;36 7 + .FSTR FSTR?35,"understand " ;36 5 + .FSTR FSTR?36,"around " ;35 8 + .FSTR FSTR?37,"here" ;34 18 + .FSTR FSTR?38,"Okay" ;33 12 + .FSTR FSTR?39,"it " ;32 33 + .FSTR FSTR?40,"are " ;30 16 + .FSTR FSTR?41,"It " ;30 16 + .FSTR FSTR?42,"trying " ;30 7 + .FSTR FSTR?43,"isn't " ;30 7 + .FSTR FSTR?44,"There " ;30 7 + .FSTR FSTR?45,"Please " ;30 6 + .FSTR FSTR?46,"Don't " ;30 6 + .FSTR FSTR?47,"would " ;28 8 + .FSTR FSTR?48,"think " ;28 8 + .FSTR FSTR?49,"there " ;28 8 + .FSTR FSTR?50,"Ford " ;28 8 + .FSTR FSTR?51,"there's " ;28 5 + .FSTR FSTR?52,"anything " ;28 5 + .FSTR FSTR?53,"this " ;27 10 + .FSTR FSTR?54,"n't " ;27 10 + .FSTR FSTR?55,"Hitchhiker's " ;26 3 + .FSTR FSTR?56,"little " ;25 6 + .FSTR FSTR?57,"ground " ;25 6 + .FSTR FSTR?58,"but " ;24 13 + .FSTR FSTR?59,"very " ;24 9 + .FSTR FSTR?60,"know " ;24 9 + .FSTR FSTR?61,"just " ;24 9 + .FSTR FSTR?62,"Your " ;24 7 + .FSTR FSTR?63,"This " ;24 7 + .FSTR FSTR?64,"That " ;24 7 + .FSTR FSTR?65,"you've " ;24 5 + .FSTR FSTR?66,"talking " ;24 5 + .FSTR FSTR?67,"looking " ;24 5 + .FSTR FSTR?68,"on " ;22 23 + .FSTR FSTR?69,"at " ;22 23 + .FSTR FSTR?70,"can " ;22 12 + .FSTR FSTR?71,"about" ;21 8 + .FSTR FSTR?72,"Not " ;21 8 + .FSTR FSTR?73,"probably " ;21 4 + .FSTR FSTR?74,"you" ;20 21 + .FSTR FSTR?75,"no " ;20 21 + .FSTR FSTR?76,"I " ;20 21 + .FSTR FSTR?77,"that" ;20 11 + .FSTR FSTR?78,"has " ;20 11 + .FSTR FSTR?79,"whale " ;20 6 + .FSTR FSTR?80,"looks " ;20 6 + .FSTR FSTR?81,"inside" ;20 6 + .FSTR FSTR?82,"satchel" ;20 5 + .FSTR FSTR?83,"holding" ;20 5 + .FSTR FSTR?84,"Guide " ;20 5 + .FSTR FSTR?85,"as " ;18 19 + .FSTR FSTR?86,"more " ;18 7 + .FSTR FSTR?87,"look " ;18 7 + .FSTR FSTR?88,"good " ;18 7 + .FSTR FSTR?89,"first" ;18 7 + .FSTR FSTR?90,"down " ;18 7 + .FSTR FSTR?91,"through " ;18 4 + .FSTR FSTR?92,"Crater " ;18 4 + .FSTR FSTR?93,"between " ;18 4 + .FSTR FSTR?94,"Magrathea " ;18 3 + .FSTR FSTR?95,"see " ;16 9 + .FSTR FSTR?96,"out " ;16 9 + + +;word frequency table of 96 most common words + +WORDS:: .TABLE + FSTR?1 + FSTR?2 + FSTR?3 + FSTR?4 + FSTR?5 + FSTR?6 + FSTR?7 + FSTR?8 + FSTR?9 + FSTR?10 + FSTR?11 + FSTR?12 + FSTR?13 + FSTR?14 + FSTR?15 + FSTR?16 + FSTR?17 + FSTR?18 + FSTR?19 + FSTR?20 + FSTR?21 + FSTR?22 + FSTR?23 + FSTR?24 + FSTR?25 + FSTR?26 + FSTR?27 + FSTR?28 + FSTR?29 + FSTR?30 + FSTR?31 + FSTR?32 + FSTR?33 + FSTR?34 + FSTR?35 + FSTR?36 + FSTR?37 + FSTR?38 + FSTR?39 + FSTR?40 + FSTR?41 + FSTR?42 + FSTR?43 + FSTR?44 + FSTR?45 + FSTR?46 + FSTR?47 + FSTR?48 + FSTR?49 + FSTR?50 + FSTR?51 + FSTR?52 + FSTR?53 + FSTR?54 + FSTR?55 + FSTR?56 + FSTR?57 + FSTR?58 + FSTR?59 + FSTR?60 + FSTR?61 + FSTR?62 + FSTR?63 + FSTR?64 + FSTR?65 + FSTR?66 + FSTR?67 + FSTR?68 + FSTR?69 + FSTR?70 + FSTR?71 + FSTR?72 + FSTR?73 + FSTR?74 + FSTR?75 + FSTR?76 + FSTR?77 + FSTR?78 + FSTR?79 + FSTR?80 + FSTR?81 + FSTR?82 + FSTR?83 + FSTR?84 + FSTR?85 + FSTR?86 + FSTR?87 + FSTR?88 + FSTR?89 + FSTR?90 + FSTR?91 + FSTR?92 + FSTR?93 + FSTR?94 + FSTR?95 + FSTR?96 + .ENDT + + .ENDI diff --git a/h2pur.zap b/h2pur.zap new file mode 100644 index 0000000..0cf1115 --- /dev/null +++ b/h2pur.zap @@ -0,0 +1,285 @@ + + +; PURE TABLES ARE DEFINED HERE + +PURTBL:: + +PT?105:: +NP-QUANT-TBL:: .TABLE + NP-QUANT-ALL + W?ALL + NP-QUANT-BOTH + W?BOTH + NP-QUANT-A + W?ONE + NP-QUANT-A + W?EITHER + NP-QUANT-A + W?ANY + .ENDT + +PT?106:: +P-QB-WORDS-1:: .TABLE + 20 + W?ARE + W?CAN + W?COULD + W?DO + W?DOES + W?DID + W?HE + W?I + W?IS + W?IT + W?SHE + W?SHOULD + W?THAT + W?THEY + W?WAS + W?WE + W?WERE + W?WILL + W?WOULD + W?YOU + .ENDT + +PT?206:: +P-QB-WORDS-2:: .TABLE + 20 + W?NOT + W?NOT + W?NOT + W?NOT + W?NOT + W?NOT + W?IS + W?AM + W?NOT + W?IS + W?IS + W?NOT + W?IS + W?ARE + W?NOT + W?ARE + W?NOT + W?NOT + W?NOT + W?ARE + .ENDT + +PT?306:: +P-QA-WORDS1:: .TABLE + 20 + W?AREN + W?CAN + W?COULDN + W?DON + W?DOESN + W?DIDN + W?HE + W?I + W?ISN + W?IT + W?SHE + W?SHOULDN + W?THAT + W?THEY + W?WASN + W?WE + W?WEREN + W?WON + W?WOULDN + W?YOU + .ENDT + +PT?406:: +P-QA-WORDS2:: .TABLE + 20 + W?T + W?T + W?T + W?T + W?T + W?T + W?S + W?M + W?T + W?S + W?S + W?T + W?S + W?RE + W?T + W?RE + W?T + W?T + W?T + W?RE + .ENDT + +PT?506:: +P-N-WORDS:: .TABLE + 23 + W?ZERO + W?TEN + W?ELEVEN + W?TWELVE + W?THIRTEEN + W?FOURTEEN + W?FIFTEEN + W?SIXTEEN + W?SEVENTEEN + W?EIGHTEEN + W?NINETEEN + W?TWENTY + W?THIRTY + W?FORTY + W?FIFTY + W?SIXTY + W?SEVENTY + W?EIGHTY + W?NINETY + W?HUNDRED + W?THOUSAND + W?MILLION + W?BILLION + .ENDT + +PT?606:: +P-C-WORDS:: .TABLE + 23 + W?ASS + W?ASSHOLE + W?BASTARD + W?BITCH + W?COCK + W?COCKSUCKER + W?CRAP + W?CUNT + W?CUSS + W?DAMN + W?DAMNED + W?FUCK + W?FUCKED + W?FUCKER + W?FUCKING + W?GODDAMN + W?GODDAMNED + W?HELL + W?PISS + W?SCREW + W?SHIT + W?SHITHEAD + W?SUCKS + .ENDT + +PT?111:: +OWNERS:: .TABLE + 2 + PLAYER + FORD + .ENDT + +PT?113:: +QACTIONS:: .TABLE + 12 + V-BE + V-BE? + 0 + V-DISEMBARK + V-DISEMBARK? + 0 + V-DROP + V-DROP? + PRE-DROP? + V-TAKE + V-TAKE? + PRE-TAKE? + .ENDT + +PT?117:: +T?TRAILS-ALONG:: .TABLE + 4 + STR?92 + STR?93 + STR?94 + STR?95 + .ENDT + +PT?217:: +T?HO-HUM:: .TABLE + 2 + STR?96 + STR?97 + .ENDT + +PT?317:: +T?WHO-CARES-VERB:: .TABLE + 4 + STR?65 + STR?65 + STR?108 + STR?109 + .ENDT + +PT?417:: +T?WHO-CARES-TBL:: .TABLE + 4 + STR?110 + STR?111 + STR?112 + STR?113 + .ENDT + +PT?121:: +BODY-PARTS-OWNERS:: .TABLE + 5 + PLAYER + MARVIN + FORD + ZAPHOD + TRILLIAN + .ENDT + +PT?221:: +CHARACTER-TABLE:: .TABLE + PLAYER + MARVIN + FORD + ZAPHOD + TRILLIAN + .ENDT + +PT?321:: +LDESC-STRINGS:: .TABLE + 25 + STR?197 + STR?198 + STR?199 + STR?200 + 0 + STR?201 + STR?202 + STR?203 + STR?204 + STR?205 + STR?206 + STR?207 + STR?208 + STR?115 + 0 + STR?209 + STR?210 + STR?191 + STR?116 + STR?211 + STR?212 + STR?213 + STR?214 + STR?215 + STR?216 + .ENDT + +PURTND:: + .ENDI diff --git a/h2str.zap b/h2str.zap new file mode 100644 index 0000000..6971316 --- /dev/null +++ b/h2str.zap @@ -0,0 +1,258 @@ + + +; STRINGS ARE DEFINED HERE + +STRBEG:: + + .SEGMENT "0" + + .GSTR STR?1,"M-END" + .GSTR STR?2,"What charming language!" + .GSTR STR?3,"Computers aren't impressed by naughty words!" + .GSTR STR?4,"You ought to be ashamed of yourself!" + .GSTR STR?5,"Hey, save that talk for the locker room!" + .GSTR STR?6,"Step outside and say that!" + .GSTR STR?7,"And so's your old man!" + .GSTR STR?8,"No inside" +P-NO-INSIDE=STR?8 + .GSTR STR?9,"No surface" +P-NO-SURFACE=STR?9 + .GSTR STR?10,"Nothing" +P-NOTHING=STR?10 + .GSTR STR?11,"RED-SP" + .GSTR STR?12,"RED-SV" + .GSTR STR?13,"RED-SVPNPN" + .GSTR STR?14,"RED-SVN" + .GSTR STR?15,"RED-SD" + .GSTR STR?16,"RED-SVD" + .GSTR STR?17,"RED-VP" + .GSTR STR?18,"RED-CANDO" + .GSTR STR?19,"RED-PART" + .GSTR STR?20,"RED-FCN" + .GSTR STR?21,"RED-NPP" + .GSTR STR?22,"RED-QUOTE" + .GSTR STR?23,"RED-OF" + .GSTR STR?24,"RED-QT" + .GSTR STR?25,"RED-QN" + .GSTR STR?26,"RED-NP" + .GSTR STR?27,"RED-PP" + .GSTR STR?28,"RED-ADJ" + .GSTR STR?29,"RED-ADJS" + .GSTR STR?30,"RED-POSS" + .GSTR STR?31,"RED-BE-FORM" + .GSTR STR?32,"RED-SNBN" + .GSTR STR?33,"RED-SNBA" + .GSTR STR?34,"RED-SNBP" + .GSTR STR?35,"RED-SNBAP" + .GSTR STR?36,"RED-SQBN" + .GSTR STR?37,"RED-SBNN" + .GSTR STR?38,"RED-SBNA" + .GSTR STR?39,"RED-SBNP" + .GSTR STR?40,"RED-BE" + .GSTR STR?41,"RED-NOT" + .GSTR STR?42,"RED-PERS" + .GSTR STR?43,"DO-ORPHAN-TEST" + .GSTR STR?44,"RED-O-NP" + .GSTR STR?45,"RED-O-ADJ" + .GSTR STR?46,"RED-O-PP" + .GSTR STR?47,"Winner" + .GSTR STR?48,"Subject" + .GSTR STR?49,"Preaction" + .GSTR STR?50,"M-BEG" + .GSTR STR?51,"Container" + .GSTR STR?52,"PRSI" + .GSTR STR?53,"PRSO" + .GSTR STR?54,"word" + .GSTR STR?55,"letter" + .GSTR STR?56,"verb" + .GSTR STR?57,"It's not easy to tell " +WHO-KNOWS-STRING=STR?57 + .GSTR STR?58,"You aren't " + .GSTR STR?59,"You already are" + .GSTR STR?60,"It's not in anything." + .GSTR STR?61,"is" + .GSTR STR?62,"has" + .GSTR STR?63,"tri" + .GSTR STR?64,"empti" + .GSTR STR?65,"do" + .GSTR STR?66,"kiss" + .GSTR STR?67,"push" + .GSTR STR?68,"begin" + .GSTR STR?69,"end" + .GSTR STR?70,"superbrief" + .GSTR STR?71,"brief" + .GSTR STR?72,"verbose" + .GSTR STR?73,"go" + .GSTR STR?74,"drive" + .GSTR STR?75,"unusual" + .GSTR STR?76,"interesting" + .GSTR STR?77,"extraordinary" + .GSTR STR?78,"special" + .GSTR STR?79,"What a concept." + .GSTR STR?80,"Nice try." + .GSTR STR?81,"You can't be serious." + .GSTR STR?82,"Not bloody likely." + .GSTR STR?83,"You have lost your mind." + .GSTR STR?84,"You are clearly insane." + .GSTR STR?85,"You appear to have gone barking mad." + .GSTR STR?86,"I'm not convinced you're allowed to be playing with this computer." + .GSTR STR?87,"Run out on the street and say that. See what happens." + .GSTR STR?88,"No, no, a thousand times no. Go boil an egg." + .GSTR STR?89,"Complete waste of time." + .GSTR STR?90,"Useless. Utterly useless." + .GSTR STR?91,"A totally unhelpful idea." + .GSTR STR?92," walks a few steps behind." + .GSTR STR?93," trails along." + .GSTR STR?94," stays at your side." + .GSTR STR?95," walks along with you." + .GSTR STR?96," won't help any." + .GSTR STR?97," is a waste of time." + .GSTR STR?98,"closed" + .GSTR STR?99,"take" + .GSTR STR?100,"try to enter" + .GSTR STR?101,"on" + .GSTR STR?102,"off" + .GSTR STR?103,"open" + .GSTR STR?104,"locked" + .GSTR STR?105,"unlocked" + .GSTR STR?106,"angry" + .GSTR STR?107,"peeved" + .GSTR STR?108,"let" + .GSTR STR?109,"seem" + .GSTR STR?110,"n't appear interested" + .GSTR STR?111,"n't care" + .GSTR STR?112," out a loud yawn" + .GSTR STR?113," impatient" + .GSTR STR?114,"look" + .GSTR STR?115,"asleep" + .GSTR STR?116,"out cold" + .GSTR STR?117," Ask" + .GSTR STR?118,"attack" + .GSTR STR?119,"get in" + .GSTR STR?120,"on the floor" + .GSTR STR?121,"on the ground" + .GSTR STR?122,"bang" + .GSTR STR?123,"too far away" + .GSTR STR?124,"here" + .GSTR STR?125,"[I assume you mean:" +I-ASSUME=STR?125 + .GSTR STR?126," Greet" + .GSTR STR?127,"[You didn't say w" +YOU-DIDNT-SAY-W=STR?127 + .GSTR STR?128,"You think it over. There's no need to get violent. +" +NO-VIOLENCE=STR?128 + .GSTR STR?129,"Knocking on" + .GSTR STR?130,"turn off" + .GSTR STR?131,"turn on" + .GSTR STR?132,"empty" + .GSTR STR?133,"look inside" + .GSTR STR?134,"look outside" + .GSTR STR?135,"look through" + .GSTR STR?136,"look up" + .GSTR STR?137,"hurt" + .GSTR STR?138,"unlock" + .GSTR STR?139,"Pushing" + .GSTR STR?140,"put" + .GSTR STR?141,"in it" + .GSTR STR?142,"an opening in" + .GSTR STR?143,"There's not enough room. +" +NOT-ENOUGH-ROOM=STR?143 + .GSTR STR?144,"in" + .GSTR STR?145,"A brave, Zen-like effort. It fails." +ZEN=STR?145 + .GSTR STR?146,"Rubbing" + .GSTR STR?147," Say to" + .GSTR STR?148,"ou stop searching" +OU-STOP-SEARCHING=STR?148 + .GSTR STR?149,"shoot" + .GSTR STR?150," Ask about" + .GSTR STR?151," Show" + .GSTR STR?152,"smell" + .GSTR STR?153,"standing up" + .GSTR STR?154,"reach" + .GSTR STR?155," to" + .GSTR STR?156,"wait until" + .GSTR STR?157,"not asleep" + .GSTR STR?158,"Which direction do you want to go in?" +WHICH-DIR=STR?158 + .GSTR STR?159,"move around within" + .GSTR STR?160,"Actor" + .GSTR STR?161," you've been trying to get rid of it for years." +GET-RID=STR?161 + .GSTR STR?162,"Try: CONSULT GUIDE ABOUT (something)." + .GSTR STR?163,"The Hitchhiker's Guide to the Galaxy" +GUIDE-NAME=STR?163 + .GSTR STR?164," But then again you must already know that, since you bought one." +ALREADY-KNOW-THAT=STR?164 + .GSTR STR?165,"With a towel wrapped around your head!?!" +WITH-TOWEL=STR?165 + .GSTR STR?166,"Galactic Security Agency" +AGENCY=STR?166 + .GSTR STR?167,"Genuine People Personalities" +GPP=STR?167 + .GSTR STR?168,"Ford" + .GSTR STR?169,"Look around you." + .GSTR STR?170,"The barman snaps ""Hands off until you pay for it!""" +HANDS-OFF=STR?170 + .GSTR STR?171,"You are on the ramp leading from the starship Heart of Gold down to the surface of the legendary lost planet of Magrathea, which isn't. Lost, that is. It isn't lost because if it were, you wouldn't be here, but you are, so it isn't. If the logic of all that is too much for you, just go down to the surface or up to the hatchway. Go anywhere else and you'll just get into awful difficulties. Not that you'll take any notice, of course; just don't say you weren't warned." + .GSTR STR?172,"You bang you head against the ship's side." + .GSTR STR?173,"The surface of Magrathea is barren and inhospitable: a cold, constant wind, a sifting of dust, no sign of life or movement. In short, it is not unlike a Chinese restaurant after 11.00 at night when they all want to go home. The only difference is that there isn't a little silent gang of waiters staring sullenly at the back of your neck. The ramp lies upwards to the north; to the south-east, there's an unhealthy-looking crater." + .GSTR STR?174,"The dusty ground rises here before falling away into a crater. The crater seems rather new, as if it had been created by the impact of something huge and confused, travelling downwards at high velocity. It is as if a sperm whale had inexplicably materialized several miles above the surface of Magrathea and immediately plunged downwards, reaching terminal velocity almost immediately, terminal incomprehension soon afterwards, and, finally, terminal impact just as it was wondering whether it was going to have a nice day. This impression is heightened by the shards of whalebone and meat you can see glistening here and there around the crater. The crater continues south-west and south-east, and the blighted ground lies to the north-west." + .GSTR STR?175,"You are on the rim of a great crater which continues to the south-west and south-east, while the blighted ground lies north-west" + .GSTR STR?176,"The rim of the whale crater continues northwest and southwest. The scene of the whale's final disiluusionment lies below you, but there's no way down" + .GSTR STR?177,"The crater lip continues north-east and north-west. Below you is a build-your-own-dead-whale kit (glue not included). There's no way down." + .GSTR STR?178,"The crater lip continues northeast and southeast here, and below you is a ledge. If you fell from here to the ledge you would probably break and ankle and nobody would hear you screaming and you would die from pain and exposure. On the other hand, if you climbed down carefully, you'd have no trouble. So what are you making all the fuss about?" + .GSTR STR?179,"The crater lip continues northeat and southeast here, and below you is a ledge." + .GSTR STR?180,"This ledge lies halfway between the crater lip and the floor of the whale crater itself. It doesn't seem quite like any ledge you've encountered before, perhaps because of the pillars on either side of you and the rather nice wall - marble, perhaps, or ivory? - between you and the steep but survivable slope down to the crater floor." + .GSTR STR?181,"This ledge lies halfway between the crater lip and the floor of the whale crater itself." + .GSTR STR?182,"You bang your head on the rock face." + .GSTR STR?183,"The floor of this deeply crufty crater is splattered with all kinds of disgusting stuff. Film at eleven." + .GSTR STR?184,"This is the whale crater, liberally supplied with whale." + .GSTR STR?185,"Done." + .GSTR STR?186,"stand up" + .GSTR STR?187,"You already are!" +YOU-ARE=STR?187 + .GSTR STR?188,"Marvin, the Paranoid Android, looks very depressed." + .GSTR STR?189,"sulking" + .GSTR STR?190,"Ford is a Betelgeusan who could pass for an Earthling." + .GSTR STR?191,"deep in thought" + .GSTR STR?192," President of the Galaxy" +PRESIDENT=STR?192 + .GSTR STR?193,"Zaphod looks completely normal, except for his two heads." + .GSTR STR?194,"admiring himself" + .GSTR STR?195,"Tricia MacMillan is more attractive than most astrophysicists." + .GSTR STR?196,"looking at you with pity" + .GSTR STR?197,"dancing" + .GSTR STR?198,"sipping sherry" + .GSTR STR?199,"watching you" + .GSTR STR?200,"looking at you with suspicion" + .GSTR STR?201,"walking along" + .GSTR STR?202,"sobbing quietly" + .GSTR STR?203,"poised to attack" + .GSTR STR?204,"waiting patiently" + .GSTR STR?205,"eating with relish" + .GSTR STR?206,"preparing dinner" + .GSTR STR?207,"listening to you" + .GSTR STR?208,"lounging and chatting" + .GSTR STR?209,"listening" + .GSTR STR?210,"preparing to leave" + .GSTR STR?211,"ignoring you" + .GSTR STR?212,"searching" + .GSTR STR?213,"playing the piano" + .GSTR STR?214,"following you" + .GSTR STR?215,"brushing her hair" + .GSTR STR?216,"looking sleepy" + .GSTR STR?217,"smile" + .GSTR STR?218,"on it" + .GSTR STR?219,"You don't find anything new there. +" +NOTHING-NEW=STR?219 + .GSTR STR?220,": " + .GSTR STR?221,": +" + .ENDSEG + + + .ENDI diff --git a/macros.zap b/macros.zap new file mode 100644 index 0000000..dc2880f --- /dev/null +++ b/macros.zap @@ -0,0 +1,24 @@ + + + .FUNCT SEE-VERB?:ANY:0:0 + EQUAL? PRSA,V?SSEARCH-FOR,V?SEARCH-FOR,V?SEARCH /TRUE + EQUAL? PRSA,V?READ,V?LOOK-UP,V?LOOK-UNDER /TRUE + EQUAL? PRSA,V?LOOK-THROUGH,V?LOOK-OUTSIDE,V?LOOK-ON /TRUE + EQUAL? PRSA,V?LOOK-INSIDE,V?LOOK-DOWN,V?LOOK-BEHIND /TRUE + EQUAL? PRSA,V?LOOK,V?FIND,V?EXAMINE /TRUE + EQUAL? PRSA,V?CHASTISE,V?SANALYZE,V?ANALYZE /TRUE + RFALSE + + + .FUNCT SPEAKING-VERB?:ANY:0:1,PER + EQUAL? PRSA,V?$CALL,V?YES,V?TELL-ABOUT /?CTR2 + EQUAL? PRSA,V?TELL,V?SORRY,V?REPLY /?CTR2 + EQUAL? PRSA,V?NO,V?HELLO,V?ASK-FOR /?CTR2 + EQUAL? PRSA,V?ASK-ABOUT,V?ASK,V?ANSWER \?CCL3 +?CTR2: EQUAL? PER,0,PRSO /TRUE + RFALSE +?CCL3: EQUAL? PRSA,V?TALK-ABOUT,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT \FALSE + ZERO? PER /TRUE + RFALSE + + .ENDI diff --git a/macros.zil b/macros.zil new file mode 100644 index 0000000..348f8e9 --- /dev/null +++ b/macros.zil @@ -0,0 +1,75 @@ +"MACROS for MILLIWAYS +Copyright (c) 1988 Infocom, Inc. All rights reserved." + +>>> + + + the * + The * + He+verb * *:STRING + He * + he+verb * *:STRING + he * + verb * *:STRING + him * + his * + His * > + +>> + + + + )>) + ( + + )>)>>> + +;> + + )> + + + + ) + (T + + + )> + > + +> + + + + + + + + + > + > + )) + + ) + (T )>> + 1>>) + (T + > + > + )) + + ) + (T )>> + 2> 1>>)> diff --git a/magrathea.zabstr b/magrathea.zabstr new file mode 100644 index 0000000..b7a243e --- /dev/null +++ b/magrathea.zabstr @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/magrathea.zap b/magrathea.zap new file mode 100644 index 0000000..882fdad --- /dev/null +++ b/magrathea.zap @@ -0,0 +1,50 @@ + + + .FUNCT HATCH-F:ANY:0:0 + EQUAL? HERE,HATCHWAY,RAMP /?CCL3 + EQUAL? PRSA,V?RUB /?CTR2 + EQUAL? PRSA,V?EXAMINE,V?CLOSE,V?OPEN \?CCL3 +?CTR2: CALL2 NOT-HERE,HATCH + RSTACK +?CCL3: EQUAL? PRSA,V?THROUGH,V?OPEN \FALSE + FSET? HATCH,OPENBIT /FALSE + PRINTR "The hatch appears to be jammed shut." + + + .FUNCT FALL-OFF-RAMP:ANY:0:0 + PRINTI "You fall off the edge of the ramp onto the surface of Magrathea.It's not a long way down and the ground breaks your fall, but nevertheless you die." + LESS? MOVES,10 \?CCL3 + PRINTI " This is something which is going to happen to you quite a lot, so you might as well get used to it." + JUMP ?CND1 +?CCL3: PRINTI " You might not think it's very fair, but nobody said the Galaxy was a very fair place anyway." +?CND1: ICALL1 JIGS-UP + RFALSE + + + .FUNCT WANDER-AROUND:ANY:0:0 + PRINTI "You wander gloomily around for a while, ruining your shoes, becoming thoroughly depressed, and ending up where you started." + CRLF + RFALSE + + + .FUNCT DEATH-BY-BLUBBER:ANY:0:0 + PRINTI "You fall into the new-ish, nasty-ish crater, where the blubber and blood liberally spattered around break your fall. Unfortunately, however, on becoming aware of your surroundings, you die of disgust." + CRLF + ICALL1 JIGS-UP + RFALSE + + + .FUNCT SLOPE-SCRAMBLE:ANY:0:0 + PRINTI "You plunge recklessly over the edge of the " + PRINTD HERE + PRINTI ", ruining your shoes in your desperate scrabble for a foothold. Fortunately for you, you regain your footing and scramble breathlessly back to level ground again." + CRLF + RFALSE + + + .FUNCT DOWN-TO-CRATER:ANY:0:0 + PRINTI "You hop over the teeth and scramble down to the crater floor" + MOVE WINNER,WHALE-CRATER + RTRUE + + .ENDI diff --git a/magrathea.zil b/magrathea.zil new file mode 100644 index 0000000..73327af --- /dev/null +++ b/magrathea.zil @@ -0,0 +1,251 @@ + + +;"Magrathea for + The Restaurant at the End of the Universe + (c) Copyright 1988 Infocom, Inc. All Rights Reserved." + +;"The rooms for Magrathea (Act 1)" + + + + + + + + ;"for debugging parser" + + +> + > + ) + ;( + > + ) + ( + >> + )>> + + +;"If COLDBIT is set Player dies of cold after 8 moves unless has dressing +gown on." + + + + ) + ()> + + > + + + + + + > + + + + + + > + + + > + + + + + + + + + + + + + > + + + + \ No newline at end of file diff --git a/misc.zabstr b/misc.zabstr new file mode 100644 index 0000000..6bceca0 --- /dev/null +++ b/misc.zabstr @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> + + + + +> + + +> +>> + + + + + + +> + \ No newline at end of file diff --git a/misc.zap b/misc.zap new file mode 100644 index 0000000..18c9df9 --- /dev/null +++ b/misc.zap @@ -0,0 +1,403 @@ + + + .FUNCT GO:ANY:0:0 +?FCN: GETB 0,33 >SCREENWIDTH + LESS? SCREENWIDTH,64 \?CND1 + PRINTI "[The screen is too narrow.]" + CRLF + QUIT +?CND1: CLEAR -1 + ICALL1 INIT-STATUS-LINE + ICALL1 V-VERSION + ICALL1 INTRO + ICALL1 MAIN-LOOP + JUMP ?FCN + + + .FUNCT INTRO:ANY:0:0 + CRLF + RTRUE + + + .FUNCT PRINT-THE:ANY:1:1,OBJ + EQUAL? OBJ,TURN \?CCL3 + LESS? 1,P-NUMBER \?CCL3 + PRINTC 32 + PRINTN P-NUMBER + PRINTI " minutes" + RTRUE +?CCL3: EQUAL? OBJ,WINDOW \?CCL7 + PRINTI " the window" + RTRUE +?CCL7: ICALL2 THE?,OBJ + PRINTC 32 + PRINTD OBJ + RTRUE + + + .FUNCT THE?:ANY:1:1,OBJ + FSET? OBJ,NARTICLEBIT /?CND1 + IN? OBJ,ROOMS /?CTR4 + FSET? OBJ,SEENBIT \?CCL5 +?CTR4: PRINTI " the" + JUMP ?CND1 +?CCL5: FSET? OBJ,VOWELBIT \?CCL9 + PRINTI " an" + JUMP ?CND1 +?CCL9: PRINTI " a" +?CND1: FSET OBJ,SEENBIT + RTRUE + + + .FUNCT START-SENTENCE:ANY:1:1,OBJ + ICALL2 THIS-IS-IT,OBJ + EQUAL? OBJ,PLAYER \?CCL3 + PRINTI "You" + RTRUE +?CCL3: EQUAL? OBJ,HANDS \?CCL5 + PRINTI "Your hand" + RTRUE +?CCL5: EQUAL? OBJ,HEAD \?CCL7 + PRINTI "Your head" + RTRUE +?CCL7: EQUAL? OBJ,EYES \?CCL9 + PRINTI "Your eyes" + RTRUE +?CCL9: EQUAL? OBJ,TEETH \?CCL11 + PRINTI "Your teeth" + RTRUE +?CCL11: EQUAL? OBJ,EARS \?CND1 + PRINTI "Your ears" + RTRUE +?CND1: FSET? OBJ,NARTICLEBIT /?CND13 + FSET? OBJ,SEENBIT \?CCL17 + PRINTI "The " + JUMP ?CND13 +?CCL17: FSET? OBJ,VOWELBIT \?CCL20 + PRINTI "An " + JUMP ?CND13 +?CCL20: PRINTI "A " +?CND13: FSET OBJ,SEENBIT + PRINTD OBJ + RTRUE + + + .FUNCT PRINTA:ANY:1:1,O + FSET? O,NARTICLEBIT /?CND1 + FSET? O,VOWELBIT \?CCL6 + PRINTI "an " + JUMP ?CND1 +?CCL6: PRINTI "a " +?CND1: PRINTD O + RTRUE + + + .FUNCT THIS-IS-IT:ANY:1:1,OBJ + EQUAL? OBJ,FALSE-VALUE,NOT-HERE-OBJECT,PLAYER /TRUE + EQUAL? OBJ,INTDIR,GLOBAL-HERE,ROOMS /TRUE + EQUAL? PRSA,V?WALK \?CND1 + EQUAL? OBJ,PRSO /TRUE +?CND1: FSET? OBJ,PERSONBIT /?CCL11 + FSET IT,TOUCHBIT + SET 'P-IT-OBJECT,OBJ + RTRUE +?CCL11: FSET? OBJ,FEMALEBIT \?CCL13 + FSET HER,TOUCHBIT + SET 'P-HER-OBJECT,OBJ + RTRUE +?CCL13: FSET? OBJ,PLURALBIT \?CCL15 + FSET THEM,TOUCHBIT + SET 'P-THEM-OBJECT,OBJ + RTRUE +?CCL15: FSET HIM,TOUCHBIT + SET 'P-HIM-OBJECT,OBJ + RTRUE + + + .FUNCT NO-PRONOUN?:ANY:1:2,OBJ,CAP + EQUAL? OBJ,PLAYER /FALSE + FSET? OBJ,PERSONBIT /?CCL5 + EQUAL? OBJ,P-IT-OBJECT \?CND1 + FSET? IT,TOUCHBIT \?CND1 + RFALSE +?CCL5: FSET? OBJ,FEMALEBIT \?CCL11 + EQUAL? OBJ,P-HER-OBJECT \?CND1 + FSET? HER,TOUCHBIT \?CND1 + RFALSE +?CCL11: FSET? OBJ,PLURALBIT \?CCL17 + EQUAL? OBJ,P-THEM-OBJECT \?CND1 + FSET? THEM,TOUCHBIT \?CND1 + RFALSE +?CCL17: EQUAL? OBJ,P-HIM-OBJECT \?CND1 + FSET? HIM,TOUCHBIT /FALSE +?CND1: ZERO? CAP \?CCL28 + ICALL2 PRINT-THE,OBJ + JUMP ?CND26 +?CCL28: EQUAL? CAP,1,TRUE-VALUE \?CND26 + ICALL2 START-SENTENCE,OBJ +?CND26: ICALL2 THIS-IS-IT,OBJ + RTRUE + + + .FUNCT HE-SHE-IT:ANY:1:3,OBJ,CAP,VERB + CALL NO-PRONOUN?,OBJ,CAP + ZERO? STACK \?CND1 + FSET? OBJ,PERSONBIT /?CCL5 + ZERO? CAP \?CCL8 + PRINTI " it" + JUMP ?CND1 +?CCL8: EQUAL? CAP,1,TRUE-VALUE \?CND1 + PRINTI "It" + JUMP ?CND1 +?CCL5: EQUAL? OBJ,PLAYER \?CCL11 + ZERO? CAP \?CCL14 + PRINTI " you" + JUMP ?CND1 +?CCL14: EQUAL? CAP,1,TRUE-VALUE \?CND1 + PRINTI "You" + JUMP ?CND1 +?CCL11: FSET? OBJ,FEMALEBIT \?CCL17 + ZERO? CAP \?CCL20 + PRINTI " she" + JUMP ?CND1 +?CCL20: EQUAL? CAP,1,TRUE-VALUE \?CND1 + PRINTI "She" + JUMP ?CND1 +?CCL17: ZERO? CAP \?CCL24 + PRINTI " he" + JUMP ?CND1 +?CCL24: EQUAL? CAP,1,TRUE-VALUE \?CND1 + PRINTI "He" +?CND1: ZERO? VERB /FALSE + PRINTC 32 + EQUAL? OBJ,PLAYER \?CCL31 + EQUAL? VERB,STR?61 \?CCL35 + PRINTI "are" + RTRUE +?CCL35: EQUAL? VERB,STR?62 \?CCL37 + PRINTI "have" + RTRUE +?CCL37: EQUAL? VERB,STR?63 \?CCL39 + PRINTI "try" + RTRUE +?CCL39: EQUAL? VERB,STR?64 \?CCL41 + PRINTI "empty" + RTRUE +?CCL41: PRINT VERB + RTRUE +?CCL31: PRINT VERB + EQUAL? VERB,STR?65,STR?66,STR?67 /?CCL43 + EQUAL? VERB,STR?63,STR?64 \?CND42 +?CCL43: PRINTC 101 +?CND42: EQUAL? VERB,STR?61,STR?62 /FALSE + PRINTC 115 + RTRUE + + + .FUNCT HIM-HER-IT:ANY:1:3,OBJ,CAP,POSSESS? + CALL NO-PRONOUN?,OBJ,CAP + ZERO? STACK /?CCL3 + ZERO? POSSESS? /TRUE + PRINTI "'s" + RTRUE +?CCL3: FSET? OBJ,PERSONBIT /?CCL7 + ZERO? CAP \?CCL10 + PRINTI " it" + JUMP ?CND8 +?CCL10: PRINTI "It" +?CND8: ZERO? POSSESS? /TRUE + PRINTC 115 + RTRUE +?CCL7: EQUAL? OBJ,PLAYER \?CCL14 + ZERO? CAP \?CCL17 + PRINTI " you" + JUMP ?CND15 +?CCL17: PRINTI "You" +?CND15: ZERO? POSSESS? /TRUE + PRINTC 114 + RTRUE +?CCL14: FSET? OBJ,PLURALBIT \?CCL21 + ZERO? POSSESS? /?CCL24 + ZERO? CAP \?CCL27 + PRINTI " their" + RTRUE +?CCL27: PRINTI "Their" + RTRUE +?CCL24: ZERO? CAP \?CCL30 + PRINTI " them" + RTRUE +?CCL30: PRINTI "Them" + RTRUE +?CCL21: FSET? OBJ,FEMALEBIT \?CCL32 + ZERO? CAP \?CCL35 + PRINTI " her" + RTRUE +?CCL35: PRINTI "Her" + RTRUE +?CCL32: ZERO? POSSESS? /?CCL38 + ZERO? CAP \?CCL41 + PRINTI " his" + RTRUE +?CCL41: PRINTI "His" + RTRUE +?CCL38: ZERO? CAP \?CCL44 + PRINTI " him" + RTRUE +?CCL44: PRINTI "Him" + RTRUE + + + .FUNCT I-PROMPT:ANY:0:1,GARG + EQUAL? GARG,G-DEBUG /FALSE + DEC 'P-PROMPT + RFALSE + + + .FUNCT DONT-F:ANY:0:0 + EQUAL? PRSA,V?PANIC \?CCL3 + RANDOM 2 + EQUAL? STACK,1 \?CCL6 + PRINTR "Very clever. It looks as if there's a lot you should be panicking about." +?CCL6: PRINTR "Why not? Your position appears quite hopeless." +?CCL3: EQUAL? PRSA,V?WAIT-UNTIL,V?WAIT-FOR \?CCL8 + PRINTR "Time doesn't pass..." +?CCL8: EQUAL? PRSA,V?TAKE \?CCL10 + PRINTR "Not taken." +?CCL10: PRINTR "Not done." + + + .FUNCT NOT-FOUND:ANY:1:1,OBJ,WT + EQUAL? PRSA,V?WALK-TO \?CND1 + SET 'WT,TRUE-VALUE +?CND1: ZERO? WT \?CCL5 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTI "(Y" + JUMP ?CND3 +?CCL5: PRINTI "But y" +?CND3: PRINTI "ou haven't found" + ICALL2 HIM-HER-IT,OBJ + PRINTI " yet!" + ZERO? WT \?CND6 + PRINTC 41 +?CND6: CRLF + RTRUE + + + .FUNCT VERB-PRINT:ANY:0:1,GERUND,TMP + GET PARSE-RESULT,1 >TMP + ZERO? TMP \?CCL3 + ZERO? GERUND \?CCL6 + PRINTI "tell" + RTRUE +?CCL6: PRINTI "walk" + JUMP ?CND1 +?CCL3: ZERO? GERUND /?CCL8 + GET TMP,0 >TMP + EQUAL? TMP,W?L \?CCL12 + PRINTB W?LOOK + JUMP ?CND1 +?CCL12: EQUAL? TMP,W?X \?CCL14 + PRINTB W?EXAMINE + JUMP ?CND1 +?CCL14: EQUAL? TMP,W?Z \?CCL16 + PRINTB W?WAIT + JUMP ?CND1 +?CCL16: ZERO? GERUND /?CCL18 + EQUAL? TMP,W?BATHE \?CCL21 + PRINTI "bath" + JUMP ?CND1 +?CCL21: EQUAL? TMP,W?DIG \?CCL23 + PRINTI "digg" + JUMP ?CND1 +?CCL23: EQUAL? TMP,W?GET \?CCL25 + PRINTI "gett" + JUMP ?CND1 +?CCL25: PRINTB TMP + JUMP ?CND1 +?CCL18: PRINTB TMP + JUMP ?CND1 +?CCL8: ICALL2 WORD-PRINT,TMP +?CND1: ZERO? GERUND /FALSE + PRINTI "ing?" + RTRUE + + + .FUNCT NOT-IT:ANY:1:1,WHO + EQUAL? WHO,P-HER-OBJECT \?CCL3 + FCLEAR HER,TOUCHBIT + RTRUE +?CCL3: EQUAL? WHO,P-HIM-OBJECT \?CCL5 + FCLEAR HIM,TOUCHBIT + RTRUE +?CCL5: EQUAL? WHO,P-THEM-OBJECT \?CCL7 + FCLEAR THEM,TOUCHBIT + RTRUE +?CCL7: EQUAL? WHO,P-IT-OBJECT \FALSE + FCLEAR IT,TOUCHBIT + RTRUE + + + .FUNCT CAPITAL-NOUN?:ANY:1:1,WRD,?TMP1 + CALL2 TITLE-NOUN?,WRD >?TMP1 + ZERO? ?TMP1 /?PRD3 + RETURN ?TMP1 +?PRD3: EQUAL? WRD,W?FORD,W?ZAPHOD,W?BEEBLEBROX /TRUE + EQUAL? WRD,W?TRILLIAN,W?TRICIA,W?MCMILLAN /TRUE + EQUAL? WRD,W?MARV,W?MARVIN,W?PREFECT /TRUE + RFALSE + + + .FUNCT TITLE-NOUN?:ANY:1:1,WRD + EQUAL? WRD,W?MR,W?MS /TRUE + EQUAL? WRD,W?MISTER,W?MISS,W?SIR /TRUE + RFALSE + + + .FUNCT QUEUE:ANY:2:2,RTN,TICK,CINT + CALL2 INT,RTN >CINT + PUT CINT,C-TICK,TICK + PUT CINT,C-ENABLED?,1 + RETURN CINT + + + .FUNCT INT:ANY:1:5,RTN,DEMON,E,C,INT + ADD C-TABLE,C-TABLELEN >E + ADD C-TABLE,C-INTS >C +?PRG1: EQUAL? C,E \?CCL5 + SUB C-INTS,C-INTLEN >C-INTS + ADD C-TABLE,C-INTS >INT + PUT INT,C-RTN,RTN + RETURN INT +?CCL5: GET C,C-RTN + EQUAL? STACK,RTN \?CND3 + RETURN C +?CND3: ADD C,C-INTLEN >C + JUMP ?PRG1 + + + .FUNCT CLOCKER:ANY:0:0,C,E,TICK,FLG,VAL + ZERO? CLOCK-WAIT /?CND1 + SET 'CLOCK-WAIT,FALSE-VALUE + RFALSE +?CND1: INC 'MOVES + ADD C-TABLE,C-INTS >C + ADD C-TABLE,C-TABLELEN >E +?PRG3: EQUAL? C,E \?CCL7 + RETURN FLG +?CCL7: GET C,C-ENABLED? + ZERO? STACK /?CND5 + GET C,C-TICK >TICK + ZERO? TICK /?CND5 + SUB TICK,1 + PUT C,C-TICK,STACK + GRTR? TICK,1 /?CND5 + GET C,C-RTN + CALL STACK >VAL + ZERO? VAL /?CND5 + ZERO? FLG /?CCL16 + EQUAL? VAL,M-FATAL \?CND5 +?CCL16: SET 'FLG,VAL +?CND5: ADD C,C-INTLEN >C + JUMP ?PRG3 + + .ENDI diff --git a/misc.zil b/misc.zil new file mode 100644 index 0000000..2365c23 --- /dev/null +++ b/misc.zil @@ -0,0 +1,371 @@ +"MISC for MILLIWAYS +Copyright (c) 1988 Infocom, Inc. All rights reserved." + + + +> + + + )> + + + + + + > + + + > + + > + ) + ( + ) + ;( + > + + ) + (T + + )>> + +> + > + + > + ) + ( + ) + (T )>)> + + )>> + + + ) + ( ) + ( ) + ( ) + ( ) + ( )> + > + > + > + ) + ( + ) + (T )>)> + + )> + > + + > T) + ( ) + (T )> + > + + + +; >> + + + +;> + + ,NOT-HERE-OBJECT ,PLAYER> + ) + ( + ) + ( <==? .OBJ ,PRSO>> + )> + > + ;> + ;> + ;"to cause pronoun 'it' in output" + ) + ( + + ) + ( + + ) + (T + + )> + > + + + ) + (> + + > + )>) + ( + + > + )>) + ( + + > + )>) + (T + + > + )>)> + ) + ( )> + + > + +)) ;"He/he/+verb" + + T) + (> + ) + ( )>) + (<==? .OBJ ,PLAYER> + ) + ( )>) + ( + ) + ( )>) + ;( + ) + ( )>) + (T + ) + ( )>)> + > + + + ;> + ) + (<=? .VERB "has">) + (<=? .VERB "tri">) + (<=? .VERB "empti">) + (T )>) + (T + + + > + )> + > + )>)>)>> + +)) ;"His/his/him" + + > )>) + (> + ) (T )> + > )>) + (<==? .OBJ ,PLAYER> + ) (T )> + > )>) + ( + > + ) + (T )>) + (T + ) + (T )>)>) + ( + ) (T )>) + (T + > + ) + (T )>) + (T + ) + (T )>)>)> + > + + + + + + + + + + +)) + )> + > + > + + + > + ) + (T + )>) + ;( + > + + ) + ( + ) + ( + ) + ;( + > + > + + ) + (T + )>> + +)) + + )> + + + ) + (T )> + + + )> + + > + +) "AUX" TMP) + > + + ) + (T )>) + ( ;<0? >> + > + ) + (<==? .TMP ,W?X> ) + (<==? .TMP ,W?Z> ) + ( + ) + (<==? .TMP ,W?DIG> ) + (<==? .TMP ,W?GET> ) + (T )>) + (T )>) + (T + + ;)> + )>> + + + ) + ( + ) + ( + ) + ( + )>> + + + + + >>> + + + + ;>> + +"CLOCK for MILLIWAYS +Copyright (C) 1988 Infocom, Inc. All rights reserved." + +"List of queued routines: +" + + + + +> + + + + ;"and one for good measure" + +> + +>> + + + + + +) + > ,C-TICK .TICK> + + .CINT> + +) E C INT) + ;#DECL ((RTN) ATOM (DEMON) (E C INT) ) + > + > + + > + ;>> + > + + ) + ( .RTN> )> + >>> + +; ,C-ENABLED?>>>> + +;> + > ) + (T )>> + +> + +) VAL) + ;#DECL ((C E) (TICK) FIX ;(FLG) ;) + > )> + > + > + > + + ) + (>> + > + > + > + > + >>> + + <==? .VAL ,M-FATAL>> + )>)>)>)> + >>> diff --git a/parser.zabstr b/parser.zabstr new file mode 100644 index 0000000..1339073 --- /dev/null +++ b/parser.zabstr @@ -0,0 +1,231 @@ +)("UNDO" T)("P-DEBUGGING-PARSER" T)( +"ONE-BYTE-PARTS-OF-SPEECH" %<>)("WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)( +"P-BE-VERB" T)) (("PLURAL" "DEFS" #WORD *03222663524*))> + + + + + + + + + + +> + +> >)> + + + + + + + + + + + + + + + + + + < +COND (>> .EXPR1)>) ( .EXPR2)>> +> +> +> + +>> +> +> +> +> +> +> +> + + + + <> <> <> <>>> + + + + + + + + +> +> +> + + +>> +> + + + + + + + > > +> < +ROUTINE SCRIPT-INBUF>> + >> + + + >> + < +VOC "SHE"> < +VOC "WEREN"> >> + >> + +> + +> +> +> + + +> +>> + + +> > + + + +> + + + + +> +> + + + + +> + + +>> +>> + + +> +> +> + + + +> +> +> + +> + + + + + > < +IFN-P-APOSTROPHE-BREAKS-WORDS > < +IFN-P-APOSTROPHE-BREAKS-WORDS > < +IFN-P-APOSTROPHE-BREAKS-WORDS > < +IFN-P-APOSTROPHE-BREAKS-WORDS > < +IFN-P-APOSTROPHE-BREAKS-WORDS > < +IFN-P-APOSTROPHE-BREAKS-WORDS > < +IFN-P-APOSTROPHE-BREAKS-WORDS > < +IFN-P-APOSTROPHE-BREAKS-WORDS >>>> > > > < +IFN-P-BE-VERB > > > > > > < +IFN-P-BE-VERB > > < +IFN-P-BE-VERB > > > > > < +IFN-P-BE-VERB > > > >>> > > > < +IFN-P-BE-VERB > > > < +VOC "T"> > < +IFN-P-BE-VERB > > > > > < +IFN-P-BE-VERB > > > < +IFN-P-BE-VERB > > > > >>>) (T > +> > > < +IFN-P-BE-VERB > > < +VOC "HAVEN'T"> > < +IFN-P-BE-VERB > > < +IFN-P-BE-VERB > > < +IFN-P-BE-VERB > > > > > < +VOC "WE'LL"> > > < +IFN-P-BE-VERB > >>>)> > > < +IFN-P-BE-VERB > > > > > > > > > < +IFN-P-BE-VERB >>>> + >> > +> > > >> ) (T )>) (T ) (T )> < +TELL " encyclopedia.]" CR>)>> > 10 +) (T 2)>)) + ) (T +)>>>> + + > + +> +> + + + \ No newline at end of file diff --git a/parser.zap b/parser.zap new file mode 100644 index 0000000..be7459b --- /dev/null +++ b/parser.zap @@ -0,0 +1,1563 @@ + + .SEGMENT "0" + + + .FUNCT INIT-STATUS-LINE:ANY:0:0 + SPLIT 1 + SCREEN S-WINDOW + CURSET 1,1 + HLIGHT H-INVERSE + ERASE 1 + HLIGHT H-NORMAL + SCREEN S-TEXT + RTRUE + + + .FUNCT UPDATE-STATUS-LINE:ANY:0:0,?TMP2,?TMP1 + SCREEN S-WINDOW + HLIGHT H-INVERSE + EQUAL? HERE,OLD-HERE /?CND1 + SET 'OLD-HERE,HERE + CURSET 1,1 + ERASE 1 + CURSET 1,1 + PRINTD HERE +?CND1: GETB 0,33 >?TMP1 + CALL2 DIGITS,SCORE >?TMP2 + CALL2 DIGITS,MOVES + ADD ?TMP2,STACK + SUB ?TMP1,STACK + CURSET 1,STACK + PRINTN SCORE + PRINTC 47 + PRINTN MOVES + HLIGHT H-NORMAL + SCREEN S-TEXT + RTRUE + + + .FUNCT DIGITS:ANY:1:1,N,D + SET 'D,1 + LESS? N,0 \?PRG3 + INC 'D + SUB 0,N >N +?PRG3: DIV N,10 >N + ZERO? N /?REP4 + INC 'D + JUMP ?PRG3 +?REP4: RETURN D + + + .FUNCT READ-INPUT:ANY:0:0 + PRINTC 62 + PUTB P-INBUF,1,0 + ZERO? DEMO-VERSION? /?CCL4 + ICALL READ-DEMO,P-INBUF,P-LEXV + JUMP ?CND2 +?CCL4: READ P-INBUF,P-LEXV +?CND2: CALL1 SCRIPT-INBUF + RSTACK + + + .FUNCT SCRIPT-INBUF:ANY:0:0,BUF,CNT,N,CHR + GETB P-INBUF,1 >N + DIROUT D-SCREEN-OFF + ADD 1,P-INBUF >BUF +?PRG1: IGRTR? 'CNT,N /?REP2 + GETB BUF,CNT >CHR + LESS? CHR,97 /?CCL8 + GRTR? CHR,122 /?CCL8 + SUB CHR,32 + PRINTC STACK + JUMP ?PRG1 +?CCL8: PRINTC CHR + JUMP ?PRG1 +?REP2: CRLF + DIROUT D-SCREEN-ON + RTRUE + + + .FUNCT SPECIAL-CONTRACTION?:ANY:1:1,PTR + RFALSE + + + .FUNCT EXPAND-BE-CONTRACTIONS:ANY:0:0,LEN,PTR,OPTR,N,WD,SPWD,L,?TMP1 + GETB P-LEXV,P-LEXWORDS >LEN + SET 'PTR,P-LEXV+2 + SET 'OPTR,PTR + SET 'L,LEN +?PRG1: SET 'SPWD,FALSE-VALUE + DLESS? 'L,0 \?CCL5 + PUTB P-LEXV,P-LEXWORDS,LEN + RTRUE +?CCL5: GET PTR,0 >WD + ZERO? WD /?CCL7 + GET PTR,P-LEXELEN + EQUAL? STACK,W?APOSTROPHE \?CCL7 + GET P-QA-WORDS1,0 + INTBL? WD,P-QA-WORDS1+2,STACK >N \?PRD12 + SUB N,P-QA-WORDS1 + DIV STACK,2 >N + GET P-QA-WORDS2,N >?TMP1 + GET PTR,4 + EQUAL? ?TMP1,STACK /?CTR6 +?PRD12: CALL2 SPECIAL-CONTRACTION?,PTR >SPWD + ZERO? SPWD /?CCL7 +?CTR6: ZERO? SPWD /?CCL17 + PUSH 8 + JUMP ?CND15 +?CCL17: PUSH 4 +?CND15: ADD PTR,STACK >?TMP1 + MUL L,4 + COPYT ?TMP1,PTR,STACK + ZERO? SPWD /?CCL20 + PUT PTR,0,SPWD + DEC 'L + DEC 'LEN + JUMP ?CND18 +?CCL20: GET P-QB-WORDS-1,N >WD + PUT PTR,0,WD + GET P-QB-WORDS-2,N >WD + PUT PTR,P-LEXELEN,WD +?CND18: DEC 'L + DEC 'LEN + JUMP ?PRG1 +?CCL7: EQUAL? WD,W?APOSTROPHE \?CCL22 + GET PTR,P-LEXELEN + EQUAL? STACK,W?S /?CCL22 + EQUAL? OPTR,PTR /?CCL22 + SUB PTR,4 >WD + ZERO? WD /?CCL22 + GETB WD,2 + ADD -1,STACK >?TMP1 + GETB WD,3 + ADD ?TMP1,STACK + GETB P-INBUF,STACK + EQUAL? STACK,115,122 \?CCL22 + SUB PTR,P-LEXV + DIV STACK,2 + ADD P-LEXELEN,STACK + ICALL MAKE-ROOM-FOR-TOKENS,1,P-LEXV,STACK + PUT PTR,P-LEXELEN,W?S + INC 'L + INC 'LEN + JUMP ?PRG1 +?CCL22: ADD PTR,4 >PTR + JUMP ?PRG1 + + + .FUNCT TELL-THE:ANY:1:1,OBJ,TMP + EQUAL? OBJ,PLAYER \?CCL3 + PRINTI "you" + RTRUE +?CCL3: CALL2 GET-OWNER,OBJ >TMP + ZERO? TMP /?CCL6 + EQUAL? TMP,PLAYER \?CCL9 + PRINTI "your " + JUMP ?CND4 +?CCL9: EQUAL? TMP,OBJ /?CND4 + ICALL2 TELL-THE,TMP + PRINTI "'s " + JUMP ?CND4 +?CCL6: FSET? OBJ,NARTICLEBIT /?CND4 + PRINTI "the " +?CND4: PRINTD OBJ + RTRUE + + + .FUNCT TELL-CTHE:ANY:1:1,OBJ,TMP + EQUAL? OBJ,PLAYER \?CCL3 + PRINTI "You" + RTRUE +?CCL3: CALL2 GET-OWNER,OBJ >TMP + ZERO? TMP /?CCL6 + EQUAL? TMP,PLAYER \?CCL9 + PRINTI "Your " + JUMP ?CND4 +?CCL9: EQUAL? TMP,OBJ /?CND4 + ICALL2 TELL-CTHE,TMP + PRINTI "'s " + JUMP ?CND4 +?CCL6: FSET? OBJ,NARTICLEBIT /?CND4 + PRINTI "The " +?CND4: PRINTD OBJ + RTRUE + + + .FUNCT NAKED-DIR?:ANY:0:0,WCNUM,LEN + GET TLEXV,0 >LEN + ZERO? LEN /FALSE + GET LEN,4 >WCNUM + ZERO? WCNUM \?CND3 + GET LEN,3 >LEN + GET LEN,4 >WCNUM +?CND3: BTST WCNUM,32768 /FALSE + BAND WCNUM,64 + BAND STACK,32767 + ZERO? STACK /FALSE + EQUAL? P-LEN,1 \?CCL11 + RETURN LEN +?CCL11: SUB TLEXV,P-LEXV + LESS? STACK,234 /?CND9 + RETURN LEN +?CND9: GET TLEXV,P-LEXELEN >WCNUM + EQUAL? WCNUM,W?COMMA,W?AND \?CND13 + RETURN LEN +?CND13: GET WCNUM,4 >WCNUM + BAND WCNUM,32768 + EQUAL? STACK,-32768 \FALSE + BAND WCNUM,32776 + BAND STACK,32767 + ZERO? STACK /FALSE + RETURN LEN + + + .FUNCT PARSER:ANY:0:0,OWINNER,LEN,N,PV,?TMP1 + ZERO? P-DBUG /?CND2 + PRINTI "[Reset of PMEM: " + PRINTN PMEM-WORDS-USED + PRINTI " words used.] +" +?CND2: ICALL1 PMEM-RESET + SET 'ERROR-PRIORITY,255 + SET 'ERROR-STRING,FALSE-VALUE + SET 'OWINNER,WINNER + GRTR? P-CONT,0 \?CCL6 + SET 'TLEXV,P-CONT + ZERO? VERBOSITY /?CND7 + EQUAL? PLAYER,WINNER \?CND7 + CRLF +?CND7: SET 'P-CONT,FALSE-VALUE + JUMP ?CND4 +?CCL6: SET 'WINNER,PLAYER + ZERO? P-OFLAG \?CND11 + GET OOPS-TABLE,O-PTR + ZERO? STACK \?CND11 + PUT OOPS-TABLE,O-END,FALSE-VALUE +?CND11: LOC WINNER + IN? STACK,ROOMS \?CND15 + LOC WINNER >HERE +?CND15: ZERO? LIT /?CCL18 + EQUAL? HERE,LIT /?CND17 + IN? LIT,HERE /?CND17 + CALL2 VISIBLE?,LIT + ZERO? STACK \?CND17 +?CCL18: CALL1 LIT? >LIT +?CND17: GET 0,8 + BTST STACK,F-REFRESH \?CND24 + ICALL1 V-$REFRESH +?CND24: ZERO? VERBOSITY /?CND26 + CRLF +?CND26: ICALL1 UPDATE-STATUS-LINE + ICALL1 READ-INPUT + GETB P-LEXV,P-LEXWORDS >LEN + ZERO? LEN /?CND29 + INTBL? W?QUOTE,P-LEXV+2,LEN,132 >N \?CND29 + ICALL FIX-QUOTATIONS,LEN,N +?CND29: ICALL1 EXPAND-BE-CONTRACTIONS + GETB P-LEXV,P-LEXWORDS >P-LEN + SET 'TLEXV,P-LEXV+2 +?CND4: GET TLEXV,0 + EQUAL? STACK,W?PERIOD,W?THEN \?CND33 + ADD TLEXV,4 >TLEXV + DEC 'P-LEN +?CND33: GET TLEXV,0 + EQUAL? STACK,W?YOU \?CND35 + ICALL1 IGNORE-FIRST-WORD +?CND35: GET TLEXV,0 + EQUAL? STACK,W?GO,W?TO \?CND37 + ICALL1 IGNORE-FIRST-WORD +?CND37: ZERO? P-LEN \?CND39 + ICALL1 BEG-PARDON + RFALSE +?CND39: CALL1 NAKED-DIR? >LEN + ZERO? LEN /?CCL43 + PUT STATE-STACK,0,20 + PUT DATA-STACK,0,20 + XPUSH LEN,DATA-STACK /?BOGUS44 +?BOGUS44: ICALL2 RED-SD,1 + SET 'P-CONT,FALSE-VALUE + SET 'P-OFLAG,0 + SET 'P-WORDS-AGAIN,1 + PUT OOPS-TABLE,O-END,FALSE-VALUE + PUT OOPS-TABLE,O-START,TLEXV + PUTB P-LEXV,P-LEXWORDS,P-LEN + COPYT P-LEXV,G-LEXV,LEXV-LENGTH-BYTES + COPYT P-INBUF,G-INBUF,61 + PUT PARSE-RESULT,13,0 + DEC 'P-LEN + LESS? 0,P-LEN \TRUE + ADD TLEXV,4 >TLEXV + GET TLEXV,0 >LEN + ZERO? LEN /TRUE + GET LEN,4 >LEN + ZERO? LEN /TRUE + BAND LEN,32768 + EQUAL? STACK,-32768 \TRUE + BAND LEN,32776 + BAND STACK,32767 + ZERO? STACK /TRUE + SET 'P-WORDS-AGAIN,P-WORD-NUMBER + DLESS? 'P-LEN,1 /TRUE + ADD TLEXV,4 >P-CONT + RTRUE +?CCL43: GET TLEXV,0 + EQUAL? STACK,W?OOPS,W?O \?CCL55 + CALL2 DO-OOPS,OWINNER + ZERO? STACK \?CND41 + RFALSE +?CCL55: ZERO? P-OFLAG \?CND41 + LESS? P-CONT,1 \?CND41 + PUT OOPS-TABLE,O-END,FALSE-VALUE +?CND41: SET 'P-CONT,FALSE-VALUE + GET TLEXV,0 + EQUAL? STACK,W?AGAIN,W?G \?CCL63 + CALL2 DO-AGAIN,OWINNER + ZERO? STACK \?CND61 + RFALSE +?CCL63: PUTB P-LEXV,P-LEXWORDS,P-LEN + COPYT P-LEXV,G-LEXV,LEXV-LENGTH-BYTES + COPYT P-INBUF,G-INBUF,61 + PUT OOPS-TABLE,O-START,TLEXV + PUT OOPS-TABLE,O-LENGTH,P-LEN + GET OOPS-TABLE,O-END + ZERO? STACK \?CND61 + GETB P-LEXV,P-LEXWORDS + MUL 4,STACK >LEN + DEC 'LEN + GETB TLEXV,LEN >?TMP1 + DEC 'LEN + GETB TLEXV,LEN + ADD ?TMP1,STACK + PUT OOPS-TABLE,O-END,STACK +?CND61: SET 'P-WON,FALSE-VALUE + SET 'P-WALK-DIR,FALSE-VALUE + CALL2 PARSE-IT,FALSE-VALUE >PV +?PRG68: ZERO? PV \?CCL72 + CALL1 PRINT-PARSER-FAILURE >PV + JUMP ?PRG68 +?CCL72: EQUAL? PV,1 /FALSE + PUT OOPS-TABLE,O-PTR,FALSE-VALUE + GET PV,4 >PRSA + CALL1 GAME-VERB? + ZERO? STACK \?CND75 + SET 'P-OFLAG,0 +?CND75: GET PV,0 >LEN + EQUAL? LEN,W?TWICE,W?THRICE \?CND77 + GET OOPS-TABLE,O-START + INTBL? LEN,STACK,P-WORDS-AGAIN,132 >N \?CND77 + ICALL CHANGE-LEXV,N,W?ONCE + EQUAL? LEN,W?THRICE \?CCL83 + PUSH 2 + JUMP ?CND81 +?CCL83: PUSH 1 +?CND81: ICALL2 DO-IT-AGAIN,STACK + CALL2 PARSE-IT,FALSE-VALUE >PV + JUMP ?PRG68 +?CND77: GET GWIM-MSG,1 + ZERO? STACK /?CND84 + ICALL1 TELL-GWIM-MSG + PUT GWIM-MSG,1,0 +?CND84: GET GWIM-MSG,2 + ZERO? STACK /TRUE + PRINTI "[""" + GET GWIM-MSG,2 + ICALL2 NP-PRINT,STACK + PRINTI """ meaning " + GET GWIM-MSG,3 + ICALL2 TELL-THE,STACK + PRINTI "] +" + PUT GWIM-MSG,2,0 + RTRUE + + + .FUNCT GAME-VERB?:ANY:0:0 + GET GAME-VERB-TABLE,0 + INTBL? PRSA,GAME-VERB-TABLE+2,STACK /TRUE + EQUAL? PRSA,V?$UNRECORD /TRUE + EQUAL? PRSA,V?$RECORD,V?$COMMAND,V?$RANDOM /TRUE + RFALSE + + + .FUNCT RED-SD:ANY:0:2,N,TYP,V,SYN,NEW-OBJECT + SET 'V,W?WALK + PUT PARSE-RESULT,1,V + GET V,3 + GET STACK,2 + ADD STACK,2 >SYN + PUT PARSE-RESULT,3,SYN + GET SYN,0 + PUT PARSE-RESULT,4,STACK + PUT PARSE-RESULT,7,FALSE-VALUE + POP DATA-STACK + GETB STACK,6 >P-WALK-DIR + CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >NEW-OBJECT + PUT NEW-OBJECT,1,1 + PUT NEW-OBJECT,3,P-WALK-DIR + PUT PARSE-RESULT,5,NEW-OBJECT + RTRUE + + + .FUNCT P-P:ANY:1:1,X + CALL2 PMEM?,X + ZERO? STACK /?CCL3 + GETB X,1 + EQUAL? STACK,1 \?CCL6 + PRINTI "#ADJS[" + ICALL2 ADJS-PRINT,X + PRINTC 93 + RTRUE +?CCL6: GETB X,1 + EQUAL? STACK,2 \?CCL8 + PRINTI "#NP[" + ICALL2 NP-PRINT,X + PRINTC 93 + RTRUE +?CCL8: GETB X,1 + EQUAL? STACK,3 \?CCL10 + PRINTI "#NPP[" +?PRG11: GET X,2 + ZERO? STACK /?CND13 + GET X,2 + ICALL2 P-P,STACK + PRINTC 32 +?CND13: GET X,3 + ZERO? STACK /?CND15 + GET X,3 + ICALL2 P-P,STACK + PRINTC 32 +?CND15: GET X,1 >X + ZERO? X \?PRG11 + PRINTC 93 + RTRUE +?CCL10: GETB X,1 + EQUAL? STACK,4 \?CCL20 + PRINTI "#NOUN-PHRASE[" + ICALL2 NP-PRINT,X + PRINTC 93 + RTRUE +?CCL20: GETB X,1 + EQUAL? STACK,5 /?CTR21 + GETB X,1 + EQUAL? STACK,6 \?CCL22 +?CTR21: PRINTI "#PP[" + PRINTI "W?" + GET X,1 + PRINTB STACK + PRINTC 32 + GET X,2 + ICALL2 P-P,STACK + PRINTC 93 + RTRUE +?CCL22: PRINTI "#PMEM[]" + RTRUE +?CCL3: EQUAL? X,PARSE-RESULT \?CCL26 + PRINTI "RESULT" + RTRUE +?CCL26: LESS? VOCAB,PRSTBL \?PRD30 + LESS? VOCAB,X \?PRD30 + LESS? X,PRSTBL /?CTR27 +?PRD30: LESS? 0,VOCAB \?CCL28 + LESS? PRSTBL,0 \?CCL28 + LESS? VOCAB,X /?CTR27 + LESS? X,PRSTBL \?CCL28 +?CTR27: PRINTI "W?" + PRINTB X + RTRUE +?CCL28: PRINTN X + RTRUE + + + .FUNCT PARSE-IT:ANY:0:1,V,RES,NUM,W,SAV-LEXV,TMP,TV,T2,?TMP1 + SET 'SPLITS,0 + PUT SPLIT-STACK,0,0 + SET 'ERROR-PRIORITY,255 + PUT ERROR-ARGS,1,0 + SET 'P-OLEN,P-LEN + SET 'OTLEXV,TLEXV + SET 'W,WINNER + SET 'SAV-LEXV,TLEXV +?PRG1: INC 'NUM + ZERO? P-DBUG /?CND3 + PRINTI "[PASS " + PRINTN NUM + PRINTI "] +" +?CND3: ICALL2 BE-PATIENT,NUM + PUT STATE-STACK,0,20 + XPUSH 1,STATE-STACK /?BOGUS5 +?BOGUS5: PUT DATA-STACK,0,20 + ZERO? P-DBUG /?CND6 + PRINTI "[Reset of PMEM: " + PRINTN PMEM-WORDS-USED + PRINTI " words used.] +" +?CND6: ICALL1 PMEM-RESET + SET 'P-WORD-NUMBER,0 + SET 'TLEXV,SAV-LEXV + SET 'P-LEN,P-OLEN + SET 'WINNER,W + COPYT GWIM-MSG,0,8 + COPYT PARSE-RESULT,0,PARSE-RESULT-LEN + CALL2 PARSE-SENTENCE,PARSE-RESULT >RES + EQUAL? RES,PARSER-RESULT-AGAIN \?CCL10 + PUT SPLIT-STACK,0,0 + SET 'ERROR-PRIORITY,255 + SET 'P-OLEN,P-LEN + SET 'SAV-LEXV,TLEXV + JUMP ?PRG1 +?CCL10: LESS? RES,PARSER-RESULT-WON \?REP2 + GET SPLIT-STACK,0 + ZERO? STACK /?REP2 + ZERO? RES /?REP2 +?PRG16: GET SPLIT-STACK,0 >T2 + SUB T2,1 + GET SPLIT-STACK,STACK >TV + BAND TV,65280 + ZERO? STACK /?CCL20 + GET SPLIT-STACK,T2 >TMP + BTST TMP,32768 /?CCL23 + ADD TV,6 + CALL GET-TERMINAL-ACTION,TMP,STACK,1 >TV + JUMP ?CND21 +?CCL23: BAND TMP,32767 >?TMP1 + ADD TV,6 + CALL GET-TERMINAL-ACTION,?TMP1,STACK,0 >TV +?CND21: ZERO? TV \?CCL26 + SUB T2,2 >T2 + PUT SPLIT-STACK,0,T2 + JUMP ?CND18 +?CCL26: SUB T2,1 + PUT SPLIT-STACK,STACK,TV + JUMP ?REP17 +?CCL20: GET SPLIT-STACK,T2 >TMP + EQUAL? TMP,TV \?CCL28 + SUB T2,2 >T2 + PUT SPLIT-STACK,0,T2 +?CND18: ZERO? T2 \?PRG16 +?REP17: GET SPLIT-STACK,0 + ZERO? STACK /?REP2 + ZERO? P-DBUG /?PRG1 + PRINTI "[Splits left (SPLIT ptr = " + GET SPLIT-STACK,0 + PRINTN STACK + PRINTI "), trying again...] +" + JUMP ?PRG1 +?CCL28: ADD 1,TMP + PUT SPLIT-STACK,T2,STACK + JUMP ?REP17 +?REP2: ZERO? P-RESPONDED /?CND35 + SUB 0,NUM + ICALL2 BE-PATIENT,STACK +?CND35: EQUAL? RES,PARSER-RESULT-WON \?CCL39 + RETURN PARSER-RESULT +?CCL39: ZERO? RES /TRUE + RFALSE + + + .FUNCT PARSE-SENTENCE:ANY:1:1,PR,SPLIT-NUM,RES,WCN,CURRENT-TOKEN,OLD-WCN,CAV,OFFS,T2,CURRENT-ACTION,REDUCTION,N,?TMP1 + SET 'SPLIT-NUM,-1 + GET TLEXV,0 >CURRENT-TOKEN + CATCH >PARSE-SENTENCE-ACTIVATION + ZERO? CURRENT-TOKEN \?CND1 + CALL2 UNKNOWN-WORD,TLEXV >CURRENT-TOKEN + ZERO? CURRENT-TOKEN \?CND1 + RETURN PARSER-RESULT-DEAD +?CND1: ZERO? P-DBUG /?CND5 + PRINTI "[Next token: " + PRINTB CURRENT-TOKEN + PRINTI "; WCN " + GET CURRENT-TOKEN,4 + PRINTN STACK + PRINTI "] +" +?CND5: GET CURRENT-TOKEN,4 >WCN + SET 'OLD-WCN,WCN +?PRG7: EQUAL? CURRENT-TOKEN,W?S \?CND9 + SUB TLEXV,4 + GET STACK,0 + EQUAL? STACK,W?APOSTROPHE \?CND9 + SET 'OLD-WCN,32 + SET 'WCN,OLD-WCN +?CND9: ZERO? WCN \?CCL15 + GET CURRENT-TOKEN,3 + ZERO? STACK \?CCL18 + CALL BUZZER-WORD?,CURRENT-TOKEN,TLEXV + ZERO? STACK /?CND19 + MUL P-LEXELEN,P-WORD-NUMBER + ADD STACK,P-LEXSTART + PUT OOPS-TABLE,O-PTR,STACK + RETURN PARSER-RESULT-DEAD +?CND19: SET 'CAV,FALSE-VALUE + JUMP ?CND13 +?CCL18: GET CURRENT-TOKEN,3 >CURRENT-TOKEN + GET CURRENT-TOKEN,4 >OLD-WCN + SET 'WCN,OLD-WCN + JUMP ?PRG7 +?CCL15: BTST OLD-WCN,32768 /?CCL23 + SET 'OFFS,1 + JUMP ?CND21 +?CCL23: SET 'OFFS,0 +?CND21: CALL2 PEEK-PSTACK,STATE-STACK + GET ACTION-TABLE,STACK + GET STACK,0 + CALL GET-TERMINAL-ACTION,WCN,STACK,OFFS >CAV + ZERO? CAV /?CND24 + BAND WCN,32767 >?TMP1 + GET CAV,OFFS + BCOM STACK + BAND ?TMP1,STACK + ZERO? STACK /?CND24 + ADD CAV,6 + CALL GET-TERMINAL-ACTION,WCN,STACK,OFFS + ZERO? STACK /?CND24 + ADD SPLIT-NUM,2 >SPLIT-NUM + ADD SPLIT-NUM,1 + GET SPLIT-STACK,0 >T2 + GRTR? STACK,T2 \?CCL31 + INC 'SPLITS + INC 'T2 + LESS? T2,21 /?CND32 + ICALL1 P-NO-MEM-ROUTINE +?CND32: PUT SPLIT-STACK,0,T2 + PUT SPLIT-STACK,T2,CAV + INC 'T2 + LESS? T2,21 /?CND34 + ICALL1 P-NO-MEM-ROUTINE +?CND34: PUT SPLIT-STACK,0,T2 + BAND OLD-WCN,32768 + BOR STACK,WCN + PUT SPLIT-STACK,T2,STACK + ZERO? P-DBUG /?CND24 + PRINTI "[New split on a" + PRINTI " word" + PRINTI " (split #" + PRINTN SPLITS + PRINTI ") at depth " + DIV T2,2 + PRINTN STACK + PRINTI "; word class: " + PRINTN WCN + PRINTI "; left: " + BAND WCN,32767 >?TMP1 + GET CAV,OFFS + BCOM STACK + BAND ?TMP1,STACK + PRINTN STACK + PRINTI ".] +" + JUMP ?CND24 +?CCL31: SUB SPLIT-NUM,1 + GET SPLIT-STACK+2,STACK >CAV + ZERO? CAV /?CND24 + ZERO? P-DBUG /?CND40 + PRINTI "[Old split on a word (split #" + PRINTN SPLITS + PRINTI ") at depth " + DIV T2,2 + PRINTN STACK + PRINTI "; word class: " + PRINTN WCN + PRINTI "; using: " +?CND40: ZERO? P-DBUG /?CND24 + ZERO? CAV /?CCL46 + BAND WCN,32767 >?TMP1 + GET CAV,OFFS + BAND ?TMP1,STACK + PRINTN STACK + JUMP ?CND44 +?CCL46: PRINTN 0 +?CND44: PRINTI "] +" +?CND24: ZERO? CAV \?CND47 + ZERO? P-DBUG /?CND49 + PRINTI "[A parse loses.] +" +?CND49: RETURN PARSER-RESULT-FAILED +?CND47: ZERO? P-DBUG /?CND51 + BAND WCN,32767 >?TMP1 + GET CAV,OFFS + BCOM STACK + BAND ?TMP1,STACK + ZERO? STACK /?CND51 + PRINTI "[Current WCN is " + GET CAV,OFFS + BAND WCN,STACK + PRINTN STACK + PRINTC 93 + CRLF +?CND51: GET CAV,OFFS + BAND WCN,STACK >WCN +?CND13: ZERO? CAV /?PST56 + GET CAV,2 >CURRENT-ACTION + JUMP ?PRG58 +?PST56: SET 'CURRENT-ACTION,0 +?PRG58: ZERO? CAV /?CCL62 + BAND CURRENT-ACTION,65280 + ZERO? STACK /?CCL62 + ADD SPLIT-NUM,2 >SPLIT-NUM + ADD SPLIT-NUM,1 + GET SPLIT-STACK,0 >T2 + GRTR? STACK,T2 \?CCL67 + INC 'SPLITS + INC 'T2 + LESS? T2,21 /?CND68 + ICALL1 P-NO-MEM-ROUTINE +?CND68: PUT SPLIT-STACK,0,T2 + GETB CURRENT-ACTION,0 + PUT SPLIT-STACK,T2,STACK + INC 'T2 + LESS? T2,21 /?CND70 + ICALL1 P-NO-MEM-ROUTINE +?CND70: PUT SPLIT-STACK,0,T2 + PUT SPLIT-STACK,T2,1 + ZERO? P-DBUG /?CND72 + PRINTI "[New split on a" + PRINTI "n action" + PRINTI " (split #" + PRINTN SPLITS + PRINTI ") at depth " + DIV T2,2 + PRINTN STACK + PRINTI ", " + GETB CURRENT-ACTION,0 + PRINTN STACK + PRINTI " cases.] +" +?CND72: GETB CURRENT-ACTION,1 >CURRENT-ACTION + JUMP ?CND65 +?CCL67: GET SPLIT-STACK+2,SPLIT-NUM + GETB CURRENT-ACTION,STACK >CURRENT-ACTION +?CND65: ZERO? P-DBUG /?CND60 + PRINTI "[Using action " + PRINTN CURRENT-ACTION + PRINTI ".] +" + JUMP ?CND60 +?CCL62: ZERO? CAV /?CND60 + ZERO? CURRENT-ACTION \?CND60 + ZERO? P-DBUG /?CND79 + PRINTI "[A parse loses.] +" +?CND79: RETURN PARSER-RESULT-FAILED +?CND60: ZERO? CAV /?CTR82 + LESS? CURRENT-ACTION,128 \?CCL83 +?CTR82: ZERO? CAV /?CND86 + ZERO? P-DBUG /?CND88 + PRINTI "[Pushing: " + PRINTB CURRENT-TOKEN + PRINTI "; new state " + PRINTN CURRENT-ACTION + PRINTI "] +" +?CND88: XPUSH CURRENT-TOKEN,DATA-STACK \?CCL92 + XPUSH CURRENT-ACTION,STATE-STACK /?CND86 +?CCL92: ICALL1 P-NO-MEM-ROUTINE +?CND86: DLESS? 'P-LEN,1 \?CCL97 + SET 'CURRENT-TOKEN,W?END.OF.INPUT + ADD 1,P-WORD-NUMBER >P-WORDS-AGAIN + SET 'P-CONT,FALSE-VALUE + SET 'P-LEN,0 + JUMP ?CND95 +?CCL97: INC 'P-WORD-NUMBER + ADD TLEXV,4 >TLEXV + GET TLEXV,0 >CURRENT-TOKEN + GRTR? TLEXV,OTLEXV \?CND95 + SET 'OTLEXV,TLEXV +?CND95: ZERO? CURRENT-TOKEN \?CCL102 + CALL2 UNKNOWN-WORD,TLEXV >CURRENT-TOKEN + ZERO? CURRENT-TOKEN \?CND100 + RETURN PARSER-RESULT-DEAD +?CCL102: EQUAL? CURRENT-TOKEN,W?THEN,W?!,W?PERIOD /?CCL105 + EQUAL? CURRENT-TOKEN,W?? \?CND100 +?CCL105: SET 'P-WORDS-AGAIN,P-WORD-NUMBER + DLESS? 'P-LEN,1 /?CCL110 + ADD TLEXV,4 >P-CONT + JUMP ?CND100 +?CCL110: SET 'P-CONT,FALSE-VALUE +?CND100: GET CURRENT-TOKEN,4 >OLD-WCN + SET 'WCN,OLD-WCN + ZERO? P-DBUG /?PRG7 + PRINTI "[Next token: " + PRINTB CURRENT-TOKEN + PRINTI "; WCN " + PRINTN WCN + PRINTI "] +" + JUMP ?PRG7 +?CCL83: GRTR? CURRENT-ACTION,128 \?CCL114 + SUB CURRENT-ACTION,129 + GET REDUCTION-TABLE,STACK >REDUCTION + ZERO? P-DBUG /?CND117 + PRINTI "[Reducing " + GET REDUCTION,5 + PRINT STACK + CRLF + PRINTI "Args:" + GET REDUCTION,0 >N +?PRG119: DLESS? 'N,0 \?CND121 + PRINTI " ..." +?CND117: GET REDUCTION,0 >RES + ZERO? RES /?CND123 + FSTACK RES,STATE-STACK +?CND123: SET 'CURRENT-REDUCTION,REDUCTION + SET 'P-RUNNING,TLEXV + GET REDUCTION,1 >?TMP1 + GET REDUCTION,0 + CALL ?TMP1,STACK >RES + SET 'TLEXV,P-RUNNING + GRTR? TLEXV,OTLEXV \?CND125 + SET 'OTLEXV,TLEXV +?CND125: LESS? P-LEN,1 \?CCL129 + SET 'CURRENT-TOKEN,W?END.OF.INPUT + GET CURRENT-TOKEN,4 >OLD-WCN + SET 'WCN,OLD-WCN + JUMP ?CND127 +?CND121: PRINTC 32 + CALL PEEK-PSTACK,DATA-STACK,N + ICALL2 P-P,STACK + JUMP ?PRG119 +?CCL129: GET TLEXV,0 + EQUAL? CURRENT-TOKEN,STACK /?CND127 + GET TLEXV,0 >CURRENT-TOKEN + GET CURRENT-TOKEN,4 >OLD-WCN + SET 'WCN,OLD-WCN +?CND127: SET 'CURRENT-REDUCTION,FALSE-VALUE + ZERO? RES \?CTR132 + RETURN PARSER-RESULT-FAILED +?CTR132: XPUSH RES,DATA-STACK /?CND131 + ICALL1 P-NO-MEM-ROUTINE +?CND131: CALL2 PEEK-PSTACK,STATE-STACK + GET ACTION-TABLE,STACK >?TMP1 + GET REDUCTION,4 + CALL GET-NONTERMINAL-ACTION,?TMP1,STACK + XPUSH STACK,STATE-STACK /?CND136 + ICALL1 P-NO-MEM-ROUTINE +?CND136: ZERO? P-DBUG /?PRG7 + PRINTI " result: " + ICALL2 P-P,RES + PRINTI ", new state " + CALL2 PEEK-PSTACK,STATE-STACK + PRINTN STACK + PRINTI "] +" + JUMP ?PRG7 +?CCL114: POP DATA-STACK >PARSER-RESULT + RETURN PARSER-RESULT-WON + + + .FUNCT GET-TERMINAL-ACTION:ANY:3:3,TYPE,STATE,OFFS,V + ZERO? STATE /FALSE + BAND TYPE,32767 >TYPE + SET 'V,STATE +?PRG4: GET V,0 + ZERO? STACK \?CND6 + GET V,1 + ZERO? STACK /FALSE +?CND6: GET V,OFFS + BAND TYPE,STACK + ZERO? STACK /?CND10 + RETURN V +?CND10: ADD V,6 >V + JUMP ?PRG4 + + + .FUNCT GET-NONTERMINAL-ACTION:ANY:2:2,STATE,TYPE,V + GET STATE,1 + ZERO? STACK /FALSE + GET STATE,1 >V +?PRG4: GETB V,0 + ZERO? STACK /FALSE + GETB V,0 + EQUAL? STACK,TYPE \?CND6 + GETB V,1 + RSTACK +?CND6: ADD V,2 >V + JUMP ?PRG4 + + + .FUNCT BE-PATIENT:ANY:1:1,NUM,LIM + SET 'LIM,16 + GETB 0,30 + EQUAL? STACK,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1 + SET 'LIM,4 +?CND1: LESS? NUM,0 \?CCL5 + ZERO? P-DBUG /?CND6 + PRINTI "[Total: " + SUB 0,NUM + PRINTN STACK + PRINTI " passes.] +" +?CND6: SUB 1,LIM + LESS? NUM,STACK \FALSE + ZERO? P-RESPONDED /FALSE + SET 'P-RESPONDED,0 + BUFOUT TRUE-VALUE + PRINTR "]" +?CCL5: MOD NUM,LIM + ZERO? STACK \FALSE + EQUAL? NUM,LIM \?CCL17 + SET 'P-RESPONDED,LIM + PRINTI "[Please be patient..." + JUMP ?CND15 +?CCL17: ZERO? P-RESPONDED /?CND15 + PRINTC 46 +?CND15: BUFOUT FALSE-VALUE + RTRUE + + + .FUNCT MAIN-LOOP:ANY:0:0,X +?PRG1: CALL1 MAIN-LOOP-1 >X + JUMP ?PRG1 + + + .FUNCT MAIN-LOOP-1:ANY:0:0,ICNT,OCNT,NUM,OBJ,V,OBJ1,NP,NP1,XX,CNT,TMP + CALL1 PARSER >P-WON + ZERO? P-WON /?CCL3 +?PRG4: GET PARSE-RESULT,4 >PRSA + EQUAL? PRSA,V?UNDO \?CCL8 + SET 'PRSS,FALSE-VALUE + SET 'PRSQ,FALSE-VALUE + CALL2 PERFORM,PRSA + RSTACK +?CCL8: ISAVE >P-CAN-UNDO + EQUAL? P-CAN-UNDO,2 \?CND6 + EQUAL? PRSA,V?SAVE \?CCL13 + ICALL1 CANT-UNDO + RFALSE +?CCL13: SET 'P-CONT,-1 + ICALL1 V-$REFRESH + RFALSE +?CND6: GET PARSE-RESULT,5 >P-PRSO + GET PARSE-RESULT,6 >P-PRSI + ZERO? P-PRSO /?CCL17 + GET P-PRSO,3 + EQUAL? INTDIR,STACK \?CCL17 + GET P-PRSO,4 + GET STACK,2 + GETB STACK,6 >P-DIRECTION + JUMP ?CND15 +?CCL17: ZERO? P-PRSI /?CND15 + GET P-PRSI,3 + EQUAL? INTDIR,STACK \?CND15 + GET P-PRSI,4 + GET STACK,2 + GETB STACK,6 >P-DIRECTION +?CND15: GET PARSE-RESULT,1 >P-PRSA-WORD + SET 'CLOCK-WAIT,FALSE-VALUE + SET 'ICNT,0 + SET 'OCNT,0 + ZERO? P-PRSI /?CND23 + GET P-PRSI,1 >ICNT + ZERO? ICNT /?CND23 + SET 'P-MULT,ICNT +?CND23: ZERO? P-PRSO /?CND27 + GET P-PRSO,1 >OCNT + ZERO? OCNT /?CND27 + SET 'P-MULT,OCNT +?CND27: ZERO? OCNT \?CCL33 + ZERO? ICNT /?CND31 +?CCL33: EQUAL? PRSA,V?WALK /?CND31 + ZERO? P-IT-OBJECT /?CND31 + ZERO? ICNT /?CND39 + ICALL MAIN-LOOP-IT,ICNT,P-PRSI +?CND39: ZERO? OCNT /?CND31 + ICALL MAIN-LOOP-IT,OCNT,P-PRSO +?CND31: ZERO? OCNT \?CCL45 + SET 'NUM,OCNT + JUMP ?CND43 +?CCL45: GRTR? OCNT,1 \?CCL47 + ZERO? ICNT \?CCL50 + SET 'OBJ,FALSE-VALUE + JUMP ?CND48 +?CCL50: GET P-PRSI,3 >OBJ + GET P-PRSI,4 >NP +?CND48: SET 'NUM,OCNT + JUMP ?CND43 +?CCL47: GRTR? ICNT,1 \?CCL54 + GET P-PRSO,3 >OBJ + GET P-PRSI,4 >NP + SET 'NUM,ICNT + JUMP ?CND43 +?CCL54: SET 'NUM,1 +?CND43: ZERO? OBJ \?CND57 + EQUAL? ICNT,1 \?CND57 + GET P-PRSI,3 >OBJ + GET P-PRSI,4 >NP +?CND57: GET PARSE-RESULT,12 >V + ZERO? V /?CND63 + GET V,1 + LESS? 1,STACK \?CND63 + GET V,2 + ZERO? STACK \?CND63 + PUT V,2,1 + GET V,3 + PRINTD STACK + PRINTI ": +" +?CND63: GET PARSE-RESULT,15 >V + ZERO? V /?CCL70 + GET V,0 >PRSQ + JUMP ?CND68 +?CCL70: SET 'PRSQ,FALSE-VALUE +?CND68: GET PARSE-RESULT,13 >XX + ZERO? XX /?CCL73 + GET XX,3 >PRSS + JUMP ?CND71 +?CCL73: SET 'PRSS,FALSE-VALUE +?CND71: ZERO? LIT \?CCL76 + CALL1 SEE-VERB? + ZERO? STACK /?CCL76 + ICALL1 TELL-TOO-DARK + SET 'P-CONT,-1 + JUMP ?CND74 +?CCL76: EQUAL? PRSA,V?WALK \?CCL80 + ZERO? P-WALK-DIR /?PRD83 + PUSH P-WALK-DIR + JUMP ?PEN81 +?PRD83: GET P-PRSO,3 +?PEN81: CALL PERFORM,PRSA,STACK >V + JUMP ?CND74 +?CCL80: ZERO? NUM \?CCL85 + CALL2 PERFORM,PRSA >V + SET 'PRSO,FALSE-VALUE + SET 'PRSO-NP,FALSE-VALUE + JUMP ?CND74 +?CCL85: GRTR? OCNT,1 \?CCL87 + EQUAL? PRSA,V?COUNT \?CCL87 + CALL PERFORM,PRSA,ROOMS >V + JUMP ?CND74 +?CCL87: SET 'CNT,-1 + SET 'TMP,0 +?PRG90: INC 'CNT + LESS? CNT,NUM /?CND92 + ZERO? TMP \?CND74 + ICALL1 MORE-SPECIFIC + JUMP ?CND74 +?CND92: MUL CNT,2 + ADD NOUN-PHRASE-HEADER-LEN,STACK >XX + GRTR? ICNT,1 /?CCL98 + GET P-PRSO,XX >OBJ1 + ADD 1,XX + GET P-PRSO,STACK >NP1 + JUMP ?CND96 +?CCL98: GET P-PRSI,XX >OBJ1 + ADD 1,XX + GET P-PRSI,STACK >NP1 +?CND96: GRTR? NUM,1 /?CCL100 + GET NP1,3 + EQUAL? STACK,NP-QUANT-ALL \?CND99 +?CCL100: CALL PERF-MANY,OBJ1,OBJ,NP1,STR?220 + ZERO? STACK /?PRG90 +?CND99: SET 'TMP,TRUE-VALUE + GRTR? ICNT,1 /?CCL107 + SET 'PRSO,OBJ1 + SET 'PRSO-NP,NP1 + SET 'PRSI,OBJ + SET 'PRSI-NP,NP + JUMP ?CND105 +?CCL107: SET 'PRSO,OBJ + SET 'PRSO-NP,NP + SET 'PRSI,OBJ1 + SET 'PRSI-NP,NP1 +?CND105: EQUAL? IT,PRSI,PRSO,PRSS \?CND108 + CALL FIX-HIM-HER-IT,IT,P-IT-OBJECT + ZERO? STACK /?PRG90 +?CND108: EQUAL? HER,PRSI,PRSO,PRSS \?CND112 + CALL FIX-HIM-HER-IT,HER,P-HER-OBJECT + ZERO? STACK /?PRG90 +?CND112: EQUAL? HIM,PRSI,PRSO,PRSS \?CND116 + CALL FIX-HIM-HER-IT,HIM,P-HIM-OBJECT + ZERO? STACK /?PRG90 +?CND116: EQUAL? THEM,PRSI,PRSO,PRSS \?CND120 + CALL FIX-HIM-HER-IT,THEM,P-THEM-OBJECT + ZERO? STACK /?PRG90 +?CND120: ICALL2 QCONTEXT-CHECK,PRSO + GET PARSE-RESULT,3 + GETB STACK,5 >XX + ZERO? PRSO /?CND124 + BTST XX,128 /?CND124 + BTST XX,192 /?CND124 + CALL2 META-LOC,PRSO >V + ZERO? V /?CND124 + IN? V,ROOMS \?CND124 + CALL2 META-LOC,WINNER + CALL GLOBAL-IN?,PRSO,STACK + ZERO? STACK \?CND124 + CALL2 META-LOC,WINNER + EQUAL? V,STACK /?CND124 + ICALL2 NOT-HERE,PRSO + JUMP ?PRG90 +?CND124: ZERO? PRSO /?CND133 + BAND XX,96 + ZERO? STACK /?CND133 + BTST XX,128 /?CND133 + CALL ITAKE-CHECK,PRSO,XX >V + EQUAL? M-FATAL,V /?CND74 + ZERO? V \?PRG90 +?CND133: ZERO? PRSI /?CND143 + GET PARSE-RESULT,3 + GETB STACK,9 >XX + BAND 96,XX + ZERO? STACK /?CND143 + BTST XX,128 /?CND143 + CALL ITAKE-CHECK,PRSI,XX >V + EQUAL? M-FATAL,V /?CND74 + ZERO? V \?PRG90 +?CND143: CALL PERFORM,PRSA,PRSO,PRSI >V + EQUAL? M-FATAL,V /?CND74 + EQUAL? P-CONT,-1 \?PRG90 +?CND74: SET 'OPRSO,PRSO + ZERO? CLOCK-WAIT \?CND157 + CALL1 GAME-VERB? + ZERO? STACK \?CND157 + LOC WINNER >V + ZERO? V /?CND161 + IN? V,ROOMS /?CND161 + GETP V,P?ACTION + CALL D-APPLY,STR?1,STACK,M-END >V +?CND161: GETP HERE,P?ACTION + CALL D-APPLY,STR?1,STACK,M-END >V + EQUAL? M-FATAL,V \?CND165 + SET 'P-CONT,-1 +?CND165: SET 'CLOCKER-RUNNING,1 + CALL1 CLOCKER >V + SET 'CLOCKER-RUNNING,2 + EQUAL? M-FATAL,V \?CND157 + SET 'P-CONT,-1 +?CND157: GET PARSE-RESULT,12 >V + ZERO? V /?CND1 + GET V,1 + LESS? 1,STACK \?CND1 + EQUAL? P-CONT,-1 /?CND1 + CALL2 HACK-TELL-1,V >V + EQUAL? M-FATAL,V \?CCL177 + SET 'P-CONT,-1 + JUMP ?CND1 +?CCL177: ZERO? V /?CND1 + JUMP ?PRG4 +?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE + SET 'P-CONT,FALSE-VALUE +?CND1: SET 'PRSA,FALSE-VALUE + SET 'PRSO,FALSE-VALUE + SET 'PRSO-NP,FALSE-VALUE + SET 'PRSI,FALSE-VALUE + RETURN PRSI + + + .FUNCT PERF-MANY:ANY:4:4,OBJ1,OBJ,NP1,STR + EQUAL? OBJ1,FALSE-VALUE,NOT-HERE-OBJECT \?CCL3 + ICALL2 NP-PRINT,NP1 + PRINT STR + ICALL2 NP-CANT-SEE,NP1 + RFALSE +?CCL3: GET NP1,3 + EQUAL? STACK,NP-QUANT-ALL \?CCL5 + CALL VERB-ALL-TEST,OBJ1,OBJ + ZERO? STACK /FALSE +?CCL5: CALL2 ACCESSIBLE?,OBJ1 + ZERO? STACK /FALSE + EQUAL? OBJ1,PLAYER /FALSE + EQUAL? OBJ1,IT \?CCL14 + PRINTD P-IT-OBJECT + JUMP ?CND12 +?CCL14: EQUAL? OBJ1,PSEUDO-OBJECT \?CCL16 + ICALL2 NP-PRINT,NP1 + JUMP ?CND12 +?CCL16: PRINTD OBJ1 +?CND12: PRINT STR + RTRUE + + + .FUNCT QCONTEXT-CHECK:ANY:1:1,PER,WHO + EQUAL? PRSA,V?TELL-ABOUT,V?SHOW \FALSE + EQUAL? PER,PLAYER \FALSE + CALL2 FIND-A-WINNER,HERE >WHO + ZERO? WHO /?CND7 + SET 'QCONTEXT,WHO +?CND7: CALL1 QCONTEXT-GOOD? + ZERO? STACK /FALSE + EQUAL? WINNER,PLAYER \FALSE + SET 'WINNER,QCONTEXT + ICALL2 TELL-SAID-TO,QCONTEXT + RTRUE + + + .FUNCT LIT?:ANY:0:2,RM,RMBIT,OHERE,LT + ASSIGNED? 'RM /?CND1 + SET 'RM,HERE +?CND1: ASSIGNED? 'RMBIT /?CND3 + SET 'RMBIT,TRUE-VALUE +?CND3: SET 'OHERE,HERE + SET 'HERE,RM + ZERO? RMBIT /?CCL7 + FSET? RM,ONBIT \?CCL7 + SET 'LT,HERE + JUMP ?CND5 +?CCL7: FSET? WINNER,ONBIT \?CCL11 + CALL HELD?,WINNER,RM + ZERO? STACK /?CCL11 + SET 'LT,WINNER + JUMP ?CND5 +?CCL11: PUT SEARCH-RES,1,0 + PUT SEARCH-RES,2,FALSE-VALUE + PUT FINDER,0,ONBIT + PUT FINDER,1,FIND-FLAGS-GWIM + EQUAL? OHERE,RM \?CND14 + ICALL FIND-DESCENDANTS,WINNER,7 + EQUAL? WINNER,PLAYER /?CND14 + IN? PLAYER,RM \?CND14 + ICALL FIND-DESCENDANTS,PLAYER,7 +?CND14: GET SEARCH-RES,1 + ZERO? STACK \?CND20 + LOC WINNER + IN? STACK,ROOMS /?CND22 + LOC WINNER + FSET? STACK,OPENBIT /?CND22 + LOC WINNER + ICALL FIND-DESCENDANTS,STACK,7 +?CND22: ICALL FIND-DESCENDANTS,RM,7 +?CND20: GET SEARCH-RES,1 + LESS? 0,STACK \?CND5 + GET SEARCH-RES,4 >LT +?CND5: SET 'HERE,OHERE + RETURN LT + + + .FUNCT IGNORE-FIRST-WORD:ANY:0:0,NW + LESS? 1,P-LEN \FALSE + GET TLEXV,P-LEXELEN >NW + ZERO? NW /FALSE + GET NW,4 >NW + ZERO? NW /FALSE + BTST NW,32768 /FALSE + BAND NW,1 + BAND STACK,32767 + ZERO? STACK /FALSE + ADD TLEXV,4 >TLEXV + DEC 'P-LEN + RTRUE + + + .FUNCT FIX-QUOTATIONS:ANY:2:2,LEN,PTR,X,QFLAG + SET 'QFLAG,FALSE-VALUE +?PRG1: ZERO? QFLAG \?CCL5 + SET 'QFLAG,TRUE-VALUE + SUB PTR,P-LEXV + DIV STACK,2 + ADD 2,STACK >X + ICALL MAKE-ROOM-FOR-TOKENS,1,P-LEXV,X + PUT P-LEXV,X,W?NO.WORD + JUMP ?CND3 +?CCL5: SET 'QFLAG,FALSE-VALUE +?CND3: ADD PTR,4 >PTR + SUB PTR,P-LEXV + DIV STACK,4 >X + GETB P-LEXV,P-LEXWORDS + SUB STACK,X >LEN + ZERO? LEN /TRUE + INTBL? W?QUOTE,PTR,LEN,132 >PTR /?PRG1 + RTRUE + + + .FUNCT MAIN-LOOP-IT:ANY:2:2,ICNT,PRS,CNT,TOFF +?PRG1: MUL CNT,2 + ADD NOUN-PHRASE-HEADER-LEN,STACK >TOFF + GET PRS,TOFF + EQUAL? IT,STACK \?CCL5 + CALL2 ACCESSIBLE?,P-IT-OBJECT + ZERO? STACK /?CCL5 + PUT PRS,TOFF,P-IT-OBJECT + ICALL TELL-PRONOUN,P-IT-OBJECT,IT + RTRUE +?CCL5: IGRTR? 'CNT,ICNT \?PRG1 + RTRUE + + + .FUNCT P-NO-MEM-ROUTINE:ANY:0:1,TYP + PRINTI "[Sorry, but that" + EQUAL? TYP,7 \?CCL3 + PRINTI "'s too many objects" + JUMP ?CND1 +?CCL3: PRINTI " sentence is too complicated" +?CND1: PRINTI ".] +" + THROW PARSER-RESULT-DEAD,PARSE-SENTENCE-ACTIVATION + RTRUE + + + .FUNCT BEG-PARDON:ANY:0:0 + PRINTR "[I beg your pardon?]" + + + .FUNCT UNKNOWN-WORD:ANY:1:1,RLEXV,X + CALL2 NUMBER?,RLEXV >X + ZERO? X /?CCL3 + RETURN X +?CCL3: PRINTI "[I don't know the word """ + SUB RLEXV,P-LEXV + DIV STACK,2 + PUT OOPS-TABLE,O-PTR,STACK + ICALL2 WORD-PRINT,RLEXV + PRINTI ".""]" + CRLF + THROW PARSER-RESULT-DEAD,PARSE-SENTENCE-ACTIVATION + RTRUE + + + .FUNCT WORD-PRINT:ANY:1:3,PTR,LEN,OFFS + ASSIGNED? 'LEN /?CND1 + GETB PTR,2 >LEN +?CND1: ASSIGNED? 'OFFS /?PRG5 + GETB PTR,3 >OFFS +?PRG5: DLESS? 'LEN,0 /TRUE + GETB P-INBUF,OFFS + PRINTC STACK + INC 'OFFS + JUMP ?PRG5 + + + .FUNCT DO-OOPS:ANY:1:1,OWINNER,PTR,VAL + SET 'PTR,P-LEXSTART + GET TLEXV,P-LEXELEN + EQUAL? STACK,W?PERIOD,W?COMMA \?CND1 + ADD PTR,P-LEXELEN >PTR + DEC 'P-LEN +?CND1: GRTR? P-LEN,1 /?CCL5 + ICALL1 NAKED-OOPS + RFALSE +?CCL5: CALL2 META-LOC,OWINNER + EQUAL? HERE,STACK /?CCL7 + ICALL2 NOT-HERE,OWINNER + RFALSE +?CCL7: GET OOPS-TABLE,O-PTR >VAL + ZERO? VAL /?CCL9 + SUB P-LEN,1 + ICALL REPLACE-ONE-TOKEN,STACK,P-LEXV,PTR,G-LEXV,VAL + SET 'WINNER,OWINNER + ICALL2 COPY-INPUT,TRUE-VALUE + RTRUE +?CCL9: PUT OOPS-TABLE,O-END,FALSE-VALUE + ICALL1 CANT-OOPS + RFALSE + + + .FUNCT DO-AGAIN:ANY:1:1,OWINNER,N,?TMP1,?TMP2 + CALL2 META-LOC,OWINNER + EQUAL? HERE,STACK /?CCL3 + ICALL2 NOT-HERE,OWINNER + RFALSE +?CCL3: LESS? 0,P-OFLAG /?CTR4 + ZERO? P-WON /?CTR4 + GETB G-INBUF,2 + ZERO? STACK \?CCL5 +?CTR4: ICALL1 CANT-AGAIN + RFALSE +?CCL5: GRTR? P-LEN,1 \?CND1 + SUB TLEXV,P-LEXV + LESS? STACK,234 \?CND1 + GET TLEXV,P-LEXELEN >N + EQUAL? N,W?PERIOD,W?COMMA,W?THEN /?CND1 + EQUAL? N,W?AND /?CND1 + ICALL1 DONT-UNDERSTAND + RFALSE +?CND1: SET 'N,P-WORDS-AGAIN + SET 'WINNER,OWINNER + EQUAL? N,1 /?CND16 + SUB N,1 + ADD P-LEN,STACK >P-LEN + SUB N,1 >?TMP2 + SUB TLEXV,P-LEXV + DIV STACK,2 >?TMP1 + GET OOPS-TABLE,O-START + SUB STACK,P-LEXV + DIV STACK,2 + ICALL MAKE-ROOM-FOR-TOKENS,?TMP2,P-LEXV,?TMP1,STACK + ZERO? P-CONT /?CND16 + SUB N,1 + MUL STACK,4 + ADD P-CONT,STACK >P-CONT +?CND16: GET OOPS-TABLE,O-START + SUB STACK,P-LEXV + ADD G-LEXV,STACK >?TMP1 + MUL N,4 + COPYT ?TMP1,TLEXV,STACK + RTRUE + + + .FUNCT NP-SAVE:ANY:1:1,ROBJ,TMP + COPYT SEARCH-RES,ORPHAN-SR,20 + COPYT ROBJ,ORPHAN-NP,20 + GET ROBJ,5 >TMP + ZERO? TMP /?CCL3 + GET TMP,2 + COPYT STACK,ORPHAN-NP2,10 + PUT ORPHAN-NP,5,ORPHAN-NP2 + JUMP ?CND1 +?CCL3: GET ROBJ,4 >TMP + ZERO? TMP /?CCL5 + COPYT TMP,ORPHAN-NP2,20 + PUT ORPHAN-NP,4,ORPHAN-NP2 + JUMP ?CND1 +?CCL5: GET ROBJ,6 >TMP + ZERO? TMP /?CND1 + COPYT TMP,ORPHAN-NP2,20 + PUT ORPHAN-NP,6,ORPHAN-NP2 +?CND1: GET ROBJ,1 >TMP + ZERO? TMP /?CCL9 + COPYT TMP,ORPHAN-ADJS,18 + PUT ORPHAN-NP,1,ORPHAN-ADJS + GET TMP,2 >TMP + GRTR? 0,TMP /?CCL12 + GRTR? TMP,LAST-OBJECT /?CCL12 + PUT ORPHAN-ADJS,2,TMP + RETURN ORPHAN-NP +?CCL12: COPYT TMP,ORPHAN-NP2,20 + PUT ORPHAN-ADJS,2,ORPHAN-NP2 + RETURN ORPHAN-NP +?CCL9: PUT ORPHAN-NP,1,0 + RETURN ORPHAN-NP + + + .FUNCT PARSER-ERROR:ANY:0:5,STR,CLASS,OTHER,OTHER2,OTHER3,RP + ZERO? CURRENT-REDUCTION /FALSE + GET CURRENT-REDUCTION,2 >RP + GRTR? ERROR-PRIORITY,RP /?CCL3 + EQUAL? ERROR-PRIORITY,RP \FALSE + EQUAL? CLASS,PARSER-ERROR-ORPH-NP /?CCL3 + EQUAL? CLASS,PARSER-ERROR-NOUND /FALSE + GET ERROR-ARGS,1 + EQUAL? STACK,PARSER-ERROR-NOUND \FALSE +?CCL3: SET 'ERROR-PRIORITY,RP + SET 'ERROR-STRING,STR + ZERO? CLASS /?CCL14 + PUT ERROR-ARGS,0,3 + PUT ERROR-ARGS,1,CLASS + PUT ERROR-ARGS,2,OTHER + PUT ERROR-ARGS,3,OTHER2 + CALL2 PMEM?,OTHER + ZERO? STACK /FALSE + GETB OTHER,1 + EQUAL? STACK,4 \?CND17 + GET OTHER,4 >OTHER +?CND17: GETB OTHER,1 + EQUAL? STACK,2 \FALSE + CALL2 NP-SAVE,OTHER + PUT ERROR-ARGS,2,STACK + EQUAL? CLASS,PARSER-ERROR-NOOBJ \FALSE + GET OTHER,3 + ZERO? STACK \FALSE + PUT ERROR-ARGS,3,OTHER3 + RFALSE +?CCL14: PUT ERROR-ARGS,0,0 + RFALSE + + + .FUNCT BUZZER-WORD?:ANY:2:2,WD,PTR,N + GET P-N-WORDS,0 + INTBL? WD,P-N-WORDS+2,STACK \?CCL3 + PRINTR "[Use numerals for numbers, for example ""10.""]" +?CCL3: GET P-C-WORDS,0 + INTBL? WD,P-C-WORDS+2,STACK \FALSE + PRINTC 91 + CALL2 PICK-ONE,OFFENDED + PRINT STACK + PRINTR "]" + + + .FUNCT NUMBER?:ANY:1:1,RLEXV,BPTR,SUM,TIM,NEG,CHR,CNT,?TMP1 + GETB RLEXV,3 >BPTR + GETB RLEXV,2 >CNT +?PRG1: DLESS? 'CNT,0 /?REP2 + GETB P-INBUF,BPTR >CHR + EQUAL? CHR,58 \?CCL8 + SET 'TIM,SUM + SET 'SUM,0 + JUMP ?CND6 +?CCL8: EQUAL? CHR,45 \?CCL10 + ZERO? NEG \FALSE + SET 'NEG,TRUE-VALUE + JUMP ?CND6 +?CCL10: GRTR? CHR,57 /FALSE + LESS? CHR,48 /FALSE + GRTR? SUM,3276 /FALSE + MUL SUM,10 >?TMP1 + SUB CHR,48 + ADD ?TMP1,STACK >SUM +?CND6: INC 'BPTR + JUMP ?PRG1 +?REP2: ZERO? TIM /?CCL22 + GRTR? TIM,23 /FALSE + ZERO? NEG \FALSE + MUL TIM,60 + ADD SUM,STACK >SUM + ICALL CHANGE-LEXV,RLEXV,W?INT.TIM,BPTR,SUM + RETURN W?INT.TIM +?CCL22: ZERO? NEG /?CND27 + SUB 0,SUM >SUM +?CND27: ICALL CHANGE-LEXV,RLEXV,W?INT.NUM,BPTR,SUM + RETURN W?INT.NUM + + + .FUNCT CHANGE-LEXV:ANY:2:4,PTR,WRD,BPTR,SUM,X + PUT PTR,0,WRD + SUB PTR,P-LEXV + ADD G-LEXV,STACK >X + PUT X,0,WRD + ASSIGNED? 'BPTR \FALSE + PUT PTR,1,SUM + PUT X,1,SUM + SET 'P-NUMBER,SUM + RETURN P-NUMBER + + + .FUNCT TELL-GWIM-MSG:ANY:0:0,WD,VB + PRINTC 91 + GET GWIM-MSG,0 >WD + ZERO? WD /?CND1 + PRINTB WD + PRINTC 32 + GET PARSER-RESULT,1 >VB + EQUAL? VB,W?SIT,W?LIE \?CCL5 + EQUAL? WD,W?DOWN \?CND1 + PRINTI "on " + JUMP ?CND1 +?CCL5: EQUAL? VB,W?GET \?CND1 + EQUAL? WD,W?OUT \?CND1 + PRINTI "of " +?CND1: GET GWIM-MSG,1 + ICALL2 TELL-THE,STACK + PRINTR "]" + + + .FUNCT DO-IT-AGAIN:ANY:0:1,NUM,X,TMP + ASSIGNED? 'NUM /?CND1 + SET 'NUM,1 +?CND1: SUB TLEXV,P-LEXV + DIV STACK,2 >X + ZERO? P-CONT \?CND3 + ADD X,P-LEXELEN >X +?CND3: GET OOPS-TABLE,O-START >TMP + ZERO? TMP /?PRG7 + SUB TMP,P-LEXV+2 + DIV STACK,4 >TMP + GETB G-LEXV,P-LEXWORDS + ADD STACK,TMP + PUTB G-LEXV,P-LEXWORDS,STACK +?PRG7: ICALL MAKE-ROOM-FOR-TOKENS,2,G-LEXV,X + PUT G-LEXV,X,W?PERIOD + ADD X,P-LEXELEN + PUT G-LEXV,STACK,W?AGAIN + DLESS? 'NUM,1 \?PRG7 + GETB G-LEXV,P-LEXWORDS + SUB STACK,TMP + PUTB G-LEXV,P-LEXWORDS,STACK + ICALL2 COPY-INPUT,TRUE-VALUE + SET 'P-OFLAG,0 + RTRUE + + .ENDSEG + + .ENDI diff --git a/pass101 b/pass101 new file mode 100644 index 0000000000000000000000000000000000000000..46e3151a0edaf1e463675b79a2217ae89acfec34 GIT binary patch literal 130881 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 literal 0 HcmV?d00001 diff --git a/pass33 b/pass33 new file mode 100644 index 0000000000000000000000000000000000000000..b643ae4666d84336bb75a9e40a6853c9de6dd654 GIT binary patch literal 42546 zcmeHQ-BQ~|6n5L`Mg0K1-i8~Pp#=F4a3*0~AX8efJ+>3K!{kEPYwU@U7)cIgGI^Z7 zS0AOjD_PznSwFTHEX+wl2C#G_?fL)q+g0wzpL4nIa=A;rH!>X49uoIY?uT41_Y?d2 zk9`sL^}RTZeZ&5+%jYl8FD}lzwZGf>b7Nrk%v-{Sk6L=q8GWI| z?v1F?qhv5*KbuDW#Jqd3MmIx;Z1;A!v_o?JK)f?|**CpCQX7wnIL0OxwW;-m_V@BF zI;Of!i7~morWVmEMe>@osWsBa)88E)?H9FDK7Z9>XF0?iup2zPtdf0lZ(4nuOl&6T zQ$GK$(LAe@dZX3(ot!ort)vsK>hvFnIOb<+REc>>;J0 zn~kPnTF!78!R6pdADiCIXhb93W3DFlP2@-xkC=csB^ITjEW)8Y*aupKQkXReOZTmz zBne^;R3JTO#x_^~2b=5OJ6tPO!X{B`b&`g-l=L8F>H5t4xGNCP8Uqgk%&~U*N7AK% za;KVI=GVMH;LM94z*u z|QB$|171Kdj5 zkPl9JvC&#xxCG<5xq(i}fQeA!r*PpKJcQ0tc!bBN7*>rZkO*CLkNKqn8GMTgZC{BG zKFOhi%c+q&-D36O*z~gNV!o>#iA3NRiQo~vnh)G6`YuyW>PkzADT-1DC?SQBJ<}pZ z$$$ypUDYu#sYUc+N?H&ldVaZ%Q7ME<%|&BE`joc5A~s}dyoimcVR<<#o{1O7Si!<# zW!j~JERqJu2x(v$yaAov>+M5*Te#())2fHM>?5hmjq9>SkiZ(&2$tJe!(t6P1f7&p zpiN1*ON6?#eJKhc)&(*fVqK9lDWEU(Cv|492387e#%4MQGT!6W%fQY+Wh_ogk>N8M zYp_nhI>Dcm#VUU`J0c^l8TDPny0SdouB0A(Nmv(}^UE-2zvPIiw;q##W5&AF7@ffOm;|p}1@eJ> zMQ*8Xa2k*^q-3Z&J;q-A+N9RNv~H`U_Eyu1uN!a02ixPDop1TC-H~BX>+OR%Vf2LY zpi1hd!_GANW7=mQH(TvS@OL%AAgq4NZ`a&wkdaOFu|@U%gCL;(vcn%1l8;J|z>t6U zp?=Xg`BN}lN%x#_UEjAFzlF|=o8FxmW3%@;IIx*Ujs06rf-F+lR3&NB$Gup- zk!C7q?f_SKA;O`YgA3{jhlwoH7`iNc4&b9HDv+c|c|QshhyffmH#9C96vgqOa2S#z z0->LdyjznkabTI(%%5OI1&cYr7mlNDLLs5D4Df!{TSU1KiVHKga`%`&d%!W=U&@g_ z5!+8q$6d*)e5K6L-w0A0Ff4vr$Rva;`56Wh0<11qq5lItywsSgWH^;YH9rXm4}>I?h~Sb!aq)~D|FCn5T-~Rtb5mk4tIt>n zH-I_hS++fJI2CYr(?jkHzbTeJEqS&nrm zZ>15~?iBJjA`2n+vai5YE10OQB)^_{9Aq_7qj(B_^0Q6%0)Jga=9rep(176tWh8>BaHMQl2ZN zuj#%)<(jg!tqyxFi^FMv!DXb#^TS|b_%EDMgR7^l!C_Ax#uns7u5s7`QueCEuSWqy zfs6E3TBN5SzikSb2owJrX)4KRp1d|4(L4|j5Y3Bw+ZsS?{eYTTLNP|Ch_+X%s5RR*8GOX}CDjd%HU>js!lQW??pn9oa`{mh?m1L1zAR^OD1c2#*DD$V)|1VLh>Az*N@q!|4~eY_uT1i5jxts-+9b89^x_)$Bhcx89ySZ4Ly}Oxh^wk}X wdP6Ze%-%jt*lU=@E1Y-53!HB(N)7ijMj_;{bhc<;{Cv#L3@nWgs5JlXf2zh+r~m)} literal 0 HcmV?d00001 diff --git a/people.zabstr b/people.zabstr new file mode 100644 index 0000000..bc1cbd8 --- /dev/null +++ b/people.zabstr @@ -0,0 +1,68 @@ + + + + + + + +> + + + + + + + + + + + + + + + + + + + + +> +> +> + + + + + +> + + + + + + \ No newline at end of file diff --git a/people.zap b/people.zap new file mode 100644 index 0000000..9c6c76a --- /dev/null +++ b/people.zap @@ -0,0 +1,549 @@ + + + .FUNCT PLAYER-F:ANY:0:1,ARG,L + EQUAL? ARG,M-WINNER /?CCL3 + EQUAL? PRSO,PLAYER \?CCL6 + EQUAL? PRSA,V?THANK,V?SORRY,V?HELLO \?CCL9 + ICALL1 HAR-HAR + RTRUE +?CCL9: EQUAL? PRSA,V?ALARM \?CCL11 + PRINT YOU-ARE + CRLF + RTRUE +?CCL11: EQUAL? PRSA,V?FIND \?CCL13 + PRINTI "You're right here, " + ICALL1 TELL-LOCATION + CRLF + RTRUE +?CCL13: EQUAL? PRSA,V?FOLLOW \?CCL15 + PRINTR "I'd like to, but like most computers I don't have legs." +?CCL15: EQUAL? PRSA,V?MUNG,V?KILL \?CCL17 + ICALL2 JIGS-UP,STR?185 + RTRUE +?CCL17: EQUAL? PRSA,V?LISTEN \?CCL20 + PRINTR "Yes?" +?CCL20: EQUAL? PRSA,V?MOVE \?CCL22 + ICALL1 V-WALK-AROUND + RTRUE +?CCL22: EQUAL? PRSA,V?PULL-TOGETHER \?CCL24 + PRINT ZEN + CRLF + RTRUE +?CCL24: EQUAL? PRSA,V?SEARCH \?CCL26 + ICALL1 V-INVENTORY + RTRUE +?CCL26: EQUAL? PRSA,V?TELL \FALSE + ICALL1 FUCKING-CLEAR + PRINTR "Talking to yourself is a sign of impending mental collapse." +?CCL6: EQUAL? PRSI,PLAYER \FALSE + EQUAL? PRSA,V?GIVE \FALSE + IN? PRSO,PLAYER \?CCL36 + EQUAL? PRSO,BABEL-FISH /?CCL36 + ICALL1 PRE-TAKE + RTRUE +?CCL36: ICALL PERFORM,V?TAKE,PRSO + RTRUE +?CCL3: ZERO? PRSI /?CCL40 + EQUAL? PRSA,V?SEARCH-FOR /?CCL40 + FSET? PRSI,SECRETBIT \?CCL40 + FSET? PRSI,SEENBIT /?CCL40 + ICALL2 NOT-FOUND,PRSI + RTRUE +?CCL40: ZERO? PRSO /?CCL46 + EQUAL? PRSA,V?WALK,V?FIND /?CCL46 + FSET? PRSO,SECRETBIT \?CCL46 + FSET? PRSO,SEENBIT /?CCL46 + ICALL2 NOT-FOUND,PRSO + RTRUE +?CCL46: LOC PLAYER >L + EQUAL? L,HERE /FALSE + ZERO? P-WALK-DIR /?CCL55 + CALL1 TOO-BAD-SIT-HIDE + RSTACK +?CCL55: EQUAL? PRSO,FALSE-VALUE,ROOMS,L /FALSE + EQUAL? PRSA,V?FIND /?CTR58 + EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?WALK-TO \?CCL59 +?CTR58: EQUAL? PRSO,SLEEP-GLOBAL /FALSE + CALL1 TOO-BAD-SIT-HIDE + RSTACK +?CCL59: CALL1 SPEAKING-VERB? + ZERO? STACK \FALSE + CALL1 GAME-VERB? + ZERO? STACK \FALSE + CALL1 REMOTE-VERB? + ZERO? STACK \FALSE + EQUAL? PRSA,V?SMILE /FALSE + EQUAL? PRSA,V?SHOOT,V?NOD,V?LOOK-ON /FALSE + EQUAL? PRSA,V?LISTEN,V?FAINT,V?AIM /FALSE + CALL2 HELD?,PRSO + ZERO? STACK \FALSE + CALL HELD?,PRSO,GLOBAL-OBJECTS + ZERO? STACK \FALSE + EQUAL? PRSA,V?EXAMINE /FALSE + CALL HELD?,PRSO,L + ZERO? STACK \?CCL83 + CALL1 TOO-BAD-SIT-HIDE + RSTACK +?CCL83: ZERO? PRSI /FALSE + CALL2 HELD?,PRSI + ZERO? STACK \FALSE + CALL HELD?,PRSI,GLOBAL-OBJECTS + ZERO? STACK \FALSE + CALL HELD?,PRSI,L + ZERO? STACK \FALSE + CALL1 TOO-BAD-SIT-HIDE + RSTACK + + + .FUNCT TOO-BAD-SIT-HIDE:ANY:0:0 + MOVE WINNER,HERE + ICALL2 FIRST-YOU,STR?186 + RFALSE + + + .FUNCT FUCKING-CLEAR:ANY:0:0 + SET 'P-CONT,FALSE-VALUE + RETURN 2 + + + .FUNCT MARVIN-F:ANY:0:1,ARG,OBJ,X + EQUAL? ARG,M-WINNER \?CCL3 + CALL2 GRAB-ATTENTION,MARVIN + ZERO? STACK \?CCL6 + RETURN 2 +?CCL6: CALL2 COM-CHECK,MARVIN >X + ZERO? X /?CCL10 + EQUAL? X,M-FATAL /FALSE + EQUAL? X,M-OTHER \TRUE + RETURN 2 +?CCL10: ICALL1 FUCKING-CLEAR + PRINTR """I think you ought to know I'm feeling very depressed.""" +?CCL3: CALL2 ASKING-ABOUT?,MARVIN >OBJ + ZERO? OBJ /?CCL19 + CALL GRAB-ATTENTION,MARVIN,OBJ + ZERO? STACK \?CCL22 + RETURN 2 +?CCL22: EQUAL? OBJ,OBJECT-OF-GAME \?CCL26 + PRINTR """Being clever doesn't always make you happy, you know. Look at me, brain the size of a planet, how many points do you think I've got? Minus thirty zillion at the last count.""" +?CCL26: CALL COMMON-ASK-ABOUT,MARVIN,OBJ >X + ZERO? X /?CCL28 + EQUAL? X,M-FATAL /FALSE + RTRUE +?CCL28: CALL TELL-DUNNO,MARVIN,OBJ + RSTACK +?CCL19: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL33 + GETP MARVIN,P?LDESC + EQUAL? STACK,14 \?CCL33 + PRINTR "Rather like trying to wake the dead." +?CCL33: CALL PERSON-F,MARVIN,ARG + RSTACK + + + .FUNCT ASKING-ABOUT?:ANY:1:1,WHO,DR + EQUAL? PRSA,V?SHOW,V?ASK-ABOUT \FALSE + EQUAL? WHO,PRSO \FALSE + RETURN PRSI + + + .FUNCT FORD-F:ANY:0:1,ARG,OBJ,X + EQUAL? ARG,M-WINNER \?CCL3 + CALL2 GRAB-ATTENTION,FORD + ZERO? STACK \?CCL6 + RETURN 2 +?CCL6: CALL2 COM-CHECK,FORD >X + ZERO? X /?CCL10 + EQUAL? X,M-FATAL /FALSE + EQUAL? X,M-OTHER \TRUE + RETURN 2 +?CCL10: ICALL1 FUCKING-CLEAR + PRINTI "Ford, busy scanning the sky" + EQUAL? HERE,PUB \?CND18 + PRINTI " through the window" +?CND18: PRINTR ", ignores you." +?CCL3: CALL2 ASKING-ABOUT?,FORD >OBJ + ZERO? OBJ /?CCL21 + CALL GRAB-ATTENTION,FORD,OBJ + ZERO? STACK \?CCL24 + RETURN 2 +?CCL24: EQUAL? OBJ,THIRD-PLANET \?CCL28 + PRINTR "Ford explains that the Earth has been demolished. To cheer you up, he points out that there are an awful lot of little planets like that around, and the Earth wasn't even a particularly nice one." +?CCL28: CALL COMMON-ASK-ABOUT,FORD,OBJ >X + ZERO? X /?CCL30 + EQUAL? X,M-FATAL /FALSE + RTRUE +?CCL30: CALL TELL-DUNNO,FORD,OBJ + RSTACK +?CCL21: EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL35 + GETP FORD,P?LDESC + EQUAL? STACK,14 \?CCL35 + PRINTR "Rather like trying to wake the dead." +?CCL35: CALL PERSON-F,FORD,ARG + RSTACK + + + .FUNCT TELL-DUNNO:ANY:2:2,PER,OBJ + PRINTR """You know as much as I do.""" + + + .FUNCT ZAPHOD-F:ANY:0:1,ARG,OBJ,X + EQUAL? ARG,M-WINNER \?CCL3 + CALL2 GRAB-ATTENTION,ZAPHOD + ZERO? STACK \?CCL6 + RETURN 2 +?CCL6: CALL2 COM-CHECK,ZAPHOD >X + ZERO? X /?CCL10 + EQUAL? X,M-FATAL /FALSE + EQUAL? X,M-OTHER \TRUE + RETURN 2 +?CCL10: ICALL1 FUCKING-CLEAR + PRINTR """Shut up, Earthman.""" +?CCL3: CALL2 ASKING-ABOUT?,ZAPHOD >OBJ + ZERO? OBJ /?CCL19 + CALL GRAB-ATTENTION,ZAPHOD,OBJ + ZERO? STACK \?CCL22 + RETURN 2 +?CCL22: CALL COMMON-ASK-ABOUT,ZAPHOD,OBJ >X + ZERO? X /?CCL26 + EQUAL? X,M-FATAL /FALSE + RTRUE +?CCL26: CALL TELL-DUNNO,ZAPHOD,OBJ + RSTACK +?CCL19: EQUAL? PRSA,V?EXAMINE \?CCL31 + PRINTR "Zaphod has two heads." +?CCL31: CALL PERSON-F,ZAPHOD,ARG + RSTACK + + + .FUNCT TRILLIAN-F:ANY:0:1,ARG,OBJ,X + EQUAL? ARG,M-WINNER \?CCL3 + CALL2 GRAB-ATTENTION,TRILLIAN + ZERO? STACK \?CCL6 + RETURN 2 +?CCL6: CALL2 COM-CHECK,TRILLIAN >X + ZERO? X /?CCL10 + EQUAL? X,M-FATAL /FALSE + EQUAL? X,M-OTHER \TRUE + RETURN 2 +?CCL10: ICALL1 FUCKING-CLEAR + PRINTD TRILLIAN + PRINTR " smiles disinterestedly at you and looks away." +?CCL3: CALL2 ASKING-ABOUT?,TRILLIAN >OBJ + ZERO? OBJ /?CCL19 + CALL GRAB-ATTENTION,TRILLIAN,OBJ + ZERO? STACK \?CCL22 + RETURN 2 +?CCL22: CALL COMMON-ASK-ABOUT,TRILLIAN,OBJ >X + ZERO? X /?CCL26 + EQUAL? X,M-FATAL /FALSE + RTRUE +?CCL26: CALL TELL-DUNNO,TRILLIAN,OBJ + RSTACK +?CCL19: CALL PERSON-F,TRILLIAN,ARG + RSTACK + + + .FUNCT MARVIN-D:ANY:0:1,ARG + ICALL2 DESCRIBE-PERSON,MARVIN + RTRUE + + + .FUNCT FORD-D:ANY:0:1,X + GETP FORD,P?LDESC + EQUAL? STACK,14 \?CCL3 + PRINTR "Ford is in the corner, snoring loudly." +?CCL3: ICALL2 DESCRIBE-PERSON,FORD + RTRUE + + + .FUNCT ZAPHOD-D:ANY:0:1,ARG + ICALL2 DESCRIBE-PERSON,ZAPHOD + RTRUE + + + .FUNCT TRILLIAN-D:ANY:0:1,ARG + ICALL2 DESCRIBE-PERSON,TRILLIAN + RTRUE + + + .FUNCT DESCRIBE-PERSON:ANY:1:1,PER,STR + GETP PER,P?LDESC >STR + ZERO? STR /?CND1 + GETP PER,P?CHARACTER + PUT TOUCHED-LDESCS,STACK,STR + RFALSE +?CND1: ICALL2 START-SENTENCE,PER + PRINTI " is " + GETPT PER,P?WEST >STR + ZERO? STR /?CCL6 + GET STR,NEXITSTR >STR + ZERO? STR /?CCL6 + PRINT STR + JUMP ?CND4 +?CCL6: PRINTI "looking bored" +?CND4: PRINTC 46 + EQUAL? STR,6 \?CCL11 + PRINTC 32 + RTRUE +?CCL11: CRLF + RTRUE + + + .FUNCT PERSON-F:ANY:2:2,PER,ARG,OBJ,X,L,C,N + LOC PER >L + GETP PER,P?CHARACTER >C + EQUAL? PRSA,V?SHAKE,V?ALARM \?CCL3 + EQUAL? PRSO,PER \FALSE + CALL UNSNOOZE,PER,TRUE-VALUE + ZERO? STACK /?CCL9 + ICALL HE-SHE-IT,PER,1 + PRINTR " gasps to see you so close!" +?CCL9: ICALL HE-SHE-IT,PER,1,STR?61 + PRINTI " still " + GETP PER,P?LDESC >X + ZERO? X /?CCL12 + GET LDESC-STRINGS,X + PRINT STACK + JUMP ?CND10 +?CCL12: GETPT PER,P?WEST >X + ZERO? X /?CND10 + GET X,NEXITSTR + PRINT STACK +?CND10: PRINTR "." +?CCL3: EQUAL? PRSA,V?GIVE \?CCL15 + EQUAL? PRSI,PER \FALSE + CALL2 HELD?,PRSO + ZERO? STACK /FALSE + CALL2 GRAB-ATTENTION,PER + ZERO? STACK \FALSE + RETURN 2 +?CCL15: EQUAL? PRSA,V?LAMP-OFF \?CCL26 + GETP PER,P?LINE + ZERO? STACK /?CCL29 + PRINTR "Seems you've already done that." +?CCL29: CALL1 WONT-HELP + RSTACK +?CCL26: EQUAL? PRSA,V?SEARCH-FOR,V?SEARCH,V?MUNG \?CCL31 + EQUAL? PER,PRSO \FALSE + FSET? PER,PERSONBIT \FALSE + FSET? PER,MUNGBIT /FALSE + GETP PER,P?LINE + ADD 1,STACK + PUTP PER,P?LINE,STACK + GETP PER,P?LDESC + EQUAL? STACK,4 /?CND38 + PUTP PER,P?LDESC,20 +?CND38: ICALL HE-SHE-IT,PER,1 + PRINTR " pushes you away and mutters, ""I don't think that's called for.""" +?CCL31: EQUAL? PRSA,V?SHOW \?CCL41 + EQUAL? PER,PRSO \FALSE + CALL2 GRAB-ATTENTION,PER + ZERO? STACK \?CCL47 + RETURN 2 +?CCL47: ICALL PERFORM,V?TELL-ABOUT,PRSO,PRSI + RTRUE +?CCL41: EQUAL? PRSA,V?SMILE \?CCL52 + EQUAL? PER,PRSO \FALSE + CALL2 GRAB-ATTENTION,PER + ZERO? STACK \?CCL58 + RETURN 2 +?CCL58: ICALL HE-SHE-IT,PRSO,1,STR?217 + PRINTR " back at you." +?CCL52: EQUAL? PRSA,V?TELL-ABOUT \?CCL62 + EQUAL? PER,PRSO \FALSE + CALL2 GRAB-ATTENTION,PER + ZERO? STACK \?CND66 + RETURN 2 +?CND66: PUTP PER,P?LDESC,12 + PRINTR """I don't know what you mean.""" +?CCL62: EQUAL? PRSA,V?THROW-AT \?CCL71 + EQUAL? PER,PRSI \FALSE + FSET? PER,PERSONBIT \FALSE + FSET? PER,MUNGBIT /FALSE + MOVE PRSO,PRSI + ICALL HE-SHE-IT,PER,1 + PRINTI " catches" + ICALL2 PRINT-THE,PRSO + PRINTI " with" + ICALL HIM-HER-IT,PER,0,TRUE-VALUE + PRINTC 32 + PRINTI "righ" + PRINTR "t hand." +?CCL71: CALL2 COMMON-OTHER,PER + RSTACK + + + .FUNCT CARRY-CHECK:ANY:1:1,PER + FIRST? PER \FALSE + ICALL HE-SHE-IT,PER,1,STR?61 + PRINTI " holding" + ICALL2 PRINT-CONTENTS,PER + PRINTR "." + + + .FUNCT TRANSIT-TEST:ANY:1:1,PER + EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH /TRUE + EQUAL? PRSA,V?TAKE-TO,V?LEAVE,V?DISEMBARK /TRUE + RFALSE + + + .FUNCT COM-CHECK:ANY:1:1,PER,N + GETP PER,P?LINE >N + EQUAL? PRSA,V?$CALL \?CCL3 + ICALL1 DONT-UNDERSTAND + RETURN M-OTHER +?CCL3: CALL2 TRANSIT-TEST,PER + ZERO? STACK /?CCL5 + RETURN 2 +?CCL5: EQUAL? PRSA,V?SORRY,V?HELLO,V?ALARM \?CCL9 + EQUAL? PRSO,ROOMS /?CTR11 + EQUAL? PRSO,PER \FALSE +?CTR11: SET 'WINNER,PLAYER + ICALL PERFORM,PRSA,PER + RTRUE +?CCL9: LESS? 0,N \?CCL16 + PRINTI """I'm too " + EQUAL? N,1 \?CCL19 + PRINTI "peeved" + JUMP ?CND17 +?CCL19: PRINTI "angry" +?CND17: PRINTR " with you now.""" +?CCL16: EQUAL? PRSA,V?YES,V?THANK,V?NO \?CCL21 + RETURN 2 +?CCL21: EQUAL? PRSA,V?WALK-TO,V?FOLLOW \?CCL25 + EQUAL? PRSA,V?WALK-TO \?CCL28 + EQUAL? PRSO,SLEEP-GLOBAL \?CCL28 + RETURN 2 +?CCL28: PRINTR """I will go where I please, thank you very much.""" +?CCL25: EQUAL? PRSA,V?INVENTORY \?CCL34 + CALL2 CARRY-CHECK,PER + ZERO? STACK \TRUE + ICALL HE-SHE-IT,PER,1,STR?61 + PRINTR "n't holding anything." +?CCL34: EQUAL? PRSA,V?LISTEN \?CCL38 + EQUAL? PRSO,PLAYER /?CTR40 + IN? PRSO,GLOBAL-OBJECTS /FALSE +?CTR40: PRINTR """I'm trying to!""" +?CCL38: EQUAL? PRSA,V?RUB \?CND1 + ICALL1 FACE-RED + RTRUE +?CND1: EQUAL? PRSA,V?WALK \?CCL47 + EQUAL? PRSO,P?OUT \?CCL47 + RETURN 2 +?CCL47: EQUAL? PRSA,V?KISS \?CCL54 + ICALL2 UNSNOOZE,PER + PRINTR """I really don't think this is the proper time or place.""" +?CCL54: EQUAL? PRSA,V?TAKE \?CCL56 + IN? PRSO,PLAYER \FALSE + SET 'WINNER,PLAYER + ICALL PERFORM,V?GIVE,PRSO,PER + RTRUE +?CCL56: EQUAL? PRSA,V?READ,V?LOOK-INSIDE,V?EXAMINE \?CCL61 + IN? PRSO,PLAYER \FALSE + SET 'WINNER,PLAYER + ICALL PERFORM,V?SHOW,PER,PRSO + RTRUE +?CCL61: EQUAL? PRSA,V?THROW-AT,V?GIVE \?CCL66 + FSET? PRSI,PERSONBIT \?CCL66 + SET 'WINNER,PRSI + ICALL PERFORM,V?ASK-FOR,PER,PRSO + RTRUE +?CCL66: EQUAL? PRSA,V?SGIVE \?CCL70 + FSET? PRSO,PERSONBIT \?CCL70 + SET 'WINNER,PRSO + ICALL PERFORM,V?ASK-FOR,PER,PRSI + RTRUE +?CCL70: EQUAL? PRSA,V?HELP \?CCL74 + EQUAL? PRSO,FALSE-VALUE,PLAYER \?PRG78 + SET 'WINNER,PLAYER + ICALL PERFORM,V?ASK,PER + RTRUE +?PRG78: RETURN 2 +?CCL74: EQUAL? PRSA,V?SSHOW,V?SHOW,V?FIND \?CCL81 + EQUAL? PRSA,V?SHOW \?CND82 + SET 'PRSA,V?SSHOW + SET 'N,PRSI + SET 'PRSI,PRSO + SET 'PRSO,N +?CND82: IN? PRSO,ROOMS \?CCL86 + SET 'WINNER,PLAYER + ICALL PERFORM,V?WALK-TO,PRSO + RTRUE +?CCL86: IN? PRSO,PER \?CCL88 + CALL1 ITAKE + EQUAL? STACK,TRUE-VALUE \TRUE + ICALL HE-SHE-IT,PER,1 + PRINTI " fumbles in" + ICALL HIM-HER-IT,PER,0,TRUE-VALUE + PRINTI " pocket and produces" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." +?CCL88: EQUAL? PRSA,V?FIND \FALSE + RETURN 2 +?CCL81: EQUAL? PRSA,V?TELL \?CCL96 + EQUAL? PRSO,PLAYER \FALSE + SET 'WINNER,PLAYER + ICALL PERFORM,V?ASK,PER + RTRUE +?CCL96: EQUAL? PRSA,V?TELL-ABOUT \?CCL101 + FSET? PRSO,PERSONBIT \FALSE + SET 'WINNER,PLAYER + ICALL PERFORM,V?ASK-ABOUT,PER,PRSI + RTRUE +?CCL101: EQUAL? PRSA,V?WAIT-FOR,V?STOP \?CCL106 + EQUAL? PRSO,ROOMS /?CCL109 + EQUAL? PRSO,PLAYER,GLOBAL-HERE,HERE \FALSE +?CCL109: EQUAL? PER,FOLLOWER \?CCL114 + SET 'FOLLOWER,0 + PRINTR """As you wish.""" +?CCL114: SET 'WINNER,PLAYER + ICALL PERFORM,V?$CALL,PER + RTRUE +?CCL106: EQUAL? PRSA,V?TALK-ABOUT \FALSE + SET 'WINNER,PLAYER + ICALL PERFORM,V?ASK-ABOUT,PER,PRSO + RTRUE + + + .FUNCT COMMON-ASK-ABOUT:ANY:2:2,PER,OBJ + EQUAL? OBJ,PER \?CCL3 + PRINTR """I have no secrets. Anyone can see what I am.""" +?CCL3: EQUAL? OBJ,PLAYER \?CCL5 + PRINTR """You're Arthur Dent, the next-to-last Earthling.""" +?CCL5: FSET? OBJ,PERSONBIT /FALSE + EQUAL? OBJ,OBJECT-OF-GAME \?CCL9 + PRINTR """Oh...you're trying to figure that out also? The manual's not much help, is it? By the way, do you know your score? I don't. My computer doesn't have a status line.""" +?CCL9: IN? OBJ,PER \FALSE + PRINTR """I have it right here.""" + + + .FUNCT COMMON-OTHER:ANY:1:1,PER,X,N + EQUAL? PRSA,V?ASK /FALSE + EQUAL? PRSA,V?EXAMINE \?CCL5 + GETP PER,P?TEXT + PRINT STACK + CRLF + IN? PER,HERE \?CND6 + FIRST? PER >N \?CND6 + FSET? N,NDESCBIT /?CND6 + CALL2 CARRY-CHECK,PER + ZERO? STACK /?CND6 + SET 'X,TRUE-VALUE +?CND6: FSET? PER,MUNGBIT \TRUE + ZERO? X /?CND15 + PRINTI "And" +?CND15: ZERO? X /?PRT17 + PUSH 0 + JUMP ?PRE19 +?PRT17: PUSH 1 +?PRE19: ICALL HE-SHE-IT,PER,STACK,STR?61 + PRINTC 32 + GETP PER,P?LDESC + GET LDESC-STRINGS,STACK + PRINT STACK + PRINTR "." +?CCL5: EQUAL? PRSO,PER \FALSE + EQUAL? PRSA,V?SHOW \FALSE + ICALL PERFORM,V?ASK-ABOUT,PRSO,PRSI + RTRUE + + .ENDI diff --git a/people.zil b/people.zil new file mode 100644 index 0000000..b9c4020 --- /dev/null +++ b/people.zil @@ -0,0 +1,662 @@ +"PEOPLE for MILLIWAYS +Copyright (C) 1986 Infocom, Inc. All rights reserved." + +"Constants used as table offsets for each character, including the player:" + + + + + + + +> + + + + + +) "AUX" (L <>)) + > + + + + ) + ( + + ) + ;( + + ) + (T )> + > + + ) + ( + >> + )> + >> + + ) + ( + + + + ) + ( + + ) + ( + ; + >> + + ) + ( + + ) + ( + + ) + ( + + ) + ( + + ) + ( + + + )>) + ( + + + >> + + ) + (T + + )>)>) + (T )>) + ;( + ) + (T + > + >> + + + >)> + )>) + ( + > + + >> + + ) + ( + > + + >> + + ) + ;( + > + + + ) + (> ,HERE ;,CAR> + ; + ;> + ) + ( ) + ( ,ROOMS .L> + ) + ( + ) + (T )>) + ( ) + ( ) + ( ) + ( + ) + ( ) + ( ) + ( ) + (> ) + ( ) + ( ) + ( ) + (> )>> + + + + > + +> + ;> + > + + + +;)) + + + ) + (T )> + > + + + + + +) "AUX" OBJ X) + + > ) + (> + ) + (<==? .X ,M-OTHER> ) + (T )>) + (T + + )>) + (> + > + ) + ( + ) + (> + ) (T )>) + (T )>) + ( + 14 ;"asleep">> + ) + (T )>> + + + + + + + + + )>) + ;( + + )>) + (T )>> + +) "AUX" OBJ X) + + > ) + (> + ) + (<==? .X ,M-OTHER> ) + (T )>) + (T + + + + )> + )>) + (> + > + ) + ( + ) + (> + ) (T )>) + (T )>) + ( + 14 ;"asleep">> + ) + (T )>> + + + ) + (T + )>> + + + + + +) "AUX" OBJ X) + + > ) + (> + ) + (<==? .X ,M-OTHER> ) + (T )>) + (T + + )>) + (> + > + ) + (> + ) (T )>) + (T )>) + ( + ) + (T )>> + + + +) "AUX" OBJ X) + + > ) + (> + ) + (<==? .X ,M-OTHER> ) + (T )>) + (T + + )>) + (> + > + ) + (> + ) (T )>) + (T )>) + (T )>> + +> + +> + +> + +; + ) + ( + ) + (T )>> + +)) + + > + + 14 ;"asleep"> + ) + (T + + )>> + +)) + + > + +)) + + > + +)) + > + >> + .STR> + )> + + > + >> + ) + (T + )> + + ) + (T )> + > + +> + +;> + > + > + + >) + (T )>)>> + +> + > + + + + + ) + (T + + > + >) + (> + >)> + )>)>) + ( + > + > )> + )>) + ( + > + ) + (T )>) + ( + + + >> + >> + + 4 ;"looking at you with suspicion">> + )> + + )>) + ( + + > + >> + ) + (T + + )>)>) + ( + + > + ) + (T + + )>)>) + ( + + > + )> + + ; + + )> + )>) + ( + + + >> + + + ) + (T )> + + )>) + ;(> + > + ) + ;(> + ) (T )>) + (T )>) + (T )>> + +"People Functions" + + + + + )>> + + + ; + >> + T ;)>> + +> + ;"e.g. TAMARA, LOVE ME" + + ) + ( + ) + ( + <==? ,PRSO .PER>> + + + ) + (T )>) + ( + + ) (T )> + + ) + ( + ;"let thru to next handler") + ( + + > + ) + (T + + )>) + ( + > + )> + ) + ( + + >> + + ) + (T )>) + ( + + )> + > + + + ) + ( + + >> + ;"let thru to next handler") + ( + + ) + ;( + + )>) + ( + + + + )>) + ( + + + + )>) + ( > + + + ) + ( > + + + ) + ( + ,PLAYER> + + + ) + (T )>) + ( + + + + + )> + ;"SHOW ME MY ROOM" + + + ) + ( + T> + )> + ) + ( + ; + ; + )>) + ( + + + + )>) + ( + + + + ; + )>) + ( + + + + ) + (T + + + )>)>) + ( + + + )>> + + + ) + ( + ) + ( + ) + ( + ) + ( + )>> + +) N) + ) + ( + CR> + + > + >> + + )>)> + + > )> + "is"> + > "." CR>)> + ) + ( > + + )>> diff --git a/places.zabstr b/places.zabstr new file mode 100644 index 0000000..40d4145 --- /dev/null +++ b/places.zabstr @@ -0,0 +1,29 @@ + + + + + + + + + + + + PEOPLE +UNIMPORTANT-THING-F) (ACTION PUB-F)> + + + + + + +> + + \ No newline at end of file diff --git a/places.zap b/places.zap new file mode 100644 index 0000000..4d3daf7 --- /dev/null +++ b/places.zap @@ -0,0 +1,156 @@ + + + .FUNCT DOOR-ROOM:ANY:2:2,RM,DR,P,TBL +?PRG1: NEXTP RM,P >P + ZERO? P /FALSE + LESS? P,LOW-DIRECTION /FALSE + GETPT RM,P >TBL + PTSIZE TBL + EQUAL? DEXIT,STACK \?PRG1 + GET TBL,DEXITOBJ + EQUAL? DR,STACK \?PRG1 + GET TBL,REXIT + RSTACK + + + .FUNCT FIND-IN:ANY:2:3,RM,FLAG,EXCLUDED,O + FIRST? RM >O /?PRG2 +?PRG2: ZERO? O /FALSE + FSET? O,FLAG \?CCL8 + FSET? O,INVISIBLE /?CCL8 + EQUAL? O,EXCLUDED /?CCL8 + RETURN O +?CCL8: NEXT? O >O /?PRG2 + JUMP ?PRG2 + + + .FUNCT FIND-FLAG-NOT:ANY:2:2,RM,FLAG,O + FIRST? RM >O /?PRG2 +?PRG2: ZERO? O /FALSE + FSET? O,FLAG /?CCL8 + FSET? O,INVISIBLE /?CCL8 + RETURN O +?CCL8: NEXT? O >O /?PRG2 + JUMP ?PRG2 + + + .FUNCT FIND-FLAG-LG:ANY:2:3,RM,FLAG,FLAG2,TBL,O,CNT,SIZE + GETPT RM,P?GLOBAL >TBL + ZERO? TBL /FALSE + PTSIZE TBL + DIV STACK,2 + SUB STACK,1 >SIZE +?PRG4: GET TBL,CNT >O + FSET? O,FLAG \?CCL8 + FSET? O,INVISIBLE /?CCL8 + ZERO? FLAG2 /?CTR7 + FSET? O,FLAG2 \?CCL8 +?CTR7: RETURN O +?CCL8: IGRTR? 'CNT,SIZE \?PRG4 + RFALSE + + + .FUNCT FIND-FLAG-HERE:ANY:1:3,FLAG,NOT1,NOT2,O + FIRST? HERE >O /?PRG2 +?PRG2: ZERO? O /FALSE + FSET? O,FLAG \?CCL8 + FSET? O,INVISIBLE /?CCL8 + EQUAL? O,NOT1,NOT2 /?CCL8 + RETURN O +?CCL8: NEXT? O >O /?PRG2 + JUMP ?PRG2 + + + .FUNCT FIND-FLAG-HERE-NOT:ANY:2:3,FLAG,NFLAG,NOT2,O + FIRST? HERE >O /?PRG2 +?PRG2: ZERO? O /FALSE + FSET? O,FLAG \?CCL8 + FSET? O,NFLAG /?CCL8 + FSET? O,INVISIBLE /?CCL8 + EQUAL? O,NOT2 /?CCL8 + RETURN O +?CCL8: NEXT? O >O /?PRG2 + JUMP ?PRG2 + + + .FUNCT UNIMPORTANT-THING-F:ANY:0:0 + EQUAL? PRSA,V?ASK-ABOUT \?CCL3 + EQUAL? PRSO,GUIDE /FALSE +?CCL3: PRINTR "That's not important; leave it alone." + + + .FUNCT WINDOW-F:ANY:0:0 + EQUAL? PRSA,V?UNLOCK /?CTR2 + EQUAL? PRSA,V?LOCK,V?CLOSE,V?OPEN \?CCL3 +?CTR2: EQUAL? PRSA,V?OPEN \?CCL8 + PRINTR "The night air is too damp and chilly." +?CCL8: ICALL ALREADY,WINDOW,STR?98 + RTRUE +?CCL3: EQUAL? PRSA,V?THROUGH,V?LEAVE,V?DISEMBARK \?CCL10 + PRINTR "It's closed tight against the mist." +?CCL10: EQUAL? PRSA,V?LOOK-OUTSIDE,V?LOOK-THROUGH,V?LOOK-INSIDE \FALSE + PRINTR "All you can see are grey shapes in the moonlight." + + + .FUNCT PUB-F:ANY:1:1,RARG + EQUAL? RARG,M-LOOK \FALSE + PRINTR "Milliways is pleasant and cheerful and full of pleasant and cheerful people who don't know they've got about twelve minutes to live and are therefore having a spot of lunch." + + + .FUNCT BEER-F:ANY:0:0 + EQUAL? PRSA,V?TAKE,V?RUB,V?SMELL /?PRD5 + EQUAL? PRSA,V?COUNT,V?ENJOY,V?DRINK \?CCL3 +?PRD5: FSET? BEER,NDESCBIT \?CCL3 + PRINTR "You'd better buy some first." +?CCL3: EQUAL? PRSA,V?COUNT \?CCL9 + PRINTR "Lots." +?CCL9: EQUAL? PRSA,V?TAKE \?CCL11 + PRINTR "Just drink it!" +?CCL11: EQUAL? PRSA,V?ENJOY,V?DRINK \?CCL14 + ADD SCORE,5 >SCORE + INC 'DRUNK-LEVEL + EQUAL? DRUNK-LEVEL,4 \?CCL17 + PRINTI "You can hear the muffled noise of your home being demolished, and the taste of the beer sours in your mouth." + CRLF + CRLF + RTRUE +?CCL17: EQUAL? DRUNK-LEVEL,3 \?CCL19 + PRINTR "There is a distant crash which Ford explains is nothing to worry about, probably just your house being knocked down." +?CCL19: EQUAL? DRUNK-LEVEL,2 \?CCL21 + PRINTR "It is really very pleasant stuff, with a very good dry, nutty flavour, some light froth on top, and a deep colour. It is at exactly room temperature. You reflect that the world cannot be all bad when there are such pleasures in it. + +Ford mentions that the world is going to end in about twelve minutes." +?CCL21: EQUAL? DRUNK-LEVEL,1 \FALSE + PRINTR "It's very good beer, brewed by a small local company. You particularly like its flavour, which is why you woke up feeling so wretched this morning. You were at somebody's birthday party here in the Pub last night. + +You begin to relax and enjoy yourself, so when Ford mentions that he's from a small planet in the vicinity of Betelgeuse, not from Guildford as he usually claims, you take it in your stride, and say ""Oh yes, which part?""" +?CCL14: EQUAL? PRSA,V?BUY \FALSE + PRINTD FORD + PRINTR " has already bought an enormous quantity for you!" + + + .FUNCT SANDWICH-F:ANY:0:0 + EQUAL? PRSA,V?BUY \?CCL3 + ZERO? SANDWICH-BOUGHT \?CCL3 + MOVE SANDWICH,PLAYER + FSET SANDWICH,TAKEBIT + FCLEAR SANDWICH,TRYTAKEBIT + FCLEAR SANDWICH,NDESCBIT + SET 'SANDWICH-BOUGHT,TRUE-VALUE + PRINTI "The barman gives you a " + PRINTD SANDWICH + PRINTR ". The bread is like the stuff that stereos come packed in, the cheese would be great for rubbing out spelling mistakes, and margarine and pickle have performed an unedifying chemical reaction to produce something that shouldn't be, but is, turquoise. Since it is clearly unfit for human consumption you are grateful to be charged only a pound for it." +?CCL3: EQUAL? PRSA,V?BUY \?CCL7 + PRINTR "You already did." +?CCL7: EQUAL? PRSA,V?ENJOY,V?EAT,V?TAKE \?CCL9 + FSET? SANDWICH,TRYTAKEBIT \?CCL9 + EQUAL? HERE,PUB \?CCL9 + PRINT HANDS-OFF + CRLF + RTRUE +?CCL9: EQUAL? PRSA,V?ENJOY,V?EAT \FALSE + MOVE SANDWICH,LOCAL-GLOBALS + SUB SCORE,30 >SCORE + PRINTR "It is one of the least rewarding taste experiences you can recall." + + .ENDI diff --git a/places.zil b/places.zil new file mode 100644 index 0000000..42af9aa --- /dev/null +++ b/places.zil @@ -0,0 +1,391 @@ +"PLACES for MILLIWAYS +Copyright (C) 1988 Infocom, Inc. All rights reserved." + +"The usual globals" + + + +;> + +>> + > + ) + (>>> + <==? .DR >> + >)>>> + +) "AUX" O) + > + ) + ( + > + >> + ) + (T >)>>> + +) "AUX" O) + > + ) + (> + > + ;>> + ) + (T >)>>> + +> + > + > + + > + >> + ) + ( )>>)>> + +) (NOT2 <>) "AUX" O) + > + ) + ( + > + >> + ) + (T >)>>> + +;) "AUX" O) + > + ) + ( + + > + >> + ) + (T >)>>> + +) "AUX" O) + > + ) + ( + > + > + >> + ) + (T >)>>> + +;)> + + + + + + + ) + (> + + + + + )> + + + )>> + +;> + + + > + ) + (T + )>> + +; + + + + + + ) + (T ; + + )>) + ( + ) + ( + )>> + +; + +; + + + + )>> + +; + +; + + + ) + (T + )> + )>> + +; + +; + + ) + (T + )>) + ( + + ) + (T + )>)>> + +; + + PEOPLE UNIMPORTANT-THING-F) + (ACTION PUB-F)> + + + )>> + +; + +; + +; + + )>> + + + +; + +; + + > + + + + ) + ( + + + + ) + ( + + > + + ) + (T + )>) + ( + > + + )>> + + + + + + + > + ) + ( + ) + ( + ) + (T + + > + > + + + ; + ) + ( + ; + ; + ;> + ) + ( + ) + ( + )>) + ( + + + ) + (T + )>)>)>> + + + +> + + > + + + + + + ) + ( + ) + ( + + > + ) + ( + + > + )>)>> + + diff --git a/pmem.zabstr b/pmem.zabstr new file mode 100644 index 0000000..11a8bc1 --- /dev/null +++ b/pmem.zabstr @@ -0,0 +1,92 @@ + + + + + + + + + +) (PM-LENGTH 'OFFSET 0 'NTH GETB 'PUT PUTB) (PM-TYPE-CODE 'OFFSET 1 ' +NTH GETB 'PUT PUTB)> + +) (PMT-ARGS [])> + + + +> + + + + + "ARGS" STUFF "AUX" ATM CODE +TYPE-OBJ (OCT ,PM-HEADER-LEN) ARGS) > 10 ,PDEFS-INTERNAL-OBLIST>> > < +SETG PM-TYPE-COUNT 0> )> >> > > 10 ,PDEFS-INTERNAL-OBLIST> .CODE>> 1>> (.TYPE-OBJ)> "AUX" NATM OFFS (TYPE ANY) (DEFAULT <>) NNATM) < +COND ( > >) (T )> "-" +> 10 ,PDEFS-INTERNAL-OBLIST>> "-" < +SPNAME .NATM> "-OFFSET"> 10 ,PDEFS-INTERNAL-OBLIST>> ) (T )>>> > > ) (T > > > FORM> > >)>)> > >> > > >) (T )>)>)>)> > .STUFF>> +> + < +TYPE? ,.TYPE PM-TYPE>> ,.TYPE) (T > 10 ,PDEFS-INTERNAL-OBLIST>> > ,.TEMP) (T )>)>> +) (ATM2 <>)) > >) (T >)> >) (T > >>)>> +) (OBJ:PM-TYPE >)) " ["> ) (N 1)) +> 0> )> > +>> .PMEM> + + + + <=? < +SPNAME .FOO> >>> +> > >) (>> )> .LENARG>))>> +> ) (INIT ,PM-HEADER-LEN>> NONE>> TABLE>) THIS-ARG OFFS:FIX FRM) >) +) NONE>> < +ERROR NO-VALUE-FOR-MANDATORY-SLOT!-ERRORS .TYPNAM PMEM-ALLOC>) ( '<>> 0>> '. +NEW-OBJECT >)>>>)>)>> .ARGS> )> > ATOM>> > >> "-" > +10 ,PDEFS-INTERNAL-OBLIST>> > >>>> LENGTH> )>) (T >> T> '<>> 0>> >)>>>)>)> >> .BASE> + + + \ No newline at end of file diff --git a/pmem.zap b/pmem.zap new file mode 100644 index 0000000..3e9d099 --- /dev/null +++ b/pmem.zap @@ -0,0 +1,45 @@ + + .SEGMENT "0" + + + .FUNCT PMEM?:ANY:1:1,PTR + LESS? PTR,PMEM-STORE /FALSE + LESS? PTR,PMEM-STORE+180 /TRUE + RFALSE + + + .FUNCT PMEM-RESET:ANY:0:0 + GRTR? PMEM-WORDS-USED,0 \?CND1 + SET 'PMEM-WORDS-USED,0 + SUB PMEM-STORE-LENGTH,PMEM-STORE-WORDS + MUL 2,STACK + COPYT PMEM-STORE,0,STACK +?CND1: SET 'PMEM-STORE-WORDS,PMEM-STORE-LENGTH + SET 'PMEM-STORE-POINTER,PMEM-STORE + RTRUE + + + .FUNCT DO-PMEM-ALLOC:ANY:2:2,TYPE,LENGTH,STOR,LEFT,NEW + SET 'STOR,PMEM-STORE-POINTER + SET 'LEFT,PMEM-STORE-WORDS + IGRTR? 'LENGTH,LEFT \?CND1 + ICALL2 P-NO-MEM-ROUTINE,TYPE +?CND1: ADD PMEM-WORDS-USED,LENGTH >PMEM-WORDS-USED + SUB LEFT,LENGTH >PMEM-STORE-WORDS + GRTR? PMEM-STORE-WARN,PMEM-STORE-WORDS \?CND3 + SET 'PMEM-STORE-WARN,PMEM-STORE-WORDS + PRINTI "[Debugging info: " + PRINTI "PMEM: " + PRINTN PMEM-STORE-WARN + PRINTI " left!] +" +?CND3: MUL LENGTH,2 + ADD STOR,STACK >PMEM-STORE-POINTER + DEC 'LENGTH + PUTB STOR,0,LENGTH + PUTB STOR,1,TYPE + RETURN STOR + + .ENDSEG + + .ENDI diff --git a/prare.zabstr b/prare.zabstr new file mode 100644 index 0000000..3aa2f27 --- /dev/null +++ b/prare.zabstr @@ -0,0 +1,73 @@ +)("ONE-BYTE-PARTS-OF-SPEECH" %<>)( +"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-APOSTROPHE-BREAKS-WORDS" T)( +"P-BE-VERB" T)) (("SETUP-ORPHAN" "DEFS" #WORD *00651007407*) ("PRINT-INTQUOTE" +"DEFS" #WORD *00651007407*))> + + + + + + + + + + + + +> + + +> +)) ,LEXV-ELEMENT-SIZE-BYTES> <+ +-1 > ,LEXV-ELEMENT-SIZE-BYTES>>>>> +> + + >> 1>> > > 0> )> +>> > > >> >> < +REPEAT () > > > > .MAX> )> >> >>> +>)> + + + + + + + + +> + + > +> +> +> + + +> + + +> < +CONSTANT YES-LEXV > > +) (B <>)) + )> + )>)>)> >> <>) (> .A 132> <>) (T < +SETG P-OFLAG <+ 1 <* ,P-LEXELEN >>> < +MAKE-ROOM-FOR-TOKENS 1 ,O-LEXV ,P-OFLAG> < +SETG P-OFLAG <- 0 ,P-OFLAG>> >> T)>>> +> + + + + \ No newline at end of file diff --git a/prare.zap b/prare.zap new file mode 100644 index 0000000..9e567d2 --- /dev/null +++ b/prare.zap @@ -0,0 +1,1036 @@ + + .SEGMENT "0" + + + .FUNCT TOO-MANY-NEW:ANY:1:1,WHAT + PRINTI "[Warning: there are too many new " + PRINT WHAT + PRINTR "s.]" + + + .FUNCT NAKED-OOPS:ANY:0:0 + PRINTR "[Please type a word(s) after OOPS.]" + + + .FUNCT CANT-OOPS:ANY:0:0 + PRINTR "[There was no word to replace in that sentence.]" + + + .FUNCT CANT-AGAIN:ANY:0:0 + PRINTR "[What do you want to do again?]" + + + .FUNCT CANT-USE-MULTIPLE:ANY:2:2,LOSS,WD + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTI "[You can't use more than one object at a time with """ + PRINTB WD + PRINTR """!]" + + + .FUNCT MAKE-ROOM-FOR-TOKENS:ANY:3:4,CNT,LEXV,WHERE,BEG,LEN,?TMP2,?TMP1 + ASSIGNED? 'BEG /?CND1 + SET 'BEG,P-LEXSTART +?CND1: GETB LEXV,0 + MUL 2,STACK >LEN + MUL P-LEXELEN,CNT + ADD WHERE,STACK + LESS? LEN,STACK \?CND3 + SUB LEN,WHERE + DIV STACK,P-LEXELEN >CNT + ICALL2 TOO-MANY-NEW,STR?54 +?CND3: GETB LEXV,P-LEXWORDS >LEN + ADD CNT,LEN + PUTB LEXV,P-LEXWORDS,STACK + MUL 2,WHERE + ADD LEXV,STACK >LEXV + MUL CNT,4 >CNT + ADD LEXV,CNT >?TMP1 + MUL 2,LEN >?TMP2 + SUB WHERE,BEG + SUB ?TMP2,STACK + MUL 2,STACK + COPYT LEXV,?TMP1,STACK + RTRUE + + + .FUNCT REPLACE-ONE-TOKEN:ANY:5:5,N,FROM-LEXV,PTR,TO-LEXV,WHERE,CNT,X,?TMP1,?TMP2 + SUB N,1 >CNT + ZERO? CNT /?CND1 + ICALL MAKE-ROOM-FOR-TOKENS,CNT,TO-LEXV,WHERE +?CND1: SET 'CNT,N +?PRG3: DLESS? 'CNT,0 /TRUE + ADD PTR,P-LEXELEN >PTR + GET FROM-LEXV,PTR + PUT TO-LEXV,WHERE,STACK + MUL PTR,P-LEXELEN + ADD STACK,2 >X + GETB FROM-LEXV,X >?TMP2 + ADD X,1 + GETB FROM-LEXV,STACK >?TMP1 + MUL WHERE,P-LEXELEN + ADD STACK,3 + CALL INBUF-ADD,?TMP2,?TMP1,STACK + ZERO? STACK \?CND7 + ICALL2 TOO-MANY-NEW,STR?55 + RTRUE +?CND7: ADD WHERE,P-LEXELEN >WHERE + JUMP ?PRG3 + + + .FUNCT V-$REFRESH:ANY:0:0 + GET 0,8 + BAND STACK,-5 + PUT 0,8,STACK + CLEAR -1 + ICALL1 INIT-STATUS-LINE + RTRUE + + + .FUNCT PRINT-LEXV:ANY:0:3,QUIET,X,LEN,WD,IN-QUOTE,OWD + ASSIGNED? 'X /?CND1 + MUL QUIET,4 + ADD TLEXV,STACK >X +?CND1: ASSIGNED? 'LEN /?CND3 + SUB P-LEN,QUIET >LEN +?CND3: ZERO? QUIET /?CCL6 + GRTR? 0,P-OFLAG \?CND5 +?CCL6: ZERO? P-RESPONDED /?CCL11 + SUB 0,P-RESPONDED + ICALL2 BE-PATIENT,STACK + JUMP ?CND9 +?CCL11: SET 'P-RESPONDED,1 +?CND9: PRINTI "[In other words:" +?CND5: SET 'IN-QUOTE,FALSE-VALUE + EQUAL? QUIET,-1 \?CCL14 + SET 'OWD,W?APOSTROPHE + JUMP ?PRG15 +?CCL14: SET 'OWD,0 +?PRG15: GET X,0 >WD + EQUAL? WD,W?PERIOD,W?COMMA,W?APOSTROPHE /?CND17 + EQUAL? WD,W?NO.WORD /?CND17 + EQUAL? OWD,W?APOSTROPHE /?CND17 + EQUAL? OWD,W?QUOTE \?CCL25 + ZERO? IN-QUOTE \?CCL25 + SET 'IN-QUOTE,TRUE-VALUE + JUMP ?CND17 +?CCL25: EQUAL? WD,W?QUOTE \?CCL29 + ZERO? IN-QUOTE /?CCL29 + SET 'IN-QUOTE,FALSE-VALUE + JUMP ?CND17 +?CCL29: PRINTC 32 +?CND17: EQUAL? WD,W?NO.WORD /?CND32 + CALL2 CAPITAL-NOUN?,WD + ZERO? STACK /?CCL36 + ICALL2 CAPITALIZE,X + JUMP ?CND32 +?CCL36: EQUAL? WD,0,W?INT.NUM,W?INT.TIM \?CCL38 + ADD X,P-WORDLEN + ICALL BUFFER-PRINT,X,STACK,FALSE-VALUE,TRUE-VALUE + JUMP ?CND32 +?CCL38: PRINTB WD +?CND32: DLESS? 'LEN,1 /?REP16 + EQUAL? WD,W?NO.WORD /?CND41 + SET 'OWD,WD +?CND41: ADD X,4 >X + JUMP ?PRG15 +?REP16: ZERO? QUIET /?CCL45 + GRTR? 0,P-OFLAG \FALSE +?CCL45: PRINTR "]" + + + .FUNCT COPY-INPUT:ANY:0:1,QUIET,LEN,?TMP1 + COPYT G-LEXV,P-LEXV,LEXV-LENGTH-BYTES + GETB P-LEXV,P-LEXWORDS >P-LEN + GET OOPS-TABLE,O-START >TLEXV + COPYT G-INBUF,P-INBUF,61 + GETB P-LEXV,P-LEXWORDS + MUL 4,STACK >LEN + DEC 'LEN + GETB TLEXV,LEN >?TMP1 + DEC 'LEN + GETB TLEXV,LEN + ADD ?TMP1,STACK + PUT OOPS-TABLE,O-END,STACK + ZERO? QUIET \FALSE + CALL2 PRINT-LEXV,QUIET + RSTACK + + .ENDSEG + + .SEGMENT "0" + + + .FUNCT BUFFER-PRINT:ANY:2:4,BEG,END,CP,NOSP,WRD,NW,FIRST??,PN,TMP + SET 'FIRST??,TRUE-VALUE +?PRG1: EQUAL? BEG,END /TRUE + ZERO? NOSP \?CTR6 + EQUAL? NW,W?PERIOD,W?COMMA,W?APOSTROPHE \?CCL7 +?CTR6: SET 'NOSP,FALSE-VALUE + JUMP ?CND5 +?CCL7: PRINTC 32 +?CND5: GET BEG,0 >WRD + ADD BEG,P-WORDLEN + EQUAL? END,STACK \?CCL12 + SET 'NW,0 + JUMP ?CND10 +?CCL12: GET BEG,P-LEXELEN >NW +?CND10: EQUAL? WRD,W?NO.WORD \?CCL15 + SET 'NOSP,TRUE-VALUE + JUMP ?CND13 +?CCL15: EQUAL? WRD,W?MY \?CCL17 + PRINTB W?YOUR + JUMP ?CND13 +?CCL17: EQUAL? WRD,W?ME \?CCL19 + PRINTB W?YOU + SET 'PN,TRUE-VALUE + JUMP ?CND13 +?CCL19: EQUAL? WRD,W?ONE \?CCL21 + PRINTI "object" + JUMP ?CND13 +?CCL21: EQUAL? WRD,FALSE-VALUE,W?ALL,W?PERIOD /?CCL23 + EQUAL? WRD,W?APOSTROPHE /?CCL23 + GET WRD,4 >TMP + ZERO? TMP \?CCL23 + GET WRD,3 + ZERO? STACK \?CCL23 + BTST TMP,32768 /?PRD32 + BAND TMP,4 + BAND STACK,32767 + ZERO? STACK \?CCL23 +?PRD32: BTST TMP,32768 /?CTR22 + BAND TMP,2 + BAND STACK,32767 + ZERO? STACK \?CCL23 +?CTR22: SET 'NOSP,TRUE-VALUE + JUMP ?CND13 +?CCL23: CALL2 CAPITAL-NOUN?,WRD + ZERO? STACK /?CCL38 + ICALL2 CAPITALIZE,BEG + SET 'PN,TRUE-VALUE + JUMP ?CND13 +?CCL38: ZERO? FIRST?? /?CND39 + ZERO? PN \?CND39 + ZERO? CP /?CND39 + EQUAL? WRD,W?HER,W?HIM,W?YOUR /?CND39 + PRINTI "the " +?CND39: EQUAL? WRD,W?IT \?CCL48 + CALL2 VISIBLE?,P-IT-OBJECT + ZERO? STACK /?CCL48 + PRINTD P-IT-OBJECT + JUMP ?CND46 +?CCL48: EQUAL? WRD,W?THEM \?CCL52 + CALL2 VISIBLE?,P-THEM-OBJECT + ZERO? STACK /?CCL52 + PRINTD P-THEM-OBJECT + JUMP ?CND46 +?CCL52: EQUAL? WRD,W?HER \?CCL56 + ZERO? PN \?CCL56 + PRINTD P-HER-OBJECT + JUMP ?CND46 +?CCL56: EQUAL? WRD,W?HIM \?CCL60 + ZERO? PN \?CCL60 + PRINTD P-HIM-OBJECT + JUMP ?CND46 +?CCL60: EQUAL? WRD,W?INT.NUM,W?INT.TIM \?CCL64 + GET BEG,1 + PRINTN STACK + JUMP ?CND46 +?CCL64: ICALL2 WORD-PRINT,BEG +?CND46: SET 'FIRST??,FALSE-VALUE +?CND13: ADD BEG,P-WORDLEN >BEG + JUMP ?PRG1 + + + .FUNCT CAPITALIZE:ANY:1:1,PTR,?TMP1 + GETB PTR,3 + GETB P-INBUF,STACK + SUB STACK,32 + PRINTC STACK + GETB PTR,2 + SUB STACK,1 >?TMP1 + GETB PTR,3 + ADD STACK,1 + CALL WORD-PRINT,PTR,?TMP1,STACK + RSTACK + + + .FUNCT PRINT-PARSER-FAILURE:ANY:0:0,CLASS,OTHER,OTHER2,TMP,PR,N,X,?TMP1 + GET ERROR-ARGS,1 >CLASS + GET ERROR-ARGS,2 >OTHER + GET ERROR-ARGS,3 >OTHER2 + EQUAL? CLASS,PARSER-ERROR-ORPH-S \?CCL3 + GET ORPHAN-S,O-LEXPTR + SUB STACK,P-LEXV + DIV STACK,2 >P-OFLAG + PUT ORPHAN-SR,1,0 + COPYT G-LEXV,O-LEXV,LEXV-LENGTH-BYTES + COPYT G-INBUF,O-INBUF,61 + GET OOPS-TABLE,O-START + PUT OOPS-TABLE,O-AGAIN,STACK + ICALL MAKE-ROOM-FOR-TOKENS,1,O-LEXV,P-OFLAG + PUT O-LEXV,P-OFLAG,W?NO.WORD + PRINTI "[Wh" + GET ORPHAN-S,O-VERB + EQUAL? STACK,W?WALK,W?GO,W?RUN \?CCL8 + PRINTI "ere" + JUMP ?CND6 +?CCL8: GET ORPHAN-S,O-WHICH + EQUAL? STACK,1 \?CCL13 + GET ORPHAN-S,O-SYNTAX + GETB STACK,4 + JUMP ?CND11 +?CCL13: GET ORPHAN-S,O-SYNTAX + GETB STACK,8 +?CND11: EQUAL? PERSONBIT,STACK \?CCL10 + PRINTI "om" + JUMP ?CND6 +?CCL10: PRINTI "at" +?CND6: PRINTC 32 + GET ORPHAN-S,O-SUBJECT >PR + ZERO? PR /?CCL16 + GET ORPHAN-S,O-VERB >TMP + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? TMP,?TMP1,STACK,132 >X \?CCL21 + GET X,1 + JUMP ?CND19 +?CCL21: PUSH FALSE-VALUE +?CND19: BTST STACK,512 \?CCL16 + PRINTI "did " + ICALL2 TELL-THE,PR + ICALL2 THIS-IS-IT,PR + PRINTC 32 + JUMP ?CND14 +?CCL16: PRINTI "do you want " + EQUAL? WINNER,PLAYER /?CND22 + PRINTD WINNER + PRINTC 32 +?CND22: PRINTI "to " +?CND14: GET ORPHAN-S,O-VERB + CALL2 ROOT-VERB,STACK + PRINTB STACK + GET ORPHAN-S,O-PART >TMP + EQUAL? TMP,0,1 /?CND24 + PRINTC 32 + PRINTB TMP +?CND24: GET ERROR-ARGS,2 >TMP + ZERO? TMP /?CND26 + PRINTC 32 + GET ORPHAN-S,O-OBJECT >PR + ZERO? PR /?CCL30 + ICALL2 TELL-THE,PR + ICALL2 THIS-IS-IT,PR + JUMP ?CND28 +?CCL30: ICALL2 NP-PRINT,TMP +?CND28: GET ORPHAN-S,O-SYNTAX >TMP + ZERO? TMP /?CND26 + GET ORPHAN-S,O-WHICH + EQUAL? STACK,1 \?CCL35 + GET TMP,1 >TMP + JUMP ?CND33 +?CCL35: GET TMP,3 >TMP +?CND33: ZERO? TMP /?CND26 + GETB O-LEXV,P-LEXWORDS >N + SUB P-OFLAG,P-LEXELEN + GET O-LEXV,STACK >PR + GET PR,4 + ZERO? STACK \?CND38 + GET PR,3 >PR +?CND38: EQUAL? TMP,PR /?CND40 + ICALL MAKE-ROOM-FOR-TOKENS,1,O-LEXV,P-OFLAG + INC 'N + PUT O-LEXV,P-OFLAG,TMP + ADD P-OFLAG,P-LEXELEN >P-OFLAG +?CND40: PUT O-LEXV,P-OFLAG,W?NO.WORD + MUL P-WORDLEN,N + ADD 1,STACK + ICALL INBUF-PRINT,TMP,O-INBUF,O-LEXV,STACK + PRINTC 32 + PRINTB TMP +?CND26: PRINTR "?]" +?CCL3: EQUAL? CLASS,PARSER-ERROR-ORPH-NP \?CND1 + CALL2 WHICH-PRINT,OTHER + ZERO? STACK \TRUE +?CND1: EQUAL? CLASS,PARSER-ERROR-NOMULT \?CCL47 + ICALL CANT-USE-MULTIPLE,OTHER,OTHER2 + RTRUE +?CCL47: EQUAL? CLASS,PARSER-ERROR-NOOBJ \?CCL49 + ICALL CANT-FIND-OBJECT,OTHER,OTHER2 + RTRUE +?CCL49: EQUAL? CLASS,PARSER-ERROR-TMNOUN \?CCL51 + GET PARSE-RESULT,1 + ICALL2 TOO-MANY-NOUNS,STACK + RTRUE +?CCL51: GRTR? P-LEN,0 \?CND52 + SUB OTLEXV,4 >OTHER2 + CALL2 CHANGE-AND-TO-THEN?,OTHER2 + ZERO? STACK \?CCL53 + SET 'OTHER2,OTLEXV + CALL2 CHANGE-AND-TO-THEN?,OTHER2 + ZERO? STACK /?CND52 +?CCL53: ICALL CHANGE-LEXV,OTHER2,W?THEN + GET OOPS-TABLE,O-LENGTH >P-LEN + GET OOPS-TABLE,O-START >TLEXV + ICALL1 PRINT-LEXV + CALL2 PARSE-IT,FALSE-VALUE + RSTACK +?CND52: SET 'OTHER2,OTLEXV + ZERO? P-LEN \?PRD61 + CALL2 NAKED-ADJECTIVE?,OTHER2 + ZERO? STACK \?CCL59 +?PRD61: SUB OTLEXV,4 >OTHER2 + LESS? P-LEXV,OTHER2 \?CND58 + LESS? 0,P-LEN \?CND58 + CALL2 NAKED-ADJECTIVE?,OTHER2 + ZERO? STACK /?CND58 + GET OTLEXV,0 + EQUAL? STACK,W?COMMA,W?AND /?CCL59 + GET OTLEXV,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD74 + PUSH ?TMP1 + JUMP ?PEN72 +?PRD74: GET OTLEXV,0 + GET STACK,3 + GET STACK,4 +?PEN72: BAND STACK,32768 + EQUAL? STACK,-32768 \?CND58 + GET OTLEXV,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD77 + PUSH ?TMP1 + JUMP ?PEN75 +?PRD77: GET OTLEXV,0 + GET STACK,3 + GET STACK,4 +?PEN75: BAND STACK,32776 + BAND STACK,32767 + ZERO? STACK /?CND58 +?CCL59: SUB OTHER2,P-LEXV + DIV STACK,2 + ADD P-LEXELEN,STACK >CLASS + ICALL MAKE-ROOM-FOR-TOKENS,1,P-LEXV,CLASS + ICALL MAKE-ROOM-FOR-TOKENS,1,G-LEXV,CLASS + ADD OTHER2,4 + ICALL CHANGE-LEXV,STACK,W?ONE + GETB P-LEXV,P-LEXWORDS >P-LEN + GET OOPS-TABLE,O-START >TLEXV + CALL2 PARSE-IT,FALSE-VALUE + RSTACK +?CND58: CALL1 DONT-UNDERSTAND + RSTACK + + + .FUNCT NAKED-ADJECTIVE?:ANY:1:1,PTR,WD,?TMP1 + GET PTR,0 >WD + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD6 + PUSH ?TMP1 + JUMP ?PEN4 +?PRD6: GET WD,3 + GET STACK,4 +?PEN4: BAND STACK,32768 + ZERO? STACK \FALSE + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD10 + PUSH ?TMP1 + JUMP ?PEN8 +?PRD10: GET WD,3 + GET STACK,4 +?PEN8: BAND STACK,4 + BAND STACK,32767 + ZERO? STACK /FALSE + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD16 + PUSH ?TMP1 + JUMP ?PEN14 +?PRD16: GET WD,3 + GET STACK,4 +?PEN14: BTST STACK,32768 /?PRD11 + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD19 + PUSH ?TMP1 + JUMP ?PEN17 +?PRD19: GET WD,3 + GET STACK,4 +?PEN17: BAND STACK,64 + BAND STACK,32767 + ZERO? STACK \FALSE +?PRD11: EQUAL? WD,W?ONE /FALSE + RTRUE + + + .FUNCT CHANGE-AND-TO-THEN?:ANY:1:1,PTR,?TMP1 + GET PTR,0 + EQUAL? STACK,W?AND,W?COMMA \FALSE + ADD PTR,4 >PTR + GET PTR,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD11 + PUSH ?TMP1 + JUMP ?PEN9 +?PRD11: GET PTR,0 + GET STACK,3 + GET STACK,4 +?PEN9: BTST STACK,32768 /?PRD6 + GET PTR,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD14 + PUSH ?TMP1 + JUMP ?PEN12 +?PRD14: GET PTR,0 + GET STACK,3 + GET STACK,4 +?PEN12: BAND STACK,1 + BAND STACK,32767 + ZERO? STACK \TRUE +?PRD6: GET PTR,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD20 + PUSH ?TMP1 + JUMP ?PEN18 +?PRD20: GET PTR,0 + GET STACK,3 + GET STACK,4 +?PEN18: BTST STACK,32768 /?PRD15 + GET PTR,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD23 + PUSH ?TMP1 + JUMP ?PEN21 +?PRD23: GET PTR,0 + GET STACK,3 + GET STACK,4 +?PEN21: BAND STACK,64 + BAND STACK,32767 + ZERO? STACK \TRUE +?PRD15: GET PTR,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD29 + PUSH ?TMP1 + JUMP ?PEN27 +?PRD29: GET PTR,0 + GET STACK,3 + GET STACK,4 +?PEN27: BAND STACK,32768 + EQUAL? STACK,-32768 \FALSE + GET PTR,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD33 + PUSH ?TMP1 + JUMP ?PEN31 +?PRD33: GET PTR,0 + GET STACK,3 + GET STACK,4 +?PEN31: BAND STACK,32776 + BAND STACK,32767 + ZERO? STACK /FALSE + RTRUE + + + .FUNCT DONT-UNDERSTAND:ANY:0:0,?TMP1 + SET 'CLOCK-WAIT,TRUE-VALUE + GETB P-LEXV,P-LEXWORDS + EQUAL? 1,STACK \?CND1 + GET P-LEXV,P-LEXSTART + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD11 + PUSH ?TMP1 + JUMP ?PEN9 +?PRD11: GET P-LEXV,P-LEXSTART + GET STACK,3 + GET STACK,4 +?PEN9: BTST STACK,32768 /?PRD6 + GET P-LEXV,P-LEXSTART + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD14 + PUSH ?TMP1 + JUMP ?PEN12 +?PRD14: GET P-LEXV,P-LEXSTART + GET STACK,3 + GET STACK,4 +?PEN12: BAND STACK,2 + BAND STACK,32767 + ZERO? STACK \?CCL2 +?PRD6: GET P-LEXV,P-LEXSTART + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD19 + PUSH ?TMP1 + JUMP ?PEN17 +?PRD19: GET P-LEXV,P-LEXSTART + GET STACK,3 + GET STACK,4 +?PEN17: BTST STACK,32768 /?CND1 + GET P-LEXV,P-LEXSTART + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD22 + PUSH ?TMP1 + JUMP ?PEN20 +?PRD22: GET P-LEXV,P-LEXSTART + GET STACK,3 + GET STACK,4 +?PEN20: BAND STACK,4 + BAND STACK,32767 + ZERO? STACK /?CND1 +?CCL2: ICALL2 MISSING,STR?56 + RTRUE +?CND1: PRINTR "[Sorry, but I don't understand. Please say that another way, or try something else.]" + + + .FUNCT MISSING:ANY:1:1,NV + PRINTI "[I think there's a " + PRINT NV + PRINTR " missing in that sentence!]" + + + .FUNCT CANT-FIND-OBJECT:ANY:2:2,NP,PART,TMP + GET NP,3 + ZERO? STACK \?CCL3 + CALL NP-CANT-SEE,NP,PART + RSTACK +?CCL3: GET PARSE-RESULT,1 >TMP + PRINTI "[There isn't anything to " + ZERO? TMP /?CCL6 + PRINTB TMP + EQUAL? PART,0,1 /?CND4 + PRINTC 32 + PRINTB PART + JUMP ?CND4 +?CCL6: PRINTI "do that to" +?CND4: PRINTR "!]" + + + .FUNCT NP-CANT-SEE:ANY:0:2,NP,SYN,TMP + ASSIGNED? 'NP /?CND1 + CALL1 GET-NP >NP +?CND1: GET NP,2 >TMP + ZERO? TMP /?CCL5 + PRINTC 91 + ICALL2 TELL-CTHE,WINNER + ICALL2 THIS-IS-IT,WINNER + PRINTC 32 + BTST SYN,64 \?CCL8 + BTST SYN,128 /?CCL8 + EQUAL? WINNER,PLAYER,ME \?CCL13 + PRINTI "don't" + JUMP ?CND11 +?CCL13: PRINTI "doesn't" +?CND11: PRINTI " have" + JUMP ?CND6 +?CCL8: PRINTI "can't see" +?CND6: PRINTC 32 + CALL2 CAPITAL-NOUN?,TMP + ZERO? STACK \?CTR15 + GET NP,1 >TMP + ZERO? TMP /?CCL16 + GET TMP,2 + ZERO? STACK /?CCL16 +?CTR15: ICALL NP-PRINT,NP,TRUE-VALUE + JUMP ?CND14 +?CCL16: PRINTI "any " + ICALL2 NP-PRINT,NP +?CND14: PRINTC 32 + GET NP,5 >TMP + ZERO? TMP /?CCL23 + GETB TMP,1 + EQUAL? STACK,4 \?PRD27 + PRINTI "in" + JUMP ?CTR22 +?PRD27: GETB TMP,1 + EQUAL? STACK,6 \?CCL23 + GET TMP,2 >TMP + ZERO? TMP /?CCL23 + GET TMP,1 + PRINTB STACK +?CTR22: PRINTC 32 + GET TMP,3 + ICALL2 TELL-THE,STACK + GET TMP,3 + ICALL2 THIS-IS-IT,STACK + JUMP ?CND21 +?CCL23: PRINTI "right " + PRINTI "here" +?CND21: PRINTR ".]" +?CCL5: CALL1 MORE-SPECIFIC + RSTACK + + + .FUNCT WINNER-SAYS-WHICH?:ANY:1:1,NP + RFALSE + + + .FUNCT WHICH-LIST?:ANY:2:2,NP,SR,CT + GET SR,1 >CT + GET SR,0 + GRTR? CT,STACK /FALSE + EQUAL? CT,1 \TRUE + GET ORPHAN-SR+8,0 + EQUAL? STACK,PSEUDO-OBJECT \TRUE + RFALSE + + + .FUNCT WHICH-PRINT:ANY:0:1,NP,PTR,NOUN,LEN,SZ,REM,VEC + ASSIGNED? 'NP /?CND1 + CALL1 GET-NP >NP +?CND1: GET NP,8 >PTR + GET NP,2 >NOUN +?PRG3: GET PTR,0 + EQUAL? NOUN,STACK \?CCL7 + SUB PTR,P-LEXV + DIV STACK,2 >P-OFLAG + COPYT G-LEXV,O-LEXV,LEXV-LENGTH-BYTES + COPYT G-INBUF,O-INBUF,61 + GET OOPS-TABLE,O-START + PUT OOPS-TABLE,O-AGAIN,STACK + SET 'NOUN,ORPHAN-SR + SET 'PTR,FALSE-VALUE + GET NOUN,1 >LEN + GET NOUN,0 >SZ + EQUAL? WINNER,PLAYER /?CCL13 + CALL2 WINNER-SAYS-WHICH?,NP >PTR + ZERO? PTR \?CCL13 + PRINTI """I don't understand " + CALL WHICH-LIST?,NP,NOUN + ZERO? STACK /?CCL18 + PRINTI "if" + JUMP ?CND11 +?CCL7: SUB PTR,4 >PTR + GRTR? P-LEXV,PTR \?PRG3 + RFALSE +?CCL18: PRINTI "which" + ZERO? NP /?CND11 + PRINTC 32 + ICALL2 NP-PRINT,NP + JUMP ?CND11 +?CCL13: EQUAL? PTR,TRUE-VALUE /TRUE + PRINTI "[Which" + ZERO? NP /?CND23 + PRINTC 32 + ICALL2 NP-PRINT,NP +?CND23: PRINTI " do" +?CND11: PRINTI " you mean" + CALL WHICH-LIST?,NP,NOUN + ZERO? STACK /?CND25 + ZERO? PTR \?CCL28 + EQUAL? WINNER,PLAYER \?CND27 +?CCL28: PRINTC 44 +?CND27: SET 'REM,LEN + ADD NOUN,8 >VEC +?PRG31: PRINTC 32 + GET VEC,0 + ICALL2 TELL-THE,STACK + EQUAL? REM,2 \?CCL35 + EQUAL? LEN,2 /?CND36 + PRINTC 44 +?CND36: PRINTI " or" + JUMP ?CND33 +?CCL35: GRTR? REM,2 \?CND33 + PRINTC 44 +?CND33: DLESS? 'REM,1 /?CND25 + DLESS? 'SZ,1 /?CND25 + ADD VEC,2 >VEC + JUMP ?PRG31 +?CND25: EQUAL? WINNER,PLAYER /?CCL47 + ZERO? PTR \?CCL47 + PRINTR ".""" +?CCL47: PRINTR "?]" + + + .FUNCT NP-PRINT:ANY:1:2,NP,DO-QUANT,LEN,OBJ,CT,?TMP1 + LESS? 0,NP \?CCL3 + GRTR? NP,LAST-OBJECT /?CCL3 + CALL2 TELL-THE,NP + RSTACK +?CCL3: GETB NP,1 + EQUAL? STACK,3 \?CCL7 +?PRG8: GET NP,2 >LEN + ZERO? LEN /?CND10 + ICALL2 NP-PRINT,LEN +?CND10: GET NP,1 >NP + ZERO? NP /TRUE + PRINTI " and " + JUMP ?PRG8 +?CCL7: GETB NP,1 + EQUAL? STACK,4 \?CCL16 + GET NP,1 >LEN + ZERO? LEN /FALSE + DEC 'LEN +?PRG20: MUL CT,2 + ADD NOUN-PHRASE-HEADER-LEN,STACK + GET NP,STACK >OBJ + ZERO? OBJ /?CND22 + ICALL2 TELL-THE,OBJ +?CND22: IGRTR? 'CT,LEN /TRUE + PRINTI ", " + JUMP ?PRG20 +?CCL16: ZERO? DO-QUANT /?CND27 + GET NP,3 >LEN + ZERO? LEN /?CND27 + CALL2 GET-QUANTITY-WORD,LEN + PRINTB STACK + GET NP,2 + ZERO? STACK /?CND27 + PRINTC 32 +?CND27: GET NP,1 >LEN + ZERO? LEN /?CND33 + ICALL2 ADJS-PRINT,LEN +?CND33: GET NP,8 >LEN + ZERO? LEN /?CCL37 + GET LEN,0 >?TMP1 + GET NP,2 + EQUAL? ?TMP1,STACK /?CTR36 + GET LEN,0 + GET STACK,4 + BAND STACK,32768 + EQUAL? STACK,-32768 \?CCL37 + GET LEN,0 + GET STACK,4 + BAND STACK,32776 + BAND STACK,32767 + ZERO? STACK /?CCL37 + SUB LEN,4 >LEN + LESS? P-LEXV,LEN \?CCL37 + GET LEN,0 >?TMP1 + GET NP,2 + EQUAL? ?TMP1,STACK \?CCL37 +?CTR36: ADD LEN,P-WORDLEN + ICALL BUFFER-PRINT,LEN,STACK,FALSE-VALUE,TRUE-VALUE + JUMP ?CND35 +?CCL37: GET NP,2 >LEN + ZERO? LEN /?CND35 + PRINTB LEN +?CND35: GET NP,4 >LEN + ZERO? LEN /?CND47 + CALL2 PMEM?,LEN + ZERO? STACK /?CND47 + GETB LEN,1 + EQUAL? STACK,2 \?CND47 + PRINTI " of " + ICALL2 NP-PRINT,LEN +?CND47: GET NP,6 >LEN + ZERO? LEN /FALSE + CALL2 PMEM?,LEN + ZERO? STACK /FALSE + GETB LEN,1 + EQUAL? STACK,2 \FALSE + PRINTI " except " + CALL2 NP-PRINT,LEN + RSTACK + + + .FUNCT ADJS-PRINT:ANY:1:1,ADJT,LEN,WD,CT,TMP + GET ADJT,2 >LEN + ZERO? LEN /?CND1 + EQUAL? LEN,PLAYER,ME \?CCL5 + PRINTI "your " + JUMP ?CND1 +?CCL5: ICALL2 NP-PRINT,LEN + PRINTI "'s " +?CND1: GET ADJT,4 >LEN + ZERO? LEN /FALSE + ADD ADJT,10 >ADJT + GRTR? LEN,ADJS-MAX-COUNT \?CND9 + SET 'LEN,ADJS-MAX-COUNT +?CND9: DEC 'LEN + MUL 2,LEN + ADD ADJT,STACK >ADJT +?PRG11: GET ADJT,0 >WD + ZERO? WD /?CND13 + EQUAL? WD,W?MY \?CCL17 + PRINTI "your " + JUMP ?CND13 +?CCL17: EQUAL? WD,W?INT.NUM,W?INT.TIM \?CCL19 + PRINTN P-NUMBER + PRINTC 32 + JUMP ?CND13 +?CCL19: EQUAL? WD,W?NO.WORD /?CND13 + CALL2 CAPITAL-NOUN?,WD + ZERO? STACK /?CCL23 + GETB P-LEXV,P-LEXWORDS >TMP + ZERO? TMP /?CCL23 + INTBL? WD,P-LEXV+2,TMP,132 >TMP \?CCL23 + ICALL2 CAPITALIZE,TMP + JUMP ?CND21 +?CCL23: PRINTB WD +?CND21: PRINTC 32 +?CND13: IGRTR? 'CT,LEN /TRUE + SUB ADJT,2 >ADJT + JUMP ?PRG11 + + + .FUNCT TOO-MANY-NOUNS:ANY:1:1,WD + PRINTI "[I can't understand that many nouns with " + ZERO? WD /?CCL3 + PRINTC 34 + PRINTB WD + PRINTC 34 + JUMP ?CND1 +?CCL3: PRINTI "that verb" +?CND1: PRINTR ".]" + + + .FUNCT INBUF-ADD:ANY:3:3,LEN,BEG,SLOT,DBEG,TMP,?TMP1 + GET OOPS-TABLE,O-END >TMP + ZERO? TMP /?CCL3 + SET 'DBEG,TMP + JUMP ?CND1 +?CCL3: GET OOPS-TABLE,O-LENGTH + MUL P-WORDLEN,STACK >TMP + GETB G-LEXV,TMP >?TMP1 + ADD TMP,1 + GETB G-LEXV,STACK + ADD ?TMP1,STACK >DBEG +?CND1: SUB LEN,1 + ADD DBEG,STACK + LESS? INBUF-LENGTH,STACK /FALSE + ADD DBEG,LEN + PUT OOPS-TABLE,O-END,STACK + ADD P-INBUF,BEG >?TMP1 + ADD G-INBUF,DBEG + COPYT ?TMP1,STACK,LEN + PUTB G-LEXV,SLOT,DBEG + SUB SLOT,1 + PUTB G-LEXV,STACK,LEN + RTRUE + + + .FUNCT INBUF-PRINT:ANY:4:4,WD,INBUF,LEXV,SLOT,DBEG,CTR,TMP,LEN,?TMP1 + SET 'LEN,11 + GET OOPS-TABLE,O-END >TMP + ZERO? TMP /?CCL3 + SET 'DBEG,TMP + JUMP ?CND1 +?CCL3: GET OOPS-TABLE,O-LENGTH + MUL P-WORDLEN,STACK >TMP + GETB LEXV,TMP >?TMP1 + ADD TMP,1 + GETB LEXV,STACK + ADD ?TMP1,STACK >DBEG +?CND1: GETB INBUF,0 >?TMP1 + SUB LEN,1 + ADD DBEG,STACK + LESS? ?TMP1,STACK /FALSE + ADD INBUF,DBEG + DIROUT D-TABLE-ON,STACK + PRINTB WD + DIROUT D-TABLE-OFF + ADD 1,DBEG + GETB INBUF,STACK >LEN + ADD 2,DBEG >DBEG + ADD DBEG,LEN + PUT OOPS-TABLE,O-END,STACK + PUTB LEXV,SLOT,DBEG + SUB SLOT,1 + PUTB LEXV,STACK,LEN + RTRUE + + + .FUNCT YES?:ANY:0:1,NO-Q,WORD,VAL + ZERO? NO-Q \?PRG3 + PRINTC 63 +?PRG3: PRINTI " +>" + PUTB YES-INBUF,1,0 + READ YES-INBUF,YES-LEXV + GETB YES-LEXV,P-LEXWORDS + ZERO? STACK /?CND6 + GET YES-LEXV,P-LEXSTART >WORD + ZERO? WORD /?CND6 + GET WORD,4 + BTST STACK,32768 /?CCL12 + GET WORD,4 + BAND STACK,1 + BAND STACK,32767 + ZERO? STACK /?CCL12 + GET WORD,3 >VAL + JUMP ?CND10 +?CCL12: SET 'VAL,FALSE-VALUE +?CND10: EQUAL? VAL,ACT?YES \?CCL17 + SET 'VAL,TRUE-VALUE + RETURN VAL +?CCL17: EQUAL? VAL,ACT?NO /?CTR18 + EQUAL? WORD,W?N \?CCL19 +?CTR18: SET 'VAL,FALSE-VALUE + RETURN VAL +?CCL19: EQUAL? VAL,ACT?RESTART \?CCL23 + ICALL1 V-RESTART + JUMP ?CND6 +?CCL23: EQUAL? VAL,ACT?RESTORE \?CCL25 + ICALL1 V-RESTORE + JUMP ?CND6 +?CCL25: EQUAL? VAL,ACT?QUIT \?CND6 + ICALL1 V-QUIT +?CND6: PRINTI "[Please type YES or NO.]" + JUMP ?PRG3 + + + .FUNCT SETUP-ORPHAN-NP:ANY:3:4,STR,OBJ1,OBJ2,OBJ3,NUM,VEC + DIROUT D-TABLE-ON,O-INBUF + PRINT STR + DIROUT D-TABLE-OFF + PUTB O-INBUF,0,INBUF-LENGTH + LEX O-INBUF,O-LEXV + GETB O-LEXV,P-LEXWORDS >NUM + ZERO? NUM /FALSE + INTBL? 0,O-LEXV+2,NUM,132 /FALSE + GETB O-LEXV,P-LEXWORDS + MUL P-LEXELEN,STACK + SUB 1,STACK >P-OFLAG + PUT OOPS-TABLE,O-AGAIN,P-LEXV+2 + SET 'VEC,ORPHAN-SR+8 + PUT VEC,0,OBJ1 + PUT VEC,1,OBJ2 + SET 'NUM,2 + ZERO? OBJ3 /?CND6 + INC 'NUM + PUT VEC,2,OBJ3 +?CND6: PUT ORPHAN-SR,1,NUM + RTRUE + + + .FUNCT INSERT-ADJS:ANY:1:1,E,CT,PTR,WD + LESS? P-OFLAG,0 \?CCL3 + SUB 0,P-OFLAG >PTR + JUMP ?CND1 +?CCL3: SET 'PTR,P-OFLAG +?CND1: EQUAL? E,FALSE-VALUE,TRUE-VALUE /FALSE + GET E,2 >CT + ZERO? CT /?CND7 + CALL2 PMEM?,CT + ZERO? STACK /?CCL11 + GET CT,2 >CT + JUMP ?CND9 +?CCL11: EQUAL? CT,PLAYER \?CCL13 + SET 'CT,W?MY + JUMP ?CND9 +?CCL13: GETPT CT,P?SYNONYM + GET STACK,0 >CT +?CND9: EQUAL? CT,W?MY \?CCL16 + CALL INSERT-ADJS-WD,PTR,CT >PTR + JUMP ?CND7 +?CCL16: CALL INSERT-ADJS-WD,PTR,CT >PTR + CALL INSERT-ADJS-WD,PTR,W?APOSTROPHE >PTR + CALL INSERT-ADJS-WD,PTR,W?S >PTR +?CND7: GET E,4 >CT + ZERO? CT /FALSE + ADD E,10 >E +?PRG20: DLESS? 'CT,0 /TRUE + GET E,CT >WD + GET ERROR-ARGS,3 + EQUAL? WD,STACK /?PRG20 + CALL INSERT-ADJS-WD,PTR,WD >PTR + JUMP ?PRG20 + + + .FUNCT INSERT-ADJS-WD:ANY:2:2,PTR,WD + ICALL MAKE-ROOM-FOR-TOKENS,1,G-LEXV,PTR + PUT G-LEXV,PTR,WD + ADD PTR,P-LEXELEN >PTR + MUL 2,PTR + SUB STACK,1 + ICALL INBUF-PRINT,WD,G-INBUF,G-LEXV,STACK + RETURN PTR + + .ENDSEG + + .ENDI diff --git a/pstack.zabstr b/pstack.zabstr new file mode 100644 index 0000000..699fda7 --- /dev/null +++ b/pstack.zabstr @@ -0,0 +1,45 @@ + + + + + + + + +> + +) (T FIX] ADECL>)>> + >) (T >)>> + <- ,MAX-PSTACK-SIZE 1>>) (T 0>)>> +)) )) )> > > >> > + +>) (T > >> )> < +PRINTN <- ,MAX-PSTACK-SIZE .TMP>> )>> < +ZPUT .S .TMP .OBJ> .S>)> + >) (T .N>>> )> .S>)> + ) (T )>>) (T )) > < +FLUSH-PSTACK .S .N>)> .OBJ>)> + > > > 0> )>> > 0> ) (T )>> .VAL>) (T .OFFS>>>) +> + + + \ No newline at end of file diff --git a/pstack.zap b/pstack.zap new file mode 100644 index 0000000..3d803ba --- /dev/null +++ b/pstack.zap @@ -0,0 +1,18 @@ + + .SEGMENT "0" + + + .FUNCT PEEK-PSTACK:ANY:1:2,S,OFFS,N,VAL +?PRG1: POP S >VAL + PUSH VAL + INC 'N + DLESS? 'OFFS,0 \?PRG1 +?PRG5: DLESS? 'N,0 /?REP6 + POP + XPUSH STACK,S /?PRG5 + JUMP ?PRG5 +?REP6: RETURN VAL + + .ENDSEG + + .ENDI diff --git a/qverbs.zabstr b/qverbs.zabstr new file mode 100644 index 0000000..589c70a --- /dev/null +++ b/qverbs.zabstr @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> OUTSIDE? OPEN? + Q-CLOSED? LOCKED? +UNLOCKED? DEAD? ALIVE? +QUIET?>> + + + + + + + + + +> + + + + + + + + + + + + + + + + + + + + + +> + + + + + + \ No newline at end of file diff --git a/qverbs.zap b/qverbs.zap new file mode 100644 index 0000000..e0e65aa --- /dev/null +++ b/qverbs.zap @@ -0,0 +1,671 @@ + + .SEGMENT "0" + + + .FUNCT WHAT-F:ANY:0:0,OBJ,TMP,NOT?,LOC? + GET PARSE-RESULT,16 + BAND PARSE-NOT,STACK >NOT? + GET PARSE-RESULT,9 >LOC? + EQUAL? PRSA,V?BE? /FALSE + GET PARSE-RESULT,10 >OBJ + EQUAL? OBJ,W?WHO,W?WHAT,W?WHERE /FALSE + GET PARSE-RESULT,10 >OBJ + EQUAL? OBJ,W?WHY,W?WHEN,W?HOW /FALSE + CALL1 EVERYWHERE-VERB? + ZERO? STACK \?CCL9 + PRINTR "That's precisely the sort of question you'll have to answer for yourself." +?CCL9: EQUAL? PRSI,INTPP \FALSE + CALL1 P-PP-OBJ >OBJ + ZERO? OBJ /FALSE + ZERO? NOT? \FALSE + CALL1 P-PP-PREP >TMP + ZERO? TMP \?PEN17 + GET LOC?,1 >TMP +?PEN17: EQUAL? TMP,W?BEHIND \?CCL22 + ICALL PERFORM,V?LOOK-BEHIND,OBJ + RTRUE +?CCL22: EQUAL? TMP,W?DOWN \?CCL24 + ICALL PERFORM,V?LOOK-DOWN,OBJ + RTRUE +?CCL24: EQUAL? TMP,W?IN,W?ON,W?THROUGH \?CCL26 + ICALL PERFORM,V?LOOK-INSIDE,OBJ + RTRUE +?CCL26: EQUAL? TMP,W?UNDER \FALSE + ICALL PERFORM,V?LOOK-UNDER,OBJ + RTRUE + + + .FUNCT TELL-Q-WORD:ANY:0:0,WD + EQUAL? PRSA,V?BE? \?CCL3 + PRINTI "if" + RTRUE +?CCL3: GET PARSE-RESULT,10 >WD + EQUAL? WD,W?WHO,W?WHAT,W?WHERE /?CTR4 + GET PARSE-RESULT,10 >WD + EQUAL? WD,W?WHY,W?WHEN,W?HOW \?CCL5 +?CTR4: PRINTB WD + RTRUE +?CCL5: PRINTI "whether" + RTRUE + + + .FUNCT TRY-QCONTEXT?:ANY:0:0,W,X,?TMP1 + ZERO? QCONTEXT /FALSE + IN? QCONTEXT,HERE \FALSE + EQUAL? QCONTEXT,WINNER /FALSE + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? P-PRSA-WORD,?TMP1,STACK,132 >X \?CCL12 + GET X,1 + JUMP ?CND10 +?CCL12: PUSH FALSE-VALUE +?CND10: BTST STACK,512 /?CCL3 + EQUAL? QCONTEXT,PRSO /FALSE + EQUAL? PRSA,V?ASK-ABOUT /FALSE + EQUAL? PRSA,V?TELL-ABOUT \?CCL3 + EQUAL? PRSO,ME /FALSE +?CCL3: SET 'W,WINNER + SET 'WINNER,QCONTEXT + ICALL PERFORM,PRSA,PRSO,PRSI + SET 'WINNER,W + RTRUE + + + .FUNCT PRE-BE:ANY:0:0 + CALL1 TRY-QCONTEXT? + ZERO? STACK \TRUE + RFALSE + + + .FUNCT V-BE:ANY:0:0,TMP,NOT?,ADJ?,LOC?,OBJ,PREP + GET PARSE-RESULT,16 + BAND PARSE-NOT,STACK >NOT? + GET PARSE-RESULT,11 >ADJ? + GET PARSE-RESULT,9 >LOC? + EQUAL? PRSA,V?HOW /?CTR2 + EQUAL? PRSA,V?WHEN,V?WHY,V?WHERE /?CTR2 + EQUAL? PRSA,V?WHAT,V?WHO,V?BE? /?CTR2 + GET PARSE-RESULT,10 >TMP + EQUAL? TMP,W?WHO,W?WHAT,W?WHERE /?CTR2 + GET PARSE-RESULT,10 >TMP + EQUAL? TMP,W?WHY,W?WHEN,W?HOW \?CCL3 +?CTR2: CALL1 TRY-QCONTEXT? + ZERO? STACK \TRUE + EQUAL? PRSI,INTADJ \?CCL13 + EQUAL? PRSO,ME,PLAYER \?CCL16 + EQUAL? PRSA,V?BE? \?CCL19 + PRINTI "You" + JUMP ?CND17 +?CCL19: PRINT WHO-KNOWS-STRING + ICALL1 TELL-Q-WORD + PRINTI " you" +?CND17: CALL2 IS-PRSO-ADJ?,ADJ? + ZERO? STACK /?CCL22 + PRINTI " are " + JUMP ?CND14 +?CCL22: PRINTI " aren't " + JUMP ?CND14 +?CCL16: EQUAL? PRSA,V?BE? \?CCL25 + ICALL2 TELL-CTHE,PRSO + JUMP ?CND23 +?CCL25: PRINT WHO-KNOWS-STRING + ICALL1 TELL-Q-WORD + PRINTC 32 + ICALL2 TELL-THE,PRSO +?CND23: ICALL2 PRINT-IS/ARE,PRSO + CALL2 IS-PRSO-ADJ?,ADJ? + ZERO? STACK \?CND26 + PRINTI "n't" +?CND26: PRINTC 32 +?CND14: PRINTB ADJ? + PRINTR "." +?CCL13: EQUAL? PRSI,INTPP \?CCL29 + CALL1 P-PP-PREP >PREP + ZERO? PREP /?CCL32 + CALL1 P-PP-OBJ >OBJ + ZERO? OBJ /?CCL32 + EQUAL? PRSA,V?BE? \?CCL37 + CALL RIGHT-PREP?,PREP,PRSO,OBJ + ZERO? STACK \?PRF40 + PUSH 1 + JUMP ?PEN38 +?PRF40: PUSH 0 +?PEN38: ICALL PRSO-IS,STACK,TRUE-VALUE + PRINTC 32 + PRINTB PREP + PRINTC 32 + ICALL2 TELL-THE,OBJ + PRINTR "." +?CCL37: PRINT WHO-KNOWS-STRING + ICALL1 TELL-Q-WORD + ICALL2 PRSO-IS,NOT? + PRINTC 32 + PRINTB PREP + PRINTC 32 + ICALL2 TELL-THE,OBJ + PRINTR "." +?CCL32: PRINT WHO-KNOWS-STRING + ICALL1 TELL-Q-WORD + ICALL2 PRSO-IS,NOT? + PRINTC 32 + GET LOC?,1 + PRINTB STACK + PRINTC 32 + GET LOC?,2 + ICALL2 NP-PRINT,STACK + PRINTR "." +?CCL29: GET PARSE-RESULT,13 + ZERO? STACK /?CCL42 + CALL1 WHO-KNOWS + RSTACK +?CCL42: ZERO? PRSI \?CCL44 + GET PARSE-RESULT,10 + EQUAL? STACK,W?WHERE \?CCL44 + EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL49 + LOC PRSO >LOC? + JUMP ?CND47 +?CCL49: SET 'LOC?,FALSE-VALUE +?CND47: ZERO? LOC? \?CCL52 + PRINTR "That's an excellent question." +?CCL52: IN? PRSO,HERE \?CCL54 + ICALL PRSO-IS,FALSE-VALUE,TRUE-VALUE + PRINTR " here." +?CCL54: EQUAL? LOC?,GENERIC-OBJECTS \?CCL56 + PRINTI "You don't know where " + ICALL2 TELL-THE,PRSO + ICALL2 PRINT-IS/ARE,PRSO + PRINTR "." +?CCL56: EQUAL? LOC?,GLOBAL-OBJECTS \?CCL58 + PRINTI "No doubt " + ICALL2 TELL-THE,PRSO + ICALL2 PRINT-IS/ARE,PRSO + PRINTR " around here somewhere." +?CCL58: EQUAL? LOC?,LOCAL-GLOBALS \?CCL60 + CALL GLOBAL-IN?,PRSO,HERE + ZERO? STACK /?CCL60 + ICALL2 TELL-CTHE,PRSO + ICALL2 PRINT-IS/ARE,PRSO + PRINTR " nearby." +?CCL60: FSET? LOC?,PERSONBIT \?CCL64 + ICALL2 TELL-CTHE,LOC? + PRINTI " has " + ICALL2 TELL-THE,PRSO + PRINTR "." +?CCL64: CALL2 META-LOC,PRSO + EQUAL? STACK,HERE \?CCL66 + ICALL2 TELL-CTHE,PRSO + ICALL2 PRINT-IS/ARE,PRSO + PRINTI " in " + ICALL2 TELL-THE,LOC? + PRINTR "." +?CCL66: IN? LOC?,ROOMS \?CCL68 + ICALL2 TELL-CTHE,PRSO + ICALL2 PRINT-IS/ARE,PRSO + PRINTI " probably " + FSET? PRSO,TOUCHBIT \?CCL71 + PRINTI "still in the place called """ + PRINTD LOC? + PRINTR ".""" +?CCL71: FSET? PRSO,PERSONBIT /?CND72 + PRINTI "lying " +?CND72: PRINTR "around somewhere." +?CCL68: PRINT WHO-KNOWS-STRING + PRINTI "where " + ICALL2 TELL-THE,PRSO + ICALL2 PRINT-IS/ARE,PRSO + PRINTR "." +?CCL44: PRINT WHO-KNOWS-STRING + ICALL1 TELL-Q-WORD + EQUAL? PRSO,FALSE-VALUE,ROOMS /?CND74 + ICALL2 PRSO-IS,NOT? + ZERO? PRSI /?CND74 + PRINTC 32 + ICALL2 PRINTA,PRSI +?CND74: PRINTR "." +?CCL3: EQUAL? PRSI,INTADJ \?CCL80 + CALL2 IS-PRSO-ADJ?,ADJ? + ZERO? STACK /?CCL83 + ZERO? NOT? /?CCL86 + PRINTI "Wrong," + JUMP ?CND84 +?CCL86: PRINTI "Right," +?CND84: ICALL2 PRSO-IS,FALSE-VALUE + JUMP ?CND81 +?CCL83: ZERO? NOT? /?CCL89 + PRINTI "Right," + JUMP ?CND87 +?CCL89: PRINTI "Wrong," +?CND87: ICALL2 PRSO-IS,TRUE-VALUE +?CND81: PRINTC 32 + PRINTB ADJ? + PRINTR "." +?CCL80: EQUAL? PRSI,INTPP \?CCL91 + PRINTI "So, you say" + ICALL2 PRSO-IS,NOT? + PRINTC 32 + CALL1 P-PP-PREP >TMP + ZERO? TMP /?CCL94 + PRINTB TMP + JUMP ?CND92 +?CCL94: GET LOC?,1 + PRINTB STACK +?CND92: PRINTC 32 + CALL1 P-PP-OBJ >TMP + ZERO? TMP /?CCL97 + ICALL2 TELL-THE,TMP + JUMP ?CND95 +?CCL97: GET LOC?,2 + ICALL2 NP-PRINT,STACK +?CND95: PRINTR "." +?CCL91: EQUAL? P-PRSA-WORD,W?BE \?CCL99 + EQUAL? PRSO,WINNER \?CCL102 + ICALL2 TELL-CTHE,PRSO + PRINTI " is already " + PRINTI "that" + PRINTR "." +?CCL102: PRINTR "That would take a bit of magic." +?CCL99: PRINTI "So you think" + ICALL2 PRSO-IS,NOT? + ZERO? PRSI /?CND103 + PRINTC 32 + ICALL2 PRINTA,PRSI +?CND103: PRINTR "." + + + .FUNCT RIGHT-PREP?:ANY:3:3,PREP,OBJ,CONT + IN? OBJ,CONT \FALSE + EQUAL? PREP,W?IN,W?INSIDE \?CCL5 + CALL2 SEE-INSIDE?,CONT + ZERO? STACK /FALSE + RTRUE +?CCL5: EQUAL? PREP,W?ON \FALSE + FSET? CONT,SURFACEBIT /TRUE + RFALSE + + + .FUNCT V-BE?:ANY:0:0 + CALL1 V-BE + RSTACK + + + .FUNCT V-WHO:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + CALL1 MORE-SPECIFIC + RSTACK +?CCL3: ZERO? PRSI \?CCL5 + PRINTI "You don't know anything special about " + ICALL2 TELL-THE,PRSO + PRINTR "." +?CCL5: CALL1 V-BE + RSTACK + + + .FUNCT V-WHAT:ANY:0:0 + CALL1 V-WHO + RSTACK + + + .FUNCT PRE-WHERE:ANY:0:0 + ZERO? PRSS \FALSE + ZERO? PRSQ \FALSE + ICALL PERFORM,V?FIND,PRSO,PRSI + RTRUE + + + .FUNCT V-WHERE:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + CALL1 MORE-SPECIFIC + RSTACK +?CCL3: CALL1 V-BE + RSTACK + + + .FUNCT V-WHEN:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + CALL1 MORE-SPECIFIC + RSTACK +?CCL3: CALL1 V-BE + RSTACK + + + .FUNCT V-WHY:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + CALL1 MORE-SPECIFIC + RSTACK +?CCL3: CALL1 V-BE + RSTACK + + + .FUNCT V-HOW:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + CALL1 MORE-SPECIFIC + RSTACK +?CCL3: CALL1 V-BE + RSTACK + + + .FUNCT QUIET?:ANY:1:1,OBJ + RTRUE + + + .FUNCT OUTSIDE?:ANY:1:1,OBJ + FSET? HERE,OUTSIDE /TRUE + RFALSE + + + .FUNCT OPEN?:ANY:1:1,OBJ + FSET? OBJ,OPENABLE /?PRD3 + FSET? OBJ,DOORBIT \FALSE +?PRD3: FSET? OBJ,OPENBIT /TRUE + RFALSE + + + .FUNCT Q-CLOSED?:ANY:1:1,OBJ + FSET? OBJ,OPENABLE /?PRD3 + FSET? OBJ,DOORBIT \FALSE +?PRD3: FSET? OBJ,OPENBIT /FALSE + RTRUE + + + .FUNCT LOCKED?:ANY:1:1,OBJ + FSET? OBJ,DOORBIT \FALSE + FSET? OBJ,LOCKED /TRUE + RFALSE + + + .FUNCT UNLOCKED?:ANY:1:1,OBJ + FSET? OBJ,DOORBIT \FALSE + FSET? OBJ,LOCKED /FALSE + RTRUE + + + .FUNCT DEAD?:ANY:1:1,OBJ + FSET? OBJ,PERSONBIT \TRUE + FSET? OBJ,DEAD /TRUE + RFALSE + + + .FUNCT ALIVE?:ANY:1:1,OBJ + FSET? OBJ,PERSONBIT \FALSE + FSET? OBJ,DEAD /FALSE + RTRUE + + + .FUNCT PRSO-IS:ANY:1:2,NOT?,CAP? + EQUAL? PRSO,ME,PLAYER \?CCL3 + ZERO? CAP? /?CCL6 + PRINTI "You" + JUMP ?CND4 +?CCL6: PRINTI " you" +?CND4: PRINTI " are" + ZERO? NOT? /FALSE + PRINTI "n't" + RTRUE +?CCL3: ZERO? CAP? /?CCL12 + ICALL2 TELL-CTHE,PRSO + JUMP ?CND10 +?CCL12: PRINTC 32 + ICALL2 TELL-THE,PRSO +?CND10: ICALL2 PRINT-IS/ARE,PRSO + ZERO? NOT? /FALSE + PRINTI "n't" + RTRUE + + + .FUNCT PRINT-IS/ARE:ANY:1:1,OBJ + FSET? OBJ,PLURAL /?CTR2 + EQUAL? OBJ,ME,YOU \?CCL3 +?CTR2: PRINTI " are" + RTRUE +?CCL3: PRINTI " is" + RTRUE + + + .FUNCT IS-PRSO-ADJ?:ANY:1:1,ADJ,TMP + GETPT PRSO,P?ADJECTIVE >TMP + ZERO? TMP /?CCL3 + PTSIZE TMP + DIV STACK,2 + INTBL? ADJ,TMP,STACK /TRUE +?CCL3: GET ADJ-TABLE,0 + INTBL? ADJ,ADJ-TABLE,STACK >TMP \FALSE + GET TMP,1 + CALL STACK,PRSO + ZERO? STACK \TRUE + RFALSE + + + .FUNCT V-STATEMENT:ANY:0:0 + CALL1 V-DO? + RSTACK + + + .FUNCT WHO-KNOWS:ANY:0:1,WD,OBJ,SUBJ,V,M,N,?TMP1 + ASSIGNED? 'WD /?CND1 + GET PARSE-RESULT,14 >WD +?CND1: GET PARSE-RESULT,10 + EQUAL? STACK,W?WHO,W?WHAT \?CCL5 + GET P-PRSA-WORD,3 + GET STACK,2 >OBJ + ZERO? OBJ /?CCL5 + CALL GET-SYNTAX,OBJ,1,0,TRUE-VALUE + ZERO? STACK /?CCL5 + CALL DETERMINE-OBJ,FALSE-VALUE,1,TRUE-VALUE >OBJ + ZERO? OBJ /?CCL5 + GET OBJ,3 >OBJ + ZERO? OBJ /?CCL5 + PRINTI "Perhaps" + JUMP ?CND3 +?CCL5: SET 'OBJ,FALSE-VALUE + PRINT WHO-KNOWS-STRING + ICALL1 TELL-Q-WORD +?CND3: GET PARSE-RESULT,13 >SUBJ + ZERO? SUBJ /?CCL13 + GET SUBJ,3 >SUBJ + JUMP ?CND11 +?CCL13: EQUAL? PRSO,FALSE-VALUE,ROOMS /?CCL15 + SET 'SUBJ,PRSO +?CND11: PRINTC 32 + EQUAL? SUBJ,ME,PLAYER \?CCL18 + PRINTI "you" + JUMP ?CND16 +?CCL15: PRINTR "." +?CCL18: ICALL2 TELL-THE,SUBJ +?CND16: ZERO? WD /?CND19 + EQUAL? WD,W?DO,W?DOES,W?DID \?CCL22 + GET PARSE-RESULT,13 + ZERO? STACK \?CND19 +?CCL22: PRINTC 32 + PRINTB WD +?CND19: GET PARSE-RESULT,13 + ZERO? STACK /?CND25 + PRINTC 32 + ZERO? WD /?CCL29 + EQUAL? WD,W?DID \?CCL32 + GETB VOCAB,0 + ADD 1,STACK + ADD VOCAB,STACK >V + GETB V,0 + BOR 128,STACK >M + EQUAL? P-PRSA-WORD,W?GET \?CCL37 + PRINTI "got" + JUMP ?CND30 +?CCL37: ADD V,9 >?TMP1 + ADD V,1 + GET STACK,0 + INTBL? P-PRSA-WORD,?TMP1,STACK,M >N \?CCL39 + GET N,1 + BTST STACK,PAST-TENSE \?CCL39 + PRINTB N + JUMP ?CND30 +?CCL39: PRINTB P-PRSA-WORD + PRINTI "ed" + JUMP ?CND30 +?CCL32: PRINTB P-PRSA-WORD + EQUAL? WD,W?DO,W?DOES \?CND30 + EQUAL? SUBJ,ME,PLAYER /?CND30 + FSET? SUBJ,PLURAL /?CND30 + PRINTC 115 +?CND30: ZERO? OBJ /?CCL49 + PRINTC 32 + EQUAL? OBJ,SUBJ \?CCL52 + FSET? OBJ,PERSONBIT /?CCL55 + PRINTI "it" + JUMP ?CND53 +?CCL55: FSET? OBJ,FEMALE \?CCL57 + PRINTI "her" + JUMP ?CND53 +?CCL57: PRINTI "him" +?CND53: PRINTI "self" + JUMP ?CND25 +?CCL52: ICALL2 TELL-THE,OBJ + JUMP ?CND25 +?CCL49: ICALL1 ECHO-NOUNS + JUMP ?CND25 +?CCL29: PRINTB P-PRSA-WORD +?CND25: PRINTR "." + + + .FUNCT ECHO-NOUNS:ANY:0:0,WD + EQUAL? PRSO,0,WHAT,NOT-HERE-OBJECT /?CND1 + GET PARSE-RESULT,7 >WD + ZERO? WD /?CND3 + PRINTC 32 + PRINTB WD +?CND3: PRINTC 32 + ICALL2 TELL-THE,PRSO +?CND1: EQUAL? PRSI,0,WHAT,NOT-HERE-OBJECT /FALSE + GET PARSE-RESULT,8 >WD + ZERO? WD /?CND8 + PRINTC 32 + PRINTB WD +?CND8: PRINTC 32 + CALL2 TELL-THE,PRSI + RSTACK + + + .FUNCT V-CAN?:ANY:0:0 + CALL2 WHO-KNOWS,W?CAN + RSTACK + + + .FUNCT V-MAY?:ANY:0:0 + CALL2 WHO-KNOWS,W?MAY + RSTACK + + + .FUNCT V-DO?:ANY:0:0 + CALL1 TRY-QCONTEXT? + ZERO? STACK \TRUE + GET PARSE-RESULT,16 + BTST STACK,PARSE-QUESTION /?CCL5 + ZERO? PRSS \?CCL8 + ICALL1 MORE-SPECIFIC + RTRUE +?CCL8: PRINTI "So you think" + EQUAL? PRSS,ME,PLAYER \?CCL11 + PRINTI " you " + GET PARSE-RESULT,16 + BTST STACK,1 \?CND9 + PRINTI "don't " + JUMP ?CND9 +?CCL11: PRINTC 32 + ICALL2 TELL-THE,PRSS + PRINTC 32 + GET PARSE-RESULT,16 + BTST STACK,1 \?CND9 + PRINTI "doesn't " +?CND9: PRINTB P-PRSA-WORD + ICALL1 ECHO-NOUNS + PRINTR "." +?CCL5: CALL1 WHO-KNOWS + RSTACK + + + .FUNCT V-COULD?:ANY:0:0 + CALL2 WHO-KNOWS,W?COULD + RSTACK + + + .FUNCT V-WOULD?:ANY:0:0 + CALL2 WHO-KNOWS,W?WOULD + RSTACK + + + .FUNCT V-SHOULD?:ANY:0:0 + CALL2 WHO-KNOWS,W?SHOULD + RSTACK + + + .FUNCT V-MIGHT?:ANY:0:0 + CALL2 WHO-KNOWS,W?MIGHT + RSTACK + + + .FUNCT V-WILL?:ANY:0:0 + CALL2 WHO-KNOWS,W?WILL + RSTACK + + + .FUNCT V-MUST?:ANY:0:0 + CALL2 WHO-KNOWS,W?MUST + RSTACK + + + .FUNCT PRE-DROP?:ANY:0:0 + LOC PRSS + EQUAL? PRSO,STACK \FALSE + ICALL PERFORM,V?DISEMBARK,PRSO,PRSI + RTRUE + + + .FUNCT V-DROP?:ANY:0:0 + EQUAL? PRSO,ROOMS \FALSE + PRINT STR?58 + PRINTR "hanging from anything." + + + .FUNCT V-DISEMBARK?:ANY:0:0,AV + LOC PRSS >AV + EQUAL? PRSO,FALSE-VALUE,ROOMS \?CCL3 + ZERO? AV /?CCL6 + IN? AV,ROOMS /?CCL6 + ICALL PERFORM,PRSA,AV,PRSI + RTRUE +?CCL6: PRINT STR?58 + PRINTR "in anything." +?CCL3: ZERO? AV /?CCL10 + IN? AV,ROOMS /?CCL10 + EQUAL? AV,PRSO /FALSE + CALL HELD?,AV,PRSO + ZERO? STACK \FALSE + PRINT STR?59 + FSET? AV,SURFACEBIT \?CCL20 + PRINTI " on " + JUMP ?CND18 +?CCL20: PRINTI " in " +?CND18: ICALL2 TELL-THE,AV + PRINTR "!" +?CCL10: LOC PRSO + ZERO? STACK /?CCL22 + ICALL PERFORM,V?TAKE,PRSO,PRSI + RTRUE +?CCL22: PRINT STR?60 + CRLF + RTRUE + + + .FUNCT PRE-TAKE?:ANY:0:0 + ZERO? PRSI \FALSE + CALL1 PRE-TAKE + RSTACK + + + .FUNCT V-TAKE?:ANY:0:0 + GET PARSE-RESULT,10 + ZERO? STACK \FALSE + PRINTR "Seems reasonable." + + .ENDSEG + + .ENDI diff --git a/reds.zabstr b/reds.zabstr new file mode 100644 index 0000000..bb3fdb7 --- /dev/null +++ b/reds.zabstr @@ -0,0 +1,91 @@ +)( +"WORD-FLAGS-IN-TABLE" T)("IN-ZILCH" T)("P-ZORK0" %<>)) (("DIR-VERB-PRSI?" +"DEFS" #WORD *35522513507*))> + + + + + + + + + + ,V?MOVE-DIR ,V?RIDE-DIR ,V?ROLL-DIR ,V?SET-DIR> < +NOT ,INTDIR ,LEFT-RIGHT>>>>> +>> +>> + ) (T .NUM)>> + + + + + + + + + + + + + + + + + +> + + >)> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/reds.zap b/reds.zap new file mode 100644 index 0000000..5ad30f8 --- /dev/null +++ b/reds.zap @@ -0,0 +1,1678 @@ + + .SEGMENT "0" + + + .FUNCT DIR-VERB-PRSI?:ANY:1:1,NP + RFALSE + + + .FUNCT RED-FCN:ANY:0:2,N,TYP + ZERO? N /TRUE + EQUAL? N,1 \FALSE + POP DATA-STACK + RSTACK + + + .FUNCT RED-PART:ANY:0:2,N,TYP,WD,?TMP1 + ZERO? N /TRUE + POP DATA-STACK >WD + EQUAL? WD,TRUE-VALUE,W?OF /?CCL5 + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD12 + PUSH ?TMP1 + JUMP ?PEN10 +?PRD12: GET WD,3 + GET STACK,4 +?PEN10: BTST STACK,32768 /FALSE + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD15 + PUSH ?TMP1 + JUMP ?PEN13 +?PRD15: GET WD,3 + GET STACK,4 +?PEN13: BAND STACK,2048 + BAND STACK,32767 + ZERO? STACK /FALSE +?CCL5: EQUAL? N,1 \?CCL17 + RETURN WD +?CCL17: POP DATA-STACK + RSTACK + + + .FUNCT GET-SYNTAX:ANY:2:4,VA,NUM,PREP,GWIM,LEN,CT,S2,P2,GWIM-NOW,SYN + EQUAL? PREP,1 \?CND1 + SET 'PREP,0 +?CND1: EQUAL? NUM,1 \?CCL5 + SET 'LEN,6 + JUMP ?CND3 +?CCL5: SET 'LEN,10 +?CND3: GET VA,0 >CT + GET PARSE-RESULT,8 >P2 + SET 'GWIM-NOW,FALSE-VALUE + ADD VA,2 >SYN +?PRG6: GET SYN,1 + EQUAL? PREP,STACK \?CCL10 + EQUAL? NUM,1 /?CTR9 + GET SYN,3 >S2 + EQUAL? P2,S2 /?CTR9 + ZERO? S2 \?PRD16 + EQUAL? P2,1 /?CTR9 +?PRD16: ZERO? GWIM-NOW /?CCL10 + EQUAL? NUM,1 \?CND22 + SET 'S2,PREP +?CND22: ZERO? S2 /?CCL10 + PUT GWIM-MSG,0,S2 +?CTR9: PUT PARSE-RESULT,3,SYN + GET SYN,0 + PUT PARSE-RESULT,4,STACK + PUT PARSE-RESULT,7,PREP + RETURN SYN +?CCL10: DLESS? 'CT,1 \?CCL26 + ZERO? GWIM /FALSE + ZERO? GWIM-NOW \FALSE + GET VA,0 >CT + SET 'GWIM-NOW,TRUE-VALUE + ADD VA,2 >SYN + JUMP ?PRG6 +?CCL26: ADD SYN,LEN >SYN + JUMP ?PRG6 + + + .FUNCT RED-SV:ANY:0:2,N,TYP,SYN,VERB,PART,DATA,OBJ + POP DATA-STACK >PART + POP DATA-STACK + GET PARSE-RESULT,1 + CALL2 ROOT-VERB,STACK >VERB + ZERO? VERB /FALSE + GET VERB,3 >DATA + ZERO? DATA /FALSE + EQUAL? PART,1 \?CCL8 + GET DATA,0 + GRTR? 0,STACK /?CCL8 + GET DATA,0 + PUT PARSE-RESULT,4,STACK + RTRUE +?CCL8: GET DATA,2 >SYN + ZERO? SYN /?CCL12 + CALL GET-SYNTAX,SYN,1,PART,TRUE-VALUE >SYN + ZERO? SYN /?CCL12 + CALL DETERMINE-OBJ,FALSE-VALUE,1 >OBJ + ZERO? OBJ /?CCL12 + PUT PARSE-RESULT,5,OBJ + RTRUE +?CCL12: GET DATA,3 >SYN + ZERO? SYN /FALSE + CALL GET-SYNTAX,SYN,2,PART,TRUE-VALUE >SYN + ZERO? SYN /FALSE + CALL DETERMINE-OBJ,FALSE-VALUE,1 >OBJ + ZERO? OBJ /FALSE + PUT PARSE-RESULT,5,OBJ + GET OBJ,3 + PUT ORPHAN-S,O-OBJECT,STACK + CALL DETERMINE-OBJ,FALSE-VALUE,2 >OBJ + ZERO? OBJ /FALSE + PUT PARSE-RESULT,6,OBJ + RTRUE + + + .FUNCT ROOT-VERB:ANY:1:1,VERB,DATA,X,?TMP1 + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? VERB,?TMP1,STACK,132 >X \?CCL7 + GET X,1 + JUMP ?CND5 +?CCL7: PUSH FALSE-VALUE +?CND5: BTST STACK,512 /?PRD4 + RETURN VERB +?PRD4: GET VERB,3 >DATA + ZERO? DATA /?CND1 + SET 'VERB,DATA +?CND1: RETURN VERB + + + .FUNCT RED-SVN:ANY:0:2,N,TYP,VERB,PART1,PART2,DATA,OBJ + POP DATA-STACK >PART2 + POP DATA-STACK >OBJ + POP DATA-STACK >PART1 + POP DATA-STACK + GET PARSE-RESULT,1 + CALL2 ROOT-VERB,STACK >VERB + ZERO? VERB /FALSE + GET VERB,3 >DATA + ZERO? DATA /FALSE + EQUAL? PART1,TRUE-VALUE \?CND6 + CALL SVN,PART2,DATA,OBJ + ZERO? STACK \TRUE + PUT PARSE-RESULT,8,PART2 +?CND6: CALL SVN,PART1,DATA,OBJ + RSTACK + + + .FUNCT SVN:ANY:3:3,PART,DATA,OBJ,SYN,OBJ1,OBJ2 + GET PARSE-RESULT,8 + ZERO? STACK \?CCL3 + GET DATA,2 >SYN + ZERO? SYN /?CCL3 + CALL GET-SYNTAX,SYN,1,PART >SYN + ZERO? SYN /?CCL3 + CALL DETERMINE-OBJ,OBJ,1 >OBJ1 + ZERO? OBJ1 \?CCL9 + GETB SYN,5 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,OBJ,PART,STACK + RSTACK +?CCL9: GET OBJ1,3 + EQUAL? INTDIR,STACK \?CCL11 + GET PARSE-RESULT,1 + EQUAL? STACK,W?WALK,W?GO,W?RUN \?CCL11 + GET OBJ,2 + XPUSH STACK,DATA-STACK \?CCL11 + CALL2 RED-SD,1 + RSTACK +?CCL11: PUT PARSE-RESULT,5,OBJ1 + RETURN PARSE-RESULT +?CCL3: GET DATA,3 >SYN + ZERO? SYN /FALSE + CALL GET-SYNTAX,SYN,2,PART,TRUE-VALUE >SYN + ZERO? SYN /FALSE + CALL DETERMINE-OBJ,OBJ,1 >OBJ1 + ZERO? OBJ1 \?CCL21 + GETB SYN,5 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,OBJ,PART,STACK + RSTACK +?CCL21: PUT PARSE-RESULT,5,OBJ1 + GET OBJ1,3 + PUT ORPHAN-S,O-OBJECT,STACK + CALL DETERMINE-OBJ,FALSE-VALUE,2 >OBJ2 + ZERO? OBJ2 /FALSE + PUT PARSE-RESULT,6,OBJ2 + RETURN PARSE-RESULT + + + .FUNCT RED-SVPNPN:ANY:0:2,N,TYP,N1,N2,PART,P2,OBJ1,OBJ2,SYN,?TMP1 + POP DATA-STACK >N2 + POP DATA-STACK >P2 + EQUAL? P2,TRUE-VALUE \?CCL3 + GET GWIM-MSG,0 >?TMP1 + ZERO? ?TMP1 /?PRD6 + PUSH ?TMP1 + JUMP ?PEN4 +?PRD6: PUSH 1 +?PEN4: PUT PARSE-RESULT,8,STACK + JUMP ?CND1 +?CCL3: PUT PARSE-RESULT,8,P2 +?CND1: POP DATA-STACK >N1 + POP DATA-STACK >PART + GET PARSE-RESULT,1 + CALL2 ROOT-VERB,STACK >SYN + ZERO? SYN \?CCL10 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL10: GET SYN,3 >SYN + ZERO? SYN /FALSE + GET SYN,3 >SYN + ZERO? SYN \?CCL14 + CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN + RSTACK +?CCL14: CALL GET-SYNTAX,SYN,2,PART >SYN + ZERO? SYN \?CCL16 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL16: CALL DETERMINE-OBJ,N1,1 >OBJ1 + ZERO? OBJ1 \?CCL18 + GETB SYN,5 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,N1,PART,STACK + RSTACK +?CCL18: CALL DETERMINE-OBJ,N2,2 >OBJ2 + ZERO? OBJ2 \?CCL20 + GETB SYN,9 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,N2,PART,STACK + RSTACK +?CCL20: CALL2 DIR-VERB-PRSI?,OBJ2 + ZERO? STACK /?CCL22 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL22: POP DATA-STACK + PUT PARSE-RESULT,5,OBJ1 + PUT PARSE-RESULT,6,OBJ2 + RTRUE + + + .FUNCT RED-SVD:ANY:0:2,N,TYP,DIR + POP DATA-STACK >DIR + GET PARSE-RESULT,1 + EQUAL? STACK,W?WALK,W?GO,W?RUN \FALSE + POP DATA-STACK + XPUSH DIR,DATA-STACK /?BOGUS4 +?BOGUS4: SUB N,1 + CALL RED-SD,STACK,TYP + RSTACK + + + .FUNCT RED-SP:ANY:0:2,N,TYP,A,?TMP1 + POP DATA-STACK >A + DEC 'N + EQUAL? N,2 \?CND1 + EQUAL? TRUE-VALUE,A /?CND1 + GET A,3 >?TMP1 + ZERO? ?TMP1 /?PRD7 + PUSH ?TMP1 + JUMP ?PEN5 +?PRD7: PUSH A +?PEN5: PUT PARSE-RESULT,0,STACK +?CND1: FSTACK N,DATA-STACK + RETURN PARSE-RESULT + + + .FUNCT IREDUCE-EXCEPTION:ANY:2:2,ENP,NP + GET ENP,2 + EQUAL? STACK,W?ONE \?CND1 + GET NP,2 + PUT ENP,2,STACK +?CND1: GET ENP,3 + ZERO? STACK \?CND3 + PUT ENP,3,NP-QUANT-ALL +?CND3: SET 'SEARCH-FLAGS,31 + CALL DETERMINE-NP,0,0,ENP + RSTACK + + + .FUNCT REDUCE-EXCEPT-IT:ANY:2:2,PHR,NP + GET PHR,1 + EQUAL? 1,STACK \FALSE + GET PHR,3 + EQUAL? IT,STACK \FALSE + ZERO? P-IT-OBJECT \?CCL8 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,NP + RSTACK +?CCL8: PUT PHR,3,P-IT-OBJECT + RTRUE + + + .FUNCT REDUCE-EXCEPTION:ANY:2:2,PP,NP,ENP,NOUN-PHRASE,NEW-OBJECT,NNP,GOOD,BAD + GET PP,2 >ENP + GETB ENP,1 + EQUAL? STACK,2 \?CCL3 + CALL IREDUCE-EXCEPTION,ENP,NP >NOUN-PHRASE + ZERO? NOUN-PHRASE /FALSE + ICALL REDUCE-EXCEPT-IT,NOUN-PHRASE,ENP + CALL DO-PMEM-ALLOC,3,3 >NEW-OBJECT + PUT NEW-OBJECT,2,ENP + PUT NEW-OBJECT,3,NOUN-PHRASE + PUT NP,6,NEW-OBJECT + RETURN NP +?CCL3: SET 'NNP,ENP + SET 'GOOD,FALSE-VALUE +?PRG7: GET NNP,2 >BAD + CALL IREDUCE-EXCEPTION,BAD,NP >NEW-OBJECT + ZERO? NEW-OBJECT /?CND9 + SET 'GOOD,TRUE-VALUE + ICALL REDUCE-EXCEPT-IT,NEW-OBJECT,BAD + PUT NNP,3,NEW-OBJECT +?CND9: GET NNP,1 >NNP + ZERO? NNP \?PRG7 + ZERO? GOOD /?CCL15 + PUT NP,6,ENP + RETURN NP +?CCL15: CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,BAD + RSTACK + + + .FUNCT REDUCE-LOCATION:TABLE:1:3,PP,SYN,WHICH,SEARCH,TEST,PREP,NP,RLOC,BIT,MSG,OLD-OBJECT + ZERO? SYN \?CCL3 + SET 'SEARCH,0 + JUMP ?CND1 +?CCL3: EQUAL? WHICH,1 \?CCL6 + GETB SYN,5 >SEARCH + JUMP ?CND1 +?CCL6: GETB SYN,9 >SEARCH +?CND1: ZERO? SYN \?CCL9 + SET 'TEST,0 + JUMP ?CND7 +?CCL9: EQUAL? WHICH,1 \?CCL12 + GETB SYN,4 >TEST + JUMP ?CND7 +?CCL12: GETB SYN,8 >TEST +?CND7: GET PP,1 >PREP + GET PP,2 >NP + ZERO? SEARCH \?CND13 + SET 'SEARCH,5 +?CND13: COPYT PREP-BIT,0,6 + EQUAL? PREP,W?BUT,W?EXCEPT /FALSE + EQUAL? PREP,W?IN,W?INSIDE \?CCL19 + SET 'BIT,CONTBIT + SET 'MSG,P-NO-INSIDE + JUMP ?CND15 +?CCL19: EQUAL? PREP,W?ON,W?OFF \?CCL21 + SET 'BIT,SURFACEBIT + SET 'MSG,P-NO-SURFACE + JUMP ?CND15 +?CCL21: EQUAL? PREP,W?FROM \FALSE + SET 'BIT,SURFACEBIT + PUT PREP-BIT,1,PERSONBIT + PUT PREP-BIT,2,CONTBIT + SET 'MSG,P-NOTHING +?CND15: PUT PREP-BIT,0,BIT + GETB NP,1 + EQUAL? STACK,2 \FALSE + GET NP,5 >RLOC + ZERO? RLOC /?CND27 + GET RLOC,2 + GET STACK,3 >RLOC +?CND27: SET 'OLD-OBJECT,FINDER + PUT OLD-OBJECT,0,TEST + PUT OLD-OBJECT,1,0 + PUT OLD-OBJECT,2,FALSE-VALUE + PUT OLD-OBJECT,3,FALSE-VALUE + PUT OLD-OBJECT,4,0 + GET NP,1 + PUT OLD-OBJECT,5,STACK + GET NP,2 + PUT OLD-OBJECT,6,STACK + PUT OLD-OBJECT,7,FALSE-VALUE + PUT OLD-OBJECT,8,FALSE-VALUE + PUT OLD-OBJECT,9,SEARCH-RES + CALL2 NUMERIC-ADJ?,NP + PUT OLD-OBJECT,10,STACK + ZERO? RLOC \?CCL31 + PUSH SEARCH + JUMP ?CND29 +?CCL31: PUSH 0 +?CND29: CALL FIND-OBJECTS,STACK,RLOC >SEARCH + ZERO? SEARCH /?CCL34 + CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >OLD-OBJECT + PUT OLD-OBJECT,1,1 + GET SEARCH-RES,4 + PUT OLD-OBJECT,3,STACK + PUT OLD-OBJECT,4,NP + SET 'RLOC,OLD-OBJECT + CALL DO-PMEM-ALLOC,6,2 >OLD-OBJECT + PUT OLD-OBJECT,1,PREP + PUT OLD-OBJECT,2,RLOC + RETURN OLD-OBJECT +?CCL34: GET SEARCH-RES,1 + ZERO? STACK \?CCL36 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,NP,PREP + RSTACK +?CCL36: CALL2 READY-TO-DISAMBIGUATE?,NP + ZERO? STACK /FALSE + GET PARSE-RESULT,1 + CALL PARSER-ERROR,0,PARSER-ERROR-ORPH-NP,NP,STACK + RSTACK + + + .FUNCT DETERMINE-OBJ:ANY:1:3,OBJ,NUM,PICK,VAL,RES,COUNT,SYN,S-FLAGS,SEARCH-ACT,OLD-OBJECT,CT,PTR,CNT + ZERO? NUM \?CCL3 + SET 'SYN,0 + JUMP ?CND1 +?CCL3: GET PARSE-RESULT,3 >SYN +?CND1: ZERO? NUM \?CCL6 + SET 'S-FLAGS,128 + JUMP ?CND4 +?CCL6: EQUAL? NUM,1 \?CCL8 + GETB SYN,5 >S-FLAGS + JUMP ?CND4 +?CCL8: GETB SYN,9 >S-FLAGS +?CND4: ZERO? NUM \?CCL11 + SET 'SEARCH-ACT,0 + JUMP ?CND9 +?CCL11: EQUAL? NUM,1 \?CCL13 + GETB SYN,4 >SEARCH-ACT + JUMP ?CND9 +?CCL13: GETB SYN,8 >SEARCH-ACT +?CND9: ZERO? OBJ \?CCL16 + SET 'OLD-OBJECT,FINDER + PUT OLD-OBJECT,0,SEARCH-ACT + PUT OLD-OBJECT,1,FIND-FLAGS-GWIM + PUT OLD-OBJECT,2,FALSE-VALUE + PUT OLD-OBJECT,3,SYN + PUT OLD-OBJECT,4,NUM + PUT OLD-OBJECT,5,FALSE-VALUE + PUT OLD-OBJECT,6,FALSE-VALUE + PUT OLD-OBJECT,7,FALSE-VALUE + PUT OLD-OBJECT,8,FALSE-VALUE + PUT OLD-OBJECT,9,SEARCH-RES + PUT OLD-OBJECT,10,0 + ZERO? PICK /?CND17 + PUT FINDER,2,NP-QUANT-ALL +?CND17: EQUAL? SEARCH-ACT,ROOMSBIT \?PRD23 + PUT SEARCH-RES,4,ROOMS + JUMP ?CTR20 +?PRD23: ZERO? S-FLAGS /?CCL21 + CALL2 FIND-OBJECTS,S-FLAGS + ZERO? STACK \?PRD28 + ZERO? PICK /?CCL21 + GET SEARCH-RES,1 + ZERO? STACK /?CCL21 +?PRD28: EQUAL? NUM,1 \?CCL36 + GET SYN,1 + JUMP ?CND34 +?CCL36: GET SYN,3 +?CND34: PUT GWIM-MSG,0,STACK + GET SEARCH-RES,4 + PUT GWIM-MSG,1,STACK +?CTR20: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >OLD-OBJECT + PUT OLD-OBJECT,1,1 + GET SEARCH-RES,4 + PUT OLD-OBJECT,3,STACK + SET 'RES,OLD-OBJECT + RETURN RES +?CCL21: GET PARSE-RESULT,1 + PUT ORPHAN-S,O-VERB,STACK + ZERO? P-LEN \?CCL39 + ADD TLEXV,4 + JUMP ?CND37 +?CCL39: PUSH TLEXV +?CND37: PUT ORPHAN-S,O-LEXPTR,STACK + GET PARSE-RESULT,3 + PUT ORPHAN-S,O-SYNTAX,STACK + PUT ORPHAN-S,O-WHICH,NUM + GET PARSE-RESULT,7 + PUT ORPHAN-S,O-PART,STACK + GET PARSE-RESULT,5 + GET STACK,3 + PUT ORPHAN-S,O-OBJECT,STACK + GET PARSE-RESULT,12 >VAL + ZERO? VAL /?CND40 + GET VAL,3 >VAL +?CND40: PUT ORPHAN-S,O-SUBJECT,VAL + GET PARSE-RESULT,5 + CALL PARSER-ERROR,0,PARSER-ERROR-ORPH-S,STACK + RSTACK +?CCL16: GETB OBJ,1 + EQUAL? STACK,4 \?CCL43 + RETURN OBJ +?CCL43: GETB OBJ,1 + EQUAL? STACK,2 \?CCL45 + SET 'SEARCH-FLAGS,S-FLAGS + CALL DETERMINE-NP,0,NUM,OBJ + RSTACK +?CCL45: BTST S-FLAGS,16 /?CCL47 + GET PARSE-RESULT,1 + CALL PARSER-ERROR,0,PARSER-ERROR-NOMULT,NUM,STACK + RSTACK +?CCL47: SET 'SEARCH-FLAGS,S-FLAGS + SET 'OLD-OBJECT,OBJ + SET 'CT,FALSE-VALUE +?PRG48: CALL DETERMINE-NP,0,NUM,OLD-OBJECT,TRUE-VALUE >PTR + ZERO? PTR /FALSE + GET OLD-OBJECT,3 + GET STACK,1 + ADD COUNT,STACK >COUNT + ZERO? CT \?CND53 + ADD PTR,6 >PTR + SET 'CNT,COUNT +?PRG55: DLESS? 'CNT,0 /?CND53 + GET PTR,0 + EQUAL? NOT-HERE-OBJECT,STACK /?CCL61 + SET 'CT,TRUE-VALUE +?CND53: GET OLD-OBJECT,1 >OLD-OBJECT + ZERO? OLD-OBJECT \?PRG48 + ZERO? CT /FALSE + MUL COUNT,2 + ADD STACK,2 + CALL DO-PMEM-ALLOC,4,STACK >CNT + PUT CNT,1,COUNT + SET 'RES,CNT + SET 'PTR,OBJ + ADD RES,6 >CT +?PRG66: GET PTR,3 >OLD-OBJECT + GET OLD-OBJECT,1 + MUL 4,STACK >CNT + ADD OLD-OBJECT,6 + COPYT STACK,CT,CNT + ADD CT,CNT >CT + GET PTR,1 >PTR + ZERO? PTR \?PRG66 + RETURN RES +?CCL61: ADD PTR,4 >PTR + JUMP ?PRG55 + + + .FUNCT CHECK-DIR-ADJS:ANY:1:1,ADJS,AV,CT,ADJ,PT,?TMP1 + ADD ADJS,10 >AV + GET ADJS,4 >CT +?PRG1: DLESS? 'CT,0 /FALSE + GET AV,CT >ADJ + ZERO? ADJ /?PRG1 + GET ADJ,4 >?TMP1 + ZERO? ?TMP1 /?PRD12 + PUSH ?TMP1 + JUMP ?PEN10 +?PRD12: GET ADJ,3 + GET STACK,4 +?PEN10: BTST STACK,32768 /?PRG1 + GET ADJ,4 >?TMP1 + ZERO? ?TMP1 /?PRD16 + PUSH ?TMP1 + JUMP ?PEN14 +?PRD16: GET ADJ,3 + GET STACK,4 +?PEN14: BAND STACK,64 + BAND STACK,32767 + ZERO? STACK /?PRG1 + GETB ADJ,6 + GETPT HERE,STACK >PT + ZERO? PT /?PRG1 + PTSIZE PT + EQUAL? STACK,DEXIT \?PRG1 + PUT AV,CT,W?NO.WORD + GET PT,DEXITOBJ + CALL MATCH-OBJECT,STACK,FINDER,TRUE-VALUE + ZERO? STACK \?CND18 + PUT AV,CT,ADJ + RTRUE +?CND18: PUT AV,CT,ADJ + JUMP ?PRG1 + + + .FUNCT NUMERIC-ADJ?:ANY:1:1,NP,ADJS,VAL,AV,CT,ADJ,VV + GET NP,1 >ADJS + ZERO? ADJS /FALSE + ADD ADJS,10 >AV + GET ADJS,4 >CT +?PRG4: DLESS? 'CT,0 /?REP5 + GET AV,CT >ADJ + EQUAL? ADJ,W?INT.NUM \?PRG4 + GET NP,8 >VV +?PRG10: GET VV,0 + EQUAL? ADJ,STACK \?CCL14 + GET VV,1 >VAL + JUMP ?PRG4 +?CCL14: SUB VV,P-LEXELEN >VV + GRTR? P-LEXV,VV /?PRG4 + JUMP ?PRG10 +?REP5: RETURN VAL + + + .FUNCT DETERMINE-NP:ANY:3:4,SEARCH-ACT,WHICH,OBJ,MULTI,SYN,ROBJ,RLOC,QUANT,OWNER,RES,COUNT,TMP,OLD-OBJECT,?TMP1 +?FCN: ZERO? WHICH \?CCL3 + SET 'SYN,FALSE-VALUE + JUMP ?CND1 +?CCL3: GET PARSE-RESULT,3 >SYN +?CND1: SET 'ROBJ,OBJ + GETB OBJ,1 + EQUAL? STACK,3 \?CND4 + GET OBJ,2 >ROBJ +?CND4: GET ROBJ,5 >RLOC + ZERO? RLOC /?CND6 + GET RLOC,2 >RLOC + GET RLOC,3 >RLOC +?CND6: GET ROBJ,3 >QUANT + ZERO? QUANT /?CND8 + GRTR? QUANT,NP-QUANT-A \?CND8 + BTST SEARCH-FLAGS,16 /?CND8 + GET PARSE-RESULT,1 + CALL PARSER-ERROR,0,PARSER-ERROR-NOMULT,WHICH,STACK + RSTACK +?CND8: GET ROBJ,4 >OWNER + ZERO? OWNER \?PRD16 + GET ROBJ,1 >OWNER + ZERO? OWNER /?CND13 + GET OWNER,2 >OWNER + ZERO? OWNER /?CND13 +?PRD16: CALL2 PMEM?,OWNER + ZERO? STACK /?CND13 + PUT SEARCH-RES,2,FALSE-VALUE + GET OWNER,2 + EQUAL? W?IT,STACK \?CCL23 + PUT SEARCH-RES,1,1 + PUT SEARCH-RES,4,P-IT-OBJECT + CALL2 VISIBLE?,P-IT-OBJECT + ZERO? STACK /?CCL26 + COPYT SEARCH-RES,OWNER-SR-HERE,20 + JUMP ?CND13 +?CCL26: COPYT SEARCH-RES,OWNER-SR-THERE,20 + JUMP ?CND13 +?CCL23: SET 'OLD-OBJECT,FINDER + PUT OLD-OBJECT,0,SEARCH-ACT + PUT OLD-OBJECT,1,0 + PUT OLD-OBJECT,2,FALSE-VALUE + PUT OLD-OBJECT,3,SYN + PUT OLD-OBJECT,4,WHICH + GET OWNER,1 + PUT OLD-OBJECT,5,STACK + GET OWNER,2 + PUT OLD-OBJECT,6,STACK + GET OWNER,4 + PUT OLD-OBJECT,7,STACK + PUT OLD-OBJECT,8,FALSE-VALUE + PUT OLD-OBJECT,9,SEARCH-RES + CALL2 NUMERIC-ADJ?,OWNER + PUT OLD-OBJECT,10,STACK + PUT SEARCH-RES,1,0 + ICALL2 FIND-OBJECTS,15 + COPYT SEARCH-RES,OWNER-SR-HERE,20 + PUT SEARCH-RES,1,0 + PUT SEARCH-RES,2,FALSE-VALUE + ICALL2 FIND-OWNERS,OWNERS + COPYT SEARCH-RES,OWNER-SR-THERE,20 +?CND13: SET 'RES,FALSE-VALUE + GET ROBJ,2 + EQUAL? STACK,W?HIMSELF \?CND27 + EQUAL? 2,WHICH \?CCL31 + GET PARSE-RESULT,5 >COUNT + ZERO? COUNT /?CCL31 + GET COUNT,3 >COUNT + ZERO? COUNT /?CCL31 + FSET? COUNT,PERSONBIT \?CCL31 + SET 'RES,COUNT + FSET? COUNT,FEMALE \?CND27 + SET 'RES,P-HIM-OBJECT + JUMP ?CND27 +?CCL31: SET 'RES,P-HIM-OBJECT +?CND27: GET ROBJ,2 + EQUAL? STACK,W?HERSELF \?CND38 + EQUAL? 2,WHICH \?CCL42 + GET PARSE-RESULT,5 >COUNT + ZERO? COUNT /?CCL42 + GET COUNT,3 >COUNT + ZERO? COUNT /?CCL42 + FSET? COUNT,PERSONBIT \?CCL42 + FSET? COUNT,FEMALE \?CCL42 + SET 'RES,COUNT + JUMP ?CND38 +?CCL42: SET 'RES,P-HER-OBJECT +?CND38: ZERO? RES /?CND48 + CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >OLD-OBJECT + PUT OLD-OBJECT,1,1 + PUT OLD-OBJECT,3,RES + PUT OLD-OBJECT,4,ROBJ + RETURN OLD-OBJECT +?CND48: SET 'OLD-OBJECT,FINDER + PUT OLD-OBJECT,0,SEARCH-ACT + PUT OLD-OBJECT,1,0 + PUT OLD-OBJECT,2,QUANT + PUT OLD-OBJECT,3,SYN + PUT OLD-OBJECT,4,WHICH + GET ROBJ,1 + PUT OLD-OBJECT,5,STACK + GET ROBJ,2 + PUT OLD-OBJECT,6,STACK + GET ROBJ,4 + PUT OLD-OBJECT,7,STACK + GET ROBJ,6 + PUT OLD-OBJECT,8,STACK + PUT OLD-OBJECT,9,SEARCH-RES + CALL2 NUMERIC-ADJ?,ROBJ + PUT OLD-OBJECT,10,STACK + ICALL FIND-OBJECTS,SEARCH-FLAGS,RLOC + GET SEARCH-RES,1 + ZERO? STACK \?CND52 + GET ROBJ,1 + ZERO? STACK /?CND52 + GET ROBJ,1 + CALL2 CHECK-DIR-ADJS,STACK + ZERO? STACK /?CND52 + PUT GWIM-MSG,2,ROBJ + GET SEARCH-RES,4 + PUT GWIM-MSG,3,STACK +?CND52: GET SEARCH-RES,1 >COUNT + ZERO? COUNT \?CCL60 + GET ROBJ,2 >TMP + ZERO? TMP /?CCL60 + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? TMP,?TMP1,STACK,132 >OLD-OBJECT \?CCL66 + GET OLD-OBJECT,1 + JUMP ?CND64 +?CCL66: PUSH FALSE-VALUE +?CND64: BTST STACK,16 \?CCL60 + PUT ROBJ,3,NP-QUANT-ALL + GET TMP,3 + PUT ROBJ,2,STACK + JUMP ?FCN +?CCL60: ZERO? COUNT \?CCL68 + ZERO? RLOC \?CND58 + ZERO? MULTI \?CCL70 + CALL1 DET-NP-NOT-HERE? + ZERO? STACK /?CND58 +?CCL70: CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >OLD-OBJECT + PUT OLD-OBJECT,1,1 + PUT OLD-OBJECT,3,NOT-HERE-OBJECT + PUT OLD-OBJECT,4,ROBJ + SET 'RES,OLD-OBJECT + JUMP ?CND58 +?CCL68: EQUAL? COUNT,1 /?CTR75 + ZERO? QUANT \?CTR75 + GET SEARCH-RES,4 + GETP STACK,P?GENERIC + CALL STACK,SEARCH-RES,FINDER >RES + ZERO? RES \?CTR75 + CALL1 DET-NP-OWNEE? >RES + ZERO? RES /?CCL76 +?CTR75: EQUAL? RES,NOT-HERE-OBJECT \?CCL83 + CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,OBJ + RSTACK +?CCL83: ZERO? RES /?CND81 + SET 'COUNT,1 + PUT SEARCH-RES,1,1 + PUT SEARCH-RES,2,FALSE-VALUE + EQUAL? RES,HERE \?CCL87 + PUSH GLOBAL-HERE + JUMP ?CND85 +?CCL87: PUSH RES +?CND85: PUT SEARCH-RES,4,STACK +?CND81: MUL COUNT,2 + ADD STACK,2 + CALL DO-PMEM-ALLOC,4,STACK >OLD-OBJECT + PUT OLD-OBJECT,1,COUNT + SET 'RES,OLD-OBJECT + GET ROBJ,4 >SYN + ZERO? SYN \?CCL89 + GET ROBJ,1 >SYN + ZERO? SYN /?CND88 + GET SYN,2 >SYN + ZERO? SYN /?CND88 +?CCL89: LESS? 0,SYN \?CCL95 + GRTR? SYN,LAST-OBJECT \?CND88 +?CCL95: GET SEARCH-RES,3 >SYN + GET ROBJ,4 + ZERO? STACK /?CCL100 + PUT ROBJ,4,SYN + JUMP ?CND88 +?CCL100: GET ROBJ,1 + PUT STACK,2,SYN +?CND88: ADD RES,6 + CALL DETERMINE-NP-XFER,COUNT,ROBJ,SEARCH-RES,STACK >SYN + ZERO? SYN /?CND58 + SUB COUNT,SYN + PUT RES,1,STACK +?CND58: ZERO? RES \?PRD107 + RETURN RES +?CCL76: CALL2 READY-TO-DISAMBIGUATE?,ROBJ + ZERO? STACK /?CND58 + GET PARSE-RESULT,1 + CALL PARSER-ERROR,0,PARSER-ERROR-ORPH-NP,ROBJ,STACK + RSTACK +?PRD107: GETB OBJ,1 + EQUAL? STACK,3 /?CCL105 + RETURN RES +?CCL105: PUT OBJ,3,RES + RETURN RES + + + .FUNCT DET-NP-NOT-HERE?:ANY:0:0,X,?TMP1,?TMP2 + GET PARSE-RESULT,1 >?TMP2 + ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? ?TMP2,?TMP1,STACK,132 >X \?CCL8 + GET X,1 + JUMP ?CND6 +?CCL8: PUSH FALSE-VALUE +?CND6: BTST STACK,512 /TRUE + GET PARSE-RESULT,4 + EQUAL? STACK,V?WALK-TO /TRUE + RFALSE + + + .FUNCT DET-NP-OWNEE?:ANY:0:0,ADJS,OBJ,OBJ1,LEN,PTR + GET FINDER,5 >ADJS + ZERO? ADJS /?CND1 + GET ADJS,2 >ADJS +?CND1: ZERO? ADJS /FALSE + SET 'OBJ,FALSE-VALUE + GET SEARCH-RES,1 >LEN + SET 'PTR,SEARCH-RES+8 +?PRG5: DLESS? 'LEN,0 \?CCL9 + RETURN OBJ +?CCL9: GET PTR,0 >OBJ1 + GETP OBJ1,P?OWNER + EQUAL? ADJS,STACK \?CND7 + ZERO? OBJ \FALSE + SET 'OBJ,OBJ1 +?CND7: ADD PTR,2 >PTR + JUMP ?PRG5 + + + .FUNCT FIND-OWNERS:ANY:1:1,TBL,OOBJ,LEN + GET TBL,0 >LEN +?PRG1: LESS? LEN,1 /TRUE + GET TBL,LEN >OOBJ + LESS? 0,OOBJ \?CCL7 + GET TBL,LEN >OOBJ + GRTR? OOBJ,LAST-OBJECT /?CCL7 + CALL MATCH-OBJECT,OOBJ,FINDER,TRUE-VALUE + ZERO? STACK \?CND3 + RTRUE +?CCL7: ICALL2 FIND-OWNERS,OOBJ +?CND3: DEC 'LEN + JUMP ?PRG1 + + + .FUNCT READY-TO-DISAMBIGUATE?:ANY:1:1,NP,PTR,NOUN + GET NP,8 >PTR + ZERO? PTR /FALSE + GET NP,2 >NOUN + ZERO? NOUN /FALSE +?PRG6: GET PTR,0 + EQUAL? NOUN,STACK \?CCL10 + RETURN PTR +?CCL10: SUB PTR,4 >PTR + GRTR? P-LEXV,PTR \?PRG6 + RFALSE + + + .FUNCT DETERMINE-NP-XFER:ANY:4:4,COUNT,ROBJ,SRES,DV,CT,V,TMP,NUM + GET SRES,0 >CT + ADD SRES,8 >V + GRTR? CT,COUNT \?CND3 + SET 'CT,COUNT +?CND3: SUB COUNT,CT >COUNT + SET 'NUM,0 +?PRG5: GET V,0 >TMP + ZERO? TMP /?CCL9 + PUT DV,0,TMP + PUT DV,1,ROBJ + JUMP ?CND7 +?CCL9: INC 'NUM +?CND7: ADD DV,4 >DV + ADD V,2 >V + DLESS? 'CT,1 \?PRG5 + GET SRES,2 >SRES + ZERO? SRES \?CND12 + RETURN NUM +?CND12: SET 'CT,FIND-RES-MAXOBJ + ADD SRES,8 >V + GRTR? CT,COUNT \?CND14 + SET 'CT,COUNT +?CND14: SUB COUNT,CT >COUNT + JUMP ?PRG5 + + + .FUNCT DO-ORPHAN-TEST:ANY:0:2,N,TYP + RETURN P-OFLAG + + + .FUNCT RED-O-ADJ:ANY:0:2,N,TYP + ZERO? P-OFLAG /FALSE + GET ORPHAN-SR,1 + ZERO? STACK /FALSE + COPYT O-LEXV,G-LEXV,LEXV-LENGTH-BYTES + COPYT O-INBUF,G-INBUF,61 + GET OOPS-TABLE,O-AGAIN + PUT OOPS-TABLE,O-START,STACK + POP DATA-STACK + ICALL2 INSERT-ADJS,STACK + ICALL2 COPY-INPUT,TRUE-VALUE + SET 'P-OFLAG,0 + THROW PARSER-RESULT-AGAIN,PARSE-SENTENCE-ACTIVATION + RTRUE + + + .FUNCT RED-O-PP:ANY:0:2,N,TYP,PP,A,PREP + LESS? P-OFLAG,0 \?CCL8 + SUB 0,P-OFLAG >PP + JUMP ?CND6 +?CCL8: SET 'PP,P-OFLAG +?CND6: ZERO? PP /FALSE + GET O-LEXV,PP + EQUAL? W?NO.WORD,STACK \FALSE + SUB PP,P-LEXELEN + GET O-LEXV,STACK >A + ZERO? A /FALSE + POP DATA-STACK >PP + ZERO? PP /FALSE + EQUAL? N,2 /?CCL3 + POP DATA-STACK >PREP + ZERO? PREP /FALSE +?CCL3: COPYT O-LEXV,G-LEXV,LEXV-LENGTH-BYTES + COPYT O-INBUF,G-INBUF,61 + GET OOPS-TABLE,O-AGAIN + PUT OOPS-TABLE,O-START,STACK + EQUAL? A,PREP \?CCL18 + PUSH 1 + JUMP ?CND16 +?CCL18: PUSH 0 +?CND16: ICALL2 INSERT-NP,STACK + ICALL2 COPY-INPUT,TRUE-VALUE + SET 'P-OFLAG,0 + THROW PARSER-RESULT-AGAIN,PARSE-SENTENCE-ACTIVATION + RTRUE + + + .FUNCT INSERT-NP:ANY:0:2,NUM,NP,GPTR,PPTR,TMP,?TMP1 + LESS? P-OFLAG,0 \?CCL3 + SUB 0,P-OFLAG >GPTR + JUMP ?CND1 +?CCL3: SET 'GPTR,P-OFLAG +?CND1: GET PARSE-RESULT,2 >TMP + ZERO? TMP /?CCL6 + MUL NUM,4 + ADD TMP,STACK >PPTR + SUB TLEXV,TMP + DIV STACK,4 + ADD 1,STACK >TMP + JUMP ?CND4 +?CCL6: GET OOPS-TABLE,O-START >PPTR + GET OOPS-TABLE,O-LENGTH >TMP + MUL NUM,4 + ADD PPTR,STACK >PPTR +?CND4: SUB TMP,NUM >NUM + ADD -1,NUM + ICALL MAKE-ROOM-FOR-TOKENS,STACK,G-LEXV,GPTR +?PRG8: DLESS? 'NUM,0 /TRUE + GETB PPTR,2 >?TMP1 + GETB PPTR,3 + MUL GPTR,2 + ADD 3,STACK >TMP + ICALL INBUF-ADD,?TMP1,STACK,TMP + GET PPTR,0 >TMP + PUT G-LEXV,GPTR,TMP + EQUAL? TMP,W?INT.NUM,W?INT.TIM \?CND12 + ADD 1,GPTR >?TMP1 + GET PPTR,1 + PUT G-LEXV,?TMP1,STACK +?CND12: ADD GPTR,2 >GPTR + ADD PPTR,4 >PPTR + JUMP ?PRG8 + + + .FUNCT TEST-SR:ANY:1:1,NP,A,CT,NEW-OBJECT,?TMP1 + GET ORPHAN-SR,1 + ZERO? STACK /FALSE + GET NP,2 >A + GET A,4 >?TMP1 + ZERO? ?TMP1 /?PRD9 + PUSH ?TMP1 + JUMP ?PEN7 +?PRD9: GET NP,2 >A + GET A,3 + GET STACK,4 +?PEN7: BTST STACK,32768 /?CND3 + GET NP,2 >A + GET A,4 >?TMP1 + ZERO? ?TMP1 /?PRD12 + PUSH ?TMP1 + JUMP ?PEN10 +?PRD12: GET NP,2 >A + GET A,3 + GET STACK,4 +?PEN10: BAND STACK,16 + BAND STACK,32767 + ZERO? STACK /?CND3 + RETURN A +?CND3: GET NP,1 >A + ZERO? A \?CCL15 + CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT + GET NP,7 + PUT NEW-OBJECT,1,STACK + SET 'A,NEW-OBJECT + JUMP ?CND13 +?CCL15: GET A,4 >CT + GRTR? ADJS-MAX-COUNT,CT \FALSE +?CND13: ADD A,10 >?TMP1 + GET NP,2 + PUT ?TMP1,CT,STACK + ADD 1,CT + PUT A,4,STACK + PUT FINDER,5,A + CALL2 NUMERIC-ADJ?,NP + PUT FINDER,10,STACK + GET ORPHAN-NP,2 + PUT FINDER,6,STACK + PUT SEARCH-RES,1,0 + PUT SEARCH-RES,2,FALSE-VALUE + CALL1 TEST-O-SR + ZERO? STACK /?CND17 + RETURN A +?CND17: ZERO? CT /?CND19 + PUT A,4,CT +?CND19: GET SEARCH-RES,1 + ZERO? STACK /FALSE + RETURN A + + + .FUNCT TEST-O-SR:ANY:0:0,VEC,SZ,REM + SET 'VEC,ORPHAN-SR+8 + GET ORPHAN-SR,0 >SZ + GET ORPHAN-SR,1 >REM +?PRG1: GET VEC,0 + CALL MATCH-OBJECT,STACK,FINDER,TRUE-VALUE + ZERO? STACK /TRUE + DLESS? 'REM,1 /FALSE + DLESS? 'SZ,1 /FALSE + ADD VEC,2 >VEC + JUMP ?PRG1 + + + .FUNCT RED-O-NP:ANY:0:2,N,TYP,A,NP,PP,A1,PTR,WD,?TMP2,?TMP1 + EQUAL? N,3 \?CND1 + POP DATA-STACK >PP +?CND1: POP DATA-STACK >NP + GETB NP,1 + EQUAL? STACK,4 \?CND3 + GET NP,3 + EQUAL? STACK,INTQUOTE \?CND3 + GET NP,4 >NP + LESS? 0,P-OFLAG /?CND3 + GET NP,7 + SUB STACK,P-LEXV + DIV STACK,2 >PP + ICALL MAKE-ROOM-FOR-TOKENS,1,G-LEXV,PP + PUT G-LEXV,PP,W?SAY + ICALL1 COPY-INPUT + SET 'P-OFLAG,0 + THROW PARSER-RESULT-AGAIN,PARSE-SENTENCE-ACTIVATION +?CND3: ZERO? P-OFLAG /FALSE + ZERO? PP \?CND12 + GET NP,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD19 + PUSH ?TMP1 + JUMP ?PEN17 +?PRD19: GET NP,2 + GET STACK,3 + GET STACK,4 +?PEN17: BTST STACK,32768 /?CND12 + GET NP,2 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD23 + PUSH ?TMP1 + JUMP ?PEN21 +?PRD23: GET NP,2 + GET STACK,3 + GET STACK,4 +?PEN21: BAND STACK,4 + BAND STACK,32767 + ZERO? STACK /?CND12 + GET NP,3 + ZERO? STACK \?CND12 + CALL2 TEST-SR,NP >A + ZERO? A /?CND12 + XPUSH A,DATA-STACK /?BOGUS25 +?BOGUS25: ICALL RED-O-ADJ,1,TYP + RFALSE +?CND12: COPYT O-LEXV,G-LEXV,LEXV-LENGTH-BYTES + COPYT O-INBUF,G-INBUF,61 + LESS? P-OFLAG,0 \?CCL28 + SUB 0,P-OFLAG >N + JUMP ?CND26 +?CCL28: SET 'N,P-OFLAG +?CND26: GET G-LEXV,N + GET NP,2 >A + EQUAL? STACK,W?NO.WORD,A \?CCL31 + ICALL INSERT-NP,0,NP + JUMP ?CND29 +?CCL31: SET 'A1,FALSE-VALUE + ZERO? A /?CND34 + ICALL MAKE-ROOM-FOR-TOKENS,1,G-LEXV,N + PUT G-LEXV,N,A + GET NP,8 >A + GETB A,2 >?TMP2 + GETB A,3 >?TMP1 + MUL N,2 + ADD 3,STACK + ICALL INBUF-ADD,?TMP2,?TMP1,STACK +?CND34: GET NP,1 >A + ZERO? A /?CND36 + ICALL2 INSERT-ADJS,A +?CND36: ZERO? PP /?CND38 + ADD N,P-LEXELEN + ICALL MAKE-ROOM-FOR-TOKENS,2,G-LEXV,STACK + ADD N,P-LEXELEN >?TMP1 + GET PP,1 + PUT G-LEXV,?TMP1,STACK + GET PP,2 >A + GETB A,1 + EQUAL? STACK,4 \?CCL42 + GET A,4 >A + JUMP ?CND40 +?CCL42: GETB A,1 + EQUAL? STACK,3 \?CND40 + GET A,2 >A +?CND40: ADD N,4 >?TMP1 + GET A,2 + PUT G-LEXV,?TMP1,STACK +?CND38: GET NP,3 >A + ZERO? A /?CND29 + SET 'PTR,N +?PRG49: SUB PTR,P-LEXELEN >PTR + GRTR? 0,PTR \?CCL53 + ZERO? A1 /?PRD56 + SET 'PTR,A1 + JUMP ?PEN54 +?PRD56: SET 'PTR,N +?PEN54: ICALL MAKE-ROOM-FOR-TOKENS,1,G-LEXV,PTR + JUMP ?REP50 +?CCL53: GET G-LEXV,PTR >WD + EQUAL? WD,W?THE /?REP50 + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD65 + PUSH ?TMP1 + JUMP ?PEN63 +?PRD65: GET WD,3 + GET STACK,4 +?PEN63: BTST STACK,32768 /?CCL58 + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD68 + PUSH ?TMP1 + JUMP ?PEN66 +?PRD68: GET WD,3 + GET STACK,4 +?PEN66: BAND STACK,16 + BAND STACK,32767 + ZERO? STACK \?REP50 +?CCL58: GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD75 + PUSH ?TMP1 + JUMP ?PEN73 +?PRD75: GET WD,3 + GET STACK,4 +?PEN73: BTST STACK,32768 /?CCL70 + GET WD,4 >?TMP1 + ZERO? ?TMP1 /?PRD78 + PUSH ?TMP1 + JUMP ?PEN76 +?PRD78: GET WD,3 + GET STACK,4 +?PEN76: BAND STACK,4 + BAND STACK,32767 + ZERO? STACK /?CCL70 + SET 'A1,PTR + JUMP ?PRG49 +?CCL70: ZERO? A1 /?PRD81 + SET 'PTR,A1 + JUMP ?PEN79 +?PRD81: SET 'PTR,N +?PEN79: ICALL MAKE-ROOM-FOR-TOKENS,1,G-LEXV,PTR +?REP50: CALL2 GET-QUANTITY-WORD,A + PUT G-LEXV,PTR,STACK +?CND29: GET OOPS-TABLE,O-AGAIN + PUT OOPS-TABLE,O-START,STACK + ICALL1 COPY-INPUT + SET 'P-OFLAG,0 + THROW PARSER-RESULT-AGAIN,PARSE-SENTENCE-ACTIVATION + RTRUE + + + .FUNCT RED-PERS:ANY:0:2,N,TYP,X,?TMP1 + EQUAL? N,2,3 \TRUE + POP DATA-STACK >X + EQUAL? X,W?COMMA \?PRD7 + EQUAL? N,2 /?CCL5 +?PRD7: EQUAL? X,W?TO \FALSE +?CCL5: POP DATA-STACK >X + EQUAL? N,3 \?CND11 + GET P-RUNNING,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD19 + PUSH ?TMP1 + JUMP ?PEN17 +?PRD19: GET P-RUNNING,0 + GET STACK,3 + GET STACK,4 +?PEN17: BTST STACK,32768 /FALSE + GET P-RUNNING,0 + GET STACK,4 >?TMP1 + ZERO? ?TMP1 /?PRD22 + PUSH ?TMP1 + JUMP ?PEN20 +?PRD22: GET P-RUNNING,0 + GET STACK,3 + GET STACK,4 +?PEN20: BAND STACK,1 + BAND STACK,32767 + ZERO? STACK /FALSE +?CND11: CALL2 HACK-TELL,X + RSTACK + + + .FUNCT HACK-TELL:ANY:1:1,X,NP + PUT PARSE-RESULT,1,W?TELL + GET W?TELL,3 + GET STACK,2 + ICALL GET-SYNTAX,STACK,1,FALSE-VALUE + CALL DETERMINE-OBJ,X,1 >NP + ZERO? NP /?CCL2 + GET NP,3 + EQUAL? STACK,NOT-HERE-OBJECT \?CND1 +?CCL2: CALL PARSER-ERROR,0,PARSER-ERROR-NOOBJ,X + RSTACK +?CND1: PUT PARSE-RESULT,2,TLEXV + PUT PARSE-RESULT,12,NP + GET NP,3 >X + EQUAL? X,WINNER,PLAYER,ME /TRUE + EQUAL? X,YOU /TRUE + GET TLEXV,0 + EQUAL? STACK,W?YOU \?CND10 + ICALL1 IGNORE-FIRST-WORD +?CND10: LESS? P-LEN,1 \?CCL14 + SET 'P-CONT,FALSE-VALUE + JUMP ?CND12 +?CCL14: SET 'P-CONT,TLEXV +?CND12: CALL2 HACK-TELL-1,NP + EQUAL? M-FATAL,STACK /?CCL16 + ZERO? P-CONT \TRUE +?CCL16: SET 'P-CONT,-1 + THROW PARSER-RESULT-DEAD,PARSE-SENTENCE-ACTIVATION + RTRUE + + + .FUNCT HACK-TELL-1:ANY:1:1,NP,X,NUM,CT,?TMP1 + GET NP,4 >PRSO-NP + GET NP,3 >X + ZERO? P-WON /?CND1 + GET NP,1 >CT + LESS? 1,CT \?CND1 + GET NP,2 >NUM + GRTR? CT,NUM \FALSE + ADD 1,NUM + PUT NP,2,STACK + ADD NP,8 >?TMP1 + MUL 2,NUM + GET ?TMP1,STACK >PRSO-NP + ADD NP,6 >?TMP1 + MUL 2,NUM + GET ?TMP1,STACK >X + CALL PERF-MANY,X,FALSE-VALUE,PRSO-NP,STR?221 + ZERO? STACK \?CND1 + RETURN M-FATAL +?CND1: SET 'PRSQ,FALSE-VALUE + SET 'PRSS,FALSE-VALUE + ZERO? P-RESPONDED /?CND9 + SUB 0,P-RESPONDED + ICALL2 BE-PATIENT,STACK +?CND9: CALL PERFORM,V?TELL,X >X + PUT PARSE-RESULT,4,0 + RETURN X + + + .FUNCT RED-VP:ANY:0:2,N,TYP,VERB,A1,A2,?TMP1 + SET 'A1,TRUE-VALUE + SET 'A2,TRUE-VALUE + GRTR? N,2 \?CND1 + POP DATA-STACK >A1 +?CND1: POP DATA-STACK >VERB + GRTR? N,2 \?CND3 + POP DATA-STACK >A2 + EQUAL? N,4 \?CND3 + POP DATA-STACK +?CND3: PUT PARSE-RESULT,1,VERB + PUT PARSE-RESULT,2,TLEXV + EQUAL? A1,TRUE-VALUE /?CCL9 + GET A1,3 >?TMP1 + ZERO? ?TMP1 /?PRD12 + PUSH ?TMP1 + JUMP ?PEN10 +?PRD12: PUSH A1 +?PEN10: PUT PARSE-RESULT,0,STACK + RTRUE +?CCL9: EQUAL? A2,TRUE-VALUE /TRUE + GET A2,3 >?TMP1 + ZERO? ?TMP1 /?PRD16 + PUSH ?TMP1 + JUMP ?PEN14 +?PRD16: PUSH A2 +?PEN14: PUT PARSE-RESULT,0,STACK + RTRUE + + + .FUNCT RED-NP:ANY:0:2,N,TYP,NAME,QUANT,LEXB,LEXE,ADJ,NEW-OBJECT,?TMP1 + SET 'QUANT,NP-QUANT-NONE + SET 'LEXE,TLEXV + POP DATA-STACK >NAME + EQUAL? NAME,1 \?CND1 + SET 'NAME,FALSE-VALUE +?CND1: GET LEXE,0 >ADJ + EQUAL? ADJ,W?COMMA,W?AND /?CCL4 + GET ADJ,4 >?TMP1 + ZERO? ?TMP1 /?PRD11 + PUSH ?TMP1 + JUMP ?PEN9 +?PRD11: GET ADJ,3 + GET STACK,4 +?PEN9: BAND STACK,32768 + EQUAL? STACK,-32768 \?CND3 + GET ADJ,4 >?TMP1 + ZERO? ?TMP1 /?PRD14 + PUSH ?TMP1 + JUMP ?PEN12 +?PRD14: GET ADJ,3 + GET STACK,4 +?PEN12: BAND STACK,32776 + BAND STACK,32767 + ZERO? STACK /?CND3 +?CCL4: SUB LEXE,4 >LEXE +?CND3: POP DATA-STACK >ADJ + EQUAL? ADJ,1 \?CCL17 + SET 'LEXB,LEXE + SET 'ADJ,FALSE-VALUE + JUMP ?CND15 +?CCL17: GET ADJ,1 >LEXB + GET ADJ,3 + ZERO? STACK /?CND15 + GET ADJ,3 >QUANT +?CND15: CALL DO-PMEM-ALLOC,2,9 >NEW-OBJECT + PUT NEW-OBJECT,2,NAME + PUT NEW-OBJECT,1,ADJ + PUT NEW-OBJECT,7,LEXB + PUT NEW-OBJECT,8,LEXE + PUT NEW-OBJECT,3,QUANT + RETURN NEW-OBJECT + + + .FUNCT RED-OF:ANY:0:2,N,TYP,ONP,NP,TMP,A + POP DATA-STACK >ONP + POP DATA-STACK + EQUAL? STACK,W?OF \FALSE + POP DATA-STACK >NP + GET NP,3 + ZERO? STACK /?CCL6 + GET NP,2 + ZERO? STACK \?CCL6 + GET NP,1 + ZERO? STACK \?CCL6 + GET NP,3 + PUT ONP,3,STACK + RETURN ONP +?CCL6: PUT NP,4,ONP + RETURN NP + + + .FUNCT RED-QT:ANY:0:2,N,TYP,Q,NEW-OBJECT + POP DATA-STACK >Q + EQUAL? Q,W?A,W?AN /FALSE + CALL DO-PMEM-ALLOC,2,9 >NEW-OBJECT + CALL2 GET-QUANTITY,Q + PUT NEW-OBJECT,3,STACK + PUT NEW-OBJECT,7,TLEXV + PUT NEW-OBJECT,8,TLEXV + RETURN NEW-OBJECT + + + .FUNCT GET-QUANTITY-WORD:ANY:1:1,Q,TBL + INTBL? Q,NP-QUANT-TBL,NP-QUANT-TBL-LEN,132 >TBL \FALSE + GET TBL,1 + RSTACK + + + .FUNCT GET-QUANTITY:ANY:1:1,Q,TBL + INTBL? Q,NP-QUANT-TBL+2,NP-QUANT-TBL-LEN,132 >TBL \FALSE + SUB TBL,2 + GET STACK,0 + RSTACK + + + .FUNCT RED-QN:ANY:0:2,N,TYP,NP,Q + POP DATA-STACK >NP + GET NP,7 + SUB STACK,4 + PUT NP,7,STACK + POP DATA-STACK + CALL2 GET-QUANTITY,STACK + PUT NP,3,STACK + RETURN NP + + + .FUNCT RED-NPP:ANY:0:2,N,TYP,NPP,ONPP,PP,NP,RLOC,X1,X2,KLUDGE-FLAG,OONPP,?PR-NP + EQUAL? N,1 \?CCL3 + POP DATA-STACK + RSTACK +?CCL3: EQUAL? N,2 \?CCL5 + POP DATA-STACK >PP + POP DATA-STACK >ONPP + GET PP,1 + EQUAL? STACK,W?BUT,W?EXCEPT \?CCL8 + GETB ONPP,1 + EQUAL? STACK,2 /?CCL11 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL11: GET ONPP,3 + ZERO? STACK \?CCL13 + GET DATA-STACK,0 + EQUAL? 20,STACK /?CND14 + POP DATA-STACK >X1 + GET DATA-STACK,0 + EQUAL? 20,STACK /?CND16 + POP DATA-STACK >X2 + CALL2 PMEM?,X2 + ZERO? STACK /?CND18 + GETB X2,1 + EQUAL? STACK,2 \?CND18 + GET X2,3 + ZERO? STACK /?CND18 + CALL REDUCE-EXCEPTION,PP,X2 + ZERO? STACK /?CND18 + SET 'KLUDGE-FLAG,TRUE-VALUE +?CND18: XPUSH X2,DATA-STACK /?CND16 +?CND16: XPUSH X1,DATA-STACK /?CND14 +?CND14: ZERO? KLUDGE-FLAG \?CND6 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL13: CALL REDUCE-EXCEPTION,PP,ONPP + ZERO? STACK \?CND6 + RFALSE +?CCL8: CALL2 REDUCE-LOCATION,PP >RLOC + ZERO? RLOC /FALSE +?CND6: ZERO? RLOC \?CCL32 + RETURN ONPP +?CCL32: GETB ONPP,1 + EQUAL? STACK,2 \?CCL34 + GET ONPP,5 + ZERO? STACK /?CCL37 + GET RLOC,1 + CALL PARSER-ERROR,0,PARSER-ERROR-TMNOUN,STACK + RSTACK +?CCL37: PUT ONPP,5,RLOC + RETURN ONPP +?CCL34: SET 'OONPP,ONPP +?PRG38: GET OONPP,2 >?PR-NP + GET ?PR-NP,5 + ZERO? STACK \?CND40 + PUT ?PR-NP,5,RLOC +?CND40: GET OONPP,1 >OONPP + ZERO? OONPP \?CCL44 + RETURN ONPP +?CCL44: GETB OONPP,1 + EQUAL? STACK,2 \?PRG38 + PUT OONPP,5,RLOC + RETURN ONPP +?CCL5: POP DATA-STACK >NP + POP DATA-STACK + EQUAL? STACK,W?AND,W?COMMA \FALSE + POP DATA-STACK >NPP + GETB NPP,1 + EQUAL? STACK,2 \?CND49 + GET NPP,6 + ZERO? STACK \FALSE +?CND49: CALL DO-PMEM-ALLOC,3,3 >?PR-NP + PUT ?PR-NP,2,NP + SET 'NP,?PR-NP + GETB NPP,1 + EQUAL? STACK,2 \?CCL55 + CALL DO-PMEM-ALLOC,3,3 >OONPP + PUT OONPP,1,NP + PUT OONPP,2,NPP + RETURN OONPP +?CCL55: SET '?PR-NP,NPP +?PRG56: GET ?PR-NP,1 >OONPP + ZERO? OONPP \?CND58 + PUT ?PR-NP,1,NP + RETURN NPP +?CND58: SET '?PR-NP,OONPP + JUMP ?PRG56 + + + .FUNCT RED-PP:ANY:0:2,N,TYP,TMP,NOUN,PREP,NEW-OBJECT + POP DATA-STACK >NOUN + EQUAL? N,2 \?CCL3 + POP DATA-STACK >PREP + JUMP ?CND1 +?CCL3: POP DATA-STACK >TMP + EQUAL? TMP,W?OF \?CND1 + POP DATA-STACK >PREP + EQUAL? PREP,W?OUT \FALSE + SET 'PREP,W?FROM +?CND1: ZERO? PREP /FALSE + CALL DO-PMEM-ALLOC,5,2 >NEW-OBJECT + PUT NEW-OBJECT,1,PREP + PUT NEW-OBJECT,2,NOUN + RETURN NEW-OBJECT + + + .FUNCT RED-POSS:ANY:0:2,N,TYP,OBJ,WD,A + EQUAL? N,3 \FALSE + POP DATA-STACK + EQUAL? STACK,W?S /?CCL6 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL6: POP DATA-STACK + EQUAL? STACK,W?APOSTROPHE /?CCL8 + CALL PARSER-ERROR,0,PARSER-ERROR-NOUND + RSTACK +?CCL8: POP DATA-STACK + RSTACK + + + .FUNCT RED-ADJS:ANY:0:2,N,TYP,A1,ART,NEW-OBJECT + POP DATA-STACK >A1 + EQUAL? 1,N \?CCL3 + RETURN A1 +?CCL3: EQUAL? 1,A1 \?CND4 + CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT + PUT NEW-OBJECT,1,TLEXV + SET 'A1,NEW-OBJECT +?CND4: POP DATA-STACK >ART + CALL2 PMEM?,ART + ZERO? STACK /?CCL8 + PUT A1,2,ART + RETURN A1 +?CCL8: EQUAL? ART,W?A,W?AN \?CCL10 + PUT A1,3,NP-QUANT-A + RETURN A1 +?CCL10: EQUAL? ART,W?THE \FALSE + RETURN A1 + + + .FUNCT RED-ADJ:ANY:0:2,N,TYP,A1,A2,CT,AD,NEW-OBJECT,TCT,?TMP1 + ZERO? N /TRUE + POP DATA-STACK >A1 + EQUAL? A1,1 \?CND4 + CALL DO-PMEM-ALLOC,1,8 >NEW-OBJECT + PUT NEW-OBJECT,1,TLEXV + SET 'A1,NEW-OBJECT +?CND4: POP DATA-STACK >A2 + EQUAL? A2,W?MY \?CCL8 + PUT A1,2,PLAYER + RETURN A1 +?CCL8: EQUAL? A2,W?YOUR \?CCL10 + PUT A1,2,WINNER + RETURN A1 +?CCL10: EQUAL? A2,W?HIS \?CND6 + GET PARSE-RESULT,5 >AD + ZERO? AD /?CCL15 + GET AD,3 >AD + ZERO? AD /?CCL15 + FSET? AD,PERSONBIT \?CCL15 + PUT A1,2,AD + FSET? AD,FEMALE \?CND13 + PUT A1,2,P-HIM-OBJECT + RETURN A1 +?CCL15: PUT A1,2,P-HIM-OBJECT +?CND13: RETURN A1 +?CND6: EQUAL? A2,W?HER \?CND21 + GET PARSE-RESULT,5 >AD + ZERO? AD /?CCL25 + GET AD,3 >AD + ZERO? AD /?CCL25 + FSET? AD,PERSONBIT \?CCL25 + FSET? AD,FEMALE \?CCL25 + PUT A1,2,AD + RETURN A1 +?CCL25: PUT A1,2,P-HER-OBJECT + RETURN A1 +?CND21: EQUAL? A2,W?THEIR \?CCL32 + GET PARSE-RESULT,5 >AD + ZERO? AD /?CCL35 + GET AD,3 >AD + ZERO? AD /?CCL35 + FSET? AD,PLURAL \?CCL35 + PUT A1,2,AD + RETURN A1 +?CCL35: PUT A1,2,P-THEM-OBJECT + RETURN A1 +?CCL32: EQUAL? A2,W?ITS \?CCL40 + GET PARSE-RESULT,5 >AD + ZERO? AD /?CCL43 + GET AD,3 >AD + ZERO? AD /?CCL43 + FSET? AD,PERSONBIT /?CCL43 + PUT A1,2,AD + RETURN A1 +?CCL43: PUT A1,2,P-IT-OBJECT + RETURN A1 +?CCL40: ADD WORD-FLAG-TABLE,2 >?TMP1 + GET WORD-FLAG-TABLE,0 + INTBL? A2,?TMP1,STACK,132 >NEW-OBJECT \?CCL51 + GET NEW-OBJECT,1 + JUMP ?CND49 +?CCL51: PUSH FALSE-VALUE +?CND49: BTST STACK,16384 \?CCL48 + GET A2,3 + PUT A1,2,STACK + RETURN A1 +?CCL48: GET A2,4 >?TMP1 + ZERO? ?TMP1 /?PRD58 + PUSH ?TMP1 + JUMP ?PEN56 +?PRD58: GET A2,3 + GET STACK,4 +?PEN56: BTST STACK,32768 /FALSE + GET A2,4 >?TMP1 + ZERO? ?TMP1 /?PRD61 + PUSH ?TMP1 + JUMP ?PEN59 +?PRD61: GET A2,3 + GET STACK,4 +?PEN59: BAND STACK,4 + BAND STACK,32767 + ZERO? STACK /FALSE + SET 'AD,A2 + GET A1,4 >CT + LESS? CT,ADJS-MAX-COUNT \?CND30 + ADD A1,10 >NEW-OBJECT + GET A1,4 >TCT +?PRG65: ZERO? TCT \?CND67 + PUT NEW-OBJECT,0,A2 + ADD CT,1 + PUT A1,4,STACK + RETURN A1 +?CND67: GET NEW-OBJECT,0 + EQUAL? AD,STACK /?CND30 + ADD NEW-OBJECT,2 >NEW-OBJECT + DEC 'TCT + JUMP ?PRG65 +?CND30: RETURN A1 + + + .FUNCT RED-QUOTE:ANY:0:2,N,TYP,NP,NEW-OBJECT + POP DATA-STACK + EQUAL? W?QUOTE,STACK \FALSE + CALL DO-PMEM-ALLOC,2,9 >NEW-OBJECT + PUT NEW-OBJECT,2,W?QUOTE + SUB P-RUNNING,4 + PUT NEW-OBJECT,7,STACK + SET 'NP,NEW-OBJECT +?PRG4: GET P-RUNNING,0 >N + DLESS? 'P-LEN,0 /?CCL7 + EQUAL? N,W?QUOTE,W?END.OF.INPUT \?CND6 +?CCL7: EQUAL? N,W?QUOTE \?CCL12 + PUT NP,8,P-RUNNING + ADD P-RUNNING,4 >P-RUNNING + JUMP ?CND10 +?CCL12: SUB P-RUNNING,4 + PUT NP,8,STACK +?CND10: GET OOPS-TABLE,O-START + SUB P-RUNNING,STACK + DIV STACK,4 >P-WORDS-AGAIN + CALL DO-PMEM-ALLOC,4,NOUN-PHRASE-MIN-LENGTH >NEW-OBJECT + PUT NEW-OBJECT,1,1 + PUT NEW-OBJECT,3,INTQUOTE + PUT NEW-OBJECT,4,NP + RETURN NEW-OBJECT +?CND6: ADD P-RUNNING,4 >P-RUNNING + JUMP ?PRG4 + + .ENDSEG + + .ENDI diff --git a/state.1 b/state.1 new file mode 100644 index 0000000..3d8135a --- /dev/null +++ b/state.1 @@ -0,0 +1,901 @@ + +State # 1: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS +NOUN: Apply RED-PERS to 0, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PERS to 0, new token is ?PERS + -->State 12 +QUANT: Apply RED-PERS to 0, new token is ?PERS + -->State 11 +ASKWORD: -->State 10 +ARTICLE: Apply RED-PERS to 0, new token is ?PERS + -->State 9 +QUOTE: Apply RED-PERS to 0, new token is ?PERS + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 5 +?PERS: -->State 6 +SP: -->State 7 + +State # 2: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 103 +NP: -->State 14 + +State # 3: +NOUN: -->State 19 + +State # 4: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 5: +COMMA: -->State 102 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 6: +END-OF-INPUT, PARTICLE, +PREP: Apply DO-ORPHAN-TEST to 0, new token is O? +TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1 +VERB: Apply RED-CANDO to 0, new token is ?CANDO +NOUN: Apply RED-ADJ to 0, new token is ADJ* + Apply DO-ORPHAN-TEST to 0, new token is O? +ADJ: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 12 +ADV: Apply RED-CANDO to 0, new token is ?CANDO + Apply DO-ORPHAN-TEST to 0, new token is O? +QUANT: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 11 +DIR: -->State 42 +QWORD: -->State 41 +ARTICLE: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 9 +QUOTE: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 8 +O?: -->State 35 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +?QW1: -->State 36 +NP: -->State 37 +?CANDO: -->State 38 +VP: -->State 39 +S: -->State 40 + +State # 7: +END-OF-INPUT: DONE + +State # 8: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP + +State # 9: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 34 +NP: -->State 14 + +State # 10: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 21 + +State # 11: +OFWORD, END-OF-INPUT, VERB, +ADV, MISCWORD, TOBE, CANDO, +COMMA, PARTICLE, PREP, +APOSTR: Apply RED-QT to 1, new token is NP +NOUN: Apply RED-QT to 1, new token is NP + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-QT to 1, new token is NP + -->State 12 +QUANT: Apply RED-QT to 1, new token is NP + -->State 11 +ARTICLE: Apply RED-QT to 1, new token is NP + -->State 9 +QUOTE: Apply RED-QT to 1, new token is NP + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 20 + +State # 12: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 13: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: Apply RED-ADJ to 2, new token is ADJ* + -->State 19 + +State # 14: +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 15: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 18 + +State # 16: +MISCWORD: -->State 17 + +State # 17: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE + +State # 18: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-OF to 3, new token is NP +APOSTR: Apply RED-OF to 3, new token is NP + -->State 16 +OFWORD: Apply RED-OF to 3, new token is NP + -->State 15 + +State # 19: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP + +State # 20: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-QN to 2, new token is NP +APOSTR: Apply RED-QN to 2, new token is NP + -->State 16 +OFWORD: Apply RED-QN to 2, new token is NP + -->State 15 + +State # 21: +COMMA: -->State 25 +PARTICLE: -->State 24 +PREP: -->State 23 +PP: -->State 22 + +State # 22: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 2, new token is NPP + +State # 23: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +OFWORD: -->State 32 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 31 + +State # 24: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS +NOUN: Apply RED-PERS to 3, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PERS to 3, new token is ?PERS + -->State 12 +QUANT: Apply RED-PERS to 3, new token is ?PERS + -->State 11 +OFWORD: -->State 28 +ARTICLE: Apply RED-PERS to 3, new token is ?PERS + -->State 9 +QUOTE: Apply RED-PERS to 3, new token is ?PERS + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 25: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 26: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 3, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 27: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +COMMA: Apply RED-PP to 2, new token is PP + -->State 25 +PARTICLE: Apply RED-PP to 2, new token is PP + -->State 30 +PREP: Apply RED-PP to 2, new token is PP + -->State 23 +PP: -->State 22 + +State # 28: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 29: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +COMMA: Apply RED-PP to 3, new token is PP + -->State 25 +PARTICLE: Apply RED-PP to 3, new token is PP + -->State 30 +PREP: Apply RED-PP to 3, new token is PP + -->State 23 +PP: -->State 22 + +State # 30: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 31: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +COMMA: Apply RED-PP to 2, new token is PP + -->State 25 +PARTICLE: Apply RED-PP to 2, new token is PP + -->State 30 +PREP: Apply RED-PP to 2, new token is PP + -->State 23 +PP: -->State 22 + +State # 32: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 33 + +State # 33: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +COMMA: Apply RED-PP to 3, new token is PP + -->State 25 +PARTICLE: Apply RED-PP to 3, new token is PP + -->State 30 +PREP: Apply RED-PP to 3, new token is PP + -->State 23 +PP: -->State 22 + +State # 34: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: Apply RED-ADJ to 2, new token is ADJ* + -->State 19 + +State # 35: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +PARTICLE: -->State 99 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 96 +PP: -->State 97 +NP: -->State 98 + +State # 36: +TOBE: -->State 44 +CANDO: -->State 78 +BE-FORM: -->State 77 + +State # 37: +VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO +TOBE: -->State 44 +CANDO: -->State 67 +APOSTR: -->State 16 +OFWORD: -->State 15 +BE-FORM: -->State 66 + +State # 38: +VERB: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 +?ADV: -->State 63 + +State # 39: +END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +DIR: -->State 51 +PARTICLE: -->State 50 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 48 +?PARTICLE: -->State 49 + +State # 40: +ADV: -->State 47 +END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 46 + +State # 41: +TOBE: Apply RED-FCN to 1, new token is ?QW1 + -->State 44 +CANDO: Apply RED-FCN to 1, new token is ?QW1 +BE-FORM: -->State 43 + +State # 42: +END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S + +State # 43: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 45 + +State # 44: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, MISCWORD, PARTICLE, +PREP: Apply RED-BE-FORM to 1, new token is BE-FORM + +State # 45: +END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 46: +END-OF-INPUT: Apply RED-SP to 3, new token is SP + +State # 47: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, DIR, +PARTICLE: Apply RED-FCN to 1, new token is ?ADV + +State # 48: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-PART to 0, new token is ?PARTICLE +COMMA: -->State 25 +PARTICLE: -->State 61 +PREP: -->State 23 +PP: -->State 22 +?PARTICLE: -->State 60 + +State # 49: +END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 54 + +State # 50: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +OFWORD: -->State 53 +?PARTICLE: -->State 52 + +State # 51: +END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S + +State # 52: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 53: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 54: +END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +COMMA: -->State 25 +PARTICLE: -->State 57 +PREP: -->State 23 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 22 +NP: -->State 4 +NPP: -->State 55 +?PARTICLE: -->State 56 + +State # 55: +END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 56: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 59 + +State # 57: +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +PARTICLE: -->State 50 +OFWORD: -->State 58 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 58: +NOUN: Apply RED-PART to 2, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PART to 2, new token is ?PARTICLE + -->State 12 +QUANT: Apply RED-PART to 2, new token is ?PARTICLE + -->State 11 +ARTICLE: Apply RED-PART to 2, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 2, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 59: +END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 60: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 62 + +State # 61: +END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +PARTICLE: -->State 50 +OFWORD: -->State 58 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 62: +END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 63: +VERB: -->State 64 + +State # 64: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV +ADV: Apply RED-FCN to 0, new token is ?ADV + -->State 47 +?ADV: -->State 65 + +State # 65: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP + +State # 66: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: Apply RED-NOT to 0, new token is ?NOT + -->State 69 +?NOT: -->State 70 + +State # 67: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +?NOT: -->State 68 + +State # 68: +VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO + +State # 69: +ARTICLE, QUOTE, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT + +State # 70: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 71 + +State # 71: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 75 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 73 +NP: -->State 4 +NPP: -->State 74 + +State # 72: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE + +State # 73: +END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S + +State # 74: +END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 75: +END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +PP: -->State 76 +NP: -->State 14 + +State # 76: +END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S + +State # 77: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 84 +NP: -->State 85 + +State # 78: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 79 +NP: -->State 80 + +State # 79: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 83 + +State # 80: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 82 + +State # 81: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-NOT to 1, new token is NOT + +State # 82: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO + +State # 83: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 84: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 91 + +State # 85: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: Apply RED-NOT to 0, new token is ?NOT + -->State 69 +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 86 + +State # 86: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 87 + +State # 87: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 90 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 88 +NP: -->State 4 +NPP: -->State 89 + +State # 88: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 89: +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 90: +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 91: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +APOSTR: -->State 16 +OFWORD: -->State 15 +?BE: -->State 92 + +State # 92: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 95 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 93 +NP: -->State 4 +NPP: -->State 94 + +State # 93: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 94: +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 95: +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 96: +END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S +NOUN: -->State 19 + +State # 97: +END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S + +State # 98: +END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S +PARTICLE: -->State 30 +PREP: -->State 23 +APOSTR: -->State 16 +OFWORD: -->State 15 +PP: -->State 101 + +State # 99: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 100 +NPP: -->State 27 + +State # 100: +COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP +END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S + Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 101: +END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S + +State # 102: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS +NOUN: Apply RED-PERS to 2, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +ADJ: Apply RED-PERS to 2, new token is ?PERS + -->State 12 +QUANT: Apply RED-PERS to 2, new token is ?PERS + -->State 11 +ARTICLE: Apply RED-PERS to 2, new token is ?PERS + -->State 9 +QUOTE: Apply RED-PERS to 2, new token is ?PERS + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 103: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: Apply RED-ADJ to 2, new token is ADJ* + -->State 19 diff --git a/state.2 b/state.2 new file mode 100644 index 0000000..48d368f --- /dev/null +++ b/state.2 @@ -0,0 +1,901 @@ + +State # 1: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS +ADJ: Apply RED-PERS to 0, new token is ?PERS + -->State 12 +NOUN: Apply RED-PERS to 0, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PERS to 0, new token is ?PERS + -->State 11 +ASKWORD: -->State 10 +ARTICLE: Apply RED-PERS to 0, new token is ?PERS + -->State 9 +QUOTE: Apply RED-PERS to 0, new token is ?PERS + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 5 +?PERS: -->State 6 +SP: -->State 7 + +State # 2: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 103 +NP: -->State 14 + +State # 3: +NOUN: -->State 19 + +State # 4: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 5: +PARTICLE: -->State 30 +PREP: -->State 23 +COMMA: -->State 102 +PP: -->State 22 + +State # 6: +END-OF-INPUT, PARTICLE, +PREP: Apply DO-ORPHAN-TEST to 0, new token is O? +ADJ: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 12 +TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1 +VERB: Apply RED-CANDO to 0, new token is ?CANDO +NOUN: Apply RED-ADJ to 0, new token is ADJ* + Apply DO-ORPHAN-TEST to 0, new token is O? +ADV: Apply RED-CANDO to 0, new token is ?CANDO + Apply DO-ORPHAN-TEST to 0, new token is O? +QUANT: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 11 +DIR: -->State 42 +QWORD: -->State 41 +ARTICLE: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 9 +QUOTE: Apply DO-ORPHAN-TEST to 0, new token is O? + -->State 8 +O?: -->State 35 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +?QW1: -->State 36 +NP: -->State 37 +?CANDO: -->State 38 +VP: -->State 39 +S: -->State 40 + +State # 7: +END-OF-INPUT: DONE + +State # 8: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP + +State # 9: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 34 +NP: -->State 14 + +State # 10: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 21 + +State # 11: +OFWORD, END-OF-INPUT, VERB, +ADV, MISCWORD, TOBE, CANDO, +COMMA, PARTICLE, PREP, +APOSTR: Apply RED-QT to 1, new token is NP +ADJ: Apply RED-QT to 1, new token is NP + -->State 12 +NOUN: Apply RED-QT to 1, new token is NP + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-QT to 1, new token is NP + -->State 11 +ARTICLE: Apply RED-QT to 1, new token is NP + -->State 9 +QUOTE: Apply RED-QT to 1, new token is NP + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 20 + +State # 12: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 13: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: Apply RED-ADJ to 2, new token is ADJ* + -->State 19 + +State # 14: +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 15: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 18 + +State # 16: +MISCWORD: -->State 17 + +State # 17: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE + +State # 18: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-OF to 3, new token is NP +APOSTR: Apply RED-OF to 3, new token is NP + -->State 16 +OFWORD: Apply RED-OF to 3, new token is NP + -->State 15 + +State # 19: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP + +State # 20: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-QN to 2, new token is NP +APOSTR: Apply RED-QN to 2, new token is NP + -->State 16 +OFWORD: Apply RED-QN to 2, new token is NP + -->State 15 + +State # 21: +PARTICLE: -->State 24 +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 22: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 2, new token is NPP + +State # 23: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 32 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 31 + +State # 24: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS +ADJ: Apply RED-PERS to 3, new token is ?PERS + -->State 12 +NOUN: Apply RED-PERS to 3, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PERS to 3, new token is ?PERS + -->State 11 +OFWORD: -->State 28 +ARTICLE: Apply RED-PERS to 3, new token is ?PERS + -->State 9 +QUOTE: Apply RED-PERS to 3, new token is ?PERS + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 25: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 26: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 3, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 27: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +PARTICLE: Apply RED-PP to 2, new token is PP + -->State 30 +PREP: Apply RED-PP to 2, new token is PP + -->State 23 +COMMA: Apply RED-PP to 2, new token is PP + -->State 25 +PP: -->State 22 + +State # 28: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 29: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +PARTICLE: Apply RED-PP to 3, new token is PP + -->State 30 +PREP: Apply RED-PP to 3, new token is PP + -->State 23 +COMMA: Apply RED-PP to 3, new token is PP + -->State 25 +PP: -->State 22 + +State # 30: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 31: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +PARTICLE: Apply RED-PP to 2, new token is PP + -->State 30 +PREP: Apply RED-PP to 2, new token is PP + -->State 23 +COMMA: Apply RED-PP to 2, new token is PP + -->State 25 +PP: -->State 22 + +State # 32: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 33 + +State # 33: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +PARTICLE: Apply RED-PP to 3, new token is PP + -->State 30 +PREP: Apply RED-PP to 3, new token is PP + -->State 23 +COMMA: Apply RED-PP to 3, new token is PP + -->State 25 +PP: -->State 22 + +State # 34: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: Apply RED-ADJ to 2, new token is ADJ* + -->State 19 + +State # 35: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 99 +PREP: -->State 23 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 96 +PP: -->State 97 +NP: -->State 98 + +State # 36: +TOBE: -->State 44 +CANDO: -->State 78 +BE-FORM: -->State 77 + +State # 37: +VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO +TOBE: -->State 44 +CANDO: -->State 67 +APOSTR: -->State 16 +OFWORD: -->State 15 +BE-FORM: -->State 66 + +State # 38: +VERB: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 +?ADV: -->State 63 + +State # 39: +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +PARTICLE: -->State 50 +END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +DIR: -->State 51 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 48 +?PARTICLE: -->State 49 + +State # 40: +ADV: -->State 47 +END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 46 + +State # 41: +TOBE: Apply RED-FCN to 1, new token is ?QW1 + -->State 44 +CANDO: Apply RED-FCN to 1, new token is ?QW1 +BE-FORM: -->State 43 + +State # 42: +END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S + +State # 43: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 45 + +State # 44: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, MISCWORD, PARTICLE, +PREP: Apply RED-BE-FORM to 1, new token is BE-FORM + +State # 45: +END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 46: +END-OF-INPUT: Apply RED-SP to 3, new token is SP + +State # 47: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, DIR, +PARTICLE: Apply RED-FCN to 1, new token is ?ADV + +State # 48: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 61 +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 +?PARTICLE: -->State 60 + +State # 49: +ADJ: -->State 12 +END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 54 + +State # 50: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +OFWORD: -->State 53 +?PARTICLE: -->State 52 + +State # 51: +END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S + +State # 52: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 53: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 54: +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +PARTICLE: -->State 57 +END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S +PREP: -->State 23 +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +COMMA: -->State 25 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 22 +NP: -->State 4 +NPP: -->State 55 +?PARTICLE: -->State 56 + +State # 55: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 56: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 59 + +State # 57: +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +PARTICLE: -->State 50 +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +OFWORD: -->State 58 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 58: +ADJ: Apply RED-PART to 2, new token is ?PARTICLE + -->State 12 +NOUN: Apply RED-PART to 2, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PART to 2, new token is ?PARTICLE + -->State 11 +ARTICLE: Apply RED-PART to 2, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 2, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 59: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 60: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 62 + +State # 61: +ADJ: Apply RED-PART to 0, new token is ?PARTICLE + -->State 12 +PARTICLE: -->State 50 +END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PART to 0, new token is ?PARTICLE + -->State 11 +OFWORD: -->State 58 +ARTICLE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 9 +QUOTE: Apply RED-PART to 0, new token is ?PARTICLE + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 62: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 63: +VERB: -->State 64 + +State # 64: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV +ADV: Apply RED-FCN to 0, new token is ?ADV + -->State 47 +?ADV: -->State 65 + +State # 65: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP + +State # 66: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: Apply RED-NOT to 0, new token is ?NOT + -->State 69 +?NOT: -->State 70 + +State # 67: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +?NOT: -->State 68 + +State # 68: +VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO + +State # 69: +ARTICLE, QUOTE, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT + +State # 70: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 71 + +State # 71: +ADJ: -->State 75 +PARTICLE: -->State 30 +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 73 +NP: -->State 4 +NPP: -->State 74 + +State # 72: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE + +State # 73: +END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S + +State # 74: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 75: +ADJ: -->State 12 +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +PP: -->State 76 +NP: -->State 14 + +State # 76: +END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S + +State # 77: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 84 +NP: -->State 85 + +State # 78: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 79 +NP: -->State 80 + +State # 79: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 83 + +State # 80: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 82 + +State # 81: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-NOT to 1, new token is NOT + +State # 82: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO + +State # 83: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 84: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 91 + +State # 85: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: Apply RED-NOT to 0, new token is ?NOT + -->State 69 +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 86 + +State # 86: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 87 + +State # 87: +ADJ: -->State 90 +PARTICLE: -->State 30 +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 88 +NP: -->State 4 +NPP: -->State 89 + +State # 88: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 89: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 90: +ADJ: -->State 12 +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 91: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +APOSTR: -->State 16 +OFWORD: -->State 15 +?BE: -->State 92 + +State # 92: +ADJ: -->State 95 +PARTICLE: -->State 30 +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 93 +NP: -->State 4 +NPP: -->State 94 + +State # 93: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 94: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 95: +ADJ: -->State 12 +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 96: +END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S +NOUN: -->State 19 + +State # 97: +END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S + +State # 98: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S +PREP: -->State 23 +APOSTR: -->State 16 +OFWORD: -->State 15 +PP: -->State 101 + +State # 99: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 100 +NPP: -->State 27 + +State # 100: +COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP +END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S + Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 101: +END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S + +State # 102: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS +ADJ: Apply RED-PERS to 2, new token is ?PERS + -->State 12 +NOUN: Apply RED-PERS to 2, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: Apply RED-PERS to 2, new token is ?PERS + -->State 11 +ARTICLE: Apply RED-PERS to 2, new token is ?PERS + -->State 9 +QUOTE: Apply RED-PERS to 2, new token is ?PERS + -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 103: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: Apply RED-ADJ to 2, new token is ADJ* + -->State 19 diff --git a/state.3 b/state.3 new file mode 100644 index 0000000..5dd801f --- /dev/null +++ b/state.3 @@ -0,0 +1,901 @@ + +State # 1: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS +ADJ: -->State 12 + Apply RED-PERS to 0, new token is ?PERS +NOUN: Apply RED-PERS to 0, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PERS to 0, new token is ?PERS +ASKWORD: -->State 10 +ARTICLE: -->State 9 + Apply RED-PERS to 0, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 0, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 5 +?PERS: -->State 6 +SP: -->State 7 + +State # 2: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 103 +NP: -->State 14 + +State # 3: +NOUN: -->State 19 + +State # 4: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 5: +PARTICLE: -->State 30 +PREP: -->State 23 +COMMA: -->State 102 +PP: -->State 22 + +State # 6: +END-OF-INPUT, PARTICLE, +PREP: Apply DO-ORPHAN-TEST to 0, new token is O? +ADJ: -->State 12 + Apply DO-ORPHAN-TEST to 0, new token is O? +TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1 +VERB: Apply RED-CANDO to 0, new token is ?CANDO +NOUN: Apply RED-ADJ to 0, new token is ADJ* + Apply DO-ORPHAN-TEST to 0, new token is O? +ADV: Apply RED-CANDO to 0, new token is ?CANDO + Apply DO-ORPHAN-TEST to 0, new token is O? +QUANT: -->State 11 + Apply DO-ORPHAN-TEST to 0, new token is O? +DIR: -->State 42 +QWORD: -->State 41 +ARTICLE: -->State 9 + Apply DO-ORPHAN-TEST to 0, new token is O? +QUOTE: -->State 8 + Apply DO-ORPHAN-TEST to 0, new token is O? +O?: -->State 35 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +?QW1: -->State 36 +NP: -->State 37 +?CANDO: -->State 38 +VP: -->State 39 +S: -->State 40 + +State # 7: +END-OF-INPUT: DONE + +State # 8: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP + +State # 9: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 34 +NP: -->State 14 + +State # 10: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 21 + +State # 11: +OFWORD, END-OF-INPUT, VERB, +ADV, MISCWORD, TOBE, CANDO, +COMMA, PARTICLE, PREP, +APOSTR: Apply RED-QT to 1, new token is NP +ADJ: -->State 12 + Apply RED-QT to 1, new token is NP +NOUN: Apply RED-QT to 1, new token is NP + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-QT to 1, new token is NP +ARTICLE: -->State 9 + Apply RED-QT to 1, new token is NP +QUOTE: -->State 8 + Apply RED-QT to 1, new token is NP +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 20 + +State # 12: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 13: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* + +State # 14: +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 15: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 18 + +State # 16: +MISCWORD: -->State 17 + +State # 17: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE + +State # 18: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-OF to 3, new token is NP +APOSTR: -->State 16 + Apply RED-OF to 3, new token is NP +OFWORD: -->State 15 + Apply RED-OF to 3, new token is NP + +State # 19: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP + +State # 20: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-QN to 2, new token is NP +APOSTR: -->State 16 + Apply RED-QN to 2, new token is NP +OFWORD: -->State 15 + Apply RED-QN to 2, new token is NP + +State # 21: +PARTICLE: -->State 24 +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 22: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 2, new token is NPP + +State # 23: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 32 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 31 + +State # 24: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS +ADJ: -->State 12 + Apply RED-PERS to 3, new token is ?PERS +NOUN: Apply RED-PERS to 3, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PERS to 3, new token is ?PERS +OFWORD: -->State 28 +ARTICLE: -->State 9 + Apply RED-PERS to 3, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 3, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 25: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 26: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 3, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 27: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 2, new token is PP +PREP: -->State 23 + Apply RED-PP to 2, new token is PP +COMMA: -->State 25 + Apply RED-PP to 2, new token is PP +PP: -->State 22 + +State # 28: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 29: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 3, new token is PP +PREP: -->State 23 + Apply RED-PP to 3, new token is PP +COMMA: -->State 25 + Apply RED-PP to 3, new token is PP +PP: -->State 22 + +State # 30: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 31: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 2, new token is PP +PREP: -->State 23 + Apply RED-PP to 2, new token is PP +COMMA: -->State 25 + Apply RED-PP to 2, new token is PP +PP: -->State 22 + +State # 32: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 33 + +State # 33: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 3, new token is PP +PREP: -->State 23 + Apply RED-PP to 3, new token is PP +COMMA: -->State 25 + Apply RED-PP to 3, new token is PP +PP: -->State 22 + +State # 34: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* + +State # 35: +ADJ: -->State 12 +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 99 +PREP: -->State 23 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 96 +PP: -->State 97 +NP: -->State 98 + +State # 36: +TOBE: -->State 44 +CANDO: -->State 78 +BE-FORM: -->State 77 + +State # 37: +VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO +TOBE: -->State 44 +CANDO: -->State 67 +APOSTR: -->State 16 +OFWORD: -->State 15 +BE-FORM: -->State 66 + +State # 38: +VERB: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 +?ADV: -->State 63 + +State # 39: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +DIR: -->State 51 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 48 +?PARTICLE: -->State 49 + +State # 40: +ADV: -->State 47 +END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 46 + +State # 41: +TOBE: -->State 44 + Apply RED-FCN to 1, new token is ?QW1 +CANDO: Apply RED-FCN to 1, new token is ?QW1 +BE-FORM: -->State 43 + +State # 42: +END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S + +State # 43: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 45 + +State # 44: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, MISCWORD, PARTICLE, +PREP: Apply RED-BE-FORM to 1, new token is BE-FORM + +State # 45: +END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 46: +END-OF-INPUT: Apply RED-SP to 3, new token is SP + +State # 47: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, DIR, +PARTICLE: Apply RED-FCN to 1, new token is ?ADV + +State # 48: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 61 +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 +?PARTICLE: -->State 60 + +State # 49: +ADJ: -->State 12 +END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 54 + +State # 50: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +OFWORD: -->State 53 +?PARTICLE: -->State 52 + +State # 51: +END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S + +State # 52: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 53: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 54: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 57 +END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S +PREP: -->State 23 +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +COMMA: -->State 25 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 22 +NP: -->State 4 +NPP: -->State 55 +?PARTICLE: -->State 56 + +State # 55: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 56: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 59 + +State # 57: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +OFWORD: -->State 58 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 58: +ADJ: -->State 12 + Apply RED-PART to 2, new token is ?PARTICLE +NOUN: Apply RED-PART to 2, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PART to 2, new token is ?PARTICLE +ARTICLE: -->State 9 + Apply RED-PART to 2, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 2, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 59: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 60: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 62 + +State # 61: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +OFWORD: -->State 58 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 62: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 63: +VERB: -->State 64 + +State # 64: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 + Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 65 + +State # 65: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP + +State # 66: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 + Apply RED-NOT to 0, new token is ?NOT +?NOT: -->State 70 + +State # 67: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +?NOT: -->State 68 + +State # 68: +VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO + +State # 69: +ARTICLE, QUOTE, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT + +State # 70: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 71 + +State # 71: +ADJ: -->State 75 +PARTICLE: -->State 30 +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 73 +NP: -->State 4 +NPP: -->State 74 + +State # 72: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE + +State # 73: +END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S + +State # 74: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 75: +ADJ: -->State 12 +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +PP: -->State 76 +NP: -->State 14 + +State # 76: +END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S + +State # 77: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 84 +NP: -->State 85 + +State # 78: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 79 +NP: -->State 80 + +State # 79: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 83 + +State # 80: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 82 + +State # 81: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-NOT to 1, new token is NOT + +State # 82: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO + +State # 83: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 84: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 91 + +State # 85: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 + Apply RED-NOT to 0, new token is ?NOT +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 86 + +State # 86: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 87 + +State # 87: +ADJ: -->State 90 +PARTICLE: -->State 30 +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 88 +NP: -->State 4 +NPP: -->State 89 + +State # 88: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 89: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 90: +ADJ: -->State 12 +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 91: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +APOSTR: -->State 16 +OFWORD: -->State 15 +?BE: -->State 92 + +State # 92: +ADJ: -->State 95 +PARTICLE: -->State 30 +PREP: -->State 23 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 93 +NP: -->State 4 +NPP: -->State 94 + +State # 93: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 94: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 95: +ADJ: -->State 12 +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 96: +END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S +NOUN: -->State 19 + +State # 97: +END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S + +State # 98: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S +PREP: -->State 23 +APOSTR: -->State 16 +OFWORD: -->State 15 +PP: -->State 101 + +State # 99: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 100 +NPP: -->State 27 + +State # 100: +COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP +END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S + Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 101: +END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S + +State # 102: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS +ADJ: -->State 12 + Apply RED-PERS to 2, new token is ?PERS +NOUN: Apply RED-PERS to 2, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PERS to 2, new token is ?PERS +ARTICLE: -->State 9 + Apply RED-PERS to 2, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 2, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 103: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* diff --git a/state.4 b/state.4 new file mode 100644 index 0000000..498d1f1 --- /dev/null +++ b/state.4 @@ -0,0 +1,901 @@ + +State # 1: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS +ADJ: -->State 12 + Apply RED-PERS to 0, new token is ?PERS +NOUN: Apply RED-PERS to 0, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PERS to 0, new token is ?PERS +ASKWORD: -->State 10 +ARTICLE: -->State 9 + Apply RED-PERS to 0, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 0, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 5 +?PERS: -->State 6 +SP: -->State 7 + +State # 2: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 103 +NP: -->State 14 + +State # 3: +NOUN: -->State 19 + +State # 4: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 5: +PARTICLE: -->State 30 +PREP: -->State 23 +COMMA: -->State 102 +PP: -->State 22 + +State # 6: +VERB: Apply RED-CANDO to 0, new token is ?CANDO +END-OF-INPUT, PARTICLE, +PREP: Apply DO-ORPHAN-TEST to 0, new token is O? +ADJ: -->State 12 + Apply DO-ORPHAN-TEST to 0, new token is O? +NOUN: Apply RED-ADJ to 0, new token is ADJ* + Apply DO-ORPHAN-TEST to 0, new token is O? +TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1 +ADV: Apply RED-CANDO to 0, new token is ?CANDO + Apply DO-ORPHAN-TEST to 0, new token is O? +QUANT: -->State 11 + Apply DO-ORPHAN-TEST to 0, new token is O? +DIR: -->State 42 +QWORD: -->State 41 +ARTICLE: -->State 9 + Apply DO-ORPHAN-TEST to 0, new token is O? +QUOTE: -->State 8 + Apply DO-ORPHAN-TEST to 0, new token is O? +O?: -->State 35 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +?QW1: -->State 36 +NP: -->State 37 +?CANDO: -->State 38 +VP: -->State 39 +S: -->State 40 + +State # 7: +END-OF-INPUT: DONE + +State # 8: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP + +State # 9: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 34 +NP: -->State 14 + +State # 10: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 21 + +State # 11: +OFWORD, END-OF-INPUT, VERB, +ADV, MISCWORD, TOBE, CANDO, +COMMA, PARTICLE, PREP, +APOSTR: Apply RED-QT to 1, new token is NP +ADJ: -->State 12 + Apply RED-QT to 1, new token is NP +NOUN: Apply RED-QT to 1, new token is NP + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-QT to 1, new token is NP +ARTICLE: -->State 9 + Apply RED-QT to 1, new token is NP +QUOTE: -->State 8 + Apply RED-QT to 1, new token is NP +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 20 + +State # 12: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 13: +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* + +State # 14: +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 15: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 18 + +State # 16: +MISCWORD: -->State 17 + +State # 17: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE + +State # 18: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-OF to 3, new token is NP +APOSTR: -->State 16 + Apply RED-OF to 3, new token is NP +OFWORD: -->State 15 + Apply RED-OF to 3, new token is NP + +State # 19: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP + +State # 20: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-QN to 2, new token is NP +APOSTR: -->State 16 + Apply RED-QN to 2, new token is NP +OFWORD: -->State 15 + Apply RED-QN to 2, new token is NP + +State # 21: +PARTICLE: -->State 24 +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 22: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 2, new token is NPP + +State # 23: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 32 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 31 + +State # 24: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS +ADJ: -->State 12 + Apply RED-PERS to 3, new token is ?PERS +NOUN: Apply RED-PERS to 3, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PERS to 3, new token is ?PERS +OFWORD: -->State 28 +ARTICLE: -->State 9 + Apply RED-PERS to 3, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 3, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 25: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 26: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 3, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 27: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 2, new token is PP +PREP: -->State 23 + Apply RED-PP to 2, new token is PP +COMMA: -->State 25 + Apply RED-PP to 2, new token is PP +PP: -->State 22 + +State # 28: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 29: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 3, new token is PP +PREP: -->State 23 + Apply RED-PP to 3, new token is PP +COMMA: -->State 25 + Apply RED-PP to 3, new token is PP +PP: -->State 22 + +State # 30: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 31: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 2, new token is PP +PREP: -->State 23 + Apply RED-PP to 2, new token is PP +COMMA: -->State 25 + Apply RED-PP to 2, new token is PP +PP: -->State 22 + +State # 32: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 33 + +State # 33: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 3, new token is PP +PREP: -->State 23 + Apply RED-PP to 3, new token is PP +COMMA: -->State 25 + Apply RED-PP to 3, new token is PP +PP: -->State 22 + +State # 34: +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* + +State # 35: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +PARTICLE: -->State 99 +PREP: -->State 23 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 96 +PP: -->State 97 +NP: -->State 98 + +State # 36: +TOBE: -->State 44 +CANDO: -->State 78 +BE-FORM: -->State 77 + +State # 37: +VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO +TOBE: -->State 44 +CANDO: -->State 67 +APOSTR: -->State 16 +OFWORD: -->State 15 +BE-FORM: -->State 66 + +State # 38: +VERB: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 +?ADV: -->State 63 + +State # 39: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 50 +END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +DIR: -->State 51 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 48 +?PARTICLE: -->State 49 + +State # 40: +ADV: -->State 47 +END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 46 + +State # 41: +TOBE: -->State 44 + Apply RED-FCN to 1, new token is ?QW1 +CANDO: Apply RED-FCN to 1, new token is ?QW1 +BE-FORM: -->State 43 + +State # 42: +END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S + +State # 43: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 45 + +State # 44: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, MISCWORD, PARTICLE, +PREP: Apply RED-BE-FORM to 1, new token is BE-FORM + +State # 45: +END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 46: +END-OF-INPUT: Apply RED-SP to 3, new token is SP + +State # 47: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, DIR, +PARTICLE: Apply RED-FCN to 1, new token is ?ADV + +State # 48: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 61 +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 +?PARTICLE: -->State 60 + +State # 49: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 54 + +State # 50: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +OFWORD: -->State 53 +?PARTICLE: -->State 52 + +State # 51: +END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S + +State # 52: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 53: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 54: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 57 +END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S +PREP: -->State 23 +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +COMMA: -->State 25 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 22 +NP: -->State 4 +NPP: -->State 55 +?PARTICLE: -->State 56 + +State # 55: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 56: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 59 + +State # 57: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 50 +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +OFWORD: -->State 58 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 58: +ADJ: -->State 12 + Apply RED-PART to 2, new token is ?PARTICLE +NOUN: Apply RED-PART to 2, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PART to 2, new token is ?PARTICLE +ARTICLE: -->State 9 + Apply RED-PART to 2, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 2, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 59: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 60: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 62 + +State # 61: +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 50 +END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +OFWORD: -->State 58 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 62: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 63: +VERB: -->State 64 + +State # 64: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 + Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 65 + +State # 65: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP + +State # 66: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 + Apply RED-NOT to 0, new token is ?NOT +?NOT: -->State 70 + +State # 67: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +?NOT: -->State 68 + +State # 68: +VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO + +State # 69: +ARTICLE, QUOTE, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT + +State # 70: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 71 + +State # 71: +ADJ: -->State 75 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 30 +PREP: -->State 23 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 73 +NP: -->State 4 +NPP: -->State 74 + +State # 72: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE + +State # 73: +END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S + +State # 74: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 75: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S +PREP: -->State 23 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +PP: -->State 76 +NP: -->State 14 + +State # 76: +END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S + +State # 77: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 84 +NP: -->State 85 + +State # 78: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 79 +NP: -->State 80 + +State # 79: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 83 + +State # 80: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 82 + +State # 81: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-NOT to 1, new token is NOT + +State # 82: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO + +State # 83: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 84: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 91 + +State # 85: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 + Apply RED-NOT to 0, new token is ?NOT +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 86 + +State # 86: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 87 + +State # 87: +ADJ: -->State 90 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 30 +PREP: -->State 23 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 88 +NP: -->State 4 +NPP: -->State 89 + +State # 88: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 89: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 90: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 91: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +APOSTR: -->State 16 +OFWORD: -->State 15 +?BE: -->State 92 + +State # 92: +ADJ: -->State 95 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +PARTICLE: -->State 30 +PREP: -->State 23 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 93 +NP: -->State 4 +NPP: -->State 94 + +State # 93: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 94: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +PREP: -->State 23 +COMMA: -->State 25 +PP: -->State 22 + +State # 95: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 96: +NOUN: -->State 19 +END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S + +State # 97: +END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S + +State # 98: +PARTICLE: -->State 30 +END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S +PREP: -->State 23 +APOSTR: -->State 16 +OFWORD: -->State 15 +PP: -->State 101 + +State # 99: +ADJ: -->State 12 +NOUN: Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 100 +NPP: -->State 27 + +State # 100: +COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP +END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S + Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 101: +END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S + +State # 102: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS +ADJ: -->State 12 + Apply RED-PERS to 2, new token is ?PERS +NOUN: Apply RED-PERS to 2, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +QUANT: -->State 11 + Apply RED-PERS to 2, new token is ?PERS +ARTICLE: -->State 9 + Apply RED-PERS to 2, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 2, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 103: +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* diff --git a/states.mac b/states.mac new file mode 100644 index 0000000..b7c13f0 --- /dev/null +++ b/states.mac @@ -0,0 +1 @@ + State # 1: END-OF-INPUT, VERB, ADV, DIR, TOBE, QWORD, CANDO, PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS NOUN: Apply RED-PERS to 0, new token is ?PERS Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PERS to 0, new token is ?PERS QUANT: -->State 11 Apply RED-PERS to 0, new token is ?PERS ASKWORD: -->State 10 ARTICLE: -->State 9 Apply RED-PERS to 0, new token is ?PERS QUOTE: -->State 8 Apply RED-PERS to 0, new token is ?PERS POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 5 ?PERS: -->State 6 SP: -->State 7 State # 2: END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 103 NP: -->State 14 State # 3: NOUN: -->State 19 State # 4: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT, COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP APOSTR: -->State 16 OFWORD: -->State 15 State # 5: COMMA: -->State 102 PARTICLE: -->State 30 PREP: -->State 23 PP: -->State 22 State # 6: END-OF-INPUT, PARTICLE, PREP: Apply DO-ORPHAN-TEST to 0, new token is O? TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1 VERB: Apply RED-CANDO to 0, new token is ?CANDO NOUN: Apply RED-ADJ to 0, new token is ADJ* Apply DO-ORPHAN-TEST to 0, new token is O? ADJ: -->State 12 Apply DO-ORPHAN-TEST to 0, new token is O? ADV: Apply RED-CANDO to 0, new token is ?CANDO Apply DO-ORPHAN-TEST to 0, new token is O? QUANT: -->State 11 Apply DO-ORPHAN-TEST to 0, new token is O? DIR: -->State 42 QWORD: -->State 41 ARTICLE: -->State 9 Apply DO-ORPHAN-TEST to 0, new token is O? QUOTE: -->State 8 Apply DO-ORPHAN-TEST to 0, new token is O? O?: -->State 35 POSSESSIVE: -->State 2 ADJ*: -->State 3 ?QW1: -->State 36 NP: -->State 37 ?CANDO: -->State 38 VP: -->State 39 S: -->State 40 State # 7: END-OF-INPUT: DONE State # 8: OFWORD, ARTICLE, QUOTE, END-OF-INPUT, VERB, NOUN, ADJ, ADV, QUANT, MISCWORD, TOBE, CANDO, COMMA, PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP State # 9: END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 34 NP: -->State 14 State # 10: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 21 State # 11: OFWORD, END-OF-INPUT, VERB, ADV, MISCWORD, TOBE, CANDO, COMMA, PARTICLE, PREP, APOSTR: Apply RED-QT to 1, new token is NP NOUN: Apply RED-QT to 1, new token is NP Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-QT to 1, new token is NP QUANT: -->State 11 Apply RED-QT to 1, new token is NP ARTICLE: -->State 9 Apply RED-QT to 1, new token is NP QUOTE: -->State 8 Apply RED-QT to 1, new token is NP POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 20 State # 12: END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 13 NP: -->State 14 State # 13: END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* NOUN: -->State 19 Apply RED-ADJ to 2, new token is ADJ* State # 14: APOSTR: -->State 16 OFWORD: -->State 15 State # 15: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 18 State # 16: MISCWORD: -->State 17 State # 17: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE State # 18: ARTICLE, QUOTE, END-OF-INPUT, VERB, NOUN, ADJ, ADV, QUANT, MISCWORD, TOBE, CANDO, COMMA, PARTICLE, PREP: Apply RED-OF to 3, new token is NP APOSTR: -->State 16 Apply RED-OF to 3, new token is NP OFWORD: -->State 15 Apply RED-OF to 3, new token is NP State # 19: OFWORD, ARTICLE, QUOTE, END-OF-INPUT, VERB, NOUN, ADJ, ADV, QUANT, MISCWORD, TOBE, CANDO, COMMA, PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP State # 20: ARTICLE, QUOTE, END-OF-INPUT, VERB, NOUN, ADJ, ADV, QUANT, MISCWORD, TOBE, CANDO, COMMA, PARTICLE, PREP: Apply RED-QN to 2, new token is NP APOSTR: -->State 16 Apply RED-QN to 2, new token is NP OFWORD: -->State 15 Apply RED-QN to 2, new token is NP State # 21: COMMA: -->State 25 PARTICLE: -->State 24 PREP: -->State 23 PP: -->State 22 State # 22: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT, COMMA, PARTICLE, PREP: Apply RED-NPP to 2, new token is NPP State # 23: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 OFWORD: -->State 32 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 31 State # 24: END-OF-INPUT, VERB, ADV, DIR, TOBE, QWORD, CANDO, PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS NOUN: Apply RED-PERS to 3, new token is ?PERS Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PERS to 3, new token is ?PERS QUANT: -->State 11 Apply RED-PERS to 3, new token is ?PERS OFWORD: -->State 28 ARTICLE: -->State 9 Apply RED-PERS to 3, new token is ?PERS QUOTE: -->State 8 Apply RED-PERS to 3, new token is ?PERS POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 27 State # 25: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 26 State # 26: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT, COMMA, PARTICLE, PREP: Apply RED-NPP to 3, new token is NPP APOSTR: -->State 16 OFWORD: -->State 15 State # 27: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-PP to 2, new token is PP COMMA: -->State 25 Apply RED-PP to 2, new token is PP PARTICLE: -->State 30 Apply RED-PP to 2, new token is PP PREP: -->State 23 Apply RED-PP to 2, new token is PP PP: -->State 22 State # 28: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 29 State # 29: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-PP to 3, new token is PP COMMA: -->State 25 Apply RED-PP to 3, new token is PP PARTICLE: -->State 30 Apply RED-PP to 3, new token is PP PREP: -->State 23 Apply RED-PP to 3, new token is PP PP: -->State 22 State # 30: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 OFWORD: -->State 28 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 27 State # 31: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-PP to 2, new token is PP COMMA: -->State 25 Apply RED-PP to 2, new token is PP PARTICLE: -->State 30 Apply RED-PP to 2, new token is PP PREP: -->State 23 Apply RED-PP to 2, new token is PP PP: -->State 22 State # 32: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 33 State # 33: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-PP to 3, new token is PP COMMA: -->State 25 Apply RED-PP to 3, new token is PP PARTICLE: -->State 30 Apply RED-PP to 3, new token is PP PREP: -->State 23 Apply RED-PP to 3, new token is PP PP: -->State 22 State # 34: END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* NOUN: -->State 19 Apply RED-ADJ to 2, new token is ADJ* State # 35: END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 PARTICLE: -->State 99 PREP: -->State 23 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 96 PP: -->State 97 NP: -->State 98 State # 36: TOBE: -->State 44 CANDO: -->State 78 BE-FORM: -->State 77 State # 37: VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO TOBE: -->State 44 CANDO: -->State 67 APOSTR: -->State 16 OFWORD: -->State 15 BE-FORM: -->State 66 State # 38: VERB: Apply RED-FCN to 0, new token is ?ADV ADV: -->State 47 ?ADV: -->State 63 State # 39: END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE NOUN: Apply RED-PART to 0, new token is ?PARTICLE Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PART to 0, new token is ?PARTICLE QUANT: -->State 11 Apply RED-PART to 0, new token is ?PARTICLE DIR: -->State 51 PARTICLE: -->State 50 ARTICLE: -->State 9 Apply RED-PART to 0, new token is ?PARTICLE QUOTE: -->State 8 Apply RED-PART to 0, new token is ?PARTICLE POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 48 ?PARTICLE: -->State 49 State # 40: ADV: -->State 47 END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV ?ADV: -->State 46 State # 41: TOBE: -->State 44 Apply RED-FCN to 1, new token is ?QW1 CANDO: Apply RED-FCN to 1, new token is ?QW1 BE-FORM: -->State 43 State # 42: END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S State # 43: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 45 State # 44: ARTICLE, QUOTE, NOUN, ADJ, QUANT, MISCWORD, PARTICLE, PREP: Apply RED-BE-FORM to 1, new token is BE-FORM State # 45: END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S APOSTR: -->State 16 OFWORD: -->State 15 State # 46: END-OF-INPUT: Apply RED-SP to 3, new token is SP State # 47: ARTICLE, QUOTE, END-OF-INPUT, VERB, NOUN, ADJ, ADV, QUANT, DIR, PARTICLE: Apply RED-FCN to 1, new token is ?ADV State # 48: ARTICLE, QUOTE, NOUN, ADJ, QUANT: Apply RED-PART to 0, new token is ?PARTICLE COMMA: -->State 25 PARTICLE: -->State 61 PREP: -->State 23 PP: -->State 22 ?PARTICLE: -->State 60 State # 49: END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 54 State # 50: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE PARTICLE: -->State 50 OFWORD: -->State 53 ?PARTICLE: -->State 52 State # 51: END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S State # 52: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE State # 53: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE State # 54: END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S NOUN: Apply RED-PART to 0, new token is ?PARTICLE Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PART to 0, new token is ?PARTICLE QUANT: -->State 11 Apply RED-PART to 0, new token is ?PARTICLE COMMA: -->State 25 PARTICLE: -->State 57 PREP: -->State 23 ARTICLE: -->State 9 Apply RED-PART to 0, new token is ?PARTICLE QUOTE: -->State 8 Apply RED-PART to 0, new token is ?PARTICLE POSSESSIVE: -->State 2 ADJ*: -->State 3 PP: -->State 22 NP: -->State 4 NPP: -->State 55 ?PARTICLE: -->State 56 State # 55: END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S COMMA: -->State 25 PARTICLE: -->State 30 PREP: -->State 23 PP: -->State 22 State # 56: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 59 State # 57: NOUN: Apply RED-PART to 0, new token is ?PARTICLE Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PART to 0, new token is ?PARTICLE QUANT: -->State 11 Apply RED-PART to 0, new token is ?PARTICLE PARTICLE: -->State 50 OFWORD: -->State 58 ARTICLE: -->State 9 Apply RED-PART to 0, new token is ?PARTICLE QUOTE: -->State 8 Apply RED-PART to 0, new token is ?PARTICLE POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 27 ?PARTICLE: -->State 52 State # 58: NOUN: Apply RED-PART to 2, new token is ?PARTICLE Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PART to 2, new token is ?PARTICLE QUANT: -->State 11 Apply RED-PART to 2, new token is ?PARTICLE ARTICLE: -->State 9 Apply RED-PART to 2, new token is ?PARTICLE QUOTE: -->State 8 Apply RED-PART to 2, new token is ?PARTICLE POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 29 State # 59: END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S COMMA: -->State 25 PARTICLE: -->State 30 PREP: -->State 23 PP: -->State 22 State # 60: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 62 State # 61: END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S NOUN: Apply RED-PART to 0, new token is ?PARTICLE Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PART to 0, new token is ?PARTICLE QUANT: -->State 11 Apply RED-PART to 0, new token is ?PARTICLE PARTICLE: -->State 50 OFWORD: -->State 58 ARTICLE: -->State 9 Apply RED-PART to 0, new token is ?PARTICLE QUOTE: -->State 8 Apply RED-PART to 0, new token is ?PARTICLE POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 4 NPP: -->State 27 ?PARTICLE: -->State 52 State # 62: END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S COMMA: -->State 25 PARTICLE: -->State 30 PREP: -->State 23 PP: -->State 22 State # 63: VERB: -->State 64 State # 64: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV ADV: -->State 47 Apply RED-FCN to 0, new token is ?ADV ?ADV: -->State 65 State # 65: ARTICLE, QUOTE, END-OF-INPUT, NOUN, ADJ, ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP State # 66: ARTICLE, QUOTE, NOUN, ADJ, QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT MISCWORD: -->State 69 Apply RED-NOT to 0, new token is ?NOT ?NOT: -->State 70 State # 67: VERB, ADV: Apply RED-NOT to 0, new token is ?NOT MISCWORD: -->State 69 ?NOT: -->State 68 State # 68: VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO State # 69: ARTICLE, QUOTE, VERB, NOUN, ADJ, ADV, QUANT, MISCWORD, PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT State # 70: ARTICLE, QUOTE, NOUN, ADJ, QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE MISCWORD: -->State 72 ?BE: -->State 71 State # 71: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 75 QUANT: -->State 11 PARTICLE: -->State 30 PREP: -->State 23 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 PP: -->State 73 NP: -->State 4 NPP: -->State 74 State # 72: ARTICLE, QUOTE, NOUN, ADJ, QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE State # 73: END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S State # 74: END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S COMMA: -->State 25 PARTICLE: -->State 30 PREP: -->State 23 PP: -->State 22 State # 75: END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 PARTICLE: -->State 30 PREP: -->State 23 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 13 PP: -->State 76 NP: -->State 14 State # 76: END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S State # 77: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 MISCWORD: -->State 81 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NOT: -->State 84 NP: -->State 85 State # 78: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 MISCWORD: -->State 81 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NOT: -->State 79 NP: -->State 80 State # 79: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 83 State # 80: VERB, ADV: Apply RED-NOT to 0, new token is ?NOT MISCWORD: -->State 69 APOSTR: -->State 16 OFWORD: -->State 15 ?NOT: -->State 82 State # 81: ARTICLE, QUOTE, NOUN, ADJ, QUANT: Apply RED-NOT to 1, new token is NOT State # 82: VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO State # 83: VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO APOSTR: -->State 16 OFWORD: -->State 15 State # 84: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 91 State # 85: ARTICLE, QUOTE, NOUN, ADJ, QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT MISCWORD: -->State 69 Apply RED-NOT to 0, new token is ?NOT APOSTR: -->State 16 OFWORD: -->State 15 ?NOT: -->State 86 State # 86: ARTICLE, QUOTE, NOUN, ADJ, QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE MISCWORD: -->State 72 ?BE: -->State 87 State # 87: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 90 QUANT: -->State 11 PARTICLE: -->State 30 PREP: -->State 23 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 PP: -->State 88 NP: -->State 4 NPP: -->State 89 State # 88: END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S State # 89: END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S COMMA: -->State 25 PARTICLE: -->State 30 PREP: -->State 23 PP: -->State 22 State # 90: END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 13 NP: -->State 14 State # 91: ARTICLE, QUOTE, NOUN, ADJ, QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE MISCWORD: -->State 72 APOSTR: -->State 16 OFWORD: -->State 15 ?BE: -->State 92 State # 92: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 95 QUANT: -->State 11 PARTICLE: -->State 30 PREP: -->State 23 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 PP: -->State 93 NP: -->State 4 NPP: -->State 94 State # 93: END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S State # 94: END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S COMMA: -->State 25 PARTICLE: -->State 30 PREP: -->State 23 PP: -->State 22 State # 95: END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 13 NP: -->State 14 State # 96: END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S NOUN: -->State 19 State # 97: END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S State # 98: END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S PARTICLE: -->State 30 PREP: -->State 23 APOSTR: -->State 16 OFWORD: -->State 15 PP: -->State 101 State # 99: NOUN: Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 QUANT: -->State 11 OFWORD: -->State 28 ARTICLE: -->State 9 QUOTE: -->State 8 POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 100 NPP: -->State 27 State # 100: COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S Apply RED-NPP to 1, new token is NPP APOSTR: -->State 16 OFWORD: -->State 15 State # 101: END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S State # 102: END-OF-INPUT, VERB, ADV, DIR, TOBE, QWORD, CANDO, PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS NOUN: Apply RED-PERS to 2, new token is ?PERS Apply RED-ADJ to 0, new token is ADJ* ADJ: -->State 12 Apply RED-PERS to 2, new token is ?PERS QUANT: -->State 11 Apply RED-PERS to 2, new token is ?PERS ARTICLE: -->State 9 Apply RED-PERS to 2, new token is ?PERS QUOTE: -->State 8 Apply RED-PERS to 2, new token is ?PERS POSSESSIVE: -->State 2 ADJ*: -->State 3 NP: -->State 26 State # 103: END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* NOUN: -->State 19 Apply RED-ADJ to 2, new token is ADJ* \ No newline at end of file diff --git a/states.txt b/states.txt new file mode 100644 index 0000000..4c05e12 --- /dev/null +++ b/states.txt @@ -0,0 +1,901 @@ + +State # 1: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 0, new token is ?PERS +NOUN: Apply RED-PERS to 0, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PERS to 0, new token is ?PERS +QUANT: -->State 11 + Apply RED-PERS to 0, new token is ?PERS +ASKWORD: -->State 10 +ARTICLE: -->State 9 + Apply RED-PERS to 0, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 0, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 5 +?PERS: -->State 6 +SP: -->State 7 + +State # 2: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 103 +NP: -->State 14 + +State # 3: +NOUN: -->State 19 + +State # 4: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 5: +COMMA: -->State 102 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 6: +END-OF-INPUT, PARTICLE, +PREP: Apply DO-ORPHAN-TEST to 0, new token is O? +TOBE, CANDO: Apply RED-FCN to 0, new token is ?QW1 +VERB: Apply RED-CANDO to 0, new token is ?CANDO +NOUN: Apply RED-ADJ to 0, new token is ADJ* + Apply DO-ORPHAN-TEST to 0, new token is O? +ADJ: -->State 12 + Apply DO-ORPHAN-TEST to 0, new token is O? +ADV: Apply RED-CANDO to 0, new token is ?CANDO + Apply DO-ORPHAN-TEST to 0, new token is O? +QUANT: -->State 11 + Apply DO-ORPHAN-TEST to 0, new token is O? +DIR: -->State 42 +QWORD: -->State 41 +ARTICLE: -->State 9 + Apply DO-ORPHAN-TEST to 0, new token is O? +QUOTE: -->State 8 + Apply DO-ORPHAN-TEST to 0, new token is O? +O?: -->State 35 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +?QW1: -->State 36 +NP: -->State 37 +?CANDO: -->State 38 +VP: -->State 39 +S: -->State 40 + +State # 7: +END-OF-INPUT: DONE + +State # 8: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-QUOTE to 1, new token is NP + +State # 9: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 34 +NP: -->State 14 + +State # 10: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 21 + +State # 11: +OFWORD, END-OF-INPUT, VERB, +ADV, MISCWORD, TOBE, CANDO, +COMMA, PARTICLE, PREP, +APOSTR: Apply RED-QT to 1, new token is NP +NOUN: Apply RED-QT to 1, new token is NP + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-QT to 1, new token is NP +QUANT: -->State 11 + Apply RED-QT to 1, new token is NP +ARTICLE: -->State 9 + Apply RED-QT to 1, new token is NP +QUOTE: -->State 8 + Apply RED-QT to 1, new token is NP +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 20 + +State # 12: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 13: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* + +State # 14: +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 15: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 18 + +State # 16: +MISCWORD: -->State 17 + +State # 17: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-POSS to 3, new token is POSSESSIVE + +State # 18: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-OF to 3, new token is NP +APOSTR: -->State 16 + Apply RED-OF to 3, new token is NP +OFWORD: -->State 15 + Apply RED-OF to 3, new token is NP + +State # 19: +OFWORD, ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP, APOSTR: Apply RED-NP to 2, new token is NP + +State # 20: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +TOBE, CANDO, COMMA, +PARTICLE, PREP: Apply RED-QN to 2, new token is NP +APOSTR: -->State 16 + Apply RED-QN to 2, new token is NP +OFWORD: -->State 15 + Apply RED-QN to 2, new token is NP + +State # 21: +COMMA: -->State 25 +PARTICLE: -->State 24 +PREP: -->State 23 +PP: -->State 22 + +State # 22: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 2, new token is NPP + +State # 23: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +OFWORD: -->State 32 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 31 + +State # 24: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 3, new token is ?PERS +NOUN: Apply RED-PERS to 3, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PERS to 3, new token is ?PERS +QUANT: -->State 11 + Apply RED-PERS to 3, new token is ?PERS +OFWORD: -->State 28 +ARTICLE: -->State 9 + Apply RED-PERS to 3, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 3, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 25: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 26: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, COMMA, PARTICLE, +PREP: Apply RED-NPP to 3, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 27: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +COMMA: -->State 25 + Apply RED-PP to 2, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 2, new token is PP +PREP: -->State 23 + Apply RED-PP to 2, new token is PP +PP: -->State 22 + +State # 28: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 29: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +COMMA: -->State 25 + Apply RED-PP to 3, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 3, new token is PP +PREP: -->State 23 + Apply RED-PP to 3, new token is PP +PP: -->State 22 + +State # 30: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 + +State # 31: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 2, new token is PP +COMMA: -->State 25 + Apply RED-PP to 2, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 2, new token is PP +PREP: -->State 23 + Apply RED-PP to 2, new token is PP +PP: -->State 22 + +State # 32: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 33 + +State # 33: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PP to 3, new token is PP +COMMA: -->State 25 + Apply RED-PP to 3, new token is PP +PARTICLE: -->State 30 + Apply RED-PP to 3, new token is PP +PREP: -->State 23 + Apply RED-PP to 3, new token is PP +PP: -->State 22 + +State # 34: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* + +State # 35: +END-OF-INPUT, NOUN, ADV: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +PARTICLE: -->State 99 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 96 +PP: -->State 97 +NP: -->State 98 + +State # 36: +TOBE: -->State 44 +CANDO: -->State 78 +BE-FORM: -->State 77 + +State # 37: +VERB, ADV: Apply RED-CANDO to 1, new token is ?CANDO +TOBE: -->State 44 +CANDO: -->State 67 +APOSTR: -->State 16 +OFWORD: -->State 15 +BE-FORM: -->State 66 + +State # 38: +VERB: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 +?ADV: -->State 63 + +State # 39: +END-OF-INPUT, ADV: Apply RED-PART to 0, new token is ?PARTICLE +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +DIR: -->State 51 +PARTICLE: -->State 50 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 48 +?PARTICLE: -->State 49 + +State # 40: +ADV: -->State 47 +END-OF-INPUT: Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 46 + +State # 41: +TOBE: -->State 44 + Apply RED-FCN to 1, new token is ?QW1 +CANDO: Apply RED-FCN to 1, new token is ?QW1 +BE-FORM: -->State 43 + +State # 42: +END-OF-INPUT, ADV: Apply RED-SD to 1, new token is S + +State # 43: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 45 + +State # 44: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, MISCWORD, PARTICLE, +PREP: Apply RED-BE-FORM to 1, new token is BE-FORM + +State # 45: +END-OF-INPUT, ADV: Apply RED-SQBN to 3, new token is S +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 46: +END-OF-INPUT: Apply RED-SP to 3, new token is SP + +State # 47: +ARTICLE, QUOTE, +END-OF-INPUT, VERB, NOUN, +ADJ, ADV, QUANT, DIR, +PARTICLE: Apply RED-FCN to 1, new token is ?ADV + +State # 48: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-PART to 0, new token is ?PARTICLE +COMMA: -->State 25 +PARTICLE: -->State 61 +PREP: -->State 23 +PP: -->State 22 +?PARTICLE: -->State 60 + +State # 49: +END-OF-INPUT, ADV: Apply RED-SV to 2, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 54 + +State # 50: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +OFWORD: -->State 53 +?PARTICLE: -->State 52 + +State # 51: +END-OF-INPUT, ADV: Apply RED-SVD to 2, new token is S + +State # 52: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 53: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT: Apply RED-PART to 2, new token is ?PARTICLE + +State # 54: +END-OF-INPUT, ADV: Apply RED-SVN to 3, new token is S +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +COMMA: -->State 25 +PARTICLE: -->State 57 +PREP: -->State 23 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 22 +NP: -->State 4 +NPP: -->State 55 +?PARTICLE: -->State 56 + +State # 55: +END-OF-INPUT, ADV: Apply RED-SVPNN to 4, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 56: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 59 + +State # 57: +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +OFWORD: -->State 58 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 58: +NOUN: Apply RED-PART to 2, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PART to 2, new token is ?PARTICLE +QUANT: -->State 11 + Apply RED-PART to 2, new token is ?PARTICLE +ARTICLE: -->State 9 + Apply RED-PART to 2, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 2, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 29 + +State # 59: +END-OF-INPUT, ADV: Apply RED-SVPNPN to 5, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 60: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 62 + +State # 61: +END-OF-INPUT, ADV: Apply RED-SVNP to 3, new token is S +NOUN: Apply RED-PART to 0, new token is ?PARTICLE + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PART to 0, new token is ?PARTICLE +QUANT: -->State 11 + Apply RED-PART to 0, new token is ?PARTICLE +PARTICLE: -->State 50 +OFWORD: -->State 58 +ARTICLE: -->State 9 + Apply RED-PART to 0, new token is ?PARTICLE +QUOTE: -->State 8 + Apply RED-PART to 0, new token is ?PARTICLE +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 4 +NPP: -->State 27 +?PARTICLE: -->State 52 + +State # 62: +END-OF-INPUT, ADV: Apply RED-SVNPN to 4, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 63: +VERB: -->State 64 + +State # 64: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +QUANT, DIR, PARTICLE: Apply RED-FCN to 0, new token is ?ADV +ADV: -->State 47 + Apply RED-FCN to 0, new token is ?ADV +?ADV: -->State 65 + +State # 65: +ARTICLE, QUOTE, +END-OF-INPUT, NOUN, ADJ, +ADV, QUANT, DIR, PARTICLE: Apply RED-VP to 4, new token is VP + +State # 66: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 + Apply RED-NOT to 0, new token is ?NOT +?NOT: -->State 70 + +State # 67: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +?NOT: -->State 68 + +State # 68: +VERB, ADV: Apply RED-CANDO to 3, new token is ?CANDO + +State # 69: +ARTICLE, QUOTE, VERB, NOUN, +ADJ, ADV, QUANT, MISCWORD, +PARTICLE, PREP: Apply RED-NOT to 1, new token is ?NOT + +State # 70: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 71 + +State # 71: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 75 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 73 +NP: -->State 4 +NPP: -->State 74 + +State # 72: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 1, new token is ?BE + +State # 73: +END-OF-INPUT, ADV: Apply RED-SNBP to 5, new token is S + +State # 74: +END-OF-INPUT, ADV: Apply RED-SNBN to 5, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 75: +END-OF-INPUT, ADV: Apply RED-SNBA to 5, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +PP: -->State 76 +NP: -->State 14 + +State # 76: +END-OF-INPUT, ADV: Apply RED-SNBAP to 6, new token is S + +State # 77: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 84 +NP: -->State 85 + +State # 78: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +MISCWORD: -->State 81 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NOT: -->State 79 +NP: -->State 80 + +State # 79: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 83 + +State # 80: +VERB, ADV: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 82 + +State # 81: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT: Apply RED-NOT to 1, new token is NOT + +State # 82: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO + +State # 83: +VERB, ADV: Apply RED-CANDO to 4, new token is ?CANDO +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 84: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 91 + +State # 85: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-NOT to 0, new token is ?NOT +MISCWORD: -->State 69 + Apply RED-NOT to 0, new token is ?NOT +APOSTR: -->State 16 +OFWORD: -->State 15 +?NOT: -->State 86 + +State # 86: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +?BE: -->State 87 + +State # 87: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 90 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 88 +NP: -->State 4 +NPP: -->State 89 + +State # 88: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 89: +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 90: +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 91: +ARTICLE, QUOTE, NOUN, ADJ, +QUANT, PARTICLE, PREP: Apply RED-BE to 0, new token is ?BE +MISCWORD: -->State 72 +APOSTR: -->State 16 +OFWORD: -->State 15 +?BE: -->State 92 + +State # 92: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 95 +QUANT: -->State 11 +PARTICLE: -->State 30 +PREP: -->State 23 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +PP: -->State 93 +NP: -->State 4 +NPP: -->State 94 + +State # 93: +END-OF-INPUT, ADV: Apply RED-SBNP to 6, new token is S + +State # 94: +END-OF-INPUT, ADV: Apply RED-SBNN to 6, new token is S +COMMA: -->State 25 +PARTICLE: -->State 30 +PREP: -->State 23 +PP: -->State 22 + +State # 95: +END-OF-INPUT, ADV: Apply RED-SBNA to 6, new token is S +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 13 +NP: -->State 14 + +State # 96: +END-OF-INPUT, ADV: Apply RED-O-ADJ to 2, new token is S +NOUN: -->State 19 + +State # 97: +END-OF-INPUT, ADV: Apply RED-O-PP to 2, new token is S + +State # 98: +END-OF-INPUT, ADV: Apply RED-O-NP to 2, new token is S +PARTICLE: -->State 30 +PREP: -->State 23 +APOSTR: -->State 16 +OFWORD: -->State 15 +PP: -->State 101 + +State # 99: +NOUN: Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 +QUANT: -->State 11 +OFWORD: -->State 28 +ARTICLE: -->State 9 +QUOTE: -->State 8 +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 100 +NPP: -->State 27 + +State # 100: +COMMA, PARTICLE, PREP: Apply RED-NPP to 1, new token is NPP +END-OF-INPUT, ADV: Apply RED-O-PP to 3, new token is S + Apply RED-NPP to 1, new token is NPP +APOSTR: -->State 16 +OFWORD: -->State 15 + +State # 101: +END-OF-INPUT, ADV: Apply RED-O-NP to 3, new token is S + +State # 102: +END-OF-INPUT, VERB, ADV, +DIR, TOBE, QWORD, CANDO, +PARTICLE, PREP: Apply RED-PERS to 2, new token is ?PERS +NOUN: Apply RED-PERS to 2, new token is ?PERS + Apply RED-ADJ to 0, new token is ADJ* +ADJ: -->State 12 + Apply RED-PERS to 2, new token is ?PERS +QUANT: -->State 11 + Apply RED-PERS to 2, new token is ?PERS +ARTICLE: -->State 9 + Apply RED-PERS to 2, new token is ?PERS +QUOTE: -->State 8 + Apply RED-PERS to 2, new token is ?PERS +POSSESSIVE: -->State 2 +ADJ*: -->State 3 +NP: -->State 26 + +State # 103: +END-OF-INPUT, ADV: Apply RED-ADJ to 2, new token is ADJ* +NOUN: -->State 19 + Apply RED-ADJ to 2, new token is ADJ* diff --git a/syntax.zil b/syntax.zil new file mode 100644 index 0000000..3ed9467 --- /dev/null +++ b/syntax.zil @@ -0,0 +1,705 @@ +"SYNTAX for MILLIWAYS +Copyright (C) 1988 Infocom, Inc. All rights reserved." + + + + + + + + +; + + + + + + + + + + + + + + + + + + + + + + + + + +% + + + + + ]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +; + + + + "WASH IN OBJECT" + + + + + + + + + + + + + +;" + + +" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "Follow me north." + "F. me to office." + + + + + + + + + + + + + + + + + + +; + + + + + + + + + + + + + + + + + + + + + + + + + +; +; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;"pull myself together" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "BLOW BLOWGUN AT person" + + + + + + + + + + +; + + + + + + + + + + + + + + + + + + + + + + + ;"SHAKE HANDS" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[ + + + + + + + + + + + + +] + +; + + + + + + + + + + + + + + + + + + + + + + + +;"" + + + + + + + + + +[ + + + + + + + + + + + + + + + + + + + +] + + + + + + + + + diff --git a/things.zabstr b/things.zabstr new file mode 100644 index 0000000..4f4c62a --- /dev/null +++ b/things.zabstr @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/things.zap b/things.zap new file mode 100644 index 0000000..0cdb751 --- /dev/null +++ b/things.zap @@ -0,0 +1,254 @@ + + + .FUNCT RANDOM-PSEUDO:ANY:0:0 + EQUAL? PRSA,V?TELL-ABOUT,V?LOOK-UNDER /FALSE + EQUAL? PRSA,V?LOOK-BEHIND,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT /FALSE + EQUAL? PRSA,V?SEARCH,V?LOOK-INSIDE,V?EXAMINE \?CCL7 + ICALL1 NOTHING-SPECIAL + RTRUE +?CCL7: CALL1 WONT-HELP + RSTACK + + + .FUNCT TOOTHBRUSH-F:ANY:0:0 + EQUAL? PRSA,V?TAKE \FALSE + FSET? TOOTHBRUSH,TOUCHBIT /FALSE + MOVE TOOTHBRUSH,PLAYER + FSET TOOTHBRUSH,TOUCHBIT + FCLEAR TOOTHBRUSH,TRYTAKEBIT + PRINTI "As you pick up the " + PRINTD TOOTHBRUSH + PRINTR " a tree outside the window collapses. There is no causal relationship between these two events." + + + .FUNCT GOWN-F:ANY:0:0 + EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL3 + FSET? GOWN,WORNBIT /?CCL3 + PRINTR "It's hard to open or close the pocket unless you're wearing the gown." +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTI "The dressing gown is faded and battered, and is clearly a garment which has seen better decades. It has a pocket which is " + FSET? GOWN,OPENBIT \?CCL10 + PRINTI "open" + JUMP ?CND8 +?CCL10: PRINTI "closed" +?CND8: PRINTR ", and a small loop at the back of the collar." + + + .FUNCT SLEEVES-F:ANY:0:0 + CALL2 VISIBLE?,GOWN + ZERO? STACK \?CCL3 + CALL2 NOT-HERE,SLEEVES + RSTACK +?CCL3: EQUAL? PRSA,V?TAKE \FALSE + ICALL PERFORM,PRSA,GOWN + RTRUE + + + .FUNCT THING-F:ANY:0:0 + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTI "Apart from a label on the bottom saying ""Made in Ibiza"" it furnishes you with no clue as to its purpose, if indeed it has one. You are surprised to see it because you thought you'd thrown it away. Like most gifts from your aunt," + PRINT GET-RID + CRLF + RTRUE +?CCL3: EQUAL? PRSA,V?DROP \?CCL5 + MOVE THING,HERE + PRINTR "It falls to the ground with a light ""thunk."" It doesn't do anything else at all." +?CCL5: EQUAL? PRSA,V?CLOSE \FALSE + PRINTR "Come to think of it, you vaguely remember an instruction booklet with directions for that. You never read it and lost it months ago." + + + .FUNCT I-THING:ANY:0:0 + RANDOM 4 + ADD 4,STACK + ICALL QUEUE,I-THING,STACK + CALL2 VISIBLE?,THING + ZERO? STACK \FALSE + CALL2 HELD?,THING + ZERO? STACK \FALSE + RANDOM 100 + LESS? 40,STACK /?CCL7 + MOVE THING,HERE + RFALSE +?CCL7: FSET? GOWN,WORNBIT \?CCL9 + FSET? GOWN,OPENBIT \?CCL9 + RANDOM 100 + LESS? 65,STACK /?CCL9 + MOVE THING,GOWN + RFALSE +?CCL9: MOVE THING,PLAYER + RFALSE + + + .FUNCT GUIDE-DESCFCN:ANY:0:1,X + PRINTI "There is a copy of " + PRINT GUIDE-NAME + PRINTR " here." + + + .FUNCT GUIDE-F:ANY:0:0 + EQUAL? PRSA,V?EXAMINE \?CCL3 + PRINTR "The Guide is a Mark II model. Its only resemblance to the Mark IV pictured in the brochure in your game package is the large, friendly ""Don't Panic!"" on its cover. + +The Guide is a Sub-Etha Relay. You can use it to tap information from a huge and distant data bank by consulting the Guide about some item or subject." +?CCL3: EQUAL? PRSA,V?ASK-ABOUT \FALSE + EQUAL? PRSO,GUIDE \FALSE + FSET? TOWEL,WORNBIT \?CND8 + PRINT WITH-TOWEL + CRLF + RTRUE +?CND8: PRINTI "The Guide checks through its Sub-Etha-Net database and eventually comes up with the following entry:" + CRLF + CRLF + EQUAL? PRSI,GUIDE \?CCL12 + PRINTD GUIDE + PRINTI " is a wholly remarkable product." + PRINT ALREADY-KNOW-THAT + CRLF + RTRUE +?CCL12: EQUAL? PRSI,HEART-OF-GOLD \?CCL14 + PRINTI "There is absolutely no such spaceship as " + PRINTD HEART-OF-GOLD + PRINTI " and anything you've ever read in this spot to the contrary was just a prank. + -- " + PRINT AGENCY + CRLF + RTRUE +?CCL14: EQUAL? PRSI,SCC \?CCL16 + PRINTI "The " + PRINT SCC + PRINTR " incompetently produces a wide range of inefficient and unreliable high-tech machinery. However, thanks to SCC's ruthless marketing division, this junk accounts for over 95% of the high-tech machinery sold in the Galaxy. (SCC's marketing division will be the first against the wall when the revolution comes.)" +?CCL16: EQUAL? PRSI,MARVIN \?CCL18 + PRINT GPP + PRINTI " are a misguided attempt by the " + PRINT SCC + PRINTR " to make their machines behave more like people. Among the more miserable failures: paranoid-depressive robots and over-protective computers." +?CCL18: EQUAL? PRSI,RAMP \?CCL20 + PRINTR "According to legend, Magrathea was a planet that amassed incredible wealth by manufacturing other planets. The legends also mention it as the setting of the very eagerly awaited second Infocom Hitchhiker's game." +?CCL20: EQUAL? PRSI,ZAPHOD \?CCL22 + PRINTD ZAPHOD + PRINTI " is the current" + PRINT PRESIDENT + PRINTR "." +?CCL22: EQUAL? PRSI,BABEL-FISH \?CCL25 + PRINTI "A mind-bogglingly improbable creature. A " + PRINTD BABEL-FISH + PRINTR ", when placed in one's ear, allows one to understand any language." +?CCL25: EQUAL? PRSI,TOWEL \?CCL27 + PRINTR "A towel is the most useful thing (besides the Guide) a Galactic hitchhiker can have. Its uses include travel, combat, communications, protection from the elements, hand-drying and reassurance. Towels have great symbolic value, with many associated points of honour. Never mock the towel of another, even if it has little pink and blue flowers on it. Never do something to somebody else's towel that you would not want them to do to yours. And, if you borrow the towel of another, you MUST return it before leaving their world." +?CCL27: EQUAL? PRSI,GARGLE-BLASTER \?CCL29 + PRINTR "The best drink in existence; somewhat like having your brains smashed out by a slice of lemon wrapped around a large gold brick." +?CCL29: EQUAL? PRSI,THIRD-PLANET \?CCL31 + PRINTR "Mostly harmless." +?CCL31: FSET? PRSI,TOOLBIT \?CCL33 + PRINTR "The editor responsible for entries under this heading has been out to lunch for a couple of years but is expected back soon, at which point there will be rapid updates. Until then, don't panic, unless your situation is really a life or death one, in which case, sure, go ahead, panic." +?CCL33: PRINTR "That is one of the Great Unanswered Questions. For a list of the others, consult the Guide." + + + .FUNCT BABEL-FISH-F:ANY:0:0 + EQUAL? PRSA,V?REMOVE,V?TAKE \FALSE + PRINTI "That would be foolish. Having a " + PRINTD BABEL-FISH + PRINTR " in your ear is terribly useful." + + + .FUNCT TOWEL-F:ANY:0:0 + EQUAL? PRSA,V?MOVE,V?TAKE \?CCL3 + EQUAL? PRSO,TOWEL \?CCL3 + FSET? TOWEL,SURFACEBIT \?CCL3 + FCLEAR TOWEL,TRYTAKEBIT + FCLEAR TOWEL,SURFACEBIT + ICALL ROB,TOWEL,HERE + FCLEAR TOWEL,CONTBIT + FCLEAR TOWEL,OPENBIT + FCLEAR TOWEL,NDESCBIT + EQUAL? PRSA,V?MOVE \FALSE + PRINTR "Okay, it's no longer covering the drain." +?CCL3: EQUAL? PRSA,V?PUT \?CCL11 + EQUAL? PRSI,EYES,HEAD \?CCL11 + FSET? TOWEL,WORNBIT \?CCL16 + PRINTR "It already is." +?CCL16: PRINTR "There's no need for that. It's not as if there's a Bugblatter Beast around, or something." +?CCL11: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTR "It's covered with little pink and blue flowers." + + + .FUNCT SATCHEL-DESCFCN:ANY:0:1,X + PRINTI "There is a satchel here." + ICALL1 ITEM-ON-SATCHEL-DESCRIPTION + CRLF + RTRUE + + + .FUNCT ITEM-ON-SATCHEL-DESCRIPTION:ANY:0:0 + ZERO? ITEM-ON-SATCHEL /FALSE + PRINTI " Sitting on top of it is " + ICALL2 PRINTA,ITEM-ON-SATCHEL + PRINTC 46 + RTRUE + + + .FUNCT SATCHEL-F:ANY:0:0 + EQUAL? PRSA,V?OPEN \?CCL3 + CALL2 PRIVATE,STR?168 + RSTACK +?CCL3: EQUAL? PRSA,V?PUT \?CCL6 + EQUAL? SATCHEL,PRSI \?CCL6 + CALL2 HELD?,SATCHEL + ZERO? STACK /?CCL11 + PRINTR "Put down the satchel first." +?CCL11: ZERO? ITEM-ON-SATCHEL /?CCL13 + PRINTI "But" + ICALL2 PRINT-THE,ITEM-ON-SATCHEL + PRINTR " is already on the satchel." +?CCL13: SET 'ITEM-ON-SATCHEL,PRSO + MOVE PRSO,HERE + FSET PRSO,NDESCBIT + FSET PRSO,TRYTAKEBIT + PRINTI "Okay," + ICALL2 PRINT-THE,PRSO + PRINTR " is now sitting on the satchel." +?CCL6: EQUAL? PRSA,V?EXAMINE \?CCL15 + PRINTI "The satchel, which is " + FSET? SATCHEL,OPENBIT \?CCL18 + PRINTI "open" + JUMP ?CND16 +?CCL18: PRINTI "closed" +?CND16: PRINTI ", is fairly bulky." + ICALL1 ITEM-ON-SATCHEL-DESCRIPTION + CRLF + RTRUE +?CCL15: EQUAL? PRSA,V?TAKE \FALSE + IN? SATCHEL,FORD \FALSE + PRINTI "Ford says, ""Hey, Arthur, keep " + PRINTD HANDS + PRINTR "s off my satchel!""" + + + .FUNCT PRIVATE:ANY:1:1,STRING + PRINTI "You can't. It's not yours. It's " + PRINT STRING + PRINTR "'s and it's private." + + + .FUNCT GAME-F:ANY:0:0 + EQUAL? PRSA,V?THROUGH,V?READ,V?PLAY /?CCL3 + EQUAL? PRSA,V?LAMP-ON,V?FIND,V?EXAMINE \FALSE +?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "[You're playing it now!]" + + + .FUNCT DINNER-D:ANY:1:1,ARG,L + LOC DINNER >L + PRINTI "An appetizing aroma wafts from an array of covered dishes" + PRINTR "." + + + .FUNCT DINNER-F:ANY:0:0,I,L + LOC DINNER >L + EQUAL? PRSA,V?EAT \?CCL3 + PRINTR "You take a bite and find it delicious." +?CCL3: EQUAL? PRSA,V?EXAMINE \FALSE + PRINTI "A lovely assortment of fish, fowl, greens, and sweets fills the " + PRINTR "plate." + + .ENDI diff --git a/things.zil b/things.zil new file mode 100644 index 0000000..45bb816 --- /dev/null +++ b/things.zil @@ -0,0 +1,542 @@ +"THINGS for MILLIWAYS +Copyright (C) 1988 Infocom, Inc. All rights reserved." + + + ) + ( + + ) + (T + + ;)>> + + + + + + + >> + + + + + ; + )> + )>> + + + + + >> + ) + ( + + + ) + (T + )> + ) + (T + )> + ;)> + ) + ;( + + ,HEADACHE> + + + + ) + ;( + ,SLEEVE-TIED> + ) + ;( + + )>> + + + +> + ) + ( + + ) + ;( + + + ) + (,SLEEVE-TIED + ) + (T + + )>) + ;( + > + ) + (T + )>)>> + + + + + ) + ( + ;>> + + ) + ( + )>> + + + +>> + > + ; + > + ; + + + ;> + )> + + ) + ( + + > + ) + (T + )> + > + + + +> + + + ) + ( + > + + + ) + ;( + + )> + + + ) + ( + ) + ( + ) + ( + ) + ;( + ) + ( + ) + ( + ; + >> + ) + ( + ) + ( + ) + ( + ) + ( + ) + ( + ) + ;( + ) + (T + )>)>> + + + + + + + + + + + +; + + + + + )>> + + + + + + > + + + + + + + + ) + (T + )>) + ( + > + + ) + (T + )>) + ( + + + + )> + ) + (T + )>) + ;( + > + + )>> + + + + + + + > + + + + + )>> + + + ;>> + ) + ( + > + + ) + (,ITEM-ON-SATCHEL + + + ) + (T + + + + + + + )>) + ( + + + ) + (T + )> + + + ) + ( + > + )>> + +> + + + + + + + + + + + + )>> + + + +)) + + + ; + ) + (<==? .L ,SIDEBOARD> + )> + )>> + +)) + + > + + ) + (T + + )>) + ( + ; + ) + (T )>) + ( + + + ) + (T )>) + ;( + + + ) + (<==? .L ,SIDEBOARD> + > + + + ) + (T )>)>)>) + ;( + > + ;.I <> T> + )>) + ;( + + >) + (T )> + )>> + +"For debugging parser:" + + + + + + + + diff --git a/top.zabstr b/top.zabstr new file mode 100644 index 0000000..f43ccd0 --- /dev/null +++ b/top.zabstr @@ -0,0 +1,85 @@ + + + + + + +> +>> +> + +> +> + + +> +> +> + + + + +> +> + + + + + +> + >> +> +> +> + + +> + +> +> > )>>> +> +> +> + +> +> > > >> +>> + +> +> + +>> + +> +> + + +>> +> + > + )>)>>> + + +> +) (WD3 <> +) "AUX" (NP ) CT) > > > ,W?MY) (> 0> > .WD1) (.WD2 .WD2) (.WD3 .WD3)>)>)>) (> T)>) (> T)>>> + \ No newline at end of file diff --git a/top.zap b/top.zap new file mode 100644 index 0000000..ba0f4fd --- /dev/null +++ b/top.zap @@ -0,0 +1,448 @@ + + .SEGMENT "0" + + + .FUNCT MORE-SPECIFIC:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "[Please be more specific.]" + + + .FUNCT V-PDEBUG:ANY:0:0 + ZERO? PRSO /?CCL3 + ZERO? IDEBUG /?PRT4 + SET 'IDEBUG,0 + JUMP ?PRE6 +?PRT4: SET 'IDEBUG,1 +?PRE6: PRINTC 123 + PRINTN IDEBUG + PRINTR "}" +?CCL3: ZERO? P-DBUG /?PRT9 + SET 'P-DBUG,0 + JUMP ?PRE11 +?PRT9: SET 'P-DBUG,1 +?PRE11: ZERO? P-DBUG /?CCL8 + PRINTR "Find them bugs, boss!" +?CCL8: PRINTR "No bugs left, eh?" + + + .FUNCT VERB-ALL-TEST:ANY:2:2,O,I,L + LOC O >L + EQUAL? PRSA,V?GIVE,V?DROP \?CCL3 + EQUAL? L,WINNER /TRUE + RFALSE +?CCL3: EQUAL? PRSA,V?PUT \?CCL8 + EQUAL? O,I /FALSE + IN? O,I /FALSE + RTRUE +?CCL8: EQUAL? PRSA,V?TAKE \?CCL15 + FSET? O,TAKEBIT /?CND16 + FSET? O,TRYTAKEBIT \FALSE +?CND16: ZERO? I /?CCL22 + EQUAL? L,I /?CND20 + RFALSE +?CCL22: EQUAL? L,HERE /TRUE +?CND20: FSET? L,PERSONBIT /TRUE + FSET? L,SURFACEBIT /TRUE + FSET? L,CONTBIT \FALSE + FSET? L,OPENBIT /TRUE + RFALSE +?CCL15: ZERO? I /TRUE + EQUAL? O,I /FALSE + RTRUE + + + .FUNCT FIX-HIM-HER-IT:ANY:2:2,PRON,OBJ + ZERO? OBJ \?CCL3 + ICALL1 MORE-SPECIFIC + RFALSE +?CCL3: CALL2 ACCESSIBLE?,OBJ + ZERO? STACK \?CCL5 + EQUAL? PRON,PRSO \?PRD9 + CALL2 EVERYWHERE-VERB?,1 + ZERO? STACK /?CTR4 +?PRD9: EQUAL? PRON,PRSI \?CCL5 + CALL2 EVERYWHERE-VERB?,2 + ZERO? STACK \?CCL5 +?CTR4: ICALL2 NOT-HERE,OBJ + RFALSE +?CCL5: EQUAL? PRSO,PRON \?CND14 + SET 'PRSO,OBJ + ICALL TELL-PRONOUN,OBJ,PRON +?CND14: EQUAL? PRSI,PRON \?CND16 + SET 'PRSI,OBJ + ICALL TELL-PRONOUN,OBJ,PRON +?CND16: EQUAL? PRSS,PRON \TRUE + SET 'PRSS,OBJ + ICALL TELL-PRONOUN,OBJ,PRON + RTRUE + + + .FUNCT TELL-PRONOUN:ANY:2:2,OBJ,PRON + FSET? PRON,TOUCHBIT /FALSE + EQUAL? OPRSO,OBJ /FALSE + EQUAL? PRSA,V?DO? /FALSE + PRINTI "[""" + PRINTD PRON + PRINTI """ meaning " + ICALL2 TELL-THE,OBJ + PRINTR "]" + + + .FUNCT NO-M-WINNER-VERB?:ANY:0:0 + RFALSE + + + .FUNCT FIND-A-WINNER:ANY:0:1,RM,OTHER,WHO,N + ASSIGNED? 'RM /?CND1 + SET 'RM,HERE +?CND1: ZERO? QCONTEXT /?CCL5 + IN? QCONTEXT,RM \?CCL5 + RETURN QCONTEXT +?CCL5: FIRST? RM >OTHER /?BOGUS8 +?BOGUS8: SET 'WHO,FALSE-VALUE +?PRG9: ZERO? OTHER \?CCL13 + RETURN WHO +?CCL13: FSET? OTHER,PERSONBIT \?CND11 + FSET? OTHER,INVISIBLE /?CND11 + EQUAL? OTHER,PLAYER /?CND11 + IGRTR? 'N,1 /FALSE + SET 'WHO,OTHER +?CND11: NEXT? OTHER >OTHER /?PRG9 + JUMP ?PRG9 + + + .FUNCT TELL-SAID-TO:ANY:1:1,PER + PRINTI "[said to " + PRINTD PER + PRINTR "]" + + + .FUNCT QCONTEXT-GOOD?:ANY:0:0 + ZERO? QCONTEXT /FALSE + FSET? QCONTEXT,PERSONBIT \FALSE + CALL2 META-LOC,QCONTEXT + EQUAL? HERE,STACK \FALSE + RETURN QCONTEXT + + + .FUNCT META-LOC:ANY:1:2,OBJ,INV,L + LOC OBJ >L +?PRG1: EQUAL? FALSE-VALUE,OBJ,L /FALSE + EQUAL? L,LOCAL-GLOBALS,GLOBAL-OBJECTS,GENERIC-OBJECTS \?CCL7 + RETURN L +?CCL7: IN? OBJ,ROOMS \?CCL9 + RETURN OBJ +?CCL9: ZERO? INV /?CND10 + FSET? OBJ,INVISIBLE /FALSE +?CND10: SET 'OBJ,L + LOC OBJ >L + JUMP ?PRG1 + + + .FUNCT CANT-UNDO:ANY:0:0 + PRINTR "[I can't undo that now.]" + + + .FUNCT PERFORM:ANY:1:3,PA,PO,PI,V,OA,OO,OI,OQ,OS,X,?TMP1,?TMP2 + SET 'OA,PRSA + SET 'OO,PRSO + SET 'OI,PRSI + ZERO? OO /?CCL3 + EQUAL? OO,PI \?CCL3 + SET 'OBJ-SWAP,TRUE-VALUE + JUMP ?CND1 +?CCL3: ZERO? OI /?CCL7 + EQUAL? OI,PO \?CCL7 + SET 'OBJ-SWAP,TRUE-VALUE + JUMP ?CND1 +?CCL7: SET 'OBJ-SWAP,FALSE-VALUE +?CND1: SET 'PRSA,PA + SET 'PRSI,PI + SET 'PRSO,PO + ZERO? P-DBUG /?CND10 + PRINTI "{Perform: A=" + PRINTN PA + ZERO? PO /?CND12 + PRINTI "/O=" + EQUAL? PRSA,V?WALK \?CCL16 + PRINTN PO + JUMP ?CND12 +?CCL16: ICALL2 TELL-D-LOC,PO +?CND12: ZERO? PI /?CND17 + PRINTI "/I=" + ICALL2 TELL-D-LOC,PI +?CND17: ZERO? PRSQ /?CND19 + PRINTI "/Q=" + PRINTN PRSQ +?CND19: ZERO? PRSS /?CND21 + PRINTI "/S=" + ICALL2 TELL-D-LOC,PRSS +?CND21: PRINTI "} +" +?CND10: SET 'V,FALSE-VALUE + ZERO? PRSS /?CND23 + ICALL2 THIS-IS-IT,PRSS +?CND23: ZERO? PRSI /?CND25 + ICALL2 THIS-IS-IT,PRSI +?CND25: ZERO? PRSO /?CND27 + EQUAL? PRSA,V?TELL /?CND27 + EQUAL? PRSA,V?WALK /?CND27 + ICALL2 THIS-IS-IT,PRSO +?CND27: EQUAL? WINNER,PLAYER /?CND32 + ICALL2 THIS-IS-IT,WINNER +?CND32: SET 'PO,PRSO + SET 'PI,PRSI + CALL1 NO-M-WINNER-VERB? + ZERO? STACK \?CND34 + GETP WINNER,P?ACTION + CALL D-APPLY,STR?47,STACK,M-WINNER >V +?CND34: ZERO? PRSS /?CND37 + ZERO? V \?CND39 + GETP PRSS,P?ACTION + CALL D-APPLY,STR?48,STACK,M-SUBJ >V +?CND39: ZERO? V \?CND41 + ZERO? PRSQ /?CND41 + GET ACTIONS,PA >?TMP2 + ADD QACTIONS,2 >?TMP1 + GET QACTIONS,0 + INTBL? ?TMP2,?TMP1,STACK >X \?CND41 + GET X,2 + CALL D-APPLY,STR?49,STACK >V +?CND41: ZERO? V \?CND47 + ZERO? PRSQ /?CCL51 + GET ACTIONS,PA >?TMP2 + ADD QACTIONS,2 >?TMP1 + GET QACTIONS,0 + INTBL? ?TMP2,?TMP1,STACK >X \?CND52 + GET X,1 >X + ZERO? X /?CND52 + CALL D-APPLY,FALSE-VALUE,X >V +?CND52: ZERO? V \?CND47 + GET ACTIONS,PRSQ + CALL D-APPLY,FALSE-VALUE,STACK >V + JUMP ?CND47 +?CCL51: ICALL D-APPLY,FALSE-VALUE,V-STATEMENT +?CND47: EQUAL? M-FATAL,V \?CND58 + SET 'P-CONT,-1 +?CND58: SET 'PRSA,OA + SET 'PRSO,OO + SET 'PRSI,OI + RETURN V +?CND37: ZERO? V \?CND60 + LOC WINNER + IN? STACK,ROOMS /?CND60 + LOC WINNER + GETP STACK,P?ACTION + CALL D-APPLY,STR?50,STACK,M-BEG >V +?CND60: ZERO? V \?CND64 + GETP HERE,P?ACTION + CALL D-APPLY,STR?50,STACK,M-BEG >V +?CND64: ZERO? V \?CND66 + GET PREACTIONS,PA + CALL D-APPLY,STR?49,STACK >V +?CND66: SET 'NOW-PRSI,1 + ZERO? V \?CND68 + ZERO? PI /?CND68 + EQUAL? PRSA,V?WALK /?CND68 + LOC PI + ZERO? STACK /?CND68 + LOC PI + GETP STACK,P?CONTFCN >V + ZERO? V /?CND68 + CALL D-APPLY,STR?51,V,M-CONTAINER >V +?CND68: ZERO? V \?CND76 + ZERO? PI /?CND76 + EQUAL? PI,GLOBAL-HERE \?CND80 + GETP HERE,P?ACTION + CALL D-APPLY,STR?52,STACK >V +?CND80: ZERO? V \?CND76 + GETP PI,P?ACTION + CALL D-APPLY,STR?52,STACK >V +?CND76: SET 'NOW-PRSI,0 + ZERO? V \?CND84 + ZERO? PO /?CND84 + EQUAL? PRSA,V?WALK /?CND84 + LOC PO + ZERO? STACK /?CND84 + LOC PO + GETP STACK,P?CONTFCN >V + ZERO? V /?CND84 + CALL D-APPLY,STR?51,V,M-CONTAINER >V +?CND84: ZERO? V \?CND92 + ZERO? PO /?CND92 + EQUAL? PRSA,V?WALK /?CND92 + EQUAL? PO,GLOBAL-HERE \?CND97 + GETP HERE,P?ACTION + CALL D-APPLY,STR?53,STACK >V +?CND97: ZERO? V \?CND92 + GETP PO,P?ACTION + CALL D-APPLY,STR?53,STACK >V +?CND92: ZERO? V \?CND101 + GET ACTIONS,PA + CALL D-APPLY,FALSE-VALUE,STACK >V +?CND101: EQUAL? M-FATAL,V \?CND104 + SET 'P-CONT,-1 +?CND104: SET 'PRSA,OA + SET 'PRSO,OO + SET 'PRSI,OI + RETURN V + + + .FUNCT TELL-TOO-DARK:ANY:0:0 + PRINT TOO-DARK + RETURN M-FATAL + + + .FUNCT ITAKE-CHECK:ANY:2:2,OBJ,BITS,TAKEN + EQUAL? OBJ,IT \?CCL3 + SET 'OBJ,P-IT-OBJECT + JUMP ?CND1 +?CCL3: EQUAL? OBJ,THEM \?CND1 + SET 'OBJ,P-THEM-OBJECT +?CND1: CALL HELD?,OBJ,WINNER + ZERO? STACK \FALSE + EQUAL? OBJ,HANDS,ROOMS /FALSE + FSET? OBJ,TRYTAKEBIT /?CND10 + EQUAL? WINNER,PLAYER /?CCL14 + SET 'TAKEN,TRUE-VALUE + JUMP ?CND10 +?CCL14: BTST BITS,32 \?CND10 + CALL ITAKE,FALSE-VALUE,OBJ + EQUAL? STACK,TRUE-VALUE \?CND10 + SET 'TAKEN,TRUE-VALUE +?CND10: ZERO? TAKEN \FALSE + BTST BITS,64 \FALSE + BTST BITS,128 /FALSE + PRINTC 91 + EQUAL? WINNER,PLAYER \?CCL26 + PRINTI "You are" + JUMP ?CND24 +?CCL26: ICALL2 TELL-CTHE,WINNER + PRINTI " is" +?CND24: PRINTI "n't holding " + ICALL2 TELL-THE,OBJ + ICALL2 THIS-IS-IT,OBJ + PRINTR "!]" + + + .FUNCT TELL-D-LOC:ANY:1:1,OBJ + PRINTD OBJ + IN? OBJ,GLOBAL-OBJECTS \?CCL3 + PRINTI "(gl)" + JUMP ?CND1 +?CCL3: IN? OBJ,LOCAL-GLOBALS \?CCL5 + PRINTI "(lg)" + JUMP ?CND1 +?CCL5: IN? OBJ,ROOMS \?CND1 + PRINTI "(rm)" +?CND1: EQUAL? OBJ,INTNUM \FALSE + PRINTC 40 + PRINTN P-NUMBER + PRINTC 41 + RTRUE + + + .FUNCT D-APPLY:ANY:2:3,STR,FCN,FOO,RES + ZERO? FCN /FALSE + ZERO? P-DBUG /?CND4 + ZERO? STR \?CCL8 + PRINTI "{Action:} +" + JUMP ?CND4 +?CCL8: PRINTC 123 + PRINT STR + EQUAL? STR,STR?47 \?CND9 + PRINTC 61 + PRINTD WINNER +?CND9: PRINTI ": " +?CND4: ZERO? FOO /?CCL13 + CALL FCN,FOO >RES + JUMP ?CND11 +?CCL13: CALL FCN >RES +?CND11: ZERO? P-DBUG /?CND14 + ZERO? STR /?CND14 + EQUAL? M-FATAL,RES /?CTR19 + EQUAL? P-CONT,-1 \?CCL20 +?CTR19: PRINTI "Fatal} +" + RETURN RES +?CCL20: ZERO? RES \?CCL24 + PRINTI "Not handled} +" + RETURN RES +?CCL24: PRINTI "Handled} +" +?CND14: RETURN RES + + + .FUNCT NOT-HERE:ANY:1:2,OBJ,CLOCK + ZERO? CLOCK \?CND1 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTI "[But" +?CND1: PRINTC 32 + ICALL2 TELL-THE,OBJ + ICALL2 PRINT-IS/ARE,OBJ + PRINTI "n't " + CALL2 VISIBLE?,OBJ + ZERO? STACK /?CCL5 + PRINTI "close enough" + CALL1 SPEAKING-VERB? + ZERO? STACK /?CND6 + PRINTI " to hear you" +?CND6: PRINTC 46 + JUMP ?CND3 +?CCL5: PRINTI "here!" +?CND3: ICALL2 THIS-IS-IT,OBJ + ZERO? CLOCK \?CND8 + PRINTC 93 +?CND8: CRLF + RTRUE + + + .FUNCT GET-OWNER:ANY:1:1,OBJ,TMP,NP + CALL2 GET-NP,OBJ >NP + ZERO? NP /FALSE + GET NP,4 >TMP + ZERO? TMP \?CTR5 + GET NP,1 >TMP + ZERO? TMP /?CCL6 + GET TMP,2 >TMP + ZERO? TMP /?CCL6 +?CTR5: LESS? 0,TMP \FALSE + GRTR? TMP,LAST-OBJECT /FALSE + RETURN TMP +?CCL6: GETP OBJ,P?OWNER >TMP + ZERO? TMP /FALSE + LESS? 0,TMP \?CCL17 + GRTR? TMP,LAST-OBJECT \FALSE +?CCL17: RETURN PLAYER + + + .FUNCT GET-NP:ANY:0:1,OBJ,PRSI? + SET 'PRSI?,NOW-PRSI + EQUAL? OBJ,FALSE-VALUE,PRSO,PRSI \FALSE + ZERO? OBJ /?CND1 + EQUAL? OBJ,PRSO \?CCL7 + SET 'PRSI?,FALSE-VALUE + JUMP ?CND1 +?CCL7: SET 'PRSI?,TRUE-VALUE +?CND1: ZERO? OBJ-SWAP /?CCL10 + ZERO? PRSI? /?CCL13 + RETURN PRSO-NP +?CCL13: RETURN PRSI-NP +?CCL10: ZERO? PRSI? /?CCL15 + RETURN PRSI-NP +?CCL15: RETURN PRSO-NP + + + .FUNCT NOUN-USED?:ANY:2:4,OBJ,WD1,WD2,WD3,X + CALL2 GET-NP,OBJ >X + ZERO? X /FALSE + GET X,2 >X + ZERO? X /FALSE + EQUAL? X,WD1,WD2,WD3 /TRUE + RFALSE + + .ENDSEG + + .ENDI diff --git a/verbs.zabstr b/verbs.zabstr new file mode 100644 index 0000000..4d13c7b --- /dev/null +++ b/verbs.zabstr @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +> + + + + + +> +> +> +> +> + + +> + + +> + +> + +> + +> + + + + + + + +> + + + +> + + + + + + + + + + + + + + + + + + +> +> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +> + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/verbs.zap b/verbs.zap new file mode 100644 index 0000000..1c1dc58 --- /dev/null +++ b/verbs.zap @@ -0,0 +1,3756 @@ + + + .FUNCT TRANSCRIPT:ANY:1:1,STR + PRINTI "Here " + PRINT STR + PRINTR "s a transcript of interaction with" + + + .FUNCT V-SCRIPT:ANY:0:0 + GET 0,8 + BOR STACK,1 + PUT 0,8,STACK + ICALL2 TRANSCRIPT,STR?68 + ICALL1 V-VERSION + RTRUE + + + .FUNCT V-UNSCRIPT:ANY:0:0 + ICALL2 TRANSCRIPT,STR?69 + ICALL1 V-VERSION + GET 0,8 + BAND STACK,-2 + PUT 0,8,STACK + RTRUE + + + .FUNCT V-$ID:ANY:0:0 + PRINTI "Interpreter " + GETB 0,30 + PRINTN STACK + PRINTI " Version " + GETB 0,31 + PRINTC STACK + CRLF + RTRUE + + + .FUNCT V-$VERIFY:ANY:0:0 + ZERO? PRSO /?CCL3 + EQUAL? PRSO,INTNUM \?CCL6 + EQUAL? P-NUMBER,105 \?CCL6 + PRINTN SERIAL + CRLF + RTRUE +?CCL6: CALL1 DONT-UNDERSTAND + RSTACK +?CCL3: PRINTI "Verifying disk..." + CRLF + VERIFY \?CCL11 + PRINTR "The disk is correct." +?CCL11: PRINTR "Oh, oh! The disk seems to have a defect. Try verifying again. (If you've already done that, the disk surely has a defect.)" + + + .FUNCT V-$CHEAT:ANY:0:0,N,CH + EQUAL? PRSO,INTNUM \?CCL2 + EQUAL? P-NUMBER,1,2,3 /?CND1 +?CCL2: SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "{Try $CHEAT 1, 2 or 3.}" +?CND1: ZERO? MOVES /FALSE + PRINTI "Don't you want to restart first?" + CALL1 YES? + ZERO? STACK /?CCL10 + RESTART + RTRUE +?CCL10: PRINTR "Okay, but this may not work!" + + + .FUNCT V-$QUEUE:ANY:0:0,C,E,TICK + ADD C-TABLE,C-INTS >C + ADD C-TABLE,C-TABLELEN >E +?PRG1: EQUAL? C,E /TRUE + GET C,C-ENABLED? + ZERO? STACK /?CND3 + GET C,C-TICK >TICK + ZERO? TICK /?CND3 + GET C,C-RTN + ICALL STACK,G-DEBUG + PRINTC 9 + PRINTN TICK + CRLF +?CND3: ADD C,C-INTLEN >C + JUMP ?PRG1 + + + .FUNCT V-$COMMAND:ANY:0:0 + DIRIN 1 + RTRUE + + + .FUNCT V-$RANDOM:ANY:0:0 + EQUAL? PRSO,INTNUM /?CCL3 + PRINTR "Illegal." +?CCL3: SUB 0,P-NUMBER + RANDOM STACK + RTRUE + + + .FUNCT V-$RECORD:ANY:0:0 + DIROUT D-RECORD-ON + RTRUE + + + .FUNCT V-$UNRECORD:ANY:0:0 + DIROUT D-RECORD-OFF + RTRUE + + + .FUNCT YOU-WILL-GET:ANY:1:1,STR + PRINTI "[Okay, you will get " + PRINT STR + PRINTR " descriptions.]" + + + .FUNCT V-SUPER-BRIEF:ANY:0:0 + SET 'VERBOSITY,0 + CALL2 YOU-WILL-GET,STR?70 + RSTACK + + + .FUNCT V-BRIEF:ANY:0:0 + SET 'VERBOSITY,1 + CALL2 YOU-WILL-GET,STR?71 + RSTACK + + + .FUNCT V-VERBOSE:ANY:0:0 + SET 'VERBOSITY,2 + ICALL2 YOU-WILL-GET,STR?72 + CRLF + CALL1 V-LOOK + RSTACK + + + .FUNCT V-INVENTORY:ANY:0:0 + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " holding" + CALL2 PRINT-CONTENTS,WINNER + ZERO? STACK \?CND1 + PRINTI " nothing" +?CND1: PRINTC 46 + CRLF + RTRUE + + + .FUNCT V-QUIT:ANY:0:1,ASK? + ASSIGNED? 'ASK? /?CND1 + SET 'ASK?,TRUE-VALUE +?CND1: ICALL1 V-SCORE + ZERO? ASK? \?CND3 + QUIT +?CND3: PRINTI "[If you want to continue from this point at another time, you must ""SAVE"" first. Do you want to stop the story now?]" + CALL1 YES? + ZERO? STACK /?CCL7 + QUIT + RTRUE +?CCL7: PRINTR "Okay." + + + .FUNCT V-RESTART:ANY:0:0 + ICALL1 V-SCORE + PRINTI "[Do you want to start over from the beginning?]" + CALL1 YES? + ZERO? STACK /?CCL3 + RESTART + CALL1 TELL-FAILED + RSTACK +?CCL3: PRINTR "Okay." + + + .FUNCT TELL-FAILED:ANY:0:0 + PRINTR "[Sorry, but it didn't work. Maybe your instruction manual or Reference Card can tell you why.]" + + + .FUNCT V-SAVE:ANY:0:0,X + PUTB G-INBUF,1,0 + SET 'CLOCK-WAIT,TRUE-VALUE + SAVE >X + EQUAL? X,2 /?CCL2 + GET 0,8 + BTST STACK,4 \?CND1 +?CCL2: ICALL1 V-$REFRESH +?CND1: ZERO? X \?CCL7 + ICALL1 TELL-FAILED + RETURN 2 +?CCL7: PRINTI "[Okay.]" + CRLF + EQUAL? X,1 /TRUE + ICALL1 V-FIRST-LOOK + RTRUE + + + .FUNCT V-RESTORE:ANY:0:0 + RESTORE + ZERO? STACK \FALSE + ICALL1 TELL-FAILED + RFALSE + + + .FUNCT V-FIRST-LOOK:ANY:0:0 + CALL1 DESCRIBE-ROOM + ZERO? STACK /FALSE + ZERO? VERBOSITY /FALSE + CALL1 DESCRIBE-OBJECTS + RSTACK + + + .FUNCT V-VERSION:ANY:0:0,IDX + SET 'IDX,18 + PRINTI "MILLIWAYS +Infocom interactive science fiction +Copyright (c) 1988 by Infocom, Inc. All rights reserved. +Release number " + GET 0,1 + BAND STACK,2047 + PRINTN STACK + PRINTI " / Serial number " +?PRG1: GETB 0,IDX + PRINTC STACK + IGRTR? 'IDX,23 \?PRG1 + CRLF + RTRUE + + + .FUNCT V-SCORE:ANY:0:0 + PRINTI "Your score is " + PRINTN SCORE + PRINTI " of a possible " + PRINTN SCORE-MAX + PRINTI ", in " + PRINTN MOVES + PRINTI " turn" + EQUAL? MOVES,1 \?CCL3 + PRINTC 46 + JUMP ?CND1 +?CCL3: PRINTI "s." +?CND1: CRLF + RETURN SCORE + + + .FUNCT NO-NEED:ANY:0:2,STR,OBJ + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL HE-SHE-IT,WINNER,1,STR?65 + PRINTI "n't need to " + ZERO? STR /?CCL3 + PRINT STR + JUMP ?CND1 +?CCL3: ICALL1 VERB-PRINT +?CND1: EQUAL? STR,STR?73,STR?74 \?CCL6 + PRINTI " in that " + PRINTD INTDIR + JUMP ?CND4 +?CCL6: ZERO? OBJ /?CCL8 + ICALL2 PRINT-THE,OBJ + JUMP ?CND4 +?CCL8: ICALL2 PRINT-THE,PRSO +?CND4: PRINTR ".)" + + + .FUNCT YOU-CANT:ANY:0:3,STR,WHILE,STR1 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL HE-SHE-IT,WINNER,1 + PRINTI " can't " + ZERO? STR \?CCL3 + ICALL1 VERB-PRINT + JUMP ?CND1 +?CCL3: PRINT STR +?CND1: EQUAL? STR,STR?73,STR?74 \?CCL6 + PRINTI " in that " + PRINTD INTDIR + JUMP ?CND4 +?CCL6: EQUAL? PRSO,PSEUDO-OBJECT \?CCL9 + PRINTI " it" + JUMP ?CND7 +?CCL9: EQUAL? PRSO,FLOOR \?CCL11 + CALL2 OUTSIDE?,HERE + ZERO? STACK /?CCL11 + PRINTI " the ground" + JUMP ?CND7 +?CCL11: ICALL2 PRINT-THE,PRSO +?CND7: ZERO? STR1 /?CND4 + PRINTI " while" + ZERO? WHILE /?CCL18 + ICALL HE-SHE-IT,WHILE,0,STR?61 + JUMP ?CND16 +?CCL18: ICALL HE-SHE-IT,PRSO,0,STR?61 +?CND16: PRINTC 32 + PRINT STR1 +?CND4: PRINTR ".)" + + + .FUNCT TELL-BEING-WORN:ANY:1:1,OBJ + FSET? OBJ,WORNBIT \FALSE + PRINTI " (actually, wearing it)" + RTRUE + + + .FUNCT PRINT-CONTENTS:ANY:1:1,CONT,OBJ,NXT,1ST?,VAL + SET '1ST?,TRUE-VALUE + FIRST? CONT >OBJ /?PRG2 +?PRG2: ZERO? OBJ /?REP3 + NEXT? OBJ >NXT /?BOGUS7 +?BOGUS7: FSET? OBJ,INVISIBLE /?CCL9 + FSET? OBJ,NDESCBIT /?CCL9 + EQUAL? OBJ,WINNER \?CND8 +?CCL9: MOVE OBJ,INTDIR +?CND8: SET 'OBJ,NXT + JUMP ?PRG2 +?REP3: FIRST? CONT >OBJ /?BOGUS13 +?BOGUS13: ZERO? OBJ \?PRG19 + EQUAL? CONT,PLAYER /?CND14 + PRINTI " nothing " + CALL2 PICK-ONE-NEW,YAWNS + PRINT STACK +?CND14: ICALL ROB,INTDIR,CONT + RETURN VAL +?PRG19: ZERO? OBJ /?CND14 + NEXT? OBJ >NXT /?BOGUS24 +?BOGUS24: ZERO? 1ST? /?CCL27 + SET 'VAL,TRUE-VALUE + SET '1ST?,FALSE-VALUE + JUMP ?CND25 +?CCL27: ZERO? NXT /?CCL30 + PRINTC 44 + JUMP ?CND25 +?CCL30: PRINTI " and" +?CND25: ICALL2 PRINT-THE,OBJ + ICALL2 TELL-BEING-WORN,OBJ + ICALL2 THIS-IS-IT,OBJ + FCLEAR OBJ,SECRETBIT + FSET OBJ,SEENBIT + SET 'OBJ,NXT + JUMP ?PRG19 + + + .FUNCT DESCRIBE-OBJECTS:ANY:0:1,CONT,OBJ,NXT,STR,VAL,HE,SHE,FIRST,TWO?,IT?,ANY? + SET 'FIRST,TRUE-VALUE + ZERO? CONT \?CND1 + SET 'CONT,HERE +?CND1: ZERO? LIT \?CND3 + ICALL1 TOO-DARK + RTRUE +?CND3: FIRST? CONT >OBJ /?BOGUS5 +?BOGUS5: ZERO? OBJ /FALSE +?PRG8: ZERO? OBJ /?REP9 + NEXT? OBJ >NXT /?BOGUS13 +?BOGUS13: FSET? OBJ,INVISIBLE /?CCL15 + FSET? OBJ,NDESCBIT /?CCL15 + EQUAL? OBJ,WINNER /?CCL15 + FSET? OBJ,PERSONBIT \?PRD20 + FSET? OBJ,RMUNGBIT /?CCL15 +?PRD20: LOC PLAYER + EQUAL? OBJ,STACK \?CND14 +?CCL15: FCLEAR OBJ,RMUNGBIT + MOVE OBJ,PSEUDO-OBJECT +?CND14: SET 'OBJ,NXT + JUMP ?PRG8 +?REP9: EQUAL? CONT,HERE \?CND24 + SET 'NXT,CHARACTER-MAX +?PRG26: PUT TOUCHED-LDESCS,NXT,0 + DLESS? 'NXT,1 \?PRG26 + SET 'NXT,0 +?PRG30: IGRTR? 'NXT,CHARACTER-MAX /?REP31 + GET CHARACTER-TABLE,NXT >OBJ + IN? OBJ,HERE \?PRG30 + PUT FOLLOW-LOC,NXT,HERE + GETP OBJ,P?DESCFCN + CALL STACK,M-OBJDESC >VAL + FSET OBJ,SEENBIT + EQUAL? VAL,M-FATAL /?CCL37 + ZERO? ANY? \?CND36 +?CCL37: SET 'ANY?,VAL +?CND36: FSET? OBJ,FEMALEBIT \?CCL42 + ZERO? SHE \?CCL45 + SET 'SHE,OBJ + JUMP ?CND40 +?CCL45: SET 'SHE,1 + JUMP ?CND40 +?CCL42: ZERO? HE \?CCL48 + SET 'HE,OBJ + JUMP ?CND40 +?CCL48: SET 'HE,1 +?CND40: MOVE OBJ,PSEUDO-OBJECT + JUMP ?PRG30 +?REP31: SET 'NXT,0 +?PRG49: IGRTR? 'NXT,CHARACTER-MAX /?REP50 + GET TOUCHED-LDESCS,NXT >OBJ + ZERO? OBJ /?PRG49 + SET 'FIRST,TRUE-VALUE + GET CHARACTER-TABLE,NXT >STR + ICALL2 START-SENTENCE,STR + SET 'STR,NXT +?PRG55: IGRTR? 'STR,CHARACTER-MAX \?CCL59 + ZERO? FIRST /?CCL62 + PRINTI " is " + JUMP ?CND60 +?CCL62: PRINTI " are " +?CND60: GET LDESC-STRINGS,OBJ + PRINT STACK + PRINTC 46 + CRLF + JUMP ?PRG49 +?CCL59: GET TOUCHED-LDESCS,STR + EQUAL? OBJ,STACK \?PRG55 + PUT TOUCHED-LDESCS,STR,0 + SET 'FIRST,FALSE-VALUE + PRINTI " and" + GET CHARACTER-TABLE,STR + ICALL2 PRINT-THE,STACK + JUMP ?PRG55 +?REP50: EQUAL? SHE,0,1 /?CCL66 + ICALL2 THIS-IS-IT,SHE + JUMP ?CND64 +?CCL66: EQUAL? SHE,1 \?CND64 + SET 'P-HER-OBJECT,FALSE-VALUE +?CND64: EQUAL? HE,0,1 /?CCL70 + ICALL2 THIS-IS-IT,HE + JUMP ?CND68 +?CCL70: EQUAL? HE,1 \?CND68 + SET 'P-HIM-OBJECT,FALSE-VALUE +?CND68: SET 'FIRST,TRUE-VALUE + FIRST? CONT >OBJ /?PRG73 +?PRG73: ZERO? OBJ /?REP74 + NEXT? OBJ >NXT /?BOGUS78 +?BOGUS78: GETP OBJ,P?DESCFCN >STR + ZERO? STR /?CND79 + CALL STR,M-OBJDESC >VAL + EQUAL? VAL,M-FATAL /?CCL82 + ZERO? ANY? \?CND81 +?CCL82: SET 'ANY?,VAL +?CND81: ICALL2 THIS-IS-IT,OBJ + FSET OBJ,SEENBIT + MOVE OBJ,PSEUDO-OBJECT +?CND79: SET 'OBJ,NXT + JUMP ?PRG73 +?REP74: FIRST? CONT >OBJ /?PRG86 +?PRG86: ZERO? OBJ /?REP87 + FSET? OBJ,TOUCHBIT /?REP87 + NEXT? OBJ >NXT /?BOGUS93 +?BOGUS93: GETP OBJ,P?FDESC >STR + ZERO? STR /?CND94 + ZERO? ANY? \?CND96 + SET 'ANY?,TRUE-VALUE +?CND96: PRINT STR + CRLF + FCLEAR OBJ,SECRETBIT + FSET OBJ,SEENBIT + ICALL2 THIS-IS-IT,OBJ + MOVE OBJ,PSEUDO-OBJECT +?CND94: SET 'OBJ,NXT + JUMP ?PRG86 +?REP87: FIRST? CONT >OBJ /?PRG99 +?PRG99: ZERO? OBJ /?CND24 + NEXT? OBJ >NXT /?BOGUS104 +?BOGUS104: GETP OBJ,P?LDESC >STR + ZERO? STR /?CND105 + ZERO? ANY? \?CND107 + SET 'ANY?,TRUE-VALUE +?CND107: PRINT STR + CRLF + FCLEAR OBJ,SECRETBIT + FSET OBJ,SEENBIT + ICALL2 THIS-IS-IT,OBJ + MOVE OBJ,PSEUDO-OBJECT +?CND105: SET 'OBJ,NXT + JUMP ?PRG99 +?CND24: FIRST? HERE >OBJ /?BOGUS109 +?BOGUS109: SET 'VAL,FALSE-VALUE + ZERO? OBJ /?CND110 +?PRG112: ZERO? OBJ /?CCL116 + NEXT? OBJ >NXT /?BOGUS117 +?BOGUS117: SET 'VAL,TRUE-VALUE + ZERO? FIRST /?CCL120 + SET 'FIRST,FALSE-VALUE + EQUAL? CONT,HERE \?CND118 + CRLF + FSET? HERE,ONBIT \?CCL125 + PRINTI "You see" + JUMP ?CND118 +?CCL125: PRINTI "The light reveals" + JUMP ?CND118 +?CCL120: ZERO? NXT /?CCL128 + PRINTC 44 + JUMP ?CND118 +?CCL128: PRINTI " and" +?CND118: ICALL2 PRINT-THE,OBJ + FCLEAR OBJ,SECRETBIT + FSET OBJ,SEENBIT + ICALL2 THIS-IS-IT,OBJ + ICALL2 TELL-BEING-WORN,OBJ + CALL2 SEE-INSIDE?,OBJ + ZERO? STACK /?CND129 + CALL2 SEE-ANYTHING-IN?,OBJ + ZERO? STACK /?CND129 + MOVE OBJ,INTNUM +?CND129: ZERO? IT? \?CCL135 + ZERO? TWO? \?CCL135 + SET 'IT?,OBJ + JUMP ?CND133 +?CCL135: SET 'TWO?,TRUE-VALUE + SET 'IT?,FALSE-VALUE +?CND133: SET 'OBJ,NXT + JUMP ?PRG112 +?CCL116: ZERO? IT? /?CND138 + ZERO? TWO? \?CND138 + SET 'P-IT-OBJECT,IT? +?CND138: EQUAL? CONT,HERE \?CND142 + PRINTI " here" +?CND142: PRINTC 46 + ZERO? ANY? \?CND110 + SET 'ANY?,TRUE-VALUE +?CND110: FIRST? INTNUM >OBJ /?PRG147 +?PRG147: ZERO? OBJ /?REP148 + FSET? OBJ,SURFACEBIT \?CCL153 + CRLF + PRINTI "On" + JUMP ?CND151 +?CCL153: CRLF + PRINTI "Inside" +?CND151: SET 'VAL,TRUE-VALUE + ICALL2 PRINT-THE,OBJ + PRINTI " you see" + ICALL2 PRINT-CONTENTS,OBJ + PRINTC 46 + NEXT? OBJ >OBJ /?PRG147 + JUMP ?PRG147 +?REP148: ZERO? VAL /?CND155 + CRLF +?CND155: ICALL ROB,INTNUM,CONT + ICALL ROB,PSEUDO-OBJECT,CONT + RETURN ANY? + + + .FUNCT SEE-ANYTHING-IN?:ANY:1:1,CONT,OBJ,NXT,ANY? + FIRST? CONT >OBJ /?PRG2 +?PRG2: ZERO? OBJ /?REP3 + FSET? OBJ,INVISIBLE /?CND7 + FSET? OBJ,NDESCBIT /?CND7 + EQUAL? OBJ,WINNER /?CND7 + SET 'ANY?,TRUE-VALUE + RETURN ANY? +?CND7: NEXT? OBJ >OBJ /?PRG2 + JUMP ?PRG2 +?REP3: RETURN ANY? + + + .FUNCT DESCRIBE-ROOM:ANY:0:1,LOOK?,V?,STR,L + ZERO? LOOK? /?CCL3 + SET 'V?,TRUE-VALUE + JUMP ?CND1 +?CCL3: EQUAL? 2,VERBOSITY \?CCL5 + SET 'V?,TRUE-VALUE + JUMP ?CND1 +?CCL5: ZERO? VERBOSITY \?CCL7 + SET 'V?,FALSE-VALUE + JUMP ?CND1 +?CCL7: FSET? HERE,TOUCHBIT /?CND1 + SET 'V?,TRUE-VALUE +?CND1: PRINTC 40 + ZERO? VERBOSITY \?CCL12 + PRINTD HERE + JUMP ?CND10 +?CCL12: PRINTI "You are" + FSET? HERE,TOUCHBIT /?CND13 + PRINTI " now" +?CND13: FSET? HERE,SURFACEBIT \?CCL17 + PRINTI " on" + JUMP ?CND15 +?CCL17: PRINTI " in" +?CND15: ICALL2 PRINT-THE,HERE + PRINTC 46 +?CND10: PRINTI ") +" + ZERO? LIT \?CCL20 + ICALL1 TOO-DARK + RFALSE +?CCL20: EQUAL? LIT,HERE /?CND18 + PRINTI "Light comes from" + ICALL2 PRINT-THE,LIT + PRINTC 46 + CRLF +?CND18: ZERO? V? /?CND22 + LOC WINNER >L + FSET? L,VEHBIT \?CND24 + PRINTI "(You're " + PRINTI "sitt" + PRINTI "ing on" + ICALL2 THIS-IS-IT,L + ICALL2 PRINT-THE,L + PRINTI ".)" + CRLF +?CND24: ZERO? V? /?CCL29 + GETP HERE,P?ACTION + CALL STACK,M-LOOK + ZERO? STACK \?CND22 +?CCL29: ZERO? V? /?CCL33 + GETP HERE,P?FDESC >STR + ZERO? STR /?CCL33 + PRINT STR + CRLF + JUMP ?CND22 +?CCL33: ZERO? V? /?CCL37 + GETP HERE,P?LDESC >STR + ZERO? STR /?CCL37 + PRINT STR + CRLF + JUMP ?CND22 +?CCL37: GETP HERE,P?ACTION + ICALL STACK,M-FLASH +?CND22: FSET HERE,SEENBIT + FSET HERE,TOUCHBIT + RTRUE + + + .FUNCT HAR-HAR:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + CALL2 PICK-ONE-NEW,YUKS + PRINT STACK + CRLF + RTRUE + + + .FUNCT IMPOSSIBLE:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + CALL2 PICK-ONE-NEW,IMPOSSIBLES + PRINT STACK + CRLF + RTRUE + + + .FUNCT WONT-HELP:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + CALL2 PICK-ONE-NEW,WASTES + PRINT STACK + CRLF + RTRUE + + + .FUNCT PICK-ONE-NEW:ANY:1:1,FROB,L,CNT,RND,MSG,RFROB + GET FROB,0 + SUB STACK,1 >L + GET FROB,1 >CNT + ADD FROB,2 >FROB + MUL CNT,2 + ADD FROB,STACK >RFROB + SUB L,CNT >RND + RANDOM RND >RND + GRTR? RND,0 /?CND1 + PRINTI "{PICK-ONE-NEW: L=" + PRINTN L + PRINTI " CNT=" + PRINTN CNT + PRINTI " RND=" + PRINTN RND + PRINTI " FROB=" + PRINTN FROB + PRINTC 125 + CRLF +?CND1: GET RFROB,RND >MSG + GET RFROB,1 + PUT RFROB,RND,STACK + PUT RFROB,1,MSG + INC 'CNT + EQUAL? CNT,L \?CND3 + SET 'CNT,0 +?CND3: PUT FROB,0,CNT + RETURN MSG + + + .FUNCT PICK-ONE:ANY:1:1,FROB + GET FROB,0 + RANDOM STACK + GET FROB,STACK + RSTACK + + + .FUNCT NOT-HOLDING?:ANY:1:1,OBJ + IN? OBJ,WINNER /FALSE + LOC OBJ + IN? STACK,WINNER /FALSE + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " not holding" + ICALL2 HIM-HER-IT,OBJ + PRINTR ".)" + + + .FUNCT GOTO:ANY:1:3,RM,TEST,FOLLOW?,X + ASSIGNED? 'TEST /?CND1 + SET 'TEST,TRUE-VALUE +?CND1: ASSIGNED? 'FOLLOW? /?CND3 + SET 'FOLLOW?,TRUE-VALUE +?CND3: IN? WINNER,RM \?CND5 + ICALL1 WALK-WITHIN-ROOM + RFALSE +?CND5: GETP HERE,P?ACTION + CALL STACK,M-LEAVE + ZERO? STACK \FALSE + EQUAL? WINNER,PLAYER \?CND7 + ZERO? FOLLOW? /?CND7 + ZERO? FOLLOWER /?CND7 + ICALL2 FRIEND-FOLLOWS-YOU,RM +?CND7: ZERO? TEST /?CND15 + EQUAL? WINNER,PLAYER \?CND15 + CALL DIR-FROM,HERE,RM >X + ZERO? X /?CND15 + GETP HERE,P?ACTION + CALL STACK,X + EQUAL? M-FATAL,STACK /FALSE +?CND15: GETP WINNER,P?CHARACTER + PUT FOLLOW-LOC,STACK,RM + MOVE WINNER,RM + EQUAL? WINNER,PLAYER \TRUE + SET 'OHERE,HERE + SET 'HERE,RM + ICALL2 MAKE-ALL-PEOPLE,-12 + ICALL1 ENTER-ROOM + RTRUE + + + .FUNCT MAKE-ALL-PEOPLE:ANY:1:2,NUM,RM,P,NNUM + ZERO? RM \?CND1 + SET 'RM,HERE +?CND1: LESS? NUM,0 \?CND3 + SUB 0,NUM >NNUM +?CND3: FIRST? RM >P /?PRG6 +?PRG6: ZERO? P /TRUE + FSET? P,PERSONBIT \?CND8 + GRTR? NUM,0 \?CCL14 + PUTP P,P?LDESC,NUM + JUMP ?CND8 +?CCL14: GETP P,P?LDESC + EQUAL? NNUM,STACK \?CND8 + PUTP P,P?LDESC,0 +?CND8: NEXT? P >P /?PRG6 + JUMP ?PRG6 + + + .FUNCT FRIEND-FOLLOWS-YOU:ANY:1:1,RM,C + IN? FOLLOWER,RM /FALSE + MOVE FOLLOWER,RM + PUTP FOLLOWER,P?LDESC,23 + PRINTD FOLLOWER + CALL2 PICK-ONE,TRAILS-ALONG + PRINT STACK + CRLF + RTRUE + + + .FUNCT DIR-FROM:ANY:2:2,HERE,THERE,V,P,D + CALL DIR-FROM-TEST,HERE,THERE,P?UP + ZERO? STACK /?CCL3 + RETURN P?UP +?CCL3: CALL DIR-FROM-TEST,HERE,THERE,P?DOWN + ZERO? STACK /?CCL5 + RETURN P?DOWN +?CCL5: CALL DIR-FROM-TEST,HERE,THERE,P?IN + ZERO? STACK /?CCL7 + RETURN P?IN +?CCL7: CALL DIR-FROM-TEST,HERE,THERE,P?OUT + ZERO? STACK /?CND1 + RETURN P?OUT +?CND1: SET 'P,0 +?PRG9: NEXTP HERE,P >P + LESS? P,LOW-DIRECTION \?CCL13 + RETURN V +?CCL13: CALL DIR-FROM-TEST,HERE,THERE,P >D + ZERO? D /?PRG9 + LESS? D,LOW-DIRECTION /?PRD19 + RETURN P +?PRD19: ZERO? V \?CCL17 + SET 'V,P + JUMP ?PRG9 +?CCL17: RETURN P + + + .FUNCT DIR-FROM-TEST:ANY:3:3,HERE,THERE,P,L,TBL + GETPT HERE,P >TBL + ZERO? TBL /FALSE + PTSIZE TBL >L + EQUAL? L,DEXIT,UEXIT,CEXIT \FALSE + GET TBL,REXIT + EQUAL? STACK,THERE \FALSE + RETURN P + + + .FUNCT HACK-HACK:ANY:1:1,STR + PRINT STR + ICALL2 HIM-HER-IT,PRSO + CALL2 PICK-ONE,HO-HUM + PRINT STACK + CRLF + RTRUE + + + .FUNCT HELD?:ANY:1:2,OBJ,CONT,L + ZERO? CONT \?PRG3 + SET 'CONT,PLAYER +?PRG3: LOC OBJ >L + ZERO? L /FALSE + EQUAL? L,CONT /TRUE + EQUAL? CONT,PLAYER,WINNER \?CCL11 + EQUAL? OBJ,HANDS,HEAD,EYES /TRUE + SET 'OBJ,L + JUMP ?PRG3 +?CCL11: EQUAL? L,ROOMS,GLOBAL-OBJECTS /FALSE + SET 'OBJ,L + JUMP ?PRG3 + + + .FUNCT IDROP:ANY:0:0 + CALL2 NOT-HOLDING?,PRSO + ZERO? STACK \FALSE + IN? PRSO,WINNER /?CCL5 + LOC PRSO + FSET? STACK,OPENBIT /?CCL5 + LOC PRSO + ICALL TOO-BAD-BUT,STACK,STR?98 + RFALSE +?CCL5: MOVE PRSO,HERE + FCLEAR PRSO,WORNBIT + FCLEAR PRSO,NDESCBIT + FCLEAR PRSO,INVISIBLE + RTRUE + + + .FUNCT ITAKE:ANY:0:2,VB,OB,CNT,OBJ,L,?TMP1 + ASSIGNED? 'VB /?CND1 + SET 'VB,TRUE-VALUE +?CND1: ZERO? OB \?CND3 + SET 'OB,PRSO +?CND3: LOC OB >L + ZERO? L /?CND5 + FSET? L,PERSONBIT \?CND5 + FSET? OB,TAKEBIT /?CCL11 + FSET? L,MUNGBIT /?CCL11 + ZERO? VB /FALSE + ICALL2 YOU-CANT,STR?99 + RFALSE +?CCL11: FSET OB,TAKEBIT +?CND5: FSET? OB,TAKEBIT /?CCL18 + ZERO? VB /FALSE + ICALL2 YOU-CANT,STR?99 + RFALSE +?CCL18: CALL2 CCOUNT,WINNER >CNT + GRTR? CNT,FUMBLE-NUMBER \?CCL22 + MUL CNT,FUMBLE-PROB >?TMP1 + RANDOM 100 + LESS? ?TMP1,STACK /?CCL22 + CALL FIND-FLAG-NOT,WINNER,WORNBIT >OBJ + ZERO? OBJ /?CCL22 + ICALL1 TOO-BAD-BUT + ICALL2 PRINT-THE,OBJ + PRINTI " slips from" + ICALL HIM-HER-IT,WINNER,0,TRUE-VALUE + PRINTI " arms while" + ICALL HE-SHE-IT,WINNER,0,STR?61 + PRINTI " taking" + ICALL2 HIM-HER-IT,OB + PRINTI ", and both tumble " + CALL1 GROUND-DESC + PRINT STACK + PRINTI ". " + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " carrying too many things. +" + MOVE OBJ,HERE + MOVE OB,HERE + RETURN 2 +?CCL22: MOVE OB,WINNER + FSET OB,SEENBIT + FSET OB,TOUCHBIT + FCLEAR OB,NDESCBIT + FCLEAR OB,INVISIBLE + FCLEAR OB,SECRETBIT + EQUAL? PRSA,V?TAKE /TRUE + EQUAL? L,WINNER /TRUE + FSET? L,PERSONBIT \TRUE + ICALL FIRST-YOU,STR?99,OB,L + RTRUE + + + .FUNCT CCOUNT:ANY:1:1,OBJ,CNT,X + FIRST? OBJ >X /?PRG3 + RETURN CNT +?PRG3: FSET? X,WORNBIT /?CND5 + INC 'CNT +?CND5: NEXT? X >X /?PRG3 + RETURN CNT + + + .FUNCT CHECK-DOOR:ANY:1:1,DR + ICALL2 START-SENTENCE,DR + PRINTI " is " + ICALL2 THIS-IS-IT,DR + FSET? DR,OPENBIT \?CCL3 + PRINTI "open" + JUMP ?CND1 +?CCL3: PRINTI "closed and " + FSET? DR,LOCKED /?CND4 + PRINTI "un" +?CND4: PRINTI "locked" +?CND1: PRINTR "." + + + .FUNCT ROOM-CHECK:ANY:0:0,P,PA + SET 'P,PRSO + EQUAL? P,ROOMS /FALSE + IN? P,ROOMS \?CCL5 + EQUAL? HERE,P /FALSE + CALL GLOBAL-IN?,P,HERE + ZERO? STACK /?CCL10 + EQUAL? PRSA,V?SEARCH-FOR /?PRD16 + EQUAL? PRSA,V?SEARCH,V?SIT,V?LIE \FALSE +?PRD16: CALL2 META-LOC,P >P + EQUAL? P,HERE /FALSE + ICALL FIRST-YOU,STR?100,P + SET 'PA,PRSA + CALL PERFORM,V?THROUGH,P >P + SET 'PRSA,PA + EQUAL? M-FATAL,P /TRUE + RFALSE +?CCL10: CALL2 SEE-INTO?,P + ZERO? STACK \FALSE + RTRUE +?CCL5: CALL2 META-LOC,P + EQUAL? STACK,HERE,GLOBAL-OBJECTS,LOCAL-GLOBALS /FALSE + CALL2 VISIBLE?,P + ZERO? STACK \FALSE + CALL2 NOT-HERE,P + RSTACK + + + .FUNCT SEE-INSIDE?:ANY:1:2,OBJ,ONLY-IN + FSET? OBJ,TRANSBIT /TRUE + FSET? OBJ,OPENBIT /TRUE + ZERO? ONLY-IN \FALSE + FSET? OBJ,SURFACEBIT /TRUE + RFALSE + + + .FUNCT ARENT-TALKING:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(You aren't talking to anyone!)" + + + .FUNCT ALREADY:ANY:1:2,OBJ,STR + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL2 START-SENTENCE,OBJ + EQUAL? OBJ,PLAYER \?CCL4 + PRINTI " are" + JUMP ?CND2 +?CCL4: PRINTI " is" +?CND2: PRINTI " already " + ZERO? STR /TRUE + PRINT STR + PRINTR "!)" + + + .FUNCT NOT-CLEAR-WHOM:ANY:0:0 + SET 'P-CONT,FALSE-VALUE + PRINTR "[It's not clear whom you're talking to.]" + + + .FUNCT OKAY:ANY:0:2,OBJ,STR + EQUAL? WINNER,PLAYER \?CCL3 + EQUAL? PRSA,V?WALK-TO,V?WALK,V?THROUGH \?CND1 + RTRUE +?CCL3: PRINTC 34 +?CND1: PRINTI "Okay" + ZERO? OBJ /?CND6 + PRINTC 44 + ICALL2 HE-SHE-IT,OBJ + ZERO? STR /?CND8 + PRINTI " is now " + PRINT STR +?CND8: EQUAL? STR,STR?101 \?CCL12 + FSET OBJ,ONBIT + JUMP ?CND6 +?CCL12: EQUAL? STR,STR?102 \?CCL14 + FCLEAR OBJ,ONBIT + JUMP ?CND6 +?CCL14: EQUAL? STR,STR?103 \?CCL16 + FSET OBJ,OPENBIT + JUMP ?CND6 +?CCL16: EQUAL? STR,STR?98 \?CCL18 + FCLEAR OBJ,OPENBIT + JUMP ?CND6 +?CCL18: EQUAL? STR,STR?104 \?CCL20 + FSET OBJ,LOCKED + JUMP ?CND6 +?CCL20: EQUAL? STR,STR?105 \?CND6 + FCLEAR OBJ,LOCKED +?CND6: ZERO? STR \?CCL23 + ZERO? OBJ \?CND22 +?CCL23: EQUAL? WINNER,PLAYER /?CND26 + PRINTI ","" says " + PRINTD WINNER + PRINTI ". " + ICALL HE-SHE-IT,WINNER,1 + PRINTR " does so." +?CND26: PRINTC 46 + CRLF +?CND22: ZERO? LIT \TRUE + CALL1 LIT? >LIT + ZERO? LIT /TRUE + CRLF + ICALL1 V-LOOK + RTRUE + + + .FUNCT TOO-BAD-BUT:ANY:0:2,OBJ,STR + PRINTI "Too bad, but" + ZERO? OBJ /?CND1 + ICALL2 HE-SHE-IT,OBJ +?CND1: ZERO? STR /TRUE + PRINTI " is " + PRINT STR + EQUAL? STR,STR?106,STR?107 \?CND5 + PRINTI " with you" +?CND5: PRINTR "." + + + .FUNCT TOO-DARK:ANY:0:0 + PRINTR "(It's too dark to see!)" + + + .FUNCT VISIBLE?:ANY:1:1,OBJ,L + ZERO? OBJ /FALSE + CALL2 ACCESSIBLE?,OBJ + ZERO? STACK \TRUE + LOC OBJ >L + CALL2 SEE-INSIDE?,L + ZERO? STACK /FALSE + CALL2 VISIBLE?,L + RSTACK + + + .FUNCT ACCESSIBLE?:ANY:1:1,OBJ,L + ZERO? OBJ /FALSE + LOC OBJ >L + FSET? OBJ,INVISIBLE /FALSE + EQUAL? OBJ,PSEUDO-OBJECT \?CCL8 + EQUAL? LAST-PSEUDO-LOC,HERE /TRUE + RFALSE +?CCL8: ZERO? L /FALSE + EQUAL? L,GLOBAL-OBJECTS /TRUE + EQUAL? L,LOCAL-GLOBALS \?CCL17 + CALL GLOBAL-IN?,OBJ,HERE + RSTACK +?CCL17: CALL2 META-LOC,OBJ + EQUAL? STACK,HERE \FALSE + EQUAL? L,WINNER,HERE /TRUE + FSET? L,OPENBIT /?CTR22 + FSET? L,SURFACEBIT /?CTR22 + FSET? L,PERSONBIT \FALSE +?CTR22: CALL2 ACCESSIBLE?,L + RSTACK + + + .FUNCT WHO-CARES:ANY:0:0,N + RANDOM WHO-CARES-LENGTH >N + GET WHO-CARES-VERB,N + ICALL HE-SHE-IT,PRSO,TRUE-VALUE,STACK + GET WHO-CARES-TBL,N + PRINT STACK + PRINTR "." + + + .FUNCT PRE-SAIM:ANY:0:0 + ICALL PERFORM,V?AIM,PRSI,PRSO + RTRUE + + + .FUNCT V-SAIM:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT V-AIM:ANY:0:0 + CALL1 YOU-CANT + RSTACK + + + .FUNCT PRE-SANALYZE:ANY:0:0 + ICALL PERFORM,V?ANALYZE,PRSI,PRSO + RTRUE + + + .FUNCT V-SANALYZE:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT PRE-ANALYZE:ANY:0:0 + CALL1 ROOM-CHECK + ZERO? STACK \TRUE + FSET? PRSO,PERSONBIT \FALSE + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(Leave that to the police.)" + + + .FUNCT V-ANALYZE:ANY:0:0 + FSET? PRSO,PERSONBIT \?CCL3 + PRINTR "How?" +?CCL3: FSET? PRSO,DOORBIT \?CCL5 + CALL2 CHECK-DOOR,PRSO + RSTACK +?CCL5: ICALL HE-SHE-IT,PRSO,1,STR?114 + PRINTR " normal." + + + .FUNCT V-ANSWER:ANY:0:0 + ZERO? AWAITING-REPLY /?CCL3 + GET P-LEXV,P-CONT + EQUAL? STACK,W?YES \?CCL6 + ICALL2 PERFORM,V?YES + JUMP ?CND1 +?CCL6: ICALL2 PERFORM,V?NO + JUMP ?CND1 +?CCL3: ICALL1 NOT-CLEAR-WHOM +?CND1: SET 'P-CONT,FALSE-VALUE + RTRUE + + + .FUNCT V-REPLY:ANY:0:0 + SET 'P-CONT,FALSE-VALUE + FSET? PRSO,PERSONBIT \?CCL3 + FSET? PRSO,MUNGBIT /?CCL3 + CALL1 WAITING-FOR-YOU-TO-SPEAK + RSTACK +?CCL3: CALL1 YOU-CANT + RSTACK + + + .FUNCT WAITING-FOR-YOU-TO-SPEAK:ANY:0:0 + ICALL HE-SHE-IT,PRSO,1,STR?109 + PRINTR " to be waiting for you to speak." + + + .FUNCT V-ASK:ANY:0:0 + ZERO? P-CONT /?CCL3 + FSET? PRSO,PERSONBIT \?CCL3 + FSET? PRSO,MUNGBIT /?CCL3 + SET 'WINNER,PRSO + SET 'QCONTEXT,PRSO + RETURN QCONTEXT +?CCL3: CALL1 V-ASK-ABOUT + RSTACK + + + .FUNCT PRE-ASK:ANY:0:0 + CALL2 META-LOC,PRSO + EQUAL? STACK,HERE /?CCL3 + CALL GLOBAL-IN?,PRSO,HERE + ZERO? STACK \?CCL3 + ICALL2 NOT-HERE,PRSO + RETURN 2 +?CCL3: EQUAL? PRSO,PLAYER /?CTR8 + FSET? PRSO,PERSONBIT /?CCL9 +?CTR8: EQUAL? PRSA,V?$CALL \?CCL14 + ZERO? P-CONT \?CCL14 + ICALL2 MISSING,STR?56 + RETURN 2 +?CCL14: EQUAL? PRSA,V?LISTEN /FALSE + ICALL2 WONT-HELP-TO-TALK-TO,PRSO + RETURN 2 +?CCL9: CALL GRAB-ATTENTION,PRSO,PRSI + ZERO? STACK \FALSE + RETURN 2 + + + .FUNCT GRAB-ATTENTION:ANY:1:2,PERSON,OBJ,N,GT,ATT + FSET? PERSON,MUNGBIT \?CND1 + GETP PERSON,P?LDESC + EQUAL? STACK,14 \?CCL5 + ICALL TOO-BAD-BUT,PERSON,STR?115 + RFALSE +?CCL5: ICALL TOO-BAD-BUT,PERSON,STR?116 + RFALSE +?CND1: SET 'QCONTEXT,PERSON + GETP PERSON,P?LDESC + EQUAL? STACK,21 /TRUE + PUTP PERSON,P?LDESC,12 + RTRUE + + + .FUNCT V-ASK-ABOUT:ANY:0:0 + FSET? PRSO,PERSONBIT \?CCL3 + EQUAL? PRSO,PLAYER /?CCL3 + PRINTI "A long silence tells you that" + ICALL2 PRINT-THE,PRSO + PRINTI " isn't interested in talking about" + IN? PRSI,ROOMS \?CCL8 + PRINTI " that" + JUMP ?CND6 +?CCL8: ICALL2 PRINT-THE,PRSI +?CND6: PRINTR "." +?CCL3: ICALL PERFORM,V?TELL,PRSO + RTRUE + + + .FUNCT WONT-HELP-TO-TALK-TO:ANY:1:1,OBJ + PRINTI "You talk to" + ICALL2 PRINT-THE,OBJ + PRINTI " for a minute before you realize that" + ICALL2 HE-SHE-IT,OBJ + PRINTR " won't respond." + + + .FUNCT PRE-ASK-CONTEXT-ABOUT:ANY:0:1,V,P + ZERO? V \?CND1 + SET 'V,V?ASK-ABOUT +?CND1: CALL1 QCONTEXT-GOOD? + ZERO? STACK /?CCL5 + ICALL PERFORM,V,QCONTEXT,PRSO + RTRUE +?CCL5: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P + ZERO? P /FALSE + ICALL TELL-I-ASSUME,P,STR?117 + ICALL PERFORM,V,P,PRSO + RTRUE + + + .FUNCT V-ASK-CONTEXT-ABOUT:ANY:0:0 + CALL1 ARENT-TALKING + RSTACK + + + .FUNCT V-ASK-FOR:ANY:0:0 + PRINTI "Unsurprisingly," + ICALL2 PRINT-THE,PRSO + PRINTR " doesn't oblige." + + + .FUNCT PRE-ASK-CONTEXT-FOR:ANY:0:0,P + LOC PRSO >P + FSET? P,PERSONBIT \?CCL3 + ICALL PERFORM,V?ASK-FOR,P,PRSO + RTRUE +?CCL3: CALL2 PRE-ASK-CONTEXT-ABOUT,V?ASK-FOR + RSTACK + + + .FUNCT V-ASK-CONTEXT-FOR:ANY:0:0 + CALL1 ARENT-TALKING + RSTACK + + + .FUNCT V-ATTACK:ANY:0:0 + CALL2 IKILL,STR?118 + RSTACK + + + .FUNCT PRE-BRUSH:ANY:0:0 + EQUAL? PRSO,ROOMS \FALSE + EQUAL? P-PRSA-WORD,W?SCRAPE,W?SCRATCH /FALSE + SET 'PRSO,WINNER + RFALSE + + + .FUNCT V-BRUSH:ANY:0:0 + ZERO? PRSI \?CCL3 + CALL2 HELD?,TOOTHBRUSH + ZERO? STACK /?CCL6 + PRINTI "(with the " + PRINTD TOOTHBRUSH + PRINTC 41 + CRLF + ICALL PERFORM,V?BRUSH,PRSO,TOOTHBRUSH + RTRUE +?CCL6: PRINTI "You have nothing to brush" + ICALL2 PRINT-THE,PRSO + PRINTR " with." +?CCL3: EQUAL? PRSI,TOOTHBRUSH /?CCL8 + PRINTI "With " + ICALL2 PRINTA,PRSI + PRINTR "!" +?CCL8: EQUAL? PRSO,TEETH /?CCL10 + PRINTI "In general, " + PRINTD TOOTHBRUSH + PRINTR "es are meant for teeth." +?CCL10: PRINTR "Congratulations on your fine dental hygiene." + + + .FUNCT V-BUY:ANY:0:0 + PRINTI "Sorry," + ICALL2 PRINT-THE,PRSO + PRINTR " isn't for sale." + + + .FUNCT V-$CALL:ANY:0:0 + ICALL2 UNSNOOZE,PRSO + FSET? PRSO,PERSONBIT \?CCL3 + CALL2 META-LOC,PRSO + EQUAL? STACK,HERE \?CCL6 + CALL2 GRAB-ATTENTION,PRSO + ZERO? STACK /?PRG11 + PUTP PRSO,P?LDESC,12 + ICALL2 START-SENTENCE,PRSO + PRINTI " is " + GET LDESC-STRINGS,12 + PRINT STACK + PRINTR "." +?PRG11: RETURN 2 +?CCL6: CALL2 NOT-HERE,PRSO + RSTACK +?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE + CALL2 MISSING,STR?56 + RSTACK + + + .FUNCT UNSNOOZE:ANY:1:2,PER,NO-TELL?,RM,GT,C + GETP PER,P?LDESC >C + EQUAL? C,14 \FALSE + PUTP PER,P?LDESC,25 + FCLEAR PER,MUNGBIT + CALL2 META-LOC,PER >RM + IN? PER,HERE \?CND5 + ZERO? NO-TELL? \?CND5 + ICALL HE-SHE-IT,PER,1 + PRINTI " wakes up first. " + FSET? RM,ONBIT /?CND5 + ICALL HE-SHE-IT,PER,1 + PRINTI " turns on the light. " +?CND5: FSET RM,ONBIT + RTRUE + + + .FUNCT V-CHASTISE:ANY:0:0 + EQUAL? PRSO,INTDIR /?CND1 + PRINT I-ASSUME + PRINTI " Look at" + ICALL2 HIM-HER-IT,PRSO + PRINTI ", not look in" + ICALL2 HIM-HER-IT,PRSO + PRINTI " nor look for" + ICALL2 HIM-HER-IT,PRSO + PRINTI " nor any other preposition.]" + CRLF +?CND1: ICALL PERFORM,V?EXAMINE,PRSO + RTRUE + + + .FUNCT V-BOARD:ANY:0:0 + IN? PRSO,ROOMS /?CTR2 + FSET? PRSO,DOORBIT \?CCL3 +?CTR2: CALL1 V-THROUGH + RSTACK +?CCL3: FSET? PRSO,VEHBIT \?CCL7 + IN? WINNER,PRSO \?CCL10 + ICALL2 ALREADY,PLAYER + PRINTI "in" + ICALL2 PRINT-THE,PRSO + PRINTR ".)" +?CCL10: MOVE WINNER,PRSO + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " now " + FSET? PRSO,SURFACEBIT \?CCL13 + PRINTI "on" + JUMP ?CND11 +?CCL13: PRINTI "in" +?CND11: ICALL2 PRINT-THE,PRSO + PRINTR "." +?CCL7: CALL2 YOU-CANT,STR?119 + RSTACK + + + .FUNCT V-CLIMB-ON:ANY:0:0 + ICALL PERFORM,V?SIT,PRSO + RTRUE + + + .FUNCT V-CLIMB-UP:ANY:0:2,DIR,OBJ,X + ASSIGNED? 'DIR /?CND1 + SET 'DIR,P?UP +?CND1: IN? PRSO,ROOMS \?CCL5 + ICALL PERFORM,V?WALK-TO,PRSO + RTRUE +?CCL5: GETPT HERE,DIR + ZERO? STACK /?CCL7 + ICALL2 DO-WALK,DIR + RTRUE +?CCL7: ZERO? OBJ \?CCL9 + CALL2 YOU-CANT,STR?73 + RSTACK +?CCL9: CALL1 HAR-HAR + RSTACK + + + .FUNCT V-CLIMB-DOWN:ANY:0:0 + CALL2 V-CLIMB-UP,P?DOWN + RSTACK + + + .FUNCT V-CLOSE:ANY:0:0 + FSET? PRSO,CONTBIT /?CCL3 + FSET? PRSO,DOORBIT /?CCL3 + EQUAL? PRSO,WINDOW /?CCL3 + CALL1 YOU-CANT + RSTACK +?CCL3: FSET? PRSO,DOORBIT /?CTR7 + EQUAL? PRSO,WINDOW \?CCL8 +?CTR7: FSET? PRSO,OPENBIT \?CCL13 + CALL OKAY,PRSO,STR?98 + RSTACK +?CCL13: CALL ALREADY,PRSO,STR?98 + RSTACK +?CCL8: FSET? PRSO,SURFACEBIT /?CCL16 + GETP PRSO,P?CAPACITY + ZERO? STACK /?CCL16 + FSET? PRSO,OPENBIT \?CCL21 + CALL OKAY,PRSO,STR?98 + RSTACK +?CCL21: CALL ALREADY,PRSO,STR?98 + RSTACK +?CCL16: CALL1 YOU-CANT + RSTACK + + + .FUNCT V-COUNT:ANY:0:0 + CALL1 IMPOSSIBLE + RSTACK + + + .FUNCT V-DIAGNOSE:ANY:0:0 + ZERO? PRSO /?CCL3 + CALL1 YOU-CANT + RSTACK +?CCL3: ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTR " wide awake and in good health." + + + .FUNCT TELL-NOT-IN:ANY:1:1,OBJ + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " not in" + ICALL2 HIM-HER-IT,OBJ + PRINTR "!)" + + + .FUNCT V-DRINK:ANY:0:0 + CALL1 YOU-CANT + RSTACK + + + .FUNCT V-DROP:ANY:0:0,L + CALL1 IDROP + ZERO? STACK /FALSE + CALL FIND-FLAG-HERE,VEHBIT,PRSO >L + ZERO? L /?CCL6 + MOVE PRSO,L + ICALL2 OKAY,PRSO + PRINTI " is now on" + ICALL2 PRINT-THE,L + PRINTR "." +?CCL6: CALL1 GROUND-DESC + CALL OKAY,PRSO,STACK + RSTACK + + + .FUNCT GROUND-DESC:ANY:0:0 + CALL2 OUTSIDE?,HERE + ZERO? STACK \?CCL3 + RETURN STR?120 +?CCL3: RETURN STR?121 + + + .FUNCT PRE-EAT:ANY:0:0 + EQUAL? PRSO,FALSE-VALUE,ROOMS \FALSE + CALL2 META-LOC,DINNER + EQUAL? STACK,HERE \?CCL6 + ICALL PERFORM,PRSA,DINNER + RTRUE +?CCL6: ICALL2 NOT-HERE,DINNER + RTRUE + + + .FUNCT V-EAT:ANY:0:0 + PRINTI "Stuffing" + ICALL2 PRINT-THE,PRSO + PRINTR " in your mouth would do little to help at this point." + + + .FUNCT V-ENJOY:ANY:0:0 + FSET? PRSO,PERSONBIT \?CCL3 + CALL1 V-KISS + RSTACK +?CCL3: PRINTI "Not difficult at all, considering how enjoyable" + ICALL2 PRINT-THE,PRSO + PRINTR " is." + + + .FUNCT PRE-THROUGH:ANY:0:0,VEH + EQUAL? PRSO,GLOBAL-HERE,ROOMS \FALSE + CALL FIND-IN,HERE,VEHBIT >VEH + ZERO? VEH /?CCL6 + ICALL PERFORM,V?BOARD,VEH + RTRUE +?CCL6: ICALL2 DO-WALK,P?IN + RTRUE + + + .FUNCT V-THROUGH:ANY:0:0,RM,DIR + CALL NOUN-USED?,PRSO,W?DOOR + ZERO? STACK /?CCL3 + FSET? PRSO,OPENBIT /?CTR2 + CALL WALK-THRU-DOOR?,FALSE-VALUE,PRSO,FALSE-VALUE + ZERO? STACK /?CCL3 +?CTR2: CALL DOOR-ROOM,HERE,PRSO >RM + ZERO? RM /?CCL10 + CALL2 GOTO,RM + ZERO? STACK \FALSE +?CCL10: CALL1 V-FOO + RSTACK +?CCL3: IN? PRSO,ROOMS \?CCL14 + EQUAL? PRSO,HERE \?CCL17 + ICALL1 WALK-WITHIN-ROOM + RTRUE +?CCL17: CALL SEE-INTO?,PRSO,FALSE-VALUE + ZERO? STACK /?CCL19 + ICALL2 GOTO,PRSO + RTRUE +?CCL19: ICALL PERFORM,V?WALK-TO,PRSO + RTRUE +?CCL14: FSET? PRSO,VEHBIT \?CCL21 + CALL PERFORM,V?BOARD,PRSO + RSTACK +?CCL21: FSET? PRSO,PERSONBIT \?CCL24 + CALL1 HAR-HAR + RSTACK +?CCL24: FSET? PRSO,TAKEBIT /?CCL26 + ICALL HE-SHE-IT,WINNER,1,STR?122 + PRINTI " into" + ICALL2 PRINT-THE,PRSO + ICALL2 THIS-IS-IT,PRSO + PRINTI " trying to go through" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." +?CCL26: IN? PRSO,WINNER \?CCL28 + ICALL PERFORM,V?EXAMINE,EYES + RTRUE +?CCL28: CALL1 HAR-HAR + RSTACK + + + .FUNCT PRE-EXAMINE:ANY:0:0 + CALL1 ROOM-CHECK + RSTACK + + + .FUNCT V-EXAMINE:ANY:0:0,TXT + EQUAL? PRSO,PSEUDO-OBJECT /?CCL2 + CALL NOUN-USED?,PRSO,W?DOOR + ZERO? STACK /?CND1 + CALL GLOBAL-IN?,PRSO,HERE + ZERO? STACK /?CND1 +?CCL2: SET 'TXT,TRUE-VALUE +?CND1: EQUAL? PRSO,INTDIR \?CCL9 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(If you want to see what's there, go there!)" +?CCL9: EQUAL? PRSO,LIGHT-GLOBAL /?CTR10 + EQUAL? PRSO,WALL,EARS,TEETH /?CTR10 + EQUAL? PRSO,EYES,HEAD,HANDS \?CCL11 +?CTR10: CALL1 NOTHING-SPECIAL + RSTACK +?CCL11: IN? PRSO,GLOBAL-OBJECTS \?CCL16 + ICALL2 NOT-HERE,PRSO + RTRUE +?CCL16: IN? PRSO,ROOMS \?CCL18 + ZERO? TXT \?CCL18 + CALL2 ROOM-PEEK,PRSO + RSTACK +?CCL18: CALL2 META-LOC,PRSO + EQUAL? STACK,HERE /?CCL22 + CALL GLOBAL-IN?,PRSO,HERE + ZERO? STACK \?CCL22 + ZERO? TXT \?CCL22 + CALL TOO-BAD-BUT,PRSO,STR?123 + RSTACK +?CCL22: GETP PRSO,P?TEXT >TXT + ZERO? TXT /?CCL27 + PRINT TXT + CRLF + RTRUE +?CCL27: FSET? PRSO,DOORBIT \?CCL29 + CALL2 CHECK-DOOR,PRSO + RSTACK +?CCL29: FSET? PRSO,CONTBIT /?CTR30 + FSET? PRSO,SURFACEBIT \?CCL31 +?CTR30: CALL1 V-LOOK-INSIDE + RSTACK +?CCL31: CALL1 NOTHING-SPECIAL + RSTACK + + + .FUNCT NOTHING-SPECIAL:ANY:0:0 + PRINTI "You see nothing special about" + ICALL2 PRINT-THE,PRSO + PRINTR "." + + + .FUNCT GLOBAL-IN?:ANY:2:2,OBJ1,OBJ2,TEE + EQUAL? OBJ1,OBJ2 /TRUE + GETPT OBJ2,P?GLOBAL >TEE + ZERO? TEE /FALSE + PTSIZE TEE + DIV STACK,2 + INTBL? OBJ1,TEE,STACK /?CND1 +?CND1: RSTACK + + + .FUNCT V-FAINT:ANY:0:0 + PRINTI "You doze for several minutes. " + CALL1 V-WAIT + RSTACK + + + .FUNCT V-FILL:ANY:0:0 + CALL1 YOU-CANT + RSTACK + + + .FUNCT PRE-FIND:ANY:0:0,?TMP1 + EQUAL? PRSO,PLAYER /FALSE + FSET? PRSO,SECRETBIT \?CCL5 + FSET? PRSO,SEENBIT /?CCL5 + CALL1 NO-FUN + RSTACK +?CCL5: IN? PRSO,ROOMS \?CCL9 + EQUAL? PRSO,HERE \?CCL12 + CALL ALREADY,WINNER,STR?124 + RSTACK +?CCL12: ICALL PERFORM,V?WALK-TO,PRSO + RTRUE +?CCL9: FSET? PRSO,PERSONBIT \FALSE + CALL2 META-LOC,WINNER >?TMP1 + CALL2 META-LOC,PRSO + EQUAL? ?TMP1,STACK \?CCL18 + FSET? PRSO,NDESCBIT /?CCL18 + ICALL1 BITE-YOU + RTRUE +?CCL18: CALL1 FOLLOW-LOC? + ZERO? STACK \TRUE + ICALL2 WHO-KNOWS?,PRSO + RETURN 2 + + + .FUNCT BITE-YOU:ANY:0:0 + PRINTI "If" + ICALL2 HE-SHE-IT,PRSO + PRINTI " were any closer," + ICALL2 HE-SHE-IT,PRSO + PRINTR "'d bite you!" + + + .FUNCT FAR-AWAY?:ANY:1:1,L + EQUAL? L,GLOBAL-OBJECTS /TRUE + FSET? L,SECRETBIT \?CND1 + FSET? L,SEENBIT \TRUE +?CND1: FSET? HERE,SECRETBIT \?PRD10 + FSET? L,SECRETBIT \?CCL8 +?PRD10: FSET? HERE,SECRETBIT /FALSE + FSET? L,SECRETBIT \FALSE +?CCL8: CALL SEE-INTO?,L,FALSE-VALUE + ZERO? STACK /TRUE + RFALSE + + + .FUNCT V-FIND:ANY:0:0,L + LOC PRSO >L + EQUAL? PRSO,HANDS,HEAD,EARS /?CTR2 + EQUAL? PRSO,TEETH,EYES \?CCL3 +?CTR2: PRINTI "Are you sure" + ICALL2 PRINT-THE,PRSO + PRINTR " is lost?" +?CCL3: CALL2 HELD?,PRSO + ZERO? STACK /?CCL7 + PRINTR "You have it!" +?CCL7: FSET? L,PERSONBIT \?CCL9 + CALL2 VISIBLE?,L + ZERO? STACK /?CCL9 + PRINTI "As far as you can tell," + ICALL2 PRINT-THE,L + ICALL2 THIS-IS-IT,L + PRINTR " has it." +?CCL9: CALL2 VISIBLE?,PRSO + ZERO? STACK /?CCL13 + PRINTR "Right in front of you." +?CCL13: FSET? PRSO,SEENBIT /?CCL16 + CALL NOT-HERE,PRSO,TRUE-VALUE + RSTACK +?CCL16: EQUAL? L,GLOBAL-OBJECTS,LOCAL-GLOBALS \?CCL19 + PRINTR "It's around somewhere." +?CCL19: CALL2 META-LOC,PRSO + CALL2 FAR-AWAY?,STACK + ZERO? STACK /?CCL22 + PRINTR "It's far away from here." +?CCL22: FSET? L,SURFACEBIT /?CTR23 + FSET? L,CONTBIT /?CTR23 + IN? L,ROOMS \?CCL24 +?CTR23: ICALL2 THIS-IS-IT,L + PRINTI "It's probably " + FSET? L,SURFACEBIT \?CCL30 + PRINTI "on" + JUMP ?CND28 +?CCL30: PRINTI "in" +?CND28: ICALL2 PRINT-THE,L + PRINTR "." +?CCL24: PRINTR "You'll have to do that yourself." + + + .FUNCT NO-FUN:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(If it's that easy, it spoils the fun!)" + + + .FUNCT TELL-LOCATION:ANY:0:0,DIR + IN? PLAYER,HERE /?CND1 + PRINTI "sitting " +?CND1: FSET? HERE,SURFACEBIT \?CCL5 + PRINTI "on" + JUMP ?CND3 +?CCL5: PRINTI "in" +?CND3: ICALL2 PRINT-THE,HERE + PRINTC 46 + RTRUE + + + .FUNCT V-FIX:ANY:0:0 + CALL1 MORE-SPECIFIC + RSTACK + + + .FUNCT FOLLOW-LOC?:ANY:0:0,L + GETP PRSO,P?CHARACTER >L + GET FOLLOW-LOC,L >L + ZERO? L /FALSE + PRINTI "The last you knew," + ICALL2 HE-SHE-IT,PRSO + PRINTI " was " + FSET? L,SURFACEBIT \?CCL6 + PRINTI "on" + JUMP ?CND4 +?CCL6: PRINTI "in" +?CND4: ICALL2 PRINT-THE,L + PRINTI ". +" + RETURN L + + + .FUNCT V-FOLLOW:ANY:0:0,L + EQUAL? PRSO,WINNER \?CCL3 + CALL1 YOU-CANT + RSTACK +?CCL3: FSET? PRSO,PERSONBIT /?CCL5 + CALL1 IMPOSSIBLE + RSTACK +?CCL5: CALL2 META-LOC,PRSO + EQUAL? HERE,STACK \?CCL8 + PRINTI "You're in the same place as" + ICALL2 HE-SHE-IT,PRSO + PRINTR "!" +?CCL8: ICALL2 WHO-KNOWS?,PRSO + RETURN 2 + + + .FUNCT V-FOO:ANY:0:0 + PRINTR "[Foo!! This is a bug!!]" + + + .FUNCT V-FOOTNOTE:ANY:0:0 + EQUAL? PRSO,INTNUM /?CCL3 + PRINTR "Specify a number, as in ""FOOTNOTE 6.""" +?CCL3: EQUAL? P-NUMBER,11 \?CCL5 + SET 'AWAITING-REPLY,14 + ICALL QUEUE,I-REPLY,2 + PRINTR "Isn't it fun reading through all the footnotes?" +?CCL5: EQUAL? P-NUMBER,12 \?CCL7 + PRINTR "This is the famous recursive footnote (Footnote 12)." +?CCL7: EQUAL? P-NUMBER,14 \?CCL9 + PRINT GUIDE-NAME + PRINTI " is also the name of a terrific work of interactive fiction by Douglas Adams and S. Eric Meretzky." + PRINT ALREADY-KNOW-THAT + CRLF + RTRUE +?CCL9: PRINTI "There is no Footnote " + PRINTN P-NUMBER + PRINTR "." + + + .FUNCT I-REPLY:ANY:0:0 + SET 'AWAITING-REPLY,FALSE-VALUE + RFALSE + + + .FUNCT PRE-GIVE:ANY:0:0 + EQUAL? PRSI,PLAYER /FALSE + CALL2 NOT-HOLDING?,PRSO + ZERO? STACK \TRUE + RFALSE + + + .FUNCT V-GIVE:ANY:0:0 + ZERO? PRSI \?CCL3 + CALL1 YOU-CANT + RSTACK +?CCL3: FSET? PRSI,PERSONBIT /?CCL5 + ICALL HE-SHE-IT,WINNER,1 + PRINTI " can't give " + ICALL2 PRINTA,PRSO + PRINTI " to " + ICALL2 PRINTA,PRSI + PRINTR "!" +?CCL5: EQUAL? PRSI,PLAYER \?CCL7 + ICALL PERFORM,V?TAKE,PRSO + RTRUE +?CCL7: PRINTI "Politely," + ICALL2 PRINT-THE,PRSI + PRINTR " refuses your offer." + + + .FUNCT PRE-SGIVE:ANY:0:0,X + ICALL PERFORM,V?GIVE,PRSI,PRSO + RTRUE + + + .FUNCT V-SGIVE:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT TELL-I-ASSUME:ANY:1:2,OBJ,PRON + FSET? PRON,TOUCHBIT /FALSE + EQUAL? OPRSO,OBJ /FALSE + FSET PRON,TOUCHBIT + PRINT I-ASSUME + PRINTC 32 + ICALL2 TELL-THE,OBJ + PRINTR ".]" + + + .FUNCT PRE-HELLO:ANY:0:0,P,WORD + EQUAL? P-PRSA-WORD,W?HELLO,W?HI \?CND1 + SET 'WORD,STR?126 +?CND1: EQUAL? PRSO,ROOMS /?CCL5 + FSET? PRSO,PERSONBIT /?CCL8 + ICALL2 WONT-HELP-TO-TALK-TO,PRSO + RTRUE +?CCL8: FSET? PRSO,MUNGBIT \?CCL11 + ICALL PERFORM,V?ALARM,PRSO + RTRUE +?CCL11: ZERO? WORD /FALSE + PRINT I-ASSUME + PRINT WORD + ICALL2 HIM-HER-IT,PRSO + PRINTI ".]" + CRLF + RFALSE +?CCL5: CALL1 QCONTEXT-GOOD? + ZERO? STACK /?CCL15 + PRINT I-ASSUME + PRINTC 32 + PRINTD QCONTEXT + PRINTI ".]" + CRLF + ICALL PERFORM,PRSA,QCONTEXT + RTRUE +?CCL15: EQUAL? WINNER,PLAYER \?CCL17 + CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P + ZERO? P /?CCL17 + PRINT I-ASSUME + PRINTC 32 + PRINTD P + PRINTI ".]" + CRLF + ICALL PERFORM,PRSA,P + RTRUE +?CCL17: CALL1 NOT-CLEAR-WHOM + RSTACK + + + .FUNCT V-HELLO:ANY:0:0 + FSET? PRSO,PERSONBIT \?CCL3 + FSET? PRSO,MUNGBIT /?CCL6 + PRINTR """Hello to you too.""" +?CCL6: CALL2 WONT-HELP-TO-TALK-TO,PRSO + RSTACK +?CCL3: CALL1 NOT-CLEAR-WHOM + RSTACK + + + .FUNCT V-HELP:ANY:0:0 + EQUAL? PRSO,FALSE-VALUE,PLAYER \?CCL3 + CALL1 HELP-TEXT + RSTACK +?CCL3: CALL1 MORE-SPECIFIC + RSTACK + + + .FUNCT HELP-TEXT:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTI "[You'll find plenty of help in your " + PRINTD GAME + PRINTR " package. +If you're really stuck, you can order a complete map and InvisiClues (TM) hint booklet from your dealer or via mail with the form in your package.]" + + + .FUNCT V-HIDE:ANY:0:0 + PRINTR "There's no place to hide here." + + + .FUNCT V-KILL:ANY:0:0 + PRINTR "You are obviously letting things get to you. You should learn to relax a little." + + + .FUNCT IKILL:ANY:0:1,STR + ZERO? PRSO \?CCL3 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTI "(There's nothing here to " + PRINT STR + PRINTR ".)" +?CCL3: ZERO? PRSI \?CCL5 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINT YOU-DIDNT-SAY-W + PRINTI "hat to " + PRINT STR + ICALL2 PRINT-THE,PRSO + FSET? PRSO,WEAPONBIT \?CCL8 + PRINTI " at" + JUMP ?CND6 +?CCL8: PRINTI " with" +?CND6: PRINTR ".]" +?CCL5: FSET? PRSO,PERSONBIT /?CCL10 + CALL1 HAR-HAR + RSTACK +?CCL10: PRINT NO-VIOLENCE + RTRUE + + + .FUNCT V-KISS:ANY:0:0,X + EQUAL? PRSO,PLAYER \?CCL3 + PRINTI "You kiss " + PRINTD PLAYER + PRINTR " for a minute. Yuk!" +?CCL3: FSET? PRSO,PERSONBIT \?CCL5 + FSET? PRSO,MUNGBIT /?CCL5 + CALL1 FACE-RED + RSTACK +?CCL5: PRINTR "What a (ahem!) strange idea!" + + + .FUNCT V-KNOCK:ANY:0:0,P + FSET? PRSO,DOORBIT \?CCL3 + FSET? PRSO,OPENBIT \?CCL7 + PRINTR "It's open!" +?CCL7: PRINTR "Nobody's home." +?CCL3: CALL2 HACK-HACK,STR?129 + RSTACK + + + .FUNCT V-LAMP-OFF:ANY:0:0 + FSET? PRSO,LIGHTBIT /?CCL3 + CALL2 YOU-CANT,STR?130 + RSTACK +?CCL3: FSET? PRSO,ONBIT /?CCL5 + CALL ALREADY,PRSO,STR?102 + RSTACK +?CCL5: CALL OKAY,PRSO,STR?102 + RSTACK + + + .FUNCT V-LAMP-ON:ANY:0:0 + FSET? PRSO,ONBIT \?CCL3 + CALL ALREADY,PRSO,STR?101 + RSTACK +?CCL3: FSET? PRSO,LIGHTBIT \?CCL5 + CALL OKAY,PRSO,STR?101 + RSTACK +?CCL5: FSET? PRSO,PERSONBIT \?CCL7 + CALL1 HAR-HAR + RSTACK +?CCL7: CALL2 YOU-CANT,STR?131 + RSTACK + + + .FUNCT V-LEAP:ANY:0:0 + ZERO? PRSO /?CCL3 + EQUAL? PRSO,INTDIR /?CCL3 + ICALL1 IMPOSSIBLE + RTRUE +?CCL3: CALL1 V-SKIP + RSTACK + + + .FUNCT V-SKIP:ANY:0:0 + CALL1 WHEE + RSTACK + + + .FUNCT WHEE:ANY:0:0,X + RANDOM 5 >X + EQUAL? 1,X \?CCL3 + PRINTR "Very good. Now you can go to the second grade." +?CCL3: EQUAL? 2,X \?CCL5 + PRINTR "I hope you enjoyed that more than I did." +?CCL5: EQUAL? 3,X \?CCL7 + PRINTI "Are you enjoying " + PRINTD PLAYER + PRINTR "?" +?CCL7: EQUAL? 4,X \?CCL9 + PRINTR "Wheeeeeeeeee!!!!!" +?CCL9: PRINTR "Do you expect someone to applaud?" + + + .FUNCT V-LEAVE:ANY:0:0,GT + EQUAL? WINNER,FOLLOWER \?CND1 + SET 'FOLLOWER,0 +?CND1: EQUAL? PRSO,FALSE-VALUE,ROOMS,HERE \?CCL5 + ICALL2 DO-WALK,P?OUT + PUTP WINNER,P?LDESC,9 + RTRUE +?CCL5: LOC PRSO + EQUAL? STACK,PLAYER \?CCL7 + ICALL PERFORM,V?DROP,PRSO + RTRUE +?CCL7: LOC WINNER + EQUAL? STACK,PRSO \?CCL9 + ICALL PERFORM,V?DISEMBARK,PRSO + RTRUE +?CCL9: ICALL2 TELL-NOT-IN,PRSO + RETURN 2 + + + .FUNCT PRE-LIE:ANY:0:0 + CALL1 ROOM-CHECK + RSTACK + + + .FUNCT V-LIE:ANY:0:0 + CALL2 V-SIT,TRUE-VALUE + RSTACK + + + .FUNCT PRE-LISTEN:ANY:0:0 + FSET? PRSO,PERSONBIT \?CCL3 + GETP PRSO,P?LDESC + EQUAL? STACK,14 \?CCL3 + PRINTR """Zzzzzzz...""" +?CCL3: CALL1 PRE-ASK + RSTACK + + + .FUNCT V-LISTEN:ANY:0:0 + FSET? PRSO,PERSONBIT \?CCL3 + FSET? PRSO,MUNGBIT /?CCL3 + ICALL1 WAITING-FOR-YOU-TO-SPEAK + RTRUE +?CCL3: PRINTI "At the moment," + ICALL2 PRINT-THE,PRSO + PRINTR " makes no sound." + + + .FUNCT V-LOCK:ANY:0:0 + CALL1 HAR-HAR + 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 + FSET? PRSO,DOORBIT \?CCL3 + FSET? PRSO,OPENBIT /?CCL3 + CALL TOO-BAD-BUT,PRSO,STR?98 + RSTACK +?CCL3: PRINTI "There's nothing behind" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." + + + .FUNCT V-LOOK-DOWN:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + ICALL PERFORM,V?EXAMINE,FLOOR + RTRUE +?CCL3: ICALL PERFORM,V?LOOK-INSIDE,PRSO + RTRUE + + + .FUNCT PRE-LOOK-INSIDE:ANY:0:0 + CALL1 ROOM-CHECK + RSTACK + + + .FUNCT V-LOOK-INSIDE:ANY:0:1,DIR,RM + ASSIGNED? 'DIR /?CND1 + SET 'DIR,P?IN +?CND1: EQUAL? PRSO,ROOMS \?CND3 + EQUAL? DIR,P?OUT \?CCL7 + CALL GLOBAL-IN?,WINDOW,HERE + ZERO? STACK /?CND3 + ICALL PERFORM,PRSA,WINDOW,PRSI + RTRUE +?CCL7: SET 'RM,P-IT-OBJECT + FSET? RM,CONTBIT /?CCL11 + CALL FIND-FLAG-LG,HERE,CONTBIT >RM + ZERO? RM \?CCL11 + SET 'RM,WINDOW + CALL GLOBAL-IN?,RM,HERE + ZERO? STACK \?CCL11 + CALL FIND-FLAG-LG,HERE,DOORBIT >RM + ZERO? RM /?CND3 +?CCL11: ICALL2 TELL-I-ASSUME,RM + ICALL PERFORM,PRSA,RM,PRSI + RTRUE +?CND3: EQUAL? PRSO,GLOBAL-HERE \?CCL18 + ICALL2 PERFORM,V?LOOK + RTRUE +?CCL18: IN? PRSO,ROOMS \?CCL20 + CALL NOUN-USED?,PRSO,W?DOOR + ZERO? STACK \?CCL20 + CALL GLOBAL-IN?,PRSO,HERE + ZERO? STACK \?CTR19 + CALL SEE-INTO?,PRSO,FALSE-VALUE + ZERO? STACK /?CCL20 +?CTR19: CALL2 ROOM-PEEK,PRSO + RSTACK +?CCL20: CALL2 V-LOOK-THROUGH,TRUE-VALUE + ZERO? STACK \TRUE + FSET? PRSO,CONTBIT /?CTR28 + FSET? PRSO,SURFACEBIT \?CCL29 +?CTR28: CALL SEE-INSIDE?,PRSO,TRUE-VALUE + ZERO? STACK \?CND32 + ICALL FIRST-YOU,STR?103,PRSO +?CND32: FIRST? PRSO \?CCL36 + PRINTI "You can see" + ICALL2 PRINT-CONTENTS,PRSO + FSET? PRSO,SURFACEBIT \?CCL39 + PRINTI " on" + JUMP ?CND37 +?CCL39: PRINTI " inside" +?CND37: ICALL2 HIM-HER-IT,PRSO + PRINTR "." +?CCL36: FSET? PRSO,SURFACEBIT \?CCL41 + PRINTI "There's nothing on" + ICALL2 HIM-HER-IT,PRSO + IN? PLAYER,PRSO \?CND42 + PRINTI " except you" +?CND42: PRINTR "." +?CCL41: CALL TOO-BAD-BUT,PRSO,STR?132 + RSTACK +?CCL29: EQUAL? DIR,P?IN \?CCL45 + CALL2 YOU-CANT,STR?133 + RSTACK +?CCL45: CALL2 YOU-CANT,STR?134 + RSTACK + + + .FUNCT FIRST-YOU:ANY:1:3,STR,OBJ,OBJ2 + PRINTC 40 + ICALL HE-SHE-IT,WINNER,TRUE-VALUE,STR + ZERO? OBJ /?CND1 + ICALL2 PRINT-THE,OBJ + EQUAL? STR,STR?103 \?CND3 + FSET OBJ,OPENBIT +?CND3: ZERO? OBJ2 /?CND1 + PRINTI " from" + ICALL2 PRINT-THE,OBJ2 +?CND1: PRINTR " first.)" + + + .FUNCT V-LOOK-THROUGH:ANY:0:1,INSIDE,RM + FSET? PRSO,DOORBIT \?CCL3 + FSET? PRSO,OPENBIT /?CTR5 + FSET? PRSO,TRANSBIT \?CCL6 +?CTR5: CALL DOOR-ROOM,HERE,PRSO >RM + ZERO? RM /?CCL11 + CALL ROOM-PEEK,RM,TRUE-VALUE + RSTACK +?CCL11: CALL1 NO-BEYOND + RSTACK +?CCL6: CALL TOO-BAD-BUT,PRSO,STR?98 + RSTACK +?CCL3: EQUAL? PRSO,WINDOW \?CCL13 + CALL1 NO-BEYOND + RSTACK +?CCL13: FSET? PRSO,PERSONBIT \?CCL16 + PRINTR "You forgot to bring your X-ray glasses." +?CCL16: ZERO? INSIDE \FALSE + FSET? PRSO,TRANSBIT \?CCL20 + PRINTR "Everything looks bigger." +?CCL20: CALL2 YOU-CANT,STR?135 + RSTACK + + + .FUNCT NO-BEYOND:ANY:0:0 + PRINTI "You can't tell what's beyond" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." + + + .FUNCT ROOM-PEEK:ANY:1:2,RM,SAFE,X,OHERE,OLIT,TXT + EQUAL? RM,HERE \?CCL3 + ICALL1 V-LOOK + RTRUE +?CCL3: ZERO? SAFE \?CCL5 + CALL2 SEE-INTO?,RM + ZERO? STACK /FALSE +?CCL5: SET 'OHERE,HERE + SET 'OLIT,LIT + SET 'HERE,RM + ICALL2 MAKE-ALL-PEOPLE,-12 + CALL1 LIT? >LIT + PRINTI "You peer " + FSET? RM,SURFACEBIT \?CCL10 + PRINTI "at" + JUMP ?CND8 +?CCL10: PRINTI "into" +?CND8: ICALL2 HIM-HER-IT,RM + PRINTC 58 + CRLF + CALL1 DESCRIBE-OBJECTS + ZERO? STACK /?CCL13 + SET 'X,TRUE-VALUE + JUMP ?CND11 +?CCL13: GETP RM,P?LDESC >TXT + ZERO? TXT /?CND11 + SET 'X,TRUE-VALUE + PRINT TXT + CRLF +?CND11: ZERO? X \?CND15 + PRINTI "You can't see anything suspicious." + CRLF +?CND15: SET 'HERE,OHERE + SET 'LIT,OLIT + RTRUE + + + .FUNCT SEE-INTO?:ANY:1:3,THERE,TELL?,IGNORE-DOOR,P,L,TBL,O + ASSIGNED? 'TELL? /?CND1 + SET 'TELL?,TRUE-VALUE +?CND1: SET 'P,0 +?PRG3: NEXTP HERE,P >P + ZERO? P /?CCL6 + LESS? P,LOW-DIRECTION \?CND5 +?CCL6: ZERO? TELL? /FALSE + ICALL1 TELL-CANT-FIND + RFALSE +?CND5: GETPT HERE,P >TBL + PTSIZE TBL >L + EQUAL? L,UEXIT \?CCL13 + GET TBL,REXIT + EQUAL? STACK,THERE \?PRG3 + RTRUE +?CCL13: EQUAL? L,DEXIT \?CCL17 + GET TBL,REXIT + EQUAL? STACK,THERE \?PRG3 + GET TBL,DEXITOBJ + FSET? STACK,OPENBIT /TRUE + GET TBL,DEXITOBJ + CALL WALK-THRU-DOOR?,TBL,STACK,FALSE-VALUE + ZERO? STACK \TRUE + ZERO? IGNORE-DOOR \TRUE + ZERO? TELL? /FALSE + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTI "(The door to that room is closed.)" + CRLF + RFALSE +?CCL17: EQUAL? L,CEXIT \?PRG3 + GET TBL,REXIT + EQUAL? STACK,THERE \?PRG3 + GETB TBL,CEXITFLAG + VALUE STACK + ZERO? STACK \TRUE + ZERO? TELL? /FALSE + ICALL1 TELL-CANT-FIND + RFALSE + + + .FUNCT TELL-CANT-FIND:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(That place isn't close enough.)" + + + .FUNCT V-LOOK-ON:ANY:0:0 + FSET? PRSO,SURFACEBIT \?CCL3 + CALL1 V-LOOK-INSIDE + RSTACK +?CCL3: PRINTI "There's no good surface on" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." + + + .FUNCT V-LOOK-OUTSIDE:ANY:0:0 + CALL2 V-LOOK-INSIDE,P?OUT + RSTACK + + + .FUNCT PRE-LOOK-UNDER:ANY:0:0 + CALL1 ROOM-CHECK + RSTACK + + + .FUNCT V-LOOK-UNDER:ANY:0:0 + EQUAL? PRSO,TEETH,EARS /?CTR2 + EQUAL? PRSO,HEAD,HANDS,EYES \?CCL3 +?CTR2: CALL1 WONT-HELP + RSTACK +?CCL3: CALL2 HELD?,PRSO + ZERO? STACK /?CCL7 + PRINTI "You're " + FSET? PRSO,WORNBIT \?CCL10 + PRINTI "wear" + JUMP ?CND8 +?CCL10: PRINTI "hold" +?CND8: PRINTI "ing" + ICALL2 PRINT-THE,PRSO + PRINTR "!" +?CCL7: FSET? PRSO,PERSONBIT \?CCL12 + PRINTI "Nope. Nothing hiding under" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." +?CCL12: LOC PRSO + EQUAL? STACK,HERE,LOCAL-GLOBALS \?CCL14 + PRINTR "There's nothing there but dust." +?CCL14: PRINTR "That's not a bit useful." + + + .FUNCT V-LOOK-UP:ANY:0:0,HR + ZERO? PRSI /?CCL3 + PRINTI "There's no information in" + ICALL2 PRINT-THE,PRSI + PRINTI " about" + ICALL2 PRINT-THE,PRSO + PRINTR "." +?CCL3: EQUAL? PRSO,ROOMS \?CCL5 + CALL2 OUTSIDE?,HERE + ZERO? STACK /?CCL8 + ICALL PERFORM,V?EXAMINE,SKY + RTRUE +?CCL8: PRINTR "The ceiling is decorated with swirly lines and patterns." +?CCL5: CALL2 YOU-CANT,STR?136 + RSTACK + + + .FUNCT PRE-MOVE:ANY:0:0 + CALL2 HELD?,PRSO + ZERO? STACK /FALSE + PRINTR "Juggling isn't one of your talents." + + + .FUNCT V-MOVE:ANY:0:0 + FSET? PRSO,TAKEBIT \?CCL3 + PRINTI "Moving" + ICALL2 HIM-HER-IT,PRSO + PRINTR " reveals nothing." +?CCL3: CALL1 YOU-CANT + RSTACK + + + .FUNCT PRE-MOVE-DIR:ANY:0:0 + EQUAL? PRSI,INTDIR /FALSE + ICALL1 DONT-UNDERSTAND + RTRUE + + + .FUNCT V-MOVE-DIR:ANY:0:0 + PRINTI "You can't move" + ICALL2 HIM-HER-IT,PRSO + PRINTI " in any particular " + PRINTD INTDIR + PRINTR "." + + + .FUNCT V-MUNG:ANY:0:0 + FSET? PRSO,DOORBIT \?CCL3 + ZERO? PRSI \?CCL3 + FSET? PRSO,OPENBIT \?CCL8 + PRINTR "You'd fly through the open door if you tried." +?CCL8: CALL2 UNLOCK-DOOR?,PRSO + ZERO? STACK /?CCL10 + PRINTR "Why don't you just open it instead?" +?CCL10: CALL1 IF-SPY + RSTACK +?CCL3: FSET? PRSO,PERSONBIT /?CCL12 + CALL1 IF-SPY + RSTACK +?CCL12: CALL2 IKILL,STR?137 + RSTACK + + + .FUNCT V-NOD:ANY:0:0 + EQUAL? PRSO,ROOMS /?CCL3 + CALL1 YOU-CANT + RSTACK +?CCL3: ZERO? AWAITING-REPLY /?CCL5 + ICALL2 PERFORM,V?YES + RTRUE +?CCL5: ICALL PERFORM,V?HELLO,ROOMS + RTRUE + + + .FUNCT V-OPEN:ANY:0:0,F,STR + FSET? PRSO,CONTBIT /?CCL3 + FSET? PRSO,DOORBIT /?CCL3 + EQUAL? PRSO,WINDOW /?CCL3 + CALL1 IMPOSSIBLE + RSTACK +?CCL3: FSET? PRSO,DOORBIT /?CTR7 + EQUAL? PRSO,WINDOW /?CTR7 + GETP PRSO,P?CAPACITY + ZERO? STACK /?CCL8 +?CTR7: FSET? PRSO,LOCKED \?CND12 + CALL2 UNLOCK-DOOR?,PRSO + ZERO? STACK /?CCL16 + FCLEAR PRSO,LOCKED + ICALL FIRST-YOU,STR?138,PRSO +?CND12: FSET? PRSO,OPENBIT \?CCL19 + CALL ALREADY,PRSO,STR?103 + RSTACK +?CCL16: ICALL TOO-BAD-BUT,PRSO,STR?104 + RTRUE +?CCL19: FSET PRSO,OPENBIT + FSET? PRSO,DOORBIT /?CTR21 + EQUAL? PRSO,WINDOW /?CTR21 + FIRST? PRSO \?CTR21 + FSET? PRSO,TRANSBIT \?CCL22 +?CTR21: CALL OKAY,PRSO,STR?103 + RSTACK +?CCL22: FIRST? PRSO >F \?CCL28 + NEXT? F /?CCL28 + GETP F,P?FDESC >STR + ZERO? STR /?CCL28 + PRINTI "You open" + ICALL2 HIM-HER-IT,PRSO + PRINTC 46 + CRLF + PRINT STR + CRLF + RTRUE +?CCL28: PRINTI "You open" + ICALL2 HIM-HER-IT,PRSO + PRINTI " and see" + ICALL2 PRINT-CONTENTS,PRSO + PRINTR "." +?CCL8: CALL1 YOU-CANT + RSTACK + + + .FUNCT V-PANIC:ANY:0:0 + PRINTR "Not surprised." + + + .FUNCT V-PLAY:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "[Speaking of playing, you'd enjoy Infocom's other fictions, too!]" + + + .FUNCT V-POUR:ANY:0:0 + CALL1 HAR-HAR + RSTACK + + + .FUNCT V-PULL-TOGETHER:ANY:0:0 + CALL1 DONT-UNDERSTAND + RSTACK + + + .FUNCT V-PUSH:ANY:0:0 + CALL2 HACK-HACK,STR?139 + RSTACK + + + .FUNCT V-SPUT-ON:ANY:0:0 + ICALL PERFORM,V?PUT,PRSI,PRSO + RTRUE + + + .FUNCT PRE-PUT:ANY:0:0 + FCLEAR PRSO,WORNBIT + EQUAL? PRSO,HANDS,HEAD \?CCL3 + ICALL1 WONT-HELP + RTRUE +?CCL3: IN? PRSO,GLOBAL-OBJECTS \?CCL5 + ICALL2 NOT-HERE,PRSO + RTRUE +?CCL5: EQUAL? PRSI,FALSE-VALUE,GLOBAL-HERE,FLOOR /FALSE + IN? PRSI,GLOBAL-OBJECTS \?CCL9 + ICALL2 NOT-HERE,PRSI + RTRUE +?CCL9: CALL HELD?,PRSI,PRSO + ZERO? STACK /FALSE + CALL YOU-CANT,STR?140,PRSI,STR?141 + RSTACK + + + .FUNCT V-PUT:ANY:0:0 + FSET? PRSI,SURFACEBIT /?CND1 + FSET? PRSI,VEHBIT /?CND1 + PRINTI "There's no good surface on" + ICALL2 HIM-HER-IT,PRSI + PRINTR "." +?CND1: CALL1 PUT-ON-OR-IN + RSTACK + + + .FUNCT TELL-FIND-NONE:ANY:1:2,STR,OBJ + PRINTI "You search for " + PRINT STR + ZERO? OBJ /?CND1 + ICALL2 PRINT-THE,OBJ +?CND1: PRINTR " but find none." + + + .FUNCT PRE-PUT-IN:ANY:0:0 + EQUAL? PRSI,PSEUDO-OBJECT \?CCL3 + CALL1 PRE-PUT + RSTACK +?CCL3: EQUAL? PRSI,HANDS,EYES \?CCL5 + ICALL1 WONT-HELP + RETURN 2 +?CCL5: FSET? PRSI,READBIT \?CCL9 + ICALL1 WONT-HELP + RETURN 2 +?CCL9: FSET? PRSI,CONTBIT /?CND1 + ICALL TELL-FIND-NONE,STR?142,PRSI + RETURN 2 +?CND1: FSET? PRSI,OPENBIT /?CND15 + ICALL FIRST-YOU,STR?103,PRSI +?CND15: CALL1 PRE-PUT + RSTACK + + + .FUNCT V-PUT-IN:ANY:0:0 + FSET? PRSI,OPENBIT /?CND1 + FSET? PRSI,VEHBIT /?CND1 + FSET? PRSI,CONTBIT /?CTR6 + FSET? PRSI,DOORBIT \?CCL7 +?CTR6: ICALL TOO-BAD-BUT,PRSI,STR?98 + RTRUE +?CCL7: PRINTI "You can't open" + ICALL2 HIM-HER-IT,PRSI + PRINTR "." +?CND1: CALL1 PUT-ON-OR-IN + RSTACK + + + .FUNCT PUT-ON-OR-IN:ANY:0:0,?TMP1,?TMP2 + ZERO? PRSI \?CCL3 + CALL1 YOU-CANT + RSTACK +?CCL3: EQUAL? PRSI,PRSO \?CCL5 + CALL1 HAR-HAR + RSTACK +?CCL5: IN? PRSO,PRSI \?CCL7 + ICALL2 TOO-BAD-BUT,PRSO + PRINTI " is already " + FSET? PRSI,SURFACEBIT \?CCL10 + PUSH STR?101 + JUMP ?CND8 +?CCL10: PUSH STR?144 +?CND8: PRINT STACK + ICALL2 HIM-HER-IT,PRSI + PRINTR "!" +?CCL7: CALL2 WEIGHT,PRSI >?TMP2 + GETP PRSO,P?SIZE + ADD ?TMP2,STACK >?TMP1 + GETP PRSI,P?CAPACITY + GRTR? ?TMP1,STACK \?CCL12 + PRINT NOT-ENOUGH-ROOM + RTRUE +?CCL12: CALL2 HELD?,PRSO + ZERO? STACK \?CCL14 + CALL1 ITAKE + ZERO? STACK /TRUE +?CCL14: MOVE PRSO,PRSI + FSET PRSO,TOUCHBIT + FSET? PRSI,PERSONBIT \?CND17 + FSET? PRSO,WEARBIT \?CND17 + FSET PRSO,WORNBIT +?CND17: PRINTR "Okay." + + + .FUNCT WEIGHT:ANY:1:1,OBJ,CONT,WT + FIRST? OBJ >CONT /?PRG3 + RETURN WT +?PRG3: GETP CONT,P?SIZE + ADD WT,STACK >WT + NEXT? CONT >CONT /?PRG3 + RETURN WT + + + .FUNCT V-PUT-UNDER:ANY:0:0 + CALL1 WONT-HELP + RSTACK + + + .FUNCT PRE-SREAD:ANY:0:0 + ICALL PERFORM,V?READ,PRSI,PRSO + RTRUE + + + .FUNCT V-SREAD:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT PRE-READ:ANY:0:0,VAL + IN? PRSO,GLOBAL-OBJECTS \FALSE + CALL2 NOT-HERE,PRSO + RSTACK + + + .FUNCT V-READ:ANY:0:0 + FSET? PRSO,READBIT /?CCL3 + CALL1 YOU-CANT + RSTACK +?CCL3: GETP PRSO,P?TEXT + PRINT STACK + CRLF + RTRUE + + + .FUNCT V-REFUSE:ANY:0:0 + SET 'PRSA,V?TAKE + CALL1 DONT-F + RSTACK + + + .FUNCT V-RELAX:ANY:0:0 + PRINT ZEN + CRLF + RTRUE + + + .FUNCT V-REMOVE:ANY:0:0 + FSET? PRSO,WORNBIT \?CCL3 + ICALL PERFORM,V?TAKE-OFF,PRSO + RTRUE +?CCL3: ICALL PERFORM,V?TAKE,PRSO + RTRUE + + + .FUNCT V-RING:ANY:0:0 + CALL1 YOU-CANT + RSTACK + + + .FUNCT V-RUB:ANY:0:0 + FSET? PRSO,PERSONBIT \?CCL3 + FSET? PRSO,MUNGBIT /?CCL3 + EQUAL? PRSO,PLAYER /?CCL3 + CALL1 FACE-RED + RSTACK +?CCL3: CALL2 HACK-HACK,STR?146 + RSTACK + + + .FUNCT V-SAY:ANY:0:0,P + CALL1 QCONTEXT-GOOD? + ZERO? STACK /?CCL3 + ICALL PERFORM,V?TELL,QCONTEXT + RTRUE +?CCL3: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P + ZERO? P /?CCL5 + ICALL TELL-I-ASSUME,P,STR?147 + ICALL PERFORM,V?TELL,P + RTRUE +?CCL5: CALL1 NOT-CLEAR-WHOM + RSTACK + + + .FUNCT PRE-SEARCH:ANY:0:0 + CALL1 ROOM-CHECK + RSTACK + + + .FUNCT V-SEARCH:ANY:0:0,OBJ + IN? PRSO,ROOMS \?CCL3 + ICALL PERFORM,PRSA,GLOBAL-HERE + RTRUE +?CCL3: FSET? PRSO,PERSONBIT \?CCL5 + FIRST? PRSO >OBJ \?CCL5 + FSET OBJ,TAKEBIT + FCLEAR OBJ,NDESCBIT + FCLEAR OBJ,WORNBIT + FCLEAR OBJ,SECRETBIT + ICALL2 THIS-IS-IT,OBJ + MOVE OBJ,PLAYER + PRINTI "You find " + ICALL2 PRINTA,OBJ + PRINTI " and take it. " + PRINTC 89 + PRINT OU-STOP-SEARCHING + PRINTR "." +?CCL5: FSET? PRSO,DOORBIT \?CCL9 + CALL1 NOTHING-SPECIAL + RSTACK +?CCL9: FSET? PRSO,CONTBIT /?CTR10 + FSET? PRSO,SURFACEBIT \?CCL11 +?CTR10: ICALL PERFORM,V?LOOK-INSIDE,PRSO + RTRUE +?CCL11: CALL1 NOTHING-SPECIAL + RSTACK + + + .FUNCT PRE-SSEARCH-FOR:ANY:0:0 + ICALL PERFORM,V?SEARCH-FOR,PRSI,PRSO + RTRUE + + + .FUNCT V-SSEARCH-FOR:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT PRE-SEARCH-FOR:ANY:0:0,OBJ + CALL1 ROOM-CHECK + ZERO? STACK /FALSE + RTRUE + + + .FUNCT V-SEARCH-FOR:ANY:0:0 + IN? PRSO,ROOMS \?CCL3 + ICALL PERFORM,PRSA,GLOBAL-HERE,PRSI + RTRUE +?CCL3: FSET? PRSO,PERSONBIT \?CCL5 + IN? PRSI,PRSO \?CCL8 + PRINTI "Indeed," + ICALL HE-SHE-IT,PRSO,0,STR?62 + ICALL2 HIM-HER-IT,PRSI + PRINTR "." +?CCL8: ICALL2 START-SENTENCE,PRSO + PRINTI " doesn't have" + IN? PRSI,GLOBAL-OBJECTS \?CCL11 + ICALL2 PRINT-THE,PRSI + PRINTR "." +?CCL11: ZERO? PRSI \?CCL13 + PRINTR " that." +?CCL13: ICALL2 PRINT-THE,PRSI + PRINTI " hidden on" + ICALL HIM-HER-IT,PRSO,0,TRUE-VALUE + PRINTR " person." +?CCL5: FSET? PRSO,CONTBIT \?CCL15 + FSET? PRSO,OPENBIT /?CCL15 + PRINTI "You'll have to open" + ICALL2 HIM-HER-IT,PRSO + PRINTR " first." +?CCL15: IN? PRSI,PRSO \?CCL19 + PRINTI "How observant you are! There" + ICALL HE-SHE-IT,PRSI,0,STR?61 + PRINTR "!" +?CCL19: ZERO? PRSI \?CCL22 + CALL1 YOU-CANT + RSTACK +?CCL22: PRINTI "You don't find" + FSET? PRSI,SECRETBIT \?CCL25 + PRINTI " it" + JUMP ?CND23 +?CCL25: ICALL2 HIM-HER-IT,PRSI +?CND23: PRINTR " there." + + + .FUNCT V-SHAKE:ANY:0:0,X + FSET? PRSO,PERSONBIT \?CCL3 + PRINTR "Be real." +?CCL3: FSET? PRSO,TAKEBIT /?CCL5 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(You can't shake it if you can't take it!)" +?CCL5: FSET? PRSO,OPENBIT /?CCL7 + FIRST? PRSO \?CCL7 + PRINTI "It sounds as if there is something inside" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." +?CCL7: FSET? PRSO,OPENBIT \?CCL11 + FIRST? PRSO >X \?CCL11 + PRINTI "Right " + CALL1 GROUND-DESC + PRINT STACK + PRINTI " spill" + NEXT? X /?CND14 + PRINTC 115 +?CND14: ICALL ROB,PRSO,HERE,TRUE-VALUE + CRLF + RTRUE +?CCL11: PRINTI "You hear nothing inside" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." + + + .FUNCT V-SHOOT:ANY:0:0 + ZERO? PRSI /?PRD5 + LOC PRSI + EQUAL? STACK,WINNER /?CCL3 +?PRD5: CALL FIND-IN,WINNER,WEAPONBIT + ZERO? STACK \?CCL3 + PRINTR "You're not holding anything to shoot with." +?CCL3: CALL2 IKILL,STR?149 + RSTACK + + + .FUNCT PRE-SSHOOT:ANY:0:0 + ICALL PERFORM,V?SHOOT,PRSI,PRSO + RTRUE + + + .FUNCT V-SSHOOT:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT V-SHOW:ANY:0:0 + EQUAL? PRSO,PLAYER \?CCL3 + SET 'WINNER,PLAYER + CALL2 VISIBLE?,PRSO + ZERO? STACK /?CCL6 + ICALL PERFORM,V?EXAMINE,PRSI + RTRUE +?CCL6: ICALL PERFORM,V?FIND,PRSI + RTRUE +?CCL3: FSET? PRSO,PERSONBIT \?CTR7 + FSET? PRSO,MUNGBIT \?CCL8 +?CTR7: PRINTI "Don't wait for" + ICALL2 HIM-HER-IT,PRSO + PRINTR " to applaud." +?CCL8: CALL1 WHO-CARES + RSTACK + + + .FUNCT PRE-SSHOW:ANY:0:0,P + ZERO? PRSI /?CCL3 + IN? PRSI,ROOMS \?CND4 + ICALL PERFORM,V?TAKE-TO,PRSO,PRSI + RTRUE +?CND4: ICALL PERFORM,V?SHOW,PRSI,PRSO + RTRUE +?CCL3: CALL2 HELD?,PRSO + ZERO? STACK \?CCL7 + LOC PRSO + FSET? STACK,PERSONBIT \?CCL10 + ICALL PERFORM,V?TAKE,PRSO + RTRUE +?CCL10: ICALL TELL-I-ASSUME,PRSO,STR?150 + ICALL PERFORM,V?ASK-CONTEXT-ABOUT,PRSO + RTRUE +?CCL7: CALL1 QCONTEXT-GOOD? + ZERO? STACK /?CCL12 + ICALL PERFORM,V?SHOW,QCONTEXT,PRSO + RTRUE +?CCL12: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P + ZERO? P /?CCL14 + ICALL TELL-I-ASSUME,P,STR?151 + ICALL PERFORM,V?SHOW,P,PRSO + RTRUE +?CCL14: ICALL TELL-I-ASSUME,PLAYER,STR?151 + ICALL PERFORM,V?SHOW,PLAYER,PRSO + RTRUE + + + .FUNCT V-SSHOW:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT PRE-SIT:ANY:0:0 + CALL1 ROOM-CHECK + RSTACK + + + .FUNCT V-SIT:ANY:0:1,LIE? + EQUAL? WINNER,PLAYER \?CCL3 + FSET? PRSO,VEHBIT /?CTR2 + EQUAL? PRSO,FLOOR,HERE,GLOBAL-HERE \?CCL3 +?CTR2: PRINTI "You're now " + ZERO? LIE? \?CCL11 + PRINTI "sitt" + JUMP ?CND9 +?CCL11: PRINTI "ly" +?CND9: FSET? PRSO,VEHBIT \?CND12 + MOVE PLAYER,PRSO +?CND12: PRINTI "ing " + FSET? PRSO,SURFACEBIT \?CCL16 + PRINTI "on" + JUMP ?CND14 +?CCL16: PRINTI "in" +?CND14: ICALL2 PRINT-THE,PRSO + PRINTR "." +?CCL3: CALL1 WONT-HELP + RSTACK + + + .FUNCT V-SIT-AT:ANY:0:0 + CALL1 V-SIT + RSTACK + + + .FUNCT V-SLAP:ANY:0:0 + EQUAL? PRSI,ROOMS \?CND1 + SET 'PRSI,FALSE-VALUE +?CND1: EQUAL? PRSO,PLAYER \?CCL5 + PRINTR "That sounds like a sign you could wear on your back." +?CCL5: FSET? PRSO,PERSONBIT /?CCL7 + CALL1 IF-SPY + RSTACK +?CCL7: FSET? PRSO,MUNGBIT \?CCL9 + PRINTI "If" + ICALL2 HE-SHE-IT,PRSO + PRINTI " could," + ICALL2 HE-SHE-IT,PRSO + PRINTR " would slap you right back." +?CCL9: CALL1 FACE-RED + RSTACK + + + .FUNCT IF-SPY:ANY:0:0 + ZERO? PRSI \?CCL3 + PRINTI "You give" + ICALL2 HIM-HER-IT,PRSO + PRINTI " a swift " + EQUAL? P-PRSA-WORD,W?KICK \?CCL6 + PRINTI "kick" + JUMP ?CND1 +?CCL6: PRINTI "hand chop" + JUMP ?CND1 +?CCL3: PRINTI "You swing" + ICALL2 HIM-HER-IT,PRSI + PRINTI " at" + ICALL2 HIM-HER-IT,PRSO +?CND1: PRINTI ", but" + ICALL2 HE-SHE-IT,PRSO + PRINTR " seems indestructible." + + + .FUNCT FACE-RED:ANY:0:1,P,X + ZERO? P \?CND1 + SET 'P,PRSO +?CND1: ICALL2 UNSNOOZE,P + EQUAL? FOLLOWER,P \?CND3 + SET 'FOLLOWER,FALSE-VALUE +?CND3: GETP P,P?LDESC + EQUAL? STACK,4 /?CND5 + PUTP P,P?LDESC,20 +?CND5: ICALL HE-SHE-IT,P,1 + PRINTR " gives you a good slap. It hurts, too!" + + + .FUNCT V-SMELL:ANY:0:0 + ICALL HE-SHE-IT,PRSO,1,STR?152 + PRINTI " just like " + ICALL2 PRINTA,PRSO + PRINTR "!" + + + .FUNCT V-SMILE:ANY:0:0 + PRINTR "How nice." + + + .FUNCT V-SORRY:ANY:0:0 + CALL2 GRAB-ATTENTION,PRSO + ZERO? STACK \?CCL3 + RETURN 2 +?CCL3: PUTP PRSO,P?LDESC,3 + PRINTR """Apology accepted.""" + + + .FUNCT V-STAND:ANY:0:0,P + LOC WINNER + FSET? STACK,VEHBIT \?CCL3 + LOC WINNER + ICALL PERFORM,V?DISEMBARK,STACK + RTRUE +?CCL3: IN? WINNER,HERE /?CCL5 + CALL1 OWN-FEET + RSTACK +?CCL5: ZERO? PRSO /?CCL8 + FSET? PRSO,TAKEBIT \?CCL8 + CALL1 WONT-HELP + RSTACK +?CCL8: CALL ALREADY,WINNER,STR?153 + RSTACK + + + .FUNCT V-STOP:ANY:0:0 + EQUAL? PRSO,FALSE-VALUE,GLOBAL-HERE \?CCL3 + PRINTR "Hey, no problem." +?CCL3: FSET? PRSO,PERSONBIT \?CCL5 + ICALL PERFORM,V?$CALL,PRSO + RTRUE +?CCL5: ICALL PERFORM,V?LAMP-OFF,PRSO + RTRUE + + + .FUNCT V-SWIM:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL HE-SHE-IT,WINNER,1 + PRINTI " can't swim " + ZERO? PRSO /?CCL3 + PRINTI "in" + ICALL2 HIM-HER-IT,PRSO + JUMP ?CND1 +?CCL3: CALL1 GROUND-DESC + PRINT STACK +?CND1: PRINTR ".)" + + + .FUNCT PRE-TAKE:ANY:0:0,L + EQUAL? PRSO,WALL,FLOOR \?CCL3 + CALL1 HAR-HAR + RSTACK +?CCL3: EQUAL? PRSO,YOU,HANDS /FALSE + LOC PRSO >L + EQUAL? L,GLOBAL-OBJECTS \?CCL7 + CALL2 NOT-HERE,PRSO + RSTACK +?CCL7: LOC WINNER + EQUAL? PRSO,STACK \?CCL9 + PRINTR "You are in it!" +?CCL9: ZERO? L /?CCL11 + FSET? L,CONTBIT \?CCL11 + FSET? L,OPENBIT /?CCL11 + ICALL TOO-BAD-BUT,L,STR?98 + RTRUE +?CCL11: ZERO? PRSI /?CCL16 + EQUAL? PRSI,WALL,L \?CCL19 + SET 'PRSI,FALSE-VALUE + RFALSE +?CCL19: FSET? PRSI,SURFACEBIT /?CCL21 + FSET? PRSI,OPENBIT /?CCL21 + FSET? PRSI,PERSONBIT /?CCL21 + ICALL TOO-BAD-BUT,PRSI,STR?98 + RTRUE +?CCL21: EQUAL? PRSI,L /FALSE + ICALL HE-SHE-IT,PRSO,1,STR?61 + PRINTI "n't " + FSET? PRSI,PERSONBIT \?CCL29 + PRINTI "being held by" + JUMP ?CND27 +?CCL29: FSET? PRSI,SURFACEBIT \?CCL32 + PRINTI "on" + JUMP ?CND27 +?CCL32: PRINTI "in" +?CND27: ICALL2 PRINT-THE,PRSI + PRINTR "." +?CCL16: CALL1 PRE-TAKE-WITH + RSTACK + + + .FUNCT PRE-TAKE-WITH:ANY:0:0,X + EQUAL? PRSO,YOU /FALSE + CALL2 META-LOC,PRSO + EQUAL? STACK,GLOBAL-OBJECTS \?CCL5 + CALL2 HELD?,PRSO + ZERO? STACK \FALSE + FSET? PRSO,PERSONBIT /FALSE + CALL2 NOT-HERE,PRSO + RSTACK +?CCL5: IN? PRSO,WINNER \?CCL12 + ICALL2 ALREADY,PLAYER + PRINTI "holding" + ICALL2 PRINT-THE,PRSO + PRINTR "!)" +?CCL12: LOC PRSO + FSET? STACK,CONTBIT \?CCL14 + LOC PRSO + FSET? STACK,OPENBIT /?CCL14 + CALL2 YOU-CANT,STR?154 + RSTACK +?CCL14: IN? WINNER,PRSO \FALSE + CALL NOUN-USED?,PRSO,W?DOOR + ZERO? STACK \FALSE + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " in" + ICALL2 HIM-HER-IT,PRSO + PRINTR ", nitwit!)" + + + .FUNCT V-TAKE:ANY:0:0 + CALL1 ITAKE + EQUAL? STACK,TRUE-VALUE \FALSE + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " now holding" + ICALL2 PRINT-THE,PRSO + PRINTR "." + + + .FUNCT V-TAKE-OFF:ANY:0:0 + FSET? PRSO,WORNBIT \?CCL3 + FCLEAR PRSO,WORNBIT + PRINTI "Okay," + LOC PRSO + ICALL HE-SHE-IT,STACK,0,STR?61 + PRINTI " no longer wearing" + MOVE PRSO,WINNER + ICALL2 HIM-HER-IT,PRSO + PRINTR "." +?CCL3: LOC PRSO + ICALL HE-SHE-IT,STACK,1,STR?61 + PRINTI "n't wearing" + ICALL2 HIM-HER-IT,PRSO + PRINTR "!" + + + .FUNCT V-TAKE-TO:ANY:0:0 + ICALL PERFORM,V?WALK-TO,PRSI + RTRUE + + + .FUNCT V-DISEMBARK:ANY:0:0 + CALL1 ROOM-CHECK + ZERO? STACK \TRUE + EQUAL? PRSO,GLOBAL-HERE,HERE,ROOMS \?CCL5 + EQUAL? WINNER,PLAYER \?CCL8 + IN? PLAYER,HERE /?CCL8 + CALL1 OWN-FEET + RSTACK +?CCL8: ICALL2 DO-WALK,P?OUT + RTRUE +?CCL5: LOC PRSO + EQUAL? STACK,WINNER \?CCL12 + PRINTI "You don't need to take" + ICALL2 HIM-HER-IT,PRSO + PRINTI " out to use" + ICALL2 HIM-HER-IT,PRSO + PRINTR "." +?CCL12: LOC WINNER + EQUAL? STACK,PRSO /?CCL14 + IN? PLAYER,PRSO /?CCL14 + PRINTI "You're not " + FSET? PRSO,SURFACEBIT \?CCL19 + PRINTI "on" + JUMP ?CND17 +?CCL19: PRINTI "in" +?CND17: ICALL2 HIM-HER-IT,PRSO + PRINTI "! +" + RETURN 2 +?CCL14: CALL1 OWN-FEET + RSTACK + + + .FUNCT OWN-FEET:ANY:0:0 + MOVE WINNER,HERE + ICALL HE-SHE-IT,WINNER,1,STR?61 + PRINTI " on" + ICALL HIM-HER-IT,WINNER,0,TRUE-VALUE + PRINTR " own feet again." + + + .FUNCT V-HOLD-UP:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + ICALL2 PERFORM,V?STAND + RTRUE +?CCL3: CALL1 WONT-HELP + RSTACK + + + .FUNCT V-TELL:ANY:0:0,P + EQUAL? PRSO,PLAYER \?CCL3 + EQUAL? WINNER,PLAYER /?CCL6 + SET 'P,WINNER + SET 'WINNER,PLAYER + ICALL PERFORM,V?ASK,P + RTRUE +?CCL6: ZERO? QCONTEXT /?CCL8 + SET 'QCONTEXT,FALSE-VALUE + ZERO? P-CONT /?CCL11 + SET 'WINNER,PLAYER + RETURN WINNER +?CCL11: PRINTR "Okay, you're not talking to anyone else." +?CCL8: ICALL2 WONT-HELP-TO-TALK-TO,PLAYER + SET 'P-CONT,FALSE-VALUE + RETURN 2 +?CCL3: FSET? PRSO,PERSONBIT \?CCL15 + FSET? PRSO,MUNGBIT /?CCL15 + ICALL2 UNSNOOZE,PRSO + SET 'QCONTEXT,PRSO + ZERO? P-CONT /?CCL20 + SET 'CLOCK-WAIT,TRUE-VALUE + SET 'WINNER,PRSO + RTRUE +?CCL20: PRINTI "Hmmm ..." + ICALL2 PRINT-THE,PRSO + PRINTR " looks at you expectantly, as if you seemed to be about to talk." +?CCL15: ICALL2 WONT-HELP-TO-TALK-TO,PRSO + SET 'P-CONT,FALSE-VALUE + RETURN 2 + + + .FUNCT PRE-STELL-ABOUT:ANY:0:0 + ICALL PERFORM,V?TELL-ABOUT,PRSI,PRSO + RTRUE + + + .FUNCT V-STELL-ABOUT:ANY:0:0 + CALL1 V-FOO + RSTACK + + + .FUNCT PRE-TELL-ABOUT:ANY:0:0,P + EQUAL? PRSO,PLAYER \?CCL3 + CALL1 QCONTEXT-GOOD? + ZERO? STACK /?CCL6 + ICALL PERFORM,V?ASK-ABOUT,QCONTEXT,PRSI + RTRUE +?CCL6: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P + ZERO? P /?CCL8 + ICALL TELL-I-ASSUME,P,STR?117 + ICALL PERFORM,V?ASK-ABOUT,P,PRSI + RTRUE +?CCL8: ICALL1 ARENT-TALKING + RTRUE +?CCL3: FSET? PRSI,SEENBIT /?CCL11 + FSET? PRSI,TOUCHBIT /?CCL11 + ICALL2 NOT-FOUND,PRSI + RTRUE +?CCL11: CALL1 PRE-ASK + RSTACK + + + .FUNCT V-TELL-ABOUT:ANY:0:0,P + PRINTI "It doesn't look as if" + ICALL2 PRINT-THE,PRSO + PRINTR " is interested." + + + .FUNCT PRE-TALK-ABOUT:ANY:0:0,P + EQUAL? WINNER,PLAYER /?CCL3 + SET 'P,WINNER + SET 'WINNER,PLAYER + ICALL PERFORM,V?ASK-ABOUT,P,PRSO + RTRUE +?CCL3: CALL1 QCONTEXT-GOOD? + ZERO? STACK /?CCL5 + ICALL PERFORM,V?ASK-ABOUT,QCONTEXT,PRSO + RTRUE +?CCL5: CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P + ZERO? P /FALSE + ICALL TELL-I-ASSUME,P,STR?155 + ICALL PERFORM,V?ASK-ABOUT,P,PRSO + RTRUE + + + .FUNCT V-TALK-ABOUT:ANY:0:0 + CALL1 ARENT-TALKING + RSTACK + + + .FUNCT V-THANK:ANY:0:0,P + ZERO? PRSO /?CCL3 + FSET? PRSO,PERSONBIT \?CCL6 + FSET? PRSO,MUNGBIT /?CCL6 + PRINTI "You do so, but" + ICALL2 PRINT-THE,PRSO + PRINTR " seems less than overjoyed." +?CCL6: CALL1 HAR-HAR + RSTACK +?CCL3: CALL1 QCONTEXT-GOOD? >P + ZERO? P \?CTR10 + CALL FIND-FLAG-HERE-NOT,PERSONBIT,MUNGBIT,WINNER >P + ZERO? P /?CCL11 +?CTR10: ICALL PERFORM,V?THANK,P + RTRUE +?CCL11: PRINTR "You're more than welcome." + + + .FUNCT V-THROW:ANY:0:0 + CALL1 IDROP + ZERO? STACK /FALSE + PRINTR "Thrown." + + + .FUNCT V-THROW-AT:ANY:0:0 + CALL1 IDROP + ZERO? STACK /TRUE + ICALL HE-SHE-IT,PRSI,1,STR?65 + PRINTI "n't duck" + PRINTI " as" + ICALL2 HE-SHE-IT,PRSO + PRINTR " flies by." + + + .FUNCT V-THROW-IN-TOWEL:ANY:0:0 + EQUAL? PRSO,TOWEL \?CCL3 + CALL1 V-QUIT + RSTACK +?CCL3: CALL1 DONT-UNDERSTAND + RSTACK + + + .FUNCT PRE-THROW-THROUGH:ANY:0:0 + FCLEAR PRSO,WORNBIT + RFALSE + + + .FUNCT V-THROW-THROUGH:ANY:0:0 + FSET? PRSO,PERSONBIT /?CCL3 + PRINTR "Let's not resort to vandalism, please." +?CCL3: CALL1 V-THROW + RSTACK + + + .FUNCT V-TURN:ANY:0:0 + FSET? PRSO,DOORBIT \?CCL3 + FSET? PRSO,OPENBIT \?CCL3 + ICALL PERFORM,V?CLOSE,PRSO + RTRUE +?CCL3: PRINTR "What do you want that to do?" + + + .FUNCT V-UNLOCK:ANY:0:0 + FSET? PRSO,DOORBIT /?CTR2 + FSET? PRSO,CONTBIT \?CCL3 + GETP PRSO,P?CAPACITY + ZERO? STACK /?CCL3 +?CTR2: FSET? PRSO,LOCKED /?CCL10 + CALL ALREADY,PRSO,STR?105 + RSTACK +?CCL10: CALL2 UNLOCK-DOOR?,PRSO + ZERO? STACK \?CCL12 + CALL1 YOU-CANT + RSTACK +?CCL12: FCLEAR PRSO,LOCKED + CALL OKAY,PRSO,STR?105 + RSTACK +?CCL3: SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + ICALL HE-SHE-IT,PRSO,1,STR?61 + PRINTR "n't locked!)" + + + .FUNCT V-USE:ANY:0:0 + CALL1 MORE-SPECIFIC + RSTACK + + + .FUNCT V-WAIT:ANY:0:3,NUM,WHO,INT,WHO-WAIT,VAL,HR,RESULT + ASSIGNED? 'NUM /?CND1 + SET 'NUM,-1 +?CND1: SET 'RESULT,TRUE-VALUE + EQUAL? -1,NUM \?CND3 + SET 'NUM,10 +?CND3: ZERO? INT \?CND5 + FSET? PRSO,PERSONBIT /?CND5 + EQUAL? PRSO,TURN,INTNUM /?CND5 + PRINT I-ASSUME + PRINTI " Wait " + PRINTN NUM + PRINTI " minute" + EQUAL? NUM,1 /?CND10 + PRINTC 115 +?CND10: PRINTI ".]" + CRLF +?CND5: SET 'HR,HERE + ZERO? INT \?CND12 + PRINTI "Time passes..." + CRLF +?CND12: DEC 'NUM +?PRG14: DLESS? 'NUM,0 \?CCL18 + SET 'KEEP-WAITING,FALSE-VALUE + RETURN RESULT +?CCL18: CALL1 CLOCKER >VAL + ZERO? VAL /?CCL20 + EQUAL? VAL,M-FATAL /?CTR22 + EQUAL? HR,HERE /?CCL23 +?CTR22: SET 'CLOCK-WAIT,TRUE-VALUE + SET 'RESULT,M-FATAL + RETURN RESULT +?CCL23: ZERO? WHO /?CCL27 + IN? WHO,HERE \?CCL27 + SET 'CLOCK-WAIT,TRUE-VALUE + ICALL2 NOT-IT,WHO + ICALL2 START-SENTENCE,WHO + PRINTI ", for wh" + FSET? WHO,PERSONBIT \?CCL32 + PRINTI "om" + JUMP ?CND30 +?CCL32: PRINTI "ich" +?CND30: PRINTI " you're waiting, has arrived." + CRLF + RETURN RESULT +?CCL27: INC 'WHO-WAIT + ZERO? KEEP-WAITING /?CND33 + ICALL1 UPDATE-STATUS-LINE + JUMP ?PRG14 +?CND33: PRINTI "Do you want to keep " + CALL2 VERB-PRINT,TRUE-VALUE >VAL + CALL1 YES? + ZERO? STACK /?CCL37 + ICALL1 UPDATE-STATUS-LINE + JUMP ?PRG14 +?CCL37: SET 'CLOCK-WAIT,TRUE-VALUE + SET 'RESULT,M-FATAL + RETURN RESULT +?CCL20: ZERO? WHO /?CCL39 + IGRTR? 'WHO-WAIT,30 \?CCL39 + CALL2 START-SENTENCE,WHO >VAL + PRINTI " still hasn't arrived. Do you want to keep waiting?" + CALL1 YES? + ZERO? STACK \?CND42 + RETURN RESULT +?CND42: SET 'WHO-WAIT,0 + ICALL1 UPDATE-STATUS-LINE + JUMP ?PRG14 +?CCL39: ICALL1 UPDATE-STATUS-LINE + JUMP ?PRG14 + + + .FUNCT V-WAIT-FOR:ANY:0:0,WHO + EQUAL? -1,P-NUMBER /?CCL3 + EQUAL? PRSO,INTNUM,TURN,ROOMS \?CCL3 + CALL2 V-WAIT,P-NUMBER + RSTACK +?CCL3: EQUAL? PRSO,GLOBAL-HERE,TURN,ROOMS \?CCL8 + CALL1 V-WAIT + RSTACK +?CCL8: EQUAL? PRSO,PLAYER \?CCL10 + CALL ALREADY,PLAYER,STR?124 + RSTACK +?CCL10: FSET? PRSO,PERSONBIT \?CCL12 + CALL2 META-LOC,PRSO + EQUAL? STACK,HERE \?CCL16 + CALL ALREADY,PRSO,STR?124 + RSTACK +?CCL16: CALL V-WAIT,10000,PRSO + RSTACK +?CCL12: PRINTR "Not a good idea. You might wait forever." + + + .FUNCT V-WAIT-UNTIL:ANY:0:0,N + EQUAL? -1,P-NUMBER /?CCL3 + EQUAL? PRSO,INTNUM,TURN,ROOMS \?CCL3 + SET 'N,P-NUMBER + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(It's already past that time!)" +?CCL3: CALL2 YOU-CANT,STR?156 + RSTACK + + + .FUNCT V-ALARM:ANY:0:0 + EQUAL? PRSO,ROOMS \?CCL3 + ICALL PERFORM,V?ALARM,WINNER + RTRUE +?CCL3: CALL TOO-BAD-BUT,PRSO,STR?157 + RSTACK + + + .FUNCT DO-WALK:ANY:1:1,DIR,P + SET 'P-WALK-DIR,DIR + CALL PERFORM,V?WALK,DIR + RSTACK + + + .FUNCT V-WALK:ANY:0:0,PT,PTS,STR,RM + ZERO? P-WALK-DIR \?CND1 + EQUAL? PRSO,P?IN \?CCL5 + IN? P-IT-OBJECT,ROOMS /?CTR4 + FSET? P-IT-OBJECT,VEHBIT /?CTR4 + FSET? P-IT-OBJECT,CONTBIT \?CCL5 +?CTR4: ICALL2 TELL-I-ASSUME,P-IT-OBJECT + ICALL PERFORM,V?THROUGH,P-IT-OBJECT + RTRUE +?CCL5: ICALL1 V-WALK-AROUND + RETURN 2 +?CND1: LOC WINNER + GETPT STACK,PRSO >PT + ZERO? PT /?CCL15 + PTSIZE PT >PTS + EQUAL? PTS,UEXIT \?CCL18 + GET PT,REXIT + CALL2 GOTO,STACK + ZERO? STACK /TRUE + ICALL1 OKAY + RTRUE +?CCL18: EQUAL? PTS,NEXIT \?CCL22 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 40 + GET PT,NEXITSTR + PRINT STACK + PRINTC 41 + CRLF + RETURN 2 +?CCL22: EQUAL? PTS,FEXIT \?CCL26 + GET PT,FEXITFCN + CALL STACK >RM + ZERO? RM /?PRG32 + CALL2 GOTO,RM + ZERO? STACK /TRUE + ICALL1 OKAY + RTRUE +?PRG32: RETURN 2 +?CCL26: EQUAL? PTS,CEXIT \?CCL35 + GETB PT,CEXITFLAG + VALUE STACK + ZERO? STACK /?CCL38 + GET PT,REXIT + CALL2 GOTO,STACK + ZERO? STACK /TRUE + ICALL1 OKAY + RTRUE +?CCL38: GET PT,CEXITSTR >STR + ZERO? STR /?CCL42 + PRINT STR + CRLF + RETURN 2 +?CCL42: ICALL2 YOU-CANT,STR?73 + RETURN 2 +?CCL35: EQUAL? PTS,DEXIT \FALSE + CALL2 WALK-THRU-DOOR?,PT + ZERO? STACK /?PRG54 + GET PT,REXIT + CALL2 GOTO,STACK + ZERO? STACK /TRUE + ICALL1 OKAY + RTRUE +?PRG54: RETURN 2 +?CCL15: EQUAL? PRSO,P?IN,P?OUT \?CCL57 + CALL1 V-WALK-AROUND + RSTACK +?CCL57: EQUAL? PRSO,P?UP \?CCL59 + ICALL PERFORM,V?CLIMB-UP,STAIRS + RTRUE +?CCL59: EQUAL? PRSO,P?DOWN \?CCL61 + ICALL PERFORM,V?CLIMB-DOWN,STAIRS + RTRUE +?CCL61: ICALL2 YOU-CANT,STR?73 + RETURN 2 + + + .FUNCT UNLOCK-DOOR?:ANY:1:1,DR + EQUAL? HERE,DR /TRUE + RTRUE + + + .FUNCT WALK-THRU-DOOR?:ANY:1:3,PT,OBJ,TELL?,RM + ASSIGNED? 'TELL? /?CND1 + SET 'TELL?,TRUE-VALUE +?CND1: ZERO? OBJ \?CND3 + GET PT,DEXITOBJ >OBJ +?CND3: FSET? OBJ,OPENBIT /TRUE + FSET? OBJ,SECRETBIT \?CCL9 + FSET? OBJ,TOUCHBIT /?CCL9 + EQUAL? FALSE-VALUE,TELL?,VERBOSITY /FALSE + FSET? HERE,SECRETBIT /?CCL16 + ICALL2 YOU-CANT,STR?73 + RFALSE +?CCL16: ZERO? LIT \?CCL18 + ICALL2 NOT-FOUND,OBJ + RFALSE +?CCL18: EQUAL? PRSA,V?WALK-TO /TRUE + ICALL2 OPEN-DOOR-AND-CLOSE-IT-AGAIN,OBJ + RTRUE +?CCL9: FSET? OBJ,LOCKED /?CCL22 + EQUAL? PRSA,V?WALK-TO /TRUE + FCLEAR OBJ,SECRETBIT + FSET OBJ,SEENBIT + EQUAL? FALSE-VALUE,TELL?,VERBOSITY /TRUE + ICALL2 OPEN-DOOR-AND-CLOSE-IT-AGAIN,OBJ + RTRUE +?CCL22: ZERO? PT /?CCL28 + GET PT,DEXITSTR >RM + ZERO? RM /?CCL28 + ZERO? TELL? /FALSE + PRINT RM + CRLF + RFALSE +?CCL28: ZERO? TELL? /FALSE + CALL2 UNLOCK-DOOR?,OBJ + ZERO? STACK /?CCL37 + EQUAL? PRSA,V?WALK-TO /TRUE + ZERO? VERBOSITY /TRUE + ICALL2 OPEN-DOOR-AND-CLOSE-IT-AGAIN,OBJ + RTRUE +?CCL37: ICALL TOO-BAD-BUT,OBJ,STR?104 + ICALL2 THIS-IS-IT,OBJ + RFALSE + + + .FUNCT OPEN-DOOR-AND-CLOSE-IT-AGAIN:ANY:1:1,OBJ + FSET OBJ,SEENBIT + EQUAL? WINNER,PLAYER \TRUE + PRINTI "(You " + FSET? OBJ,LOCKED \?CND3 + FCLEAR OBJ,LOCKED + PRINTI "unlock and " +?CND3: PRINTI "open the " + PRINTI "door" + FSET? OBJ,SECRETBIT \?CCL8 + FSET OBJ,OPENBIT + JUMP ?CND6 +?CCL8: PRINTI " and close it again" +?CND6: PRINTR ".)" + + + .FUNCT V-WALK-AROUND:ANY:0:0 + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTC 91 + PRINT WHICH-DIR + PRINTI "] +" + RETURN 2 + + + .FUNCT WHO-KNOWS?:ANY:1:1,OBJ + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTI "(You have no idea where" + ICALL2 PRINT-THE,PRSO + PRINTR " is.)" + + + .FUNCT WALK-WITHIN-ROOM:ANY:0:0 + CALL NO-NEED,STR?159,HERE + RSTACK + + + .FUNCT V-WALK-TO:ANY:0:0 + IN? PRSO,HERE /?CTR2 + CALL GLOBAL-IN?,PRSO,HERE + ZERO? STACK /?CCL3 +?CTR2: ICALL HE-SHE-IT,PRSO,1 + PRINTR "'s here!" +?CCL3: CALL1 V-WALK-AROUND + RSTACK + + + .FUNCT ENTER-ROOM:ANY:0:0,VAL + CALL1 LIT? >LIT + GETP HERE,P?ACTION + ICALL STACK,M-ENTER + CALL1 V-FIRST-LOOK >VAL + GETP HERE,P?ACTION + ICALL STACK,M-FLASH + RETURN VAL + + + .FUNCT V-RUN-OVER:ANY:0:0 + PRINTR "That doesn't make much sense." + + + .FUNCT V-YELL:ANY:0:0 + PRINTR "You begin to get a sore throat." + + + .FUNCT V-YES:ANY:0:1,NO?,PER + SET 'PER,WINNER + EQUAL? PER,PLAYER \?CTR2 + CALL1 QCONTEXT-GOOD? >PER + ZERO? PER /?CCL3 +?CTR2: GETP PER,P?ACTION + CALL D-APPLY,STR?160,STACK,M-WINNER + ZERO? STACK \TRUE + SET 'CLOCK-WAIT,TRUE-VALUE + PRINTR "(That was just a rhetorical question.)" +?CCL3: PRINTI "You sound rather " + ZERO? NO? /?CCL10 + PRINTI "neg" + JUMP ?CND8 +?CCL10: PRINTI "pos" +?CND8: PRINTR "ative." + + + .FUNCT V-NO:ANY:0:0 + CALL2 V-YES,TRUE-VALUE + RSTACK + + + .FUNCT JIGS-UP:ANY:0:1,DESC + ASSIGNED? 'DESC \?CND1 + PRINT DESC +?CND1: PRINTI " + + **** You have died **** + +" + CALL1 FINISH + RSTACK + + + .FUNCT FINISH:ANY:0:2,REPEATING,VAL + ZERO? P-DBUG \TRUE + CRLF + CRLF + ZERO? REPEATING \?CND3 + ICALL1 V-SCORE + CRLF +?CND3: PRINTI "Would you like to: +" + ZERO? P-CAN-UNDO /?CND5 + PRINTI " UNDO your last action, +" +?CND5: PRINTI " RESTORE your place from where you saved it, + RESTART the story from the beginning, or + QUIT for now?" + CRLF +?PRG7: PRINTC 62 + PUTB P-INBUF,1,0 + READ P-INBUF,P-LEXV + GET P-LEXV,P-LEXSTART >VAL + ZERO? VAL /?CND9 + GET VAL,3 >VAL + ZERO? VAL /?CND9 + GET VAL,0 >VAL + GRTR? 0,VAL /?CND9 + ZERO? P-CAN-UNDO /?CCL16 + EQUAL? VAL,ACT?UNDO \?CCL16 + ICALL1 V-UNDO + ICALL2 FINISH,TRUE-VALUE + JUMP ?CND9 +?CCL16: EQUAL? VAL,ACT?RESTART \?CCL20 + RESTART + ICALL2 FINISH,TRUE-VALUE + JUMP ?CND9 +?CCL20: EQUAL? VAL,ACT?RESTORE \?CCL22 + CALL1 V-RESTORE + ZERO? STACK \TRUE + ICALL2 FINISH,TRUE-VALUE + JUMP ?CND9 +?CCL22: EQUAL? VAL,ACT?QUIT \?CND9 + QUIT +?CND9: PRINTI "[Type " + ZERO? P-CAN-UNDO /?CND26 + PRINTI "UNDO, " +?CND26: PRINTI "RESTORE, RESTART, or QUIT.] " + JUMP ?PRG7 + + + .FUNCT V-UNDO:ANY:0:0 + ZERO? P-CAN-UNDO /FALSE + SET 'OLD-HERE,FALSE-VALUE + IRESTORE + ZERO? STACK \?CCL6 + PRINTR "[UNDO failed.]" +?CCL6: PRINTR "[UNDO is not available.]" + + + .FUNCT REMOTE-VERB?:ANY:0:0 + EQUAL? PRSA,V?WALK-TO /TRUE + EQUAL? PRSA,V?WAIT-UNTIL,V?WAIT-FOR,V?TELL-ABOUT /TRUE + EQUAL? PRSA,V?TALK-ABOUT,V?TAKE-TO,V?SSHOW /TRUE + EQUAL? PRSA,V?SHOW,V?SEARCH-FOR,V?SEARCH /TRUE + EQUAL? PRSA,V?LOOK-UP,V?LEAVE,V?FOLLOW /TRUE + EQUAL? PRSA,V?FIND,V?DISEMBARK,V?ASK-FOR /TRUE + EQUAL? PRSA,V?ASK-CONTEXT-FOR,V?ASK-CONTEXT-ABOUT,V?ASK-ABOUT /TRUE + RFALSE + + .ENDI diff --git a/verbs.zil b/verbs.zil new file mode 100644 index 0000000..a71b623 --- /dev/null +++ b/verbs.zil @@ -0,0 +1,3397 @@ +"VERBS for MILLIWAYS +Copyright (C) 1988 Infocom, Inc. All rights reserved." + +> + + 1>> + + + > + + + + -2>> + > + + + > + + > + + > + + + + > + ) + (T )>) + (T + + ) + (T )>)>> + +%> + >> + + + )> + > + + ) + (T )>)>> + +> + + +> + > + ) + (>> + >>>> + ,G-DEBUG> + + )> + >>> + + + > + +> + ) + (T + > + )>> + + ;"all READS and INPUTS get sent to command file" + > + + + > +]> + +"ZORK game commands" + +"SUBTITLE SETTINGS FOR VARIOUS LEVELS OF DESCRIPTION" + + "0=SUPERB 1=BRIEF 2=VERBOS" + +> + + + > + + + > + + + + + > + + + + )> + + > ;"was PRINT-CONT" + )> + + + > + + ) + (T )>> + + + )> + + ) + (T )>> + + + + + + ) + (T )>> + +> + + + + > + + 4>> + )> + + + ) + (T + + > + )> + )>> + +> + + )>> + + + > + )>)>> + + *3777*> " / Serial number "> + + > + + + + + ) + (T + )> + + ,SCORE> + +) (OBJ <>)) + + + ) (T )> + + ) + ( + ) + (T )> + > + +) (WHILE <>) (STR1 <>)) + + + + ) + (T )> + + ) + (T + + ) + ( + > + ) + (T )> + + ) + (T )> + ) + ;(T )>)> + > + +;)) + + + + + + )> + > + +" " + +"SUBTITLE - GENERALLY USEFUL ROUTINES & CONSTANTS" + + + ) + ;( + >> + )>> + +> + +)) + > + > + + ;"was semied" + > + )> + ) + (T + )>> + > + + > + >)>) + (T + > + + >) + (T + ) + (T )>)> + + + + + + ) + (T + )>>)> + + .VAL> + +) + "AUX" OBJ NXT STR (VAL <>) (HE 0) (SHE 0) + (FIRST T) (TWO? <>) (IT? <>) (ANY? <>)) + + )> + + + )> + ;"Hide invisible objects" + > + + )> + > + + + + + ;"not desc'd" + ;>> + >> + + )> + ) + (T + )>> + + ;"Describe people in proper order:" + + + )>> + + + ) + (> ,HERE> + + ,M-OBJDESC>> + + + > + )> + + ) + (T )>) + (T + ) + (T )>)> + )>> + + + ) + (>> + ; + + > + + + + ) + (T )> + !\. CR> + ) + (<==? .OBJ > + + > + >)>>)>> + > + ) + ( + >)> + > + ) + ( + >)> + + ; "Apply all DESCFCNs and hide those objects" + > + > + > + + > + + > + )> + + + ; + )> + ) + (T + )>> + ;"Apply all FDESCs and eliminate those objects" + > + >> + > + > + + )> + + + + + )> + ) + (T + )>> + ;"Apply all LDESC's and eliminate those objects" + > + > + > + + )> + + + + + )> + ) + (T + )>>)> + ;"Print whatever's left in a nice sentence" + > + > + > + + > + ; + + + + ) + ;( + > + ) + (T )>)>) + (T + ) + (T )>)> + + + + + + + > + )> + + > + ) + (T + + >)> + ) + (T + > + )> + + )> + + )> + )>>)> + > + + )> + + ) + (T + )> + + + + + + >> + )> + + + .ANY? ;.VAL> + +)) + > + > + > + >> + + )> + >) + (T + )>> + > + +) "AUX" V? STR L) + ) + (<==? 2 ,VERBOSITY> ) + (<==? 0 ,VERBOSITY> >) + (> + )> + + + + ) + (T + + > + )> + + ) + (T ;> + )> + )> + )> + + + ; + ) + (> + ;<1? ,LIT> ;> + )> + > ,VEHBIT> + + ) + (T )> + + + )> + ,M-LOOK>> + T) + (>> + ) + (>> + ) + (T ,M-FLASH>)> + ;> + ,M-LOOK>)>)> + ; + )> + + + T> + +"Lengths:" + +> + "Uncondl EXIT: (dir TO rm) = rm" +> + "Non EXIT: (dir ;SORRY string) = str-ing" +> + "Fcnl EXIT: (dir PER rtn) = rou-tine, 0" +> + "Condl EXIT: (dir TO rm IF f) = rm, f, str-ing" +> + "Door EXIT: (dir TO rm IF dr IS OPEN)= rm, dr, str-ing, 0" + + + +> "GET/B" + "GET" + "GET/B" +> "GET" + + + CR>> + +> + + + CR>> + +> + +; + > + + + CR>> + +> + + 1>> + > + > + >> + > + > + %> + )>> + > + > + + > + )> + + .MSG> + +>>> + +> + ,WINNER>>> + + )>> + + + + )> + ,M-LEAVE> + ) + (<==? ,WINNER ,PLAYER> + > + )>) + ;( + + ) + ;( + + ) + ;( + <>> + )> + + <==? ,WINNER ,PLAYER>> + > + + .X>> + )>)>)> + .RM> + + + + + + + ) + (T )>> + + + )> + + >)> + > + + ) + ( + + ) + (<==? .NNUM > + )>)> + >>> + + + +; .PER>> + + )> + > + +> + ) + ( + ) + (T + + + + > + )>> + +> + +) P D) + ) + ( ) + ( ) + ( )> + + > ,LOW-DIRECTION> + ) + (> + > + ) + (T )>)>>> + +>> + )> + > + + <==? .THERE>> + )>> + + CR>> + +> + +) "AUX" L) + )> + > + ) + ( ) + ( + + ) + ;( + ) + ;( + >> + ) + (T )>) + ( ) + (T )>>> + + + + ) + ( + ) + (> + ,OPENBIT>>> + "closed"> + ) + (T + "> + + + + )>> + +;> + + + +;> + + + )> + > + > + > + >> + )> + ) + (T )>)> + > + )> + ) + (> ,FUMBLE-NUMBER> + > + >> + + ". " He+verb ,WINNER "is" +" carrying too many things.|"> + ; + + ) + (T + + + + + + + ; )> + ;> + > + > + + ;>> + + ; )>)> + )>> + +> + > + >)> + >> + )>>)> + .CNT> + + + + ) + (T + + > )> + )> + > + + + + ) + ( + + ) + (> + > + + > ,HERE>>> + + + > + + + ) + (T )>) + (T )>) + (> + ) + (T )>) + ( + + ,HERE ,GLOBAL-OBJECTS ,LOCAL-GLOBALS>> + ) + (> + )>> + +)) + ) ;"for LIT? - PLAYER" + ( ) + ( ) + (.ONLY-IN ) + ( )>> + + + > + +)) + + + ;"confusing in secret passage" + ) + (T )> + ) + (T )> + + )> + > + +> + > + > + +) (STR <>)) + + + )>) + (T )> + + + )> + ) + (<=? .STR "off"> ) + (<=? .STR "open"> ) + (<=? .STR "closed"> ) + (<=? .STR "locked"> ) + (<=? .STR "unlocked"> )>)> + > + > + + )> + )> + + >>> + + )> + > + +) (STR <>)) + + )> + + + )> + )> + > + +> + +" ,WINNER ,HERE ,GLOBAL-OBJECTS> ) + ( ) + (T )>>" + + ) + ( )> + ; + )> + > + + )>> + + ) + (T >)> + + ) + ( + + ) + (T + )>) + ;( + ,HERE> + ) + (T + )>) + ( + ) + ( + ) + ;( + >>) + ( + >) + ( ,HERE>> + ) + ( + ) + ( + + > + ) + (T + )>> + + + +> + +> + +> + > + "." CR>> + +"SUBTITLE REAL VERBS" + + + > + +> + +;> +> + + > +> + + + ) + ( ;> + + ) + ;( + ,HERE>>> + + )>> + + + + ) + ( ) + ;( ) + ( ) + (T ;)>> + + + ,W?YES> + ) + (T ; ,W?NO> + )>) + (T + ;)> + > + ;> + > + +> + ;> + + >> + ) + (T )>> + +> + + + + >> + + ) + (T )>> + + + ) + ;( + > + >) + ( ,HERE>> + >> + + ) + ( + ; + > + ;> + > + + ) + (> + + )>) + (> + )>> + +;> + +) "AUX" N GT ATT) + + 14 ;"asleep"> + + ) + (T + + )>)> + + 21 ;"searching">> + )> + > + +; + + + + )> + ) + (T )> + > + + + >> + + + ) + (T + )> + ) + (T + + )>> + + + > + + )> + + + ) + (> + + + )>> + +> + +> + +> ,PERSONBIT> + + ) + (T )>> + +> + +> + +; + + > + + + )>)> + > + > + ) + (> + ) + (T + + ) (T )> + )>> + + + >> + + )>> + +; + +; + + + + ) + (T + + + )>) + (> + ) + (> + ) + (T + )>> + +; + + ) + (T + )>> + + + + + + ) + (T + + + )>) + (> + ) + (> + ) + (T + )>> + +;> + +> + +;) "AUX" OLIT) + + + + )> + > + > + )> + T> + +)) + + + ,HERE> + + ; + + + ) + (T ;"listening to you" "." CR>)>) + (T + ; + )>) + ;( + + ) + (T + )>) + (T )>) + (T )>> + +) + "AUX" RM GT (C )) + + )> + + > + > + + > + )>)> + + )>> + +> + )> + + > + + > + ) + ( + + + ) + (T + + + + ) + (T )> + + ; ,M-ENTER> + )>) + (T )>> + + + > + +) "AUX" X) + ;"GO UP TO room" + + ) + ( + + ) + ( + ) + (ELSE )>> + +> + + + + >> + ) + ( + > + + + ) + (T + )>) + (T )>) + (> + >>> + + ) + (T )>) + (T )>> + +> + +; + ,ROOMS> + + + + ) + (T )>) + (T + + )>)>> + +;> + + ) + (T )>> + + + > + +> + + + ,HERE> + >> + + + ) + (T + >)>)>> + +> + "on the floor") + (T "on the ground")>> + + ,ROOMS> + ,HERE> + ; + + ) + (T + + )>)>> + +> + + + ) + (T )>> + + + > + + ) + (T + )> + ) + ;( ;"DRIVE CAR THRU object" + + ;,HERE ,CAR> + + ) + (T + + )>) + (T )>)>> + + + ; + + ,PRSO <>>>> + >> + >> + )>) + ( + + ) + (> + ) + (T )> + ) + ( + ;> + ) + ( + ) + (> + + + ) + ( + + ) + (ELSE )>> + +> + +)) + + + >> + )> + + + ) + ( + ) + ;( + CR>) + ( + + ) + ( ; + > + ) + ( ,HERE>> + > + > + ) + (> + ) + ( + ) + ( + + ;> + ) + (T )>> + +> + + + ) + (> + 2>>)>> + + + > + + + ;> + + + ) + ( + >> + ) + ( + + ) + (T + + )>) + ( + ;>> + > + >> + + ) + (> + + )> + )>> + +> + +> + ) + ( + ) + ( + >> + ) + ;(> + )> + + >> + > + >> + ;T> ;>>)> + > + +)) + + ) + ( + ) + ;( + ;<==? ,PRSO ,ARTIFACT>> + ) + ( + > + + + + ) + ( + + ) + (T )>) + (> + > + ; + >> + ) + ( + ;> + ) + (> + ) + ( + + > + + + ) (T )> + ) + (T + )>> + + + > + + + + )> + > + )> + ; T) + ( ) + (T )> + + ) + (T + )> + > + +> + +; + > + + ,LANDED>> + ) + (T + )>> + +> + > + + + ) + (T )> + + + .L)>> + + + ) + (> + >> + ) + (<==? ,HERE > + ) + ;(> + ;> + ) + (T + + )>> + +> + +> + ) + ;( + + ;"only 1 since FOOTNOTE isn't move" + ) + ( ;"not referenced" + + + ) + ( + ) + ( + ) + (T + )>> + +; + ;"only 1 since FOOTNOTE isn't move" + > + +> + > + +> + +> + > + )>> + +; + )>> + + + ) + (> + ) + ;( + ) + ( + + ) + (T + ) + ;(T + + + )>> + +> + > + > + + > + +> + + + +> + >> + + + + + )>> + +)) + + ) + ;( + )> + > + > + ;>> + + ) + ( + + ) + ( + + )> + ; + > + ) + (T )>) + ( + + ; + )> + + + ) + ( + >> + + ; + )> + + + ) + (T )>> + + ; + > + ) + (T )>) + (T )>> + + ,PLAYER> + ) + (T )>> + +; + + > + + + > + +> + +; + > + +> + + + +)) + + + ) + ( + + + + ) + (T ; + )> + ) + (> + ) + (T )>> + + + +;> + + + ) + ( + >> + ) + (T )>> + + + ;> + + ) + ;(> + >> + + + + + + ) + (T )>) + (T + )>> + +> + ) + (> + ) + (T + )>> + + + ) + ( + ) + ( + ) + (T )>> + +>> + + ) + ;( + + ) + (T )>> + + ,VEHBIT> + ) + (T )>> + +> + + ) + (<==? 2 .X> + ) + (<==? 3 .X> + ) + (<==? 4 .X> + ) + (T )>> + + + )> + ,ROOMS ,HERE> + + + ) + ( ,PLAYER ;,POCKET> + + ) + (<==? ,PRSO> + + ) + (T + + )>> + +> + +> + + + 14 ;"asleep">> + + ) + (T )>> + + + >> + + ) + (T + )>> + + + + ) + (T )>) + (T )>> + + + + ;)>> + + >> + ) + (T )>> + + + + ) + (T + + )>> + +> + + + + + + )>) + (T + ,CONTBIT> + > + ,HERE> + >> + + + )>)>)> + + + ) + ( ; + > + + > + ;>> + ) + ( ) ;"SWG swapped this & next 5/21/86" + ( + > + > + )> + + + + ; + ) + (T )> + + ) + ( + + + ;> + )> + ) + (T )>) + (<==? .DIR ,P?IN> ) + (T ;<==? .DIR ,P?OUT> )>> + + + + + + + )> + + )>)> + > + +) "AUX" RM) + + + + ;> + > + ) + (T )>) + ;( + + ) + (T + )>) + ( + > + ) + (T )>) + ( + ) + (.INSIDE ) + ( + ) + (T )>> + +> + +) "AUX" (X <>) OHERE OLIT TXT) + + + ) + (> + + + + + > + + ) (T )> + + ) + (> + + )> + ; )> + + )> + + + )>> + +)"AUX" P L TBL O) + ; + )> + + >> + > + )> + )> + > + > + + .THERE> + )>) + (<==? .L ,DEXIT> + .THERE> + ,OPENBIT> + ) + ( <> + ;.TELL?> + ) + ( + ) + (T + + )> + )>)>) + (<==? .L ,CEXIT> + .THERE> + > + ) + (T + )> + )>)>)>>> + + + > + + + ) + (T )>> + +> + +> + + + ) + ( + + + ) + (T )> + ) + ( + ) + ( ,HERE ,LOCAL-GLOBALS ;,GLOBAL-OBJECTS> + ) + (T + )>> + + + ) + ( + + + ) + (T + + )>) + (T )>> + + + )>> + + + ) + (T )>> + +> + + )>> + +> + + > + + ) + ( + ) + (T )>) + (> + ) + (T )>> + +> + ) + ( + + ) + (T + + )>> + + + + >> + ;) + ( + + 0>>> + + + + ) + (T )>)> + + ) + ;( + ) + (T + + + + > + > + ) + (> + > + >> + + ) + (T + + + )>)>) + (T )>> + +> + +; > + + + > + +> + +> + +> + + + > + + )> + + + + ) + ( + + ) + ( ;POCKET> + ) + ( + > + + ) + ( + )>> + + + + + ) + (> + >> + > + )> + )> + > + +)) + + )> + > + + ,W?FRONT> + + ) + ( + >) + ;( + + ) + ( + + ) + ( + + ) + (> + + )> + > + + ;)> + > + +> + >> + + > + ) + (T )> + )> + > + + + + ) + (<==? ,PRSI ,PRSO> + ) + ( + + "on") (T "in")> + him ,PRSI "!" CR>) + ;(> + >> + ) + ( > + ;<- * > + > + + ) + (> + >> + ) + (T + + + + > + )> + )>> + +"WEIGHT: Get sum of SIZEs of supplied object," ;" recursing to the nth level." + +> + + > + >) + ;"worn things shouldn't count" + ;( + ,WORNBIT>> + >) + ;"things in worn things shouldn't count" + (T + >>)> + >> )>>)> + .WT ;<+ .WT >> + +> + + > +> + + ) + ( + )>> + +> ) + (ELSE CR>)>> + + + > + +> + + + + + + ) + (T + + )>> + +> + + + > + >> + ) + (T )>> + + + + ) + (> + + + ) + (T + )>> + +> + + + + + ;) + ( + >> + + + + + + + ; + )> + ) + ;(> + ;> + ) + ( + ) + ( + > + + ) + (T + ;)>> + + + + > +> + + ) + ;( + ; + ,PRSI>>> + )> + ; + + )> + > + + + + + ;) + ( + + ) + (T + + + ) + ( + ) + (T +