aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhistoricalsource <historicalsoftware@textfiles.com>2019-04-14 16:52:12 -0400
committerhistoricalsource <historicalsoftware@textfiles.com>2019-04-14 16:52:12 -0400
commitc8784aa058f078454ff5668c310267e211effffd (patch)
tree040f91289d457cc22f9b7224e8f4d307d8dd4bbb
parent7451ee2c6071e2cff48e7529ede4aef7f794313e (diff)
downloadrestaurant-c8784aa058f078454ff5668c310267e211effffd.tar.gz
restaurant-c8784aa058f078454ff5668c310267e211effffd.tar.bz2
restaurant-c8784aa058f078454ff5668c310267e211effffd.zip
Final Revision
-rw-r--r--README20
-rw-r--r--breds.zabstr58
-rw-r--r--breds.zap573
-rw-r--r--defs.zil44
-rw-r--r--find.zabstr65
-rw-r--r--find.zap597
-rw-r--r--global.zabstr79
-rw-r--r--global.zap247
-rw-r--r--global.zil457
-rw-r--r--gram.mac1
-rw-r--r--h2.chart295
-rw-r--r--h2.errors46
-rw-r--r--h2.lowcore2
-rw-r--r--h2.record357
-rw-r--r--h2.segbin0 -> 171 bytes
-rw-r--r--h2.seginfo2915
-rw-r--r--h2.serial1
-rw-r--r--h2.symsbin0 -> 174668 bytes
-rw-r--r--h2.zap58
-rw-r--r--h2.zil43
-rw-r--r--h2.zipbin0 -> 79152 bytes
-rw-r--r--h2dat.zap12215
-rw-r--r--h2freq.xzap200
-rw-r--r--h2pur.zap285
-rw-r--r--h2str.zap258
-rw-r--r--macros.zap24
-rw-r--r--macros.zil75
-rw-r--r--magrathea.zabstr103
-rw-r--r--magrathea.zap50
-rw-r--r--magrathea.zil251
-rw-r--r--misc.zabstr51
-rw-r--r--misc.zap403
-rw-r--r--misc.zil371
-rw-r--r--parser.zabstr231
-rw-r--r--parser.zap1563
-rw-r--r--pass101bin0 -> 130881 bytes
-rw-r--r--pass33bin0 -> 42546 bytes
-rw-r--r--people.zabstr68
-rw-r--r--people.zap549
-rw-r--r--people.zil662
-rw-r--r--places.zabstr29
-rw-r--r--places.zap156
-rw-r--r--places.zil391
-rw-r--r--pmem.zabstr92
-rw-r--r--pmem.zap45
-rw-r--r--prare.zabstr73
-rw-r--r--prare.zap1036
-rw-r--r--pstack.zabstr45
-rw-r--r--pstack.zap18
-rw-r--r--qverbs.zabstr83
-rw-r--r--qverbs.zap671
-rw-r--r--reds.zabstr91
-rw-r--r--reds.zap1678
-rw-r--r--state.1901
-rw-r--r--state.2901
-rw-r--r--state.3901
-rw-r--r--state.4901
-rw-r--r--states.mac1
-rw-r--r--states.txt901
-rw-r--r--syntax.zil705
-rw-r--r--things.zabstr73
-rw-r--r--things.zap254
-rw-r--r--things.zil542
-rw-r--r--top.zabstr85
-rw-r--r--top.zap448
-rw-r--r--verbs.zabstr302
-rw-r--r--verbs.zap3756
-rw-r--r--verbs.zil3397
68 files changed, 41693 insertions, 0 deletions
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 <H2> 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 @@
+<FLAGS-AND-DEFAULTS (("ONE-BYTE-PARTS-OF-SPEECH" %<>)("IN-ZILCH" T)(
+"WORD-FLAGS-IN-TABLE" T)) ()>
+
+<ZZPACKAGE "REDS">
+<ENTRY RED-BE-FORM RED-BE RED-NOT RED-SNBN RED-SNBA RED-SNBP RED-SNBAP
+RED-CANDO>
+<INCLUDE "BASEDEFS" "FIND" "PBITDEFS" "PDEFS">
+<USE "NEWSTRUC" "PARSER" "PMEM" "PSTACK">
+<FILE-FLAGS MDL-ZIL?>
+<BEGIN-SEGMENT 0>
+<NEW-ADD-WORD "AM" TOBE <> <ORB ,FIRST-PERSON ,PRESENT-TENSE>>
+<NEW-ADD-WORD "ARE" TOBE <> <ORB ,FIRST-PERSON ,SECOND-PERSON ,THIRD-PERSON ,
+PRESENT-TENSE ,PLURAL-FLAG>>
+<NEW-ADD-WORD "IS" TOBE <> <ORB ,THIRD-PERSON ,PRESENT-TENSE>>
+<NEW-ADD-WORD "WAS" TOBE <> <ORB ,FIRST-PERSON ,THIRD-PERSON ,PAST-TENSE>>
+<NEW-ADD-WORD "WERE" TOBE <> <ORB ,FIRST-PERSON ,SECOND-PERSON ,THIRD-PERSON ,
+PAST-TENSE ,PLURAL-FLAG>>
+<NEW-ADD-WORD "WILL" TOBE <> ,FUTURE-TENSE>
+<NEW-ADD-WORD "SHALL" TOBE <> ,FUTURE-TENSE>
+<ADD-WORD "HOW" QWORD>
+<ADD-WORD "WHAT" QWORD>
+<ADD-WORD "WHEN" QWORD>
+<ADD-WORD "WHERE" QWORD>
+<ADD-WORD "WHO" QWORD>
+<ADD-WORD "WHY" QWORD>
+<DEFINE-ROUTINE RED-BE-FORM>
+<DEFINE-ROUTINE EXCH-4-5-Q>
+<DEFINE-ROUTINE RED-SBNN>
+<DEFINE-ROUTINE RED-SNBN>
+<DEFINE-ROUTINE DETERMINE-SUBJ>
+<DEFINE-ROUTINE RED-SBNA>
+<DEFINE-ROUTINE RED-SNBA>
+<OBJECT INTADJ (LOC GLOBAL-OBJECTS) (DESC "adjective") (SYNONYM L.G)>
+<DEFINE-ROUTINE RED-SBNP>
+<DEFINE-ROUTINE RED-SNBP>
+<DEFINE-ROUTINE RED-SNBAP>
+<DEFINE-ROUTINE P-PP-OBJ>
+<DEFINE-ROUTINE P-PP-PREP>
+<OBJECT INTPP (LOC GLOBAL-OBJECTS) (DESC "prep phrase") (SYNONYM L.G)>
+<DEFINE-ROUTINE RED-SQBN>
+<DEFINE-ROUTINE RED-BE>
+<DEFINE-ROUTINE RED-NOT>
+<NEW-ADD-WORD "CAN" CANDO <>>
+<NEW-ADD-WORD "COULD" CANDO <>>
+<NEW-ADD-WORD "DO" CANDO <>>
+<NEW-ADD-WORD "DOES" CANDO <VOC "DO"> <ORB ,THIRD-PERSON>>
+<NEW-ADD-WORD "DID" CANDO <VOC "DO"> ,PAST-TENSE>
+<NEW-ADD-WORD "MAY" CANDO <>>
+<NEW-ADD-WORD "MIGHT" CANDO <>>
+<NEW-ADD-WORD "WILL" CANDO <>>
+<NEW-ADD-WORD "SHALL" CANDO <VOC "WILL"> ,FUTURE-TENSE>
+<NEW-ADD-WORD "WOULD" CANDO <>>
+<NEW-ADD-WORD "SHOULD" CANDO <>>
+<NEW-ADD-WORD "MUST" CANDO <>>
+<DEFINE-ROUTINE RED-CANDO>
+<DEFINE-ROUTINE INSERT-WHAT>
+<END-SEGMENT>
+<ENDPACKAGE> \ 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."
+
+<ADD-TELL-TOKENS A * <PRINTA .X>>
+
+<REPLACE-DEFINITION ADJ-USED? T>
+<DELAY-DEFINITION CAPITAL-NOUN?>
+<REPLACE-DEFINITION DIR-VERB-PRSI?
+ <ROUTINE DIR-VERB-PRSI? (NP) <>>>
+<REPLACE-DEFINITION NO-M-WINNER-VERB?
+ <ROUTINE NO-M-WINNER-VERB? () <>>>
+<REPLACE-DEFINITION OWNERS
+ <CONSTANT OWNERS <TABLE (PURE LENGTH) PLAYER FORD>>>
+<REPLACE-DEFINITION PLURAL <CONSTANT PLURAL PLURALBIT>>
+<REPLACE-DEFINITION PRINT-INTQUOTE T>
+<DELAY-DEFINITION PRSO-VERB?>
+<DELAY-DEFINITION PRSI-VERB?>
+<DELAY-DEFINITION SEE-VERB?>
+<REPLACE-DEFINITION SETUP-ORPHAN T>
+<DELAY-DEFINITION SPEAKING-VERB?>
+
+<COMPILATION-FLAG P-PS-COMMA T>
+<COMPILATION-FLAG P-PS-APOSTR T>
+<COMPILATION-FLAG P-PS-OFWORD T>
+<COMPILATION-FLAG P-PS-THEWORD T>
+<COMPILATION-FLAG P-PS-QUOTE T>
+
+<INCLUDE "SYMBOLS">
+<TERMINALS (VERB 6) (NOUN 4) (ADJ 5)
+ ADV QUANT MISCWORD
+ (DIR 1) TOBE QWORD CANDO COMMA
+ (PARTICLE 3) (PREP 2) ASKWORD ;PRONOUN
+ APOSTR OFWORD ARTICLE
+ QUOTE>
+
+<DIRECTIONS NORTH NE EAST SE SOUTH SW WEST NW UP DOWN IN OUT>
+
+<OBJECT INTDIR
+ (LOC GLOBAL-OBJECTS)
+ (DESC "direction")
+ (SYNONYM NORTH NE EAST SE SOUTH SW WEST NW)>
+
+<DEFMAC PROB ('BASE?)
+ <FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
diff --git a/find.zabstr b/find.zabstr
new file mode 100644
index 0000000..7596fbb
--- /dev/null
+++ b/find.zabstr
@@ -0,0 +1,65 @@
+<FLAGS-AND-DEFAULTS (("ONE-BYTE-PARTS-OF-SPEECH" %<>)("WORD-FLAGS-IN-TABLE" T)(
+"IN-ZILCH" T)) ()>
+
+<ZZSECTION "FIND">
+<INCLUDE "BASEDEFS" "PDEFS" "PBITDEFS">
+<USE "NEWSTRUC" "PARSER" "PMEM">
+<BLOCK (<ROOT>)>
+THINGS
+<ENDBLOCK>
+<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
+<DEFAULTS-DEFINED EXCLUDE-HERE-OBJECT? INVALID-OBJECT? MOBY-FIND?
+LAST-PSEUDO-LOC PSEUDO-OBJECTS SEARCH-IN-LG?>
+<BEGIN-SEGMENT 0>
+<PUT-DECL BOOLEAN '<OR ATOM FALSE>>
+<DEFMAC FD-FLAG (WHICH 'VAL "OPT" 'NEW) <COND (<ASSIGNED? NEW> <COND (<OR <
+TYPE? .NEW ATOM FALSE> <AND <TYPE? .NEW FORM> <EMPTY? .NEW>>> <COND (<TYPE? .
+NEW ATOM> <FORM ORB ,.WHICH .VAL>) (T <FORM ANDB .VAL <XORB ,.WHICH -1>>)>) (<
+TYPE? .VAL FIX LVAL GVAL> <FORM COND (.NEW <FORM ORB .VAL ,.WHICH>) (T <FORM
+ANDB .VAL <XORB ,.WHICH -1>>)>) (T <FORM BIND ((FLAG .VAL)) <FORM COND (.NEW <
+FORM ORB ,.WHICH '.FLAG>) (T <FORM ANDB '.FLAG <XORB ,.WHICH -1>>)>>)>) (T <
+FORM NOT <FORM 0? <FORM ANDB .VAL ,.WHICH>>>)>>
+<CONSTANT FIND-FLAGS-GWIM 1>
+<DEFMAC FIND-GWIM? ('F) <FORM NOT <FORM 0? <FORM ANDB <FORM FIND-FLAGS .F> ,
+FIND-FLAGS-GWIM>>>>
+<CONSTANT FINDER <MAKE-FINDER>>
+<GLOBAL P-NOT-HERE:NUMBER 0>
+<DEFINE-ROUTINE FIND-DESCENDANTS>
+<DEFINE-ROUTINE EXCLUDED?>
+<DEFAULT-DEFINITION INVALID-OBJECT? <ROUTINE INVALID-OBJECT?>>
+<DEFINE-ROUTINE MATCH-OBJECT>
+<CONSTANT SYN-FIND-PROP 256>
+<DEFINE-ROUTINE TEST-OBJECT>
+<DEFINE-ROUTINE ADD-OBJECT>
+<DEFINE-ROUTINE NOT-IN-FIND-RES?>
+<DEFINE-ROUTINE EVERYWHERE-VERB?>
+<DEFINE-ROUTINE MULTIPLE-EXCEPTION?>
+<ADD-WORD OPEN ADJ>
+<ADD-WORD CLOSED ADJ>
+<ADD-WORD SHUT ADJ>
+<DEFINE-ROUTINE CHECK-ADJS-THERE?>
+<DEFINE-ROUTINE CHECK-ADJS>
+<OBJECT GENERIC-OBJECTS (ADJACENT 0)>
+<DEFAULT-DEFINITION MOBY-FIND? <DEFMAC MOBY-FIND? ('SEARCH) <FORM OR <FORM AND
+<FORM BAND .SEARCH ',SEARCH-MOBY> <FORM 0? <FORM BAND .SEARCH ',
+SEARCH-MUST-HAVE>>> <FORM BAND ',PAST-TENSE <FORM WORD-FLAGS <FORM PARSE-VERB '
+,PARSE-RESULT>>>>>>
+<DEFAULT-DEFINITION SEARCH-IN-LG? <ROUTINE SEARCH-IN-LG?>>
+<DEFAULT-DEFINITION EXCLUDE-HERE-OBJECT? <ROUTINE EXCLUDE-HERE-OBJECT?>>
+<DEFINE-ROUTINE FIND-OBJECTS>
+<DEFAULT-DEFINITION PSEUDO-OBJECTS <PUTPROP THINGS PROPSPEC HACK-PSEUDOS> <
+DEFINE20 HACK-PSEUDOS (LIST "AUX" (N 0) (CT 0)) <SET LIST <REST .LIST>> <SET
+LIST <MAPR ,LIST <FUNCTION (X "AUX" L (ACT 0) (NCT 0)) <COND (<0? .N> <SET CT <
++ .CT 1>> <SET N 1> <COND (<TYPE? <1 .X> ATOM> <SET ACT 1>) (<TYPE? <1 .X> LIST
+> <SET ACT <LENGTH <1 .X>>>) (T <SET ACT 0>)> <COND (<LENGTH? .X 1>) (<TYPE? <2
+.X> ATOM> <SET NCT 1>) (<TYPE? <2 .X> LIST> <SET NCT <LENGTH <2 .X>>>) (T <SET
+NCT 0>)> <TABLE (PURE) <BYTE .ACT> <BYTE .NCT> <COND (<0? .ACT> 0) (<==? .ACT 1
+> <VOC <SPNAME <1 .X>> ADJ>) (T <EVAL <CHTYPE (TABLE (PURE) !<MAPF ,LIST <
+FUNCTION (Y) <VOC <SPNAME .Y> ADJ>> <1 .X>!>) FORM>>)> <COND (<0? .NCT> 0) (<
+==? .NCT 1> <VOC <SPNAME <2 .X>> NOUN>) (T <EVAL <CHTYPE (TABLE (PURE) !<MAPF ,
+LIST <FUNCTION (Y) <VOC <SPNAME .Y> NOUN>> <2 .X>!>) FORM>>)>>) (<1? .N> <SET N
+2> <MAPRET>) (T <SET N 0> <1 .X>)>> .LIST>> (<> <EVAL <CHTYPE (TABLE (PURE) .CT
+!.LIST) FORM>>)> <ROUTINE TEST-THINGS> <GLOBAL LAST-PSEUDO-LOC:OBJECT <>> <
+OBJECT PSEUDO-OBJECT (LOC LOCAL-GLOBALS) (DESC "pseudoxxx") (ACTION 0)>>
+<END-SEGMENT>
+<END-DEFINITIONS> \ 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 @@
+
+<OBJECT GLOBAL-OBJECTS (DESC "GO") (GENERIC 0) (GLOBAL STAIRS) (OWNER 0) (TEXT
+0) (FLAGS CONTBIT DEAD DOORBIT FEMALEBIT INVISIBLE LIGHTBIT LOCKED MUNGBIT
+NARTICLEBIT NDESCBIT ONBIT OPENABLE OPENBIT PLURAL READBIT RMUNGBIT SEARCHBIT
+SECRETBIT SEENBIT SURFACEBIT TAKEBIT TOOLBIT TOUCHBIT TRANSBIT TRYTAKEBIT
+VEHBIT VOWELBIT WEAPONBIT WEARBIT WORNBIT)>
+<OBJECT LOCAL-GLOBALS (LOC GLOBAL-OBJECTS) (DESC "LG") (SYNONYM L.G) (FLAGS
+NARTICLEBIT) (ACTION LOCAL-GLOBALS-F)>
+<DEFINE-ROUTINE LOCAL-GLOBALS-F>
+<OBJECT FRUSTATION (LOC GLOBAL-OBJECTS) (DESC "puzzle") (SYNONYM FRUSTRATION
+PROBLEM PUZZLE) (ACTION FRUSTRATION-F)>
+<DEFINE-ROUTINE FRUSTRATION-F>
+<OBJECT STAIRS (LOC LOCAL-GLOBALS) (DESC "stairs") (SYNONYM STAIRS STAIRWAY
+STAIR) (FLAGS SEENBIT)>
+<DEFINE-ROUTINE DO-INSTEAD-OF>
+<OBJECT TURN (LOC GLOBAL-OBJECTS) (ADJECTIVE INT.NUM FULL) (SYNONYM TURN TURNS
+MINUTE MINUTES) (DESC "turn") (ACTION TURN-F)>
+<DEFINE-ROUTINE TURN-F>
+<OBJECT IT (LOC GLOBAL-OBJECTS) (SYNONYM IT THIS FUCKER SUCKER) (DESC "it") (
+FLAGS VOWELBIT NARTICLEBIT) (ACTION IT-F)>
+<DEFINE-ROUTINE IT-F>
+<OBJECT FLOOR (LOC GLOBAL-OBJECTS) (DESC "floor") (SYNONYM FLOOR GROUND CARPET
+RUG) (FLAGS SEENBIT SURFACEBIT OPENBIT) (ACTION FLOOR-F)>
+<DEFINE-ROUTINE FLOOR-F>
+<DEFINE-ROUTINE START-SEARCH>
+<GLOBAL FOUND-IT:OBJECT <>>
+<GLOBAL FOUND-LOC:OBJECT <>>
+<CONSTANT NOTHING-NEW "You don't find anything new there.|">
+<DEFINE-ROUTINE I-FOUND-IT>
+<OBJECT DANGER (LOC GLOBAL-OBJECTS) (DESC "danger") (SYNONYM DANGER THREAT
+ATTACK)>
+<OBJECT INTNUM (LOC GLOBAL-OBJECTS) (SYNONYM INT.NUM) (DESC "number")>
+<OBJECT YOU (LOC GLOBAL-OBJECTS) (SYNONYM YOU YOURSELF HIMSELF HERSELF) (DESC
+"self") (FLAGS) (ACTION YOU-F)>
+<DEFINE-ROUTINE YOU-F>
+<OBJECT WALL (LOC GLOBAL-OBJECTS) (DESC "wall") (ADJECTIVE BRICK NORTH SOUTH) (
+SYNONYM WALL WALLS BRICK BRICKS) (FLAGS SEENBIT SURFACEBIT OPENBIT) (ACTION
+WALL-F)>
+<DEFINE-ROUTINE WALL-F>
+<OBJECT GLOBAL-HERE (LOC GLOBAL-OBJECTS) (DESC "here") (ADJECTIVE THIS) (
+SYNONYM HERE AREA ROOM PLACE) (FLAGS NARTICLEBIT) (ACTION GLOBAL-HERE-F)>
+<DEFINE-ROUTINE GLOBAL-HERE-F>
+<OBJECT CHAIR (LOC LOCAL-GLOBALS) (DESC "chair") (SYNONYM CHAIR SEAT CHAIRS
+BENCH) (FLAGS SEENBIT SURFACEBIT) (ACTION CHAIR-F)>
+<DEFINE-ROUTINE CHAIR-F>
+<OBJECT TABLE-RANDOM (LOC LOCAL-GLOBALS) (DESC "table") (SYNONYM TABLE DESK) (
+FLAGS SEENBIT) (ACTION RANDOM-PSEUDO)>
+<OBJECT SLEEP-GLOBAL (LOC GLOBAL-OBJECTS) (SYNONYM SLEEP) (DESC "sleep") (FLAGS
+NARTICLEBIT) (ACTION SLEEP-GLOBAL-F)>
+<DEFINE-ROUTINE SLEEP-GLOBAL-F>
+<DEFINE-ROUTINE ROB>
+<OBJECT LIGHT-GLOBAL (LOC GLOBAL-OBJECTS) (DESC "light") (ADJECTIVE FLOOD MOON)
+(SYNONYM LIGHT LIGHTS LAMP MOONLIGHT) (FLAGS SEENBIT TRYTAKEBIT) (ACTION
+LIGHT-GLOBAL-F)>
+<DEFINE-ROUTINE LIGHT-GLOBAL-F>
+<ADJ-SYNONYM MY MINE YOUR>
+<OBJECT HANDS (LOC GLOBAL-OBJECTS) (SYNONYM HANDS HAND) (ADJECTIVE BARE) (OWNER
+BODY-PARTS-OWNERS) (DESC "hand") (FLAGS NDESCBIT TOUCHBIT NARTICLEBIT) (ACTION
+HANDS-F)>
+<DEFINE-ROUTINE HANDS-F>
+<OBJECT HEAD (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "head") (
+SYNONYM HEAD FACE) (FLAGS NARTICLEBIT) (ACTION HEAD-F)>
+<DEFINE-ROUTINE HEAD-F>
+<OBJECT EYES (LOC GLOBAL-OBJECTS) (OWNER BODY-PARTS-OWNERS) (DESC "eyes") (
+SYNONYM EYE EYES) (FLAGS NARTICLEBIT) (ACTION EYES-F)>
+<DEFINE-ROUTINE EYES-F>
+<OBJECT TEETH (LOC GLOBAL-OBJECTS) (DESC "teeth") (SYNONYM TEETH) (FLAGS
+NARTICLEBIT)>
+<OBJECT EARS (LOC GLOBAL-OBJECTS) (DESC "ears") (SYNONYM EAR EARS) (FLAGS
+NARTICLEBIT)>
+<OBJECT THIRD-PLANET (LOC GLOBAL-OBJECTS) (DESC "third planet") (ADJECTIVE
+THIRD BLUE BLUE-GREEN GREEN SMALL) (SYNONYM PLANET EARTH) (FLAGS NDESCBIT) (
+ACTION THIRD-PLANET-F)>
+<DEFINE-ROUTINE THIRD-PLANET-F>
+<OBJECT OBJECT-OF-GAME (LOC GLOBAL-OBJECTS) (DESC "object of the game") (
+SYNONYM OBJECT GAME GOAL) (FLAGS VOWELBIT) (ACTION OBJECT-OF-GAME-F)>
+<DEFINE-ROUTINE OBJECT-OF-GAME-F>
+<OBJECT SKY (LOC GLOBAL-OBJECTS) (DESC "sky") (SYNONYM SKY) (ACTION SKY-F)>
+<DEFINE-ROUTINE SKY-F> \ 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."
+
+<OBJECT GLOBAL-OBJECTS
+ (DESC "GO")
+ ;(FDESC 0)
+ (GENERIC 0)
+ (GLOBAL STAIRS)
+ (OWNER 0)
+ (TEXT 0)
+ (FLAGS CONTBIT DEAD DOORBIT FEMALEBIT
+ INVISIBLE LIGHTBIT LOCKED MUNGBIT
+ NARTICLEBIT NDESCBIT ONBIT OPENABLE OPENBIT
+ ;PERSONBIT PLURAL READBIT RMUNGBIT
+ SEARCHBIT SECRETBIT SEENBIT SURFACEBIT
+ TAKEBIT TOOLBIT TOUCHBIT TRANSBIT TRYTAKEBIT
+ VEHBIT VOWELBIT WEAPONBIT WEARBIT WORNBIT)>
+
+<OBJECT LOCAL-GLOBALS
+ (LOC GLOBAL-OBJECTS)
+ (DESC "LG")
+ (SYNONYM L.G)
+ (FLAGS NARTICLEBIT)
+ (ACTION LOCAL-GLOBALS-F)>
+
+<ROUTINE LOCAL-GLOBALS-F ()
+ <COND (<REMOTE-VERB?>
+ <RFALSE>)
+ (T <NOT-HERE ,LOCAL-GLOBALS>)>>
+
+<OBJECT FRUSTATION
+ (LOC GLOBAL-OBJECTS)
+ (DESC "puzzle")
+ (SYNONYM FRUSTRATION PROBLEM PUZZLE)
+ (ACTION FRUSTRATION-F)>
+
+<ROUTINE FRUSTRATION-F ()
+ <COND (<VERB? ENJOY>
+ <TELL ,ZEN CR>)>>
+
+<OBJECT STAIRS
+ (LOC LOCAL-GLOBALS)
+ (DESC "stairs")
+ (SYNONYM STAIRS STAIRWAY STAIR)
+ ;(GENERIC GENERIC-STAIRS)
+ (FLAGS SEENBIT)
+ ;(ACTION UPSTAIRS-DOWNSTAIRS)>
+
+<ROUTINE DO-INSTEAD-OF (OBJ1 OBJ2)
+ <COND (<EQUAL? ,PRSI .OBJ2> <PERFORM ,PRSA ,PRSO .OBJ1> <RTRUE>)
+ (<EQUAL? ,PRSO .OBJ2> <PERFORM ,PRSA .OBJ1 ,PRSI> <RTRUE>)
+ ;(T <PERFORM ,PRSA ,PRSO ,PRSI> <RTRUE>)
+ (T <V-FOO>)>>
+
+<OBJECT TURN
+ (LOC GLOBAL-OBJECTS)
+ (ADJECTIVE INT.NUM ;NUMBER FULL)
+ (SYNONYM TURN TURNS MINUTE MINUTES)
+ (DESC "turn" ;"minute")
+ (ACTION TURN-F)>
+
+<ROUTINE TURN-F ()
+ <COND (<VERB? USE>
+ <PERFORM ,V?WAIT-FOR ,PRSO>
+ <RTRUE>)>>
+
+<OBJECT IT
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM IT THIS FUCKER SUCKER)
+ (DESC "it")
+ (FLAGS VOWELBIT NARTICLEBIT)
+ (ACTION IT-F)>
+
+<ROUTINE IT-F ()
+ <COND (<OR <AND <IOBJ? IT>
+ ;<FSET? ,PRSO ,PERSONBIT>
+ <VERB? ASK-ABOUT ASK-FOR SEARCH-FOR TELL-ABOUT>>
+ <AND <DOBJ? IT>
+ <VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR FIND ;WHAT>>>
+ <TELL "\"I'm not sure what you're talking about.\"" CR>)>>
+
+<OBJECT FLOOR
+ (LOC GLOBAL-OBJECTS)
+ (DESC "floor")
+ ;(ADJECTIVE DRAWING ;ROOM GREAT ;HALL)
+ (SYNONYM FLOOR ;AREA GROUND CARPET RUG)
+ (FLAGS SEENBIT SURFACEBIT OPENBIT)
+ (ACTION FLOOR-F)>
+
+<ROUTINE FLOOR-F ("AUX" (OBJ <>) N)
+ <COND ;(<REMOTE-VERB?> <RFALSE>)
+ (<VERB? CLIMB-ON>
+ <ALREADY ,WINNER "on it">)
+ (<AND <VERB? PUT THROW-AT>
+ ;<NOT <DOBJ? MOONMIST>>
+ <IOBJ? FLOOR>>
+ <MOVE ,PRSO ,HERE>
+ <TELL "Okay." CR>
+ <RTRUE>)
+ (<VERB? EXAMINE LOOK-ON SEARCH SEARCH-FOR>
+ <START-SEARCH .OBJ>
+ <RTRUE>)>>
+
+<ROUTINE START-SEARCH ("OPTIONAL" (OBJ <>))
+ <TELL
+"Nothing suspicious meets your eye after a moment's scrutiny. Do you want
+to continue?">
+ <COND (<NOT <YES?>>
+ <OKAY>
+ <RTRUE>)
+ (T
+ <SETG FOUND-IT .OBJ>
+ <SETG FOUND-LOC ,HERE>
+ <QUEUE I-FOUND-IT <RANDOM 7>>
+ <V-WAIT 8 <> T>
+ <RTRUE>)>>
+
+<GLOBAL FOUND-IT:OBJECT <>>
+<GLOBAL FOUND-LOC:OBJECT <>>
+
+<CONSTANT NOTHING-NEW "You don't find anything new there.|">
+
+<ROUTINE I-FOUND-IT ("OPTIONAL" (GARG <>) "AUX" OBJ)
+ %<DEBUG-CODE <COND (<OR ,IDEBUG <==? .GARG ,G-DEBUG>>
+ <TELL "[I-FOUND-IT:">
+ <COND (<==? .GARG ,G-DEBUG> <RFALSE>)>)>>
+ <COND (<NOT <EQUAL? ,FOUND-LOC ,HERE>>
+ <RFALSE>)
+ (T ;<ZERO? ,FOUND-IT>
+ <TELL ,NOTHING-NEW>
+ <RFATAL>)>>
+
+<OBJECT DANGER
+ (LOC GLOBAL-OBJECTS)
+ (DESC "danger")
+ (SYNONYM DANGER THREAT ATTACK)>
+
+<OBJECT INTNUM
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM INT.NUM ;NUMBER)
+ (DESC "number")>
+
+<OBJECT YOU
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM YOU YOURSELF HIMSELF HERSELF)
+ (DESC "self" ;"himself or herself")
+ (FLAGS ;NARTICLEBIT)
+ (ACTION YOU-F)>
+
+<ROUTINE YOU-F ("AUX" X)
+ <COND (<NOT <==? ,WINNER ,PLAYER>>
+ <DO-INSTEAD-OF ,WINNER ,YOU>
+ <RTRUE>)
+ (<AND <VERB? ASK-ABOUT> <IOBJ? YOU>>
+ <PERFORM ,V?ASK-ABOUT ,PRSO ,PRSO>
+ <RTRUE>)
+ (<AND <VERB? THANK>
+ <SET X <QCONTEXT-GOOD?>>>
+ <PERFORM ,V?THANK .X>
+ <RTRUE>)>>
+
+;<OBJECT HINT
+ (DESC "hint")
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM HINT HELP)
+ (ACTION HINT-F)>
+
+;<ROUTINE HINT-F ()
+ <COND (<VERB? FIND>
+ <HELP-TEXT>)
+ (<VERB? ASK-FOR ASK-CONTEXT-FOR TAKE>
+ <MORE-SPECIFIC>)>>
+
+<OBJECT WALL
+ (LOC GLOBAL-OBJECTS)
+ (DESC "wall")
+ (ADJECTIVE BRICK NORTH SOUTH)
+ (SYNONYM WALL WALLS BRICK BRICKS)
+ (FLAGS SEENBIT SURFACEBIT OPENBIT)
+ (ACTION WALL-F)>
+
+<ROUTINE WALL-F ("AUX" OBJ)
+ <COND (<AND <VERB? OPEN CLOSE>
+ <T? <SET OBJ <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>>>>
+ <DO-INSTEAD-OF .OBJ ,WALL>
+ <RTRUE>)
+ (<VERB? KNOCK>
+ <COND (<OR <NOT <FSET? ,HERE ,WEARBIT> ;"WING-ROOMS">
+ <FIND-FLAG-LG ,HERE ,DOORBIT ,SECRETBIT>>
+ <TELL "You hear a hollow sound." CR>)
+ (T <TELL
+"Knocking on the walls reveals nothing unusual." CR>)>)>>
+
+;<ROUTINE GENERIC-ROOM (X "OPTIONAL" Y) ,GLOBAL-HERE>
+
+<OBJECT GLOBAL-HERE
+ (LOC GLOBAL-OBJECTS)
+ (DESC "here")
+ (ADJECTIVE THIS)
+ (SYNONYM HERE AREA ROOM PLACE)
+ ;(GENERIC GENERIC-ROOM)
+ (FLAGS NARTICLEBIT)
+ (ACTION GLOBAL-HERE-F)>
+
+<ROUTINE GLOBAL-HERE-F ("AUX" OBJ (X <>))
+ <COND (<VERB? EXAMINE LIE SIT SMELL WALK-TO>
+ <DO-INSTEAD-OF ,HERE ,GLOBAL-HERE>
+ <RTRUE>)
+ (<VERB? PUT PUT-IN ;TIE-TO>
+ <MORE-SPECIFIC>)
+ (<VERB? SEARCH SEARCH-FOR>
+ <COND (<AND <T? ,PRSI>
+ <==? <META-LOC ,PRSI> ,HERE>>
+ <SET X ,PRSI>)
+ (T
+ <SET OBJ <FIRST? ,HERE>>
+ <REPEAT ()
+ <COND (<ZERO? .OBJ>
+ <RETURN>)
+ (<FSET? .OBJ ,SECRETBIT>
+ <SET X .OBJ>
+ <RETURN>)
+ (<AND <NOT <FSET? .OBJ ,PERSONBIT>>
+ <OR <FSET? .OBJ ,CONTBIT>
+ <FSET? .OBJ ,SURFACEBIT>>
+ <OR <SET X <FIND-IN .OBJ ,SECRETBIT>>
+ <SET X <FIND-IN .OBJ ,RMUNGBIT>>>>
+ <FSET .OBJ ,OPENBIT>
+ <RETURN>)
+ (T <SET OBJ <NEXT? .OBJ>>)>>)>
+ <START-SEARCH .X>
+ <RTRUE>)>>
+
+<OBJECT CHAIR
+ (LOC LOCAL-GLOBALS)
+ (DESC "chair")
+ ;(ADJECTIVE WING)
+ (SYNONYM CHAIR SEAT CHAIRS BENCH)
+ (FLAGS SEENBIT SURFACEBIT ;VEHBIT)
+ (ACTION CHAIR-F)>
+
+<ROUTINE CHAIR-F ()
+ <COND (<VERB? SIT ;LOOK-UNDER CLIMB-ON ;CLIMB-DOWN BOARD>
+ <WONT-HELP>)
+ (T <RANDOM-PSEUDO>)>>
+
+<OBJECT TABLE-RANDOM
+ (LOC LOCAL-GLOBALS)
+ (DESC "table")
+ ;(ADJECTIVE BILLIARD CARD)
+ (SYNONYM TABLE DESK)
+ (FLAGS SEENBIT)
+ (ACTION RANDOM-PSEUDO)>
+
+<OBJECT SLEEP-GLOBAL
+ (LOC GLOBAL-OBJECTS)
+ ;(ADJECTIVE ;SOME MY)
+ (SYNONYM SLEEP)
+ (DESC "sleep")
+ (FLAGS NARTICLEBIT)
+ (ACTION SLEEP-GLOBAL-F)>
+
+<ROUTINE SLEEP-GLOBAL-F ()
+ <COND (<VERB? WALK-TO>
+ <PERFORM ,V?FAINT>
+ <RTRUE>)>>
+
+<ROUTINE ROB (WHAT THIEF "OPTIONAL" (TELL? <>) "AUX" N X (TOLD? <>))
+ <SET X <FIRST? .WHAT>>
+ <REPEAT ()
+ <COND (<NOT .X> <RETURN>)>
+ <SET N <NEXT? .X>>
+ ;<COND (<NOT <FSET? .X ,TAKEBIT>>
+ <SET X .N>
+ <AGAIN>)>
+ <COND (<AND <NOT .N> .TOLD? .TELL?>
+ <TELL " and">)>
+ <SET TOLD? T>
+ <COND (.TELL?
+ <TELL the .X>
+ <COND (.N <TELL !\,>)
+ (T <TELL ". ">)>)>
+ <MOVE .X .THIEF>
+ ;<FCLEAR .X ,TAKEBIT>
+ <SET X .N>>>
+
+<OBJECT LIGHT-GLOBAL
+ (LOC GLOBAL-OBJECTS)
+ (DESC "light")
+ (ADJECTIVE FLOOD MOON)
+ (SYNONYM LIGHT LIGHTS LAMP MOONLIGHT)
+ (FLAGS SEENBIT TRYTAKEBIT)
+ (ACTION LIGHT-GLOBAL-F)>
+
+<ROUTINE LIGHT-GLOBAL-F ("AUX" P)
+ <COND (<REMOTE-VERB?> <RFALSE>)
+ (<VERB? LAMP-ON LAMP-OFF>
+ <COND (<AND <OUTSIDE? ,HERE> ;<NOT <EQUAL? ,HERE ,CAR>>>
+ <TELL "You can't reach it from here." CR>)
+ (<VERB? LAMP-ON>
+ <COND (<FSET? ,HERE ,ONBIT>
+ <ALREADY ,LIGHT-GLOBAL "on">)
+ (T
+ <FSET ,HERE ,ONBIT>
+ <OKAY ,LIGHT-GLOBAL "on">)>)
+ (<VERB? LAMP-OFF>
+ <COND (<NOT <FSET? ,HERE ,ONBIT>>
+ <ALREADY ,LIGHT-GLOBAL "off">)
+ (<SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,MUNGBIT ,PLAYER>>
+ <TELL
+D .P " says, \"Please don't leave us in the dark.\"" CR>)
+ (T
+ <FCLEAR ,HERE ,ONBIT>
+ <OKAY ,LIGHT-GLOBAL "off">)>)>)>>
+
+<ADJ-SYNONYM MY MINE YOUR>
+
+<OBJECT HANDS
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM HANDS HAND)
+ (ADJECTIVE BARE ;MY)
+ (OWNER BODY-PARTS-OWNERS)
+ (DESC ;"your " "hand")
+ (FLAGS NDESCBIT TOUCHBIT NARTICLEBIT)
+ (ACTION HANDS-F)>
+
+<ROUTINE HANDS-F (ACTOR)
+ <COND ;(<VERB? WAVE>
+ <PERFORM ,V?WAVE-AT>
+ <RTRUE>)
+ (<VERB? SHAKE>
+ <COND (<SET ACTOR <FIND-IN ,HERE ,PERSONBIT>>
+ <PERFORM ,V?THANK .ACTOR>
+ <RTRUE>)
+ (T
+ <TELL "Pleased to meet you." CR>)>)>>
+
+;<ROUTINE HANDS-F ("AUX" P A)
+ <COND (<NOT <SET P <FIND-BODY ,HANDS>>>
+ <RTRUE>)
+ (<REMOTE-VERB?>
+ <RFALSE>)>
+ <COND ;(<EQUAL? .P ,PLAYER>
+ <COND (<VERB? BRUSH>
+ <RFALSE>)>)
+ (<VERB? KISS>
+ <COND (<AND <FSET? .P ,FEMALEBIT>
+ <T? ,GENDER-KNOWN>
+ <NOT <FSET? ,PLAYER ,FEMALEBIT>>>
+ <PERFORM ,V?HELLO .P>)
+ (T
+ <PERFORM ,V?KISS .P>)>
+ <RTRUE>)
+ (<AND <VERB? SHAKE TAKE> <DOBJ? HANDS>>
+ <COND (<T? ,PRSI> ;<ZERO? .P>
+ <SET P ,PRSI>)>
+ ;<COND (<ZERO? .P>
+ <COND ;(<ADJ-USED? ,W?HER>
+ <SET P <FIND-FLAG-HERE-BOTH ,PERSONBIT,FEMALEBIT,WINNER>>
+ <COND (<ZERO? .P>
+ <TELL "There's no woman here!" CR>
+ <RTRUE>)>)
+ ;(<ADJ-USED? ,W?HIS>
+ <SET P <FIND-FLAG-HERE-NOT ,PERSONBIT ,FEMALEBIT,WINNER>>
+ <COND (<ZERO? .P>
+ <TELL "There's no man here!" CR>
+ <RTRUE>)>)
+ (T
+ <SET P <FIND-FLAG-HERE ,PERSONBIT ,WINNER>>
+ <COND (<ZERO? .P>
+ <TELL "There's no one here!" CR>
+ <RTRUE>)>)>)>
+ <PERFORM ,V?HELLO .P>
+ <RTRUE>)>>
+
+<OBJECT HEAD
+ (LOC GLOBAL-OBJECTS)
+ (OWNER BODY-PARTS-OWNERS)
+ (DESC ;"your " "head")
+ (SYNONYM HEAD FACE)
+ (FLAGS NARTICLEBIT)
+ (ACTION HEAD-F)>
+
+<ROUTINE HEAD-F ()
+ <COND (<VERB? NOD>
+ <PERFORM ,V?YES>
+ <RTRUE>)
+ (<VERB? SHAKE>
+ <PERFORM ,V?NO>
+ <RTRUE>)>>
+
+<OBJECT EYES
+ (LOC GLOBAL-OBJECTS)
+ (OWNER BODY-PARTS-OWNERS)
+ (DESC ;"your " "eyes")
+ (SYNONYM EYE EYES)
+ (FLAGS NARTICLEBIT)
+ (ACTION EYES-F)>
+
+<ROUTINE EYES-F ()
+ <COND (<VERB? OPEN>
+ <TELL "They are." CR>)
+ (<VERB? CLOSE>
+ <TELL "That won't help." CR>)>>
+
+<OBJECT TEETH
+ (LOC GLOBAL-OBJECTS)
+ (DESC ;"your " "teeth")
+ (SYNONYM TEETH)
+ (FLAGS NARTICLEBIT)>
+
+<OBJECT EARS
+ (LOC GLOBAL-OBJECTS)
+ (DESC ;"your " "ears")
+ (SYNONYM EAR EARS)
+ (FLAGS NARTICLEBIT)>
+
+<OBJECT THIRD-PLANET
+ (LOC GLOBAL-OBJECTS)
+ (DESC "third planet")
+ (ADJECTIVE THIRD BLUE BLUE-GREEN GREEN SMALL)
+ (SYNONYM PLANET EARTH)
+ (FLAGS NDESCBIT)
+ (ACTION THIRD-PLANET-F)>
+
+<ROUTINE THIRD-PLANET-F ()
+ <COND (<VERB? LEAVE DISEMBARK>
+ <TELL "You did!" CR>)
+ (<VERB? EXAMINE>
+ <TELL
+"It is an utterly insignificant little blue-green planet, of the sort
+where they probably still wear digital watches." CR>)>>
+
+<OBJECT OBJECT-OF-GAME
+ (LOC GLOBAL-OBJECTS)
+ (DESC "object of the game")
+ (SYNONYM OBJECT GAME GOAL)
+ (FLAGS VOWELBIT)
+ (ACTION OBJECT-OF-GAME-F)>
+
+<ROUTINE OBJECT-OF-GAME-F ()
+ <COND (<VERB? ASK-ABOUT TALK-ABOUT TELL-ABOUT>
+ <TELL "That's for me to know and you to find out." CR>)>>
+
+<OBJECT SKY
+ (LOC GLOBAL-OBJECTS)
+ (DESC "sky")
+ (SYNONYM SKY)
+ (ACTION SKY-F)>
+
+<ROUTINE SKY-F ()
+ <COND (<NOT <OUTSIDE? ,HERE>>
+ <NOT-HERE ,SKY>)
+ ;(<AND <IN? ,FLEET ,HERE>
+ <VERB? EXAMINE>>
+ <TELL
+"The sky is filled with the ships of the " D ,FLEET "." CR>)>>
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." <USE "LALR" "PSTACK" "REDS"> <IFFLAG (IN-ZILCH <USE "ZILCH">) (T <USE "ZIL">)> <INCLUDE "SYMBOLS" "BASEDEFS" "LALRDEFS"> "TERMINALS are defined in DEFS, so they'll be around for compiling stuff. This resets everything else, so we can regenerate the grammar." <RESET-SYMBOLS ;"!-SYMBOLS!-PACKAGE"> <ADD-WORD END.OF.INPUT END-OF-INPUT> <ADD-WORD "." END-OF-INPUT> <ADD-WORD "?" END-OF-INPUT> <ADD-WORD "!" END-OF-INPUT> <ADD-WORD "THEN" END-OF-INPUT> <ADD-WORD ONE NOUN> <ADD-WORD BUT PREP> ;<ADD-WORD NOT PREP> <ADD-WORD EXCEPT PREP> <COMPILATION-FLAG-DEFAULT P-PS-COMMA <>> <ADD-WORD AND <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>> ;<ADD-WORD OR <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>> <ADD-WORD "," <IFFLAG (P-PS-COMMA COMMA) (T MISCWORD)>> <COMPILATION-FLAG-DEFAULT P-PS-APOSTR <>> <ADD-WORD "'" <IFFLAG (P-PS-APOSTR APOSTR) (T MISCWORD)>> <COMPILATION-FLAG-DEFAULT P-PS-OFWORD <>> <ADD-WORD OF <IFFLAG (P-PS-OFWORD OFWORD) (T MISCWORD ;PREP)>> <COMPILATION-FLAG-DEFAULT P-PS-THEWORD <>> <ADD-WORD THE <IFFLAG (P-PS-THEWORD ARTICLE) (T MISCWORD)>> <ADD-WORD FROM PREP> <ADD-WORD IN PREP> <ADD-WORD ON PREP> <IF-P-PS-ADV <ADD-WORD ONCE ADV> <ADD-WORD TWICE ADV> <ADD-WORD THRICE ADV> <ADD-WORD "DON'T" ADV>> <IFFLAG (P-PS-ADV <PRODUCTION RED-SP SP 1 (?PERS S ?ADV)>) (T <PRODUCTION RED-SP SP 1 (?PERS S)>)> <PRODUCTION RED-SV S 2 (VP ?PARTICLE)> <PRODUCTION RED-SVPNN S 2 (VP ?PARTICLE NPP NPP)> <PRODUCTION RED-SVNPN S 2 (VP NPP ?PARTICLE NPP)> <PRODUCTION RED-SVPNPN S 2 (VP ?PARTICLE NPP ?PARTICLE NPP)> <PRODUCTION RED-SVNP S 2 (VP NPP PARTICLE)> <PRODUCTION RED-SVN S 2 (VP ?PARTICLE NPP)> <PRODUCTION RED-SD S 2 (DIR)> <PRODUCTION RED-SVD S 2 (VP DIR)> <IFFLAG (P-BE-VERB <IFFLAG (P-PS-ADV <PRODUCTION RED-VP VP 3 (?CANDO ?ADV VERB ?ADV)>) (T <PRODUCTION RED-VP VP 3 (?CANDO VERB)>)> <PRODUCTION RED-CANDO ?CANDO 3 () (NP) (NP CANDO ?NOT) ;"I DON'T KNOW" (?QW1 CANDO NP ?NOT) (?QW1 CANDO NOT NP)>) (T <IFFLAG (P-PS-ADV <PRODUCTION RED-VP VP 3 (?ADV VERB ?ADV)>) (T <PRODUCTION RED-VP VP 3 (VERB)>)>)> <IFFLAG (P-PS-OFWORD <PRODUCTION RED-PART ?PARTICLE 1 (PARTICLE OFWORD) (PARTICLE ?PARTICLE) ()>) (T <PRODUCTION RED-PART ?PARTICLE 1 (PARTICLE MISCWORD ;"OF") (PARTICLE ?PARTICLE) ()>)> <IF-P-PS-ADV <PRODUCTION RED-FCN ?ADV 1 (ADV) ()>> <IFFLAG (P-PS-COMMA <PRODUCTION RED-NPP NPP 4 (NPP COMMA NP) (NPP PP) (NP)>) (T <PRODUCTION RED-NPP NPP 4 (NPP MISCWORD NP) (NPP PP) (NP)>)> <COMPILATION-FLAG-DEFAULT P-PS-QUOTE <>> <ADD-WORD \" <IFFLAG (P-PS-QUOTE QUOTE) (T MISCWORD)>> <IFFLAG (P-PS-QUOTE <PRODUCTION RED-QUOTE NP 7 (QUOTE)>) (T <PRODUCTION RED-QUOTE NP 7 (MISCWORD)>)> <IFFLAG (P-PS-OFWORD <PRODUCTION RED-OF NP 5 (NP OFWORD NP)>) (T <PRODUCTION RED-OF NP 5 (NP MISCWORD NP)>)> <PRODUCTION RED-QT NP 7 (QUANT)> <PRODUCTION RED-QN NP 5 (QUANT NP)> <PRODUCTION RED-NP NP 6 (;?DET ADJ* NOUN)> <IFFLAG (P-PS-OFWORD <PRODUCTION RED-PP PP 3 (PREP NPP) (PARTICLE NPP) (PREP OFWORD NPP) (PARTICLE OFWORD NPP)>) (T <PRODUCTION RED-PP PP 3 (PREP NPP) (PARTICLE NPP) (PREP MISCWORD;"OF" NPP) (PARTICLE MISCWORD;"OF" NPP)>)> <IFFLAG (P-PS-THEWORD <PRODUCTION RED-ADJ ADJ* 8 (POSSESSIVE ADJ*) () (ADJ ADJ*) ;"switched by SWG" (ARTICLE ADJ*)>) (T <PRODUCTION RED-ADJ ADJ* 8 (POSSESSIVE ADJ*) () (ADJ ADJ*) ;"switched by SWG" (MISCWORD ADJ*) ;"article">)> <IFFLAG (P-PS-APOSTR <PRODUCTION RED-POSS POSSESSIVE 8 (NP APOSTR MISCWORD) ;"FOO'S" ;(ADJ) ;"HER HIS etc.">) (T <PRODUCTION RED-POSS POSSESSIVE 8 (NP MISCWORD MISCWORD) ;"FOO'S" ;(ADJ) ;"HER HIS etc.">)> <IF-P-BE-VERB <PRODUCTION RED-BE-FORM BE-FORM 3 (TOBE)> <PRODUCTION RED-SNBN S 2 (NP BE-FORM ?NOT ?BE NPP)> <PRODUCTION RED-SNBA S 2 (NP BE-FORM ?NOT ?BE ADJ)> <PRODUCTION RED-SNBP S 2 (NP BE-FORM ?NOT ?BE PP)> <PRODUCTION RED-SNBAP S 2 (NP BE-FORM ?NOT ?BE ADJ PP)> "I AM MAD AT YOU" <PRODUCTION RED-FCN ?QW1 3 () (QWORD)> <PRODUCTION RED-SQBN S 2 (QWORD BE-FORM NP)> ;<PRODUCTION RED-SQBA S 2 (QWORD BE-FORM ADJ)> ;<PRODUCTION RED-SQBP S 2 (QWORD BE-FORM PP)> <PRODUCTION RED-SBNN S 2 (?QW1 BE-FORM NP ?NOT ?BE NPP) (?QW1 BE-FORM NOT NP ?BE NPP)> <PRODUCTION RED-SBNA S 2 (?QW1 BE-FORM NP ?NOT ?BE ADJ) (?QW1 BE-FORM NOT NP ?BE ADJ)> <PRODUCTION RED-SBNP S 2 (?QW1 BE-FORM NP ?NOT ?BE PP) (?QW1 BE-FORM NOT NP ?BE PP)> ;<PRODUCTION RED-SBNAP S 2 (?QW1 BE-FORM NP ?NOT ?BE ADJ PP) (?QW1 BE-FORM NOT NP ?BE ADJ PP)> <ADD-WORD BE MISCWORD> <PRODUCTION RED-BE ?BE 3 () (MISCWORD ;"BE")> <ADD-WORD NOT MISCWORD> <PRODUCTION RED-NOT ?NOT 3 () (MISCWORD ;"NOT")> <PRODUCTION RED-NOT NOT 3 (MISCWORD ;"NOT")> > <IFFLAG (P-PS-COMMA <PRODUCTION RED-PERS ?PERS 2 () (NPP COMMA) (ASKWORD NPP PARTICLE ;"TO")>) (T <PRODUCTION RED-PERS ?PERS 2 () (NPP MISCWORD) (ASKWORD NPP PARTICLE ;"TO")>)> <PRODUCTION DO-ORPHAN-TEST O? 2 ()> <PRODUCTION RED-O-NP S 1 (O? NP) ;"was NPP" (O? NP PP)> <PRODUCTION RED-O-ADJ S 1 (O? ;ADJ ADJ*)> <PRODUCTION RED-O-PP S 1 (O? PP) (O? PARTICLE NP)> <STARTING-SYMBOL SP> <MAKE-TABLES <LALR>> \ 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 0000000..1aaf6ce
--- /dev/null
+++ b/h2.seg
Binary files differ
diff --git a/h2.seginfo b/h2.seginfo
new file mode 100644
index 0000000..a5a5aaa
--- /dev/null
+++ b/h2.seginfo
@@ -0,0 +1,2915 @@
+SEGMENT LIST
+Segment name: 0
+
+Adjacent segments :
+
+
+Included functions:
+
+V-TAKE? 6629
+PRE-TAKE? 6626
+V-DISEMBARK? 6599
+V-DROP? 6592
+PRE-DROP? 6588
+V-MUST? 6585
+V-WILL? 6582
+V-MIGHT? 6579
+V-SHOULD? 6576
+V-WOULD? 6573
+V-COULD? 6570
+V-DO? 6543
+V-MAY? 6540
+V-CAN? 6537
+ECHO-NOUNS 6522
+WHO-KNOWS 6436
+V-STATEMENT 6434
+IS-PRSO-ADJ? 6421
+PRINT-IS/ARE 6415
+PRSO-IS 6398
+ALIVE? 6395
+DEAD? 6392
+UNLOCKED? 6389
+LOCKED? 6386
+Q-CLOSED? 6382
+OPEN? 6378
+OUTSIDE? 6376
+QUIET? 6375
+V-HOW 6371
+V-WHY 6367
+V-WHEN 6363
+V-WHERE 6359
+PRE-WHERE 6355
+V-WHAT 6353
+V-WHO 6339
+V-BE? 6337
+RIGHT-PREP? 6328
+V-BE 6101
+PRE-BE 6098
+TRY-QCONTEXT? 6077
+TELL-Q-WORD 6064
+WHAT-F 6015
+INSERT-ADJS-WD 6005
+INSERT-ADJS 5969
+SETUP-ORPHAN-NP 5944
+YES? 5900
+INBUF-PRINT 5872
+INBUF-ADD 5846
+TOO-MANY-NOUNS 5831
+ADJS-PRINT 5792
+NP-PRINT 5713
+WHICH-PRINT 5641
+WHICH-LIST? 5634
+WINNER-SAYS-WHICH? 5633
+NP-CANT-SEE 5580
+CANT-FIND-OBJECT 5561
+MISSING 5550
+DONT-UNDERSTAND 5485
+CHANGE-AND-TO-THEN? 5420
+NAKED-ADJECTIVE? 5385
+PRINT-PARSER-FAILURE 5194
+CAPITALIZE 5183
+BUFFER-PRINT 5102
+COPY-INPUT 5084
+PRINT-LEXV 5028
+V-$REFRESH 5022
+REPLACE-ONE-TOKEN 5000
+MAKE-ROOM-FOR-TOKENS 4976
+CANT-USE-MULTIPLE 4962
+CANT-AGAIN 4955
+CANT-OOPS 4945
+NAKED-OOPS 4936
+TOO-MANY-NEW 4926
+NOUN-USED? 4919
+GET-NP 4908
+GET-OWNER 4893
+NOT-HERE 4871
+D-APPLY 4841
+TELL-D-LOC 4828
+ITAKE-CHECK 4797
+TELL-TOO-DARK 4795
+PERFORM 4643
+CANT-UNDO 4637
+META-LOC 4626
+QCONTEXT-GOOD? 4621
+TELL-SAID-TO 4616
+FIND-A-WINNER 4602
+NO-M-WINNER-VERB? 4601
+TELL-PRONOUN 4591
+FIX-HIM-HER-IT 4568
+VERB-ALL-TEST 4548
+V-PDEBUG 4529
+MORE-SPECIFIC 4521
+INSERT-WHAT 4511
+RED-CANDO 4350
+RED-NOT 4345
+RED-BE 4340
+RED-SQBN 4333
+P-PP-PREP 4329
+P-PP-OBJ 4321
+RED-SNBAP 4245
+RED-SNBP 4179
+RED-SBNP 4176
+RED-SNBA 4116
+RED-SBNA 4113
+DETERMINE-SUBJ 4050
+RED-SNBN 3991
+RED-SBNN 3988
+EXCH-4-5-Q 3952
+RED-BE-FORM 3947
+RED-QUOTE 3916
+RED-ADJ 3817
+RED-ADJS 3799
+RED-POSS 3786
+RED-PP 3769
+RED-NPP 3679
+RED-QN 3669
+GET-QUANTITY 3664
+GET-QUANTITY-WORD 3660
+RED-QT 3649
+RED-OF 3633
+RED-NP 3590
+RED-VP 3563
+HACK-TELL-1 3535
+HACK-TELL 3503
+RED-PERS 3472
+RED-O-NP 3317
+TEST-O-SR 3304
+TEST-SR 3249
+INSERT-NP 3210
+RED-O-PP 3180
+RED-O-ADJ 3164
+DO-ORPHAN-TEST 3163
+DETERMINE-NP-XFER 3141
+READY-TO-DISAMBIGUATE? 3131
+FIND-OWNERS 3119
+DET-NP-OWNEE? 3103
+DET-NP-NOT-HERE? 3089
+DETERMINE-NP 2862
+NUMERIC-ADJ? 2845
+CHECK-DIR-ADJS 2810
+DETERMINE-OBJ 2674
+REDUCE-LOCATION 2583
+REDUCE-EXCEPTION 2554
+REDUCE-EXCEPT-IT 2545
+IREDUCE-EXCEPTION 2534
+RED-SP 2522
+RED-SVD 2510
+RED-SVPNPN 2457
+SVN 2409
+RED-SVN 2390
+ROOT-VERB 2377
+RED-SV 2338
+GET-SYNTAX 2303
+RED-PART 2280
+RED-FCN 2276
+DIR-VERB-PRSI? 2275
+TEST-THINGS 2213
+FIND-OBJECTS 2040
+EXCLUDE-HERE-OBJECT? 2039
+SEARCH-IN-LG? 2038
+CHECK-ADJS 1959
+CHECK-ADJS-THERE? 1954
+MULTIPLE-EXCEPTION? 1935
+EVERYWHERE-VERB? 1923
+NOT-IN-FIND-RES? 1899
+ADD-OBJECT 1859
+TEST-OBJECT 1836
+MATCH-OBJECT 1759
+INVALID-OBJECT? 1758
+EXCLUDED? 1739
+FIND-DESCENDANTS 1711
+DO-IT-AGAIN 1682
+TELL-GWIM-MSG 1664
+CHANGE-LEXV 1653
+NUMBER? 1621
+BUZZER-WORD? 1599
+PARSER-ERROR 1566
+NP-SAVE 1528
+DO-AGAIN 1483
+DO-OOPS 1460
+WORD-PRINT 1451
+UNKNOWN-WORD 1434
+BEG-PARDON 1428
+P-NO-MEM-ROUTINE 1410
+MAIN-LOOP-IT 1399
+FIX-QUOTATIONS 1378
+IGNORE-FIRST-WORD 1366
+LIT? 1325
+QCONTEXT-CHECK 1314
+PERF-MANY 1294
+MAIN-LOOP-1 1062
+MAIN-LOOP 1060
+BE-PATIENT 1029
+GET-NONTERMINAL-ACTION 1019
+GET-TERMINAL-ACTION 1007
+PARSE-SENTENCE 674
+PARSE-IT 567
+P-P 490
+RED-SD 470
+GAME-VERB? 463
+PARSER 289
+NAKED-DIR? 262
+TELL-CTHE 247
+TELL-THE 232
+EXPAND-BE-CONTRACTIONS 164
+SPECIAL-CONTRACTION? 163
+SCRIPT-INBUF 149
+READ-INPUT 140
+DIGITS 133
+UPDATE-STATUS-LINE 115
+INIT-STATUS-LINE 109
+DO-PMEM-ALLOC 85
+PMEM-RESET 77
+PMEM? 73
+PEEK-PSTACK 64
+
+Included strings:
+
+STR?221 1254
+STR?220 1253
+STR?219 1246
+STR?218 1245
+STR?217 1244
+STR?216 1241
+STR?215 1238
+STR?214 1235
+STR?213 1232
+STR?212 1230
+STR?211 1228
+STR?210 1225
+STR?209 1223
+STR?208 1219
+STR?207 1216
+STR?206 1213
+STR?205 1210
+STR?204 1207
+STR?203 1204
+STR?202 1201
+STR?201 1198
+STR?200 1193
+STR?199 1191
+STR?198 1188
+STR?197 1186
+STR?196 1182
+STR?195 1171
+STR?194 1168
+STR?193 1158
+STR?192 1153
+STR?191 1150
+STR?190 1140
+STR?189 1138
+STR?188 1128
+STR?187 1125
+STR?186 1123
+STR?185 1121
+STR?184 1111
+STR?183 1093
+STR?182 1086
+STR?181 1071
+STR?180 1013
+STR?179 999
+STR?178 939
+STR?177 913
+STR?176 887
+STR?175 864
+STR?174 736
+STR?173 659
+STR?172 651
+STR?171 567
+STR?170 557
+STR?169 554
+STR?168 553
+STR?167 547
+STR?166 542
+STR?165 534
+STR?164 522
+STR?163 515
+STR?162 505
+STR?161 496
+STR?160 495
+STR?159 492
+STR?158 485
+STR?157 483
+STR?156 481
+STR?155 480
+STR?154 479
+STR?153 477
+STR?152 476
+STR?151 475
+STR?150 473
+STR?149 472
+STR?148 469
+STR?147 467
+STR?146 465
+STR?145 458
+STR?144 457
+STR?143 452
+STR?142 449
+STR?141 448
+STR?140 447
+STR?139 445
+STR?138 444
+STR?137 443
+STR?136 441
+STR?135 439
+STR?134 437
+STR?133 435
+STR?132 434
+STR?131 432
+STR?130 430
+STR?129 428
+STR?128 418
+STR?127 414
+STR?126 412
+STR?125 408
+STR?124 407
+STR?123 405
+STR?122 404
+STR?121 401
+STR?120 399
+STR?119 398
+STR?118 397
+STR?117 396
+STR?116 394
+STR?115 393
+STR?114 392
+STR?113 390
+STR?112 387
+STR?111 385
+STR?110 381
+STR?109 380
+STR?108 379
+STR?107 378
+STR?106 377
+STR?105 375
+STR?104 374
+STR?103 373
+STR?102 372
+STR?101 371
+STR?100 369
+STR?99 368
+STR?98 367
+STR?97 363
+STR?96 360
+STR?95 356
+STR?94 352
+STR?93 349
+STR?92 344
+STR?91 339
+STR?90 334
+STR?89 329
+STR?88 320
+STR?87 310
+STR?86 298
+STR?85 291
+STR?84 286
+STR?83 281
+STR?82 277
+STR?81 273
+STR?80 271
+STR?79 268
+STR?78 266
+STR?77 263
+STR?76 261
+STR?75 259
+STR?74 258
+STR?73 257
+STR?72 255
+STR?71 254
+STR?70 252
+STR?69 251
+STR?68 250
+STR?67 249
+STR?66 248
+STR?65 247
+STR?64 246
+STR?63 245
+STR?62 244
+STR?61 243
+STR?60 239
+STR?59 236
+STR?58 233
+STR?57 229
+STR?56 228
+STR?55 227
+STR?54 226
+STR?53 224
+STR?52 222
+STR?51 220
+STR?50 218
+STR?49 216
+STR?48 214
+STR?47 212
+STR?46 209
+STR?45 206
+STR?44 203
+STR?43 198
+STR?42 195
+STR?41 192
+STR?40 190
+STR?39 187
+STR?38 184
+STR?37 181
+STR?36 178
+STR?35 175
+STR?34 172
+STR?33 169
+STR?32 166
+STR?31 162
+STR?30 159
+STR?29 156
+STR?28 153
+STR?27 151
+STR?26 149
+STR?25 147
+STR?24 145
+STR?23 143
+STR?22 140
+STR?21 137
+STR?20 134
+STR?19 131
+STR?18 128
+STR?17 126
+STR?16 123
+STR?15 121
+STR?14 118
+STR?13 114
+STR?12 112
+STR?11 110
+STR?10 108
+STR?9 106
+STR?8 104
+STR?7 99
+STR?6 94
+STR?5 86
+STR?4 79
+STR?3 71
+STR?2 66
+STR?1 64
+
+
+
+FUNCTION LIST
+SKY-F
+Used functions and strings:
+NOT-HERE 4871
+OUTSIDE? 6376
+
+OBJECT-OF-GAME-F
+Used functions and strings:
+
+THIRD-PLANET-F
+Used functions and strings:
+
+EYES-F
+Used functions and strings:
+
+HEAD-F
+Used functions and strings:
+PERFORM 4643
+
+HANDS-F
+Used functions and strings:
+PERFORM 4643
+FIND-IN 11731
+
+LIGHT-GLOBAL-F
+Used functions and strings:
+FIND-FLAG-HERE-NOT 11766
+OKAY 7963
+ALREADY 7942
+OUTSIDE? 6376
+REMOTE-VERB? 10840
+
+ROB
+Used functions and strings:
+PRINT-THE 6674
+
+SLEEP-GLOBAL-F
+Used functions and strings:
+PERFORM 4643
+
+CHAIR-F
+Used functions and strings:
+RANDOM-PSEUDO 10852
+WONT-HELP 7654
+
+GLOBAL-HERE-F
+Used functions and strings:
+START-SEARCH 13131
+FIND-IN 11731
+META-LOC 4626
+MORE-SPECIFIC 4521
+DO-INSTEAD-OF 13092
+
+WALL-F
+Used functions and strings:
+DO-INSTEAD-OF 13092
+FIND-FLAG-LG 11746
+
+YOU-F
+Used functions and strings:
+QCONTEXT-GOOD? 4621
+PERFORM 4643
+DO-INSTEAD-OF 13092
+
+I-FOUND-IT
+Used functions and strings:
+
+START-SEARCH
+Used functions and strings:
+V-WAIT 10411
+QUEUE 6978
+OKAY 7963
+YES? 5900
+
+FLOOR-F
+Used functions and strings:
+ALREADY 7942
+
+IT-F
+Used functions and strings:
+
+TURN-F
+Used functions and strings:
+PERFORM 4643
+
+DO-INSTEAD-OF
+Used functions and strings:
+V-FOO 8759
+PERFORM 4643
+
+FRUSTRATION-F
+Used functions and strings:
+
+LOCAL-GLOBALS-F
+Used functions and strings:
+NOT-HERE 4871
+REMOTE-VERB? 10840
+
+COMMON-OTHER
+Used functions and strings:
+PERFORM 4643
+HE-SHE-IT 6771
+CARRY-CHECK 12837
+
+COMMON-ASK-ABOUT
+Used functions and strings:
+
+COM-CHECK
+Used functions and strings:
+HIM-HER-IT 6823
+ITAKE 7821
+UNSNOOZE 8291
+FACE-RED 10007
+HE-SHE-IT 6771
+CARRY-CHECK 12837
+PERFORM 4643
+TRANSIT-TEST 12844
+DONT-UNDERSTAND 5485
+
+TRANSIT-TEST
+Used functions and strings:
+
+CARRY-CHECK
+Used functions and strings:
+PRINT-CONTENTS 7366
+HE-SHE-IT 6771
+
+PERSON-F
+Used functions and strings:
+HIM-HER-IT 6823
+PRINT-THE 6674
+PERFORM 4643
+WONT-HELP 7654
+GRAB-ATTENTION 8139
+HELD? 7797
+HE-SHE-IT 6771
+UNSNOOZE 8291
+
+DESCRIBE-PERSON
+Used functions and strings:
+START-SENTENCE 6696
+
+TRILLIAN-D
+Used functions and strings:
+
+ZAPHOD-D
+Used functions and strings:
+
+FORD-D
+Used functions and strings:
+
+MARVIN-D
+Used functions and strings:
+
+TRILLIAN-F
+Used functions and strings:
+TELL-DUNNO 12616
+ASKING-ABOUT? 12530
+FUCKING-CLEAR 12451
+GRAB-ATTENTION 8139
+
+ZAPHOD-F
+Used functions and strings:
+TELL-DUNNO 12616
+ASKING-ABOUT? 12530
+FUCKING-CLEAR 12451
+GRAB-ATTENTION 8139
+
+TELL-DUNNO
+Used functions and strings:
+
+FORD-F
+Used functions and strings:
+ASKING-ABOUT? 12530
+FUCKING-CLEAR 12451
+GRAB-ATTENTION 8139
+
+ASKING-ABOUT?
+Used functions and strings:
+
+MARVIN-F
+Used functions and strings:
+FUCKING-CLEAR 12451
+GRAB-ATTENTION 8139
+
+FUCKING-CLEAR
+Used functions and strings:
+
+TOO-BAD-SIT-HIDE
+Used functions and strings:
+FIRST-YOU 9224
+
+PLAYER-F
+Used functions and strings:
+HELD? 7797
+REMOTE-VERB? 10840
+GAME-VERB? 463
+SPEAKING-VERB? 6647
+NOT-FOUND 6903
+PERFORM 4643
+PRE-TAKE 10078
+V-INVENTORY 7156
+V-WALK-AROUND 10661
+JIGS-UP 10732
+TELL-LOCATION 8715
+HAR-HAR 7646
+
+DOWN-TO-CRATER
+Used functions and strings:
+
+SLOPE-SCRAMBLE
+Used functions and strings:
+
+DEATH-BY-BLUBBER
+Used functions and strings:
+JIGS-UP 10732
+
+WANDER-AROUND
+Used functions and strings:
+
+FALL-OFF-RAMP
+Used functions and strings:
+JIGS-UP 10732
+
+HATCH-F
+Used functions and strings:
+NOT-HERE 4871
+
+SANDWICH-F
+Used functions and strings:
+
+BEER-F
+Used functions and strings:
+
+PUB-F
+Used functions and strings:
+
+WINDOW-F
+Used functions and strings:
+ALREADY 7942
+
+UNIMPORTANT-THING-F
+Used functions and strings:
+
+FIND-FLAG-HERE-NOT
+Used functions and strings:
+
+FIND-FLAG-HERE
+Used functions and strings:
+
+FIND-FLAG-LG
+Used functions and strings:
+
+FIND-FLAG-NOT
+Used functions and strings:
+
+FIND-IN
+Used functions and strings:
+
+DOOR-ROOM
+Used functions and strings:
+
+DINNER-F
+Used functions and strings:
+
+DINNER-D
+Used functions and strings:
+
+GAME-F
+Used functions and strings:
+
+PRIVATE
+Used functions and strings:
+
+SATCHEL-F
+Used functions and strings:
+ITEM-ON-SATCHEL-DESCRIPTION 11592
+PRINT-THE 6674
+HELD? 7797
+
+ITEM-ON-SATCHEL-DESCRIPTION
+Used functions and strings:
+PRINTA 6727
+
+SATCHEL-DESCFCN
+Used functions and strings:
+
+TOWEL-F
+Used functions and strings:
+
+BABEL-FISH-F
+Used functions and strings:
+
+GUIDE-F
+Used functions and strings:
+
+GUIDE-DESCFCN
+Used functions and strings:
+
+I-THING
+Used functions and strings:
+HELD? 7797
+VISIBLE? 8024
+I-THING 11028
+QUEUE 6978
+
+THING-F
+Used functions and strings:
+
+SLEEVES-F
+Used functions and strings:
+PERFORM 4643
+NOT-HERE 4871
+VISIBLE? 8024
+
+GOWN-F
+Used functions and strings:
+
+TOOTHBRUSH-F
+Used functions and strings:
+
+RANDOM-PSEUDO
+Used functions and strings:
+WONT-HELP 7654
+NOTHING-SPECIAL 8569
+
+REMOTE-VERB?
+Used functions and strings:
+
+V-UNDO
+Used functions and strings:
+
+FINISH
+Used functions and strings:
+V-RESTORE 7247
+FINISH 10746
+V-SCORE 7291
+
+JIGS-UP
+Used functions and strings:
+
+V-NO
+Used functions and strings:
+V-YES 10706
+
+V-YES
+Used functions and strings:
+D-APPLY 4841
+QCONTEXT-GOOD? 4621
+
+V-YELL
+Used functions and strings:
+
+V-RUN-OVER
+Used functions and strings:
+
+ENTER-ROOM
+Used functions and strings:
+V-FIRST-LOOK 7250
+LIT? 1325
+
+V-WALK-TO
+Used functions and strings:
+V-WALK-AROUND 10661
+HE-SHE-IT 6771
+GLOBAL-IN? 8577
+
+WALK-WITHIN-ROOM
+Used functions and strings:
+NO-NEED 7306
+
+WHO-KNOWS?
+Used functions and strings:
+PRINT-THE 6674
+
+V-WALK-AROUND
+Used functions and strings:
+
+OPEN-DOOR-AND-CLOSE-IT-AGAIN
+Used functions and strings:
+
+WALK-THRU-DOOR?
+Used functions and strings:
+THIS-IS-IT 6733
+TOO-BAD-BUT 8006
+UNLOCK-DOOR? 10604
+NOT-FOUND 6903
+YOU-CANT 7326
+
+UNLOCK-DOOR?
+Used functions and strings:
+
+V-WALK
+Used functions and strings:
+YOU-CANT 7326
+OKAY 7963
+GOTO 7710
+PERFORM 4643
+TELL-I-ASSUME 8860
+
+DO-WALK
+Used functions and strings:
+PERFORM 4643
+
+V-ALARM
+Used functions and strings:
+TOO-BAD-BUT 8006
+PERFORM 4643
+
+V-WAIT-UNTIL
+Used functions and strings:
+YOU-CANT 7326
+
+V-WAIT-FOR
+Used functions and strings:
+META-LOC 4626
+ALREADY 7942
+V-WAIT 10411
+
+V-WAIT
+Used functions and strings:
+YES? 5900
+VERB-PRINT 6918
+UPDATE-STATUS-LINE 115
+START-SENTENCE 6696
+NOT-IT 6953
+CLOCKER 6995
+
+V-USE
+Used functions and strings:
+MORE-SPECIFIC 4521
+
+V-UNLOCK
+Used functions and strings:
+HE-SHE-IT 6771
+OKAY 7963
+YOU-CANT 7326
+ALREADY 7942
+
+V-TURN
+Used functions and strings:
+PERFORM 4643
+
+V-THROW-THROUGH
+Used functions and strings:
+V-THROW 10349
+
+PRE-THROW-THROUGH
+Used functions and strings:
+
+V-THROW-IN-TOWEL
+Used functions and strings:
+DONT-UNDERSTAND 5485
+V-QUIT 7166
+
+V-THROW-AT
+Used functions and strings:
+HE-SHE-IT 6771
+IDROP 7809
+
+V-THROW
+Used functions and strings:
+IDROP 7809
+
+V-THANK
+Used functions and strings:
+PERFORM 4643
+QCONTEXT-GOOD? 4621
+HAR-HAR 7646
+PRINT-THE 6674
+
+V-TALK-ABOUT
+Used functions and strings:
+ARENT-TALKING 7934
+
+PRE-TALK-ABOUT
+Used functions and strings:
+TELL-I-ASSUME 8860
+QCONTEXT-GOOD? 4621
+PERFORM 4643
+
+V-TELL-ABOUT
+Used functions and strings:
+PRINT-THE 6674
+
+PRE-TELL-ABOUT
+Used functions and strings:
+PRE-ASK 8120
+NOT-FOUND 6903
+ARENT-TALKING 7934
+TELL-I-ASSUME 8860
+PERFORM 4643
+QCONTEXT-GOOD? 4621
+
+V-STELL-ABOUT
+Used functions and strings:
+V-FOO 8759
+
+PRE-STELL-ABOUT
+Used functions and strings:
+PERFORM 4643
+
+V-TELL
+Used functions and strings:
+PRINT-THE 6674
+UNSNOOZE 8291
+WONT-HELP-TO-TALK-TO 8174
+PERFORM 4643
+
+V-HOLD-UP
+Used functions and strings:
+WONT-HELP 7654
+PERFORM 4643
+
+OWN-FEET
+Used functions and strings:
+HIM-HER-IT 6823
+HE-SHE-IT 6771
+
+V-DISEMBARK
+Used functions and strings:
+HIM-HER-IT 6823
+ROOM-CHECK 7901
+
+V-TAKE-TO
+Used functions and strings:
+PERFORM 4643
+
+V-TAKE-OFF
+Used functions and strings:
+HIM-HER-IT 6823
+HE-SHE-IT 6771
+
+V-TAKE
+Used functions and strings:
+PRINT-THE 6674
+HE-SHE-IT 6771
+ITAKE 7821
+
+PRE-TAKE-WITH
+Used functions and strings:
+HIM-HER-IT 6823
+HE-SHE-IT 6771
+NOUN-USED? 4919
+YOU-CANT 7326
+PRINT-THE 6674
+ALREADY 7942
+NOT-HERE 4871
+HELD? 7797
+META-LOC 4626
+
+PRE-TAKE
+Used functions and strings:
+PRINT-THE 6674
+HE-SHE-IT 6771
+TOO-BAD-BUT 8006
+NOT-HERE 4871
+HAR-HAR 7646
+
+V-SWIM
+Used functions and strings:
+GROUND-DESC 8428
+HIM-HER-IT 6823
+HE-SHE-IT 6771
+
+V-STOP
+Used functions and strings:
+PERFORM 4643
+
+V-STAND
+Used functions and strings:
+ALREADY 7942
+WONT-HELP 7654
+PERFORM 4643
+
+V-SORRY
+Used functions and strings:
+GRAB-ATTENTION 8139
+
+V-SMILE
+Used functions and strings:
+
+V-SMELL
+Used functions and strings:
+PRINTA 6727
+HE-SHE-IT 6771
+
+FACE-RED
+Used functions and strings:
+HE-SHE-IT 6771
+UNSNOOZE 8291
+
+IF-SPY
+Used functions and strings:
+HE-SHE-IT 6771
+HIM-HER-IT 6823
+
+V-SLAP
+Used functions and strings:
+HE-SHE-IT 6771
+
+V-SIT-AT
+Used functions and strings:
+V-SIT 9934
+
+V-SIT
+Used functions and strings:
+WONT-HELP 7654
+PRINT-THE 6674
+
+PRE-SIT
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-SSHOW
+Used functions and strings:
+V-FOO 8759
+
+PRE-SSHOW
+Used functions and strings:
+QCONTEXT-GOOD? 4621
+TELL-I-ASSUME 8860
+HELD? 7797
+PERFORM 4643
+
+V-SHOW
+Used functions and strings:
+WHO-CARES 8051
+HIM-HER-IT 6823
+PERFORM 4643
+VISIBLE? 8024
+
+V-SSHOOT
+Used functions and strings:
+V-FOO 8759
+
+PRE-SSHOOT
+Used functions and strings:
+PERFORM 4643
+
+V-SHOOT
+Used functions and strings:
+IKILL 8973
+
+V-SHAKE
+Used functions and strings:
+GROUND-DESC 8428
+HIM-HER-IT 6823
+
+V-SEARCH-FOR
+Used functions and strings:
+YOU-CANT 7326
+PRINT-THE 6674
+START-SENTENCE 6696
+HIM-HER-IT 6823
+HE-SHE-IT 6771
+PERFORM 4643
+
+PRE-SEARCH-FOR
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-SSEARCH-FOR
+Used functions and strings:
+V-FOO 8759
+
+PRE-SSEARCH-FOR
+Used functions and strings:
+PERFORM 4643
+
+V-SEARCH
+Used functions and strings:
+NOTHING-SPECIAL 8569
+PRINTA 6727
+THIS-IS-IT 6733
+PERFORM 4643
+
+PRE-SEARCH
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-SAY
+Used functions and strings:
+NOT-CLEAR-WHOM 7953
+TELL-I-ASSUME 8860
+PERFORM 4643
+QCONTEXT-GOOD? 4621
+
+V-RUB
+Used functions and strings:
+HACK-HACK 7792
+
+V-RING
+Used functions and strings:
+YOU-CANT 7326
+
+V-REMOVE
+Used functions and strings:
+PERFORM 4643
+
+V-RELAX
+Used functions and strings:
+
+V-REFUSE
+Used functions and strings:
+DONT-F 6865
+
+V-READ
+Used functions and strings:
+YOU-CANT 7326
+
+PRE-READ
+Used functions and strings:
+NOT-HERE 4871
+
+V-SREAD
+Used functions and strings:
+V-FOO 8759
+
+PRE-SREAD
+Used functions and strings:
+PERFORM 4643
+
+V-PUT-UNDER
+Used functions and strings:
+WONT-HELP 7654
+
+WEIGHT
+Used functions and strings:
+
+PUT-ON-OR-IN
+Used functions and strings:
+ITAKE 7821
+HELD? 7797
+HIM-HER-IT 6823
+TOO-BAD-BUT 8006
+HAR-HAR 7646
+YOU-CANT 7326
+
+V-PUT-IN
+Used functions and strings:
+HIM-HER-IT 6823
+TOO-BAD-BUT 8006
+
+PRE-PUT-IN
+Used functions and strings:
+FIRST-YOU 9224
+TELL-FIND-NONE 9604
+WONT-HELP 7654
+PRE-PUT 9577
+
+TELL-FIND-NONE
+Used functions and strings:
+PRINT-THE 6674
+
+V-PUT
+Used functions and strings:
+HIM-HER-IT 6823
+
+PRE-PUT
+Used functions and strings:
+YOU-CANT 7326
+HELD? 7797
+NOT-HERE 4871
+WONT-HELP 7654
+
+V-SPUT-ON
+Used functions and strings:
+PERFORM 4643
+
+V-PUSH
+Used functions and strings:
+HACK-HACK 7792
+
+V-PULL-TOGETHER
+Used functions and strings:
+DONT-UNDERSTAND 5485
+
+V-POUR
+Used functions and strings:
+HAR-HAR 7646
+
+V-PLAY
+Used functions and strings:
+
+V-PANIC
+Used functions and strings:
+
+V-OPEN
+Used functions and strings:
+YOU-CANT 7326
+PRINT-CONTENTS 7366
+HIM-HER-IT 6823
+OKAY 7963
+TOO-BAD-BUT 8006
+ALREADY 7942
+FIRST-YOU 9224
+IMPOSSIBLE 7650
+
+V-NOD
+Used functions and strings:
+PERFORM 4643
+YOU-CANT 7326
+
+V-MUNG
+Used functions and strings:
+IKILL 8973
+
+V-MOVE-DIR
+Used functions and strings:
+HIM-HER-IT 6823
+
+PRE-MOVE-DIR
+Used functions and strings:
+DONT-UNDERSTAND 5485
+
+V-MOVE
+Used functions and strings:
+YOU-CANT 7326
+HIM-HER-IT 6823
+
+PRE-MOVE
+Used functions and strings:
+HELD? 7797
+
+V-LOOK-UP
+Used functions and strings:
+YOU-CANT 7326
+PERFORM 4643
+OUTSIDE? 6376
+PRINT-THE 6674
+
+V-LOOK-UNDER
+Used functions and strings:
+HIM-HER-IT 6823
+PRINT-THE 6674
+HELD? 7797
+WONT-HELP 7654
+
+PRE-LOOK-UNDER
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-LOOK-OUTSIDE
+Used functions and strings:
+V-LOOK-INSIDE 9152
+
+V-LOOK-ON
+Used functions and strings:
+HIM-HER-IT 6823
+V-LOOK-INSIDE 9152
+
+TELL-CANT-FIND
+Used functions and strings:
+
+SEE-INTO?
+Used functions and strings:
+
+ROOM-PEEK
+Used functions and strings:
+DESCRIBE-OBJECTS 7399
+HIM-HER-IT 6823
+LIT? 1325
+MAKE-ALL-PEOPLE 7739
+V-LOOK 9130
+
+NO-BEYOND
+Used functions and strings:
+HIM-HER-IT 6823
+
+V-LOOK-THROUGH
+Used functions and strings:
+YOU-CANT 7326
+TOO-BAD-BUT 8006
+
+FIRST-YOU
+Used functions and strings:
+PRINT-THE 6674
+HE-SHE-IT 6771
+
+V-LOOK-INSIDE
+Used functions and strings:
+YOU-CANT 7326
+TOO-BAD-BUT 8006
+HIM-HER-IT 6823
+PRINT-CONTENTS 7366
+SEE-INSIDE? 7929
+NOUN-USED? 4919
+TELL-I-ASSUME 8860
+PERFORM 4643
+GLOBAL-IN? 8577
+
+PRE-LOOK-INSIDE
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-LOOK-DOWN
+Used functions and strings:
+PERFORM 4643
+
+V-LOOK-BEHIND
+Used functions and strings:
+HIM-HER-IT 6823
+TOO-BAD-BUT 8006
+
+V-LOOK
+Used functions and strings:
+DESCRIBE-OBJECTS 7399
+DESCRIBE-ROOM 7588
+
+V-LOCK
+Used functions and strings:
+HAR-HAR 7646
+
+V-LISTEN
+Used functions and strings:
+PRINT-THE 6674
+WAITING-FOR-YOU-TO-SPEAK 8105
+
+PRE-LISTEN
+Used functions and strings:
+PRE-ASK 8120
+
+V-LIE
+Used functions and strings:
+
+PRE-LIE
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-LEAVE
+Used functions and strings:
+TELL-NOT-IN 8404
+PERFORM 4643
+
+WHEE
+Used functions and strings:
+
+V-SKIP
+Used functions and strings:
+
+V-LEAP
+Used functions and strings:
+IMPOSSIBLE 7650
+
+V-LAMP-ON
+Used functions and strings:
+YOU-CANT 7326
+HAR-HAR 7646
+OKAY 7963
+ALREADY 7942
+
+V-LAMP-OFF
+Used functions and strings:
+OKAY 7963
+ALREADY 7942
+YOU-CANT 7326
+
+V-KNOCK
+Used functions and strings:
+HACK-HACK 7792
+
+V-KISS
+Used functions and strings:
+
+IKILL
+Used functions and strings:
+HAR-HAR 7646
+PRINT-THE 6674
+
+V-KILL
+Used functions and strings:
+
+V-HIDE
+Used functions and strings:
+
+HELP-TEXT
+Used functions and strings:
+
+V-HELP
+Used functions and strings:
+MORE-SPECIFIC 4521
+
+V-HELLO
+Used functions and strings:
+NOT-CLEAR-WHOM 7953
+WONT-HELP-TO-TALK-TO 8174
+
+PRE-HELLO
+Used functions and strings:
+NOT-CLEAR-WHOM 7953
+QCONTEXT-GOOD? 4621
+HIM-HER-IT 6823
+PERFORM 4643
+WONT-HELP-TO-TALK-TO 8174
+
+TELL-I-ASSUME
+Used functions and strings:
+TELL-THE 232
+
+V-SGIVE
+Used functions and strings:
+V-FOO 8759
+
+PRE-SGIVE
+Used functions and strings:
+PERFORM 4643
+
+V-GIVE
+Used functions and strings:
+PRINT-THE 6674
+PERFORM 4643
+PRINTA 6727
+HE-SHE-IT 6771
+YOU-CANT 7326
+
+PRE-GIVE
+Used functions and strings:
+NOT-HOLDING? 7698
+
+I-REPLY
+Used functions and strings:
+
+V-FOOTNOTE
+Used functions and strings:
+QUEUE 6978
+
+V-FOO
+Used functions and strings:
+
+V-FOLLOW
+Used functions and strings:
+HE-SHE-IT 6771
+META-LOC 4626
+IMPOSSIBLE 7650
+YOU-CANT 7326
+
+FOLLOW-LOC?
+Used functions and strings:
+PRINT-THE 6674
+HE-SHE-IT 6771
+
+V-FIX
+Used functions and strings:
+MORE-SPECIFIC 4521
+
+TELL-LOCATION
+Used functions and strings:
+PRINT-THE 6674
+
+NO-FUN
+Used functions and strings:
+
+V-FIND
+Used functions and strings:
+FAR-AWAY? 8625
+META-LOC 4626
+NOT-HERE 4871
+THIS-IS-IT 6733
+VISIBLE? 8024
+HELD? 7797
+PRINT-THE 6674
+
+FAR-AWAY?
+Used functions and strings:
+
+BITE-YOU
+Used functions and strings:
+HE-SHE-IT 6771
+
+PRE-FIND
+Used functions and strings:
+META-LOC 4626
+PERFORM 4643
+ALREADY 7942
+
+V-FILL
+Used functions and strings:
+YOU-CANT 7326
+
+V-FAINT
+Used functions and strings:
+
+GLOBAL-IN?
+Used functions and strings:
+
+NOTHING-SPECIAL
+Used functions and strings:
+PRINT-THE 6674
+
+V-EXAMINE
+Used functions and strings:
+CHECK-DOOR 7888
+TOO-BAD-BUT 8006
+META-LOC 4626
+NOT-HERE 4871
+NOUN-USED? 4919
+
+PRE-EXAMINE
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-THROUGH
+Used functions and strings:
+HIM-HER-IT 6823
+THIS-IS-IT 6733
+PRINT-THE 6674
+HE-SHE-IT 6771
+HAR-HAR 7646
+PERFORM 4643
+GOTO 7710
+NOUN-USED? 4919
+
+PRE-THROUGH
+Used functions and strings:
+PERFORM 4643
+
+V-ENJOY
+Used functions and strings:
+PRINT-THE 6674
+
+V-EAT
+Used functions and strings:
+PRINT-THE 6674
+
+PRE-EAT
+Used functions and strings:
+NOT-HERE 4871
+PERFORM 4643
+META-LOC 4626
+
+GROUND-DESC
+Used functions and strings:
+OUTSIDE? 6376
+
+V-DROP
+Used functions and strings:
+PRINT-THE 6674
+OKAY 7963
+IDROP 7809
+
+V-DRINK
+Used functions and strings:
+YOU-CANT 7326
+
+TELL-NOT-IN
+Used functions and strings:
+HIM-HER-IT 6823
+HE-SHE-IT 6771
+
+V-DIAGNOSE
+Used functions and strings:
+HE-SHE-IT 6771
+YOU-CANT 7326
+
+V-COUNT
+Used functions and strings:
+IMPOSSIBLE 7650
+
+V-CLOSE
+Used functions and strings:
+ALREADY 7942
+OKAY 7963
+YOU-CANT 7326
+
+V-CLIMB-DOWN
+Used functions and strings:
+V-CLIMB-UP 8356
+
+V-CLIMB-UP
+Used functions and strings:
+HAR-HAR 7646
+YOU-CANT 7326
+PERFORM 4643
+
+V-CLIMB-ON
+Used functions and strings:
+PERFORM 4643
+
+V-BOARD
+Used functions and strings:
+YOU-CANT 7326
+HE-SHE-IT 6771
+PRINT-THE 6674
+ALREADY 7942
+
+V-CHASTISE
+Used functions and strings:
+PERFORM 4643
+HIM-HER-IT 6823
+
+UNSNOOZE
+Used functions and strings:
+HE-SHE-IT 6771
+META-LOC 4626
+
+V-$CALL
+Used functions and strings:
+MISSING 5550
+NOT-HERE 4871
+START-SENTENCE 6696
+GRAB-ATTENTION 8139
+META-LOC 4626
+
+V-BUY
+Used functions and strings:
+PRINT-THE 6674
+
+V-BRUSH
+Used functions and strings:
+PRINTA 6727
+PRINT-THE 6674
+PERFORM 4643
+HELD? 7797
+
+PRE-BRUSH
+Used functions and strings:
+
+V-ATTACK
+Used functions and strings:
+
+V-ASK-CONTEXT-FOR
+Used functions and strings:
+ARENT-TALKING 7934
+
+PRE-ASK-CONTEXT-FOR
+Used functions and strings:
+PRE-ASK-CONTEXT-ABOUT 8189
+PERFORM 4643
+
+V-ASK-FOR
+Used functions and strings:
+PRINT-THE 6674
+
+V-ASK-CONTEXT-ABOUT
+Used functions and strings:
+ARENT-TALKING 7934
+
+PRE-ASK-CONTEXT-ABOUT
+Used functions and strings:
+PERFORM 4643
+QCONTEXT-GOOD? 4621
+
+WONT-HELP-TO-TALK-TO
+Used functions and strings:
+HE-SHE-IT 6771
+PRINT-THE 6674
+
+V-ASK-ABOUT
+Used functions and strings:
+PERFORM 4643
+PRINT-THE 6674
+
+GRAB-ATTENTION
+Used functions and strings:
+TOO-BAD-BUT 8006
+
+PRE-ASK
+Used functions and strings:
+MISSING 5550
+NOT-HERE 4871
+META-LOC 4626
+
+V-ASK
+Used functions and strings:
+
+WAITING-FOR-YOU-TO-SPEAK
+Used functions and strings:
+HE-SHE-IT 6771
+
+V-REPLY
+Used functions and strings:
+YOU-CANT 7326
+
+V-ANSWER
+Used functions and strings:
+NOT-CLEAR-WHOM 7953
+PERFORM 4643
+
+V-ANALYZE
+Used functions and strings:
+HE-SHE-IT 6771
+CHECK-DOOR 7888
+
+PRE-ANALYZE
+Used functions and strings:
+ROOM-CHECK 7901
+
+V-SANALYZE
+Used functions and strings:
+
+PRE-SANALYZE
+Used functions and strings:
+PERFORM 4643
+
+V-AIM
+Used functions and strings:
+YOU-CANT 7326
+
+V-SAIM
+Used functions and strings:
+
+PRE-SAIM
+Used functions and strings:
+PERFORM 4643
+
+WHO-CARES
+Used functions and strings:
+HE-SHE-IT 6771
+
+ACCESSIBLE?
+Used functions and strings:
+ACCESSIBLE? 8032
+META-LOC 4626
+
+VISIBLE?
+Used functions and strings:
+VISIBLE? 8024
+SEE-INSIDE? 7929
+
+TOO-DARK
+Used functions and strings:
+
+TOO-BAD-BUT
+Used functions and strings:
+HE-SHE-IT 6771
+
+OKAY
+Used functions and strings:
+LIT? 1325
+HE-SHE-IT 6771
+
+NOT-CLEAR-WHOM
+Used functions and strings:
+
+ALREADY
+Used functions and strings:
+START-SENTENCE 6696
+
+ARENT-TALKING
+Used functions and strings:
+
+SEE-INSIDE?
+Used functions and strings:
+
+ROOM-CHECK
+Used functions and strings:
+NOT-HERE 4871
+PERFORM 4643
+META-LOC 4626
+
+CHECK-DOOR
+Used functions and strings:
+THIS-IS-IT 6733
+START-SENTENCE 6696
+
+CCOUNT
+Used functions and strings:
+
+ITAKE
+Used functions and strings:
+HE-SHE-IT 6771
+HIM-HER-IT 6823
+PRINT-THE 6674
+YOU-CANT 7326
+
+IDROP
+Used functions and strings:
+NOT-HOLDING? 7698
+
+HELD?
+Used functions and strings:
+
+HACK-HACK
+Used functions and strings:
+PICK-ONE 7694
+HIM-HER-IT 6823
+
+DIR-FROM-TEST
+Used functions and strings:
+
+DIR-FROM
+Used functions and strings:
+
+FRIEND-FOLLOWS-YOU
+Used functions and strings:
+PICK-ONE 7694
+
+MAKE-ALL-PEOPLE
+Used functions and strings:
+
+GOTO
+Used functions and strings:
+
+NOT-HOLDING?
+Used functions and strings:
+HIM-HER-IT 6823
+HE-SHE-IT 6771
+
+PICK-ONE
+Used functions and strings:
+
+PICK-ONE-NEW
+Used functions and strings:
+
+WONT-HELP
+Used functions and strings:
+
+IMPOSSIBLE
+Used functions and strings:
+
+HAR-HAR
+Used functions and strings:
+
+DESCRIBE-ROOM
+Used functions and strings:
+THIS-IS-IT 6733
+PRINT-THE 6674
+
+SEE-ANYTHING-IN?
+Used functions and strings:
+
+DESCRIBE-OBJECTS
+Used functions and strings:
+PRINT-CONTENTS 7366
+TELL-BEING-WORN 7359
+THIS-IS-IT 6733
+PRINT-THE 6674
+START-SENTENCE 6696
+
+PRINT-CONTENTS
+Used functions and strings:
+THIS-IS-IT 6733
+TELL-BEING-WORN 7359
+PRINT-THE 6674
+
+TELL-BEING-WORN
+Used functions and strings:
+
+YOU-CANT
+Used functions and strings:
+PRINT-THE 6674
+OUTSIDE? 6376
+VERB-PRINT 6918
+HE-SHE-IT 6771
+
+NO-NEED
+Used functions and strings:
+PRINT-THE 6674
+VERB-PRINT 6918
+HE-SHE-IT 6771
+
+V-SCORE
+Used functions and strings:
+
+V-VERSION
+Used functions and strings:
+
+V-FIRST-LOOK
+Used functions and strings:
+
+V-RESTORE
+Used functions and strings:
+TELL-FAILED 7213
+
+V-SAVE
+Used functions and strings:
+TELL-FAILED 7213
+V-$REFRESH 5022
+
+TELL-FAILED
+Used functions and strings:
+
+V-RESTART
+Used functions and strings:
+YES? 5900
+
+V-QUIT
+Used functions and strings:
+YES? 5900
+
+V-INVENTORY
+Used functions and strings:
+HE-SHE-IT 6771
+
+V-VERBOSE
+Used functions and strings:
+YOU-WILL-GET 7136
+
+V-BRIEF
+Used functions and strings:
+YOU-WILL-GET 7136
+
+V-SUPER-BRIEF
+Used functions and strings:
+YOU-WILL-GET 7136
+
+YOU-WILL-GET
+Used functions and strings:
+
+V-$UNRECORD
+Used functions and strings:
+
+V-$RECORD
+Used functions and strings:
+
+V-$RANDOM
+Used functions and strings:
+
+V-$COMMAND
+Used functions and strings:
+
+V-$QUEUE
+Used functions and strings:
+
+V-$CHEAT
+Used functions and strings:
+YES? 5900
+
+V-$VERIFY
+Used functions and strings:
+DONT-UNDERSTAND 5485
+
+V-$ID
+Used functions and strings:
+
+V-UNSCRIPT
+Used functions and strings:
+TRANSCRIPT 7015
+
+V-SCRIPT
+Used functions and strings:
+TRANSCRIPT 7015
+
+TRANSCRIPT
+Used functions and strings:
+
+CLOCKER
+Used functions and strings:
+
+INT
+Used functions and strings:
+
+QUEUE
+Used functions and strings:
+
+TITLE-NOUN?
+Used functions and strings:
+
+CAPITAL-NOUN?
+Used functions and strings:
+
+NOT-IT
+Used functions and strings:
+
+VERB-PRINT
+Used functions and strings:
+WORD-PRINT 1451
+
+NOT-FOUND
+Used functions and strings:
+HIM-HER-IT 6823
+
+DONT-F
+Used functions and strings:
+
+I-PROMPT
+Used functions and strings:
+
+HIM-HER-IT
+Used functions and strings:
+NO-PRONOUN? 6750
+
+HE-SHE-IT
+Used functions and strings:
+NO-PRONOUN? 6750
+
+NO-PRONOUN?
+Used functions and strings:
+THIS-IS-IT 6733
+START-SENTENCE 6696
+PRINT-THE 6674
+
+THIS-IS-IT
+Used functions and strings:
+
+PRINTA
+Used functions and strings:
+
+START-SENTENCE
+Used functions and strings:
+
+THE?
+Used functions and strings:
+
+PRINT-THE
+Used functions and strings:
+
+INTRO
+Used functions and strings:
+
+GO
+Used functions and strings:
+MAIN-LOOP 1060
+INIT-STATUS-LINE 109
+
+SPEAKING-VERB?
+Used functions and strings:
+
+SEE-VERB?
+Used functions and strings:
+
+V-TAKE?
+Used functions and strings:
+
+PRE-TAKE?
+Used functions and strings:
+
+V-DISEMBARK?
+Used functions and strings:
+TELL-THE 232
+PERFORM 4643
+
+V-DROP?
+Used functions and strings:
+
+PRE-DROP?
+Used functions and strings:
+PERFORM 4643
+
+V-MUST?
+Used functions and strings:
+WHO-KNOWS 6436
+
+V-WILL?
+Used functions and strings:
+WHO-KNOWS 6436
+
+V-MIGHT?
+Used functions and strings:
+WHO-KNOWS 6436
+
+V-SHOULD?
+Used functions and strings:
+WHO-KNOWS 6436
+
+V-WOULD?
+Used functions and strings:
+WHO-KNOWS 6436
+
+V-COULD?
+Used functions and strings:
+WHO-KNOWS 6436
+
+V-DO?
+Used functions and strings:
+WHO-KNOWS 6436
+ECHO-NOUNS 6522
+TELL-THE 232
+MORE-SPECIFIC 4521
+TRY-QCONTEXT? 6077
+
+V-MAY?
+Used functions and strings:
+WHO-KNOWS 6436
+
+V-CAN?
+Used functions and strings:
+WHO-KNOWS 6436
+
+ECHO-NOUNS
+Used functions and strings:
+TELL-THE 232
+
+WHO-KNOWS
+Used functions and strings:
+TELL-THE 232
+TELL-Q-WORD 6064
+DETERMINE-OBJ 2674
+GET-SYNTAX 2303
+
+V-STATEMENT
+Used functions and strings:
+
+IS-PRSO-ADJ?
+Used functions and strings:
+
+PRINT-IS/ARE
+Used functions and strings:
+
+PRSO-IS
+Used functions and strings:
+TELL-THE 232
+TELL-CTHE 247
+
+ALIVE?
+Used functions and strings:
+
+DEAD?
+Used functions and strings:
+
+UNLOCKED?
+Used functions and strings:
+
+LOCKED?
+Used functions and strings:
+
+Q-CLOSED?
+Used functions and strings:
+
+OPEN?
+Used functions and strings:
+
+OUTSIDE?
+Used functions and strings:
+
+QUIET?
+Used functions and strings:
+
+V-HOW
+Used functions and strings:
+V-BE 6101
+MORE-SPECIFIC 4521
+
+V-WHY
+Used functions and strings:
+V-BE 6101
+MORE-SPECIFIC 4521
+
+V-WHEN
+Used functions and strings:
+V-BE 6101
+MORE-SPECIFIC 4521
+
+V-WHERE
+Used functions and strings:
+V-BE 6101
+MORE-SPECIFIC 4521
+
+PRE-WHERE
+Used functions and strings:
+PERFORM 4643
+
+V-WHAT
+Used functions and strings:
+V-WHO 6339
+
+V-WHO
+Used functions and strings:
+V-BE 6101
+TELL-THE 232
+MORE-SPECIFIC 4521
+
+V-BE?
+Used functions and strings:
+V-BE 6101
+
+RIGHT-PREP?
+Used functions and strings:
+
+V-BE
+Used functions and strings:
+META-LOC 4626
+NP-PRINT 5713
+P-PP-OBJ 4321
+P-PP-PREP 4329
+TELL-THE 232
+TELL-CTHE 247
+TELL-Q-WORD 6064
+TRY-QCONTEXT? 6077
+
+PRE-BE
+Used functions and strings:
+TRY-QCONTEXT? 6077
+
+TRY-QCONTEXT?
+Used functions and strings:
+PERFORM 4643
+
+TELL-Q-WORD
+Used functions and strings:
+
+WHAT-F
+Used functions and strings:
+PERFORM 4643
+P-PP-PREP 4329
+P-PP-OBJ 4321
+EVERYWHERE-VERB? 1923
+
+INSERT-ADJS-WD
+Used functions and strings:
+INBUF-PRINT 5872
+MAKE-ROOM-FOR-TOKENS 4976
+
+INSERT-ADJS
+Used functions and strings:
+PMEM? 73
+
+SETUP-ORPHAN-NP
+Used functions and strings:
+
+YES?
+Used functions and strings:
+
+INBUF-PRINT
+Used functions and strings:
+
+INBUF-ADD
+Used functions and strings:
+
+TOO-MANY-NOUNS
+Used functions and strings:
+
+ADJS-PRINT
+Used functions and strings:
+CAPITALIZE 5183
+NP-PRINT 5713
+
+NP-PRINT
+Used functions and strings:
+PMEM? 73
+BUFFER-PRINT 5102
+GET-QUANTITY-WORD 3660
+NP-PRINT 5713
+TELL-THE 232
+
+WHICH-PRINT
+Used functions and strings:
+TELL-THE 232
+WHICH-LIST? 5634
+WINNER-SAYS-WHICH? 5633
+GET-NP 4908
+
+WHICH-LIST?
+Used functions and strings:
+
+WINNER-SAYS-WHICH?
+Used functions and strings:
+
+NP-CANT-SEE
+Used functions and strings:
+MORE-SPECIFIC 4521
+TELL-THE 232
+TELL-CTHE 247
+GET-NP 4908
+
+CANT-FIND-OBJECT
+Used functions and strings:
+
+MISSING
+Used functions and strings:
+
+DONT-UNDERSTAND
+Used functions and strings:
+
+CHANGE-AND-TO-THEN?
+Used functions and strings:
+
+NAKED-ADJECTIVE?
+Used functions and strings:
+
+PRINT-PARSER-FAILURE
+Used functions and strings:
+PARSE-IT 567
+PRINT-LEXV 5028
+CHANGE-LEXV 1653
+CANT-USE-MULTIPLE 4962
+ROOT-VERB 2377
+TELL-THE 232
+MAKE-ROOM-FOR-TOKENS 4976
+
+CAPITALIZE
+Used functions and strings:
+WORD-PRINT 1451
+
+BUFFER-PRINT
+Used functions and strings:
+WORD-PRINT 1451
+
+COPY-INPUT
+Used functions and strings:
+PRINT-LEXV 5028
+
+PRINT-LEXV
+Used functions and strings:
+BE-PATIENT 1029
+
+V-$REFRESH
+Used functions and strings:
+INIT-STATUS-LINE 109
+
+REPLACE-ONE-TOKEN
+Used functions and strings:
+TOO-MANY-NEW 4926
+MAKE-ROOM-FOR-TOKENS 4976
+
+MAKE-ROOM-FOR-TOKENS
+Used functions and strings:
+TOO-MANY-NEW 4926
+
+CANT-USE-MULTIPLE
+Used functions and strings:
+
+CANT-AGAIN
+Used functions and strings:
+
+CANT-OOPS
+Used functions and strings:
+
+NAKED-OOPS
+Used functions and strings:
+
+TOO-MANY-NEW
+Used functions and strings:
+
+NOUN-USED?
+Used functions and strings:
+GET-NP 4908
+
+GET-NP
+Used functions and strings:
+
+GET-OWNER
+Used functions and strings:
+
+NOT-HERE
+Used functions and strings:
+TELL-THE 232
+
+D-APPLY
+Used functions and strings:
+
+TELL-D-LOC
+Used functions and strings:
+
+ITAKE-CHECK
+Used functions and strings:
+TELL-THE 232
+TELL-CTHE 247
+
+TELL-TOO-DARK
+Used functions and strings:
+
+PERFORM
+Used functions and strings:
+NO-M-WINNER-VERB? 4601
+
+CANT-UNDO
+Used functions and strings:
+
+META-LOC
+Used functions and strings:
+
+QCONTEXT-GOOD?
+Used functions and strings:
+
+TELL-SAID-TO
+Used functions and strings:
+
+FIND-A-WINNER
+Used functions and strings:
+
+NO-M-WINNER-VERB?
+Used functions and strings:
+
+TELL-PRONOUN
+Used functions and strings:
+TELL-THE 232
+
+FIX-HIM-HER-IT
+Used functions and strings:
+EVERYWHERE-VERB? 1923
+MORE-SPECIFIC 4521
+
+VERB-ALL-TEST
+Used functions and strings:
+
+V-PDEBUG
+Used functions and strings:
+
+MORE-SPECIFIC
+Used functions and strings:
+
+INSERT-WHAT
+Used functions and strings:
+
+RED-CANDO
+Used functions and strings:
+GET-SYNTAX 2303
+PMEM? 73
+PARSER-ERROR 1566
+DETERMINE-OBJ 2674
+
+RED-NOT
+Used functions and strings:
+
+RED-BE
+Used functions and strings:
+
+RED-SQBN
+Used functions and strings:
+DETERMINE-SUBJ 4050
+
+P-PP-PREP
+Used functions and strings:
+
+P-PP-OBJ
+Used functions and strings:
+
+RED-SNBAP
+Used functions and strings:
+DETERMINE-OBJ 2674
+REDUCE-LOCATION 2583
+DO-PMEM-ALLOC 85
+DETERMINE-SUBJ 4050
+
+RED-SNBP
+Used functions and strings:
+REDUCE-LOCATION 2583
+DO-PMEM-ALLOC 85
+DETERMINE-SUBJ 4050
+
+RED-SBNP
+Used functions and strings:
+EXCH-4-5-Q 3952
+
+RED-SNBA
+Used functions and strings:
+DO-PMEM-ALLOC 85
+DETERMINE-SUBJ 4050
+
+RED-SBNA
+Used functions and strings:
+EXCH-4-5-Q 3952
+
+DETERMINE-SUBJ
+Used functions and strings:
+DETERMINE-OBJ 2674
+GET-SYNTAX 2303
+PARSER-ERROR 1566
+
+RED-SNBN
+Used functions and strings:
+PARSER-ERROR 1566
+DETERMINE-OBJ 2674
+
+RED-SBNN
+Used functions and strings:
+EXCH-4-5-Q 3952
+
+EXCH-4-5-Q
+Used functions and strings:
+PMEM? 73
+
+RED-BE-FORM
+Used functions and strings:
+
+RED-QUOTE
+Used functions and strings:
+DO-PMEM-ALLOC 85
+
+RED-ADJ
+Used functions and strings:
+DO-PMEM-ALLOC 85
+
+RED-ADJS
+Used functions and strings:
+PMEM? 73
+DO-PMEM-ALLOC 85
+
+RED-POSS
+Used functions and strings:
+PARSER-ERROR 1566
+
+RED-PP
+Used functions and strings:
+DO-PMEM-ALLOC 85
+
+RED-NPP
+Used functions and strings:
+DO-PMEM-ALLOC 85
+REDUCE-LOCATION 2583
+REDUCE-EXCEPTION 2554
+PMEM? 73
+PARSER-ERROR 1566
+
+RED-QN
+Used functions and strings:
+GET-QUANTITY 3664
+
+GET-QUANTITY
+Used functions and strings:
+
+GET-QUANTITY-WORD
+Used functions and strings:
+
+RED-QT
+Used functions and strings:
+DO-PMEM-ALLOC 85
+
+RED-OF
+Used functions and strings:
+
+RED-NP
+Used functions and strings:
+DO-PMEM-ALLOC 85
+
+RED-VP
+Used functions and strings:
+
+HACK-TELL-1
+Used functions and strings:
+BE-PATIENT 1029
+PERF-MANY 1294
+
+HACK-TELL
+Used functions and strings:
+IGNORE-FIRST-WORD 1366
+PARSER-ERROR 1566
+DETERMINE-OBJ 2674
+GET-SYNTAX 2303
+
+RED-PERS
+Used functions and strings:
+
+RED-O-NP
+Used functions and strings:
+INSERT-NP 3210
+RED-O-ADJ 3164
+TEST-SR 3249
+
+TEST-O-SR
+Used functions and strings:
+MATCH-OBJECT 1759
+
+TEST-SR
+Used functions and strings:
+NUMERIC-ADJ? 2845
+DO-PMEM-ALLOC 85
+
+INSERT-NP
+Used functions and strings:
+
+RED-O-PP
+Used functions and strings:
+
+RED-O-ADJ
+Used functions and strings:
+
+DO-ORPHAN-TEST
+Used functions and strings:
+
+DETERMINE-NP-XFER
+Used functions and strings:
+
+READY-TO-DISAMBIGUATE?
+Used functions and strings:
+
+FIND-OWNERS
+Used functions and strings:
+FIND-OWNERS 3119
+MATCH-OBJECT 1759
+
+DET-NP-OWNEE?
+Used functions and strings:
+
+DET-NP-NOT-HERE?
+Used functions and strings:
+
+DETERMINE-NP
+Used functions and strings:
+CHECK-DIR-ADJS 2810
+DO-PMEM-ALLOC 85
+FIND-OBJECTS 2040
+NUMERIC-ADJ? 2845
+PMEM? 73
+PARSER-ERROR 1566
+
+NUMERIC-ADJ?
+Used functions and strings:
+
+CHECK-DIR-ADJS
+Used functions and strings:
+MATCH-OBJECT 1759
+
+DETERMINE-OBJ
+Used functions and strings:
+PARSER-ERROR 1566
+DO-PMEM-ALLOC 85
+FIND-OBJECTS 2040
+
+REDUCE-LOCATION
+Used functions and strings:
+PARSER-ERROR 1566
+DO-PMEM-ALLOC 85
+FIND-OBJECTS 2040
+
+REDUCE-EXCEPTION
+Used functions and strings:
+PARSER-ERROR 1566
+DO-PMEM-ALLOC 85
+REDUCE-EXCEPT-IT 2545
+IREDUCE-EXCEPTION 2534
+
+REDUCE-EXCEPT-IT
+Used functions and strings:
+PARSER-ERROR 1566
+
+IREDUCE-EXCEPTION
+Used functions and strings:
+
+RED-SP
+Used functions and strings:
+
+RED-SVD
+Used functions and strings:
+RED-SD 470
+
+RED-SVPNPN
+Used functions and strings:
+DIR-VERB-PRSI? 2275
+GET-SYNTAX 2303
+PARSER-ERROR 1566
+ROOT-VERB 2377
+
+SVN
+Used functions and strings:
+RED-SD 470
+PARSER-ERROR 1566
+GET-SYNTAX 2303
+
+RED-SVN
+Used functions and strings:
+ROOT-VERB 2377
+
+ROOT-VERB
+Used functions and strings:
+
+RED-SV
+Used functions and strings:
+GET-SYNTAX 2303
+
+GET-SYNTAX
+Used functions and strings:
+
+RED-PART
+Used functions and strings:
+
+RED-FCN
+Used functions and strings:
+
+DIR-VERB-PRSI?
+Used functions and strings:
+
+TEST-THINGS
+Used functions and strings:
+ADD-OBJECT 1859
+
+FIND-OBJECTS
+Used functions and strings:
+FIND-OBJECTS 2040
+EXCLUDE-HERE-OBJECT? 2039
+SEARCH-IN-LG? 2038
+MATCH-OBJECT 1759
+DO-PMEM-ALLOC 85
+FIND-DESCENDANTS 1711
+
+EXCLUDE-HERE-OBJECT?
+Used functions and strings:
+
+SEARCH-IN-LG?
+Used functions and strings:
+
+CHECK-ADJS
+Used functions and strings:
+CHECK-ADJS-THERE? 1954
+
+CHECK-ADJS-THERE?
+Used functions and strings:
+
+MULTIPLE-EXCEPTION?
+Used functions and strings:
+EVERYWHERE-VERB? 1923
+
+EVERYWHERE-VERB?
+Used functions and strings:
+
+NOT-IN-FIND-RES?
+Used functions and strings:
+DO-PMEM-ALLOC 85
+
+ADD-OBJECT
+Used functions and strings:
+
+TEST-OBJECT
+Used functions and strings:
+
+MATCH-OBJECT
+Used functions and strings:
+INVALID-OBJECT? 1758
+EXCLUDED? 1739
+
+INVALID-OBJECT?
+Used functions and strings:
+
+EXCLUDED?
+Used functions and strings:
+
+FIND-DESCENDANTS
+Used functions and strings:
+FIND-DESCENDANTS 1711
+
+DO-IT-AGAIN
+Used functions and strings:
+
+TELL-GWIM-MSG
+Used functions and strings:
+TELL-THE 232
+
+CHANGE-LEXV
+Used functions and strings:
+
+NUMBER?
+Used functions and strings:
+
+BUZZER-WORD?
+Used functions and strings:
+
+PARSER-ERROR
+Used functions and strings:
+NP-SAVE 1528
+PMEM? 73
+
+NP-SAVE
+Used functions and strings:
+
+DO-AGAIN
+Used functions and strings:
+
+DO-OOPS
+Used functions and strings:
+
+WORD-PRINT
+Used functions and strings:
+
+UNKNOWN-WORD
+Used functions and strings:
+
+BEG-PARDON
+Used functions and strings:
+
+P-NO-MEM-ROUTINE
+Used functions and strings:
+
+MAIN-LOOP-IT
+Used functions and strings:
+
+FIX-QUOTATIONS
+Used functions and strings:
+
+IGNORE-FIRST-WORD
+Used functions and strings:
+
+LIT?
+Used functions and strings:
+
+QCONTEXT-CHECK
+Used functions and strings:
+
+PERF-MANY
+Used functions and strings:
+
+MAIN-LOOP-1
+Used functions and strings:
+GAME-VERB? 463
+PARSER 289
+
+MAIN-LOOP
+Used functions and strings:
+
+BE-PATIENT
+Used functions and strings:
+
+GET-NONTERMINAL-ACTION
+Used functions and strings:
+
+GET-TERMINAL-ACTION
+Used functions and strings:
+
+PARSE-SENTENCE
+Used functions and strings:
+P-P 490
+PEEK-PSTACK 64
+
+PARSE-IT
+Used functions and strings:
+PMEM-RESET 77
+
+P-P
+Used functions and strings:
+P-P 490
+PMEM? 73
+
+RED-SD
+Used functions and strings:
+DO-PMEM-ALLOC 85
+
+GAME-VERB?
+Used functions and strings:
+
+PARSER
+Used functions and strings:
+TELL-THE 232
+NAKED-DIR? 262
+EXPAND-BE-CONTRACTIONS 164
+READ-INPUT 140
+UPDATE-STATUS-LINE 115
+PMEM-RESET 77
+
+NAKED-DIR?
+Used functions and strings:
+
+TELL-CTHE
+Used functions and strings:
+TELL-CTHE 247
+
+TELL-THE
+Used functions and strings:
+TELL-THE 232
+
+EXPAND-BE-CONTRACTIONS
+Used functions and strings:
+SPECIAL-CONTRACTION? 163
+
+SPECIAL-CONTRACTION?
+Used functions and strings:
+
+SCRIPT-INBUF
+Used functions and strings:
+
+READ-INPUT
+Used functions and strings:
+
+DIGITS
+Used functions and strings:
+
+UPDATE-STATUS-LINE
+Used functions and strings:
+
+INIT-STATUS-LINE
+Used functions and strings:
+
+DO-PMEM-ALLOC
+Used functions and strings:
+
+PMEM-RESET
+Used functions and strings:
+
+PMEM?
+Used functions and strings:
+
+PEEK-PSTACK
+Used functions and strings:
+
diff --git a/h2.serial b/h2.serial
new file mode 100644
index 0000000..175b6c5
--- /dev/null
+++ b/h2.serial
@@ -0,0 +1 @@
+263
diff --git a/h2.syms b/h2.syms
new file mode 100644
index 0000000..457dec0
--- /dev/null
+++ b/h2.syms
Binary files differ
diff --git a/h2.zap b/h2.zap
new file mode 100644
index 0000000..3b3c5e8
--- /dev/null
+++ b/h2.zap
@@ -0,0 +1,58 @@
+ .NEW 6
+; Low core locations
+%ZVERSION:: .BYTE 6
+ .BYTE FLAGS
+%ZORKID:: ZORKID
+%ENDLOD:: ENDLOD
+%START:: GO
+%VOCAB:: VOCAB
+%OBJECT:: OBJECT
+%GLOBAL:: GLOBAL
+%PURBOT:: IMPURE
+%FLAGS:: .WORD 16
+%SERIAL:: .WORD 0
+%SERI1:: .WORD 0
+%SERI2:: .WORD 0
+%FWORDS:: .WORD 0
+%PLENTH:: .WORD 0
+%PCHKSM:: .WORD 0
+%INTWRD:: .WORD 0
+%SCRWRD:: .WORD 0
+%HWRD:: .WORD 0
+%VWRD:: .WORD 0
+%FWRD:: .WORD 0
+%FOFF:: FOFF
+%SOFF:: SOFF
+%CLRWRD:: .WORD 0
+%TCHAR:: 0
+%TWID:: .WORD 0
+%CRFUNC:: .WORD 0
+%CHRSET:: .WORD 0
+%EXTAB:: 0
+ .WORD 0
+ .WORD 0
+ .WORD 0
+ .WORD 0
+ .INSERT "H2DAT" ; Data file
+ .INSERT "H2PUR"
+ .INSERT "PSTACK"
+ .INSERT "PMEM"
+ .INSERT "PARSER"
+ .INSERT "FIND"
+ .INSERT "REDS"
+ .INSERT "BREDS"
+ .INSERT "TOP"
+ .INSERT "PRARE"
+ .INSERT "QVERBS"
+ .INSERT "MACROS"
+ .INSERT "MISC"
+ .INSERT "VERBS"
+ .INSERT "THINGS"
+ .INSERT "PLACES"
+ .INSERT "MAGRATHEA"
+ .INSERT "PEOPLE"
+ .INSERT "GLOBAL"
+
+ .INSERT "H2STR"
+
+ .END
diff --git a/h2.zil b/h2.zil
new file mode 100644
index 0000000..5b7d8df
--- /dev/null
+++ b/h2.zil
@@ -0,0 +1,43 @@
+"COMPILE/LOAD FILE for MILLIWAYS
+Copyright (C) 1988 Infocom, Inc. All rights reserved."
+
+<SETG ZDEBUGGING? T>
+<DEFINE DEBUG-CODE ('X "OPTIONAL" ('Y T))
+ <COND (,ZDEBUGGING? .X) (ELSE .Y)>>
+
+<SETG NEW-PARSER? T>
+;<FREQUENT-WORDS?>
+;<LONG-WORDS?>
+<NEVER-ZAP-TO-SOURCE-DIRECTORY?>
+<ZIP-OPTIONS UNDO>
+<VERSION YZIP>
+
+<IFFLAG (IN-ZILCH
+ <PRINC "Compiling">)
+ (T <PRINC "Loading">)>
+
+<PRINC " MILLIWAYS: interactive fiction from Infocom!
+">
+
+ON!-INITIAL "for ZIL debugging"
+OFF!-INITIAL
+ENABLE!-INITIAL
+DISABLE!-INITIAL
+
+<SET REDEFINE T>
+
+<INSERT-FILE "DEFS">
+
+<XFLOAD "parser.h2">
+
+<INSERT-FILE "MACROS">
+<INSERT-FILE "MISC">
+<INSERT-FILE "SYNTAX">
+<INSERT-FILE "VERBS">
+<INSERT-FILE "THINGS">
+<INSERT-FILE "PLACES">
+<INSERT-FILE "MAGRATHEA">
+<INSERT-FILE "PEOPLE">
+<INSERT-FILE "GLOBAL">
+
+<PROPDEF SIZE 5>
diff --git a/h2.zip b/h2.zip
new file mode 100644
index 0000000..8e325a3
--- /dev/null
+++ b/h2.zip
Binary files differ
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."
+
+<DEFMAC PROB ('BASE?)
+ <FORM NOT <FORM L? .BASE? '<RANDOM 100>>>>
+
+<ADD-TELL-TOKENS
+ a * <PRINTA .X>
+ the * <PRINT-THE .X>
+ The * <START-SENTENCE .X>
+ He+verb * *:STRING <HE-SHE-IT .X 1 .Y>
+ He * <HE-SHE-IT .X 1>
+ he+verb * *:STRING <HE-SHE-IT .X 0 .Y>
+ he * <HE-SHE-IT .X>
+ verb * *:STRING <HE-SHE-IT .X -1 .Y>
+ him * <HIM-HER-IT .X>
+ his * <HIM-HER-IT .X 0 T>
+ His * <HIM-HER-IT .X 1 T>>
+
+<REPLACE-DEFINITION SEE-VERB?
+<ROUTINE SEE-VERB? ()
+ <VERB? ANALYZE SANALYZE CHASTISE ;COUNT EXAMINE FIND
+ ;INVENTORY LOOK LOOK-BEHIND LOOK-DOWN LOOK-INSIDE LOOK-ON
+ LOOK-OUTSIDE LOOK-THROUGH LOOK-UNDER LOOK-UP
+ READ SEARCH SEARCH-FOR SSEARCH-FOR>>>
+
+<REPLACE-DEFINITION SPEAKING-VERB?
+<ROUTINE SPEAKING-VERB? ("OPTIONAL" (PER 0))
+ <COND (<VERB? ANSWER ASK ASK-ABOUT ASK-FOR ;FORGIVE
+ ;GOODBYE HELLO NO REPLY SORRY TELL TELL-ABOUT YES $CALL>
+ <COND (<EQUAL? .PER 0 ,PRSO>
+ <RTRUE>)>)
+ (<VERB? ASK-CONTEXT-ABOUT ASK-CONTEXT-FOR TALK-ABOUT>
+ <COND (<EQUAL? .PER 0>
+ <RTRUE>)>)>>>
+
+;<ROUTINE TELL-FIND-NOT-HERE (PER NUM)
+ <COND (<NOT <EQUAL? .PER 0 ,PLAYER>>
+ <START-SENTENCE .PER>
+ <TELL " looks confused. ">)>
+ <TELL "\"I don't know wh">
+ <COND (<0? .NUM>
+ <TELL "at you mean by">
+ <NOT-HERE-PRINT>)
+ (T
+ <TELL "ich">
+ <NOT-HERE-PRINT>
+ <TELL " you mean">)>
+ <TELL "!\"" CR>>
+
+<DEFMAC ONE? ('TERM)
+ <FORM EQUAL? .TERM 1 T>>
+
+<SETG CANT "You can't ">
+
+<SETG C-ENABLED? 0>
+<SETG C-ENABLED 1>
+<SETG C-DISABLED 0>
+
+<COND (<CHECK-VERSION? ZIP>
+ <DEFMAC GET/B ('TBL 'PTR) <FORM GETB .TBL .PTR>>
+ <DEFMAC PUT/B ('TBL 'PTR 'OBJ) <FORM PUTB .TBL .PTR .OBJ>>
+ <DEFMAC ZMEMQ/B ('OBJ 'TBL "OPT" ('SIZ <>))
+ <COND (<NOT .SIZ>
+ <FORM ZMEMQB .OBJ .TBL>)
+ (T <FORM ZMEMQB .OBJ .TBL .SIZ>)>>
+ <DEFMAC RMGL-SIZE ('TBL) <FORM - <FORM PTSIZE .TBL> 1>>)
+ (T
+ <DEFMAC GET/B ('TBL 'PTR) <FORM GET .TBL .PTR>>
+ <DEFMAC PUT/B ('TBL 'PTR 'OBJ) <FORM PUT .TBL .PTR .OBJ>>
+ <DEFMAC ZMEMQ/B ('OBJ 'TBL "OPT" ('SIZ <>))
+ <COND (<NOT .SIZ>
+ <FORM ZMEMQ .OBJ .TBL>)
+ (T <FORM ZMEMQ .OBJ .TBL .SIZ>)>>
+ <DEFMAC RMGL-SIZE ('TBL) <FORM - <FORM / <FORM PTSIZE .TBL> 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 @@
+
+<ROOM HATCHWAY (LOC ROOMS) (DESC "Hatchway") (DOWN TO RAMP IF HATCH IS OPEN) (
+OUT TO RAMP IF HATCH IS OPEN) (SOUTH TO RAMP IF HATCH IS OPEN) (FLAGS ONBIT
+RLANDBIT) (GLOBAL STAIRS HEART-OF-GOLD HATCH)>
+<OBJECT HATCH (LOC LOCAL-GLOBALS) (DESC "hatch") (ADJECTIVE DOOR) (SYNONYM
+HATCH DOOR) (FLAGS DOORBIT OPENBIT) (ACTION HATCH-F)>
+<VOC "NORTH" NOUN>
+<VOC "SOUTH" NOUN>
+<VOC "FROB" ADJ>
+<VOC "HAND" ADJ>
+<DEFINE-ROUTINE HATCH-F>
+<ROOM RAMP (LOC ROOMS) (DESC "On the Ramp") (FDESC
+"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.") (NORTH TO HATCHWAY IF
+HATCH IS OPEN) (UP TO HATCHWAY IF HATCH IS OPEN) (SOUTH TO BLIGHTED-GROUND) (
+WEST SORRY "You bang you head against the ship's side.") (EAST PER
+FALL-OFF-RAMP) (NE SORRY "You bang you head against the ship's side.") (NW
+SORRY "You bang you head against the ship's side.") (SE PER FALL-OFF-RAMP) (SW
+PER FALL-OFF-RAMP) (DOWN TO BLIGHTED-GROUND) (GLOBAL HATCH) (FLAGS RLANDBIT
+ONBIT)>
+<DEFINE-ROUTINE FALL-OFF-RAMP>
+<ROOM BLIGHTED-GROUND (LOC ROOMS) (DESC "Blighted Ground") (LDESC
+"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.") (NORTH TO
+RAMP) (SOUTH PER WANDER-AROUND) (WEST PER WANDER-AROUND) (EAST PER
+WANDER-AROUND) (NE PER WANDER-AROUND) (NW PER WANDER-AROUND) (SW PER
+WANDER-AROUND) (FLAGS ONLANDBIT ONBIT)>
+<DEFINE-ROUTINE WANDER-AROUND>
+<ROOM LIP1 (LOC ROOMS) (DESC "Crater Lip") (FDESC
+"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.") (LDESC
+"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") (WEST PER
+SLOPE-SCRAMBLE) (EAST PER SLOPE-SCRAMBLE) (NORTH PER SLOPE-SCRAMBLE) (SOUTH PER
+DEATH-BY-BLUBBER) (NW TO BLIGHTED-GROUND) (NE PER SLOPE-SCRAMBLE) (SW TO LIP4)
+(SE TO LIP2) (FLAGS ONLANDBIT ONBIT) (GLOBAL WHALE-CRATER)>
+<DEFINE-ROUTINE DEATH-BY-BLUBBER>
+<DEFINE-ROUTINE SLOPE-SCRAMBLE>
+<ROOM LIP2 (LOC ROOMS) (LDESC
+"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") (DESC "Crater Lip") (WEST PER DEATH-BY-BLUBBER)
+(EAST PER SLOPE-SCRAMBLE) (NORTH PER SLOPE-SCRAMBLE) (SOUTH PER SLOPE-SCRAMBLE)
+(NW TO LIP1) (NE PER WANDER-AROUND) (SW TO LIP3) (SE PER SLOPE-SCRAMBLE) (FLAGS
+ONLANDBIT ONBIT) (GLOBAL WHALE-CRATER)>
+<ROOM LIP3 (LOC ROOMS) (DESC "Crater Lip") (LDESC
+"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.") (NORTH PER DEATH-BY-BLUBBER) (NE TO LIP2) (EAST PER
+SLOPE-SCRAMBLE) (SE PER SLOPE-SCRAMBLE) (SOUTH PER SLOPE-SCRAMBLE) (SW PER
+SLOPE-SCRAMBLE) (WEST PER SLOPE-SCRAMBLE) (NW TO LIP4) (FLAGS ONLANDBIT ONBIT)
+(GLOBAL WHALE-CRATER)>
+<ROOM LIP4 (LOC ROOMS) (DESC "Crater Lip") (FDESC
+"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?") (LDESC
+"The crater lip continues northeat and southeast here,
+and below you is a ledge.") (NORTH PER SLOPE-SCRAMBLE) (NE TO LIP1) (EAST TO
+LEDGE) (DOWN TO LEDGE) (SE TO LIP3) (SOUTH PER SLOPE-SCRAMBLE) (SW PER
+SLOPE-SCRAMBLE) (WEST PER SLOPE-SCRAMBLE) (NW PER SLOPE-SCRAMBLE) (FLAGS ONBIT
+ONLANDBIT) (GLOBAL WHALE-CRATER)>
+<ROOM LEDGE (LOC ROOMS) (DESC "Ledge") (FDESC
+"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.") (LDESC
+"This ledge lies halfway between the crater lip and the floor of the whale
+crater itself.") (NORTH PER DEATH-BY-BLUBBER) (NE PER DEATH-BY-BLUBBER) (EAST
+PER DOWN-TO-CRATER) (SE PER DEATH-BY-BLUBBER) (SOUTH PER DEATH-BY-BLUBBER) (SW
+SORRY "You bang your head on the rock face.") (NW SORRY
+"You bang your head on the rock face.") (FLAGS ONBIT ONLANDBIT) (GLOBAL
+WHALE-CRATER)>
+<DEFINE-ROUTINE DOWN-TO-CRATER>
+<OBJECT WHALE-CRATER-BOX (LOC LOCAL-GLOBALS) (FLAGS CONTBIT TRANSBIT NDESCBIT)>
+
+<ROOM WHALE-CRATER (LOC ROOMS) (DESC "Crater") (FDESC
+"The floor of this deeply crufty crater is splattered with all kinds of disgusting stuff. Film at eleven."
+) (LDESC "This is the whale crater, liberally supplied with whale.") (FLAGS
+ONLANDBIT ONBIT)> \ 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)"
+
+<ROOM HATCHWAY
+ (LOC ROOMS)
+ (DESC "Hatchway")
+ (DOWN TO RAMP IF HATCH IS OPEN)
+ (OUT TO RAMP IF HATCH IS OPEN)
+ (SOUTH TO RAMP IF HATCH IS OPEN)
+ (FLAGS ONBIT RLANDBIT)
+ (GLOBAL STAIRS HEART-OF-GOLD HATCH)
+ ;(ACTION HATCHWAY-F)>
+
+<OBJECT HATCH
+ (LOC LOCAL-GLOBALS)
+ (DESC "hatch")
+ (ADJECTIVE DOOR) ;"for debugging parser"
+ (SYNONYM HATCH ;HATCHWAY DOOR)
+ (FLAGS DOORBIT OPENBIT)
+ (ACTION HATCH-F)>
+
+<VOC "NORTH" NOUN>
+<VOC "SOUTH" NOUN>
+<VOC "FROB" ADJ> ;"for debugging parser"
+<VOC "HAND" ADJ>
+
+<ROUTINE HATCH-F ()
+ <COND (<AND <NOT <EQUAL? ,HERE ,HATCHWAY ,RAMP>>
+ <VERB? OPEN CLOSE EXAMINE RUB>>
+ <NOT-HERE ,HATCH>)
+ ;(<AND <VERB? OPEN THROUGH>
+ <NOT ,LANDED>>
+ <TELL
+"Loud sirens blare, fantastically bright red lights flash from all sides, and
+a soft female voice mentions that opening this hatch in space will evacuate
+the air from the ship." CR>)
+ (<AND <VERB? OPEN THROUGH>
+ <NOT <FSET? ,HATCH ,OPENBIT>>>
+ <TELL "The hatch appears to be jammed shut." CR>)>>
+
+<ROOM RAMP
+ (LOC ROOMS)
+ (DESC "On the Ramp")
+ (FDESC
+"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.")
+ (NORTH TO HATCHWAY IF HATCH IS OPEN)
+ (UP TO HATCHWAY IF HATCH IS OPEN)
+ (SOUTH TO BLIGHTED-GROUND)
+ (WEST SORRY "You bang you head against the ship's side.")
+ (EAST PER FALL-OFF-RAMP)
+ (NE SORRY "You bang you head against the ship's side.")
+ (NW SORRY "You bang you head against the ship's side.")
+ (SE PER FALL-OFF-RAMP)
+ (SW PER FALL-OFF-RAMP)
+ (DOWN TO BLIGHTED-GROUND)
+ (GLOBAL HATCH)
+ (FLAGS RLANDBIT ONBIT ;COLDBIT)>
+;"If COLDBIT is set Player dies of cold after 8 moves unless has dressing
+gown on."
+
+<ROUTINE FALL-OFF-RAMP ()
+ <TELL "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.">
+ <COND (<L? ,MOVES 10>
+ <TELL " This is something which is going to happen to you
+quite a lot, so you might as well get used to it.">)
+ (<TELL " You might not think it's very fair, but nobody said the Galaxy was a very fair place anyway.">)>
+ <JIGS-UP>
+ <RFALSE>>
+
+
+<ROOM BLIGHTED-GROUND
+ (LOC ROOMS)
+ (DESC "Blighted Ground")
+ (LDESC
+"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.")
+ (NORTH TO RAMP)
+ (SOUTH PER WANDER-AROUND)
+ (WEST PER WANDER-AROUND)
+ (EAST PER WANDER-AROUND)
+ (NE PER WANDER-AROUND)
+ ;(SE TO RIDGE1)
+ (NW PER WANDER-AROUND)
+ (SW PER WANDER-AROUND)
+ (FLAGS ONLANDBIT ONBIT ;COLDBIT ;NOAIRBIT)>
+
+<ROUTINE WANDER-AROUND ()
+ <TELL
+"You wander gloomily around for a while, ruining your shoes, becoming
+thoroughly depressed, and ending up where you started." CR>
+ <RFALSE>>
+
+<ROOM LIP1
+ (LOC ROOMS)
+ (DESC "Crater Lip")
+ (FDESC "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.")
+ (LDESC
+"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")
+ (WEST PER SLOPE-SCRAMBLE)
+ (EAST PER SLOPE-SCRAMBLE)
+ (NORTH PER SLOPE-SCRAMBLE)
+ (SOUTH PER DEATH-BY-BLUBBER)
+ (NW TO BLIGHTED-GROUND)
+ (NE PER SLOPE-SCRAMBLE)
+ (SW TO LIP4)
+ (SE TO LIP2)
+ (FLAGS ONLANDBIT ONBIT)
+ (GLOBAL WHALE-CRATER)>
+
+<ROUTINE DEATH-BY-BLUBBER ()
+ <TELL
+"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." CR>
+ <JIGS-UP>
+ <RFALSE>>
+
+<ROUTINE SLOPE-SCRAMBLE ()
+ <TELL "You plunge recklessly over the edge of the " D ,HERE ",
+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." CR>
+ <RFALSE>>
+
+<ROOM LIP2
+ (LOC ROOMS)
+ (LDESC "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")
+ (DESC "Crater Lip")
+ (WEST PER DEATH-BY-BLUBBER)
+ (EAST PER SLOPE-SCRAMBLE)
+ (NORTH PER SLOPE-SCRAMBLE)
+ (SOUTH PER SLOPE-SCRAMBLE)
+ (NW TO LIP1)
+ (NE PER WANDER-AROUND)
+ (SW TO LIP3)
+ (SE PER SLOPE-SCRAMBLE)
+ (FLAGS ONLANDBIT ONBIT)
+ (GLOBAL WHALE-CRATER)>
+
+<ROOM LIP3
+ (LOC ROOMS)
+ (DESC "Crater Lip")
+ (LDESC "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.")
+ (NORTH PER DEATH-BY-BLUBBER)
+ (NE TO LIP2)
+ (EAST PER SLOPE-SCRAMBLE)
+ (SE PER SLOPE-SCRAMBLE)
+ (SOUTH PER SLOPE-SCRAMBLE)
+ (SW PER SLOPE-SCRAMBLE)
+ (WEST PER SLOPE-SCRAMBLE)
+ (NW TO LIP4)
+ (FLAGS ONLANDBIT ONBIT)
+ (GLOBAL WHALE-CRATER)>
+
+
+<ROOM LIP4
+ (LOC ROOMS)
+ (DESC "Crater Lip")
+ (FDESC
+"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?")
+ (LDESC "The crater lip continues northeat and southeast here,
+and below you is a ledge.")
+ (NORTH PER SLOPE-SCRAMBLE)
+ (NE TO LIP1)
+ (EAST TO LEDGE)
+ (DOWN TO LEDGE)
+ (SE TO LIP3)
+ (SOUTH PER SLOPE-SCRAMBLE)
+ (SW PER SLOPE-SCRAMBLE)
+ (WEST PER SLOPE-SCRAMBLE)
+ (NW PER SLOPE-SCRAMBLE)
+ (FLAGS ONBIT ONLANDBIT)
+ (GLOBAL WHALE-CRATER)>
+
+
+<ROOM LEDGE
+ (LOC ROOMS)
+ (DESC "Ledge")
+ (FDESC "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.")
+ (LDESC
+"This ledge lies halfway between the crater lip and the floor of the whale
+crater itself.")
+ (NORTH PER DEATH-BY-BLUBBER)
+ (NE PER DEATH-BY-BLUBBER)
+ (EAST PER DOWN-TO-CRATER)
+ (SE PER DEATH-BY-BLUBBER)
+ (SOUTH PER DEATH-BY-BLUBBER)
+ (SW SORRY "You bang your head on the rock face.")
+ ;(WEST PER UP-TO-LIP)
+ (NW SORRY "You bang your head on the rock face.")
+ (FLAGS ONBIT ONLANDBIT)
+ (GLOBAL WHALE-CRATER)>
+
+<ROUTINE DOWN-TO-CRATER ()
+ <TELL "You hop over the teeth and scramble down to the crater floor">
+ <MOVE ,WINNER ,WHALE-CRATER>>
+
+<OBJECT WHALE-CRATER-BOX
+ (LOC LOCAL-GLOBALS)
+ (FLAGS CONTBIT TRANSBIT NDESCBIT)>
+
+<ROOM WHALE-CRATER
+ (LOC ROOMS)
+ (DESC "Crater")
+ (FDESC
+"The floor of this deeply crufty crater is splattered with all kinds of disgusting stuff. Film at eleven.")
+ (LDESC "This is the whale crater, liberally supplied with whale.")
+ (FLAGS ONLANDBIT ONBIT)> \ 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 @@
+<FLAGS-AND-DEFAULTS () (("CAPITAL-NOUN?" "MISC" #WORD *24210253711*))>
+
+<GLOBAL SCREENWIDTH:NUMBER 0>
+<DEFINE-ROUTINE GO>
+<DEFINE-ROUTINE INTRO>
+<DEFINE-ROUTINE PRINT-THE>
+<DEFINE-ROUTINE THE?>
+<DEFINE-ROUTINE START-SENTENCE>
+<DEFINE-ROUTINE PRINTA>
+<GLOBAL QCONTEXT:OBJECT FORD>
+<GLOBAL LIT:OBJECT RAMP>
+<GLOBAL P-IT-OBJECT:OBJECT GOWN>
+<GLOBAL P-HER-OBJECT:OBJECT TRILLIAN>
+<GLOBAL P-HIM-OBJECT:OBJECT FORD>
+<DEFINE-ROUTINE THIS-IS-IT>
+<DEFINE-ROUTINE NO-PRONOUN?>
+<DEFINE-ROUTINE HE-SHE-IT>
+<DEFINE-ROUTINE HIM-HER-IT>
+<OBJECT HER (LOC GLOBAL-OBJECTS) (SYNONYM HER MADAM) (DESC "her") (FLAGS
+NARTICLEBIT)>
+<OBJECT HIM (LOC GLOBAL-OBJECTS) (SYNONYM HIM SIR) (DESC "him") (FLAGS
+NARTICLEBIT)>
+<OBJECT THEM (LOC GLOBAL-OBJECTS) (SYNONYM THEM) (DESC "them") (FLAGS
+NARTICLEBIT)>
+<CONSTANT P-PROMPT-START 4>
+<GLOBAL P-PROMPT:NUMBER 4>
+<DEFINE-ROUTINE I-PROMPT>
+<DEFINE-ROUTINE DONT-F>
+<DEFINE-ROUTINE NOT-FOUND>
+<DEFINE-ROUTINE VERB-PRINT>
+<DEFINE-ROUTINE NOT-IT>
+<REPLACE-DEFINITION CAPITAL-NOUN? <ROUTINE CAPITAL-NOUN?>>
+<DEFINE-ROUTINE TITLE-NOUN?>
+<GLOBAL SCORE:NUMBER 0>
+<GLOBAL MOVES:NUMBER 0>
+<GLOBAL HERE:OBJECT RAMP>
+<GLOBAL OHERE:OBJECT <>>
+<GLOBAL CLOCKER-RUNNING:NUMBER 0>
+<CONSTANT C-TABLELEN 138>
+<GLOBAL 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>>
+<GLOBAL C-INTS:NUMBER <- 138 <* 1 6>>>
+<CONSTANT C-INTLEN 6>
+<CONSTANT C-ENABLED? 0>
+<CONSTANT C-TICK 1>
+<CONSTANT C-RTN 2>
+<DEFINE-ROUTINE QUEUE>
+<DEFINE-ROUTINE INT>
+<GLOBAL CLOCK-WAIT:FLAG <>>
+<DEFINE-ROUTINE CLOCKER> \ 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."
+
+<GLOBAL SCREENWIDTH:NUMBER 0>
+
+<ROUTINE GO ()
+ <SETG SCREENWIDTH <LOWCORE SCRH>>
+ <COND (<L? ,SCREENWIDTH 64>
+ <TELL "[The screen is too narrow.]" CR>
+ <QUIT>)>
+ <CLEAR -1>
+ <INIT-STATUS-LINE>
+ <V-VERSION>
+ <INTRO>
+ <MAIN-LOOP>
+ <AGAIN>>
+
+<ROUTINE INTRO ()
+ ;<TELL "[LEN=" N <LOWCORE SCRV> " WID=" N ,SCREENWIDTH "]">
+ <CRLF>>
+
+<ROUTINE PRINT-THE (OBJ) ;"the"
+ <COND (<AND <EQUAL? .OBJ ,TURN> <L? 1 ,P-NUMBER>>
+ <TELL !\ N ,P-NUMBER " minutes">)
+ (<EQUAL? .OBJ ,WINDOW>
+ <TELL " the window">)
+ ;(<AND <EQUAL? .OBJ ,P-IT-OBJECT>
+ <FSET? ,IT ,TOUCHBIT>>
+ <TELL " it">
+ <RTRUE>)
+ (T
+ <THE? .OBJ>
+ <TELL !\ D .OBJ>)>>
+
+<ROUTINE THE? (OBJ)
+ <COND (<NOT <FSET? .OBJ ,NARTICLEBIT>>
+ <COND (<OR ;<NOT <FSET? .OBJ ,PERSONBIT>>
+ <IN? .OBJ ,ROOMS>
+ <FSET? .OBJ ,SEENBIT>>
+ <TELL " the">)
+ (<FSET? .OBJ ,VOWELBIT>
+ <TELL " an">)
+ (T <TELL " a">)>)>
+ <COND (T ;<FSET? .OBJ ,PERSONBIT>
+ <FSET .OBJ ,SEENBIT>)>>
+
+<ROUTINE START-SENTENCE (OBJ) ;"The"
+ <THIS-IS-IT .OBJ>
+ <COND (<EQUAL? .OBJ ,PLAYER> <TELL "You"> <RTRUE>)
+ (<EQUAL? .OBJ ,HANDS> <TELL "Your hand"> <RTRUE>)
+ (<EQUAL? .OBJ ,HEAD> <TELL "Your head"> <RTRUE>)
+ (<EQUAL? .OBJ ,EYES> <TELL "Your eyes"> <RTRUE>)
+ (<EQUAL? .OBJ ,TEETH> <TELL "Your teeth"> <RTRUE>)
+ (<EQUAL? .OBJ ,EARS> <TELL "Your ears"> <RTRUE>)>
+ <COND (<NOT <FSET? .OBJ ,NARTICLEBIT>>
+ <COND (<OR ;<NOT <FSET? .OBJ ,PERSONBIT>>
+ <FSET? .OBJ ,SEENBIT>>
+ <TELL "The ">)
+ (<FSET? .OBJ ,VOWELBIT>
+ <TELL "An ">)
+ (T <TELL "A ">)>)>
+ <COND (T ;<FSET? .OBJ ,PERSONBIT>
+ <FSET .OBJ ,SEENBIT>)>
+ <TELL D .OBJ>>
+
+<ROUTINE PRINTA (O) ;"a"
+ <COND (<OR ;<FSET? .O ,PERSONBIT> <FSET? .O ,NARTICLEBIT>> T)
+ (<FSET? .O ,VOWELBIT> <TELL "an ">)
+ (T <TELL "a ">)>
+ <TELL D .O>>
+
+<GLOBAL QCONTEXT:OBJECT FORD>
+<GLOBAL LIT:OBJECT RAMP>
+;<GLOBAL P-IT-WORDS <TABLE <VOC DRESSING ADJ> <VOC GOWN NOUN>>>
+<GLOBAL P-IT-OBJECT:OBJECT GOWN>
+<GLOBAL P-HER-OBJECT:OBJECT TRILLIAN>
+<GLOBAL P-HIM-OBJECT:OBJECT FORD>
+;<GLOBAL P-ONE-NOUN <VOC "FROB">>
+
+<ROUTINE THIS-IS-IT (OBJ)
+ <COND (<EQUAL? .OBJ <> ,NOT-HERE-OBJECT ,PLAYER>
+ <RTRUE>)
+ (<EQUAL? .OBJ ,INTDIR ,GLOBAL-HERE ,ROOMS>
+ <RTRUE>)
+ (<AND <DIR-VERB?> <==? .OBJ ,PRSO>>
+ <RTRUE>)>
+ <COND (<NOT <FSET? .OBJ ,PERSONBIT>>
+ ;<PUT ,P-IT-WORDS 0 <GET ,P-ADJW ,NOW-PRSI>>
+ ;<PUT ,P-IT-WORDS 1 <GET ,P-NAMW ,NOW-PRSI>>
+ <FSET ,IT ,TOUCHBIT> ;"to cause pronoun 'it' in output"
+ <SETG P-IT-OBJECT .OBJ>)
+ (<FSET? .OBJ ,FEMALEBIT>
+ <FSET ,HER ,TOUCHBIT>
+ <SETG P-HER-OBJECT .OBJ>)
+ (<FSET? .OBJ ,PLURALBIT>
+ <FSET ,THEM ,TOUCHBIT>
+ <SETG P-THEM-OBJECT .OBJ>)
+ (T
+ <FSET ,HIM ,TOUCHBIT>
+ <SETG P-HIM-OBJECT .OBJ>)>
+ <RTRUE>>
+
+<ROUTINE NO-PRONOUN? (OBJ "OPTIONAL" (CAP 0))
+ <COND (<EQUAL? .OBJ ,PLAYER>
+ <RFALSE>)
+ (<NOT <FSET? .OBJ ,PERSONBIT>>
+ <COND (<AND <EQUAL? .OBJ ,P-IT-OBJECT>
+ <FSET? ,IT ,TOUCHBIT>>
+ <RFALSE>)>)
+ (<FSET? .OBJ ,FEMALEBIT>
+ <COND (<AND <EQUAL? .OBJ ,P-HER-OBJECT>
+ <FSET? ,HER ,TOUCHBIT>>
+ <RFALSE>)>)
+ (<FSET? .OBJ ,PLURALBIT>
+ <COND (<AND <EQUAL? .OBJ ,P-THEM-OBJECT>
+ <FSET? ,THEM ,TOUCHBIT>>
+ <RFALSE>)>)
+ (T
+ <COND (<AND <EQUAL? .OBJ ,P-HIM-OBJECT>
+ <FSET? ,HIM ,TOUCHBIT>>
+ <RFALSE>)>)>
+ <COND (<ZERO? .CAP> <TELL the .OBJ>)
+ (<ONE? .CAP> <TELL The .OBJ>)>
+ <THIS-IS-IT .OBJ>
+ <RTRUE>>
+
+<ROUTINE HE-SHE-IT (OBJ "OPTIONAL" (CAP 0) (VERB <>)) ;"He/he/+verb"
+ <COND (<NO-PRONOUN? .OBJ .CAP>
+ T)
+ (<NOT <FSET? .OBJ ,PERSONBIT>>
+ <COND (<ZERO? .CAP> <TELL " it">)
+ (<ONE? .CAP> <TELL "It">)>)
+ (<==? .OBJ ,PLAYER>
+ <COND (<ZERO? .CAP> <TELL " you">)
+ (<ONE? .CAP> <TELL "You">)>)
+ (<FSET? .OBJ ,FEMALEBIT>
+ <COND (<ZERO? .CAP> <TELL " she">)
+ (<ONE? .CAP> <TELL "She">)>)
+ ;(<FSET? .OBJ ,PLURALBIT>
+ <COND (<ZERO? .CAP> <TELL " they">)
+ (<ONE? .CAP> <TELL "They">)>)
+ (T
+ <COND (<ZERO? .CAP> <TELL " he">)
+ (<ONE? .CAP> <TELL "He">)>)>
+ <COND (<NOT <ZERO? .VERB>>
+ <PRINTC 32>
+ <COND (<OR <EQUAL? .OBJ ,PLAYER>
+ ;<FSET? .OBJ ,PLURALBIT>>
+ <COND (<=? .VERB "is"> <TELL "are">)
+ (<=? .VERB "has"><TELL "have">)
+ (<=? .VERB "tri"><TELL "try">)
+ (<=? .VERB "empti"><TELL "empty">)
+ (T <TELL .VERB>)>)
+ (T
+ <TELL .VERB>
+ <COND (<OR <EQUAL? .VERB "do" "kiss" "push">
+ <EQUAL? .VERB "tri" "empti">>
+ <TELL !\e>)>
+ <COND (<NOT <EQUAL? .VERB "is" "has">>
+ <TELL !\s>)>)>)>>
+
+<ROUTINE HIM-HER-IT (OBJ "OPTIONAL" (CAP 0) (POSSESS? <>)) ;"His/his/him"
+ <COND (<NO-PRONOUN? .OBJ .CAP>
+ <COND (<NOT <ZERO? .POSSESS?>> <TELL "'s">)>)
+ (<NOT <FSET? .OBJ ,PERSONBIT>>
+ <COND (<ZERO? .CAP> <TELL " it">) (T <TELL "It">)>
+ <COND (<NOT <ZERO? .POSSESS?>> <TELL !\s>)>)
+ (<==? .OBJ ,PLAYER>
+ <COND (<ZERO? .CAP> <TELL " you">) (T <TELL "You">)>
+ <COND (<NOT <ZERO? .POSSESS?>> <TELL !\r>)>)
+ (<FSET? .OBJ ,PLURALBIT>
+ <COND (<NOT <ZERO? .POSSESS?>>
+ <COND (<ZERO? .CAP> <TELL " their">)
+ (T <TELL "Their">)>)
+ (T
+ <COND (<ZERO? .CAP> <TELL " them">)
+ (T <TELL "Them">)>)>)
+ (<FSET? .OBJ ,FEMALEBIT>
+ <COND (<ZERO? .CAP> <TELL " her">) (T <TELL "Her">)>)
+ (T
+ <COND (<NOT <ZERO? .POSSESS?>>
+ <COND (<ZERO? .CAP> <TELL " his">)
+ (T <TELL "His">)>)
+ (T
+ <COND (<ZERO? .CAP> <TELL " him">)
+ (T <TELL "Him">)>)>)>
+ <RTRUE>>
+
+<OBJECT HER
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM ;SHE HER MADAM)
+ (DESC "her")
+ (FLAGS NARTICLEBIT)>
+
+<OBJECT HIM
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM ;HE HIM SIR)
+ (DESC "him")
+ (FLAGS NARTICLEBIT)>
+
+<OBJECT THEM
+ (LOC GLOBAL-OBJECTS)
+ (SYNONYM THEM)
+ (DESC "them")
+ (FLAGS NARTICLEBIT)>
+
+<CONSTANT P-PROMPT-START 4>
+<GLOBAL P-PROMPT:NUMBER 4>
+
+<ROUTINE I-PROMPT ("OPTIONAL" (GARG <>))
+ <COND (<EQUAL? .GARG ,G-DEBUG> <RFALSE>)>
+ <SETG P-PROMPT <- ,P-PROMPT 1>>
+ <RFALSE>>
+
+<ROUTINE DONT-F ()
+ <COND (<VERB? PANIC>
+ <COND (<1? <RANDOM 2>>
+ <TELL
+"Very clever. It looks as if there's a lot you should be panicking about." CR>)
+ (T
+ <TELL
+"Why not? Your position appears quite hopeless." CR>)>)
+ ;(<VERB? LOOK>
+ <SETG DONT-FLAG <>>
+ <PERFORM ,V?CLOSE ,EYES>
+ <RTRUE>)
+ (<VERB? WAIT-FOR WAIT-UNTIL>
+ <TELL "Time doesn't pass..." CR>)
+ (<VERB? TAKE>
+ <TELL "Not taken." CR>)
+ ;(<AND <VERB? LISTEN>
+ <VISIBLE? ,POETRY>>
+ <SETG DONT-FLAG <>>
+ <PERFORM ,V?LISTEN ,POETRY>
+ <RTRUE>)
+ (T
+ <TELL "Not done." CR>)>>
+
+<ROUTINE NOT-FOUND (OBJ "AUX" (WT <>))
+ <COND (<VERB? WALK-TO>
+ <SET WT T>)>
+ <COND (<ZERO? .WT>
+ <SETG CLOCK-WAIT T>
+ <TELL "(Y">)
+ (T <TELL "But y">)>
+ <TELL "ou haven't found" him .OBJ " yet!">
+ <COND (<ZERO? .WT>
+ <TELL !\)>)>
+ <CRLF>
+ <RTRUE>>
+
+<ROUTINE VERB-PRINT ("OPTIONAL" (GERUND <>) "AUX" TMP)
+ <SET TMP <PARSE-VERB ,PARSE-RESULT>>
+ <COND (<==? .TMP 0>
+ <COND (<ZERO? .GERUND> <TELL "tell"> <RTRUE>)
+ (T <TELL "walk">)>)
+ (<OR <T? .GERUND> ;<0? <GETB ,P-VTBL 2>>>
+ <SET TMP <GET .TMP 0>>
+ <COND (<==? .TMP ,W?L> <PRINTB ,W?LOOK>)
+ (<==? .TMP ,W?X> <PRINTB ,W?EXAMINE>)
+ (<==? .TMP ,W?Z> <PRINTB ,W?WAIT>)
+ (<T? .GERUND>
+ <COND (<==? .TMP ,W?BATHE> <TELL "bath">)
+ (<==? .TMP ,W?DIG> <TELL "digg">)
+ (<==? .TMP ,W?GET> <TELL "gett">)
+ (T <PRINTB .TMP>)>)
+ (T <PRINTB .TMP>)>)
+ (T
+ <WORD-PRINT .TMP>
+ ;<PUTB ,P-VTBL 2 0>)>
+ <COND (<T? .GERUND> <TELL "ing?">)>>
+
+<ROUTINE NOT-IT (WHO)
+ <COND (<EQUAL? .WHO ,P-HER-OBJECT>
+ <FCLEAR ,HER ,TOUCHBIT>)
+ (<EQUAL? .WHO ,P-HIM-OBJECT>
+ <FCLEAR ,HIM ,TOUCHBIT>)
+ (<EQUAL? .WHO ,P-THEM-OBJECT>
+ <FCLEAR ,THEM ,TOUCHBIT>)
+ (<EQUAL? .WHO ,P-IT-OBJECT>
+ <FCLEAR ,IT ,TOUCHBIT>)>>
+
+<REPLACE-DEFINITION CAPITAL-NOUN?
+ <ROUTINE CAPITAL-NOUN? (WRD)
+ <OR <TITLE-NOUN? .WRD>
+ <EQUAL? .WRD ,W?FORD ,W?ZAPHOD ,W?BEEBLEBROX>
+ <EQUAL? .WRD ,W?TRILLIAN ,W?TRICIA ,W?MCMILLAN>
+ <EQUAL? .WRD ,W?MARV ,W?MARVIN ,W?PREFECT>>>>
+
+<ROUTINE TITLE-NOUN? (WRD)
+ <OR <EQUAL? .WRD ,W?MR ,W?MS>
+ <EQUAL? .WRD ,W?MISTER ,W?MISS ,W?SIR>
+ ;<EQUAL? .WRD ,W?MRS ,W?DR ,W?DOCTOR>>>
+
+"CLOCK for MILLIWAYS
+Copyright (C) 1988 Infocom, Inc. All rights reserved."
+
+"List of queued routines:
+"
+
+<GLOBAL SCORE:NUMBER 0>
+<GLOBAL MOVES:NUMBER 0>
+<GLOBAL HERE:OBJECT RAMP>
+<GLOBAL OHERE:OBJECT <>>
+
+<GLOBAL CLOCKER-RUNNING:NUMBER 0>
+
+<CONSTANT C-TABLELEN 138> ;"and one for good measure"
+
+<GLOBAL 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 ;"last to run">>
+
+<GLOBAL C-INTS:NUMBER <- 138 <* 1 6>>>
+<CONSTANT C-INTLEN 6>
+<CONSTANT C-ENABLED? 0>
+<CONSTANT C-TICK 1>
+<CONSTANT C-RTN 2>
+
+<ROUTINE QUEUE (RTN TICK "AUX" CINT)
+ ;#DECL ((RTN) ATOM (TICK) FIX (CINT) <PRIMTYPE VECTOR>)
+ <PUT <SET CINT <INT .RTN>> ,C-TICK .TICK>
+ <PUT .CINT ,C-ENABLED? 1>
+ .CINT>
+
+<ROUTINE INT (RTN "OPTIONAL" (DEMON <>) E C INT)
+ ;#DECL ((RTN) ATOM (DEMON) <OR ATOM FALSE> (E C INT) <PRIMTYPE
+ VECTOR>)
+ <SET E <REST ,C-TABLE ,C-TABLELEN>>
+ <SET C <REST ,C-TABLE ,C-INTS>>
+ <REPEAT ()
+ <COND (<==? .C .E>
+ <SETG C-INTS <- ,C-INTS ,C-INTLEN>>
+ ;<AND .DEMON <SETG C-DEMONS <- ,C-DEMONS ,C-INTLEN>>>
+ <SET INT <REST ,C-TABLE ,C-INTS>>
+ <PUT .INT ,C-RTN .RTN>
+ <RETURN .INT>)
+ (<EQUAL? <GET .C ,C-RTN> .RTN> <RETURN .C>)>
+ <SET C <REST .C ,C-INTLEN>>>>
+
+;<ROUTINE ENABLED? (RTN)
+ <NOT <ZERO? <GET <INT .RTN> ,C-ENABLED?>>>>
+
+;<ROUTINE QUEUED? (RTN "AUX" C)
+ <SET C <INT .RTN>>
+ <COND (<ZERO? <GET .C ,C-ENABLED?>> <RFALSE>)
+ (T <GET .C ,C-TICK>)>>
+
+<GLOBAL CLOCK-WAIT:FLAG <>>
+
+<ROUTINE CLOCKER ("AUX" C E TICK (FLG <>) VAL)
+ ;#DECL ((C E) <PRIMTYPE VECTOR> (TICK) FIX ;(FLG) ;<OR FALSE ATOM>)
+ <COND (,CLOCK-WAIT <SETG CLOCK-WAIT <>> <RFALSE>)>
+ <SETG MOVES <+ ,MOVES 1>>
+ <SET C <REST ,C-TABLE ,C-INTS>>
+ <SET E <REST ,C-TABLE ,C-TABLELEN>>
+ <REPEAT ()
+ <COND (<==? .C .E>
+ <RETURN .FLG>)
+ (<NOT <ZERO? <GET .C ,C-ENABLED?>>>
+ <SET TICK <GET .C ,C-TICK>>
+ <COND (<NOT <ZERO? .TICK>>
+ <PUT .C ,C-TICK <- .TICK 1>>
+ <COND (<AND <NOT <G? .TICK 1>>
+ <SET VAL <APPLY <GET .C ,C-RTN>>>>
+ <COND (<OR <ZERO? .FLG>
+ <==? .VAL ,M-FATAL>>
+ <SET FLG .VAL>)>)>)>)>
+ <SET C <REST .C ,C-INTLEN>>>>
diff --git a/parser.zabstr b/parser.zabstr
new file mode 100644
index 0000000..1339073
--- /dev/null
+++ b/parser.zabstr
@@ -0,0 +1,231 @@
+<FLAGS-AND-DEFAULTS (("LONG-WORDS" %<>)("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*))>
+
+<ZZPACKAGE "PARSER">
+<ENTRY PARSER PARSE-SENTENCE PARSE-IT PARSER-ERROR TLEXV P-OFLAG P-WALK-DIR
+RED-SD>
+<RENTRY DEBUG-PARSER>
+<RENTRY ACCESSIBLE? BUZZER-WORD? DIR-VERB? FEMALE GLOBAL-OBJECTS LIT LIT? ONBIT
+OPENBIT P-INBUF P-LEXV P-NUMBER P?THINGS PERFORM PERSONBIT PLAYER
+PRINT-VOCAB-WORD SEARCHBIT SPECIAL-CONTRACTION? SURFACEBIT TAKEBIT TELL-CTHE
+TELL-THE TITLE-ABBR? TRANSBIT TRYTAKEBIT VERBOSITY VISIBLE? WINNER>
+<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS" "SYMBOLS">
+<USE "PSTACK" "PMEM">
+<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
+<BEGIN-SEGMENT 0>
+<COMPILATION-FLAG-DEFAULT P-APOSTROPHE-BREAKS-WORDS T>
+<COMPILATION-FLAG-DEFAULT P-BE-VERB <>>
+<DEFAULTS-DEFINED BE-PATIENT BEG-PARDON BUZZER-WORD? COLLECTIVE-VERB? CONTBIT
+DIR-VERB? FEMALE GAME-VERB? INVISIBLE LIT? NARTICLEBIT NUMBER? ONBIT OPENBIT
+P-NO-MEM-ROUTINE PERSONBIT PLAYER PLURAL QCONTEXT-CHECK READ-INPUT ROOMSBIT
+SEARCHBIT SEENBIT SPECIAL-CONTRACTION? STATUS-LINE SURFACEBIT TAKEBIT TELL-CTHE
+TELL-GWIM-MSG TELL-THE TITLE-ABBR? TOUCHBIT TRANSBIT TRYTAKEBIT UNKNOWN-WORD>
+<COND (<NOT <GASSIGNED? DEBUG-PARSER>> <SETG DEBUG-PARSER <>>)>
+<DEFAULT-DEFINITION CONTBIT T>
+<DEFAULT-DEFINITION FEMALE T>
+<DEFAULT-DEFINITION INVISIBLE T>
+<DEFAULT-DEFINITION NARTICLEBIT T>
+<DEFAULT-DEFINITION ONBIT T>
+<DEFAULT-DEFINITION OPENBIT T>
+<DEFAULT-DEFINITION PERSONBIT T>
+<DEFAULT-DEFINITION PLAYER T>
+<DEFAULT-DEFINITION PLURAL T>
+<DEFAULT-DEFINITION ROOMSBIT T>
+<DEFAULT-DEFINITION SEARCHBIT T>
+<DEFAULT-DEFINITION SEENBIT T>
+<DEFAULT-DEFINITION SURFACEBIT T>
+<DEFAULT-DEFINITION TAKEBIT T>
+<DEFAULT-DEFINITION TOUCHBIT T>
+<DEFAULT-DEFINITION TRANSBIT T>
+<DEFAULT-DEFINITION TRYTAKEBIT T>
+<DEFMAC IF-SHORT ('EXPR1 "OPT" 'EXPR2) <COND (<L=? ,NUMBER-WORD-CLASSES 15> <
+COND (<AND .EXPR1 <N==? .EXPR1 '<>>> .EXPR1)>) (<ASSIGNED? EXPR2> .EXPR2)>>
+<CONSTANT STATE-STACK <ALLOCATE-PSTACK>>
+<CONSTANT SPLIT-STACK <ALLOCATE-PSTACK>>
+<CONSTANT DATA-STACK <ALLOCATE-PSTACK>>
+<CONSTANT LEXV-LENGTH 59>
+<CONSTANT LEXV-LENGTH-BYTES <+ 2 <* 4 ,LEXV-LENGTH>>>
+<CONSTANT P-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
+*00000000000*>>
+<CONSTANT G-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
+*00000000000*>>
+<CONSTANT O-LEXV <ITABLE ,LEXV-LENGTH (LEXV) 0 #BYTE *00000000000* #BYTE
+*00000000000*>>
+<CONSTANT INBUF-LENGTH <+ 1 ,LEXV-LENGTH>>
+<CONSTANT P-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
+<CONSTANT G-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
+<CONSTANT O-INBUF <ITABLE ,INBUF-LENGTH (BYTE LENGTH) 0>>
+<CONSTANT P-LEXWORDS 1>
+<CONSTANT P-LEXSTART 1>
+<CONSTANT P-LEXELEN 2>
+<CONSTANT OOPS-TABLE <TABLE <> <> <> <> <>>>
+<CONSTANT O-START 0>
+<CONSTANT O-LENGTH 1>
+<CONSTANT O-END 2>
+<CONSTANT O-PTR 3>
+<CONSTANT O-AGAIN 4>
+<GLOBAL WINNER:OBJECT PLAYER>
+<GLOBAL P-OFLAG:NUMBER 0>
+<GLOBAL P-NUMBER:NUMBER 0>
+<GLOBAL CURRENT-REDUCTION <>>
+<GLOBAL PARSER-RESULT <>>
+<GLOBAL P-WALK-DIR <>>
+<GLOBAL TLEXV 0>
+<GLOBAL OTLEXV 0>
+<CONSTANT ERROR-ARGS:TABLE <ITABLE 4 <>>>
+<GLOBAL ERROR-STRING:STRING <>>
+<GLOBAL ERROR-PRIORITY:NUMBER 0>
+<ADD-WORD "AGAIN" MISCWORD>
+<ADD-WORD "G" MISCWORD>
+<ADD-WORD "OOPS" MISCWORD>
+<ADD-WORD "O" MISCWORD>
+<GLOBAL P-LEN:NUMBER 0>
+<DEFAULT-DEFINITION STATUS-LINE <ROUTINE INIT-STATUS-LINE> <GLOBAL OLD-HERE:
+OBJECT <>> <ROUTINE UPDATE-STATUS-LINE> <ROUTINE DIGITS>>
+<DEFAULT-DEFINITION READ-INPUT <GLOBAL DEMO-VERSION? <>> <ROUTINE READ-INPUT> <
+ROUTINE SCRIPT-INBUF>>
+<CONSTANT P-QB-WORDS-1 <PLTABLE <VOC "ARE"> <VOC "CAN"> <VOC "COULD"> <VOC "DO"
+> <VOC "DOES"> <VOC "DID"> <VOC "HE"> <VOC "I"> <VOC "IS"> <VOC "IT"> <VOC
+"SHE"> <VOC "SHOULD"> <VOC "THAT"> <VOC "THEY"> <VOC "WAS"> <VOC "WE"> <VOC
+"WERE"> <VOC "WILL"> <VOC "WOULD"> <VOC "YOU">>>
+<CONSTANT P-QB-WORDS-2 <PLTABLE <VOC "NOT"> <VOC "NOT"> <VOC "NOT"> <VOC "NOT">
+<VOC "NOT"> <VOC "NOT"> <VOC "IS"> <VOC "AM"> <VOC "NOT"> <VOC "IS"> <VOC "IS">
+<VOC "NOT"> <VOC "IS"> <VOC "ARE"> <VOC "NOT"> <VOC "ARE"> <VOC "NOT"> <VOC
+"NOT"> <VOC "NOT"> <VOC "ARE">>>
+<CONSTANT P-QA-WORDS1 <PLTABLE <VOC "AREN"> <VOC "CAN"> <VOC "COULDN"> <VOC
+"DON"> <VOC "DOESN"> <VOC "DIDN"> <VOC "HE"> <VOC "I"> <VOC "ISN"> <VOC "IT"> <
+VOC "SHE"> <VOC "SHOULDN"> <VOC "THAT"> <VOC "THEY"> <VOC "WASN"> <VOC "WE"> <
+VOC "WEREN"> <VOC "WON"> <VOC "WOULDN"> <VOC "YOU">>>
+<CONSTANT P-QA-WORDS2 <PLTABLE <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "T"
+> <VOC "T"> <VOC "S"> <VOC "M"> <VOC "T"> <VOC "S"> <VOC "S"> <VOC "T"> <VOC
+"S"> <VOC "RE"> <VOC "T"> <VOC "RE"> <VOC "T"> <VOC "T"> <VOC "T"> <VOC "RE">>>
+
+<DEFAULT-DEFINITION SPECIAL-CONTRACTION? <ROUTINE SPECIAL-CONTRACTION?>>
+<DEFINE-ROUTINE EXPAND-BE-CONTRACTIONS>
+<DEFAULT-DEFINITION TELL-THE <ROUTINE TELL-THE>>
+<DEFAULT-DEFINITION TELL-CTHE <ROUTINE TELL-CTHE>>
+<COMPILATION-FLAG-DEFAULT P-ZORK0 <>>
+<COMPILATION-FLAG-DEFAULT P-PS-ADV T>
+<GLOBAL P-DIRECTION:NUMBER 0>
+<COMPILATION-FLAG-DEFAULT P-TITLE-ABBRS <>>
+<DEFAULT-DEFINITION TITLE-ABBR? <DEFMAC TITLE-ABBR? ('WRD) <FORM EQUAL? .WRD ,
+W?MR ,W?MRS ,W?MS>>>
+<DEFINE-ROUTINE NAKED-DIR?>
+<DEFINE-ROUTINE PARSER>
+<DEFAULT-DEFINITION GAME-VERB? <CONSTANT GAME-VERB-TABLE <LTABLE 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>> <ROUTINE GAME-VERB?>>
+<DEFINE-ROUTINE RED-SD>
+<GLOBAL SPLITS:NUMBER 0>
+<DEFINE-ROUTINE P-P>
+<CONSTANT PARSE-RESULT <MAKE-PARSE-RESULT>>
+<GLOBAL P-WORD-NUMBER:NUMBER 0>
+<GLOBAL P-WORDS-AGAIN:NUMBER 0>
+<GLOBAL P-OLEN:NUMBER 0>
+<DEFINE-ROUTINE PARSE-IT>
+<GLOBAL P-RUNNING:TABLE <>>
+<GLOBAL PARSE-SENTENCE-ACTIVATION <>>
+<DEFINE-ROUTINE PARSE-SENTENCE>
+<DEFINE-ROUTINE GET-TERMINAL-ACTION>
+<DEFINE-ROUTINE GET-NONTERMINAL-ACTION>
+<GLOBAL P-RESPONDED:NUMBER 0>
+<DEFAULT-DEFINITION BE-PATIENT <ROUTINE BE-PATIENT>>
+<DEFINE-ROUTINE MAIN-LOOP>
+<DEFAULT-DEFINITION COLLECTIVE-VERB? <DEFMAC COLLECTIVE-VERB? () '<VERB? COUNT>
+>>
+<DEFAULT-DEFINITION DIR-VERB? <DEFMAC DIR-VERB? () '<VERB? WALK>>>
+<DEFINE-ROUTINE MAIN-LOOP-1>
+<DEFINE-ROUTINE PERF-MANY>
+<DEFAULT-DEFINITION QCONTEXT-CHECK <ROUTINE QCONTEXT-CHECK>>
+<GLOBAL LIT:OBJECT <>>
+<DEFAULT-DEFINITION LIT? <ROUTINE LIT?>>
+<DEFINE-ROUTINE IGNORE-FIRST-WORD>
+<DEFINE-ROUTINE FIX-QUOTATIONS>
+<DEFINE-ROUTINE MAIN-LOOP-IT>
+<DEFAULT-DEFINITION P-NO-MEM-ROUTINE <ROUTINE P-NO-MEM-ROUTINE>>
+<DEFAULT-DEFINITION BEG-PARDON <ROUTINE BEG-PARDON>>
+<DEFAULT-DEFINITION UNKNOWN-WORD <ROUTINE UNKNOWN-WORD>>
+<DEFINE-ROUTINE WORD-PRINT>
+<DEFMAC PRINT-VOCAB-WORD ('WD) <FORM PRINTB .WD>>
+<DEFINE-ROUTINE DO-OOPS>
+<DEFINE-ROUTINE DO-AGAIN>
+<DEFINE-ROUTINE NP-SAVE>
+<DEFINE-ROUTINE PARSER-ERROR>
+<DEFAULT-DEFINITION BUZZER-WORD? <IFN-P-BE-VERB <CONSTANT P-W-WORDS <PLTABLE <
+VOC "WHAT"> <IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHAT'S">> <VOC "WHEN"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHEN'S">> <VOC "WHERE"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHERE'S">> <VOC "WHO"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHO'S">> <VOC "WHY"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WHY'S">> <VOC "HOW"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "HOW'S">> <VOC "WOULD"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "WOULDN'T">> <VOC "COULD"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "COULDN'T">> <VOC "SHOULD"> <
+IFN-P-APOSTROPHE-BREAKS-WORDS <VOC "SHOULDN'T">>>>> <IFN-P-BE-VERB <IFFLAG (
+P-APOSTROPHE-BREAKS-WORDS <CONSTANT P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC
+"AREN">> <IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULDN">> <
+IFN-P-BE-VERB <VOC "DIDN">> <IFN-P-BE-VERB <VOC "DOESN">> <IFN-P-BE-VERB <VOC
+"DON">> <VOC "HASN"> <VOC "HAVEN"> <IFN-P-BE-VERB <VOC "HE">> <VOC "I"> <VOC
+"I"> <IFN-P-BE-VERB <VOC "I">> <VOC "I"> <IFN-P-BE-VERB <VOC "ISN">> <
+IFN-P-BE-VERB <VOC "IT">> <VOC "LET"> <IFN-P-BE-VERB <VOC "SHE">> <
+IFN-P-BE-VERB <VOC "SHOULDN">> <IFN-P-BE-VERB <VOC "THAT">> <IFN-P-BE-VERB <VOC
+"THEY">> <IFN-P-BE-VERB <VOC "WASN">> <IFN-P-BE-VERB <VOC "WE">> <VOC "WE"> <
+IFN-P-BE-VERB <VOC "WEREN">> <IFN-P-BE-VERB <VOC "WON">> <IFN-P-BE-VERB <VOC
+"WOULDN">> <IFN-P-BE-VERB <VOC "YOU">>>> <CONSTANT P-Q-WORDS2 <PLTABLE <
+IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
+IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "T">> <
+VOC "T"> <VOC "T"> <IFN-P-BE-VERB <VOC "S">> <VOC "D"> <VOC "LL"> <
+IFN-P-BE-VERB <VOC "M">> <VOC "VE"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
+VOC "S">> <VOC "S"> <IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "T">> <
+IFN-P-BE-VERB <VOC "S">> <IFN-P-BE-VERB <VOC "RE">> <IFN-P-BE-VERB <VOC "T">> <
+IFN-P-BE-VERB <VOC "RE">> <VOC "LL"> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <
+VOC "T">> <IFN-P-BE-VERB <VOC "T">> <IFN-P-BE-VERB <VOC "RE">>>>) (T <CONSTANT
+P-Q-WORDS1 <PLTABLE <IFN-P-BE-VERB <VOC "AREN'T">> <IFN-P-BE-VERB <VOC "CAN'T">
+> <IFN-P-BE-VERB <VOC "COULDN'T">> <IFN-P-BE-VERB <VOC "DIDN'T">> <
+IFN-P-BE-VERB <VOC "DOESN'T">> <IFN-P-BE-VERB <VOC "DON'T">> <VOC "HASN'T"> <
+VOC "HAVEN'T"> <IFN-P-BE-VERB <VOC "HE'S">> <VOC "I'D"> <VOC "I'LL"> <
+IFN-P-BE-VERB <VOC "I'M">> <VOC "I'VE"> <IFN-P-BE-VERB <VOC "ISN'T">> <
+IFN-P-BE-VERB <VOC "IT'S">> <VOC "LET'S"> <IFN-P-BE-VERB <VOC "SHE'S">> <
+IFN-P-BE-VERB <VOC "SHOULDN'T">> <IFN-P-BE-VERB <VOC "THAT'S">> <IFN-P-BE-VERB
+<VOC "THEY'RE">> <IFN-P-BE-VERB <VOC "WASN'T">> <IFN-P-BE-VERB <VOC "WE'RE">> <
+VOC "WE'LL"> <IFN-P-BE-VERB <VOC "WEREN'T">> <IFN-P-BE-VERB <VOC "WON'T">> <
+IFN-P-BE-VERB <VOC "WOULDN'T">> <IFN-P-BE-VERB <VOC "YOU'RE">>>>)> <CONSTANT
+P-Q-WORDS <PLTABLE <IFN-P-BE-VERB <VOC "AM">> <IFN-P-BE-VERB <VOC "ARE">> <
+IFN-P-BE-VERB <VOC "CAN">> <IFN-P-BE-VERB <VOC "COULD">> <IFN-P-BE-VERB <VOC
+"DID">> <IFN-P-BE-VERB <VOC "DO">> <VOC "HAS"> <VOC "HAVE"> <IFN-P-BE-VERB <VOC
+"IS">> <VOC "LIKE"> <IFN-P-BE-VERB <VOC "SHOULD">> <VOC "WANT"> <IFN-P-BE-VERB
+<VOC "WAS">> <IFN-P-BE-VERB <VOC "WERE">> <IFN-P-BE-VERB <VOC "WILL">> <
+IFN-P-BE-VERB <VOC "WOULD">>>>> <CONSTANT P-N-WORDS <PLTABLE <VOC "ZERO"> <VOC
+"TEN"> <VOC "ELEVEN"> <VOC "TWELVE"> <VOC "THIRTEEN"> <VOC "FOURTEEN"> <VOC
+"FIFTEEN"> <VOC "SIXTEEN"> <VOC "SEVENTEEN"> <VOC "EIGHTEEN"> <VOC "NINETEEN">
+<VOC "TWENTY"> <VOC "THIRTY"> <VOC "FORTY"> <VOC "FIFTY"> <VOC "SIXTY"> <VOC
+"SEVENTY"> <VOC "EIGHTY"> <VOC "NINETY"> <VOC "HUNDRED"> <VOC "THOUSAND"> <VOC
+"MILLION"> <VOC "BILLION">>> <CONSTANT P-C-WORDS <PLTABLE <VOC "ASS"> <VOC
+"ASSHOLE"> <VOC "BASTARD"> <VOC "BITCH"> <VOC "COCK"> <VOC "COCKSUCKER"> <VOC
+"CRAP"> <VOC "CUNT"> <VOC "CUSS"> <VOC "DAMN"> <VOC "DAMNED"> <VOC "FUCK"> <VOC
+"FUCKED"> <VOC "FUCKER"> <VOC "FUCKING"> <VOC "GODDAMN"> <VOC "GODDAMNED"> <VOC
+"HELL"> <VOC "PISS"> <VOC "SCREW"> <VOC "SHIT"> <VOC "SHITHEAD"> <VOC "SUCKS">>
+> <ROUTINE BUZZER-WORD?> <CONSTANT OFFENDED <LTABLE 0 "What charming language!"
+"Computers aren't impressed by naughty words!"
+"You ought to be ashamed of yourself!"
+"Hey, save that talk for the locker room!" "Step outside and say that!"
+"And so's your old man!">> <IFN-P-BE-VERB <DEFINE W-WORD-REPLY (WD) <COND (<OR
+<NOT <EQUAL? .WD ,W?WHAT ,W?WHO>> <NOT <EQUAL? ,WINNER ,PLAYER>>> <COND (<
+EQUAL? .WD ,W?WHERE> <TO-DO-X-USE-Y "locate" "FIND"> <RTRUE>) (T <TO-DO-X-USE-Y
+"ask about" "TELL ME ABOUT"> <RTRUE>)>) (T <TELL "[Maybe you could "> <COND (<
+FSET? ,LIBRARY ,TOUCHBIT> <TELL "look that up in the">) (T <TELL "find an">)> <
+TELL " encyclopedia.]" CR>)>> <DEFINE TO-DO-X-USE-Y (STR1 STR2) <TELL "[To " .
+STR1 " something, use the command: " .STR2 ,P-SOMETHING> <RTRUE>> <CONSTANT
+P-SOMETHING " (something).]|"> <VOC "(SOMETHI"> <VOC "SOMETHING"> <DEFINE
+TELL-PLEASE-USE-COMMANDS ("AUX" (THRESH <COND (<FSET? ,GREAT-HALL ,TOUCHBIT> 10
+) (T 2)>)) <TELL "["> <COND (<L? ,P-ERRS .THRESH> <PRINT "Please use commands">
+<TELL ", not statements or questions"> <PRINTR ".]">) (T <TELL-SAMPLE-COMMANDS>
+)>>>>
+<DEFAULT-DEFINITION NUMBER? <ADD-WORD "INT.NUM" ADJ> <ADD-WORD "INT.NUM" NOUN>
+<ADD-WORD "INT.TIM" ADJ> <ADD-WORD "INT.TIM" NOUN> <ROUTINE NUMBER?>>
+<DEFINE-ROUTINE CHANGE-LEXV>
+<CONSTANT GWIM-MSG <TABLE 0 0 0 0>>
+<DEFAULT-DEFINITION TELL-GWIM-MSG <ROUTINE TELL-GWIM-MSG>>
+<DEFINE-ROUTINE DO-IT-AGAIN>
+<END-SEGMENT>
+<ENDPACKAGE> \ 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 0000000..46e3151
--- /dev/null
+++ b/pass101
Binary files differ
diff --git a/pass33 b/pass33
new file mode 100644
index 0000000..b643ae4
--- /dev/null
+++ b/pass33
Binary files differ
diff --git a/people.zabstr b/people.zabstr
new file mode 100644
index 0000000..bc1cbd8
--- /dev/null
+++ b/people.zabstr
@@ -0,0 +1,68 @@
+
+<CONSTANT PLAYER-C 0>
+<CONSTANT MARVIN-C 1>
+<CONSTANT FORD-C 2>
+<CONSTANT ZAPHOD-C 3>
+<CONSTANT TRILLIAN-C 4>
+<CONSTANT CHARACTER-MAX 4>
+<CONSTANT BODY-PARTS-OWNERS <TABLE (LENGTH PURE) PLAYER MARVIN FORD ZAPHOD
+TRILLIAN>>
+<OBJECT PLAYER (LOC RAMP) (DESC "yourself") (SYNONYM ME MYSELF SELF) (FLAGS
+NDESCBIT NARTICLEBIT SEARCHBIT PERSONBIT SEENBIT TOUCHBIT OPENBIT) (CHARACTER 0
+) (ACTION PLAYER-F)>
+<CONSTANT ME PLAYER>
+<DEFINE-ROUTINE PLAYER-F>
+<DEFINE-ROUTINE TOO-BAD-SIT-HIDE>
+<DEFINE-ROUTINE FUCKING-CLEAR>
+<CONSTANT YOU-ARE "You already are!">
+<OBJECT MARVIN (LOC RAMP) (DESC "Marvin") (TEXT
+"Marvin, the Paranoid Android, looks very depressed.") (ADJECTIVE DEPRESSED
+PARANOID) (SYNONYM MARVIN MARV ROBOT ANDROID) (FLAGS NARTICLEBIT PERSONBIT) (
+LDESC 0) (WEST SORRY "sulking") (LINE 0) (CHARACTER 1) (DESCFCN MARVIN-D) (
+ACTION MARVIN-F)>
+<CONSTANT M-OTHER 42>
+<DEFINE-ROUTINE MARVIN-F>
+<ADJ-SYNONYM MR MISTER>
+<ADJ-SYNONYM MS MISS>
+<OBJECT FORD (LOC RAMP) (DESC "Ford Prefect") (TEXT
+"Ford is a Betelgeusan who could pass for an Earthling.") (ADJECTIVE FORD MR) (
+SYNONYM FORD PREFECT) (FLAGS PERSONBIT CONTBIT SEARCHBIT OPENBIT NARTICLEBIT) (
+LDESC 0) (WEST SORRY "deep in thought") (LINE 0) (CHARACTER 2) (DESCFCN FORD-D)
+(ACTION FORD-F)>
+<DEFINE-ROUTINE ASKING-ABOUT?>
+<DEFINE-ROUTINE FORD-F>
+<DEFINE-ROUTINE TELL-DUNNO>
+<CONSTANT PRESIDENT " President of the Galaxy">
+<OBJECT ZAPHOD (LOC RAMP) (DESC "Zaphod Beeblebrox") (TEXT
+"Zaphod looks completely normal, except for his two heads.") (ADJECTIVE ZAPHOD
+PRESIDENT MR) (SYNONYM BEEBLEBROX ZAPHOD PRESIDENT) (FLAGS NARTICLEBIT
+PERSONBIT) (LDESC 0) (WEST SORRY "admiring himself") (LINE 0) (CHARACTER 3) (
+DESCFCN ZAPHOD-D) (ACTION ZAPHOD-F)>
+<DEFINE-ROUTINE ZAPHOD-F>
+<OBJECT TRILLIAN (LOC RAMP) (DESC "Trillian") (TEXT
+"Tricia MacMillan is more attractive than most astrophysicists.") (ADJECTIVE
+TRICIA DARK-HAIR DARK HAIRED MS) (SYNONYM TRILLIAN MCMILLAN WOMAN TRICIA) (
+FLAGS NARTICLEBIT PERSONBIT CONTBIT OPENBIT FEMALE) (LDESC 0) (WEST SORRY
+"looking at you with pity") (LINE 0) (CHARACTER 4) (DESCFCN TRILLIAN-D) (ACTION
+TRILLIAN-F)>
+<DEFINE-ROUTINE TRILLIAN-F>
+<CONSTANT CHARACTER-TABLE <PTABLE PLAYER MARVIN FORD ZAPHOD TRILLIAN>>
+<CONSTANT FOLLOW-LOC <TABLE 0 0 0 0 0>>
+<CONSTANT TOUCHED-LDESCS <TABLE 0 0 0 0 0>>
+<DEFINE-ROUTINE MARVIN-D>
+<DEFINE-ROUTINE FORD-D>
+<DEFINE-ROUTINE ZAPHOD-D>
+<DEFINE-ROUTINE TRILLIAN-D>
+<DEFINE-ROUTINE DESCRIBE-PERSON>
+<CONSTANT LDESC-STRINGS <PLTABLE "dancing" "sipping sherry" "watching you"
+"looking at you with suspicion" 0 "walking along" "sobbing quietly"
+"poised to attack" "waiting patiently" "eating with relish" "preparing dinner"
+"listening to you" "lounging and chatting" "asleep" 0 "listening"
+"preparing to leave" "deep in thought" "out cold" "ignoring you" "searching"
+"playing the piano" "following you" "brushing her hair" "looking sleepy">>
+<DEFINE-ROUTINE PERSON-F>
+<DEFINE-ROUTINE CARRY-CHECK>
+<DEFINE-ROUTINE TRANSIT-TEST>
+<DEFINE-ROUTINE COM-CHECK>
+<DEFINE-ROUTINE COMMON-ASK-ABOUT>
+<DEFINE-ROUTINE COMMON-OTHER> \ 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:"
+<CONSTANT PLAYER-C 0>
+<CONSTANT MARVIN-C 1>
+<CONSTANT FORD-C 2>
+<CONSTANT ZAPHOD-C 3>
+<CONSTANT TRILLIAN-C 4>
+<CONSTANT CHARACTER-MAX 4>
+
+<CONSTANT BODY-PARTS-OWNERS
+ <TABLE (LENGTH PURE) PLAYER MARVIN FORD ZAPHOD TRILLIAN>>
+
+<OBJECT PLAYER
+ (LOC RAMP)
+ (DESC "yourself")
+ (SYNONYM ;"I" ME MYSELF SELF)
+ (FLAGS NDESCBIT NARTICLEBIT SEARCHBIT PERSONBIT SEENBIT TOUCHBIT
+ ;TRANSBIT OPENBIT ;"see GET-OBJECT")
+ (CHARACTER 0)
+ (ACTION PLAYER-F)>
+
+<CONSTANT ME PLAYER>
+
+<ROUTINE PLAYER-F ("OPTIONAL" (ARG <>) "AUX" (L <>))
+ <COND (<NOT <==? .ARG ,M-WINNER>>
+ <COND (<DOBJ? PLAYER>
+ <COND (<VERB? ;DANCE ;GOODBYE HELLO SORRY THANK>
+ <HAR-HAR>
+ <RTRUE>)
+ (<VERB? ALARM>
+ <TELL ,YOU-ARE CR>
+ <RTRUE>)
+ ;(<VERB? EXAMINE>
+ <TELL "You are wearing">
+ <COND (<ZERO? ,NOW-WEARING> <TELL " nothing">)
+ (T <TELL the ,NOW-WEARING>)>
+ <SET L <FIRST? ,PLAYER>>
+ <REPEAT ()
+ <COND (<ZERO? .L>
+ <RETURN>)
+ (<AND <FSET? .L ,WORNBIT>
+ <NOT <==? .L ,NOW-WEARING>>>
+ <TELL " and" the .L>)>
+ <SET L <NEXT? .L>>>
+ <TELL "." CR>
+ <RTRUE>)
+ (<VERB? FIND>
+ <TELL "You're right here, ">
+ <TELL-LOCATION>
+ <CRLF>
+ <RTRUE>)
+ (<VERB? FOLLOW>
+ <TELL
+"I'd like to, but like most computers I don't have legs." CR>
+ <RTRUE>)
+ (<OR <VERB? KILL MUNG>
+ ;<AND <VERB? SHOOT>
+ <IOBJ? BLASTER>>>
+ <JIGS-UP "Done.">
+ <RTRUE>)
+ (<VERB? LISTEN>
+ <TELL "Yes?" CR>
+ <RTRUE>)
+ (<VERB? MOVE>
+ <V-WALK-AROUND>
+ <RTRUE>)
+ (<VERB? PULL-TOGETHER>
+ <TELL ,ZEN CR>
+ <RTRUE>)
+ (<VERB? SEARCH>
+ <V-INVENTORY>
+ <RTRUE>)
+ (<VERB? TELL>
+ <FUCKING-CLEAR>
+ <TELL
+"Talking to yourself is a sign of impending mental collapse." CR>
+ <RTRUE>)>)
+ (<IOBJ? PLAYER>
+ <COND (<VERB? GIVE>
+ <COND (<AND <IN? ,PRSO ,PLAYER>
+ <NOT <DOBJ? BABEL-FISH>>>
+ <PRE-TAKE>
+ <RTRUE>)
+ (T
+ <PERFORM ,V?TAKE ,PRSO>
+ <RTRUE>)>)>)
+ (T <RFALSE>)>)
+ ;(<DIVESTMENT? ,NOW-WEARING>
+ <COND (<NO-CHANGING?> <RTRUE>)
+ (T
+ <COND (<AND <NOT <ZERO? ,NOW-WEARING>>
+ <NOT <VERB? DISEMBARK REMOVE>>>
+ <FIRST-YOU "remove" ,NOW-WEARING>
+ <FCLEAR ,NOW-WEARING ,WORNBIT>
+ <SETG NOW-WEARING <>>)>
+ <RFALSE>)>)
+ (<AND <T? ,PRSI>
+ <NOT <VERB? SEARCH-FOR>>
+ <FSET? ,PRSI ,SECRETBIT>
+ <NOT <FSET? ,PRSI ,SEENBIT>>>
+ <NOT-FOUND ,PRSI>
+ <RTRUE>)
+ (<AND <T? ,PRSO>
+ <NOT <VERB? FIND WALK>>
+ <FSET? ,PRSO ,SECRETBIT>
+ <NOT <FSET? ,PRSO ,SEENBIT>>>
+ <NOT-FOUND ,PRSO>
+ <RTRUE>)
+ ;(<AND <T? ,AWAITING-REPLY>
+ <VERB? FOLLOW THROUGH WALK WALK-TO>>
+ <SETG CLOCK-WAIT T>
+ <PLEASE-ANSWER>
+ <RTRUE>)
+ (<AND <EQUAL? <SET L <LOC ,PLAYER>> ,HERE ;,CAR>
+ ;<NOT ,PLAYER-SEATED>
+ ;<NOT ,PLAYER-HIDING>>
+ <RFALSE>)
+ (<T? ,P-WALK-DIR> <TOO-BAD-SIT-HIDE>)
+ (<EQUAL? ,PRSO <> ,ROOMS .L>
+ <RFALSE>)
+ (<VERB? WALK-TO SEARCH SEARCH-FOR FIND>
+ <COND (<DOBJ? SLEEP-GLOBAL> <RFALSE>)
+ (T <TOO-BAD-SIT-HIDE>)>)
+ (<SPEAKING-VERB?> <RFALSE>)
+ (<GAME-VERB?> <RFALSE>)
+ (<REMOTE-VERB?> <RFALSE>)
+ (<VERB? AIM FAINT LISTEN LOOK-ON NOD SHOOT SMILE>
+ <RFALSE>)
+ (<HELD? ,PRSO> <RFALSE>)
+ (<HELD? ,PRSO ,GLOBAL-OBJECTS> <RFALSE>)
+ (<VERB? EXAMINE> <RFALSE>)
+ (<NOT <HELD? ,PRSO .L ;,PLAYER-SEATED>> <TOO-BAD-SIT-HIDE>)
+ (<NOT ,PRSI> <RFALSE>)
+ (<HELD? ,PRSI> <RFALSE>)
+ (<HELD? ,PRSI ,GLOBAL-OBJECTS> <RFALSE>)
+ (<NOT <HELD? ,PRSI .L ;,PLAYER-SEATED>> <TOO-BAD-SIT-HIDE>)>>
+
+<ROUTINE TOO-BAD-SIT-HIDE ()
+ <MOVE ,WINNER ,HERE>
+ <FIRST-YOU "stand up">
+ <RFALSE>>
+
+<ROUTINE FUCKING-CLEAR ()
+ <SETG P-CONT <>>
+ ;<SETG QUOTE-FLAG <>>
+ <RFATAL>>
+
+<CONSTANT YOU-ARE "You already are!">
+
+;<ROUTINE PLEASE-ANSWER ("AUX" (P <GETB ,QUESTIONERS ,AWAITING-REPLY>))
+ <TELL D .P " says, \"">
+ <COND (<EQUAL? .P ,BUTLER ,DOCTOR>
+ <TELL "Pardon me, "TN", but">)
+ (T <TELL "Wait a mo'.">)>
+ <TELL " I asked you a question.\"" CR>>
+
+<OBJECT MARVIN
+ (LOC RAMP)
+ (DESC "Marvin")
+ (TEXT "Marvin, the Paranoid Android, looks very depressed.")
+ (ADJECTIVE DEPRESSED PARANOID)
+ (SYNONYM MARVIN MARV ROBOT ANDROID)
+ (FLAGS NARTICLEBIT PERSONBIT)
+ (LDESC 0)
+ (WEST SORRY "sulking")
+ (LINE 0) ;"unfriendliness"
+ (CHARACTER 1)
+ (DESCFCN MARVIN-D)
+ (ACTION MARVIN-F)>
+
+<CONSTANT M-OTHER 42>
+
+<ROUTINE MARVIN-F ("OPTIONAL" (ARG <>) "AUX" OBJ X)
+ <COND (<==? .ARG ,M-WINNER>
+ <COND (<NOT <GRAB-ATTENTION ,MARVIN>> <RFATAL>)
+ (<SET X <COM-CHECK ,MARVIN>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>)
+ (<==? .X ,M-OTHER> <RFATAL>)
+ (T <RTRUE>)>)
+ (T
+ <FUCKING-CLEAR>
+ <TELL
+"\"I think you ought to know I'm feeling very depressed.\"" CR>)>)
+ (<SET OBJ <ASKING-ABOUT? ,MARVIN>>
+ <COND (<NOT <GRAB-ATTENTION ,MARVIN .OBJ>>
+ <RFATAL>)
+ (<EQUAL? .OBJ ,OBJECT-OF-GAME>
+ <TELL
+"\"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.\"" CR>)
+ (<SET X <COMMON-ASK-ABOUT ,MARVIN .OBJ>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
+ (T <TELL-DUNNO ,MARVIN .OBJ>)>)
+ (<AND <VERB? ALARM SHAKE>
+ <EQUAL? <GETP ,MARVIN ,P?LDESC> 14 ;"asleep">>
+ <TELL "Rather like trying to wake the dead." CR>)
+ (T <PERSON-F ,MARVIN .ARG>)>>
+
+<ADJ-SYNONYM MR MISTER>
+<ADJ-SYNONYM MS MISS>
+
+<OBJECT FORD
+ (LOC RAMP)
+ (DESC "Ford Prefect")
+ (TEXT "Ford is a Betelgeusan who could pass for an Earthling.")
+ (ADJECTIVE FORD MR)
+ (SYNONYM FORD PREFECT)
+ (FLAGS PERSONBIT CONTBIT SEARCHBIT OPENBIT NARTICLEBIT)
+ (LDESC 0)
+ (WEST SORRY "deep in thought")
+ (LINE 0) ;"unfriendliness"
+ (CHARACTER 2)
+ (DESCFCN FORD-D)
+ (ACTION FORD-F)>
+
+<ROUTINE ASKING-ABOUT? (WHO "AUX" DR)
+ <COND (<VERB? ASK-ABOUT ;CONFRONT SHOW>
+ <COND (<EQUAL? .WHO ,PRSO>
+ <RETURN ,PRSI>)>)
+ ;(<VERB? FIND ;WHAT>
+ <COND (<EQUAL? .WHO ,WINNER>
+ <RETURN ,PRSO>)>)
+ (T <RFALSE>)>>
+
+<ROUTINE FORD-F ("OPTIONAL" (ARG <>) "AUX" OBJ X)
+ <COND (<==? .ARG ,M-WINNER>
+ <COND (<NOT <GRAB-ATTENTION ,FORD>> <RFATAL>)
+ (<SET X <COM-CHECK ,FORD>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>)
+ (<==? .X ,M-OTHER> <RFATAL>)
+ (T <RTRUE>)>)
+ (T
+ <FUCKING-CLEAR>
+ <TELL "Ford, busy scanning the sky">
+ <COND (<EQUAL? ,HERE ,PUB>
+ <TELL " through the window">)>
+ <TELL ", ignores you." CR>)>)
+ (<SET OBJ <ASKING-ABOUT? ,FORD>>
+ <COND (<NOT <GRAB-ATTENTION ,FORD .OBJ>>
+ <RFATAL>)
+ (<EQUAL? .OBJ ,THIRD-PLANET>
+ <TELL
+"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." CR>)
+ (<SET X <COMMON-ASK-ABOUT ,FORD .OBJ>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
+ (T <TELL-DUNNO ,FORD .OBJ>)>)
+ (<AND <VERB? ALARM SHAKE>
+ <EQUAL? <GETP ,FORD ,P?LDESC> 14 ;"asleep">>
+ <TELL "Rather like trying to wake the dead." CR>)
+ (T <PERSON-F ,FORD .ARG>)>>
+
+<ROUTINE TELL-DUNNO (PER OBJ)
+ <COND ;(<FSET? .OBJ ,PERSONBIT>
+ <TELL "\"I don't indulge much in idle gossip, you know.\"" CR>)
+ (T
+ <TELL "\"You know as much as I do.\"" CR>)>>
+
+<CONSTANT PRESIDENT " President of the Galaxy">
+
+<OBJECT ZAPHOD
+ (LOC RAMP)
+ (DESC "Zaphod Beeblebrox")
+ (TEXT "Zaphod looks completely normal, except for his two heads.")
+ (ADJECTIVE ZAPHOD PRESIDENT MR)
+ (SYNONYM BEEBLEBROX ZAPHOD PRESIDENT)
+ (FLAGS NARTICLEBIT PERSONBIT ;NDESCBIT)
+ (LDESC 0)
+ (WEST SORRY "admiring himself")
+ (LINE 0) ;"unfriendliness"
+ (CHARACTER 3)
+ (DESCFCN ZAPHOD-D)
+ (ACTION ZAPHOD-F)>
+
+<ROUTINE ZAPHOD-F ("OPTIONAL" (ARG <>) "AUX" OBJ X)
+ <COND (<==? .ARG ,M-WINNER>
+ <COND (<NOT <GRAB-ATTENTION ,ZAPHOD>> <RFATAL>)
+ (<SET X <COM-CHECK ,ZAPHOD>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>)
+ (<==? .X ,M-OTHER> <RFATAL>)
+ (T <RTRUE>)>)
+ (T
+ <FUCKING-CLEAR>
+ <TELL "\"Shut up, Earthman.\"" CR>)>)
+ (<SET OBJ <ASKING-ABOUT? ,ZAPHOD>>
+ <COND (<NOT <GRAB-ATTENTION ,ZAPHOD .OBJ>>
+ <RFATAL>)
+ (<SET X <COMMON-ASK-ABOUT ,ZAPHOD .OBJ>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
+ (T <TELL-DUNNO ,ZAPHOD .OBJ>)>)
+ (<VERB? EXAMINE>
+ <TELL "Zaphod has two heads." CR>)
+ (T <PERSON-F ,ZAPHOD .ARG>)>>
+
+<OBJECT TRILLIAN
+ (LOC RAMP)
+ (DESC "Trillian")
+ (TEXT "Tricia MacMillan is more attractive than most astrophysicists.")
+ (ADJECTIVE TRICIA DARK-HAIR DARK HAIRED MS)
+ (SYNONYM TRILLIAN MCMILLAN WOMAN TRICIA)
+ (FLAGS NARTICLEBIT PERSONBIT ;NDESCBIT CONTBIT OPENBIT FEMALE)
+ (LDESC 0)
+ (WEST SORRY "looking at you with pity")
+ (LINE 0) ;"unfriendliness"
+ (CHARACTER 4)
+ (DESCFCN TRILLIAN-D)
+ (ACTION TRILLIAN-F)>
+
+<ROUTINE TRILLIAN-F ("OPTIONAL" (ARG <>) "AUX" OBJ X)
+ <COND (<==? .ARG ,M-WINNER>
+ <COND (<NOT <GRAB-ATTENTION ,TRILLIAN>> <RFATAL>)
+ (<SET X <COM-CHECK ,TRILLIAN>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>)
+ (<==? .X ,M-OTHER> <RFATAL>)
+ (T <RTRUE>)>)
+ (T
+ <FUCKING-CLEAR>
+ <TELL
+D ,TRILLIAN " smiles disinterestedly at you and looks away." CR>)>)
+ (<SET OBJ <ASKING-ABOUT? ,TRILLIAN>>
+ <COND (<NOT <GRAB-ATTENTION ,TRILLIAN .OBJ>>
+ <RFATAL>)
+ (<SET X <COMMON-ASK-ABOUT ,TRILLIAN .OBJ>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
+ (T <TELL-DUNNO ,TRILLIAN .OBJ>)>)
+ (T <PERSON-F ,TRILLIAN .ARG>)>>
+
+<CONSTANT CHARACTER-TABLE
+ <PTABLE PLAYER MARVIN FORD ZAPHOD TRILLIAN ;4>>
+
+<CONSTANT FOLLOW-LOC <TABLE 0 0 0 0 0>>
+
+<CONSTANT TOUCHED-LDESCS <TABLE 0 0 0 0 0>>
+
+;<ROUTINE WHY-ME ()
+ <COND (<PROB 33>
+ <TELL "\"You could do that " 'PLAYER ", you know.\"" CR>)
+ (<PROB 50>
+ <TELL "\"If you think that will help, do it!\"" CR>)
+ (T <TELL "\"I think you can do that better " 'PLAYER ".\"" CR>)>>
+
+<ROUTINE MARVIN-D ("OPTIONAL" (ARG <>))
+ <DESCRIBE-PERSON ,MARVIN>
+ <RTRUE>>
+
+<ROUTINE FORD-D ("OPTIONAL" X)
+ <COND (<EQUAL? <GETP ,FORD ,P?LDESC> 14 ;"asleep">
+ <TELL "Ford is in the corner, snoring loudly." CR>)
+ (T
+ <DESCRIBE-PERSON ,FORD>
+ <RTRUE>)>>
+
+<ROUTINE ZAPHOD-D ("OPTIONAL" (ARG <>))
+ <DESCRIBE-PERSON ,ZAPHOD>
+ <RTRUE>>
+
+<ROUTINE TRILLIAN-D ("OPTIONAL" (ARG <>))
+ <DESCRIBE-PERSON ,TRILLIAN>
+ <RTRUE>>
+
+<ROUTINE DESCRIBE-PERSON (PER "AUX" (STR <>))
+ <SET STR <GETP .PER ,P?LDESC>>
+ <COND (<AND .STR ;<NOT <==? .STR 6 ;"walking along">>>
+ <PUT ,TOUCHED-LDESCS <GETP .PER ,P?CHARACTER> .STR>
+ <RFALSE>)>
+ <TELL The .PER " is ">
+ <COND (<AND <SET STR <GETPT .PER ,P?WEST>>
+ <SET STR <GET .STR ,NEXITSTR>>>
+ <TELL .STR>)
+ (T
+ <TELL "looking bored">)>
+ <TELL ".">
+ <COND (<==? .STR 6 ;"walking along"> <PRINTC 32>)
+ (T <CRLF>)>
+ <RTRUE>>
+
+<CONSTANT LDESC-STRINGS
+ <PLTABLE "dancing"
+ "sipping sherry"
+ ;3 "watching you" ;"talking quietly"
+ "looking at you with suspicion"
+ 0 ;"gazing out the window"
+ ;6 "walking along"
+ "sobbing quietly"
+ "poised to attack"
+ ;9 "waiting patiently"
+ "eating with relish"
+ "preparing dinner"
+ ;12 "listening to you"
+ "lounging and chatting"
+ "asleep"
+ ;15 0 ;"reading a note"
+ "listening"
+ "preparing to leave"
+ ;18 "deep in thought"
+ "out cold"
+ "ignoring you"
+ ;21 "searching"
+ "playing the piano"
+ "following you"
+ ;24 "brushing her hair"
+ "looking sleepy">>
+
+;<ROUTINE TELL-ABOUT-OBJECT (PER OBJ GL "AUX" C)
+ <COND (<T? <GET .GL ,PLAYER-C>>
+ <SET C <GETP .PER ,P?CHARACTER>>
+ <COND (<ZERO? <GET .GL .C>>
+ <PUT .GL .C T>
+ <RETURN <GOOD-SHOW .PER .OBJ>>)
+ (T <TELL"\"I know that you found a " D .OBJ ".\"" CR>)>)>>
+
+<ROUTINE PERSON-F (PER ARG "AUX" OBJ X L C N)
+ <SET L <LOC .PER>>
+ <SET C <GETP .PER ,P?CHARACTER>>
+ <COND (<VERB? ALARM SHAKE>
+ <COND (<==? ,PRSO .PER>
+ <COND (<UNSNOOZE .PER T>
+ <TELL He .PER " gasps to see you so close!" CR>
+ <RTRUE>)
+ (T
+ <TELL He+verb .PER "is" " still ">
+ <COND (<SET X <GETP .PER ,P?LDESC>>
+ <TELL <GET ,LDESC-STRINGS .X>>)
+ (<SET X <GETPT .PER ,P?WEST>>
+ <TELL <GET .X ,NEXITSTR>>)>
+ <TELL "." CR>)>)>)
+ (<VERB? GIVE>
+ <COND (<AND <EQUAL? ,PRSI .PER> <HELD? ,PRSO>>
+ <COND (<NOT <GRAB-ATTENTION .PER>> <RFATAL>)>
+ <RFALSE>)>)
+ (<VERB? LAMP-OFF>
+ <COND (<T? <GETP .PER ,P?LINE>>
+ <TELL "Seems you've already done that." CR>)
+ (T <WONT-HELP>)>)
+ (<VERB? MUNG SEARCH SEARCH-FOR>
+ <COND (<AND <==? .PER ,PRSO>
+ <FSET? .PER ,PERSONBIT>
+ <NOT <FSET? .PER ,MUNGBIT>>>
+ <PUTP .PER ,P?LINE <+ 1 <GETP .PER ,P?LINE>>>
+ <COND (<NOT <EQUAL? <GETP .PER ,P?LDESC>
+ 4 ;"looking at you with suspicion">>
+ <PUTP .PER ,P?LDESC 20 ;"ignoring you">)>
+ <TELL
+He .PER " pushes you away and mutters, \"I don't think that's
+called for.\"" CR>
+ <RTRUE>)>)
+ (<VERB? SHOW>
+ <COND (<==? .PER ,PRSO>
+ <COND (<AND ;<NOT <EQUAL? ,PRSI ,PASSAGE>>
+ <NOT <GRAB-ATTENTION .PER>>>
+ <RFATAL>)
+ (T
+ <PERFORM ,V?TELL-ABOUT ,PRSO ,PRSI>
+ <RTRUE>)>)>)
+ (<VERB? SMILE>
+ <COND (<==? .PER ,PRSO>
+ <COND (<NOT <GRAB-ATTENTION .PER>>
+ <RFATAL>)
+ (T
+ <TELL He+verb ,PRSO "smile" " back at you." CR>
+ <RTRUE>)>)>)
+ (<VERB? TELL-ABOUT>
+ <COND (<==? .PER ,PRSO>
+ <COND (<NOT <GRAB-ATTENTION .PER>>
+ <RFATAL>)>
+ <PUTP .PER ,P?LDESC 12 ;"listening to you">
+ ;<COND (<SECRET-PASSAGE-OR-DOOR? ,PRSI>
+ <TELL-ABOUT-OBJECT ,PRSO ,PASSAGE ,FOUND-PASSAGES>
+ <RTRUE>)>
+ <TELL "\"I don't know what you mean.\"" CR>)>)
+ (<VERB? THROW-AT>
+ <COND (<AND <==? .PER ,PRSI>
+ <FSET? .PER ,PERSONBIT>
+ <NOT <FSET? .PER ,MUNGBIT>>>
+ <MOVE ,PRSO ,PRSI>
+ <TELL He .PER " catches" the ,PRSO " with" his .PER !\ >
+ <COND ;(<EQUAL? .PER ,DEB ,DOCTOR> <TELL "lef">)
+ (T <TELL "righ">)>
+ <TELL "t hand." CR>
+ <RTRUE>)>)
+ ;(<SET OBJ <ASKING-ABOUT? .PER>>
+ <COND (<NOT <GRAB-ATTENTION .PER>>
+ <RFATAL>)
+ ;(<SET X <COMMON-ASK-ABOUT .PER .OBJ>>
+ <COND (<==? .X ,M-FATAL> <RFALSE>) (T <RTRUE>)>)
+ (T <DONT-KNOW .PER .OBJ>)>)
+ (T <COMMON-OTHER .PER>)>>
+
+"People Functions"
+
+<ROUTINE CARRY-CHECK (PER)
+ <COND (<FIRST? .PER>
+ <TELL He+verb .PER "is" " holding">
+ <PRINT-CONTENTS .PER>
+ <TELL "." CR>)>>
+
+<ROUTINE TRANSIT-TEST (PER)
+ <COND (<OR <VERB? DISEMBARK LEAVE TAKE-TO THROUGH WALK WALK-TO>
+ ;<AND <VERB? FOLLOW>
+ <DOBJ? PLAYER>>>
+ T ;<WILLING? .PER>)>>
+
+<ROUTINE COM-CHECK (PER "AUX" N)
+ <SET N <GETP .PER ,P?LINE>>
+ <COND (<VERB? $CALL> ;"e.g. TAMARA, LOVE ME"
+ <DONT-UNDERSTAND>
+ <RETURN ,M-OTHER>)
+ (<TRANSIT-TEST .PER>
+ <RFATAL>)
+ (<VERB? ALARM HELLO SORRY>
+ <COND (<OR <DOBJ? ROOMS> <==? ,PRSO .PER>>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,PRSA .PER>
+ <RTRUE>)
+ (T <RFALSE>)>)
+ (<L? 0 .N>
+ <TELL "\"I'm too ">
+ <COND (<1? .N> <TELL "peeved">) (T <TELL "angry">)>
+ <TELL " with you now.\"" CR>
+ <RTRUE>)
+ (<VERB? NO THANK YES>
+ <RFATAL> ;"let thru to next handler")
+ (<VERB? FOLLOW WALK-TO>
+ <COND (<AND <VERB? WALK-TO>
+ <DOBJ? SLEEP-GLOBAL ;BED>>
+ <RFATAL>)
+ (T
+ <TELL
+"\"I will go where I please, thank you very much.\"" CR>
+ <RTRUE>)>)
+ (<VERB? INVENTORY>
+ <COND (<NOT <CARRY-CHECK .PER>>
+ <TELL He+verb .PER "is" "n't holding anything." CR>)>
+ <RTRUE>)
+ (<VERB? LISTEN>
+ <COND (<OR <DOBJ? PLAYER>
+ <NOT <IN? ,PRSO ,GLOBAL-OBJECTS>>>
+ <TELL "\"I'm trying to!\"" CR>
+ <RTRUE>)
+ (T <RFALSE>)>)
+ (<VERB? RUB>
+ <FACE-RED>
+ <RTRUE>)>
+ <COND ;(<AND <VERB? DANCE> <DOBJ? PLAYER>>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,PRSA .PER>
+ <RTRUE>)
+ (<OR ;<VERB? DANCE>
+ <AND <VERB? WALK>
+ <DOBJ? P?OUT>>>
+ <RFATAL> ;"let thru to next handler")
+ (<VERB? KISS>
+ <UNSNOOZE .PER>
+ <TELL
+"\"I really don't think this is the proper time or place.\"" CR>)
+ ;(<VERB? WALK-TO>
+ <COND (<DOBJ? HERE GLOBAL-HERE>
+ <TELL "\"I am here!\"" CR>)>)
+ (<VERB? TAKE ;"GET SEND SEND-TO BRING">
+ <COND (<IN? ,PRSO ,PLAYER>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?GIVE ,PRSO .PER>
+ <RTRUE>)>)
+ (<VERB? EXAMINE LOOK-INSIDE READ>
+ <COND (<IN? ,PRSO ,PLAYER>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?SHOW .PER ,PRSO>
+ <RTRUE>)>)
+ (<AND <VERB? GIVE THROW-AT> <FSET? ,PRSI ,PERSONBIT>>
+ <SETG WINNER ,PRSI>
+ <PERFORM ,V?ASK-FOR .PER ,PRSO>
+ <RTRUE>)
+ (<AND <VERB? SGIVE> <FSET? ,PRSO ,PERSONBIT>>
+ <SETG WINNER ,PRSO>
+ <PERFORM ,V?ASK-FOR .PER ,PRSI>
+ <RTRUE>)
+ (<VERB? HELP>
+ <COND (<EQUAL? ,PRSO <> ,PLAYER>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ASK .PER>
+ <RTRUE>)
+ (T <RFATAL>)>)
+ (<VERB? FIND SHOW SSHOW>
+ <COND (<VERB? SHOW>
+ <SETG PRSA ,V?SSHOW>
+ <SET N ,PRSI>
+ <SETG PRSI ,PRSO>
+ <SETG PRSO .N>)>
+ <COND (<IN? ,PRSO ,ROOMS> ;"SHOW ME MY ROOM"
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?WALK-TO ,PRSO>
+ <RTRUE>)
+ (<IN? ,PRSO .PER>
+ <COND (<==? <ITAKE> T>
+ <TELL
+He .PER " fumbles in" his .PER " pocket and produces" him ,PRSO "." CR>)>
+ <RTRUE>)
+ (<VERB? FIND>
+ ;<SETG WINNER ,PLAYER>
+ ;<PERFORM ,PRSA ,PRSO>
+ <RFATAL>)>)
+ (<VERB? TELL>
+ <COND (<DOBJ? PLAYER>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ASK .PER>
+ <RTRUE>)>)
+ (<VERB? TELL-ABOUT>
+ <COND (<FSET? ,PRSO ,PERSONBIT>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ASK-ABOUT .PER ,PRSI>
+ ;<SETG WINNER .PER>
+ <RTRUE>)>)
+ (<VERB? STOP WAIT-FOR>
+ <COND (<DOBJ? HERE GLOBAL-HERE PLAYER ROOMS>
+ <COND (<==? .PER ,FOLLOWER>
+ <SETG FOLLOWER 0>
+ <TELL "\"As you wish.\"" CR>)
+ (T
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?$CALL .PER>
+ <RTRUE>)>)>)
+ (<VERB? ;WHAT TALK-ABOUT>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ASK-ABOUT .PER ,PRSO>
+ <RTRUE>)>>
+
+<ROUTINE COMMON-ASK-ABOUT (PER OBJ)
+ <COND (<EQUAL? .OBJ .PER>
+ <TELL "\"I have no secrets. Anyone can see what I am.\"" CR>)
+ (<EQUAL? .OBJ ,PLAYER>
+ <TELL "\"You're Arthur Dent, the next-to-last Earthling.\"" CR>)
+ (<FSET? .OBJ ,PERSONBIT>
+ <RFALSE>)
+ (<EQUAL? .OBJ ,OBJECT-OF-GAME>
+ <TELL
+"\"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.\"" CR>)
+ (<IN? .OBJ .PER>
+ <TELL "\"I have it right here.\"" CR>)>>
+
+<ROUTINE COMMON-OTHER (PER "AUX" (X <>) N)
+ <COND (<VERB? ASK> <RFALSE>)
+ (<VERB? EXAMINE>
+ <TELL <GETP .PER ,P?TEXT> CR>
+ <COND (<AND <IN? .PER ,HERE>
+ <SET N <FIRST? .PER>>
+ <NOT <FSET? .N ,NDESCBIT>>>
+ <COND (<CARRY-CHECK .PER>
+ <SET X T>)>)>
+ <COND (<FSET? .PER ,MUNGBIT>
+ <COND (<NOT <ZERO? .X>> <TELL "And">)>
+ <HE-SHE-IT .PER <NOT .X> "is">
+ <TELL !\ <GET ,LDESC-STRINGS <GETP .PER ,P?LDESC>> "." CR>)>
+ <RTRUE>)
+ (<AND <EQUAL? ,PRSO .PER> <VERB? SHOW>>
+ <PERFORM ,V?ASK-ABOUT ,PRSO ,PRSI>
+ <RTRUE>)>>
diff --git a/places.zabstr b/places.zabstr
new file mode 100644
index 0000000..40d4145
--- /dev/null
+++ b/places.zabstr
@@ -0,0 +1,29 @@
+
+<OBJECT ROOMS (DESC "that") (FLAGS NARTICLEBIT)>
+<DEFINE-ROUTINE DOOR-ROOM>
+<DEFINE-ROUTINE FIND-IN>
+<DEFINE-ROUTINE FIND-FLAG-NOT>
+<DEFINE-ROUTINE FIND-FLAG-LG>
+<DEFINE-ROUTINE FIND-FLAG-HERE>
+<DEFINE-ROUTINE FIND-FLAG-HERE-NOT>
+<DEFINE-ROUTINE UNIMPORTANT-THING-F>
+<OBJECT WINDOW (LOC LOCAL-GLOBALS) (DESC "window") (SYNONYM WINDOW WINDSHIELD
+WINDSCREEN DOOR) (FLAGS SEENBIT NDESCBIT) (ACTION WINDOW-F)>
+<DEFINE-ROUTINE WINDOW-F>
+<ROOM PUB (LOC ROOMS) (SYNONYM ALCOHOL) (DESC "restaurant") (FLAGS RLANDBIT
+ONBIT OUTSIDE) (GLOBAL WINDOW PUB-FURNISHINGS) (THINGS <> PEOPLE
+UNIMPORTANT-THING-F) (ACTION PUB-F)>
+<DEFINE-ROUTINE PUB-F>
+<OBJECT PUB-FURNISHINGS (LOC LOCAL-GLOBALS) (DESC "it") (ADJECTIVE USUAL SOGGY)
+(SYNONYM BEERMAT GLASSES BOTTLE GLASS) (FLAGS NDESCBIT NARTICLEBIT) (ACTION
+UNIMPORTANT-THING-F)>
+<OBJECT BEER (DESC "lots of beer") (SYNONYM LOTS BITTER PINT BEER) (FLAGS
+DRINKBIT NARTICLEBIT NDESCBIT) (ACTION BEER-F)>
+<GLOBAL DRUNK-LEVEL 0>
+<DEFINE-ROUTINE BEER-F>
+<OBJECT SANDWICH (LOC PUB) (DESC "cheese sandwich") (ADJECTIVE CHEESE
+UNINVITING) (SYNONYM PLATE SANDWICH) (FLAGS NDESCBIT EATBIT TRYTAKEBIT) (SIZE
+10) (ACTION SANDWICH-F)>
+<GLOBAL SANDWICH-BOUGHT:FLAG <>>
+<DEFINE-ROUTINE SANDWICH-F>
+<CONSTANT HANDS-OFF "The barman snaps \"Hands off until you pay for it!\""> \ 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"
+
+<OBJECT ROOMS
+ (DESC "that")
+ (FLAGS NARTICLEBIT)>
+
+;<ROUTINE NULL-F ("OPTIONAL" A1 A2)
+ <RFALSE>>
+
+<ROUTINE DOOR-ROOM (RM DR "AUX" (P 0) TBL)
+ <REPEAT ()
+ <COND (<OR <0? <SET P <NEXTP .RM .P>>>
+ <L? .P ,LOW-DIRECTION>>
+ <RFALSE>)
+ (<AND <==? ,DEXIT <PTSIZE <SET TBL <GETPT .RM .P>>>>
+ <==? .DR <GET/B .TBL ,DEXITOBJ>>>
+ <RETURN <GET/B .TBL ,REXIT>>)>>>
+
+<ROUTINE FIND-IN (RM FLAG "OPTIONAL" (EXCLUDED <>) "AUX" O)
+ <SET O <FIRST? .RM>>
+ <REPEAT ()
+ <COND (<NOT .O> <RFALSE>)
+ (<AND <FSET? .O .FLAG>
+ <NOT <FSET? .O ,INVISIBLE>>
+ <NOT <==? .O .EXCLUDED>>>
+ <RETURN .O>)
+ (T <SET O <NEXT? .O>>)>>>
+
+<ROUTINE FIND-FLAG-NOT (RM FLAG ;"OPTIONAL" ;(EXCLUDED <>) "AUX" O)
+ <SET O <FIRST? .RM>>
+ <REPEAT ()
+ <COND (<NOT .O> <RFALSE>)
+ (<AND <NOT <FSET? .O .FLAG>>
+ <NOT <FSET? .O ,INVISIBLE>>
+ ;<NOT <==? .O .EXCLUDED>>>
+ <RETURN .O>)
+ (T <SET O <NEXT? .O>>)>>>
+
+<ROUTINE FIND-FLAG-LG (RM FLAG "OPTIONAL" (FLAG2 0) "AUX" TBL O (CNT 0) SIZE)
+ <COND (<SET TBL <GETPT .RM ,P?GLOBAL>>
+ <SET SIZE <RMGL-SIZE .TBL>>
+ <REPEAT ()
+ <SET O <GET/B .TBL .CNT>>
+ <COND (<AND <FSET? .O .FLAG>
+ <NOT <FSET? .O ,INVISIBLE>>
+ <OR <0? .FLAG2> <FSET? .O .FLAG2>>>
+ <RETURN .O>)
+ (<IGRTR? CNT .SIZE> <RFALSE>)>>)>>
+
+<ROUTINE FIND-FLAG-HERE (FLAG "OPTIONAL" (NOT1 <>) (NOT2 <>) "AUX" O)
+ <SET O <FIRST? ,HERE>>
+ <REPEAT ()
+ <COND (<NOT .O> <RFALSE>)
+ (<AND <FSET? .O .FLAG>
+ <NOT <FSET? .O ,INVISIBLE>>
+ <NOT <EQUAL? .O .NOT1 .NOT2>>>
+ <RETURN .O>)
+ (T <SET O <NEXT? .O>>)>>>
+
+;<ROUTINE FIND-FLAG-HERE-BOTH (FLAG FLAG2 "OPTIONAL" (NOT2 <>) "AUX" O)
+ <SET O <FIRST? ,HERE>>
+ <REPEAT ()
+ <COND (<NOT .O> <RFALSE>)
+ (<AND <FSET? .O .FLAG>
+ <FSET? .O .FLAG2>
+ <NOT <FSET? .O ,INVISIBLE>>
+ <NOT <EQUAL? .O .NOT2>>>
+ <RETURN .O>)
+ (T <SET O <NEXT? .O>>)>>>
+
+<ROUTINE FIND-FLAG-HERE-NOT (FLAG NFLAG "OPTIONAL" (NOT2 <>) "AUX" O)
+ <SET O <FIRST? ,HERE>>
+ <REPEAT ()
+ <COND (<NOT .O> <RFALSE>)
+ (<AND <FSET? .O .FLAG>
+ <NOT <FSET? .O .NFLAG>>
+ <NOT <FSET? .O ,INVISIBLE>>
+ <NOT <EQUAL? .O .NOT2>>>
+ <RETURN .O>)
+ (T <SET O <NEXT? .O>>)>>>
+
+;<ROUTINE OPEN-CLOSE (DR "OPTIONAL" (SAY-NAME T) X)
+ <COND (.SAY-NAME
+ <TELL The .DR>)>
+ <TELL " creaks ">
+ <COND (<FSET? .DR ,OPENBIT>
+ <FCLEAR .DR ,OPENBIT>
+ <THIS-IS-IT .DR>
+ <TELL "closed.|">
+ <REMOVE-CAREFULLY>
+ <RTRUE>)
+ (<SET X <DOOR-ROOM ,HERE .DR>>
+ <FSET .DR ,OPENBIT>
+ <THIS-IS-IT .X>
+ <TELL "open, revealing">
+ <COND (T ;<FSET? ,HERE ,SECRETBIT>
+ <TELL the .X>)>
+ <FSET .DR ,SEENBIT>
+ <FSET .X ,SEENBIT>
+ <TELL "!" CR>)>>
+
+;<ROUTINE OUTSIDE? (RM) <GLOBAL-IN? ,SKY .RM>>
+
+<ROUTINE UNIMPORTANT-THING-F ()
+ <COND (<AND <VERB? ASK-ABOUT>
+ <EQUAL? ,PRSO ,GUIDE>>
+ <RFALSE>)
+ (T
+ <TELL "That's not important; leave it alone." CR>)>>
+
+;<OBJECT CAR-WINDOW
+ (LOC CAR ;LOCAL-GLOBALS)
+ (DESC "car window")
+ (ADJECTIVE CAR)
+ (SYNONYM WINDOW WINDSHIELD WINDSCREEN DOOR)
+ ;(GENERIC GENERIC-WINDOW)
+ (FLAGS SEENBIT NDESCBIT)
+ (ACTION WINDOW-F)>
+
+<OBJECT WINDOW
+ (LOC LOCAL-GLOBALS)
+ (DESC ;"room " "window")
+ ;(ADJECTIVE ROOM)
+ (SYNONYM WINDOW WINDSHIELD WINDSCREEN DOOR)
+ ;(GENERIC GENERIC-WINDOW)
+ (FLAGS SEENBIT NDESCBIT)
+ (ACTION WINDOW-F)>
+
+<ROUTINE WINDOW-F ()
+ <COND (<VERB? OPEN CLOSE LOCK UNLOCK>
+ <COND (<VERB? OPEN>
+ <TELL "The night air is too damp and chilly." CR>)
+ (T ;<VERB? CLOSE>
+ <ALREADY ,WINDOW "closed">
+ <RTRUE>)>)
+ (<VERB? DISEMBARK ;"CLIMB OUT" LEAVE THROUGH>
+ <TELL "It's closed tight against the mist." CR>)
+ (<VERB? LOOK-INSIDE LOOK-THROUGH LOOK-OUTSIDE>
+ <TELL "All you can see are grey shapes in the moonlight." CR>)>>
+
+;<ROOM RAMP
+ (DESC "Ramp")
+ (LOC ROOMS)
+ ;(ADJECTIVE LEGENDARY)
+ ;(SYNONYM PLANET MAGRATHEA)
+ (LDESC
+"The wind moans. Dust drifts across the surface of the alien world. Zaphod,
+Ford, and Trillian appear and urge you forward.")
+ (FLAGS RLANDBIT ONBIT)
+ (THINGS RAMP DOOR NULL-F)
+ (IN TO HATCHWAY IF HATCH IS OPEN)
+ (UP TO HATCHWAY IF HATCH IS OPEN)
+ ;(ACTION RAMP-F)>
+
+;<ROUTINE RAMP-F (RARG)
+ <COND (<EQUAL? .RARG ,M-END>
+ <TELL CR
+"Slowly, nervously, you step downwards, the cold thin air rasping in your
+lungs. You set one single foot on the ancient dust -- and almost instantly
+the most incredible adventure starts which you'll have to buy the next game
+to find out about." CR CR>
+ <V-SCORE>
+ <TELL CR
+"By the way, there WAS a causal relationship between your taking the "
+D ,TOOTHBRUSH " and the tree collapsing at the very beginning of the game.
+We apologise for this slight inaccuracy." CR>
+ <FINISH>)>>
+
+;<ROOM HATCHWAY
+ (LOC ROOMS)
+ ;(SYNONYM GPP PERSONALITY)
+ ;(ADJECTIVE GENUINE PEOPLE)
+ (DESC "Hatchway")
+ ;(UP TO AFT-CORRIDOR)
+ (DOWN TO RAMP IF HATCH IS OPEN)
+ (OUT TO RAMP IF HATCH IS OPEN)
+ ;(EAST PER ACCESS-SPACE-ENTER-F)
+ (FLAGS ONBIT RLANDBIT)
+ (GLOBAL STAIRS HEART-OF-GOLD)
+ (ACTION HATCHWAY-F)>
+
+;<ROUTINE HATCHWAY-F (RARG)
+ <COND (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+"You are at the bottom of a gangway. A hatch below you is ">
+ <COND (<FSET? ,HATCH ,OPENBIT>
+ <TELL "open">)
+ (T
+ <TELL "closed">)>
+ <TELL
+". There could be a small access space to starboard, but it's not implemented
+yet." CR>)>>
+
+;<OBJECT PUB-OBJECT
+ (LOC LOCAL-GLOBALS)
+ (DESC "restaurant")
+ (SYNONYM RESTAURANT MILLIWAYS)
+ (ACTION PUB-OBJECT-F)>
+
+;<ROUTINE PUB-OBJECT-F ()
+ <COND (<VERB? WALK-TO THROUGH>
+ <COND (<EQUAL? ,HERE ,PUB>
+ <TELL ,LOOK-AROUND CR>)
+ (T
+ <V-WALK-AROUND>)>)
+ (<VERB? LEAVE DISEMBARK>
+ <COND (<EQUAL? ,HERE ,PUB>
+ <DO-WALK ,P?EAST>)
+ (T
+ <TELL ,LOOK-AROUND CR>)>)>>
+
+;<CONSTANT LOOK-AROUND "Look around you.">
+
+<ROOM PUB
+ (LOC ROOMS)
+ (SYNONYM ALCOHOL)
+ (DESC "restaurant")
+ (FLAGS RLANDBIT ONBIT OUTSIDE)
+ (GLOBAL ;PUB-OBJECT WINDOW PUB-FURNISHINGS)
+ (THINGS <> PEOPLE UNIMPORTANT-THING-F)
+ (ACTION PUB-F)>
+
+<ROUTINE PUB-F (RARG)
+ <COND (<EQUAL? .RARG ,M-LOOK>
+ <TELL
+"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." CR>)>>
+
+;<OBJECT BAR
+ (LOC PUB)
+ (DESC "bar")
+ (SYNONYM BAR COUNTER)
+ (FLAGS NDESCBIT CONTBIT SURFACEBIT OPENBIT)
+ (CAPACITY 60)
+ ;(ACTION BAR-F)>
+
+;<OBJECT MUSIC
+ (LOC PUB)
+ (DESC "music")
+ (SYNONYM MUSIC SONG SONGS)
+ (FLAGS NARTICLEBIT NDESCBIT)
+ ;(ACTION MUSIC-F)>
+
+;<ROUTINE MUSIC-F ()
+ <COND (<VERB? LISTEN ENJOY>
+ <PERFORM ,V?LISTEN ,JUKEBOX>
+ <RTRUE>)>>
+
+<OBJECT PUB-FURNISHINGS
+ (LOC LOCAL-GLOBALS)
+ (DESC "it")
+ (ADJECTIVE USUAL SOGGY)
+ (SYNONYM BEERMAT GLASSES BOTTLE GLASS)
+ (FLAGS NDESCBIT NARTICLEBIT)
+ (ACTION UNIMPORTANT-THING-F)>
+
+;<OBJECT BARMAN
+ (LOC PUB)
+ (DESC "waiter")
+ (LDESC "There is a barman serving at the bar.")
+ (SYNONYM BARMAN BARTENDER WAITER)
+ (FLAGS PERSONBIT)
+ (ACTION BARMAN-F)>
+
+;<ROUTINE BARMAN-F ()
+ <COND (<EQUAL? ,BARMAN ,WINNER>
+ <COND (<AND <VERB? TELL-ABOUT>
+ <EQUAL? ,PRSO ,PLAYER>>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?ASK-ABOUT ,BARMAN ,PRSI>
+ <SETG WINNER ,BARMAN>
+ <RTRUE>)
+ (<VERB? HELLO>
+ <SETG WINNER ,PLAYER>
+ <PERFORM ,V?HELLO ,BARMAN>
+ <SETG WINNER ,BARMAN>
+ <RTRUE>)
+ (<AND <VERB? GIVE>
+ <EQUAL? ,PRSO ,PLAYER>
+ <EQUAL? ,PRSI ,SANDWICH ,BEER>>
+ <PERFORM ,V?BUY ,PRSI>
+ <RTRUE>)
+ (T
+ <TELL
+"The barman ignores you and keeps polishing the other end of the bar." CR>)>)
+ (<AND <VERB? ASK-FOR>
+ <EQUAL? ,PRSI ,SANDWICH ,BEER>>
+ <PERFORM ,V?BUY ,PRSI>
+ <RTRUE>)>>
+
+<OBJECT BEER
+ ;(LOC PUB)
+ (DESC "lots of beer")
+ (SYNONYM LOTS BITTER PINT BEER)
+ (FLAGS DRINKBIT NARTICLEBIT NDESCBIT)
+ (ACTION BEER-F)>
+
+<GLOBAL DRUNK-LEVEL 0>
+
+<ROUTINE BEER-F ()
+ <COND (<AND <VERB? DRINK ENJOY COUNT SMELL RUB TAKE>
+ <FSET? ,BEER ,NDESCBIT>>
+ <TELL "You'd better buy some first." CR>)
+ (<VERB? COUNT>
+ <TELL "Lots." CR>)
+ (<VERB? TAKE>
+ <TELL "Just drink it!" CR>)
+ (T
+ <COND (<VERB? DRINK ENJOY>
+ <SETG SCORE <+ ,SCORE 5>>
+ <SETG DRUNK-LEVEL <+ ,DRUNK-LEVEL 1>>
+ <COND (<EQUAL? ,DRUNK-LEVEL 4>
+ <TELL
+"You can hear the muffled noise of your home being demolished, and the
+taste of the beer sours in your mouth." CR CR>
+ ;<PERFORM ,V?GET-DRUNK ,ROOMS>
+ <RTRUE>)
+ (<EQUAL? ,DRUNK-LEVEL 3>
+ ;<QUEUE I-FORD -1>
+ ;<SETG HOUSE-DEMOLISHED T>
+ ;<SETG PROSSER-LYING <>>
+ <TELL
+"There is a distant crash which Ford explains is nothing to worry about,
+probably just your house being knocked down." CR>)
+ (<EQUAL? ,DRUNK-LEVEL 2>
+ <TELL
+"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." CR>)
+ (<EQUAL? ,DRUNK-LEVEL 1>
+ <TELL
+"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?\"" CR>)>)
+ (<VERB? BUY>
+ <COND ;(<FSET? ,BEER ,NDESCBIT>
+ <PERFORM ,V?BUY ,PEANUTS>
+ <RTRUE>)
+ (T
+ <TELL
+D ,FORD " has already bought an enormous quantity for you!" CR>)>)>)>>
+
+<OBJECT SANDWICH
+ (LOC PUB)
+ (DESC "cheese sandwich")
+ (ADJECTIVE CHEESE UNINVITING)
+ (SYNONYM PLATE SANDWICH)
+ (FLAGS NDESCBIT EATBIT TRYTAKEBIT)
+ (SIZE 10)
+ (ACTION SANDWICH-F)>
+
+<GLOBAL SANDWICH-BOUGHT:FLAG <>>
+<ROUTINE SANDWICH-F ()
+ <COND (<AND <VERB? BUY>
+ <NOT ,SANDWICH-BOUGHT>>
+ <MOVE ,SANDWICH ,PLAYER>
+ <FSET ,SANDWICH ,TAKEBIT>
+ <FCLEAR ,SANDWICH ,TRYTAKEBIT>
+ <FCLEAR ,SANDWICH ,NDESCBIT>
+ <SETG SANDWICH-BOUGHT T>
+ <TELL
+"The barman gives you a " D ,SANDWICH ". 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." CR>)
+ (<VERB? BUY>
+ <TELL "You already did." CR>)
+ (<AND <VERB? TAKE EAT ENJOY>
+ <FSET? ,SANDWICH ,TRYTAKEBIT>
+ <EQUAL? ,HERE ,PUB>>
+ <TELL ,HANDS-OFF CR>)
+ (<VERB? EAT ENJOY>
+ <MOVE ,SANDWICH ,LOCAL-GLOBALS>
+ <SETG SCORE <- ,SCORE 30>>
+ <COND (T
+ <TELL
+"It is one of the least rewarding taste experiences you can recall." CR>)>)>>
+
+<CONSTANT HANDS-OFF "The barman snaps \"Hands off until you pay for it!\"">
diff --git a/pmem.zabstr b/pmem.zabstr
new file mode 100644
index 0000000..11a8bc1
--- /dev/null
+++ b/pmem.zabstr
@@ -0,0 +1,92 @@
+<FLAGS-AND-DEFAULTS (("IN-ZILCH" T)("P-DEBUGGING-PARSER" T)) ()>
+
+<ZZPACKAGE "PMEM">
+<ENTRY PMEM PMEM-ALLOC PMEM-TYPE? PMEM-RESET PM-TYPE MAKE-PM-TYPE
+PMEM-WORDS-USED PDEFS-INTERNAL-OBLIST PMEM-STORE-WARN PMEM-STORE-LENGTH>
+<INCLUDE "BASEDEFS" "PBITDEFS">
+<USE "NEWSTRUC">
+<SET-DEFSTRUCT-FILE-DEFAULTS>
+<FILE-FLAGS MDL-ZIL?>
+<BEGIN-SEGMENT 0>
+<DEFSTRUCT PMEM (TABLE 'CONSTRUCTOR ('PRINTTYPE PRINT-PMEM) 'NODECL ('NTH ZGET)
+('PUT ZPUT) ('START-OFFSET 0)) (PM-HEADER <OR FIX FALSE>) (PM-LENGTH <OR FIX
+FALSE> 'OFFSET 0 'NTH GETB 'PUT PUTB) (PM-TYPE-CODE <OR FIX FALSE> 'OFFSET 1 '
+NTH GETB 'PUT PUTB)>
+<CONSTANT PM-HEADER-LEN 1>
+<DEFSTRUCT PM-TYPE VECTOR (PMT-NAME ATOM) (PMT-CODE FIX) (PMT-LENGTH <OR FIX
+FALSE>) (PMT-ARGS <VECTOR [REST PM-ARG]> [])>
+<DEFSTRUCT PM-ARG VECTOR (PMA-NAME ATOM) (PMA-OFFS FIX) (PMA-TYPE ANY) (
+PMA-DEFAULT ANY)>
+<GDECL (PM-TYPE-COUNT) FIX (PM-LIST) LIST>
+<CONSTANT PMEM-STORE-LENGTH:FIX 180>
+<CONSTANT PMEM-STORE:TABLE <ITABLE ,PMEM-STORE-LENGTH>>
+<GLOBAL PMEM-STORE-POINTER PMEM-STORE>
+<GLOBAL PMEM-STORE-WORDS:NUMBER PMEM-STORE-LENGTH>
+<GLOBAL PMEM-STORE-WARN:NUMBER 50>
+<DEFINE-ROUTINE PMEM?>
+<DEFINE20 PM-TYPE (NAME:ATOM LENGTH:<OR FIX FALSE> "ARGS" STUFF "AUX" ATM CODE
+TYPE-OBJ (OCT ,PM-HEADER-LEN) ARGS) <SET ATM <PARSE <STRING "PM-TYPE-" <SPNAME
+.NAME>> 10 ,PDEFS-INTERNAL-OBLIST>> <COND (<NOT <GASSIGNED? PM-TYPE-COUNT>> <
+SETG PM-TYPE-COUNT 0> <SETG PM-LIST (T)>)> <SET CODE <SETG PM-TYPE-COUNT <+ ,
+PM-TYPE-COUNT 1>>> <SET TYPE-OBJ <MAKE-PM-TYPE 'PMT-NAME .ATM 'PMT-CODE .CODE '
+PMT-LENGTH .LENGTH>> <EVAL <FORM CONSTANT <PARSE <STRING "PMEM-TYPE-" <SPNAME .
+NAME>> 10 ,PDEFS-INTERNAL-OBLIST> .CODE>> <PUTREST <REST ,PM-LIST <- <LENGTH ,
+PM-LIST> 1>> (.TYPE-OBJ)> <SETG .ATM .TYPE-OBJ> <SET ARGS <MAPF ,VECTOR <
+FUNCTION (ARG:<OR LIST ATOM> "AUX" NATM OFFS (TYPE ANY) (DEFAULT <>) NNATM) <
+COND (<TYPE? .ARG LIST> <SET NATM <1 .ARG>> <SET ARG <REST .ARG>>) (T <SET NATM
+.ARG> <SET ARG ()>)> <SET NATM <PARSE <STRING <SPNAME .NAME> "-" <SPNAME .NATM>
+> 10 ,PDEFS-INTERNAL-OBLIST>> <SET NNATM <PARSE <STRING <SPNAME .NAME> "-" <
+SPNAME .NATM> "-OFFSET"> 10 ,PDEFS-INTERNAL-OBLIST>> <EVAL <FORM DEFMAC .NATM (
+''OBJ "OPT" ''NEW) <FORM COND (<FORM ASSIGNED? NEW> <FORM FORM ZPUT '.OBJ .OCT
+'.NEW>) (T <FORM FORM ZGET '.OBJ .OCT>)>>> <SETG .NNATM <SET OFFS .OCT>> <SET
+OCT <+ .OCT 1>> <COND (<EMPTY? .ARG>) (T <SET TYPE <1 .ARG>> <COND (<NOT <
+LENGTH? .ARG 1>> <COND (<AND <TYPE? <SET DEFAULT <2 .ARG>> FORM> <EMPTY? .
+DEFAULT>> <SET DEFAULT <>>)>)> <COND (<AND <NOT <MATCH-KEY .DEFAULT NONE>> <NOT
+<TYPE? .DEFAULT FORM>>> <COND (<NOT <DECL? .DEFAULT .TYPE>> <COND (<DECL? .
+DEFAULT <FORM OR FALSE .TYPE>> <SET TYPE <FORM OR FALSE .TYPE>>) (T <ERROR
+DEFAULT-DOESNT-MATCH-DECL .TYPE .DEFAULT PM-TYPE>)>)>)>)> <MAKE-PM-ARG '
+PMA-NAME .NATM 'PMA-OFFS .OFFS 'PMA-TYPE .TYPE 'PMA-DEFAULT .DEFAULT>> .STUFF>>
+<PMT-ARGS .TYPE-OBJ .ARGS>>
+<DEFINE20 GET-PM-TYPE (TYPE:ATOM "AUX" TEMP) <COND (<AND <GASSIGNED? .TYPE> <
+TYPE? ,.TYPE PM-TYPE>> ,.TYPE) (T <SET TEMP <PARSE <STRING "PM-TYPE-" <SPNAME .
+TYPE>> 10 ,PDEFS-INTERNAL-OBLIST>> <COND (<AND <GASSIGNED? .TEMP> <TYPE? ,.TEMP
+PM-TYPE>> ,.TEMP) (T <ERROR NOT-A-PMEM-TYPE!-ERRORS .TYPE>)>)>>
+<DEFMAC PMEM-TYPE? ('PMEM 'TYPE "OPT" 'TYPE2 "AUX" (ATM <>) (ATM2 <>)) <SET
+TYPE <GET-PM-TYPE .TYPE>> <COND (<ASSIGNED? TYPE2> <SET TYPE2 <GET-PM-TYPE .
+TYPE2>>) (T <SET TYPE2 <>>)> <COND (<NOT .TYPE2> <FORM ==? <FORM PM-TYPE-CODE .
+PMEM> <PMT-CODE .TYPE>>) (T <FORM OR <FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .
+TYPE>> <FORM ==? <FORM PM-TYPE .PMEM> <PMT-CODE .TYPE2>>>)>>
+<DEFINE20 PRINT-PMEM (PMEM:PMEM "OPT" (OUTCHAN:CHANNEL .OUTCHAN) "AUX" (CODE <
+PM-TYPE-CODE .PMEM>) (OBJ:PM-TYPE <NTH ,PM-LIST <+ .CODE 1>>)) <PRINT-MANY .
+OUTCHAN PRINC "#" <PMT-NAME .OBJ> " ["> <REPEAT ((CT <PM-LENGTH .PMEM>) (N 1))
+<COND (<L? <SET CT <- .CT 1>> 0> <RETURN>)> <PRIN1 <ZGET .PMEM .N>> <PRINC !\ >
+<SET N <+ .N 1>>> <PRINC !\]> .PMEM>
+<GLOBAL PMEM-WORDS-USED 0>
+<GDECL (PMEM-WORDS-USED) FIX>
+<DEFINE-ROUTINE PMEM-RESET>
+<DEFINE20 MATCH-KEY (FOO BAR) <AND <TYPE? .FOO ATOM> <TYPE? .BAR ATOM> <=? <
+SPNAME .FOO> <SPNAME .BAR>>>>
+<DEFMAC PMEM-ALLOC PA (TYPNAM:ATOM "ARGS" STUFF "AUX" TEMP NT:PM-TYPE BASE
+LENARG ATM BL) <SET NT <GET-PM-TYPE .TYPNAM>> <COND (<SET TEMP <MEMQ LENGTH .
+STUFF>> <SET LENARG <2 .TEMP>>) (<NOT <SET LENARG <PMT-LENGTH .NT>>> <ERROR
+BAD-PMEM-LENGTH-ARG!-ERRORS .TYPNAM PMEM-ALLOC>)> <SET BASE <FORM BIND ((
+NEW-OBJECT <FORM DO-PMEM-ALLOC <PMT-CODE .NT> .LENARG>))>> <SET BL <REST .BASE>
+> <REPEAT ((ARGS <PMT-ARGS .NT>) (INIT <CHTYPE <STACK <IVECTOR <* 2 <+ <LENGTH
+.ARGS> ,PM-HEADER-LEN>> NONE>> TABLE>) THIS-ARG OFFS:FIX FRM) <COND (<EMPTY? .
+STUFF> <MAPF <> <FUNCTION (ARG:PM-ARG "AUX" (IVAL <ZGET .INIT <PMA-OFFS .ARG>>)
+) <COND (<AND <MATCH-KEY .IVAL NONE> <MATCH-KEY <PMA-DEFAULT .ARG> NONE>> <
+ERROR NO-VALUE-FOR-MANDATORY-SLOT!-ERRORS .TYPNAM PMEM-ALLOC>) (<MATCH-KEY .
+IVAL NONE> <COND (<AND <PMA-DEFAULT .ARG> <N==? <PMA-DEFAULT .ARG> '<>> <N==? <
+PMA-DEFAULT .ARG> 0>> <SET BL <REST <PUTREST .BL (<FORM <PMA-NAME .ARG> '.
+NEW-OBJECT <PMA-DEFAULT .ARG>>)>>>)>)>> .ARGS> <RETURN>)> <COND (<OR <NOT <
+TYPE? <SET ATM <1 .STUFF>> ATOM>> <AND <OR <NOT <GASSIGNED? .ATM>> <NOT <TYPE?
+,.ATM FIX MACRO>>> <SET ATM <PARSE <STRING <SPNAME .TYPNAM> "-" <SPNAME .ATM>>
+10 ,PDEFS-INTERNAL-OBLIST>> <OR <NOT <GASSIGNED? .ATM>> <NOT <TYPE? ,.ATM FIX
+MACRO>>>>> <COND (<N==? <1 .STUFF> LENGTH> <ERROR BAD-PMEM-ARG!-ERRORS .STUFF
+PMEM-ALLOC>)>) (T <SET FRM <EXPAND <FORM .ATM .INIT T>>> <ZPUT .INIT <3 .FRM:
+FORM> T> <COND (<AND <2 .STUFF> <N==? <2 .STUFF> '<>> <N==? <2 .STUFF> 0>> <SET
+BL <REST <PUTREST .BL (<FORM .ATM '.NEW-OBJECT <2 .STUFF>>)>>>)>)> <SET STUFF <
+REST .STUFF 2>>> <PUTREST .BL ('.NEW-OBJECT)> .BASE>
+<DEFINE-ROUTINE DO-PMEM-ALLOC>
+<END-SEGMENT>
+<ENDPACKAGE> \ 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 @@
+<FLAGS-AND-DEFAULTS (("P-ZORK0" %<>)("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*))>
+
+<ZZPACKAGE "PARSER">
+<RENTRY PRINT-LEXV TELL-CTHE TELL-THE>
+<INCLUDE "BASEDEFS" "PBITDEFS" "PDEFS">
+<USE "PMEM" "PSTACK" "REDS">
+<FILE-FLAGS MDL-ZIL? CLEAN-STACK?>
+<BEGIN-SEGMENT 0>
+<DEFAULTS-DEFINED CANT-FIND-OBJECT CANT-USE-MULTIPLE DONT-UNDERSTAND
+PRINT-INTQUOTE PRINT-LEXV REFRESH SETUP-ORPHAN SETUP-ORPHAN-NP TOO-MANY-NOUNS
+WHICH-LIST? WHICH-PRINT WINNER-SAYS-WHICH? YES?>
+<DEFINE-ROUTINE TOO-MANY-NEW>
+<DEFINE-ROUTINE NAKED-OOPS>
+<DEFINE-ROUTINE CANT-OOPS>
+<DEFINE-ROUTINE CANT-AGAIN>
+<DEFAULT-DEFINITION CANT-USE-MULTIPLE <ROUTINE CANT-USE-MULTIPLE>>
+<DEFINE-ROUTINE MAKE-ROOM-FOR-TOKENS>
+<DEFINE-ROUTINE REPLACE-ONE-TOKEN>
+<DEFAULT-DEFINITION REFRESH <ROUTINE V-$REFRESH>>
+<DEFAULT-DEFINITION PRINT-INTQUOTE <DEFINE PRINT-INTQUOTE ("AUX" (NP <GET-NP ,
+INTQUOTE>)) <PRINT-LEXV -1 <ZREST <NP-LEXBEG .NP> ,LEXV-ELEMENT-SIZE-BYTES> <+
+-1 </ <- <NP-LEXEND .NP> <NP-LEXBEG .NP>> ,LEXV-ELEMENT-SIZE-BYTES>>>>>
+<DEFAULT-DEFINITION PRINT-LEXV <ROUTINE PRINT-LEXV>>
+<DEFINE-ROUTINE COPY-INPUT>
+<COND (<NOT <OR <CHECK-VERSION? XZIP> <CHECK-VERSION? YZIP>>> <DEFINE
+COPY-INBUF (SRC DEST "AUX" CNT:FIX) <SET CNT <- <GETB .SRC 0> 1>> <REPEAT () <
+PUTB .DEST .CNT <GETB .SRC .CNT>> <COND (<L? <SET CNT <- .CNT 1>> 0> <RETURN>)>
+>> <DEFINE COPY-LEXV (SRC DEST "OPT" (MAX:FIX ,LEXV-LENGTH) "AUX" (CTR:FIX 1))
+<PUTB .DEST 0 <GETB .SRC 0>> <PUTB .DEST 1 <GETB .SRC 1>> <SET DEST <ZREST .
+DEST <* ,P-LEXSTART:FIX 2>>> <SET SRC <ZREST .SRC <* ,P-LEXSTART:FIX 2>>> <
+REPEAT () <ZPUT .DEST 0 <ZGET .SRC 0>> <PUTB .DEST 2 <GETB .SRC 2>> <PUTB .DEST
+3 <GETB .SRC 3>> <COND (<G? <SET CTR <+ .CTR 1>> .MAX> <RETURN>)> <SET DEST <
+ZREST .DEST <* 2 ,P-LEXELEN:FIX>>> <SET SRC <ZREST .SRC <* 2 ,P-LEXELEN:FIX>>>>
+>)>
+<END-SEGMENT>
+<BEGIN-SEGMENT 0>
+<ADD-WORD NO.WORD ADJ>
+<DEFINE-ROUTINE BUFFER-PRINT>
+<DEFINE-ROUTINE CAPITALIZE>
+<DEFINE-ROUTINE PRINT-PARSER-FAILURE>
+<DEFINE-ROUTINE NAKED-ADJECTIVE?>
+<DEFINE-ROUTINE CHANGE-AND-TO-THEN?>
+<DEFAULT-DEFINITION DONT-UNDERSTAND <ROUTINE DONT-UNDERSTAND>>
+<DEFINE-ROUTINE MISSING>
+<DEFAULT-DEFINITION CANT-FIND-OBJECT <ROUTINE CANT-FIND-OBJECT> <ROUTINE
+NP-CANT-SEE>>
+<DEFAULT-DEFINITION WINNER-SAYS-WHICH? <ROUTINE WINNER-SAYS-WHICH?>>
+<DEFAULT-DEFINITION WHICH-LIST? <ROUTINE WHICH-LIST?>>
+<DEFAULT-DEFINITION WHICH-PRINT <ROUTINE WHICH-PRINT>>
+<DEFINE-ROUTINE NP-PRINT>
+<DEFINE-ROUTINE ADJS-PRINT>
+<DEFAULT-DEFINITION TOO-MANY-NOUNS <ROUTINE TOO-MANY-NOUNS>>
+<DEFINE-ROUTINE INBUF-ADD>
+<DEFINE-ROUTINE INBUF-PRINT>
+<DEFAULT-DEFINITION YES? <CONSTANT YES-INBUF <ITABLE 19 (BYTE LENGTH) 0>> <
+CONSTANT YES-LEXV <ITABLE 3 (LEXV) 0 0>> <ROUTINE YES?>>
+<DEFAULT-DEFINITION SETUP-ORPHAN <DEFINE SETUP-ORPHAN (STR "OPT" (A <>) (B <>))
+<DIROUT ,D-TABLE-ON ,O-INBUF> <TELL .STR> <COND (<T? .A> <COND (T <TELL D .A>)>
+<COND (<T? .B> <COND (T <TELL .B>)>)>)> <DIROUT ,D-TABLE-OFF> <PUTB ,O-INBUF 0
+,INBUF-LENGTH> <LEX ,O-INBUF ,O-LEXV> <COND (<ZERO? <SET A <GETB ,O-LEXV ,
+P-LEXWORDS>>> <>) (<INTBL? 0 <ZREST ,O-LEXV <* 2 ,P-LEXSTART>> .A 132> <>) (T <
+SETG P-OFLAG <+ 1 <* ,P-LEXELEN <GETB ,O-LEXV ,P-LEXWORDS>>>> <
+MAKE-ROOM-FOR-TOKENS 1 ,O-LEXV ,P-OFLAG> <ZPUT ,O-LEXV ,P-OFLAG ,W?NO.WORD> <
+SETG P-OFLAG <- 0 ,P-OFLAG>> <FIND-RES-COUNT ,ORPHAN-SR 0> <ZPUT ,OOPS-TABLE ,
+O-AGAIN <ZREST ,P-LEXV <* 2 ,P-LEXSTART>>> T)>>>
+<DEFAULT-DEFINITION SETUP-ORPHAN-NP <ROUTINE SETUP-ORPHAN-NP>>
+<DEFINE-ROUTINE INSERT-ADJS>
+<DEFINE-ROUTINE INSERT-ADJS-WD>
+<END-SEGMENT>
+<ENDPACKAGE> \ 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<